diff --git a/Assets/Art.meta b/Assets/Art.meta new file mode 100644 index 0000000..2289970 --- /dev/null +++ b/Assets/Art.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8c3256d7fa85ac9488ad5926ec428a45 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Art/GameFinalArt.meta b/Assets/Art/GameFinalArt.meta new file mode 100644 index 0000000..5c9e03b --- /dev/null +++ b/Assets/Art/GameFinalArt.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c107a4659f9e88f4aa1410e6cd208835 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Art/GenericArtAssets.meta b/Assets/Art/GenericArtAssets.meta new file mode 100644 index 0000000..5470da1 --- /dev/null +++ b/Assets/Art/GenericArtAssets.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a5a1671f2bf6f9341b8ec7fc994dcc9e +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Art/Placeholders.meta b/Assets/Art/Placeholders.meta new file mode 100644 index 0000000..b6058fc --- /dev/null +++ b/Assets/Art/Placeholders.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a9e670155cf9e07458e22d2649a8e75e +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AudioManager.meta b/Assets/AudioManager.meta new file mode 100644 index 0000000..025fd2e --- /dev/null +++ b/Assets/AudioManager.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0cb8d1593c565b24f971b60fd1e5c65a +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AudioManager/Placeholders.meta b/Assets/AudioManager/Placeholders.meta new file mode 100644 index 0000000..0307c1c --- /dev/null +++ b/Assets/AudioManager/Placeholders.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c07c658342391884dac34e81f6808691 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AudioManager/Placeholders/Tetris_CD-i_Music_-_Level_0.mp3 b/Assets/AudioManager/Placeholders/Tetris_CD-i_Music_-_Level_0.mp3 new file mode 100644 index 0000000..53db2ab Binary files /dev/null and b/Assets/AudioManager/Placeholders/Tetris_CD-i_Music_-_Level_0.mp3 differ diff --git a/Assets/AudioManager/Placeholders/Tetris_CD-i_Music_-_Level_0.mp3.meta b/Assets/AudioManager/Placeholders/Tetris_CD-i_Music_-_Level_0.mp3.meta new file mode 100644 index 0000000..3316a2a --- /dev/null +++ b/Assets/AudioManager/Placeholders/Tetris_CD-i_Music_-_Level_0.mp3.meta @@ -0,0 +1,22 @@ +fileFormatVersion: 2 +guid: 08418c315e895cd4d95bc0d2485d5027 +AudioImporter: + externalObjects: {} + serializedVersion: 6 + defaultSettings: + loadType: 0 + sampleRateSetting: 0 + sampleRateOverride: 44100 + compressionFormat: 1 + quality: 1 + conversionMode: 0 + platformSettingOverrides: {} + forceToMono: 0 + normalize: 1 + preloadAudioData: 1 + loadInBackground: 0 + ambisonic: 0 + 3D: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AudioManager/Placeholders/mouseclick1_from_KennyUIAudio.ogg b/Assets/AudioManager/Placeholders/mouseclick1_from_KennyUIAudio.ogg new file mode 100644 index 0000000..46d5f62 Binary files /dev/null and b/Assets/AudioManager/Placeholders/mouseclick1_from_KennyUIAudio.ogg differ diff --git a/Assets/AudioManager/Placeholders/mouseclick1_from_KennyUIAudio.ogg.meta b/Assets/AudioManager/Placeholders/mouseclick1_from_KennyUIAudio.ogg.meta new file mode 100644 index 0000000..4026412 --- /dev/null +++ b/Assets/AudioManager/Placeholders/mouseclick1_from_KennyUIAudio.ogg.meta @@ -0,0 +1,22 @@ +fileFormatVersion: 2 +guid: a1d88d7a37e75434eae69504331cd948 +AudioImporter: + externalObjects: {} + serializedVersion: 6 + defaultSettings: + loadType: 0 + sampleRateSetting: 0 + sampleRateOverride: 44100 + compressionFormat: 1 + quality: 1 + conversionMode: 0 + platformSettingOverrides: {} + forceToMono: 0 + normalize: 1 + preloadAudioData: 1 + loadInBackground: 0 + ambisonic: 0 + 3D: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor.meta b/Assets/Editor.meta new file mode 100644 index 0000000..2437c64 --- /dev/null +++ b/Assets/Editor.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: bea291626a5a9614eb9e38947a681676 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/OptionalPropertyDrawer.cs b/Assets/Editor/OptionalPropertyDrawer.cs new file mode 100644 index 0000000..890b689 --- /dev/null +++ b/Assets/Editor/OptionalPropertyDrawer.cs @@ -0,0 +1,39 @@ +using UnityEditor; +using UnityEngine; +using Lemon.GenericLib.Generics; + +namespace Lemon.GenericLib.Editor { + [CustomPropertyDrawer(typeof(Optional<>))] + public class OptionalPropertyDrawer : PropertyDrawer + { + public override float GetPropertyHeight(SerializedProperty property, GUIContent label) + { + var valueProperty = property.FindPropertyRelative("value"); + return EditorGUI.GetPropertyHeight(valueProperty); + } + + public override void OnGUI( + Rect position, + SerializedProperty property, + GUIContent label + ) + { + var valueProperty = property.FindPropertyRelative("value"); + var enabledProperty = property.FindPropertyRelative("enabled"); + + EditorGUI.BeginProperty(position, label, property); + position.width -= 24; + EditorGUI.BeginDisabledGroup(!enabledProperty.boolValue); + EditorGUI.PropertyField(position, valueProperty, label, true); + EditorGUI.EndDisabledGroup(); + + position.x += position.width + 24; + position.width = position.height = EditorGUI.GetPropertyHeight(enabledProperty); + position.x -= position.width; + EditorGUI.PropertyField(position, enabledProperty, GUIContent.none); + EditorGUI.EndProperty(); + } + } +} + + diff --git a/Assets/Editor/OptionalPropertyDrawer.cs.meta b/Assets/Editor/OptionalPropertyDrawer.cs.meta new file mode 100644 index 0000000..75e4de4 --- /dev/null +++ b/Assets/Editor/OptionalPropertyDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f883a30b9c6fd0a40a1a9be2ea575b86 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/LeanTween.meta b/Assets/LeanTween.meta new file mode 100644 index 0000000..0bc313d --- /dev/null +++ b/Assets/LeanTween.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 5e6a0fa47acf54892bbdae89028eaec3 diff --git a/Assets/LeanTween/Documentation.meta b/Assets/LeanTween/Documentation.meta new file mode 100644 index 0000000..69aee15 --- /dev/null +++ b/Assets/LeanTween/Documentation.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 6737b2aaab0f546e39693df5f551dfc8 diff --git a/Assets/LeanTween/Documentation/assets.meta b/Assets/LeanTween/Documentation/assets.meta new file mode 100644 index 0000000..ed25ad6 --- /dev/null +++ b/Assets/LeanTween/Documentation/assets.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: cb26df1b849af495bbce0f91bac5a3f7 diff --git a/Assets/LeanTween/Documentation/assets/css.meta b/Assets/LeanTween/Documentation/assets/css.meta new file mode 100644 index 0000000..03b114e --- /dev/null +++ b/Assets/LeanTween/Documentation/assets/css.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 1f4f05e2c3c7b4c5eb028eb9c0c93886 diff --git a/Assets/LeanTween/Documentation/assets/css/main.css b/Assets/LeanTween/Documentation/assets/css/main.css new file mode 100644 index 0000000..621cf57 --- /dev/null +++ b/Assets/LeanTween/Documentation/assets/css/main.css @@ -0,0 +1,836 @@ +/* +Font sizes for all selectors other than the body are given in percentages, +with 100% equal to 13px. To calculate a font size percentage, multiply the +desired size in pixels by 7.6923076923. + +Here's a quick lookup table: + +10px - 76.923% +11px - 84.615% +12px - 92.308% +13px - 100% +14px - 107.692% +15px - 115.385% +16px - 123.077% +17px - 130.769% +18px - 138.462% +19px - 146.154% +20px - 153.846% +*/ + + +html { + background: #fff; + color: #333; + overflow-y: scroll; +} + +body { + font: 13px/1.4 'Lucida Grande', 'Lucida Sans Unicode', 'DejaVu Sans', 'Bitstream Vera Sans', 'Helvetica', 'Arial', sans-serif; + margin: 0; + padding: 0; +} + +/* -- Links ----------------------------------------------------------------- */ +a { + color: #356de4; + text-decoration: none; +} + +.hidden { + display: none; +} + +a:hover { text-decoration: underline; } + +/* "Jump to Table of Contents" link is shown to assistive tools, but hidden from + sight until it's focused. */ +.jump { + position: absolute; + padding: 3px 6px; + left: -99999px; + top: 0; +} + +.jump:focus { left: 40%; } + +/* -- Paragraphs ------------------------------------------------------------ */ +p { margin: 1.3em 0; } +dd p, td p { margin-bottom: 0; } +dd p:first-child, td p:first-child { margin-top: 0; } + +/* -- Headings -------------------------------------------------------------- */ +h1, h2, h3, h4, h5, h6 { + color: #D98527;/*was #f80*/ + font-family: 'Trebuchet MS', sans-serif; + font-weight: bold; + line-height: 1.1; + margin: 1.1em 0 0.5em; +} + +h1 { + font-size: 184.6%; + color: #30418C; + margin: 0.75em 0 0.5em; +} + +h2 { + font-size: 153.846%; + color: #E48A2B; +} + +h3 { font-size: 138.462%; } + +h4 { + border-bottom: 1px solid #DBDFEA; + color: #E48A2B; + font-size: 115.385%; + font-weight: normal; + padding-bottom: 2px; +} + +h5, h6 { font-size: 107.692%; } + +/* -- Code and examples ----------------------------------------------------- */ +code, kbd, pre, samp { + font-family: Menlo, Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace; + font-size: 92.308%; + line-height: 1.35; +} + +p code, p kbd, p samp { + background: #FCFBFA; + border: 1px solid #EFEEED; + padding: 0 3px; +} + +a code, a kbd, a samp, +pre code, pre kbd, pre samp, +table code, table kbd, table samp, +.intro code, .intro kbd, .intro samp, +.toc code, .toc kbd, .toc samp { + background: none; + border: none; + padding: 0; +} + +pre.code, pre.terminal, pre.cmd { + overflow-x: auto; + *overflow-x: scroll; + padding: 0.3em 0.6em; +} + +pre.code { + background: #FCFBFA; + border: 1px solid #EFEEED; + border-left-width: 5px; +} + +pre.terminal, pre.cmd { + background: #F0EFFC; + border: 1px solid #D0CBFB; + border-left: 5px solid #D0CBFB; +} + +/* Don't reduce the font size of // elements inside
+   blocks. */
+pre code, pre kbd, pre samp { font-size: 100%; }
+
+/* Used to denote text that shouldn't be selectable, such as line numbers or
+   shell prompts. Guess which browser this doesn't work in. */
+.noselect {
+    -moz-user-select: -moz-none;
+    -khtml-user-select: none;
+    -webkit-user-select: none;
+    -o-user-select: none;
+    user-select: none;
+}
+
+/* -- Lists ----------------------------------------------------------------- */
+dd { margin: 0.2em 0 0.7em 1em; }
+dl { margin: 1em 0; }
+dt { font-weight: bold; }
+
+/* -- Tables ---------------------------------------------------------------- */
+caption, th { text-align: left; }
+
+table {
+    border-collapse: collapse;
+    width: 100%;
+}
+
+td, th {
+    border: 1px solid #fff;
+    padding: 5px 12px;
+    vertical-align: top;
+}
+
+td { background: #E6E9F5; }
+td dl { margin: 0; }
+td dl dl { margin: 1em 0; }
+td pre:first-child { margin-top: 0; }
+
+th {
+    background: #D2D7E6;/*#97A0BF*/
+    border-bottom: none;
+    border-top: none;
+    color: #000;/*#FFF1D5*/
+    font-family: 'Trebuchet MS', sans-serif;
+    font-weight: bold;
+    line-height: 1.3;
+    white-space: nowrap;
+}
+
+
+/* -- Layout and Content ---------------------------------------------------- */
+#doc {
+    margin: auto;
+    min-width: 1024px;
+}
+
+.content { padding: 0 20px 0 25px; }
+
+.sidebar {
+    padding: 0 15px 0 10px;
+}
+#bd {
+    padding: 7px 0 130px;
+    position: relative;
+    width: 99%;
+}
+
+/* -- Table of Contents ----------------------------------------------------- */
+
+/* The #toc id refers to the single global table of contents, while the .toc
+   class refers to generic TOC lists that could be used throughout the page. */
+
+.toc code, .toc kbd, .toc samp { font-size: 100%; }
+.toc li { font-weight: bold; }
+.toc li li { font-weight: normal; }
+
+/* -- Intro and Example Boxes ----------------------------------------------- */
+
+.intro, .example { margin-bottom: 2em; }
+.example {
+    -moz-border-radius: 4px;
+    -webkit-border-radius: 4px;
+    border-radius: 4px;
+    -moz-box-shadow: 0 0 5px #bfbfbf;
+    -webkit-box-shadow: 0 0 5px #bfbfbf;
+    box-shadow: 0 0 5px #bfbfbf;
+    padding: 0.5em 0.5em 0.5em 0.5em;
+    background-color: #EFF2FA;
+}
+.intro {
+    background: none repeat scroll 0 0 #F0F1F8; border: 1px solid #D4D8EB; padding: 0 1em;
+}
+
+.example h4{
+    margin:0.0em 0 0.0em;
+}
+
+.example p {
+    margin:0.3em 0;
+}
+
+
+/* -- Other Styles ---------------------------------------------------------- */
+
+/* These are probably YUI-specific, and should be moved out of Selleck's default
+   theme. */
+
+.button {
+    border: 1px solid #dadada;
+    -moz-border-radius: 3px;
+    -webkit-border-radius: 3px;
+    border-radius: 3px;
+    color: #444;
+    display: inline-block;
+    font-family: Helvetica, Arial, sans-serif;
+    font-size: 92.308%;
+    font-weight: bold;
+    padding: 4px 13px 3px;
+    -moz-text-shadow: 1px 1px 0 #fff;
+    -webkit-text-shadow: 1px 1px 0 #fff;
+    text-shadow: 1px 1px 0 #fff;
+    white-space: nowrap;
+
+    background: #EFEFEF; /* old browsers */
+    background: -moz-linear-gradient(top, #f5f5f5 0%, #efefef 50%, #e5e5e5 51%, #dfdfdf 100%); /* firefox */
+    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#f5f5f5), color-stop(50%,#efefef), color-stop(51%,#e5e5e5), color-stop(100%,#dfdfdf)); /* webkit */
+    filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#f5f5f5', endColorstr='#dfdfdf',GradientType=0 ); /* ie */
+}
+
+.button:hover {
+    border-color: #466899;
+    color: #fff;
+    text-decoration: none;
+    -moz-text-shadow: 1px 1px 0 #222;
+    -webkit-text-shadow: 1px 1px 0 #222;
+    text-shadow: 1px 1px 0 #222;
+
+    background: #6396D8; /* old browsers */
+    background: -moz-linear-gradient(top, #6396D8 0%, #5A83BC 50%, #547AB7 51%, #466899 100%); /* firefox */
+    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#6396D8), color-stop(50%,#5A83BC), color-stop(51%,#547AB7), color-stop(100%,#466899)); /* webkit */
+    filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#6396D8', endColorstr='#466899',GradientType=0 ); /* ie */
+}
+
+.newwindow { text-align: center; }
+
+.header .version em {
+    display: block;
+    text-align: right;
+}
+
+.header .version form {
+    display: block;
+    text-align: right;
+}
+
+
+#classdocs .item {
+    border-bottom: 1px solid #466899;
+    margin: 1em 0;
+    padding: 1.5em;
+}
+
+.params, .returns{
+    font-size:11px;
+}
+
+.returns-description p{
+    margin:0 0 0.6em 0;
+}
+
+#classdocs .item .params p,
+    #classdocs .item .returns p,{
+    display: inline;
+}
+
+#classdocs .item em code, #classdocs .item em.comment {
+    color: green;
+}
+
+#classdocs .item em.comment a {
+    color: green;
+    text-decoration: underline;
+}
+
+#classdocs .foundat {
+    font-size: 11px;
+    font-style: normal;
+}
+
+.attrs .emits {
+    margin-left: 2em;
+    padding: .5em;
+    border-left: 1px dashed #ccc;
+}
+
+abbr {
+    border-bottom: 1px dashed #ccc;
+    font-size: 80%;
+    cursor: help;
+}
+
+.prettyprint li.L0, 
+.prettyprint li.L1, 
+.prettyprint li.L2, 
+.prettyprint li.L3, 
+.prettyprint li.L5, 
+.prettyprint li.L6, 
+.prettyprint li.L7, 
+.prettyprint li.L8 {
+    list-style: decimal;
+}
+
+ul li p {
+    margin-top: 0;
+}
+
+.method .name {
+    font-size: 110%;
+}
+
+.apidocs .methods .extends .method,
+.apidocs .properties .extends .property,
+.apidocs .attrs .extends .attr,
+.apidocs .events .extends .event {
+    font-weight: bold;
+}
+
+.apidocs .methods .extends .inherited,
+.apidocs .properties .extends .inherited,
+.apidocs .attrs .extends .inherited,
+.apidocs .events .extends .inherited {
+    font-weight: normal;
+}
+
+#hd {
+    background: whiteSmoke;
+    background: -moz-linear-gradient(top,#DCDBD9 0,#F6F5F3 100%);
+    background: -webkit-gradient(linear,left top,left bottom,color-stop(0%,#DCDBD9),color-stop(100%,#F6F5F3));
+    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#dcdbd9',endColorstr='#F6F5F3',GradientType=0);
+    border-bottom: 1px solid #DFDFDF;
+    padding: 0 15px 1px 20px;
+    margin-bottom: 15px;
+}
+
+#hd img {
+    margin-right: 10px;
+    vertical-align: middle;
+}
+
+
+/* -- API Docs CSS ---------------------------------------------------------- */
+
+/*
+This file is organized so that more generic styles are nearer the top, and more
+specific styles are nearer the bottom of the file. This allows us to take full
+advantage of the cascade to avoid redundant style rules. Please respect this
+convention when making changes.
+*/
+
+/* -- Generic TabView styles ------------------------------------------------ */
+
+/*
+These styles apply to all API doc tabviews. To change styles only for a
+specific tabview, see the other sections below.
+*/
+
+.yui3-js-enabled .apidocs .tabview {
+    visibility: visible; /* Hide until the TabView finishes rendering. */
+    _visibility: visible;
+}
+
+.apidocs .tabview.yui3-tabview-content { visibility: visible; }
+.apidocs .tabview .yui3-tabview-panel { background: #fff; }
+
+/* -- Generic Content Styles ------------------------------------------------ */
+
+/* Headings */
+h2, h3, h4, h5, h6 {
+    border: none;
+    color: #30418C;
+    font-weight: bold;
+    text-decoration: none;
+}
+
+.link-docs {
+    float: right;
+    font-size: 15px;
+    margin: 4px 4px 6px;
+    padding: 6px 30px 5px;
+}
+
+.apidocs { zoom: 1; }
+
+/* Generic box styles. */
+.apidocs .box {
+    border: 1px solid;
+    border-radius: 3px;
+    margin: 1em 0;
+    padding: 0 1em;
+}
+
+/* A flag is a compact, capsule-like indicator of some kind. It's used to
+   indicate private and protected items, item return types, etc. in an
+   attractive and unobtrusive way. */
+.apidocs .flag {
+    background: #bababa;
+    border-radius: 3px;
+    color: #fff;
+    font-size: 11px;
+    margin: 0 0.5em;
+    padding: 2px 4px 1px;
+}
+
+/* Class/module metadata such as "Uses", "Extends", "Defined in", etc. */
+.apidocs .meta {
+    background: #f9f9f9;
+    border-color: #efefef;
+    color: #555;
+    font-size: 11px;
+    padding: 3px 6px;
+}
+
+.apidocs .meta p { margin: 0; }
+
+/* Deprecation warning. */
+.apidocs .box.deprecated,
+.apidocs .flag.deprecated {
+    background: #fdac9f;
+    border: 1px solid #fd7775;
+}
+
+.apidocs .box.deprecated p { margin: 0.5em 0; }
+.apidocs .flag.deprecated { color: #333; }
+
+/* Module/Class intro description. */
+.apidocs .intro {
+    background: #f0f1f8;
+    border-color: #d4d8eb;
+}
+
+/* Loading spinners. */
+#bd.loading .apidocs,
+#api-list.loading .yui3-tabview-panel {
+    background: #fff url(../img/spinner.gif) no-repeat center 70px;
+    min-height: 150px;
+}
+
+#bd.loading .apidocs .content,
+#api-list.loading .yui3-tabview-panel .apis {
+    display: none;
+}
+
+.apidocs .no-visible-items { color: #666; }
+
+/* Generic inline list. */
+.apidocs ul.inline {
+    display: inline;
+    list-style: none;
+    margin: 0;
+    padding: 0;
+}
+
+.apidocs ul.inline li { display: inline; }
+
+/* Comma-separated list. */
+.apidocs ul.commas li:after { content: ','; }
+.apidocs ul.commas li:last-child:after { content: ''; }
+
+/* Keyboard shortcuts. */
+kbd .cmd { font-family: Monaco, Helvetica; }
+
+/* -- Generic Access Level styles ------------------------------------------- */
+.apidocs .item.protected,
+.apidocs .item.private,
+.apidocs .index-item.protected,
+.apidocs .index-item.deprecated,
+.apidocs .index-item.private {
+    display: none;
+}
+
+.show-deprecated .item.deprecated,
+.show-deprecated .index-item.deprecated,
+.show-protected .item.protected,
+.show-protected .index-item.protected,
+.show-private .item.private,
+.show-private .index-item.private {
+    display: block;
+}
+
+.hide-inherited .item.inherited,
+.hide-inherited .index-item.inherited {
+    display: none;
+}
+
+/* -- Generic Item Index styles --------------------------------------------- */
+.apidocs .index { margin: 1.5em 0 3em; }
+
+.apidocs .index h3 {
+    border-bottom: 1px solid #efefef;
+    color: #333;
+    font-size: 13px;
+    margin: 2em 0 0.6em;
+    padding-bottom: 2px;
+}
+
+.apidocs .index .no-visible-items { margin-top: 2em; }
+
+.apidocs .index-list {
+    border-color: #efefef;
+    font-size: 12px;
+    list-style: none;
+    margin: 0;
+    padding: 0;
+    -moz-column-count: 4;
+    -moz-column-gap: 10px;
+    -moz-column-width: 170px;
+    -ms-column-count: 4;
+    -ms-column-gap: 10px;
+    -ms-column-width: 170px;
+    -o-column-count: 4;
+    -o-column-gap: 10px;
+    -o-column-width: 170px;
+    -webkit-column-count: 4;
+    -webkit-column-gap: 10px;
+    -webkit-column-width: 170px;
+    column-count: 4;
+    column-gap: 10px;
+    column-width: 170px;
+}
+
+.apidocs .no-columns .index-list {
+    -moz-column-count: 1;
+    -ms-column-count: 1;
+    -o-column-count: 1;
+    -webkit-column-count: 1;
+    column-count: 1;
+}
+
+.apidocs .index-item { white-space: nowrap; }
+
+.apidocs .index-item .flag {
+    background: none;
+    border: none;
+    color: #afafaf;
+    display: inline;
+    margin: 0 0 0 0.2em;
+    padding: 0;
+}
+
+/* -- Generic API item styles ----------------------------------------------- */
+.apidocs .args {
+    display: inline;
+    margin: 0 0.5em;
+}
+
+.apidocs .flag.chainable { background: #46ca3b; }
+.apidocs .flag.protected { background: #9b86fc; }
+.apidocs .flag.private { background: #fd6b1b; }
+.apidocs .flag.async { background: #356de4; }
+.apidocs .flag.required { background: #e60923; }
+
+.apidocs .item {
+    border-bottom: 1px solid #efefef;
+    margin: 1.5em 0 2em;
+    padding-bottom: 2em;
+}
+
+.apidocs .item h4,
+.apidocs .item h5,
+.apidocs .item h6 {
+    color: #333;
+    font-family: inherit;
+    font-size: 100%;
+}
+
+.apidocs .item .description p,
+.apidocs .item pre.code {
+    margin: 1em 0 0;
+}
+
+.apidocs .item .meta {
+    background: none;
+    border: none;
+    padding: 0;
+}
+
+.apidocs .item .name {
+    display: inline;
+    font-size: 14px;
+}
+
+.apidocs .item .type,
+.apidocs .item .type a,
+.apidocs .returns-inline {
+    color: #555;
+}
+
+.apidocs .item .type,
+.apidocs .returns-inline {
+    font-size: 11px;
+    margin: 0 0 0 0;
+}
+
+.apidocs .item .type a { border-bottom: 1px dotted #afafaf; }
+.apidocs .item .type a:hover { border: none; }
+
+/* -- Item Parameter List --------------------------------------------------- */
+.apidocs .params-list {
+    list-style: square;
+    margin: 0 0 0 2em;
+    padding: 0;
+}
+
+.apidocs .param { margin-bottom: 0em; }
+
+.apidocs .param .type,
+.apidocs .param .type a {
+    color: #666;
+}
+
+.apidocs .param .type {
+    margin: 0 0 0 0.5em;
+    *margin-left: 0.5em;
+}
+
+.apidocs .param-name { font-weight: bold; }
+
+/* -- Item "Emits" block ---------------------------------------------------- */
+.apidocs .item .emits {
+    background: #f9f9f9;
+    border-color: #eaeaea;
+}
+
+/* -- Item "Returns" block -------------------------------------------------- */
+.apidocs .item .returns .type,
+.apidocs .item .returns .type a {
+    font-size: 100%;
+    margin: 0;
+}
+
+/* -- Class Constructor block ----------------------------------------------- */
+.apidocs .constructor .item {
+    border: none;
+    padding-bottom: 0;
+}
+
+/* -- File Source View ------------------------------------------------------ */
+.apidocs .file pre.code,
+#doc .apidocs .file pre.prettyprint {
+    background: inherit;
+    border: none;
+    overflow: visible;
+    padding: 0;
+}
+
+.apidocs .L0,
+.apidocs .L1,
+.apidocs .L2,
+.apidocs .L3,
+.apidocs .L4,
+.apidocs .L5,
+.apidocs .L6,
+.apidocs .L7,
+.apidocs .L8,
+.apidocs .L9 {
+    background: inherit;
+}
+
+/* -- Submodule List -------------------------------------------------------- */
+.apidocs .module-submodule-description {
+    font-size: 12px;
+    margin: 0.3em 0 1em;
+}
+
+.apidocs .module-submodule-description p:first-child { margin-top: 0; }
+
+/* -- Sidebar TabView ------------------------------------------------------- */
+#api-tabview { margin-top: 0.6em; }
+
+#api-tabview-filter,
+#api-tabview-panel {
+    border: 1px solid #dfdfdf;
+}
+
+#api-tabview-filter {
+    border-bottom: none;
+    border-top: none;
+    padding: 0.6em 10px 0 10px;
+}
+
+#api-tabview-panel { border-top: none; }
+#api-filter { width: 97%; }
+
+.yui3-u-1-4{
+    width:21%;
+}
+
+/* -- Content TabView ------------------------------------------------------- */
+#classdocs .yui3-tabview-panel { border: none; }
+
+/* -- Source File Contents -------------------------------------------------- */
+.prettyprint li.L0,
+.prettyprint li.L1,
+.prettyprint li.L2,
+.prettyprint li.L3,
+.prettyprint li.L5,
+.prettyprint li.L6,
+.prettyprint li.L7,
+.prettyprint li.L8 {
+    list-style: decimal;
+}
+
+/* -- API options ----------------------------------------------------------- */
+#api-options {
+    font-size: 11px;
+    margin-top: 2.2em;
+    position: absolute;
+    right: 1.5em;
+}
+
+/*#api-options label { margin-right: 0.6em; }*/
+
+/* -- API list -------------------------------------------------------------- */
+#api-list {
+    margin-top: 1.5em;
+    *zoom: 1;
+}
+
+.apis {
+    font-size: 12px;
+    line-height: 1.4;
+    list-style: none;
+    margin: 0;
+    padding: 0.5em 0 0.5em 0.4em;
+}
+
+.apis a {
+    border: 1px solid transparent;
+    display: block;
+    margin: 0 0 0 -4px;
+    padding: 1px 4px 0;
+    text-decoration: none;
+    _border: none;
+    _display: inline;
+}
+
+.apis a:hover,
+.apis a:focus {
+    background: #E8EDFC;
+    background: -moz-linear-gradient(top, #e8edfc 0%, #becef7 100%);
+    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#E8EDFC), color-stop(100%,#BECEF7));
+    border-color: #AAC0FA;
+    border-radius: 3px;
+    color: #333;
+    outline: none;
+}
+
+.api-list-item a:hover,
+.api-list-item a:focus {
+    font-weight: bold;
+    text-shadow: 1px 1px 1px #fff;
+}
+
+.apis .message { color: #888; }
+.apis .result a { padding: 3px 5px 2px; }
+
+.apis .result .type {
+    right: 4px;
+    top: 7px;
+}
+
+.api-list-item .yui3-highlight {
+    font-weight: bold;
+}
+
+#advertising{
+    text-align: center;
+    background-color: #e4e9f6;
+    padding: 5px 0 5px 0;
+}
+
+#advertising img{
+    border:1px solid black;
+}
+
+#advertising *{
+    line-height:1.0;
+    display: block;
+    margin: 5px auto 5px auto;
+    margin-right: auto;
+}
+
+#support{
+    margin-top:8px;
+}
+
+#support td{
+    background:none;
+    border:none;
+    padding:0px;
+}
+
diff --git a/Assets/LeanTween/Documentation/assets/css/main.css.meta b/Assets/LeanTween/Documentation/assets/css/main.css.meta
new file mode 100644
index 0000000..850eeeb
--- /dev/null
+++ b/Assets/LeanTween/Documentation/assets/css/main.css.meta
@@ -0,0 +1,2 @@
+fileFormatVersion: 2
+guid: f2e6f2786cebb4eb8945b46000f02d18
diff --git a/Assets/LeanTween/Documentation/assets/favicon.ico b/Assets/LeanTween/Documentation/assets/favicon.ico
new file mode 100644
index 0000000..414ac4f
Binary files /dev/null and b/Assets/LeanTween/Documentation/assets/favicon.ico differ
diff --git a/Assets/LeanTween/Documentation/assets/favicon.ico.meta b/Assets/LeanTween/Documentation/assets/favicon.ico.meta
new file mode 100644
index 0000000..c1be27b
--- /dev/null
+++ b/Assets/LeanTween/Documentation/assets/favicon.ico.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 751c9ec47ccc246ae9845f7503545585
+timeCreated: 1479470953
+licenseType: Store
+DefaultImporter:
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/LeanTween/Documentation/assets/index.html b/Assets/LeanTween/Documentation/assets/index.html
new file mode 100644
index 0000000..487fe15
--- /dev/null
+++ b/Assets/LeanTween/Documentation/assets/index.html
@@ -0,0 +1,10 @@
+
+
+    
+        Redirector
+        
+    
+    
+        Click here to redirect
+    
+
diff --git a/Assets/LeanTween/Documentation/assets/index.html.meta b/Assets/LeanTween/Documentation/assets/index.html.meta
new file mode 100644
index 0000000..b08ed0a
--- /dev/null
+++ b/Assets/LeanTween/Documentation/assets/index.html.meta
@@ -0,0 +1,2 @@
+fileFormatVersion: 2
+guid: 395ceea41819e494b8fe14c2e7b05a00
diff --git a/Assets/LeanTween/Documentation/classes.meta b/Assets/LeanTween/Documentation/classes.meta
new file mode 100644
index 0000000..c3e4637
--- /dev/null
+++ b/Assets/LeanTween/Documentation/classes.meta
@@ -0,0 +1,2 @@
+fileFormatVersion: 2
+guid: d4bb1e3d3bec8431a82cb033f38b4ceb
diff --git a/Assets/LeanTween/Documentation/classes/LTBezierPath.html b/Assets/LeanTween/Documentation/classes/LTBezierPath.html
new file mode 100644
index 0000000..e75ddb5
--- /dev/null
+++ b/Assets/LeanTween/Documentation/classes/LTBezierPath.html
@@ -0,0 +1,793 @@
+
+
+
+    
+    LTBezierPath
+    
+    
+    
+    
+    
+    
+    
+    
+
+
+
+
+
+
+

- Developed by Dented Pixel
+
+
+ API Docs for: LeanTween 2.50
+ + + + + +
+

Support LeanTween!

+ +
+
+ + + + + + + +
+
+
+ +

Maintaining and adding new features takes time, your support is appreciated.

+
+
+ + +
+
+ Show: + + + + + + + +
+ +
+
+
+

LTBezierPath Class

+
+ + +
+ Defined in: LeanTween.cs:2944 +
+ + +
+ + +
+

Manually animate along a bezier path with this class

+ +
+ +
+

Constructor

+
+

LTBezierPath

+ +
+ (
    +
  • + pts +
  • +
) +
+ + + + + + + + +
+

+ Defined in + LeanTween.cs:2944 +

+ + + +
+ +
+ +
+ +
+

Parameters:

+ +
    +
  • + pts + Vector3 Array + + +
    +

    A set of points that define one or many bezier paths (the paths should be passed in multiples of 4, which correspond to each individual bezier curve)
    + It goes in the order: startPoint,endControl,startControl,endPoint - Note: the control for the end and start are reversed! This is just a quirk of the API.
    +

    + +
    + +
  • +
+
+ + +
+

Example:

+ +
+

LTBezierPath ltPath = new LTBezierPath( new Vector3[] { new Vector3(0f,0f,0f),new Vector3(1f,0f,0f), new Vector3(1f,0f,0f), new Vector3(1f,1f,0f)} );

+ LeanTween.move(lt, ltPath.vec3, 4.0f).setOrientToPath(true).setDelay(1f).setEase(LeanTweenType.easeInOutQuad); // animate
+ Vector3 pt = ltPath.point( 0.6f ); // retrieve a point along the path

+ +
+
+
+
+ +
+ + +
+
+

Item Index

+ +
+

Methods

+ + +
+ +
+

Properties

+ + +
+ + +
+ +
+

Methods

+ +
+

place

+ +
+ (
    +
  • + transform:Transform +
  • +
  • + ratio:float +
  • +
) +
+ + + + + + + + +
+

+ Defined in + LeanTween.cs:3043 +

+ + + +
+ +
+ Place an object along a certain point on the path (facing the direction perpendicular to the path) +
+ +
+

Parameters:

+ +
    +
  • + transform:Transform + Transform + + +
    +

    the transform of the object you wish to place along the path

    + +
    + +
  • +
  • + ratio:float + Float + + +
    +

    ratio of the point along the path you wish to receive (0-1)

    + +
    + +
  • +
+
+ + +
+

Example:

+ +
+

ltPath.place( transform, 0.6f );

+ +
+
+
+
+

place

+ +
+ (
    +
  • + transform:Transform +
  • +
  • + ratio:float +
  • +
  • + rotation:Vector3 +
  • +
) +
+ + + + + + + + +
+

+ Defined in + LeanTween.cs:3057 +

+ + + +
+ +
+ Place an object along a certain point on the path, with it facing a certain direction perpendicular to the path +
+ +
+

Parameters:

+ +
    +
  • + transform:Transform + Transform + + +
    +

    the transform of the object you wish to place along the path

    + +
    + +
  • +
  • + ratio:float + Float + + +
    +

    ratio of the point along the path you wish to receive (0-1)

    + +
    + +
  • +
  • + rotation:Vector3 + Vector3 + + +
    +

    the direction in which to place the transform ex: Vector3.up

    + +
    + +
  • +
+
+ + +
+

Example:

+ +
+

ltPath.place( transform, 0.6f, Vector3.left );

+ +
+
+
+
+

placeLocal

+ +
+ (
    +
  • + transform:Transform +
  • +
  • + ratio:float +
  • +
) +
+ + + + + + + + +
+

+ Defined in + LeanTween.cs:3075 +

+ + + +
+ +
+ Place an object along a certain point on the path (facing the direction perpendicular to the path) - Local Space, not world-space +
+ +
+

Parameters:

+ +
    +
  • + transform:Transform + Transform + + +
    +

    the transform of the object you wish to place along the path

    + +
    + +
  • +
  • + ratio:float + Float + + +
    +

    ratio of the point along the path you wish to receive (0-1)

    + +
    + +
  • +
+
+ + +
+

Example:

+ +
+

ltPath.placeLocal( transform, 0.6f );

+ +
+
+
+
+

placeLocal

+ +
+ (
    +
  • + transform:Transform +
  • +
  • + ratio:float +
  • +
  • + rotation:Vector3 +
  • +
) +
+ + + + + + + + +
+

+ Defined in + LeanTween.cs:3088 +

+ + + +
+ +
+ Place an object along a certain point on the path, with it facing a certain direction perpendicular to the path - Local Space, not world-space +
+ +
+

Parameters:

+ +
    +
  • + transform:Transform + Transform + + +
    +

    the transform of the object you wish to place along the path

    + +
    + +
  • +
  • + ratio:float + Float + + +
    +

    ratio of the point along the path you wish to receive (0-1)

    + +
    + +
  • +
  • + rotation:Vector3 + Vector3 + + +
    +

    the direction in which to place the transform ex: Vector3.up

    + +
    + +
  • +
+
+ + +
+

Example:

+ +
+

ltPath.placeLocal( transform, 0.6f, Vector3.left );

+ +
+
+
+
+

point

+ +
+ (
    +
  • + ratio:float +
  • +
) +
+ + + Vector3 + + + + + + + + +
+

+ Defined in + LeanTween.cs:3004 +

+ + + +
+ +
+ Retrieve a point along a path +
+ +
+

Parameters:

+ +
    +
  • + ratio:float + Float + + +
    +

    ratio of the point along the path you wish to receive (0-1)

    + +
    + +
  • +
+
+ +
+

Returns:

+ +
+ Vector3: +

Vector3 position of the point along the path

+ +
+
+ +
+

Example:

+ +
+

transform.position = ltPath.point( 0.6f );

+ +
+
+
+
+

ratioAtPoint

+ +
+ (
    +
  • + point:Vector3 +
  • +
) +
+ + + Float + + + + + + + + +
+

+ Defined in + LeanTween.cs:3125 +

+ + + +
+ +
+ Retrieve the closest ratio near the point +
+ +
+

Parameters:

+ +
    +
  • + point:Vector3 + Vector3 + + +
    +

    given a current location it makes the best approximiation of where it is along the path ratio-wise (0-1)

    + +
    + +
  • +
+
+ +
+

Returns:

+ +
+ Float: +

float of ratio along the path

+ +
+
+ +
+

Example:

+ +
+

ratioIter = ltBezier.ratioAtPoint( transform.position );

+ +
+
+
+
+ +
+

Properties

+ +
+

distance distance of the path (in unity units)

+ Float + + + + + +
+

+ Defined in + LeanTween.cs:2995 +

+ + +
+ +
+ +
+ + + +
+
+ + +
+
+
+
+
+
+
+
+ + + + + + + + + + diff --git a/Assets/LeanTween/Documentation/classes/LTBezierPath.html.meta b/Assets/LeanTween/Documentation/classes/LTBezierPath.html.meta new file mode 100644 index 0000000..98d07aa --- /dev/null +++ b/Assets/LeanTween/Documentation/classes/LTBezierPath.html.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: f7b721e4275c14b53a73241b9d0b256f diff --git a/Assets/LeanTween/Documentation/classes/LTDescr.html b/Assets/LeanTween/Documentation/classes/LTDescr.html new file mode 100644 index 0000000..d8875f0 --- /dev/null +++ b/Assets/LeanTween/Documentation/classes/LTDescr.html @@ -0,0 +1,2942 @@ + + + + + LTDescr + + + + + + + + + + + +
+
+
+

- Developed by Dented Pixel
+
+
+ API Docs for: LeanTween 2.50
+ + + + + +
+

Support LeanTween!

+ +
+
+ + + + + + + +
+
+
+ +

Maintaining and adding new features takes time, your support is appreciated.

+
+
+ + +
+
+ Show: + + + + + + + +
+ +
+
+
+

LTDescr Class

+
+ + +
+ Defined in: LTDescr.cs:5 +
+ + +
+ + +
+

Internal Representation of a Tween
+
+ This class represents all of the optional parameters you can pass to a method (it also represents the internal representation of the tween).

+ Optional Parameters are passed at the end of every method:
+
+   Example:
+   LeanTween.moveX( gameObject, 1f, 1f).setEase( LeanTweenType.easeInQuad ).setDelay(1f);
+
+ You can pass the optional parameters in any order, and chain on as many as you wish.
+ You can also pass parameters at a later time by saving a reference to what is returned.
+
+ Retrieve a unique id for the tween by using the "id" property. You can pass this to LeanTween.pause, LeanTween.resume, LeanTween.cancel, LeanTween.isTweening methods
+
+   

Example:

+   int id = LeanTween.moveX(gameObject, 1f, 3f).id;

+
  // pause a specific tween
+   LeanTween.pause(id);
+
  // resume later
+   LeanTween.resume(id);
+
  // check if it is tweening before kicking of a new tween
+   if( LeanTween.isTweening( id ) ){
+       LeanTween.cancel( id );
+       LeanTween.moveZ(gameObject, 10f, 3f);
+   }
+
+ +
+

Constructor

+
+

LTDescr

+ + () + + + + + + + + +
+

+ Defined in + LTDescr.cs:5 +

+ + + +
+ +
+ +
+ + + +
+
+ +
+ + +
+
+

Item Index

+ +
+

Methods

+ + +
+ + + +
+ +
+

Methods

+ +
+

pause

+ + () + + + LTDescr + + + + + + + + +
+

+ Defined in + LTDescr.cs:1183 +

+ + + +
+ +
+

Pause a tween

+ +
+ + +
+

Returns:

+ +
+ LTDescr: +

LTDescr an object that distinguishes the tween

+ +
+
+ +
+
+

resume

+ + () + + + LTDescr + + + + + + + + +
+

+ Defined in + LTDescr.cs:1198 +

+ + + +
+ +
+

Resume a paused tween

+ +
+ + +
+

Returns:

+ +
+ LTDescr: +

LTDescr an object that distinguishes the tween

+ +
+
+ +
+
+

setAxis

+ +
+ (
    +
  • + axis +
  • +
) +
+ + + LTDescr + + + + + + + + +
+

+ Defined in + LTDescr.cs:1210 +

+ + + +
+ +
+

Set Axis optional axis for tweens where it is relevant

+ +
+ +
+

Parameters:

+ +
    +
  • + axis + Vector3 + + +
    +

    either the tween rotates around, or the direction it faces in the case of setOrientToPath

    + +
    + +
  • +
+
+ +
+

Returns:

+ +
+ LTDescr: +

LTDescr an object that distinguishes the tween

+ +
+
+ +
+

Example:

+ +
+

LeanTween.move( ltLogo, path, 1.0f ).setEase(LeanTweenType.easeOutQuad).setOrientToPath(true).setAxis(Vector3.forward);

+ +
+
+
+
+

setDelay

+ +
+ (
    +
  • + float +
  • +
) +
+ + + LTDescr + + + + + + + + +
+

+ Defined in + LTDescr.cs:1224 +

+ + + +
+ +
+

Delay the start of a tween

+ +
+ +
+

Parameters:

+ +
    +
  • + float + Float + + +
    +

    time The time to complete the tween in

    + +
    + +
  • +
+
+ +
+

Returns:

+ +
+ LTDescr: +

LTDescr an object that distinguishes the tween

+ +
+
+ +
+

Example:

+ +
+

LeanTween.moveX(gameObject, 5f, 2.0f ).setDelay( 1.5f );

+ +
+
+
+
+

setDirection

+ +
+ (
    +
  • + direction:float +
  • +
) +
+ + + LTDescr + + + + + + + + +
+

+ Defined in + LTDescr.cs:2260 +

+ + + +
+ +
+

Set the direction of a tween -1f for backwards 1f for forwards (currently only bezier and spline paths are supported)

+ +
+ +
+

Parameters:

+ +
    +
  • + direction:float + Float + + +
    +

    the direction that the tween should run, -1f for backwards 1f for forwards

    + +
    + +
  • +
+
+ +
+

Returns:

+ +
+ LTDescr: +

LTDescr an object that distinguishes the tween

+ +
+
+ +
+

Example:

+ +
+

LeanTween.moveSpline(gameObject, new Vector3[]{new Vector3(0f,0f,0f),new Vector3(1f,0f,0f),new Vector3(1f,0f,0f),new Vector3(1f,0f,1f)}, 1.5f).setDirection(-1f);

+ +
+
+
+
+

setEase

+ +
+ (
    +
  • + easeType:LeanTweenType +
  • +
) +
+ + + LTDescr + + + + + + + + +
+

+ Defined in + LTDescr.cs:1239 +

+ + + +
+ +
+

Set the type of easing used for the tween.

+ +
+ +
+

Parameters:

+ +
    +
  • + easeType:LeanTweenType + LeanTweenType + + +
    +

    the easing type to use

    + +
    + +
  • +
+
+ +
+

Returns:

+ +
+ LTDescr: +

LTDescr an object that distinguishes the tween

+ +
+
+ +
+

Example:

+ +
+

LeanTween.moveX(gameObject, 5f, 2.0f ).setEase( LeanTweenType.easeInBounce );

+ +
+
+
+
+

setEase (AnimationCurve)

+ +
+ (
    +
  • + easeDefinition:AnimationCurve +
  • +
) +
+ + + LTDescr + + + + + + + + +
+

+ Defined in + LTDescr.cs:1689 +

+ + + +
+ +
+

Set the type of easing used for the tween with a custom curve.

+ +
+ +
+

Parameters:

+ +
    +
  • + easeDefinition:AnimationCurve + AnimationCurve + + +
    +

    an AnimationCure that describes the type of easing you want, this is great for when you want a unique type of movement

    + +
    + +
  • +
+
+ +
+

Returns:

+ +
+ LTDescr: +

LTDescr an object that distinguishes the tween

+ +
+
+ +
+

Example:

+ +
+

LeanTween.moveX(gameObject, 5f, 2.0f ).setEase( LeanTweenType.easeInBounce );

+ +
+
+
+
+

setFrom

+ +
+ (
    +
  • + from:Vector3 +
  • +
) +
+ + + LTDescr + + + + + + + + +
+

+ Defined in + LTDescr.cs:1730 +

+ + + +
+ +
+

Set the beginning of the tween

+ +
+ +
+

Parameters:

+ +
    +
  • + from:Vector3 + Vector3 + + +
    +

    the point you would like the tween to start at

    + +
    + +
  • +
+
+ +
+

Returns:

+ +
+ LTDescr: +

LTDescr an object that distinguishes the tween

+ +
+
+ +
+

Example:

+ +
+

LTDescr descr = LeanTween.move( cube, Vector3.up, new Vector3(1f,3f,0f), 1.0f ).setFrom( new Vector3(5f,10f,3f) );

+ +
+
+
+
+

setIgnoreTimeScale

+ +
+ (
    +
  • + useUnScaledTime:bool +
  • +
) +
+ + + LTDescr + + + + + + + + +
+

+ Defined in + LTDescr.cs:1849 +

+ + + +
+ +
+

Set ignore time scale when tweening an object when you want the animation to be time-scale independent (ignores the Time.timeScale value). Great for pause screens, when you want all other action to be stopped (or slowed down)

+ +
+ +
+

Parameters:

+ +
    +
  • + useUnScaledTime:bool + Bool + + +
    +

    whether to use the unscaled time or not

    + +
    + +
  • +
+
+ +
+

Returns:

+ +
+ LTDescr: +

LTDescr an object that distinguishes the tween

+ +
+
+ +
+

Example:

+ +
+

LeanTween.moveX(gameObject, 5f, 2.0f ).setRepeat( 2 ).setIgnoreTimeScale( true );

+ +
+
+
+
+

setLoopClamp

+ +
+ (
    +
  • + loops:int +
  • +
) +
+ + + LTDescr + + + + + + + + +
+

+ Defined in + LTDescr.cs:1898 +

+ + + +
+ +
+

When the animation gets to the end it starts back at where it began

+ +
+ +
+

Parameters:

+ +
    +
  • + loops:int + Int + + +
    +

    (defaults to -1) how many times you want the loop to happen (-1 for an infinite number of times)

    + +
    + +
  • +
+
+ +
+

Returns:

+ +
+ LTDescr: +

LTDescr an object that distinguishes the tween

+ +
+
+ +
+

Example:

+ +
+

LeanTween.moveX(gameObject, 5f, 2.0f ).setLoopClamp( 2 );

+ +
+
+
+
+

setLoopOnce

+ + () + + + LTDescr + + + + + + + + +
+

+ Defined in + LTDescr.cs:1889 +

+ + + +
+ +
+

No looping involved, just run once (the default)

+ +
+ + +
+

Returns:

+ +
+ LTDescr: +

LTDescr an object that distinguishes the tween

+ +
+
+ +
+

Example:

+ +
+

LeanTween.moveX(gameObject, 5f, 2.0f ).setLoopOnce();

+ +
+
+
+
+

setLoopPingPong

+ +
+ (
    +
  • + loops:int +
  • +
) +
+ + + LTDescr + + + + + + + + +
+

+ Defined in + LTDescr.cs:1917 +

+ + + +
+ +
+

When the animation gets to the end it then tweens back to where it started (and on, and on)

+ +
+ +
+

Parameters:

+ +
    +
  • + loops:int + Int + + +
    +

    (defaults to -1) how many times you want the loop to happen in both directions (-1 for an infinite number of times). Passing a value of 1 will cause the object to go towards and back from it's destination once.

    + +
    + +
  • +
+
+ +
+

Returns:

+ +
+ LTDescr: +

LTDescr an object that distinguishes the tween

+ +
+
+ +
+

Example:

+ +
+

LeanTween.moveX(gameObject, 5f, 2.0f ).setLoopPingPong( 2 );

+ +
+
+
+
+

setOnComplete

+ +
+ (
    +
  • + onComplete:Action +
  • +
) +
+ + + LTDescr + + + + + + + + +
+

+ Defined in + LTDescr.cs:1937 +

+ + + +
+ +
+

Have a method called when the tween finishes

+ +
+ +
+

Parameters:

+ +
    +
  • + onComplete:Action + Action + + +
    +

    the method that should be called when the tween is finished ex: tweenFinished(){ }

    + +
    + +
  • +
+
+ +
+

Returns:

+ +
+ LTDescr: +

LTDescr an object that distinguishes the tween

+ +
+
+ +
+

Example:

+ +
+

LeanTween.moveX(gameObject, 5f, 2.0f ).setOnComplete( tweenFinished );

+ +
+
+
+
+

setOnComplete (object)

+ +
+ (
    +
  • + onComplete:Action<object> +
  • +
) +
+ + + LTDescr + + + + + + + + +
+

+ Defined in + LTDescr.cs:1951 +

+ + + +
+ +
+

Have a method called when the tween finishes

+ +
+ +
+

Parameters:

+ +
    +
  • + onComplete:Action<object> + Action + + +
    +

    the method that should be called when the tween is finished ex: tweenFinished( object myObj ){ }

    + +
    + + + + + +
    +

    Returns:

    + +
    + LTDescr: +

    LTDescr an object that distinguishes the tween

    + +
    +
    + +
    +

    Example:

    + +
    +

    object tweenFinishedObj = "hi" as object; + LeanTween.moveX(gameObject, 5f, 2.0f ).setOnComplete( tweenFinished, tweenFinishedObj );

    + +
    +
    + +
    +

    setOnCompleteOnRepeat

    + +
    + (
      +
    • + isOn:bool +
    • +
    ) +
    + + + LTDescr + + + + + + + + +
    +

    + Defined in + LTDescr.cs:2198 +

    + + + +
    + +
    +

    Set the onComplete method to be called at the end of every loop cycle (also applies to the delayedCall method)

    + +
    + +
    +

    Parameters:

    + +
      +
    • + isOn:bool + Bool + + +
      +

      does call onComplete on every loop cycle

      + +
      + +
    • +
    +
    + +
    +

    Returns:

    + +
    + LTDescr: +

    LTDescr an object that distinguishes the tween

    + +
    +
    + +
    +

    Example:

    + +
    +

    LeanTween.delayedCall(gameObject,0.3f, delayedMethod).setRepeat(4).setOnCompleteOnRepeat(true);

    + +
    +
    +
    +
    +

    setOnCompleteOnStart

    + +
    + (
      +
    • + isOn:bool +
    • +
    ) +
    + + + LTDescr + + + + + + + + +
    +

    + Defined in + LTDescr.cs:2211 +

    + + + +
    + +
    +

    Set the onComplete method to be called at the beginning of the tween (it will still be called when it is completed as well)

    + +
    + +
    +

    Parameters:

    + +
      +
    • + isOn:bool + Bool + + +
      +

      does call onComplete at the start of the tween

      + +
      + +
    • +
    +
    + +
    +

    Returns:

    + +
    + LTDescr: +

    LTDescr an object that distinguishes the tween

    + +
    +
    + +
    +

    Example:

    + +
    +

    LeanTween.delayedCall(gameObject, 2f, ()=>{
    // Flash an object 5 times +  LeanTween.alpha(gameObject, 0f, 1f);
    +  LeanTween.alpha(gameObject, 1f, 0f).setDelay(1f);
    + }).setOnCompleteOnStart(true).setRepeat(5);

    + +
    +
    +
    +
    +

    setOnCompleteParam

    + +
    + (
      +
    • + onComplete:object +
    • +
    ) +
    + + + LTDescr + + + + + + + + +
    +

    + Defined in + LTDescr.cs:1973 +

    + + + +
    + +
    +

    Pass an object to along with the onComplete Function

    + +
    + +
    +

    Parameters:

    + +
      +
    • + onComplete:object + Object + + +
      +

      an object that

      + +
      + +
    • +
    +
    + +
    +

    Returns:

    + +
    + LTDescr: +

    LTDescr an object that distinguishes the tween

    + +
    +
    + +
    +

    Example:

    + +
    +

    LeanTween.delayedCall(1.5f, enterMiniGameStart).setOnCompleteParam( new object[]{""+5} );

    + void enterMiniGameStart( object val ){
    +  object[] arr = (object [])val;
    +  int lvl = int.Parse((string)arr[0]);
    + }

    + +
    +
    +
    +
    +

    setOnStart

    + +
    + (
      +
    • + onStart:Action<> +
    • +
    ) +
    + + + LTDescr + + + + + + + + +
    +

    + Defined in + LTDescr.cs:2244 +

    + + + +
    + +
    +

    Have a method called when the tween starts

    + +
    + +
    +

    Parameters:

    + +
      +
    • + onStart:Action<> + Action<> + + +
      +

      the method that should be called when the tween is starting ex: tweenStarted( ){ }

      + +
      + +
    • +
    +
    + +
    +

    Returns:

    + +
    + LTDescr: +

    LTDescr an object that distinguishes the tween

    + +
    +
    + +
    +

    Example:

    + +
    +

    C#:
    + LeanTween.moveX(gameObject, 5f, 2.0f ).setOnStart( ()=>{ Debug.Log("I started!"); }); + Javascript:
    + LeanTween.moveX(gameObject, 5f, 2.0f ).setOnStart( function(){ Debug.Log("I started!"); } );

    + +
    +
    +
    +
    +

    setOnUpdate

    + +
    + (
      +
    • + onUpdate:Action<float> +
    • +
    ) +
    + + + LTDescr + + + + + + + + +
    +

    + Defined in + LTDescr.cs:1992 +

    + + + +
    + +
    +

    Have a method called on each frame that the tween is being animated (passes a float value)

    + +
    + +
    +

    Parameters:

    + +
      +
    • + onUpdate:Action<float> + Action + + +
      +

      a method that will be called on every frame with the float value of the tweened object

      + +
      + +
    • +
    +
    + +
    +

    Returns:

    + +
    + LTDescr: +

    LTDescr an object that distinguishes the tween

    + +
    +
    + +
    +

    Example:

    + +
    +

    LeanTween.moveX(gameObject, 5f, 2.0f ).setOnUpdate( tweenMoved );
    +
    + void tweenMoved( float val ){ }

    + +
    +
    +
    +
    +

    setOnUpdate (object)

    + +
    + (
      +
    • + onUpdate:Action<float,object> +
    • +
    ) +
    + + + LTDescr + + + + + + + + +
    +

    + Defined in + LTDescr.cs:2054 +

    + + + +
    + +
    +

    Have a method called on each frame that the tween is being animated (passes a float value and a object)

    + +
    + +
    +

    Parameters:

    + +
      +
    • + onUpdate:Action<float,object> + Action + + +
      +

      a method that will be called on every frame with the float value of the tweened object, and an object of the person's choosing

      + +
      + +
    • +
    +
    + +
    +

    Returns:

    + +
    + LTDescr: +

    LTDescr an object that distinguishes the tween

    + +
    +
    + +
    +

    Example:

    + +
    +

    LeanTween.moveX(gameObject, 5f, 2.0f ).setOnUpdate( tweenMoved ).setOnUpdateParam( myObject );
    +
    + void tweenMoved( float val, object obj ){ }

    + +
    +
    +
    +
    +

    setOnUpdate (Vector3)

    + +
    + (
      +
    • + onUpdate:Action<Vector3> +
    • +
    ) +
    + + + LTDescr + + + + + + + + +
    +

    + Defined in + LTDescr.cs:2088 +

    + + + +
    + +
    +

    Have a method called on each frame that the tween is being animated (passes a float value)

    + +
    + +
    +

    Parameters:

    + +
      +
    • + onUpdate:Action<Vector3> + Action + + +
      +

      a method that will be called on every frame with the float value of the tweened object

      + +
      + +
    • +
    +
    + +
    +

    Returns:

    + +
    + LTDescr: +

    LTDescr an object that distinguishes the tween

    + +
    +
    + +
    +

    Example:

    + +
    +

    LeanTween.moveX(gameObject, 5f, 2.0f ).setOnUpdate( tweenMoved );
    +
    + void tweenMoved( Vector3 val ){ }

    + +
    +
    +
    +
    +

    setOnUpdateParam

    + +
    + (
      +
    • + onUpdateParam:object +
    • +
    ) +
    + + + LTDescr + + + + + + + + +
    +

    + Defined in + LTDescr.cs:2108 +

    + + + +
    + +
    +

    Have an object passed along with the onUpdate method

    + +
    + +
    +

    Parameters:

    + +
      +
    • + onUpdateParam:object + Object + + +
      +

      an object that will be passed along with the onUpdate method

      + +
      + +
    • +
    +
    + +
    +

    Returns:

    + +
    + LTDescr: +

    LTDescr an object that distinguishes the tween

    + +
    +
    + +
    +

    Example:

    + +
    +

    LeanTween.moveX(gameObject, 5f, 2.0f ).setOnUpdate( tweenMoved ).setOnUpdateParam( myObject );
    +
    + void tweenMoved( float val, object obj ){ }

    + +
    +
    +
    +
    +

    setOrientToPath

    + +
    + (
      +
    • + doesOrient:bool +
    • +
    ) +
    + + + LTDescr + + + + + + + + +
    +

    + Defined in + LTDescr.cs:2123 +

    + + + +
    + +
    +

    While tweening along a curve, set this property to true, to be perpendicalur to the path it is moving upon

    + +
    + +
    +

    Parameters:

    + +
      +
    • + doesOrient:bool + Bool + + +
      +

      whether the gameobject will orient to the path it is animating along

      + +
      + +
    • +
    +
    + +
    +

    Returns:

    + +
    + LTDescr: +

    LTDescr an object that distinguishes the tween

    + +
    +
    + +
    +

    Example:

    + +
    +

    LeanTween.move( ltLogo, path, 1.0f ).setEase(LeanTweenType.easeOutQuad).setOrientToPath(true).setAxis(Vector3.forward);

    + +
    +
    +
    +
    +

    setOrientToPath2d

    + +
    + (
      +
    • + doesOrient:bool +
    • +
    ) +
    + + + LTDescr + + + + + + + + +
    +

    + Defined in + LTDescr.cs:2142 +

    + + + +
    + +
    +

    While tweening along a curve, set this property to true, to be perpendicalur to the path it is moving upon

    + +
    + +
    +

    Parameters:

    + +
      +
    • + doesOrient:bool + Bool + + +
      +

      whether the gameobject will orient to the path it is animating along

      + +
      + +
    • +
    +
    + +
    +

    Returns:

    + +
    + LTDescr: +

    LTDescr an object that distinguishes the tween

    + +
    +
    + +
    +

    Example:

    + +
    +

    LeanTween.move( ltLogo, path, 1.0f ).setEase(LeanTweenType.easeOutQuad).setOrientToPath2d(true).setAxis(Vector3.forward);

    + +
    +
    +
    +
    +

    setOvershoot

    + +
    + (
      +
    • + overshoot:float +
    • +
    ) +
    + + + LTDescr + + + + + + + + +
    +

    + Defined in + LTDescr.cs:1650 +

    + + + +
    + +
    +

    Set how far past a tween will overshoot for certain ease types (compatible: easeInBack, easeInOutBack, easeOutBack, easeOutElastic, easeInElastic, easeInOutElastic).

    + +
    + +
    +

    Parameters:

    + +
      +
    • + overshoot:float + Float + + +
      +

      how far past the destination it will go before settling in

      + +
      + +
    • +
    +
    + +
    +

    Returns:

    + +
    + LTDescr: +

    LTDescr an object that distinguishes the tween

    + +
    +
    + +
    +

    Example:

    + +
    +

    LeanTween.moveX(gameObject, 5f, 2.0f ).setEase( LeanTweenType.easeOutBack ).setOvershoot(2f);

    + +
    +
    +
    +
    +

    setPassed

    + +
    + (
      +
    • + passedTime:float +
    • +
    ) +
    + + + LTDescr + + + + + + + + +
    +

    + Defined in + LTDescr.cs:1770 +

    + + + +
    + +
    +

    Set the point of time the tween will start in

    + +
    + +
    +

    Parameters:

    + +
      +
    • + passedTime:float + Float + + +
      +

      the length of time in seconds the tween will start in

      + +
      + +
    • +
    +
    + +
    +

    Returns:

    + +
    + LTDescr: +

    LTDescr an object that distinguishes the tween

    + +
    +
    + +
    +

    Example:

    + +
    +

    int tweenId = LeanTween.moveX(gameObject, 5f, 2.0f ).id;
    + // Later
    + LTDescr descr = description( tweenId );
    + descr.setPassed( 1f );

    + +
    +
    +
    +
    +

    setPeriod

    + +
    + (
      +
    • + period:float +
    • +
    ) +
    + + + LTDescr + + + + + + + + +
    +

    + Defined in + LTDescr.cs:1663 +

    + + + +
    + +
    +

    Set how short the iterations are for certain ease types (compatible: easeOutElastic, easeInElastic, easeInOutElastic).

    + +
    + +
    +

    Parameters:

    + +
      +
    • + period:float + Float + + +
      +

      how short the iterations are that the tween will animate at (default 0.3f)

      + +
      + +
    • +
    +
    + +
    +

    Returns:

    + +
    + LTDescr: +

    LTDescr an object that distinguishes the tween

    + +
    +
    + +
    +

    Example:

    + +
    +

    LeanTween.moveX(gameObject, 5f, 2.0f ).setEase( LeanTweenType.easeOutElastic ).setPeriod(0.3f);

    + +
    +
    +
    +
    +

    setPoint

    + +
    + (
      +
    • + point:Vector3 +
    • +
    ) +
    + + + LTDescr + + + + + + + + +
    +

    + Defined in + LTDescr.cs:2175 +

    + + + +
    + +
    +

    Set the point at which the GameObject will be rotated around

    + +
    + +
    +

    Parameters:

    + +
      +
    • + point:Vector3 + Vector3 + + +
      +

      point at which you want the object to rotate around (local space)

      + +
      + +
    • +
    +
    + +
    +

    Returns:

    + +
    + LTDescr: +

    LTDescr an object that distinguishes the tween

    + +
    +
    + +
    +

    Example:

    + +
    +

    LeanTween.rotateAround( cube, Vector3.up, 360.0f, 1.0f ) .setPoint( new Vector3(1f,0f,0f) ) .setEase( LeanTweenType.easeInOutBounce );

    + +
    +
    +
    +
    +

    setRecursive

    + +
    + (
      +
    • + useRecursion:bool +
    • +
    ) +
    + + + LTDescr + + + + + + + + +
    +

    + Defined in + LTDescr.cs:2292 +

    + + + +
    + +
    +

    Set whether or not the tween will recursively effect an objects children in the hierarchy

    + +
    + +
    +

    Parameters:

    + +
      +
    • + useRecursion:bool + Bool + + +
      +

      whether the tween will recursively effect an objects children in the hierarchy

      + +
      + +
    • +
    +
    + +
    +

    Returns:

    + +
    + LTDescr: +

    LTDescr an object that distinguishes the tween

    + +
    +
    + +
    +

    Example:

    + +
    +

    LeanTween.alpha(gameObject, 0f, 1f).setRecursive(true);

    + +
    +
    +
    +
    +

    setRepeat

    + +
    + (
      +
    • + repeatNum:int +
    • +
    ) +
    + + + LTDescr + + + + + + + + +
    +

    + Defined in + LTDescr.cs:1819 +

    + + + +
    + +
    +

    Set the tween to repeat a number of times.

    + +
    + +
    +

    Parameters:

    + +
      +
    • + repeatNum:int + Int + + +
      +

      the number of times to repeat the tween. -1 to repeat infinite times

      + +
      + +
    • +
    +
    + +
    +

    Returns:

    + +
    + LTDescr: +

    LTDescr an object that distinguishes the tween

    + +
    +
    + +
    +

    Example:

    + +
    +

    LeanTween.moveX(gameObject, 5f, 2.0f ).setRepeat( 10 ).setLoopPingPong();

    + +
    +
    +
    +
    +

    setScale

    + +
    + (
      +
    • + scale:float +
    • +
    ) +
    + + + LTDescr + + + + + + + + +
    +

    + Defined in + LTDescr.cs:1676 +

    + + + +
    + +
    +

    Set how large the effect is for certain ease types (compatible: punch, shake, animation curves).

    + +
    + +
    +

    Parameters:

    + +
      +
    • + scale:float + Float + + +
      +

      how much the ease will be multiplied by (default 1f)

      + +
      + +
    • +
    +
    + +
    +

    Returns:

    + +
    + LTDescr: +

    LTDescr an object that distinguishes the tween

    + +
    +
    + +
    +

    Example:

    + +
    +

    LeanTween.moveX(gameObject, 5f, 2.0f ).setEase( LeanTweenType.punch ).setScale(2f);

    + +
    +
    +
    +
    +

    setSpeed

    + +
    + (
      +
    • + speed:float +
    • +
    ) +
    + + + LTDescr + + + + + + + + +
    +

    + Defined in + LTDescr.cs:1804 +

    + + + +
    + +
    +

    Set the finish time of the tween

    + +
    + +
    +

    Parameters:

    + +
      +
    • + speed:float + Float + + +
      +

      the speed in unity units per second you wish the object to travel (overrides the given time)

      + +
      + +
    • +
    +
    + +
    +

    Returns:

    + +
    + LTDescr: +

    LTDescr an object that distinguishes the tween

    + +
    +
    + +
    +

    Example:

    + +
    +

    LeanTween.moveLocalZ( gameObject, 10f, 1f).setSpeed(0.2f) // the given time is ignored when speed is set

    + +
    +
    +
    +
    +

    setTime

    + +
    + (
      +
    • + finishTime:float +
    • +
    ) +
    + + + LTDescr + + + + + + + + +
    +

    + Defined in + LTDescr.cs:1786 +

    + + + +
    + +
    +

    Set the finish time of the tween

    + +
    + +
    +

    Parameters:

    + +
      +
    • + finishTime:float + Float + + +
      +

      the length of time in seconds you wish the tween to complete in

      + +
      + +
    • +
    +
    + +
    +

    Returns:

    + +
    + LTDescr: +

    LTDescr an object that distinguishes the tween

    + +
    +
    + +
    +

    Example:

    + +
    +

    int tweenId = LeanTween.moveX(gameObject, 5f, 2.0f ).id;
    + // Later
    + LTDescr descr = description( tweenId );
    + descr.setTime( 1f );

    + +
    +
    +
    +
    +

    setTo

    + +
    + (
      +
    • + to:Vector3 +
    • +
    ) +
    + + + LTDescr + + + + + + + + +
    +

    + Defined in + LTDescr.cs:1704 +

    + + + +
    + +
    +

    Set the end that the GameObject is tweening towards

    + +
    + +
    +

    Parameters:

    + +
      +
    • + to:Vector3 + Vector3 + + +
      +

      point at which you want the tween to reach

      + +
      + +
    • +
    +
    + +
    +

    Returns:

    + +
    + LTDescr: +

    LTDescr an object that distinguishes the tween

    + +
    +
    + +
    +

    Example:

    + +
    +

    LTDescr descr = LeanTween.move( cube, Vector3.up, new Vector3(1f,3f,0f), 1.0f ).setEase( LeanTweenType.easeInOutBounce );
    + // Later your want to change your destination or your destiation is constantly moving
    + descr.setTo( new Vector3(5f,10f,3f) );

    + +
    +
    +
    +
    +

    setUseFrames

    + +
    + (
      +
    • + useFrames:bool +
    • +
    ) +
    + + + LTDescr + + + + + + + + +
    +

    + Defined in + LTDescr.cs:1863 +

    + + + +
    + +
    +

    Use frames when tweening an object, when you don't want the animation to be time-frame independent...

    + +
    + +
    +

    Parameters:

    + +
      +
    • + useFrames:bool + Bool + + +
      +

      whether to use estimated time or not

      + +
      + +
    • +
    +
    + +
    +

    Returns:

    + +
    + LTDescr: +

    LTDescr an object that distinguishes the tween

    + +
    +
    + +
    +

    Example:

    + +
    +

    LeanTween.moveX(gameObject, 5f, 2.0f ).setRepeat( 2 ).setUseFrames( true );

    + +
    +
    +
    +
    +

    updateNow

    + + () + + + LTDescr + + + + + + + + +
    +

    + Defined in + LTDescr.cs:948 +

    + + + +
    + +
    +

    If you need a tween to happen immediately instead of waiting for the next Update call, you can force it with this method

    + +
    + + +
    +

    Returns:

    + +
    + LTDescr: +

    LTDescr an object that distinguishes the tween

    + +
    +
    + +
    +

    Example:

    + +
    +

    LeanTween.moveX(gameObject, 5f, 0f ).updateNow();

    + +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + diff --git a/Assets/LeanTween/Documentation/classes/LTDescr.html.meta b/Assets/LeanTween/Documentation/classes/LTDescr.html.meta new file mode 100644 index 0000000..bbd5916 --- /dev/null +++ b/Assets/LeanTween/Documentation/classes/LTDescr.html.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 728d9c45462a9409f8b8be1447f59e94 diff --git a/Assets/LeanTween/Documentation/classes/LTEvent.html b/Assets/LeanTween/Documentation/classes/LTEvent.html new file mode 100644 index 0000000..7b10d11 --- /dev/null +++ b/Assets/LeanTween/Documentation/classes/LTEvent.html @@ -0,0 +1,239 @@ + + + + + LTEvent + + + + + + + + + + + +
    +
    +
    +

    - Developed by Dented Pixel
    +
    +
    + API Docs for: LeanTween 2.50
    + + + + + +
    +

    Support LeanTween!

    + +
    +
    + + + + + + + +
    +
    +
    + +

    Maintaining and adding new features takes time, your support is appreciated.

    +
    +
    + + +
    +
    + Show: + + + + + + + +
    + +
    +
    +
    +

    LTEvent Class

    +
    + + +
    + Defined in: LeanTween.cs:3835 +
    + + +
    + + +
    +

    Object that describes the event to an event listener

    + +
    + +
    +

    Constructor

    +
    +

    LTEvent

    + +
    + (
      +
    • + data:object +
    • +
    ) +
    + + + + + + + + +
    +

    + Defined in + LeanTween.cs:3835 +

    + + + +
    + +
    + +
    + +
    +

    Parameters:

    + +
      +
    • + data:object + Object + + +
      +

      Data that has been passed from the dispatchEvent method

      + +
      + +
    • +
    +
    + + +
    +
    + +
    + + +
    +
    +

    Item Index

    + + + + +
    + + + + +
    +
    +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/Assets/LeanTween/Documentation/classes/LTEvent.html.meta b/Assets/LeanTween/Documentation/classes/LTEvent.html.meta new file mode 100644 index 0000000..7dd3032 --- /dev/null +++ b/Assets/LeanTween/Documentation/classes/LTEvent.html.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 2b8203605b4454b009a6fc1e269a8d50 diff --git a/Assets/LeanTween/Documentation/classes/LTRect.html b/Assets/LeanTween/Documentation/classes/LTRect.html new file mode 100644 index 0000000..65d4b00 --- /dev/null +++ b/Assets/LeanTween/Documentation/classes/LTRect.html @@ -0,0 +1,361 @@ + + + + + LTRect + + + + + + + + + + + +
    +
    +
    +

    - Developed by Dented Pixel
    +
    +
    + API Docs for: LeanTween 2.50
    + + + + + +
    +

    Support LeanTween!

    + +
    +
    + + + + + + + +
    +
    +
    + +

    Maintaining and adding new features takes time, your support is appreciated.

    +
    +
    + + +
    +
    + Show: + + + + + + + +
    + +
    +
    +
    +

    LTRect Class

    +
    + + +
    + Defined in: LeanTween.cs:3593 +
    + + +
    + + +
    +

    Animate GUI Elements by creating this object and passing the *.rect variable to the GUI method

    + Example Javascript:
    var bRect:LTRect = new LTRect( 0, 0, 100, 50 );
    + LeanTween.scale( bRect, Vector2(bRect.rect.width, bRect.rect.height) * 1.3, 0.25 );
    + function OnGUI(){
    +   if(GUI.Button(bRect.rect, "Scale")){ }
    + }
    +
    + Example C#:
    + LTRect bRect = new LTRect( 0f, 0f, 100f, 50f );
    + LeanTween.scale( bRect, new Vector2(150f,75f), 0.25f );
    + void OnGUI(){
    +   if(GUI.Button(bRect.rect, "Scale")){ }
    + }

    + +
    + +
    +

    Constructor

    +
    +

    LTRect

    + +
    + (
      +
    • + x:float +
    • +
    • + y:float +
    • +
    • + width:float +
    • +
    • + height:float +
    • +
    • + alpha:float +
    • +
    • + rotation:float +
    • +
    ) +
    + + + + + + + + +
    +

    + Defined in + LeanTween.cs:3593 +

    + + + +
    + +
    + +
    + +
    +

    Parameters:

    + +
      +
    • + x:float + Float + + +
      +

      X location

      + +
      + +
    • +
    • + y:float + Float + + +
      +

      Y location

      + +
      + +
    • +
    • + width:float + Float + + +
      +

      Width

      + +
      + +
    • +
    • + height:float + Float + + +
      +

      Height

      + +
      + +
    • +
    • + alpha:float + Float + + +
      +

      (Optional) initial alpha amount (0-1)

      + +
      + +
    • +
    • + rotation:float + Float + + +
      +

      (Optional) initial rotation in degrees (0-360)

      + +
      + +
    • +
    +
    + + +
    +
    + +
    + + +
    +
    +

    Item Index

    + + +
    +

    Properties

    + + +
    + + +
    + + +
    +

    Properties

    + +
    +

    rect

    + Rect rect:Rect Rect object that controls the positioning and size + + + + + +
    +

    + Defined in + LeanTween.cs:3620 +

    + + +
    + +
    +

    Pass this value to the GUI Methods

    + +
    + + + +
    +
    + + +
    +
    +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/Assets/LeanTween/Documentation/classes/LTRect.html.meta b/Assets/LeanTween/Documentation/classes/LTRect.html.meta new file mode 100644 index 0000000..feec8d2 --- /dev/null +++ b/Assets/LeanTween/Documentation/classes/LTRect.html.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: b7ee5979c5f5f428d9c8735d84e09421 diff --git a/Assets/LeanTween/Documentation/classes/LTSeq.html b/Assets/LeanTween/Documentation/classes/LTSeq.html new file mode 100644 index 0000000..2c65e03 --- /dev/null +++ b/Assets/LeanTween/Documentation/classes/LTSeq.html @@ -0,0 +1,536 @@ + + + + + LTSeq + + + + + + + + + + + +
    +
    +
    +

    - Developed by Dented Pixel
    +
    +
    + API Docs for: LeanTween 2.50
    + + + + + +
    +

    Support LeanTween!

    + +
    +
    + + + + + + + +
    +
    +
    + +

    Maintaining and adding new features takes time, your support is appreciated.

    +
    +
    + + +
    +
    + Show: + + + + + + + +
    + +
    +
    +
    +

    LTSeq Class

    +
    + + +
    + Defined in: LTSeq.cs:5 +
    + + +
    + + +
    +

    Internal Representation of a Sequence
    +
    +   

    Example:

    + var seq = LeanTween.sequence();
    + seq.append(1f); // delay everything one second
    + seq.append( () => { // fire an event before start
    +  Debug.Log("I have started");
    + });
    + seq.append( LeanTween.move(cube1, Vector3.one * 10f, 1f) ); // do a tween
    + seq.append( (object obj) => { // fire event after tween
    +  var dict = obj as Dictionary<string,string>;
    +  Debug.Log("We are done now obj value:"+dict["hi"]);
    + }, new Dictionary<string,string>(){ {"hi","sup"} } );

    + +
    + +
    +

    Constructor

    +
    +

    LTSeq

    + + () + + + + + + + + +
    +

    + Defined in + LTSeq.cs:5 +

    + + + +
    + +
    + +
    + + + +
    +
    + +
    + + +
    +
    +

    Item Index

    + +
    +

    Methods

    + + +
    + + + +
    + +
    +

    Methods

    + +
    +

    add (method(object))

    + +
    + (
      +
    • + callback:System.Action +
    • +
    ) +
    + + + LTSeq + + + + + + + + +
    +

    + Defined in + LTSeq.cs:130 +

    + + + +
    + +
    +

    Add a time delay to the sequence

    + +
    + +
    +

    Parameters:

    + +
      +
    • + callback:System.Action + System.Action + + +
      +

      method you want to be called

      + +
      + +
    • +
    +
    + +
    +

    Returns:

    + +
    + LTSeq: +

    LTSeq an object that you can add tweens, methods and time on to

    + +
    +
    + +
    +

    Example:

    + +
    +

    var seq = LeanTween.sequence();
    + seq.append( () => { // fire an event before start
    +  Debug.Log("I have started");
    + });
    + seq.append( LeanTween.move(cube1, Vector3.one * 10f, 1f) ); // do a tween
    + seq.append((object obj) => { // fire event after tween +  var dict = obj as Dictionary<string,string>; +  Debug.Log("We are done now obj value:"+dict["hi"]); +  }, new Dictionary<string,string>(){ {"hi","sup"} } );

    + +
    +
    +
    +
    +

    add (tween)

    + + () + + + LTSeq + + + + + + + + +
    +

    + Defined in + LTSeq.cs:164 +

    + + + +
    + +
    +

    Retrieve a sequencer object where you can easily chain together tweens and methods one after another

    + +
    + + +
    +

    Returns:

    + +
    + LTSeq: +

    LTSeq an object that you can add tweens, methods and time on to

    + +
    +
    + +
    +

    Example:

    + +
    +

    var seq = LeanTween.sequence();
    + seq.append( LeanTween.move(cube1, Vector3.one * 10f, 1f) ); // do a move tween
    + seq.append( LeanTween.rotateAround( avatar1, Vector3.forward, 360f, 1f ) ); // then do a rotate tween

    + +
    +
    +
    +
    +

    append (delay)

    + +
    + (
      +
    • + delay:float +
    • +
    ) +
    + + + LTSeq + + + + + + + + +
    +

    + Defined in + LTSeq.cs:94 +

    + + + +
    + +
    +

    Add a time delay to the sequence

    + +
    + +
    +

    Parameters:

    + +
      +
    • + delay:float + Float + + +
      +

      amount of time to add to the sequence

      + +
      + +
    • +
    +
    + +
    +

    Returns:

    + +
    + LTSeq: +

    LTDescr an object that distinguishes the tween + var seq = LeanTween.sequence();
    + seq.append(1f); // delay everything one second
    + seq.append( LeanTween.move(cube1, Vector3.one * 10f, 1f) ); // do a tween

    + +
    +
    + +
    +
    +

    append (method)

    + +
    + (
      +
    • + callback:System.Action +
    • +
    ) +
    + + + LTSeq + + + + + + + + +
    +

    + Defined in + LTSeq.cs:109 +

    + + + +
    + +
    +

    Add a time delay to the sequence

    + +
    + +
    +

    Parameters:

    + +
      +
    • + callback:System.Action + System.Action + + +
      +

      method you want to be called

      + +
      + +
    • +
    +
    + +
    +

    Returns:

    + +
    + LTSeq: +

    LTSeq an object that you can add tweens, methods and time on to

    + +
    +
    + +
    +

    Example:

    + +
    +

    var seq = LeanTween.sequence();
    + seq.append( () => { // fire an event before start
    +  Debug.Log("I have started");
    + });
    + seq.append( LeanTween.move(cube1, Vector3.one * 10f, 1f) ); // do a tween
    + seq.append( () => { // fire event after tween
    +  Debug.Log("We are done now");
    + });;

    + +
    +
    +
    +
    + + + +
    +
    +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/Assets/LeanTween/Documentation/classes/LTSeq.html.meta b/Assets/LeanTween/Documentation/classes/LTSeq.html.meta new file mode 100644 index 0000000..5581cf4 --- /dev/null +++ b/Assets/LeanTween/Documentation/classes/LTSeq.html.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c2208e3213ef84ee28cb1745e7eb9b26 +timeCreated: 1488755637 +licenseType: Store +TextScriptImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/LeanTween/Documentation/classes/LTSpline.html b/Assets/LeanTween/Documentation/classes/LTSpline.html new file mode 100644 index 0000000..3d47800 --- /dev/null +++ b/Assets/LeanTween/Documentation/classes/LTSpline.html @@ -0,0 +1,798 @@ + + + + + LTSpline + + + + + + + + + + + +
    +
    +
    +

    - Developed by Dented Pixel
    +
    +
    + API Docs for: LeanTween 2.50
    + + + + + +
    +

    Support LeanTween!

    + +
    +
    + + + + + + + +
    +
    +
    + +

    Maintaining and adding new features takes time, your support is appreciated.

    +
    +
    + + +
    +
    + Show: + + + + + + + +
    + +
    +
    +
    +

    LTSpline Class

    +
    + + +
    + Defined in: LeanTween.cs:3155 +
    + + +
    + + +
    +

    Animate along a set of points that need to be in the format: controlPoint, point1, point2.... pointLast, endControlPoint

    Move a GameObject to a certain location

    + +
    + +
    +

    Constructor

    +
    +

    LTSpline

    + +
    + (
      +
    • + pts +
    • +
    ) +
    + + + + + + + + +
    +

    + Defined in + LeanTween.cs:3155 +

    + + + +
    + +
    + +
    + +
    +

    Parameters:

    + +
      +
    • + pts + Vector3 Array + + +
      +

      A set of points that define the points the path will pass through (starting with starting control point, and ending with a control point)
      + Note: The first and last item just define the angle of the end points, they are not actually used in the spline path itself. If you do not care about the angle you can jus set the first two items and last two items as the same value.

      + +
      + +
    • +
    +
    + + +
    +

    Example:

    + +
    +

    LTSpline ltSpline = new LTSpline( new Vector3[] { new Vector3(0f,0f,0f),new Vector3(0f,0f,0f), new Vector3(0f,0.5f,0f), new Vector3(1f,1f,0f), new Vector3(1f,1f,0f)} );

    + LeanTween.moveSpline(lt, ltSpline.vec3, 4.0f).setOrientToPath(true).setDelay(1f).setEase(LeanTweenType.easeInOutQuad); // animate
    + Vector3 pt = ltSpline.point( 0.6f ); // retrieve a point along the path

    + +
    +
    +
    +
    + +
    + + +
    +
    +

    Item Index

    + +
    +

    Methods

    + + +
    + + + + +
    + +
    +

    Methods

    + +
    +

    place

    + +
    + (
      +
    • + transform:Transform +
    • +
    • + ratio:float +
    • +
    ) +
    + + + + + + + + +
    +

    + Defined in + LeanTween.cs:3373 +

    + + + +
    + +
    +

    Place an object along a certain point on the path (facing the direction perpendicular to the path)

    Move a GameObject to a certain location

    + +
    + +
    +

    Parameters:

    + +
      +
    • + transform:Transform + Transform + + +
      +

      the transform of the object you wish to place along the path

      + +
      + +
    • +
    • + ratio:float + Float + + +
      +

      ratio of the point along the path you wish to receive (0-1)

      + +
      + +
    • +
    +
    + + +
    +

    Example:

    + +
    +

    ltPath.place( transform, 0.6f );

    + +
    +
    +
    +
    +

    place

    + +
    + (
      +
    • + transform:Transform +
    • +
    • + ratio:float +
    • +
    • + rotation:Vector3 +
    • +
    ) +
    + + + + + + + + +
    +

    + Defined in + LeanTween.cs:3386 +

    + + + +
    + +
    +

    Place an object along a certain point on the path, with it facing a certain direction perpendicular to the path

    Move a GameObject to a certain location

    + +
    + +
    +

    Parameters:

    + +
      +
    • + transform:Transform + Transform + + +
      +

      the transform of the object you wish to place along the path

      + +
      + +
    • +
    • + ratio:float + Float + + +
      +

      ratio of the point along the path you wish to receive (0-1)

      + +
      + +
    • +
    • + rotation:Vector3 + Vector3 + + +
      +

      the direction in which to place the transform ex: Vector3.up

      + +
      + +
    • +
    +
    + + +
    +

    Example:

    + +
    +

    ltPath.place( transform, 0.6f, Vector3.left );

    + +
    +
    +
    +
    +

    placeLocal

    + +
    + (
      +
    • + transform:Transform +
    • +
    • + ratio:float +
    • +
    ) +
    + + + + + + + + +
    +

    + Defined in + LeanTween.cs:3405 +

    + + + +
    + +
    +

    Place an object along a certain point on the path (facing the direction perpendicular to the path) - Local Space, not world-space

    Move a GameObject to a certain location

    + +
    + +
    +

    Parameters:

    + +
      +
    • + transform:Transform + Transform + + +
      +

      the transform of the object you wish to place along the path

      + +
      + +
    • +
    • + ratio:float + Float + + +
      +

      ratio of the point along the path you wish to receive (0-1)

      + +
      + +
    • +
    +
    + + +
    +

    Example:

    + +
    +

    ltPath.placeLocal( transform, 0.6f );

    + +
    +
    +
    +
    +

    placeLocal

    + +
    + (
      +
    • + transform:Transform +
    • +
    • + ratio:float +
    • +
    • + rotation:Vector3 +
    • +
    ) +
    + + + + + + + + +
    +

    + Defined in + LeanTween.cs:3418 +

    + + + +
    + +
    +

    Place an object along a certain point on the path, with it facing a certain direction perpendicular to the path - Local Space, not world-space

    Move a GameObject to a certain location

    + +
    + +
    +

    Parameters:

    + +
      +
    • + transform:Transform + Transform + + +
      +

      the transform of the object you wish to place along the path

      + +
      + +
    • +
    • + ratio:float + Float + + +
      +

      ratio of the point along the path you wish to receive (0-1)

      + +
      + +
    • +
    • + rotation:Vector3 + Vector3 + + +
      +

      the direction in which to place the transform ex: Vector3.up

      + +
      + +
    • +
    +
    + + +
    +

    Example:

    + +
    +

    ltPath.placeLocal( transform, 0.6f, Vector3.left );

    + +
    +
    +
    +
    +

    point

    + +
    + (
      +
    • + ratio:float +
    • +
    ) +
    + + + Vector3 + + + + + + + + +
    +

    + Defined in + LeanTween.cs:3332 +

    + + + +
    + +
    +

    Retrieve a point along a path

    Move a GameObject to a certain location

    + +
    + +
    +

    Parameters:

    + +
      +
    • + ratio:float + Float + + +
      +

      ratio of the point along the path you wish to receive (0-1)

      + +
      + +
    • +
    +
    + +
    +

    Returns:

    + +
    + Vector3: +

    Vector3 position of the point along the path

    + +
    +
    + +
    +

    Example:

    + +
    +

    transform.position = ltSpline.point( 0.6f );

    + +
    +
    +
    +
    +

    ratioAtPoint

    + +
    + (
      +
    • + point:Vector3 +
    • +
    ) +
    + + + Float + + + + + + + + +
    +

    + Defined in + LeanTween.cs:3308 +

    + + + +
    + +
    +

    Retrieve a point along a path

    Move a GameObject to a certain location

    + +
    + +
    +

    Parameters:

    + +
      +
    • + point:Vector3 + Vector3 + + +
      +

      given a current location it makes the best approximiation of where it is along the path ratio-wise (0-1)

      + +
      + +
    • +
    +
    + +
    +

    Returns:

    + +
    + Float: +

    float of ratio along the path

    + +
    +
    + +
    +

    Example:

    + +
    +

    ratioIter = ltSpline.ratioAtPoint( transform.position );

    + +
    +
    +
    +
    + +
    +

    Properties

    + +
    +

    distance distance of the spline (in unity units)

    + Float + + + + + +
    +

    + Defined in + LeanTween.cs:3171 +

    + + +
    + +
    + +
    + + + +
    +
    + + +
    +
    +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/Assets/LeanTween/Documentation/classes/LTSpline.html.meta b/Assets/LeanTween/Documentation/classes/LTSpline.html.meta new file mode 100644 index 0000000..49235af --- /dev/null +++ b/Assets/LeanTween/Documentation/classes/LTSpline.html.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 1adcbb4b77b884a4fb75bde98799d037 diff --git a/Assets/LeanTween/Documentation/classes/LeanAudio.html b/Assets/LeanTween/Documentation/classes/LeanAudio.html new file mode 100644 index 0000000..3be0f1e --- /dev/null +++ b/Assets/LeanTween/Documentation/classes/LeanAudio.html @@ -0,0 +1,334 @@ + + + + + LeanAudio + + + + + + + + + + + +
    +
    +
    +

    - Developed by Dented Pixel
    +
    +
    + API Docs for: LeanTween 2.50
    + + + + + +
    +

    Support LeanTween!

    + +
    +
    + + + + + + + +
    +
    +
    + +

    Maintaining and adding new features takes time, your support is appreciated.

    +
    +
    + + +
    +
    + Show: + + + + + + + +
    + +
    +
    +
    +

    LeanAudio Class

    +
    + + +
    + Defined in: LeanAudio.cs:30 +
    + + +
    + + +
    +

    Create Audio dynamically and easily playback

    + +
    + +
    +

    Constructor

    +
    +

    LeanAudio

    + + () + + + + + + + + +
    +

    + Defined in + LeanAudio.cs:30 +

    + + + +
    + +
    + +
    + + + +
    +
    + +
    + + +
    +
    +

    Item Index

    + +
    +

    Methods

    + + +
    + + + +
    + +
    +

    Methods

    + +
    +

    createAudio

    + +
    + (
      +
    • + volumeCurve:AnimationCurve +
    • +
    • + frequencyCurve:AnimationCurve +
    • +
    • + options:LeanAudioOptions +
    • +
    ) +
    + + + AudioClip + + + + + + + + +
    +

    + Defined in + LeanAudio.cs:65 +

    + + + +
    + +
    +

    Create dynamic audio from a set of Animation Curves and other options.

    + +
    + +
    +

    Parameters:

    + +
      +
    • + volumeCurve:AnimationCurve + AnimationCurve + + +
      +

      describing the shape of the audios volume (from 0-1). The length of the audio is dicated by the end value here.

      + +
      + +
    • +
    • + frequencyCurve:AnimationCurve + AnimationCurve + + +
      +

      describing the width of the oscillations between the sound waves in seconds. Large numbers mean a lower note, while higher numbers mean a tighter frequency and therefor a higher note. Values are usually between 0.01 and 0.000001 (or smaller)

      + +
      + +
    • +
    • + options:LeanAudioOptions + LeanAudioOptions + + +
      +

      You can pass any other values in here like vibrato or the frequency you would like the sound to be encoded at. See LeanAudioOptions for more details.

      + +
      + +
    • +
    +
    + +
    +

    Returns:

    + +
    + AudioClip: +

    AudioClip of the procedurally generated audio

    + +
    +
    + +
    +

    Example:

    + +
    +

    AnimationCurve volumeCurve = new AnimationCurve( new Keyframe(0f, 1f, 0f, -1f), new Keyframe(1f, 0f, -1f, 0f));
    + AnimationCurve frequencyCurve = new AnimationCurve( new Keyframe(0f, 0.003f, 0f, 0f), new Keyframe(1f, 0.003f, 0f, 0f));
    + AudioClip audioClip = LeanAudio.createAudio(volumeCurve, frequencyCurve, LeanAudio.options().setVibrato( new Vector3[]{ new Vector3(0.32f,0f,0f)} ));

    + +
    +
    +
    +
    + + + +
    +
    +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/Assets/LeanTween/Documentation/classes/LeanAudio.html.meta b/Assets/LeanTween/Documentation/classes/LeanAudio.html.meta new file mode 100644 index 0000000..c466510 --- /dev/null +++ b/Assets/LeanTween/Documentation/classes/LeanAudio.html.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: ddb683830b7524ebb8b302202c645c65 diff --git a/Assets/LeanTween/Documentation/classes/LeanAudioOptions.html b/Assets/LeanTween/Documentation/classes/LeanAudioOptions.html new file mode 100644 index 0000000..55c279c --- /dev/null +++ b/Assets/LeanTween/Documentation/classes/LeanAudioOptions.html @@ -0,0 +1,385 @@ + + + + + LeanAudioOptions + + + + + + + + + + + +
    +
    +
    +

    - Developed by Dented Pixel
    +
    +
    + API Docs for: LeanTween 2.50
    + + + + + +
    +

    Support LeanTween!

    + +
    +
    + + + + + + + +
    +
    +
    + +

    Maintaining and adding new features takes time, your support is appreciated.

    +
    +
    + + +
    +
    + Show: + + + + + + + +
    + +
    +
    +
    +

    LeanAudioOptions Class

    +
    + + +
    + Defined in: LeanAudio.cs:316 +
    + + +
    + + +
    +

    Pass in options to LeanAudio

    + +
    + +
    +

    Constructor

    +
    +

    LeanAudioOptions

    + + () + + + + + + + + +
    +

    + Defined in + LeanAudio.cs:316 +

    + + + +
    + +
    + +
    + + + +
    +
    + +
    + + +
    +
    +

    Item Index

    + +
    +

    Methods

    + + +
    + + + +
    + +
    +

    Methods

    + +
    +

    setFrequency

    + +
    + (
      +
    • + frequencyRate:int +
    • +
    ) +
    + + + LeanAudioOptions + + + + + + + + +
    +

    + Defined in + LeanAudio.cs:343 +

    + + + +
    + +
    +

    Set the frequency for the audio is encoded. 44100 is CD quality, but you can usually get away with much lower (or use a lower amount to get a more 8-bit sound).

    + +
    + +
    +

    Parameters:

    + +
      +
    • + frequencyRate:int + Int + + +
      +

      of the frequency you wish to encode the AudioClip at

      + +
      + +
    • +
    +
    + +
    +

    Returns:

    + +
    + LeanAudioOptions: +

    LeanAudioOptions describing optional values

    + +
    +
    + +
    +

    Example:

    + +
    +

    AnimationCurve volumeCurve = new AnimationCurve( new Keyframe(0f, 1f, 0f, -1f), new Keyframe(1f, 0f, -1f, 0f));
    + AnimationCurve frequencyCurve = new AnimationCurve( new Keyframe(0f, 0.003f, 0f, 0f), new Keyframe(1f, 0.003f, 0f, 0f));
    + AudioClip audioClip = LeanAudio.createAudio(volumeCurve, frequencyCurve, LeanAudio.options().setVibrato( new Vector3[]{ new Vector3(0.32f,0f,0f)} ).setFrequency(12100) );

    + +
    +
    +
    +
    +

    setVibrato

    + +
    + (
      +
    • + vibratoArray:Vector3[] +
    • +
    ) +
    + + + LeanAudioOptions + + + + + + + + +
    +

    + Defined in + LeanAudio.cs:359 +

    + + + +
    + +
    +

    Set details about the shape of the curve by adding vibrato modulations through it (alters the peak values giving it a wah-wah effect). You can add as many as you want to sculpt out more detail in the sound wave.

    + +
    + +
    +

    Parameters:

    + +
      +
    • + vibratoArray:Vector3[] + Vector3 + + +
      +

      The first value is the period in seconds that you wish to have the vibrato wave fluctuate at. The second value is the minimum height you wish the vibrato wave to dip down to (default is zero). The third is reserved for future effects.

      + +
      + +
    • +
    +
    + +
    +

    Returns:

    + +
    + LeanAudioOptions: +

    LeanAudioOptions describing optional values

    + +
    +
    + +
    +

    Example:

    + +
    +

    AnimationCurve volumeCurve = new AnimationCurve( new Keyframe(0f, 1f, 0f, -1f), new Keyframe(1f, 0f, -1f, 0f));
    + AnimationCurve frequencyCurve = new AnimationCurve( new Keyframe(0f, 0.003f, 0f, 0f), new Keyframe(1f, 0.003f, 0f, 0f));
    + AudioClip audioClip = LeanAudio.createAudio(volumeCurve, frequencyCurve, LeanAudio.options().setVibrato( new Vector3[]{ new Vector3(0.32f,0.3f,0f)} ).setFrequency(12100) );

    + +
    +
    +
    +
    + + + +
    +
    +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/Assets/LeanTween/Documentation/classes/LeanAudioOptions.html.meta b/Assets/LeanTween/Documentation/classes/LeanAudioOptions.html.meta new file mode 100644 index 0000000..fcb8d15 --- /dev/null +++ b/Assets/LeanTween/Documentation/classes/LeanAudioOptions.html.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: ff952359765254c20b97874f5949c0d7 diff --git a/Assets/LeanTween/Documentation/classes/LeanSmooth.html b/Assets/LeanTween/Documentation/classes/LeanSmooth.html new file mode 100644 index 0000000..750d2af --- /dev/null +++ b/Assets/LeanTween/Documentation/classes/LeanSmooth.html @@ -0,0 +1,1960 @@ + + + + + LeanSmooth + + + + + + + + + + + +
    +
    +
    +

    - Developed by Dented Pixel
    +
    +
    + API Docs for: LeanTween 2.50
    + + + + + +
    +

    Support LeanTween!

    + +
    +
    + + + + + + + +
    +
    +
    + +

    Maintaining and adding new features takes time, your support is appreciated.

    +
    +
    + + +
    +
    + Show: + + + + + + + +
    + +
    +
    +
    +

    LeanSmooth Class

    +
    + + +
    + Defined in: LeanSmooth.cs:5 +
    + + +
    + + +
    +

    Use these smooth methods to move one value towards another

    + Example:
    fromY = LeanSmooth.spring(fromY, followArrow.localPosition.y, ref velocityY, 1.1f);
    + fromVec3 = LeanSmooth.damp(fromVec3, dude5Title.localPosition, ref velocityVec3, 1.1f);
    + fromColor = LeanSmooth.damp(fromColor, dude5Title.GetComponent().material.color, ref velocityColor, 1.1f);
    + Debug.Log("Smoothed y:" + fromY + " vec3:" + fromVec3 + " color:" + fromColor);

    + +
    + + +
    + + +
    + + +
    +

    Methods

    + +
    +

    LeanSmooth.bounceOut (Color)

    + +
    + (
      +
    • + current:float +
    • +
    • + target:float +
    • +
    • + currentVelocity:float +
    • +
    • + smoothTime:float +
    • +
    • + maxSpeed:float +
    • +
    • + deltaTime:float +
    • +
    • + [friction] +
    • +
    • + [accelRate] +
    • +
    • + [hitDamping] +
    • +
    ) +
    + + + + + + + + +
    +

    + Defined in + LeanSmooth.cs:338 +

    + + + +
    + +
    + Moves one color towards another (with an ease that bounces back some when it reaches it's destination) +
    + +
    +

    Parameters:

    + +
      +
    • + current:float + Color + + +
      +

      the current value

      + +
      + +
    • +
    • + target:float + Color + + +
      +

      the value we are trying to reach

      + +
      + +
    • +
    • + currentVelocity:float + Color + + +
      +

      the current velocity of the value

      + +
      + +
    • +
    • + smoothTime:float + Float + + +
      +

      roughly the time it takes to reach the destination

      + +
      + +
    • +
    • + maxSpeed:float + Float + + +
      +

      the top speed you want the value to move at (defaults to unlimited -1f)

      + +
      + +
    • +
    • + deltaTime:float + Float + + +
      +

      the difference in time since the method was called (defaults to Time.deltaTime)

      + +
      + +
    • +
    • + [friction] + Float + optional + + +
      +

      :float rate at which the spring is slowed down once it reaches it's destination

      + +
      + +
    • +
    • + [accelRate] + Float + optional + + +
      +

      :float the rate it accelerates from it's initial position

      + +
      + +
    • +
    • + [hitDamping] + Float + optional + + +
      +

      :float the rate at which to dampen the bounciness of when it reaches it's destination

      + +
      + +
    • +
    +
    + + +
    +

    Example:

    + +
    +

    fromColor = LeanSmooth.bounceOut(fromColor, transform.GetComponent().material.color, ref followVelocity, 1.1f);\n + Debug.Log("current:" + fromColor);

    + +
    +
    +
    +
    +

    LeanSmooth.bounceOut (float)

    + +
    + (
      +
    • + current:float +
    • +
    • + target:float +
    • +
    • + currentVelocity:float +
    • +
    • + smoothTime:float +
    • +
    • + maxSpeed:float +
    • +
    • + deltaTime:float +
    • +
    • + [friction] +
    • +
    • + [accelRate] +
    • +
    • + [hitDamping] +
    • +
    ) +
    + + + + + + + + +
    +

    + Defined in + LeanSmooth.cs:268 +

    + + + +
    + +
    + Moves one value towards another (with an ease that bounces back some when it reaches it's destination) +
    + +
    +

    Parameters:

    + +
      +
    • + current:float + Float + + +
      +

      the current value

      + +
      + +
    • +
    • + target:float + Float + + +
      +

      the value we are trying to reach

      + +
      + +
    • +
    • + currentVelocity:float + Float + + +
      +

      the current velocity of the value

      + +
      + +
    • +
    • + smoothTime:float + Float + + +
      +

      roughly the time it takes to reach the destination

      + +
      + +
    • +
    • + maxSpeed:float + Float + + +
      +

      the top speed you want the value to move at (defaults to unlimited -1f)

      + +
      + +
    • +
    • + deltaTime:float + Float + + +
      +

      the difference in time since the method was called (defaults to Time.deltaTime)

      + +
      + +
    • +
    • + [friction] + Float + optional + + +
      +

      :float rate at which the spring is slowed down once it reaches it's destination

      + +
      + +
    • +
    • + [accelRate] + Float + optional + + +
      +

      :float the rate it accelerates from it's initial position

      + +
      + +
    • +
    • + [hitDamping] + Float + optional + + +
      +

      :float the rate at which to dampen the bounciness of when it reaches it's destination

      + +
      + +
    • +
    +
    + + +
    +

    Example:

    + +
    +

    followVar = LeanSmooth.bounceOut(followVar, destinationVar, ref followVelocity, 1.1f);\n + Debug.Log("current:"+followVar);

    + +
    +
    +
    +
    +

    LeanSmooth.bounceOut (Vector3)

    + +
    + (
      +
    • + current:float +
    • +
    • + target:float +
    • +
    • + currentVelocity:float +
    • +
    • + smoothTime:float +
    • +
    • + maxSpeed:float +
    • +
    • + deltaTime:float +
    • +
    • + [friction] +
    • +
    • + [accelRate] +
    • +
    • + [hitDamping] +
    • +
    ) +
    + + + + + + + + +
    +

    + Defined in + LeanSmooth.cs:312 +

    + + + +
    + +
    + Moves one value towards another (with an ease that bounces back some when it reaches it's destination) +
    + +
    +

    Parameters:

    + +
      +
    • + current:float + Vector3 + + +
      +

      the current value

      + +
      + +
    • +
    • + target:float + Vector3 + + +
      +

      the value we are trying to reach

      + +
      + +
    • +
    • + currentVelocity:float + Vector3 + + +
      +

      the current velocity of the value

      + +
      + +
    • +
    • + smoothTime:float + Float + + +
      +

      roughly the time it takes to reach the destination

      + +
      + +
    • +
    • + maxSpeed:float + Float + + +
      +

      the top speed you want the value to move at (defaults to unlimited -1f)

      + +
      + +
    • +
    • + deltaTime:float + Float + + +
      +

      the difference in time since the method was called (defaults to Time.deltaTime)

      + +
      + +
    • +
    • + [friction] + Float + optional + + +
      +

      :float rate at which the spring is slowed down once it reaches it's destination

      + +
      + +
    • +
    • + [accelRate] + Float + optional + + +
      +

      :float the rate it accelerates from it's initial position

      + +
      + +
    • +
    • + [hitDamping] + Float + optional + + +
      +

      :float the rate at which to dampen the bounciness of when it reaches it's destination

      + +
      + +
    • +
    +
    + + +
    +

    Example:

    + +
    +

    transform.position = LeanSmooth.bounceOut(transform.position, followTrans.position, ref followVelocity, 1.1f);\n + Debug.Log("current:"+transform.position);

    + +
    +
    +
    +
    +

    LeanSmooth.damp (Color)

    + +
    + (
      +
    • + current:Color +
    • +
    • + target:Color +
    • +
    • + currentVelocity:Color +
    • +
    • + smoothTime:float +
    • +
    • + maxSpeed:float +
    • +
    • + deltaTime:float +
    • +
    ) +
    + + + + + + + + +
    +

    + Defined in + LeanSmooth.cs:83 +

    + + + +
    + +
    + Moves one color value towards another color (eases in and out to destination with no overshoot) +
    + +
    +

    Parameters:

    + +
      +
    • + current:Color + Float + + +
      +

      the current value

      + +
      + +
    • +
    • + target:Color + Float + + +
      +

      the value we are trying to reach

      + +
      + +
    • +
    • + currentVelocity:Color + Float + + +
      +

      the current velocity of the value

      + +
      + +
    • +
    • + smoothTime:float + Float + + +
      +

      roughly the time it takes to reach the destination

      + +
      + +
    • +
    • + maxSpeed:float + Float + + +
      +

      the top speed you want the value to move at (defaults to unlimited -1f)

      + +
      + +
    • +
    • + deltaTime:float + Float + + +
      +

      the difference in time since the method was called (defaults to Time.deltaTime)

      + +
      + +
    • +
    +
    + + +
    +

    Example:

    + +
    +

    fromColor = LeanSmooth.damp(fromColor, transform.GetComponent().material.color, ref velocityColor, 1.1f);\n + Debug.Log("current:"+fromColor);

    + +
    +
    +
    +
    +

    LeanSmooth.damp (float)

    + +
    + (
      +
    • + current:float +
    • +
    • + target:float +
    • +
    • + currentVelocity:float +
    • +
    • + smoothTime:float +
    • +
    • + maxSpeed:float +
    • +
    • + deltaTime:float +
    • +
    ) +
    + + + + + + + + +
    +

    + Defined in + LeanSmooth.cs:18 +

    + + + +
    + +
    + Moves one value towards another (eases in and out to destination with no overshoot) +
    + +
    +

    Parameters:

    + +
      +
    • + current:float + Float + + +
      +

      the current value

      + +
      + +
    • +
    • + target:float + Float + + +
      +

      the value we are trying to reach

      + +
      + +
    • +
    • + currentVelocity:float + Float + + +
      +

      the current velocity of the value

      + +
      + +
    • +
    • + smoothTime:float + Float + + +
      +

      roughly the time it takes to reach the destination

      + +
      + +
    • +
    • + maxSpeed:float + Float + + +
      +

      the top speed you want the value to move at (defaults to unlimited -1f)

      + +
      + +
    • +
    • + deltaTime:float + Float + + +
      +

      the difference in time since the method was called (defaults to Time.deltaTime)

      + +
      + +
    • +
    +
    + + +
    +

    Example:

    + +
    +

    followVar = LeanSmooth.damp(followVar, destinationVar, ref followVelocity, 1.1f);\n + Debug.Log("current:"+followVar);

    + +
    +
    +
    +
    +

    LeanSmooth.damp (Vector3)

    + +
    + (
      +
    • + current:Vector3 +
    • +
    • + target:Vector3 +
    • +
    • + currentVelocity:Vector3 +
    • +
    • + smoothTime:float +
    • +
    • + maxSpeed:float +
    • +
    • + deltaTime:float +
    • +
    ) +
    + + + + + + + + +
    +

    + Defined in + LeanSmooth.cs:60 +

    + + + +
    + +
    + Moves one value towards another (eases in and out to destination with no overshoot) +
    + +
    +

    Parameters:

    + +
      +
    • + current:Vector3 + Float + + +
      +

      the current value

      + +
      + +
    • +
    • + target:Vector3 + Float + + +
      +

      the value we are trying to reach

      + +
      + +
    • +
    • + currentVelocity:Vector3 + Float + + +
      +

      the current velocity of the value

      + +
      + +
    • +
    • + smoothTime:float + Float + + +
      +

      roughly the time it takes to reach the destination

      + +
      + +
    • +
    • + maxSpeed:float + Float + + +
      +

      the top speed you want the value to move at (defaults to unlimited -1f)

      + +
      + +
    • +
    • + deltaTime:float + Float + + +
      +

      the difference in time since the method was called (defaults to Time.deltaTime)

      + +
      + +
    • +
    +
    + + +
    +

    Example:

    + +
    +

    transform.position = LeanSmooth.damp(transform.position, destTrans.position, ref followVelocity, 1.1f);\n + Debug.Log("current:"+transform.position);

    + +
    +
    +
    +
    +

    LeanSmooth.linear (Color)

    + +
    + (
      +
    • + current:float +
    • +
    • + target:float +
    • +
    • + moveSpeed:float +
    • +
    • + deltaTime:float +
    • +
    ) +
    + + + + + + + + +
    +

    + Defined in + LeanSmooth.cs:246 +

    + + + +
    + +
    + Moves one color towards another (at a constant speed) +
    + +
    +

    Parameters:

    + +
      +
    • + current:float + Color + + +
      +

      the current value

      + +
      + +
    • +
    • + target:float + Color + + +
      +

      the value we are trying to reach

      + +
      + +
    • +
    • + moveSpeed:float + Float + + +
      +

      the speed at which to move towards the target

      + +
      + +
    • +
    • + deltaTime:float + Float + + +
      +

      the difference in time since the method was called (defaults to Time.deltaTime)

      + +
      + +
    • +
    +
    + + +
    +

    Example:

    + +
    +

    fromColor = LeanSmooth.linear(fromColor, transform.GetComponent().material.color, 50f);\n + Debug.Log("current:"+fromColor);

    + +
    +
    +
    +
    +

    LeanSmooth.linear (float)

    + +
    + (
      +
    • + current:float +
    • +
    • + target:float +
    • +
    • + moveSpeed:float +
    • +
    • + deltaTime:float +
    • +
    ) +
    + + + + + + + + +
    +

    + Defined in + LeanSmooth.cs:193 +

    + + + +
    + +
    + Moves one value towards another (at a constant speed) +
    + +
    +

    Parameters:

    + +
      +
    • + current:float + Float + + +
      +

      the current value

      + +
      + +
    • +
    • + target:float + Float + + +
      +

      the value we are trying to reach

      + +
      + +
    • +
    • + moveSpeed:float + Float + + +
      +

      the speed at which to move towards the target

      + +
      + +
    • +
    • + deltaTime:float + Float + + +
      +

      the difference in time since the method was called (defaults to Time.deltaTime)

      + +
      + +
    • +
    +
    + + +
    +

    Example:

    + +
    +

    followVar = LeanSmooth.linear(followVar, destinationVar, 50f);\n + Debug.Log("current:"+followVar);

    + +
    +
    +
    +
    +

    LeanSmooth.linear (Vector3)

    + +
    + (
      +
    • + current:float +
    • +
    • + target:float +
    • +
    • + moveSpeed:float +
    • +
    • + deltaTime:float +
    • +
    ) +
    + + + + + + + + +
    +

    + Defined in + LeanSmooth.cs:225 +

    + + + +
    + +
    + Moves one value towards another (at a constant speed) +
    + +
    +

    Parameters:

    + +
      +
    • + current:float + Vector3 + + +
      +

      the current value

      + +
      + +
    • +
    • + target:float + Vector3 + + +
      +

      the value we are trying to reach

      + +
      + +
    • +
    • + moveSpeed:float + Float + + +
      +

      the speed at which to move towards the target

      + +
      + +
    • +
    • + deltaTime:float + Float + + +
      +

      the difference in time since the method was called (defaults to Time.deltaTime)

      + +
      + +
    • +
    +
    + + +
    +

    Example:

    + +
    +

    transform.position = LeanSmooth.linear(transform.position, followTrans.position, 50f);\n + Debug.Log("current:"+transform.position);

    + +
    +
    +
    +
    +

    LeanSmooth.spring (Color)

    + +
    + (
      +
    • + current:float +
    • +
    • + target:float +
    • +
    • + currentVelocity:float +
    • +
    • + smoothTime:float +
    • +
    • + maxSpeed:float +
    • +
    • + deltaTime:float +
    • +
    • + [friction] +
    • +
    • + [accelRate] +
    • +
    ) +
    + + + + + + + + +
    +

    + Defined in + LeanSmooth.cs:167 +

    + + + +
    + +
    + Moves one color towards another (eases in and out to destination with possible overshoot bounciness) +
    + +
    +

    Parameters:

    + +
      +
    • + current:float + Color + + +
      +

      the current value

      + +
      + +
    • +
    • + target:float + Color + + +
      +

      the value we are trying to reach

      + +
      + +
    • +
    • + currentVelocity:float + Color + + +
      +

      the current velocity of the value

      + +
      + +
    • +
    • + smoothTime:float + Float + + +
      +

      roughly the time it takes to reach the destination

      + +
      + +
    • +
    • + maxSpeed:float + Float + + +
      +

      the top speed you want the value to move at (defaults to unlimited -1f)

      + +
      + +
    • +
    • + deltaTime:float + Float + + +
      +

      the difference in time since the method was called (defaults to Time.deltaTime)

      + +
      + +
    • +
    • + [friction] + Float + optional + + +
      +

      :float rate at which the spring is slowed down once it reaches it's destination

      + +
      + +
    • +
    • + [accelRate] + Float + optional + + +
      +

      :float the rate it accelerates from it's initial position

      + +
      + +
    • +
    +
    + + +
    +

    Example:

    + +
    +

    fromColor = LeanSmooth.spring(fromColor, transform.GetComponent().material.color, ref velocityColor, 1.1f);\n + Debug.Log("current:"+fromColor);

    + +
    +
    +
    +
    +

    LeanSmooth.spring (float)

    + +
    + (
      +
    • + current:float +
    • +
    • + target:float +
    • +
    • + currentVelocity:float +
    • +
    • + smoothTime:float +
    • +
    • + maxSpeed:float +
    • +
    • + deltaTime:float +
    • +
    • + [friction] +
    • +
    • + [accelRate] +
    • +
    ) +
    + + + + + + + + +
    +

    + Defined in + LeanSmooth.cs:107 +

    + + + +
    + +
    + Moves one value towards another (eases in and out to destination with possible overshoot bounciness) +
    + +
    +

    Parameters:

    + +
      +
    • + current:float + Float + + +
      +

      the current value

      + +
      + +
    • +
    • + target:float + Float + + +
      +

      the value we are trying to reach

      + +
      + +
    • +
    • + currentVelocity:float + Float + + +
      +

      the current velocity of the value

      + +
      + +
    • +
    • + smoothTime:float + Float + + +
      +

      roughly the time it takes to reach the destination

      + +
      + +
    • +
    • + maxSpeed:float + Float + + +
      +

      the top speed you want the value to move at (defaults to unlimited -1f)

      + +
      + +
    • +
    • + deltaTime:float + Float + + +
      +

      the difference in time since the method was called (defaults to Time.deltaTime)

      + +
      + +
    • +
    • + [friction] + Float + optional + + +
      +

      :float rate at which the spring is slowed down once it reaches it's destination

      + +
      + +
    • +
    • + [accelRate] + Float + optional + + +
      +

      :float the rate it accelerates from it's initial position

      + +
      + +
    • +
    +
    + + +
    +

    Example:

    + +
    +

    followVar = LeanSmooth.spring(followVar, destinationVar, ref followVelocity, 1.1f);\n + Debug.Log("current:"+followVar);

    + +
    +
    +
    +
    +

    LeanSmooth.spring (Vector3)

    + +
    + (
      +
    • + current:float +
    • +
    • + target:float +
    • +
    • + currentVelocity:float +
    • +
    • + smoothTime:float +
    • +
    • + maxSpeed:float +
    • +
    • + deltaTime:float +
    • +
    • + [friction] +
    • +
    • + [accelRate] +
    • +
    ) +
    + + + + + + + + +
    +

    + Defined in + LeanSmooth.cs:142 +

    + + + +
    + +
    + Moves one value towards another (eases in and out to destination with possible overshoot bounciness) +
    + +
    +

    Parameters:

    + +
      +
    • + current:float + Vector3 + + +
      +

      the current value

      + +
      + +
    • +
    • + target:float + Vector3 + + +
      +

      the value we are trying to reach

      + +
      + +
    • +
    • + currentVelocity:float + Vector3 + + +
      +

      the current velocity of the value

      + +
      + +
    • +
    • + smoothTime:float + Float + + +
      +

      roughly the time it takes to reach the destination

      + +
      + +
    • +
    • + maxSpeed:float + Float + + +
      +

      the top speed you want the value to move at (defaults to unlimited -1f)

      + +
      + +
    • +
    • + deltaTime:float + Float + + +
      +

      the difference in time since the method was called (defaults to Time.deltaTime)

      + +
      + +
    • +
    • + [friction] + Float + optional + + +
      +

      :float rate at which the spring is slowed down once it reaches it's destination

      + +
      + +
    • +
    • + [accelRate] + Float + optional + + +
      +

      :float the rate it accelerates from it's initial position

      + +
      + +
    • +
    +
    + + +
    +

    Example:

    + +
    +

    transform.position = LeanSmooth.spring(transform.position, destTrans.position, ref followVelocity, 1.1f);\n + Debug.Log("current:"+transform.position);

    + +
    +
    +
    +
    + + + +
    +
    +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/Assets/LeanTween/Documentation/classes/LeanSmooth.html.meta b/Assets/LeanTween/Documentation/classes/LeanSmooth.html.meta new file mode 100644 index 0000000..9926ada --- /dev/null +++ b/Assets/LeanTween/Documentation/classes/LeanSmooth.html.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: e988e3f0c183c44c29adbd5e82d6fd87 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/LeanTween/Documentation/classes/LeanTween.html b/Assets/LeanTween/Documentation/classes/LeanTween.html new file mode 100644 index 0000000..bd8d465 --- /dev/null +++ b/Assets/LeanTween/Documentation/classes/LeanTween.html @@ -0,0 +1,8123 @@ + + + + + LeanTween + + + + + + + + + + + +
    +
    +
    +

    - Developed by Dented Pixel
    +
    +
    + API Docs for: LeanTween 2.50
    + + + + + +
    +

    Support LeanTween!

    + +
    +
    + + + + + + + +
    +
    +
    + +

    Maintaining and adding new features takes time, your support is appreciated.

    +
    +
    + + +
    +
    + Show: + + + + + + + +
    + +
    +
    +
    +

    LeanTween Class

    +
    + + +
    + Defined in: LeanTween.cs:223 +
    + + +
    + + +
    +

    LeanTween is an efficient tweening engine for Unity3d

    + Index of All Methods | Optional Paramaters that can be passed

    + Optional Parameters are passed at the end of every method
    +
    + Example:
    + LeanTween.moveX( gameObject, 1f, 1f).setEase( LeanTweenType.easeInQuad ).setDelay(1f);
    +
    + You can pass the optional parameters in any order, and chain on as many as you wish!

    + You can also modify this tween later, just save the unique id of the tween.
    +

    Example:

    + int id = LeanTween.moveX(gameObject, 1f, 1f).id;
    + LTDescr d = LeanTween.descr( id );

    + if(d!=null){ // if the tween has already finished it will return null
    +    // change some parameters
    +    d.setOnComplete( onCompleteFunc ).setEase( LeanTweenType.easeInOutBack );
    + }

    + +
    + + +
    + + +
    +
    +

    Item Index

    + +
    +

    Methods

    + + +
    + + + +
    + +
    +

    Methods

    + +
    +

    LeanTween.addListener

    + +
    + (
      +
    • + caller:GameObject +
    • +
    • + eventId:int +
    • +
    • + callback:System.Action<LTEvent> +
    • +
    ) +
    + + + + + + + + +
    +

    + Defined in + LeanTween.cs:2743 +

    + + + +
    + +
    +

    Add a listener method to be called when the appropriate LeanTween.dispatchEvent is called

    + +
    + +
    +

    Parameters:

    + +
      +
    • + caller:GameObject + GameObject + + +
      +

      the gameObject the listener is attached to

      + +
      + +
    • +
    • + eventId:int + Int + + +
      +

      a unique int that describes the event (best to use an enum)

      + +
      + +
    • +
    • + callback:System.Action<LTEvent> + System.Action + + +
      +

      the method to call when the event has been dispatched

      + +
      + +
    • +
    +
    + + +
    +

    Example:

    + +
    +

    LeanTween.addListener(gameObject, (int)MyEvents.JUMP, jumpUp);
    +
    + void jumpUp( LTEvent e ){ Debug.Log("jump!"); }

    + +
    +
    +
    +
    +

    LeanTween.alpha

    + +
    + (
      +
    • + gameObject:GameObject +
    • +
    • + to:float +
    • +
    • + time:float +
    • +
    ) +
    + + + LTDescr + + + + + + + + +
    +

    + Defined in + LeanTween.cs:1090 +

    + + + +
    + +
    + Fade a gameobject's material to a certain alpha value. +
    + +
    +

    Parameters:

    + +
      +
    • + gameObject:GameObject + GameObject + + +
      +

      Gameobject that you wish to fade

      + +
      + +
    • +
    • + to:float + Float + + +
      +

      the final alpha value (0-1)

      + +
      + +
    • +
    • + time:float + Float + + +
      +

      The time with which to fade the object

      + +
      + +
    • +
    +
    + +
    +

    Returns:

    + +
    + LTDescr: +

    LTDescr an object that distinguishes the tween

    + +
    +
    + +
    +

    Example:

    + +
    +

    LeanTween.alpha(gameObject, 1f, 1f) .setDelay(1f);

    + +
    +
    +
    +
    +

    LeanTween.alpha

    + +
    + (
      +
    • + ltRect:LTRect +
    • +
    • + to:float +
    • +
    • + time:float +
    • +
    ) +
    + + + LTDescr + + + + + + + + +
    +

    + Defined in + LeanTween.cs:1111 +

    + + + +
    + +
    + Fade a GUI Object +
    + +
    +

    Parameters:

    + +
      +
    • + ltRect:LTRect + LTRect + + +
      +

      LTRect that you wish to fade

      + +
      + +
    • +
    • + to:float + Float + + +
      +

      the final alpha value (0-1)

      + +
      + +
    • +
    • + time:float + Float + + +
      +

      The time with which to fade the object

      + +
      + +
    • +
    +
    + +
    +

    Returns:

    + +
    + LTDescr: +

    LTDescr an object that distinguishes the tween

    + +
    +
    + +
    +

    Example:

    + +
    +

    LeanTween.alpha(ltRect, 1f, 1f) .setEase(LeanTweenType.easeInCirc);

    + +
    +
    +
    +
    +

    LeanTween.alpha (RectTransform)

    + +
    + (
      +
    • + rectTrans:RectTransform +
    • +
    • + to:float +
    • +
    • + time:float +
    • +
    ) +
    + + + LTDescr + + + + + + + + +
    +

    + Defined in + LeanTween.cs:2089 +

    + + + +
    + +
    + Alpha an Image Component attached to a RectTransform (used in Unity GUI in 4.6+, for Buttons, Panel, Scrollbar, etc...) +
    + +
    +

    Parameters:

    + +
      +
    • + rectTrans:RectTransform + RectTransform + + +
      +

      RectTransform that you wish to attach the tween to

      + +
      + +
    • +
    • + to:float + Float + + +
      +

      The final Vector3 with which to tween to (localScale)

      + +
      + +
    • +
    • + time:float + Float + + +
      +

      The time to complete the tween in

      + +
      + +
    • +
    +
    + +
    +

    Returns:

    + +
    + LTDescr: +

    LTDescr an object that distinguishes the tween

    + +
    +
    + +
    +

    Example:

    + +
    +

    LeanTween.alpha(gameObject.GetComponent<RectTransform>(), 0.5f, 1f).setDelay(1f);

    + +
    +
    +
    +
    +

    LeanTween.alpha (RectTransform)

    + +
    + (
      +
    • + rectTrans:RectTransform +
    • +
    • + to:float +
    • +
    • + time:float +
    • +
    ) +
    + + + LTDescr + + + + + + + + +
    +

    + Defined in + LeanTween.cs:2103 +

    + + + +
    + +
    + Change the Color of an Image Component attached to a RectTransform (used in Unity GUI in 4.6+, for Buttons, Panel, Scrollbar, etc...) +
    + +
    +

    Parameters:

    + +
      +
    • + rectTrans:RectTransform + RectTransform + + +
      +

      RectTransform that you wish to attach the tween to

      + +
      + +
    • +
    • + to:float + Float + + +
      +

      The final Vector3 with which to tween to (localScale)

      + +
      + +
    • +
    • + time:float + Float + + +
      +

      The time to complete the tween in

      + +
      + +
    • +
    +
    + +
    +

    Returns:

    + +
    + LTDescr: +

    LTDescr an object that distinguishes the tween

    + +
    +
    + +
    +

    Example:

    + +
    +

    LeanTween.color(gameObject.GetComponent<RectTransform>(), 0.5f, 1f).setDelay(1f);

    + +
    +
    +
    +
    +

    LeanTween.alphaCanvas

    + +
    + (
      +
    • + rectTransform:RectTransform +
    • +
    • + to:float +
    • +
    • + time:float +
    • +
    ) +
    + + + LTDescr + + + + + + + + +
    +

    + Defined in + LeanTween.cs:1147 +

    + + + +
    + +
    + Fade a Unity UI Canvas Group +
    + +
    +

    Parameters:

    + +
      +
    • + rectTransform:RectTransform + RectTransform + + +
      +

      RectTransform that the CanvasGroup is attached to

      + +
      + +
    • +
    • + to:float + Float + + +
      +

      the final alpha value (0-1)

      + +
      + +
    • +
    • + time:float + Float + + +
      +

      The time with which to fade the object

      + +
      + +
    • +
    +
    + +
    +

    Returns:

    + +
    + LTDescr: +

    LTDescr an object that distinguishes the tween

    + +
    +
    + +
    +

    Example:

    + +
    +

    LeanTween.alphaCanvas(gameObject.GetComponent<RectTransform>(), 0f, 1f) .setLoopPingPong();

    + +
    +
    +
    +
    +

    LeanTween.alphaText

    + +
    + (
      +
    • + rectTransform:RectTransform +
    • +
    • + to:float +
    • +
    • + time:float +
    • +
    ) +
    + + + LTDescr + + + + + + + + +
    +

    + Defined in + LeanTween.cs:1129 +

    + + + +
    + +
    + Fade a Unity UI Object +
    + +
    +

    Parameters:

    + +
      +
    • + rectTransform:RectTransform + RectTransform + + +
      +

      RectTransform associated with the Text Component you wish to fade

      + +
      + +
    • +
    • + to:float + Float + + +
      +

      the final alpha value (0-1)

      + +
      + +
    • +
    • + time:float + Float + + +
      +

      The time with which to fade the object

      + +
      + +
    • +
    +
    + +
    +

    Returns:

    + +
    + LTDescr: +

    LTDescr an object that distinguishes the tween

    + +
    +
    + +
    +

    Example:

    + +
    +

    LeanTween.alphaText(gameObject.GetComponent<RectTransform>(), 1f, 1f) .setEase(LeanTweenType.easeInCirc);

    + +
    +
    +
    +
    +

    LeanTween.alphaVertex

    + +
    + (
      +
    • + gameObject:GameObject +
    • +
    • + to:float +
    • +
    • + time:float +
    • +
    ) +
    + + + LTDescr + + + + + + + + +
    +

    + Defined in + LeanTween.cs:1163 +

    + + + +
    + +
    + This works by tweening the vertex colors directly +
    + Vertex-based coloring is useful because you avoid making a copy of your + object's material for each instance that needs a different color.
    +
    + A shader that supports vertex colors is required for it to work + (for example the shaders in Mobile/Particles/) +
    + +
    +

    Parameters:

    + +
      +
    • + gameObject:GameObject + GameObject + + +
      +

      Gameobject that you wish to alpha

      + +
      + +
    • +
    • + to:float + Float + + +
      +

      The alpha value you wish to tween to

      + +
      + +
    • +
    • + time:float + Float + + +
      +

      The time with which to delay before calling the function

      + +
      + +
    • +
    +
    + +
    +

    Returns:

    + +
    + LTDescr: +

    LTDescr an object that distinguishes the tween

    + +
    +
    + +
    +
    +

    LeanTween.cancel

    + +
    + (
      +
    • + id:int +
    • +
    • + callOnComplete:bool +
    • +
    ) +
    + + + + + + + + +
    +

    + Defined in + LeanTween.cs:588 +

    + + + +
    + +
    + Cancel a specific tween with the provided id +
    + +
    +

    Parameters:

    + +
      +
    • + id:int + Int + + +
      +

      unique id that represents that tween

      + +
      + +
    • +
    • + callOnComplete:bool + Bool + + +
      +

      (optional) whether to call the onComplete method before canceling

      + +
      + +
    • +
    +
    + + +
    +

    Example:

    + +
    +

    int id = LeanTween.move( gameObject, new Vector3(0f,1f,2f), 1f).id;
    + LeanTween.cancel( id );

    + +
    +
    +
    +
    +

    LeanTween.cancel

    + +
    + (
      +
    • + gameObject:GameObject +
    • +
    • + callOnComplete:bool +
    • +
    ) +
    + + + + + + + + +
    +

    + Defined in + LeanTween.cs:523 +

    + + + +
    + +
    + Cancel all tweens that are currently targeting the gameObject +
    + +
    +

    Parameters:

    + +
      +
    • + gameObject:GameObject + GameObject + + +
      +

      gameObject whose tweens you wish to cancel

      + +
      + +
    • +
    • + callOnComplete:bool + Bool + + +
      +

      (optional) whether to call the onComplete method before canceling

      + +
      + +
    • +
    +
    + + +
    +

    Example:

    + +
    +

    LeanTween.move( gameObject, new Vector3(0f,1f,2f), 1f);
    + LeanTween.cancel( gameObject );

    + +
    +
    +
    +
    +

    LeanTween.cancelAll

    + +
    + (
      +
    • + callComplete:bool +
    • +
    ) +
    + + + + + + + + +
    +

    + Defined in + LeanTween.cs:501 +

    + + + +
    + +
    + Cancels all tweens +
    + +
    +

    Parameters:

    + +
      +
    • + callComplete:bool + Bool + + +
      +

      (optional) if true, then the all onCompletes will run before canceling

      + +
      + +
    • +
    +
    + + +
    +

    Example:

    + +
    +

    LeanTween.cancelAll(true);

    + +
    +
    +
    +
    +

    LeanTween.color

    + +
    + (
      +
    • + gameObject:GameObject +
    • +
    • + to:Color +
    • +
    • + time:float +
    • +
    ) +
    + + + LTDescr + + + + + + + + +
    +

    + Defined in + LeanTween.cs:1182 +

    + + + +
    + +
    + Change a gameobject's material to a certain color value +
    + +
    +

    Parameters:

    + +
      +
    • + gameObject:GameObject + GameObject + + +
      +

      Gameobject that you wish to change the color

      + +
      + +
    • +
    • + to:Color + Color + + +
      +

      the final color value ex: Color.Red, new Color(1.0f,1.0f,0.0f,0.8f)

      + +
      + +
    • +
    • + time:float + Float + + +
      +

      The time with which to fade the object

      + +
      + +
    • +
    +
    + +
    +

    Returns:

    + +
    + LTDescr: +

    LTDescr an object that distinguishes the tween

    + +
    +
    + +
    +

    Example:

    + +
    +

    LeanTween.color(gameObject, Color.yellow, 1f) .setDelay(1f);

    + +
    +
    +
    +
    +

    LeanTween.colorText

    + +
    + (
      +
    • + rectTransform:RectTransform +
    • +
    • + to:Color +
    • +
    • + time:float +
    • +
    ) +
    + + + LTDescr + + + + + + + + +
    +

    + Defined in + LeanTween.cs:1203 +

    + + + +
    + +
    + Change the color a Unity UI Object +
    + +
    +

    Parameters:

    + +
      +
    • + rectTransform:RectTransform + RectTransform + + +
      +

      RectTransform attached to the Text Component whose color you want to change

      + +
      + +
    • +
    • + to:Color + Color + + +
      +

      the final alpha value ex: Color.Red, new Color(1.0f,1.0f,0.0f,0.8f)

      + +
      + +
    • +
    • + time:float + Float + + +
      +

      The time with which to fade the object

      + +
      + +
    • +
    +
    + +
    +

    Returns:

    + +
    + LTDescr: +

    LTDescr an object that distinguishes the tween

    + +
    +
    + +
    +

    Example:

    + +
    +

    LeanTween.colorText(gameObject.GetComponent<RectTransform>(), Color.yellow, 1f) .setDelay(1f);

    + +
    +
    +
    +
    +

    LeanTween.delayedCall

    + +
    + (
      +
    • + gameObject:GameObject +
    • +
    • + time:float +
    • +
    ) +
    + + + LTDescr + + + + + + + + +
    +

    + Defined in + LeanTween.cs:1222 +

    + + + +
    + +
    + Call a method after a specified amount of time +
    + +
    +

    Parameters:

    + +
      +
    • + gameObject:GameObject + GameObject + + +
      +

      Gameobject that you wish to associate with this delayed call

      + +
      + +
    • +
    • + time:float + Float + + +
      +

      delay The time you wish to pass before the method is called

      + +
      + +
    • +
    +
    + +
    +

    Returns:

    + +
    + LTDescr: +

    LTDescr an object that distinguishes the tween

    + +
    +
    + +
    +

    Example:

    + +
    +

    LeanTween.delayedCall(gameObject, 1f, ()=>{
    Debug.Log("I am called one second later!");
    }));

    + +
    +
    +
    +
    +

    LeanTween.descr

    + +
    + (
      +
    • + id:int +
    • +
    ) +
    + + + + + + + + +
    +

    + Defined in + LeanTween.cs:631 +

    + + + +
    + +
    + Retrieve a tweens LTDescr object to modify +
    + +
    +

    Parameters:

    + +
      +
    • + id:int + Int + + +
      +

      unique id that represents that tween

      + +
      + +
    • +
    +
    + + +
    +

    Example:

    + +
    +

    int id = LeanTween.move( gameObject, new Vector3(0f,1f,2f), 1f).setOnComplete( oldMethod ).id;

    +
    // later I want decide I want to change onComplete method
    + LTDescr descr = LeanTween.descr( id );
    + if(descr!=null) // if the tween has already finished it will come back null
    +   descr.setOnComplete( newMethod );
    +
    +
    +
    +
    +

    LeanTween.descriptions

    + +
    + (
      +
    • + id:GameObject +
    • +
    ) +
    + + + + + + + + +
    +

    + Defined in + LeanTween.cs:665 +

    + + + +
    + +
    + Retrieve a tweens LTDescr object(s) to modify +
    + +
    +

    Parameters:

    + +
      +
    • + id:GameObject + GameObject + + +
      +

      object whose tween descriptions you want to retrieve

      + +
      + +
    • +
    +
    + + +
    +

    Example:

    + +
    +

    LeanTween.move( gameObject, new Vector3(0f,1f,2f), 1f).setOnComplete( oldMethod );

    +
    // later I want decide I want to change onComplete method
    + LTDescr[] descr = LeanTween.descriptions( gameObject );
    + if(descr.Length>0) // make sure there is a valid description for this target
    +   descr[0].setOnComplete( newMethod );// in this case we only ever expect there to be one tween on this object
    +
    +
    +
    +
    +

    LeanTween.dispatchEvent

    + +
    + (
      +
    • + eventId:int +
    • +
    • + data:object +
    • +
    ) +
    + + + + + + + + +
    +

    + Defined in + LeanTween.cs:2838 +

    + + + +
    + +
    +

    Tell the added listeners that you are dispatching the event

    + +
    + +
    +

    Parameters:

    + +
      +
    • + eventId:int + Int + + +
      +

      a unique int that describes the event (best to use an enum)

      + +
      + +
    • +
    • + data:object + Object + + +
      +

      Pass data to the listener, access it from the listener with *.data on the LTEvent object

      + +
      + +
    • +
    +
    + + +
    +

    Example:

    + +
    +

    LeanTween.dispatchEvent( (int)MyEvents.JUMP, transform );
    +
    + void jumpUp( LTEvent e ){
    +   Transform tran = (Transform)e.data;
    + }

    + +
    +
    +
    +
    +

    LeanTween.dispatchEvent

    + +
    + (
      +
    • + eventId:int +
    • +
    ) +
    + + + + + + + + +
    +

    + Defined in + LeanTween.cs:2827 +

    + + + +
    + +
    +

    Tell the added listeners that you are dispatching the event

    + +
    + +
    +

    Parameters:

    + +
      +
    • + eventId:int + Int + + +
      +

      a unique int that describes the event (best to use an enum)

      + +
      + +
    • +
    +
    + + +
    +

    Example:

    + +
    +

    LeanTween.dispatchEvent( (int)MyEvents.JUMP );

    + +
    +
    +
    +
    +

    LeanTween.followBounceOut

    + +
    + (
      +
    • + transform:Transform +
    • +
    • + transform:Transform +
    • +
    • + leanProp:LeanProp +
    • +
    • + smoothTime:float +
    • +
    • + [maxSpeed] +
    • +
    • + [friction] +
    • +
    • + [accelRate] +
    • +
    • + [hitDamp] +
    • +
    ) +
    + + + + + + + + +
    +

    + Defined in + LeanTween.cs:2597 +

    + + + +
    + +
    + Follow another transforms position/scale/color (with an ease that bounces back some when it reaches it's destination) +
    + +
    +

    Parameters:

    + +
      +
    • + transform:Transform + Transform + + +
      +

      the transform you wish to be the follower

      + +
      + +
    • +
    • + transform:Transform + Transform + + +
      +

      the transform you wish to follow

      + +
      + +
    • +
    • + leanProp:LeanProp + LeanProp + + +
      +

      enum of the type of following you wish to do position, scale, color, etc.

      + +
      + +
    • +
    • + smoothTime:float + Float + + +
      +

      roughly the time it takes to reach the destination

      + +
      + +
    • +
    • + [maxSpeed] + Float + optional + + +
      +

      :float maximum speed at which it moves towards the destination

      + +
      + +
    • +
    • + [friction] + Float + optional + + +
      +

      :float rate at which the spring is slowed down once it reaches it's destination

      + +
      + +
    • +
    • + [accelRate] + Float + optional + + +
      +

      :float the rate it accelerates from it's initial position

      + +
      + +
    • +
    • + [hitDamp] + Float + optional + + +
      +

      :float the rate at which to dampen the bounciness of when it reaches it's destination

      + +
      + +
    • +
    +
    + + +
    +

    Example:

    + +
    +

    LeanTween.followBounceOut(transform, followTransform, LeanProp.localY, 1.1f);

    + +
    +
    +
    +
    +

    LeanTween.followDamp

    + +
    + (
      +
    • + transform:Transform +
    • +
    • + transform:Transform +
    • +
    • + leanProp:LeanProp +
    • +
    • + smoothTime:float +
    • +
    • + [maxSpeed] +
    • +
    ) +
    + + + + + + + + +
    +

    + Defined in + LeanTween.cs:2461 +

    + + + +
    + +
    + Follow another transforms position/scale/color with a damp transition (eases in and out to destination with no overshoot) +
    + +
    +

    Parameters:

    + +
      +
    • + transform:Transform + Transform + + +
      +

      the transform you wish to be the follower

      + +
      + +
    • +
    • + transform:Transform + Transform + + +
      +

      the transform you wish to follow

      + +
      + +
    • +
    • + leanProp:LeanProp + LeanProp + + +
      +

      enum of the type of following you wish to do position, scale, color, etc.

      + +
      + +
    • +
    • + smoothTime:float + Float + + +
      +

      roughly the time it takes to reach the destination

      + +
      + +
    • +
    • + [maxSpeed] + Float + optional + + +
      +

      :float maximum speed at which it moves towards the destination

      + +
      + +
    • +
    +
    + + +
    +

    Example:

    + +
    +

    LeanTween.followDamp(transform, followTransform, LeanProp.localY, 1.1f);

    + +
    +
    +
    +
    +

    LeanTween.followLinear

    + +
    + (
      +
    • + transform:Transform +
    • +
    • + transform:Transform +
    • +
    • + leanProp:LeanProp +
    • +
    • + moveSpeed:float +
    • +
    ) +
    + + + + + + + + +
    +

    + Defined in + LeanTween.cs:2666 +

    + + + +
    + +
    + Follow another transforms position/scale/color with a constant speed +
    + +
    +

    Parameters:

    + +
      +
    • + transform:Transform + Transform + + +
      +

      the transform you wish to be the follower

      + +
      + +
    • +
    • + transform:Transform + Transform + + +
      +

      the transform you wish to follow

      + +
      + +
    • +
    • + leanProp:LeanProp + LeanProp + + +
      +

      enum of the type of following you wish to do position, scale, color, etc.

      + +
      + +
    • +
    • + moveSpeed:float + Float + + +
      +

      roughly the time it takes to reach the destination

      + +
      + +
    • +
    +
    + + +
    +

    Example:

    + +
    +

    LeanTween.followLinear(transform, followTransform, LeanProp.localY, 50f);

    + +
    +
    +
    +
    +

    LeanTween.followSpring

    + +
    + (
      +
    • + transform:Transform +
    • +
    • + transform:Transform +
    • +
    • + leanProp:LeanProp +
    • +
    • + smoothTime:float +
    • +
    • + [maxSpeed] +
    • +
    • + [friction] +
    • +
    • + [accelRate] +
    • +
    ) +
    + + + + + + + + +
    +

    + Defined in + LeanTween.cs:2528 +

    + + + +
    + +
    + Follow another transforms position/scale/color with a springy transition (eases in and out to destination with possible overshoot bounciness) +
    + +
    +

    Parameters:

    + +
      +
    • + transform:Transform + Transform + + +
      +

      the transform you wish to be the follower

      + +
      + +
    • +
    • + transform:Transform + Transform + + +
      +

      the transform you wish to follow

      + +
      + +
    • +
    • + leanProp:LeanProp + LeanProp + + +
      +

      enum of the type of following you wish to do position, scale, color, etc.

      + +
      + +
    • +
    • + smoothTime:float + Float + + +
      +

      roughly the time it takes to reach the destination

      + +
      + +
    • +
    • + [maxSpeed] + Float + optional + + +
      +

      :float maximum speed at which it moves towards the destination

      + +
      + +
    • +
    • + [friction] + Float + optional + + +
      +

      :float rate at which the spring is slowed down once it reaches it's destination

      + +
      + +
    • +
    • + [accelRate] + Float + optional + + +
      +

      :float the rate it accelerates from it's initial position

      + +
      + +
    • +
    +
    + + +
    +

    Example:

    + +
    +

    LeanTween.followSpring(transform, followTransform, LeanProp.localY);

    + +
    +
    +
    +
    +

    LeanTween.init

    + +
    + (
      +
    • + maxSimultaneousTweens:int +
    • +
    ) +
    + + + + + + + + +
    +

    + Defined in + LeanTween.cs:309 +

    + + + +
    + +
    +

    This line is optional. Here you can specify the maximum number of tweens you will use (the default is 400). This must be called before any use of LeanTween is made for it to be effective.

    This line is optional. Here you can specify the maximum number of tweens you will use (the default is 400). This must be called before any use of LeanTween is made for it to be effective.

    + +
    + +
    +

    Parameters:

    + +
      +
    • + maxSimultaneousTweens:int + Integer + + +
      +

      The maximum number of tweens you will use, make sure you don't go over this limit, otherwise the code will throw an error

      + +
      + +
    • +
    +
    + + +
    +

    Example:

    + +
    +

    LeanTween.init( 800 );

    + +
    +
    +
    +
    +

    LeanTween.isPaused

    + +
    + (
      +
    • + gameObject:GameObject +
    • +
    ) +
    + + + + + + + + +
    +

    + Defined in + LeanTween.cs:789 +

    + + + +
    + +
    + Test whether or not a tween is paused on a GameObject +
    + +
    +

    Parameters:

    + +
      +
    • + gameObject:GameObject + GameObject + + +
      +

      GameObject that you want to test if it is paused

      + +
      + +
    • +
    +
    + + +
    +
    +

    LeanTween.isPaused

    + +
    + (
      +
    • + id:int +
    • +
    ) +
    + + + + + + + + +
    +

    + Defined in + LeanTween.cs:820 +

    + + + +
    + +
    + Test whether or not a tween is paused or not +
    + +
    +

    Parameters:

    + +
      +
    • + id:int + GameObject + + +
      +

      id of the tween that you want to test if it is paused

      + +
      + +
    • +
    +
    + + +
    +

    Example:

    + +
    +

    int id = LeanTween.moveX(gameObject, 1f, 3f).id;
    + LeanTween.pause(gameObject);
    + if(LeanTween.isPaused( id ))
    +      Debug.Log("I am paused!");

    + +
    +
    +
    +
    +

    LeanTween.isTweening

    + +
    + (
      +
    • + gameObject:GameObject +
    • +
    ) +
    + + + + + + + + +
    +

    + Defined in + LeanTween.cs:844 +

    + + + +
    + +
    + Test whether or not a tween is active on a GameObject +
    + +
    +

    Parameters:

    + +
      +
    • + gameObject:GameObject + GameObject + + +
      +

      GameObject that you want to test if it is tweening

      + +
      + +
    • +
    +
    + + +
    +
    +

    LeanTween.isTweening

    + +
    + (
      +
    • + id:int +
    • +
    ) +
    + + + + + + + + +
    +

    + Defined in + LeanTween.cs:870 +

    + + + +
    + +
    + Test whether or not a tween is active or not +
    + +
    +

    Parameters:

    + +
      +
    • + id:int + GameObject + + +
      +

      id of the tween that you want to test if it is tweening

      + +
      + +
    • +
    +
    + + +
    +

    Example:

    + +
    +

    int id = LeanTween.moveX(gameObject, 1f, 3f).id;
    + if(LeanTween.isTweening( id ))
    +      Debug.Log("I am tweening!");

    + +
    +
    +
    +
    +

    LeanTween.move

    + +
    + (
      +
    • + gameObject:GameObject +
    • +
    • + destination:Transform +
    • +
    • + time:float +
    • +
    ) +
    + + + LTDescr + + + + + + + + +
    +

    + Defined in + LeanTween.cs:1493 +

    + + + +
    + +
    + Move a GameObject to another transform +
    + +
    +

    Parameters:

    + +
      +
    • + gameObject:GameObject + GameObject + + +
      +

      Gameobject that you wish to move

      + +
      + +
    • +
    • + destination:Transform + Transform + + +
      +

      Transform whose position the tween will finally end on

      + +
      + +
    • +
    • + time:float + Float + + +
      +

      time The time to complete the tween in

      + +
      + +
    • +
    +
    + +
    +

    Returns:

    + +
    + LTDescr: +

    LTDescr an object that distinguishes the tween

    + +
    +
    + +
    +

    Example:

    + +
    +

    LeanTween.move(gameObject, anotherTransform, 2.0f) .setEase( LeanTweenType.easeOutQuad );

    + +
    +
    +
    +
    +

    LeanTween.move

    + +
    + (
      +
    • + gameObject:GameObject +
    • +
    • + path:Vector3[] +
    • +
    • + time:float +
    • +
    ) +
    + + + LTDescr + + + + + + + + +
    +

    + Defined in + LeanTween.cs:1274 +

    + + + +
    + +
    + Move a GameObject along a set of bezier curves +
    + +
    +

    Parameters:

    + +
      +
    • + gameObject:GameObject + GameObject + + +
      +

      Gameobject that you wish to move

      + +
      + +
    • +
    • + path:Vector3[] + Vector3 + + +
      +

      A set of points that define the curve(s) ex: Point1,Handle2,Handle1,Point2,...

      + +
      + +
    • +
    • + time:float + Float + + +
      +

      The time to complete the tween in

      + +
      + +
    • +
    +
    + +
    +

    Returns:

    + +
    + LTDescr: +

    LTDescr an object that distinguishes the tween

    + +
    +
    + +
    +

    Example:

    + +
    +

    Javascript:
    + LeanTween.move(gameObject, [Vector3(0,0,0),Vector3(1,0,0),Vector3(1,0,0),Vector3(1,0,1)], 2.0) .setEase(LeanTweenType.easeOutQuad).setOrientToPath(true);

    + C#:
    + LeanTween.move(gameObject, new Vector3[]{new Vector3(0f,0f,0f),new Vector3(1f,0f,0f),new Vector3(1f,0f,0f),new Vector3(1f,0f,1f)}, 1.5f).setEase(LeanTweenType.easeOutQuad).setOrientToPath(true);;

    + +
    +
    +
    +
    +

    LeanTween.move

    + +
    + (
      +
    • + gameObject:GameObject +
    • +
    • + vec:Vector3 +
    • +
    • + time:float +
    • +
    ) +
    + + + LTDescr + + + + + + + + +
    +

    + Defined in + LeanTween.cs:1256 +

    + + + +
    + +
    + Move a GameObject to a certain location +
    + +
    +

    Parameters:

    + +
      +
    • + gameObject:GameObject + GameObject + + +
      +

      Gameobject that you wish to move

      + +
      + +
    • +
    • + vec:Vector3 + Vector3 + + +
      +

      to The final positin with which to move to

      + +
      + +
    • +
    • + time:float + Float + + +
      +

      time The time to complete the tween in

      + +
      + +
    • +
    +
    + +
    +

    Returns:

    + +
    + LTDescr: +

    LTDescr an object that distinguishes the tween

    + +
    +
    + +
    +

    Example:

    + +
    +

    LeanTween.move(gameObject, new Vector3(0f,-3f,5f), 2.0f) .setEase( LeanTweenType.easeOutQuad );

    + +
    +
    +
    +
    +

    LeanTween.move (GUI)

    + +
    + (
      +
    • + ltRect:LTRect +
    • +
    • + vec:Vector2 +
    • +
    • + time:float +
    • +
    ) +
    + + + LTDescr + + + + + + + + +
    +

    + Defined in + LeanTween.cs:1375 +

    + + + +
    + +
    + Move a GUI Element to a certain location +
    + +
    +

    Parameters:

    + +
      +
    • + ltRect:LTRect + LTRect + + +
      +

      ltRect LTRect object that you wish to move

      + +
      + +
    • +
    • + vec:Vector2 + Vector2 + + +
      +

      to The final position with which to move to (pixel coordinates)

      + +
      + +
    • +
    • + time:float + Float + + +
      +

      time The time to complete the tween in

      + +
      + +
    • +
    +
    + +
    +

    Returns:

    + +
    + LTDescr: +

    LTDescr an object that distinguishes the tween

    + +
    +
    + +
    +
    +

    LeanTween.move (RectTransform)

    + +
    + (
      +
    • + rectTrans:RectTransform +
    • +
    • + to:Vector3 +
    • +
    • + time:float +
    • +
    ) +
    + + + LTDescr + + + + + + + + +
    +

    + Defined in + LeanTween.cs:1957 +

    + + + +
    + +
    + Move a RectTransform object (used in Unity GUI in 4.6+, for Buttons, Panel, Scrollbar, etc...) +
    + +
    +

    Parameters:

    + +
      +
    • + rectTrans:RectTransform + RectTransform + + +
      +

      RectTransform that you wish to attach the tween to

      + +
      + +
    • +
    • + to:Vector3 + Vector3 + + +
      +

      The final Vector3 with which to tween to

      + +
      + +
    • +
    • + time:float + Float + + +
      +

      The time to complete the tween in

      + +
      + +
    • +
    +
    + +
    +

    Returns:

    + +
    + LTDescr: +

    LTDescr an object that distinguishes the tween

    + +
    +
    + +
    +

    Example:

    + +
    +

    LeanTween.move(gameObject.GetComponent<RectTransform>(), new Vector3(200f,-100f,0f), 1f).setDelay(1f);

    + +
    +
    +
    +
    +

    LeanTween.moveLocal

    + +
    + (
      +
    • + GameObject +
    • +
    • + Vector3 +
    • +
    • + float +
    • +
    ) +
    + + + LTDescr + + + + + + + + +
    +

    + Defined in + LeanTween.cs:1431 +

    + + + +
    + +
    + Move a GameObject to a certain location relative to the parent transform. +
    + +
    +

    Parameters:

    + +
      +
    • + GameObject + GameObject + + +
      +

      gameObject Gameobject that you wish to rotate

      + +
      + +
    • +
    • + Vector3 + Vector3 + + +
      +

      to The final positin with which to move to

      + +
      + +
    • +
    • + float + Float + + +
      +

      time The time to complete the tween in

      + +
      + +
    • +
    +
    + +
    +

    Returns:

    + +
    + LTDescr: +

    LTDescr an object that distinguishes the tween

    + +
    +
    + +
    +
    +

    LeanTween.moveLocal

    + +
    + (
      +
    • + gameObject:GameObject +
    • +
    • + path:Vector3[] +
    • +
    • + time:float +
    • +
    ) +
    + + + LTDescr + + + + + + + + +
    +

    + Defined in + LeanTween.cs:1444 +

    + + + +
    + +
    + Move a GameObject along a set of bezier curves, in local space +
    + +
    +

    Parameters:

    + +
      +
    • + gameObject:GameObject + GameObject + + +
      +

      Gameobject that you wish to move

      + +
      + +
    • +
    • + path:Vector3[] + Vector3 + + +
      +

      A set of points that define the curve(s) ex: Point1,Handle1,Handle2,Point2,...

      + +
      + +
    • +
    • + time:float + Float + + +
      +

      The time to complete the tween in

      + +
      + +
    • +
    +
    + +
    +

    Returns:

    + +
    + LTDescr: +

    LTDescr an object that distinguishes the tween

    + +
    +
    + +
    +

    Example:

    + +
    +

    Javascript:
    + LeanTween.moveLocal(gameObject, [Vector3(0,0,0),Vector3(1,0,0),Vector3(1,0,0),Vector3(1,0,1)], 2.0).setEase(LeanTweenType.easeOutQuad).setOrientToPath(true);

    + C#:
    + LeanTween.moveLocal(gameObject, new Vector3[]{Vector3(0f,0f,0f),Vector3(1f,0f,0f),Vector3(1f,0f,0f),Vector3(1f,0f,1f)}).setEase(LeanTweenType.easeOutQuad).setOrientToPath(true);

    + +
    +
    +
    +
    +

    LeanTween.moveSpline

    + +
    + (
      +
    • + gameObject:GameObject +
    • +
    • + spline:LTSpline +
    • +
    • + time:float +
    • +
    ) +
    + + + LTDescr + + + + + + + + +
    +

    + Defined in + LeanTween.cs:1333 +

    + + + +
    + +
    + Move a GameObject through a set of points +
    + +
    +

    Parameters:

    + +
      +
    • + gameObject:GameObject + GameObject + + +
      +

      Gameobject that you wish to move

      + +
      + +
    • +
    • + spline:LTSpline + LTSpline + + +
      +

      pass a pre-existing LTSpline for the object to move along

      + +
      + +
    • +
    • + time:float + Float + + +
      +

      The time to complete the tween in

      + +
      + +
    • +
    +
    + +
    +

    Returns:

    + +
    + LTDescr: +

    LTDescr an object that distinguishes the tween

    + +
    +
    + +
    +

    Example:

    + +
    +

    Javascript:
    + LeanTween.moveSpline(gameObject, ltSpline, 2.0) .setEase(LeanTweenType.easeOutQuad).setOrientToPath(true);

    + C#:
    + LeanTween.moveSpline(gameObject, ltSpline, 1.5f).setEase(LeanTweenType.easeOutQuad).setOrientToPath(true);

    + +
    +
    +
    +
    +

    LeanTween.moveSpline

    + +
    + (
      +
    • + gameObject:GameObject +
    • +
    • + path:Vector3[] +
    • +
    • + time:float +
    • +
    ) +
    + + + LTDescr + + + + + + + + +
    +

    + Defined in + LeanTween.cs:1312 +

    + + + +
    + +
    + Move a GameObject through a set of points +
    + +
    +

    Parameters:

    + +
      +
    • + gameObject:GameObject + GameObject + + +
      +

      Gameobject that you wish to move

      + +
      + +
    • +
    • + path:Vector3[] + Vector3 + + +
      +

      A set of points that define the curve(s) ex: ControlStart,Pt1,Pt2,Pt3,.. ..ControlEnd
      Note: The first and last item just define the angle of the end points, they are not actually used in the spline path itself. If you do not care about the angle you can jus set the first two items and last two items as the same value.

      + +
      + +
    • +
    • + time:float + Float + + +
      +

      The time to complete the tween in

      + +
      + +
    • +
    +
    + +
    +

    Returns:

    + +
    + LTDescr: +

    LTDescr an object that distinguishes the tween

    + +
    +
    + +
    +

    Example:

    + +
    +

    Javascript:
    + LeanTween.moveSpline(gameObject, [Vector3(0,0,0),Vector3(1,0,0),Vector3(1,0,0),Vector3(1,0,1)], 2.0) .setEase(LeanTweenType.easeOutQuad).setOrientToPath(true);

    + C#:
    + LeanTween.moveSpline(gameObject, new Vector3[]{new Vector3(0f,0f,0f),new Vector3(1f,0f,0f),new Vector3(1f,0f,0f),new Vector3(1f,0f,1f)}, 1.5f).setEase(LeanTweenType.easeOutQuad).setOrientToPath(true);

    + +
    +
    +
    +
    +

    LeanTween.moveSplineLocal

    + +
    + (
      +
    • + gameObject:GameObject +
    • +
    • + path:Vector3[] +
    • +
    • + time:float +
    • +
    ) +
    + + + LTDescr + + + + + + + + +
    +

    + Defined in + LeanTween.cs:1354 +

    + + + +
    + +
    + Move a GameObject through a set of points, in local space +
    + +
    +

    Parameters:

    + +
      +
    • + gameObject:GameObject + GameObject + + +
      +

      Gameobject that you wish to move

      + +
      + +
    • +
    • + path:Vector3[] + Vector3 + + +
      +

      A set of points that define the curve(s) ex: ControlStart,Pt1,Pt2,Pt3,.. ..ControlEnd

      + +
      + +
    • +
    • + time:float + Float + + +
      +

      The time to complete the tween in

      + +
      + +
    • +
    +
    + +
    +

    Returns:

    + +
    + LTDescr: +

    LTDescr an object that distinguishes the tween

    + +
    +
    + +
    +

    Example:

    + +
    +

    Javascript:
    + LeanTween.moveSpline(gameObject, [Vector3(0,0,0),Vector3(1,0,0),Vector3(1,0,0),Vector3(1,0,1)], 2.0) .setEase(LeanTweenType.easeOutQuad).setOrientToPath(true);

    + C#:
    + LeanTween.moveSpline(gameObject, new Vector3[]{new Vector3(0f,0f,0f),new Vector3(1f,0f,0f),new Vector3(1f,0f,0f),new Vector3(1f,0f,1f)}, 1.5f).setEase(LeanTweenType.easeOutQuad).setOrientToPath(true);

    + +
    +
    +
    +
    +

    LeanTween.moveX

    + +
    + (
      +
    • + gameObject:GameObject +
    • +
    • + to:float +
    • +
    • + time:float +
    • +
    ) +
    + + + LTDescr + + + + + + + + +
    +

    + Defined in + LeanTween.cs:1392 +

    + + + +
    + +
    + Move a GameObject along the x-axis +
    + +
    +

    Parameters:

    + +
      +
    • + gameObject:GameObject + GameObject + + +
      +

      gameObject Gameobject that you wish to move

      + +
      + +
    • +
    • + to:float + Float + + +
      +

      to The final position with which to move to

      + +
      + +
    • +
    • + time:float + Float + + +
      +

      time The time to complete the move in

      + +
      + +
    • +
    +
    + +
    +

    Returns:

    + +
    + LTDescr: +

    LTDescr an object that distinguishes the tween

    + +
    +
    + +
    +
    +

    LeanTween.moveX (RectTransform)

    + +
    + (
      +
    • + rectTrans:RectTransform +
    • +
    • + to:float +
    • +
    • + time:float +
    • +
    ) +
    + + + LTDescr + + + + + + + + +
    +

    + Defined in + LeanTween.cs:1971 +

    + + + +
    + +
    + Move a RectTransform object affecting x-axis only (used in Unity GUI in 4.6+, for Buttons, Panel, Scrollbar, etc...) +
    + +
    +

    Parameters:

    + +
      +
    • + rectTrans:RectTransform + RectTransform + + +
      +

      RectTransform that you wish to attach the tween to

      + +
      + +
    • +
    • + to:float + Float + + +
      +

      The final x location with which to tween to

      + +
      + +
    • +
    • + time:float + Float + + +
      +

      The time to complete the tween in

      + +
      + +
    • +
    +
    + +
    +

    Returns:

    + +
    + LTDescr: +

    LTDescr an object that distinguishes the tween

    + +
    +
    + +
    +

    Example:

    + +
    +

    LeanTween.moveX(gameObject.GetComponent<RectTransform>(), 200f, 1f).setDelay(1f);

    + +
    +
    +
    +
    +

    LeanTween.moveY

    + +
    + (
      +
    • + GameObject +
    • +
    • + float +
    • +
    • + float +
    • +
    ) +
    + + + LTDescr + + + + + + + + +
    +

    + Defined in + LeanTween.cs:1405 +

    + + + +
    + +
    + Move a GameObject along the y-axis +
    + +
    +

    Parameters:

    + +
      +
    • + GameObject + GameObject + + +
      +

      gameObject Gameobject that you wish to move

      + +
      + +
    • +
    • + float + Float + + +
      +

      to The final position with which to move to

      + +
      + +
    • +
    • + float + Float + + +
      +

      time The time to complete the move in

      + +
      + +
    • +
    +
    + +
    +

    Returns:

    + +
    + LTDescr: +

    LTDescr an object that distinguishes the tween

    + +
    +
    + +
    +
    +

    LeanTween.moveY (RectTransform)

    + +
    + (
      +
    • + rectTrans:RectTransform +
    • +
    • + to:float +
    • +
    • + time:float +
    • +
    ) +
    + + + LTDescr + + + + + + + + +
    +

    + Defined in + LeanTween.cs:1985 +

    + + + +
    + +
    + Move a RectTransform object affecting y-axis only (used in Unity GUI in 4.6+, for Buttons, Panel, Scrollbar, etc...) +
    + +
    +

    Parameters:

    + +
      +
    • + rectTrans:RectTransform + RectTransform + + +
      +

      RectTransform that you wish to attach the tween to

      + +
      + +
    • +
    • + to:float + Float + + +
      +

      The final y location with which to tween to

      + +
      + +
    • +
    • + time:float + Float + + +
      +

      The time to complete the tween in

      + +
      + +
    • +
    +
    + +
    +

    Returns:

    + +
    + LTDescr: +

    LTDescr an object that distinguishes the tween

    + +
    +
    + +
    +

    Example:

    + +
    +

    LeanTween.moveY(gameObject.GetComponent<RectTransform>(), 200f, 1f).setDelay(1f);

    + +
    +
    +
    +
    +

    LeanTween.moveZ

    + +
    + (
      +
    • + GameObject +
    • +
    • + float +
    • +
    • + float +
    • +
    ) +
    + + + LTDescr + + + + + + + + +
    +

    + Defined in + LeanTween.cs:1418 +

    + + + +
    + +
    + Move a GameObject along the z-axis +
    + +
    +

    Parameters:

    + +
      +
    • + GameObject + GameObject + + +
      +

      gameObject Gameobject that you wish to move

      + +
      + +
    • +
    • + float + Float + + +
      +

      to The final position with which to move to

      + +
      + +
    • +
    • + float + Float + + +
      +

      time The time to complete the move in

      + +
      + +
    • +
    +
    + +
    +

    Returns:

    + +
    + LTDescr: +

    LTDescr an object that distinguishes the tween

    + +
    +
    + +
    +
    +

    LeanTween.moveZ (RectTransform)

    + +
    + (
      +
    • + rectTrans:RectTransform +
    • +
    • + to:float +
    • +
    • + time:float +
    • +
    ) +
    + + + LTDescr + + + + + + + + +
    +

    + Defined in + LeanTween.cs:1999 +

    + + + +
    + +
    + Move a RectTransform object affecting z-axis only (used in Unity GUI in 4.6+, for Buttons, Panel, Scrollbar, etc...)n +
    + +
    +

    Parameters:

    + +
      +
    • + rectTrans:RectTransform + RectTransform + + +
      +

      RectTransform that you wish to attach the tween to

      + +
      + +
    • +
    • + to:float + Float + + +
      +

      The final x location with which to tween to

      + +
      + +
    • +
    • + time:float + Float + + +
      +

      The time to complete the tween in

      + +
      + +
    • +
    +
    + +
    +

    Returns:

    + +
    + LTDescr: +

    LTDescr an object that distinguishes the tween

    + +
    +
    + +
    +

    Example:

    + +
    +

    LeanTween.moveZ(gameObject.GetComponent<RectTransform>(), 200f, 1f).setDelay(1f);

    + +
    +
    +
    +
    +

    LeanTween.pause

    + +
    + (
      +
    • + gameObject:GameObject +
    • +
    ) +
    + + + + + + + + +
    +

    + Defined in + LeanTween.cs:712 +

    + + + +
    + +
    + Pause all tweens for a GameObject +
    + +
    +

    Parameters:

    + +
      +
    • + gameObject:GameObject + GameObject + + +
      +

      GameObject whose tweens you want to pause

      + +
      + +
    • +
    +
    + + +
    +
    +

    LeanTween.pause

    + +
    + (
      +
    • + id:int +
    • +
    ) +
    + + + + + + + + +
    +

    + Defined in + LeanTween.cs:693 +

    + + + +
    + +
    + Pause all tweens for a GameObject +
    + +
    +

    Parameters:

    + +
      +
    • + id:int + Int + + +
      +

      Id of the tween you want to pause

      + +
      + +
    • +
    +
    + + +
    +

    Example:

    + +
    +

    int id = LeanTween.moveX(gameObject, 5, 1.0).id
    + LeanTween.pause( id );
    + // Later....
    + LeanTween.resume( id );

    + +
    +
    +
    +
    +

    LeanTween.pauseAll

    + + () + + + + + + + + +
    +

    + Defined in + LeanTween.cs:727 +

    + + + +
    + +
    + Pause all active tweens +
    + + + +
    +
    +

    LeanTween.play

    + +
    + (
      +
    • + rectTransform:RectTransform +
    • +
    • + sprites:Sprite[] +
    • +
    ) +
    + + + LTDescr + + + + + + + + +
    +

    + Defined in + LeanTween.cs:1023 +

    + + + +
    + +
    + Play a sequence of images on a Unity UI Object +
    + +
    +

    Parameters:

    + +
      +
    • + rectTransform:RectTransform + RectTransform + + +
      +

      RectTransform that you want to play the sequence of sprites on

      + +
      + +
    • +
    • + sprites:Sprite[] + Sprite + + +
      +

      Sequence of sprites to be played

      + +
      + +
    • +
    +
    + +
    +

    Returns:

    + +
    + LTDescr: +

    LTDescr an object that distinguishes the tween

    + +
    +
    + +
    +

    Example:

    + +
    +

    LeanTween.play(gameObject.GetComponent<RectTransform>(), sprites).setLoopPingPong();

    + +
    +
    +
    +
    +

    LeanTween.removeListener

    + +
    + (
      +
    • + caller:GameObject +
    • +
    • + eventId:int +
    • +
    • + callback:System.Action<LTEvent> +
    • +
    ) +
    + + + + + + + + +
    +

    + Defined in + LeanTween.cs:2800 +

    + + + +
    + +
    +

    Remove an event listener you have added

    + +
    + +
    +

    Parameters:

    + +
      +
    • + caller:GameObject + GameObject + + +
      +

      the gameObject the listener is attached to

      + +
      + +
    • +
    • + eventId:int + Int + + +
      +

      a unique int that describes the event (best to use an enum)

      + +
      + +
    • +
    • + callback:System.Action<LTEvent> + System.Action + + +
      +

      the method that was specified to call when the event has been dispatched

      + +
      + +
    • +
    +
    + + +
    +

    Example:

    + +
    +

    LeanTween.removeListener(gameObject, (int)MyEvents.JUMP, jumpUp);
    +
    + void jumpUp( LTEvent e ){ }

    + +
    +
    +
    +
    +

    LeanTween.resume

    + +
    + (
      +
    • + id:int +
    • +
    ) +
    + + + + + + + + +
    +

    + Defined in + LeanTween.cs:756 +

    + + + +
    + +
    + Resume a specific tween +
    + +
    +

    Parameters:

    + +
      +
    • + id:int + Int + + +
      +

      Id of the tween you want to resume

      + +
      + +
    • +
    +
    + + +
    +

    Example:

    + +
    +

    int id = LeanTween.moveX(gameObject, 5, 1.0).id
    + LeanTween.pause( id );
    + // Later....
    + LeanTween.resume( id );

    + +
    +
    +
    +
    +

    LeanTween.resume

    + +
    + (
      +
    • + gameObject:GameObject +
    • +
    ) +
    + + + + + + + + +
    +

    + Defined in + LeanTween.cs:775 +

    + + + +
    + +
    + Resume all the tweens on a GameObject +
    + +
    +

    Parameters:

    + +
      +
    • + gameObject:GameObject + GameObject + + +
      +

      GameObject whose tweens you want to resume

      + +
      + +
    • +
    +
    + + +
    +
    +

    LeanTween.resumeAll

    + + () + + + + + + + + +
    +

    + Defined in + LeanTween.cs:739 +

    + + + +
    + +
    + Resume all active tweens +
    + + + +
    +
    +

    LeanTween.rotate

    + +
    + (
      +
    • + GameObject +
    • +
    • + Vector3 +
    • +
    • + float +
    • +
    ) +
    + + + LTDescr + + + + + + + + +
    +

    + Defined in + LeanTween.cs:1507 +

    + + + +
    + +
    + Rotate a GameObject, to values are in passed in degrees +
    + +
    +

    Parameters:

    + +
      +
    • + GameObject + GameObject + + +
      +

      gameObject Gameobject that you wish to rotate

      + +
      + +
    • +
    • + Vector3 + Vector3 + + +
      +

      to The final rotation with which to rotate to

      + +
      + +
    • +
    • + float + Float + + +
      +

      time The time to complete the tween in

      + +
      + +
    • +
    +
    + +
    +

    Returns:

    + +
    + LTDescr: +

    LTDescr an object that distinguishes the tween

    + +
    +
    + +
    +

    Example:

    + +
    +

    LeanTween.rotate(cube, new Vector3(180f,30f,0f), 1.5f);

    + +
    +
    +
    +
    +

    LeanTween.rotate

    + +
    + (
      +
    • + ltRect:LTRect +
    • +
    • + to:float +
    • +
    • + time:float +
    • +
    • + optional:Array +
    • +
    ) +
    + + + LTDescr + + + + + + + + +
    +

    + Defined in + LeanTween.cs:1522 +

    + + + +
    + +
    + Rotate a GUI element (using an LTRect object), to a value that is in degrees +
    + +
    +

    Parameters:

    + +
      +
    • + ltRect:LTRect + LTRect + + +
      +

      LTRect that you wish to rotate

      + +
      + +
    • +
    • + to:float + Float + + +
      +

      The final rotation with which to rotate to

      + +
      + +
    • +
    • + time:float + Float + + +
      +

      The time to complete the tween in

      + +
      + +
    • +
    • + optional:Array + Array + + +
      +

      Object Array where you can pass optional items.

      + +
      + +
    • +
    +
    + +
    +

    Returns:

    + +
    + LTDescr: +

    LTDescr an object that distinguishes the tween

    + +
    +
    + +
    +

    Example:

    + +
    +

    if(GUI.Button(buttonRect.rect, "Rotate"))
    + LeanTween.rotate( buttonRect4, 150.0f, 1.0f).setEase(LeanTweenType.easeOutElastic);
    + GUI.matrix = Matrix4x4.identity;

    + +
    +
    +
    +
    +

    LeanTween.rotate (RectTransform)

    + +
    + (
      +
    • + rectTrans:RectTransform +
    • +
    • + to:float +
    • +
    • + time:float +
    • +
    ) +
    + + + LTDescr + + + + + + + + +
    +

    + Defined in + LeanTween.cs:2013 +

    + + + +
    + +
    + Rotate a RectTransform object (used in Unity GUI in 4.6+, for Buttons, Panel, Scrollbar, etc...) +
    + +
    +

    Parameters:

    + +
      +
    • + rectTrans:RectTransform + RectTransform + + +
      +

      RectTransform that you wish to attach the tween to

      + +
      + +
    • +
    • + to:float + Float + + +
      +

      The degree with which to rotate the RectTransform

      + +
      + +
    • +
    • + time:float + Float + + +
      +

      The time to complete the tween in

      + +
      + +
    • +
    +
    + +
    +

    Returns:

    + +
    + LTDescr: +

    LTDescr an object that distinguishes the tween

    + +
    +
    + +
    +

    Example:

    + +
    +

    LeanTween.rotate(gameObject.GetComponent<RectTransform>(), 90f, 1f).setDelay(1f);

    + +
    +
    +
    +
    +

    LeanTween.rotateAround

    + +
    + (
      +
    • + gameObject:GameObject +
    • +
    • + vec:Vector3 +
    • +
    • + degrees:float +
    • +
    • + time:float +
    • +
    ) +
    + + + LTDescr + + + + + + + + +
    +

    + Defined in + LeanTween.cs:1592 +

    + + + +
    + +
    + Rotate a GameObject around a certain Axis (the best method to use when you want to rotate beyond 180 degrees) +
    + +
    +

    Parameters:

    + +
      +
    • + gameObject:GameObject + GameObject + + +
      +

      Gameobject that you wish to rotate

      + +
      + +
    • +
    • + vec:Vector3 + Vector3 + + +
      +

      axis in which to rotate around ex: Vector3.up

      + +
      + +
    • +
    • + degrees:float + Float + + +
      +

      the degrees in which to rotate

      + +
      + +
    • +
    • + time:float + Float + + +
      +

      time The time to complete the rotation in

      + +
      + +
    • +
    +
    + +
    +

    Returns:

    + +
    + LTDescr: +

    LTDescr an object that distinguishes the tween

    + +
    +
    + +
    +

    Example:

    + +
    +

    Example:
    + LeanTween.rotateAround ( gameObject, Vector3.left, 90f, 1f );

    + +
    +
    +
    +
    +

    LeanTween.rotateAround (RectTransform)

    + +
    + (
      +
    • + rectTrans:RectTransform +
    • +
    • + axis:Vector3 +
    • +
    • + to:float +
    • +
    • + time:float +
    • +
    ) +
    + + + LTDescr + + + + + + + + +
    +

    + Defined in + LeanTween.cs:2031 +

    + + + +
    + +
    + Rotate a RectTransform object (used in Unity GUI in 4.6+, for Buttons, Panel, Scrollbar, etc...) +
    + +
    +

    Parameters:

    + +
      +
    • + rectTrans:RectTransform + RectTransform + + +
      +

      RectTransform that you wish to attach the tween to

      + +
      + +
    • +
    • + axis:Vector3 + Vector3 + + +
      +

      The axis in which to rotate the RectTransform (Vector3.forward is most commonly used)

      + +
      + +
    • +
    • + to:float + Float + + +
      +

      The degree with which to rotate the RectTransform

      + +
      + +
    • +
    • + time:float + Float + + +
      +

      The time to complete the tween in

      + +
      + +
    • +
    +
    + +
    +

    Returns:

    + +
    + LTDescr: +

    LTDescr an object that distinguishes the tween

    + +
    +
    + +
    +

    Example:

    + +
    +

    LeanTween.rotateAround(gameObject.GetComponent<RectTransform>(), Vector3.forward, 90f, 1f).setDelay(1f);

    + +
    +
    +
    +
    +

    LeanTween.rotateAroundLocal

    + +
    + (
      +
    • + gameObject:GameObject +
    • +
    • + vec:Vector3 +
    • +
    • + degrees:float +
    • +
    • + time:float +
    • +
    ) +
    + + + LTDescr + + + + + + + + +
    +

    + Defined in + LeanTween.cs:1609 +

    + + + +
    + +
    + Rotate a GameObject around a certain Axis in Local Space (the best method to use when you want to rotate beyond 180 degrees) +
    + +
    +

    Parameters:

    + +
      +
    • + gameObject:GameObject + GameObject + + +
      +

      Gameobject that you wish to rotate

      + +
      + +
    • +
    • + vec:Vector3 + Vector3 + + +
      +

      axis in which to rotate around ex: Vector3.up

      + +
      + +
    • +
    • + degrees:float + Float + + +
      +

      the degrees in which to rotate

      + +
      + +
    • +
    • + time:float + Float + + +
      +

      time The time to complete the rotation in

      + +
      + +
    • +
    +
    + +
    +

    Returns:

    + +
    + LTDescr: +

    LTDescr an object that distinguishes the tween

    + +
    +
    + +
    +

    Example:

    + +
    +

    Example:
    + LeanTween.rotateAround ( gameObject, Vector3.left, 90f, 1f );

    + +
    +
    +
    +
    +

    LeanTween.rotateAroundLocal (RectTransform)

    + +
    + (
      +
    • + rectTrans:RectTransform +
    • +
    • + axis:Vector3 +
    • +
    • + to:float +
    • +
    • + time:float +
    • +
    ) +
    + + + LTDescr + + + + + + + + +
    +

    + Defined in + LeanTween.cs:2046 +

    + + + +
    + +
    + Rotate a RectTransform object around it's local axis (used in Unity GUI in 4.6+, for Buttons, Panel, Scrollbar, etc...) +
    + +
    +

    Parameters:

    + +
      +
    • + rectTrans:RectTransform + RectTransform + + +
      +

      RectTransform that you wish to attach the tween to

      + +
      + +
    • +
    • + axis:Vector3 + Vector3 + + +
      +

      The local axis in which to rotate the RectTransform (Vector3.forward is most commonly used)

      + +
      + +
    • +
    • + to:float + Float + + +
      +

      The degree with which to rotate the RectTransform

      + +
      + +
    • +
    • + time:float + Float + + +
      +

      The time to complete the tween in

      + +
      + +
    • +
    +
    + +
    +

    Returns:

    + +
    + LTDescr: +

    LTDescr an object that distinguishes the tween

    + +
    +
    + +
    +

    Example:

    + +
    +

    LeanTween.rotateAroundLocal(gameObject.GetComponent<RectTransform>(), Vector3.forward, 90f, 1f).setDelay(1f);

    + +
    +
    +
    +
    +

    LeanTween.rotateLocal

    + +
    + (
      +
    • + gameObject:GameObject +
    • +
    • + to:Vector3 +
    • +
    • + time:float +
    • +
    ) +
    + + + LTDescr + + + + + + + + +
    +

    + Defined in + LeanTween.cs:1540 +

    + + + +
    + +
    + Rotate a GameObject in the objects local space (on the transforms localEulerAngles object) +
    + +
    +

    Parameters:

    + +
      +
    • + gameObject:GameObject + GameObject + + +
      +

      Gameobject that you wish to rotate

      + +
      + +
    • +
    • + to:Vector3 + Vector3 + + +
      +

      The final rotation with which to rotate to

      + +
      + +
    • +
    • + time:float + Float + + +
      +

      The time to complete the rotation in

      + +
      + +
    • +
    +
    + +
    +

    Returns:

    + +
    + LTDescr: +

    LTDescr an object that distinguishes the tween

    + +
    +
    + +
    +
    +

    LeanTween.rotateX

    + +
    + (
      +
    • + GameObject +
    • +
    • + to:float +
    • +
    • + time:float +
    • +
    ) +
    + + + LTDescr + + + + + + + + +
    +

    + Defined in + LeanTween.cs:1553 +

    + + + +
    + +
    +

    Rotate a GameObject only on the X axis

    Rotate a GameObject only on the X axis

    + +
    + +
    +

    Parameters:

    + +
      +
    • + GameObject + GameObject + + +
      +

      Gameobject that you wish to rotate

      + +
      + +
    • +
    • + to:float + Float + + +
      +

      The final x-axis rotation with which to rotate

      + +
      + +
    • +
    • + time:float + Float + + +
      +

      The time to complete the rotation in

      + +
      + +
    • +
    +
    + +
    +

    Returns:

    + +
    + LTDescr: +

    LTDescr an object that distinguishes the tween

    + +
    +
    + +
    +
    +

    LeanTween.rotateY

    + +
    + (
      +
    • + GameObject +
    • +
    • + to:float +
    • +
    • + time:float +
    • +
    ) +
    + + + LTDescr + + + + + + + + +
    +

    + Defined in + LeanTween.cs:1566 +

    + + + +
    + +
    + Rotate a GameObject only on the Y axis +
    + +
    +

    Parameters:

    + +
      +
    • + GameObject + GameObject + + +
      +

      Gameobject that you wish to rotate

      + +
      + +
    • +
    • + to:float + Float + + +
      +

      The final y-axis rotation with which to rotate

      + +
      + +
    • +
    • + time:float + Float + + +
      +

      The time to complete the rotation in

      + +
      + +
    • +
    +
    + +
    +

    Returns:

    + +
    + LTDescr: +

    LTDescr an object that distinguishes the tween

    + +
    +
    + +
    +
    +

    LeanTween.rotateZ

    + +
    + (
      +
    • + GameObject +
    • +
    • + to:float +
    • +
    • + time:float +
    • +
    ) +
    + + + LTDescr + + + + + + + + +
    +

    + Defined in + LeanTween.cs:1579 +

    + + + +
    + +
    + Rotate a GameObject only on the Z axis +
    + +
    +

    Parameters:

    + +
      +
    • + GameObject + GameObject + + +
      +

      Gameobject that you wish to rotate

      + +
      + +
    • +
    • + to:float + Float + + +
      +

      The final z-axis rotation with which to rotate

      + +
      + +
    • +
    • + time:float + Float + + +
      +

      The time to complete the rotation in

      + +
      + +
    • +
    +
    + +
    +

    Returns:

    + +
    + LTDescr: +

    LTDescr an object that distinguishes the tween

    + +
    +
    + +
    +
    +

    LeanTween.scale

    + +
    + (
      +
    • + gameObject:GameObject +
    • +
    • + vec:Vector3 +
    • +
    • + time:float +
    • +
    ) +
    + + + LTDescr + + + + + + + + +
    +

    + Defined in + LeanTween.cs:1626 +

    + + + +
    + +
    + Scale a GameObject to a certain size +
    + +
    +

    Parameters:

    + +
      +
    • + gameObject:GameObject + GameObject + + +
      +

      gameObject Gameobject that you wish to scale

      + +
      + +
    • +
    • + vec:Vector3 + Vector3 + + +
      +

      to The size with which to tween to

      + +
      + +
    • +
    • + time:float + Float + + +
      +

      time The time to complete the tween in

      + +
      + +
    • +
    +
    + +
    +

    Returns:

    + +
    + LTDescr: +

    LTDescr an object that distinguishes the tween

    + +
    +
    + +
    +
    +

    LeanTween.scale (GUI)

    + +
    + (
      +
    • + LTRect +
    • +
    • + Vector2 +
    • +
    • + float +
    • +
    ) +
    + + + LTDescr + + + + + + + + +
    +

    + Defined in + LeanTween.cs:1639 +

    + + + +
    + +
    + Scale a GUI Element to a certain width and height +
    + +
    +

    Parameters:

    + +
      +
    • + LTRect + LTRect + + +
      +

      ltRect LTRect object that you wish to move

      + +
      + +
    • +
    • + Vector2 + Vector2 + + +
      +

      to The final width and height to scale to (pixel based)

      + +
      + +
    • +
    • + float + Float + + +
      +

      time The time to complete the tween in

      + +
      + +
    • +
    +
    + +
    +

    Returns:

    + +
    + LTDescr: +

    LTDescr an object that distinguishes the tween

    + +
    +
    + +
    +

    Example:

    + +
    +

    Example Javascript:
    + var bRect:LTRect = new LTRect( 0, 0, 100, 50 );
    + LeanTween.scale( bRect, Vector2(bRect.rect.width, bRect.rect.height) * 1.3, 0.25 ).setEase(LeanTweenType.easeOutBounce);
    + function OnGUI(){
    +   if(GUI.Button(bRect.rect, "Scale")){ }
    + }
    +
    + Example C#:
    + LTRect bRect = new LTRect( 0f, 0f, 100f, 50f );
    + LeanTween.scale( bRect, new Vector2(150f,75f), 0.25f ).setEase(LeanTweenType.easeOutBounce);
    + void OnGUI(){
    +   if(GUI.Button(bRect.rect, "Scale")){ }
    + }

    + +
    +
    +
    +
    +

    LeanTween.scale (RectTransform)

    + +
    + (
      +
    • + rectTrans:RectTransform +
    • +
    • + to:Vector3 +
    • +
    • + time:float +
    • +
    ) +
    + + + LTDescr + + + + + + + + +
    +

    + Defined in + LeanTween.cs:2061 +

    + + + +
    + +
    + Scale a RectTransform object (used in Unity GUI in 4.6+, for Buttons, Panel, Scrollbar, etc...) +
    + +
    +

    Parameters:

    + +
      +
    • + rectTrans:RectTransform + RectTransform + + +
      +

      RectTransform that you wish to attach the tween to

      + +
      + +
    • +
    • + to:Vector3 + Vector3 + + +
      +

      The final Vector3 with which to tween to (localScale)

      + +
      + +
    • +
    • + time:float + Float + + +
      +

      The time to complete the tween in

      + +
      + +
    • +
    +
    + +
    +

    Returns:

    + +
    + LTDescr: +

    LTDescr an object that distinguishes the tween

    + +
    +
    + +
    +

    Example:

    + +
    +

    LeanTween.scale(gameObject.GetComponent<RectTransform>(), gameObject.GetComponent<RectTransform>().localScale*2f, 1f).setDelay(1f);

    + +
    +
    +
    +
    +

    LeanTween.scaleX

    + +
    + (
      +
    • + gameObject:GameObject +
    • +
    • + scaleTo:float +
    • +
    • + time:float +
    • +
    ) +
    + + + LTDescr + + + + + + + + +
    +

    + Defined in + LeanTween.cs:1666 +

    + + + +
    + +
    + Scale a GameObject to a certain size along the x-axis only +
    + +
    +

    Parameters:

    + +
      +
    • + gameObject:GameObject + GameObject + + +
      +

      Gameobject that you wish to scale

      + +
      + +
    • +
    • + scaleTo:float + Float + + +
      +

      the size with which to scale to

      + +
      + +
    • +
    • + time:float + Float + + +
      +

      the time to complete the tween in

      + +
      + +
    • +
    +
    + +
    +

    Returns:

    + +
    + LTDescr: +

    LTDescr an object that distinguishes the tween

    + +
    +
    + +
    +
    +

    LeanTween.scaleY

    + +
    + (
      +
    • + gameObject:GameObject +
    • +
    • + scaleTo:float +
    • +
    • + time:float +
    • +
    ) +
    + + + LTDescr + + + + + + + + +
    +

    + Defined in + LeanTween.cs:1679 +

    + + + +
    + +
    + Scale a GameObject to a certain size along the y-axis only +
    + +
    +

    Parameters:

    + +
      +
    • + gameObject:GameObject + GameObject + + +
      +

      Gameobject that you wish to scale

      + +
      + +
    • +
    • + scaleTo:float + Float + + +
      +

      the size with which to scale to

      + +
      + +
    • +
    • + time:float + Float + + +
      +

      the time to complete the tween in

      + +
      + +
    • +
    +
    + +
    +

    Returns:

    + +
    + LTDescr: +

    LTDescr an object that distinguishes the tween

    + +
    +
    + +
    +
    +

    LeanTween.scaleZ

    + +
    + (
      +
    • + gameObject:GameObject +
    • +
    • + scaleTo:float +
    • +
    • + time:float +
    • +
    ) +
    + + + LTDescr + + + + + + + + +
    +

    + Defined in + LeanTween.cs:1692 +

    + + + +
    + +
    + Scale a GameObject to a certain size along the z-axis only +
    + +
    +

    Parameters:

    + +
      +
    • + gameObject:GameObject + GameObject + + +
      +

      Gameobject that you wish to scale

      + +
      + +
    • +
    • + scaleTo:float + Float + + +
      +

      the size with which to scale to

      + +
      + +
    • +
    • + time:float + Float + + +
      +

      the time to complete the tween in

      + +
      + +
    • +
    +
    + +
    +

    Returns:

    + +
    + LTDescr: +

    LTDescr an object that distinguishes the tween

    + +
    +
    + +
    +
    +

    LeanTween.sequence

    + + () + + + LTSeq + + + + + + + + +
    +

    + Defined in + LeanTween.cs:1041 +

    + + + +
    + +
    + Retrieve a sequencer object where you can easily chain together tweens and methods one after another +
    + + +
    +

    Returns:

    + +
    + LTSeq: +

    LTSeq an object that you can add tweens, methods and time on to

    + +
    +
    + +
    +

    Example:

    + +
    +

    var seq = LeanTween.sequence();
    + seq.add(1f); // delay everything one second
    + seq.add( () => { // fire an event before start
    +  Debug.Log("I have started");
    + });
    + seq.add( LeanTween.move(cube1, Vector3.one * 10f, 1f) ); // do a tween
    + seq.add( () => { // fire event after tween
    +  Debug.Log("We are done now");
    + });;

    + +
    +
    +
    +
    +

    LeanTween.size (RectTransform)

    + +
    + (
      +
    • + rectTrans:RectTransform +
    • +
    • + to:Vector2 +
    • +
    • + time:float +
    • +
    ) +
    + + + LTDescr + + + + + + + + +
    +

    + Defined in + LeanTween.cs:2075 +

    + + + +
    + +
    + Change the sizeDelta of a RectTransform object (used in Unity Canvas, for Buttons, Panel, Scrollbar, etc...) +
    + +
    +

    Parameters:

    + +
      +
    • + rectTrans:RectTransform + RectTransform + + +
      +

      RectTransform that you wish to attach the tween to

      + +
      + +
    • +
    • + to:Vector2 + Vector2 + + +
      +

      The final Vector2 the tween will end at for sizeDelta property

      + +
      + +
    • +
    • + time:float + Float + + +
      +

      The time to complete the tween in

      + +
      + +
    • +
    +
    + +
    +

    Returns:

    + +
    + LTDescr: +

    LTDescr an object that distinguishes the tween

    + +
    +
    + +
    +

    Example:

    + +
    +

    LeanTween.size(gameObject.GetComponent<RectTransform>(), gameObject.GetComponent<RectTransform>().sizeDelta*2f, 1f).setDelay(1f);

    + +
    +
    +
    +
    +

    LeanTween.tweensRunning

    + + () + + + + + + + + +
    +

    + Defined in + LeanTween.cs:290 +

    + + + +
    + +
    + Find out how many tweens you have animating at a given time +
    + + + +
    +

    Example:

    + +
    +

    Debug.Log("I have "+LeanTween.tweensRunning+" animating!");

    + +
    +
    +
    +
    +

    LeanTween.value (Color)

    + +
    + (
      +
    • + GameObject +
    • +
    • + callOnUpdate:Action<Color> +
    • +
    • + Color +
    • +
    • + Color +
    • +
    • + Color +
    • +
    ) +
    + + + LTDescr + + + + + + + + +
    +

    + Defined in + LeanTween.cs:1867 +

    + + + +
    + +
    + Tween from one color to another +
    + +
    +

    Parameters:

    + +
      +
    • + GameObject + GameObject + + +
      +

      gameObject GameObject with which to tie the tweening with. This is only used when you need to cancel this tween, it does not actually perform any operations on this gameObject

      + +
      + +
    • +
    • + callOnUpdate:Action<Color> + Action + + +
      +

      The function that is called on every Update frame, this function needs to accept a color value ex: function updateValue( Color val ){ }

      + +
      + +
    • +
    • + Color + Color + + +
      +

      from The original value to start the tween from

      + +
      + +
    • +
    • + Color + Color + + +
      +

      to The value to end the tween on

      + +
      + +
    • +
    • + Color + Color + + +
      +

      time The time to complete the tween in

      + +
      + +
    • +
    +
    + +
    +

    Returns:

    + +
    + LTDescr: +

    LTDescr an object that distinguishes the tween

    + +
    +
    + +
    +

    Example:

    + +
    +

    Example Javascript:
    + LeanTween.value( gameObject, updateValueExampleCallback, Color.red, Color.green, 1f).setEase(LeanTweenType.easeOutElastic);
    + function updateValueExampleCallback( val:Color ){
    +   Debug.Log("tweened color:"+val+" set this to whatever variable you are tweening...");
    + }
    +
    + Example C#:
    + LeanTween.value( gameObject, updateValueExampleCallback, Color.red, Color.green, 1f).setEase(LeanTweenType.easeOutElastic);
    + void updateValueExampleCallback( Color val ){
    +   Debug.Log("tweened color:"+val+" set this to whatever variable you are tweening...");
    + }

    + +
    +
    +
    +
    +

    LeanTween.value (Color)

    + +
    + (
      +
    • + gameObject:GameObject +
    • +
    • + from:Color +
    • +
    • + to:Color +
    • +
    • + time:float +
    • +
    ) +
    + + + LTDescr + + + + + + + + +
    +

    + Defined in + LeanTween.cs:1780 +

    + + + +
    + +
    +

    Tween any particular value (Color)

    + +
    + +
    +

    Parameters:

    + +
      +
    • + gameObject:GameObject + GameObject + + +
      +

      Gameobject that you wish to attach the tween to

      + +
      + +
    • +
    • + from:Color + Color + + +
      +

      The original value to start the tween from

      + +
      + +
    • +
    • + to:Color + Color + + +
      +

      The final Color with which to tween to

      + +
      + +
    • +
    • + time:float + Float + + +
      +

      The time to complete the tween in

      + +
      + +
    • +
    +
    + +
    +

    Returns:

    + +
    + LTDescr: +

    LTDescr an object that distinguishes the tween

    + +
    +
    + +
    +

    Example:

    + +
    +

    Example Javascript:
    + LeanTween.value( gameObject, Color.red, Color.yellow, 5f).setOnUpdate( function( val:Color ){
    +  Debug.Log("tweened val:"+val);
    + } );
    +
    + Example C#:
    + LeanTween.value( gameObject, Color.red, Color.yellow, 5f).setOnUpdate( (Color val)=>{
    +  Debug.Log("tweened val:"+val);
    + } );

    + +
    +
    +
    +
    +

    LeanTween.value (float)

    + +
    + (
      +
    • + gameObject:GameObject +
    • +
    • + from:float +
    • +
    • + to:float +
    • +
    • + time:float +
    • +
    ) +
    + + + LTDescr + + + + + + + + +
    +

    + Defined in + LeanTween.cs:1705 +

    + + + +
    + +
    + Tween any particular value (float) +
    + +
    +

    Parameters:

    + +
      +
    • + gameObject:GameObject + GameObject + + +
      +

      Gameobject that you wish to attach the tween to

      + +
      + +
    • +
    • + from:float + Float + + +
      +

      The original value to start the tween from

      + +
      + +
    • +
    • + to:float + Vector3 + + +
      +

      The final float with which to tween to

      + +
      + +
    • +
    • + time:float + Float + + +
      +

      The time to complete the tween in

      + +
      + +
    • +
    +
    + +
    +

    Returns:

    + +
    + LTDescr: +

    LTDescr an object that distinguishes the tween

    + +
    +
    + +
    +

    Example:

    + +
    +

    Example Javascript:
    + LeanTween.value( gameObject, 1f, 5f, 5f).setOnUpdate( function( val:float ){
    +  Debug.Log("tweened val:"+val);
    + } );
    +
    + Example C#:
    + LeanTween.value( gameObject, 1f, 5f, 5f).setOnUpdate( (float val)=>{
    +  Debug.Log("tweened val:"+val);
    + } );

    + +
    +
    +
    +
    +

    LeanTween.value (float)

    + +
    + (
      +
    • + GameObject +
    • +
    • + callOnUpdateRatio:Action<float,float> +
    • +
    • + float +
    • +
    • + float +
    • +
    • + float +
    • +
    ) +
    + + + LTDescr + + + + + + + + +
    +

    + Defined in + LeanTween.cs:1839 +

    + + + +
    + +
    + Tweens any float value, it does not need to be tied to any particular type or GameObject +
    + +
    +

    Parameters:

    + +
      +
    • + GameObject + GameObject + + +
      +

      gameObject GameObject with which to tie the tweening with. This is only used when you need to cancel this tween, it does not actually perform any operations on this gameObject

      + +
      + +
    • +
    • + callOnUpdateRatio:Action<float,float> + Action + + +
      +

      Function that's called every Update frame. It must accept two float values ex: function updateValue( float val, float ratio){ }

      + +
      + +
    • +
    • + float + Float + + +
      +

      from The original value to start the tween from

      + +
      + +
    • +
    • + float + Float + + +
      +

      to The value to end the tween on

      + +
      + +
    • +
    • + float + Float + + +
      +

      time The time to complete the tween in

      + +
      + +
    • +
    +
    + +
    +

    Returns:

    + +
    + LTDescr: +

    LTDescr an object that distinguishes the tween

    + +
    +
    + +
    +

    Example:

    + +
    +

    Example Javascript:
    + LeanTween.value( gameObject, updateValueExampleCallback, 180f, 270f, 1f).setEase(LeanTweenType.easeOutElastic);
    + function updateValueExampleCallback( val:float, ratio:float ){
    +   Debug.Log("tweened value:"+val+" percent complete:"+ratio100);
    + }
    +
    + Example C#:
    + LeanTween.value( gameObject, updateValueExampleCallback, 180f, 270f, 1f).setEase(LeanTweenType.easeOutElastic);
    + void updateValueExampleCallback( float val, float ratio ){
    +   Debug.Log("tweened value:"+val+" percent complete:"+ratio
    100);
    + }

    + +
    +
    +
    +
    +

    LeanTween.value (float)

    + +
    + (
      +
    • + GameObject +
    • +
    • + callOnUpdate:Action<float> +
    • +
    • + float +
    • +
    • + float +
    • +
    • + float +
    • +
    ) +
    + + + LTDescr + + + + + + + + +
    +

    + Defined in + LeanTween.cs:1811 +

    + + + +
    + +
    + Tween any particular value, it does not need to be tied to any particular type or GameObject +
    + +
    +

    Parameters:

    + +
      +
    • + GameObject + GameObject + + +
      +

      gameObject GameObject with which to tie the tweening with. This is only used when you need to cancel this tween, it does not actually perform any operations on this gameObject

      + +
      + +
    • +
    • + callOnUpdate:Action<float> + Action + + +
      +

      The function that is called on every Update frame, this function needs to accept a float value ex: function updateValue( float val ){ }

      + +
      + +
    • +
    • + float + Float + + +
      +

      from The original value to start the tween from

      + +
      + +
    • +
    • + float + Float + + +
      +

      to The value to end the tween on

      + +
      + +
    • +
    • + float + Float + + +
      +

      time The time to complete the tween in

      + +
      + +
    • +
    +
    + +
    +

    Returns:

    + +
    + LTDescr: +

    LTDescr an object that distinguishes the tween

    + +
    +
    + +
    +

    Example:

    + +
    +

    Example Javascript:
    + LeanTween.value( gameObject, updateValueExampleCallback, 180f, 270f, 1f).setEase(LeanTweenType.easeOutElastic);
    + function updateValueExampleCallback( val:float ){
    +   Debug.Log("tweened value:"+val+" set this to whatever variable you are tweening...");
    + }
    +
    + Example C#:
    + LeanTween.value( gameObject, updateValueExampleCallback, 180f, 270f, 1f).setEase(LeanTweenType.easeOutElastic);
    + void updateValueExampleCallback( float val ){
    +   Debug.Log("tweened value:"+val+" set this to whatever variable you are tweening...");
    + }

    + +
    +
    +
    +
    +

    LeanTween.value (float,object)

    + +
    + (
      +
    • + gameObject:GameObject +
    • +
    • + callOnUpdate:Action<float,object> +
    • +
    • + from:float +
    • +
    • + to:float +
    • +
    • + time:float +
    • +
    ) +
    + + + LTDescr + + + + + + + + +
    +

    + Defined in + LeanTween.cs:1930 +

    + + + +
    + +
    + Tween any particular value (float) +
    + +
    +

    Parameters:

    + +
      +
    • + gameObject:GameObject + GameObject + + +
      +

      Gameobject that you wish to attach the tween to

      + +
      + +
    • +
    • + callOnUpdate:Action<float,object> + Action + + +
      +

      The function that is called on every Update frame, this function needs to accept a float value ex: function updateValue( Vector3 val, object obj ){ }

      + +
      + +
    • +
    • + from:float + Float + + +
      +

      The original value to start the tween from

      + +
      + +
    • +
    • + to:float + Vector3 + + +
      +

      The final Vector3 with which to tween to

      + +
      + +
    • +
    • + time:float + Float + + +
      +

      The time to complete the tween in

      + +
      + +
    • +
    +
    + +
    +

    Returns:

    + +
    + LTDescr: +

    LTDescr an object that distinguishes the tween

    + +
    +
    + +
    +
    +

    LeanTween.value (Vector2)

    + +
    + (
      +
    • + gameObject:GameObject +
    • +
    • + callOnUpdate:Action<Vector2> +
    • +
    • + from:Vector2 +
    • +
    • + to:Vector2 +
    • +
    • + time:float +
    • +
    ) +
    + + + LTDescr + + + + + + + + +
    +

    + Defined in + LeanTween.cs:1900 +

    + + + +
    + +
    + Tween any particular value (Vector2), this could be used to tween an arbitrary value like offset property +
    + +
    +

    Parameters:

    + +
      +
    • + gameObject:GameObject + GameObject + + +
      +

      Gameobject that you wish to attach the tween to

      + +
      + +
    • +
    • + callOnUpdate:Action<Vector2> + Action + + +
      +

      The function that is called on every Update frame, this function needs to accept a float value ex: function updateValue( Vector3 val ){ }

      + +
      + +
    • +
    • + from:Vector2 + Float + + +
      +

      The original value to start the tween from

      + +
      + +
    • +
    • + to:Vector2 + Vector2 + + +
      +

      The final Vector3 with which to tween to

      + +
      + +
    • +
    • + time:float + Float + + +
      +

      The time to complete the tween in

      + +
      + +
    • +
    +
    + +
    +

    Returns:

    + +
    + LTDescr: +

    LTDescr an object that distinguishes the tween

    + +
    +
    + +
    +
    +

    LeanTween.value (Vector2)

    + +
    + (
      +
    • + gameObject:GameObject +
    • +
    • + from:Vector2 +
    • +
    • + to:Vector2 +
    • +
    • + time:float +
    • +
    ) +
    + + + LTDescr + + + + + + + + +
    +

    + Defined in + LeanTween.cs:1732 +

    + + + +
    + +
    + Tween any particular value (Vector2) +
    + +
    +

    Parameters:

    + +
      +
    • + gameObject:GameObject + GameObject + + +
      +

      Gameobject that you wish to attach the tween to

      + +
      + +
    • +
    • + from:Vector2 + Vector2 + + +
      +

      The original value to start the tween from

      + +
      + +
    • +
    • + to:Vector2 + Vector3 + + +
      +

      The final Vector2 with which to tween to

      + +
      + +
    • +
    • + time:float + Float + + +
      +

      The time to complete the tween in

      + +
      + +
    • +
    +
    + +
    +

    Returns:

    + +
    + LTDescr: +

    LTDescr an object that distinguishes the tween

    + +
    +
    + +
    +

    Example:

    + +
    +

    Example Javascript:
    + LeanTween.value( gameObject, new Vector2(1f,0f), new Vector3(5f,0f), 5f).setOnUpdate( function( val:Vector2 ){
    +  Debug.Log("tweened val:"+val);
    + } );
    +
    + Example C#:
    + LeanTween.value( gameObject, new Vector3(1f,0f), new Vector3(5f,0f), 5f).setOnUpdate( (Vector2 val)=>{
    +  Debug.Log("tweened val:"+val);
    + } );

    + +
    +
    +
    +
    +

    LeanTween.value (Vector3)

    + +
    + (
      +
    • + gameObject:GameObject +
    • +
    • + from:Vector3 +
    • +
    • + to:Vector3 +
    • +
    • + time:float +
    • +
    ) +
    + + + LTDescr + + + + + + + + +
    +

    + Defined in + LeanTween.cs:1756 +

    + + + +
    + +
    + Tween any particular value (Vector3) +
    + +
    +

    Parameters:

    + +
      +
    • + gameObject:GameObject + GameObject + + +
      +

      Gameobject that you wish to attach the tween to

      + +
      + +
    • +
    • + from:Vector3 + Vector3 + + +
      +

      The original value to start the tween from

      + +
      + +
    • +
    • + to:Vector3 + Vector3 + + +
      +

      The final Vector3 with which to tween to

      + +
      + +
    • +
    • + time:float + Float + + +
      +

      The time to complete the tween in

      + +
      + +
    • +
    +
    + +
    +

    Returns:

    + +
    + LTDescr: +

    LTDescr an object that distinguishes the tween

    + +
    +
    + +
    +

    Example:

    + +
    +

    Example Javascript:
    + LeanTween.value( gameObject, new Vector3(1f,0f,0f), new Vector3(5f,0f,0f), 5f).setOnUpdate( function( val:Vector3 ){
    +  Debug.Log("tweened val:"+val);
    + } );
    +
    + Example C#:
    + LeanTween.value( gameObject, new Vector3(1f,0f,0f), new Vector3(5f,0f,0f), 5f).setOnUpdate( (Vector3 val)=>{
    +  Debug.Log("tweened val:"+val);
    + } );

    + +
    +
    +
    +
    +

    LeanTween.value (Vector3)

    + +
    + (
      +
    • + gameObject:GameObject +
    • +
    • + callOnUpdate:Action<Vector3> +
    • +
    • + from:Vector3 +
    • +
    • + to:Vector3 +
    • +
    • + time:float +
    • +
    ) +
    + + + LTDescr + + + + + + + + +
    +

    + Defined in + LeanTween.cs:1915 +

    + + + +
    + +
    + Tween any particular value (Vector3), this could be used to tween an arbitrary property that uses a Vector +
    + +
    +

    Parameters:

    + +
      +
    • + gameObject:GameObject + GameObject + + +
      +

      Gameobject that you wish to attach the tween to

      + +
      + +
    • +
    • + callOnUpdate:Action<Vector3> + Action + + +
      +

      The function that is called on every Update frame, this function needs to accept a float value ex: function updateValue( Vector3 val ){ }

      + +
      + +
    • +
    • + from:Vector3 + Float + + +
      +

      The original value to start the tween from

      + +
      + +
    • +
    • + to:Vector3 + Vector3 + + +
      +

      The final Vector3 with which to tween to

      + +
      + +
    • +
    • + time:float + Float + + +
      +

      The time to complete the tween in

      + +
      + +
    • +
    +
    + +
    +

    Returns:

    + +
    + LTDescr: +

    LTDescr an object that distinguishes the tween

    + +
    +
    + +
    +
    + + + +
    +
    +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/Assets/LeanTween/Documentation/classes/LeanTween.html.meta b/Assets/LeanTween/Documentation/classes/LeanTween.html.meta new file mode 100644 index 0000000..7a17654 --- /dev/null +++ b/Assets/LeanTween/Documentation/classes/LeanTween.html.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: beea01b16f84c4f18a168afa5800b612 diff --git a/Assets/LeanTween/Documentation/classes/LeanTweenType.html b/Assets/LeanTween/Documentation/classes/LeanTweenType.html new file mode 100644 index 0000000..c2ef2f7 --- /dev/null +++ b/Assets/LeanTween/Documentation/classes/LeanTweenType.html @@ -0,0 +1,1092 @@ + + + + + LeanTweenType + + + + + + + + + + + +
    +
    +
    +

    - Developed by Dented Pixel
    +
    +
    + API Docs for: LeanTween 2.50
    + + + + + +
    +

    Support LeanTween!

    + +
    +
    + + + + + + + +
    +
    +
    + +

    Maintaining and adding new features takes time, your support is appreciated.

    +
    +
    + + +
    +
    + Show: + + + + + + + +
    + +
    +
    +
    +

    LeanTweenType Class

    +
    + + +
    + Defined in: LeanTween.cs:41 +
    + + +
    + + +
    +

    Pass this to the "ease" parameter, to get a different easing behavior

    + Example:
    LeanTween.rotateX(gameObject, 270.0f, 1.5f).setEase(LeanTweenType.easeInBack);

    + +
    + + +
    + + +
    +
    +

    Item Index

    + + +
    +

    Properties

    + + +
    + + +
    + + +
    +

    Properties

    + +
    +

    easeInBack

    + Integer + + + + + +
    +

    + Defined in + LeanTween.cs:123 +

    + + +
    + +
    + +
    + + + +
    +
    +

    easeInBounce

    + Integer + + + + + +
    +

    + Defined in + LeanTween.cs:114 +

    + + +
    + +
    + +
    + + + +
    +
    +

    easeInCirc

    + Integer + + + + + +
    +

    + Defined in + LeanTween.cs:105 +

    + + +
    + +
    + +
    + + + +
    +
    +

    easeInCubic

    + Integer + + + + + +
    +

    + Defined in + LeanTween.cs:60 +

    + + +
    + +
    + +
    + + + +
    +
    +

    easeInElastic

    + Integer + + + + + +
    +

    + Defined in + LeanTween.cs:132 +

    + + +
    + +
    + +
    + + + +
    +
    +

    easeInExpo

    + Integer + + + + + +
    +

    + Defined in + LeanTween.cs:96 +

    + + +
    + +
    + +
    + + + +
    +
    +

    easeInOutBack

    + Integer + + + + + +
    +

    + Defined in + LeanTween.cs:129 +

    + + +
    + +
    + +
    + + + +
    +
    +

    easeInOutBounce

    + Integer + + + + + +
    +

    + Defined in + LeanTween.cs:120 +

    + + +
    + +
    + +
    + + + +
    +
    +

    easeInOutCirc

    + Integer + + + + + +
    +

    + Defined in + LeanTween.cs:111 +

    + + +
    + +
    + +
    + + + +
    +
    +

    easeInOutCubic

    + Integer + + + + + +
    +

    + Defined in + LeanTween.cs:66 +

    + + +
    + +
    + +
    + + + +
    +
    +

    easeInOutElastic

    + Integer + + + + + +
    +

    + Defined in + LeanTween.cs:138 +

    + + +
    + +
    + +
    + + + +
    +
    +

    easeInOutExpo

    + Integer + + + + + +
    +

    + Defined in + LeanTween.cs:102 +

    + + +
    + +
    + +
    + + + +
    +
    +

    easeInOutQuad

    + Integer + + + + + +
    +

    + Defined in + LeanTween.cs:57 +

    + + +
    + +
    + +
    + + + +
    +
    +

    easeInOutQuart

    + Integer + + + + + +
    +

    + Defined in + LeanTween.cs:75 +

    + + +
    + +
    + +
    + + + +
    +
    +

    easeInOutQuint

    + Integer + + + + + +
    +

    + Defined in + LeanTween.cs:84 +

    + + +
    + +
    + +
    + + + +
    +
    +

    easeInOutSine

    + Integer + + + + + +
    +

    + Defined in + LeanTween.cs:93 +

    + + +
    + +
    + +
    + + + +
    +
    +

    easeInQuad

    + Integer + + + + + +
    +

    + Defined in + LeanTween.cs:54 +

    + + +
    + +
    + +
    + + + +
    +
    +

    easeInQuart

    + Integer + + + + + +
    +

    + Defined in + LeanTween.cs:69 +

    + + +
    + +
    + +
    + + + +
    +
    +

    easeInQuint

    + Integer + + + + + +
    +

    + Defined in + LeanTween.cs:78 +

    + + +
    + +
    + +
    + + + +
    +
    +

    easeInSine

    + Integer + + + + + +
    +

    + Defined in + LeanTween.cs:87 +

    + + +
    + +
    + +
    + + + +
    +
    +

    easeOutBack

    + Integer + + + + + +
    +

    + Defined in + LeanTween.cs:126 +

    + + +
    + +
    + +
    + + + +
    +
    +

    easeOutBounce

    + Integer + + + + + +
    +

    + Defined in + LeanTween.cs:117 +

    + + +
    + +
    + +
    + + + +
    +
    +

    easeOutCirc

    + Integer + + + + + +
    +

    + Defined in + LeanTween.cs:108 +

    + + +
    + +
    + +
    + + + +
    +
    +

    easeOutCubic

    + Integer + + + + + +
    +

    + Defined in + LeanTween.cs:63 +

    + + +
    + +
    + +
    + + + +
    +
    +

    easeOutElastic

    + Integer + + + + + +
    +

    + Defined in + LeanTween.cs:135 +

    + + +
    + +
    + +
    + + + +
    +
    +

    easeOutExpo

    + Integer + + + + + +
    +

    + Defined in + LeanTween.cs:99 +

    + + +
    + +
    + +
    + + + +
    +
    +

    easeOutQuad

    + Integer + + + + + +
    +

    + Defined in + LeanTween.cs:51 +

    + + +
    + +
    + +
    + + + +
    +
    +

    easeOutQuart

    + Integer + + + + + +
    +

    + Defined in + LeanTween.cs:72 +

    + + +
    + +
    + +
    + + + +
    +
    +

    easeOutQuint

    + Integer + + + + + +
    +

    + Defined in + LeanTween.cs:81 +

    + + +
    + +
    + +
    + + + +
    +
    +

    easeOutSine

    + Integer + + + + + +
    +

    + Defined in + LeanTween.cs:90 +

    + + +
    + +
    + +
    + + + +
    +
    +

    linear

    + Integer + + + + + +
    +

    + Defined in + LeanTween.cs:48 +

    + + +
    + +
    + +
    + + + +
    +
    +

    punch

    + Integer + + + + + +
    +

    + Defined in + LeanTween.cs:141 +

    + + +
    + +
    + +
    + + + +
    +
    + + +
    +
    +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/Assets/LeanTween/Documentation/classes/LeanTweenType.html.meta b/Assets/LeanTween/Documentation/classes/LeanTweenType.html.meta new file mode 100644 index 0000000..57a6283 --- /dev/null +++ b/Assets/LeanTween/Documentation/classes/LeanTweenType.html.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 85c97d3850f59444cb0751b3bc40b06d diff --git a/Assets/LeanTween/Documentation/classes/index.html b/Assets/LeanTween/Documentation/classes/index.html new file mode 100644 index 0000000..487fe15 --- /dev/null +++ b/Assets/LeanTween/Documentation/classes/index.html @@ -0,0 +1,10 @@ + + + + Redirector + + + + Click here to redirect + + diff --git a/Assets/LeanTween/Documentation/classes/index.html.meta b/Assets/LeanTween/Documentation/classes/index.html.meta new file mode 100644 index 0000000..891c717 --- /dev/null +++ b/Assets/LeanTween/Documentation/classes/index.html.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: a23cc63a765c44c9c82fb33b1ecb455f diff --git a/Assets/LeanTween/Documentation/elements.meta b/Assets/LeanTween/Documentation/elements.meta new file mode 100644 index 0000000..6c785fc --- /dev/null +++ b/Assets/LeanTween/Documentation/elements.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 932507f3c60bb4fcea847cba753363b8 +folderAsset: yes +timeCreated: 1479470944 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/LeanTween/Documentation/elements/index.html b/Assets/LeanTween/Documentation/elements/index.html new file mode 100644 index 0000000..487fe15 --- /dev/null +++ b/Assets/LeanTween/Documentation/elements/index.html @@ -0,0 +1,10 @@ + + + + Redirector + + + + Click here to redirect + + diff --git a/Assets/LeanTween/Documentation/elements/index.html.meta b/Assets/LeanTween/Documentation/elements/index.html.meta new file mode 100644 index 0000000..b9d37f7 --- /dev/null +++ b/Assets/LeanTween/Documentation/elements/index.html.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f6a53cd107c1f4d5498ea9c736e3a650 +timeCreated: 1479471015 +licenseType: Store +TextScriptImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/LeanTween/Documentation/index.html b/Assets/LeanTween/Documentation/index.html new file mode 100644 index 0000000..a4d2c3a --- /dev/null +++ b/Assets/LeanTween/Documentation/index.html @@ -0,0 +1,167 @@ + + + + + + + + + + + + + + + + +
    +
    +
    +

    - Developed by Dented Pixel
    +
    +
    + API Docs for: LeanTween 2.50
    + + + + + +
    +

    Support LeanTween!

    + +
    +
    + + + + + + + +
    +
    +
    + +

    Maintaining and adding new features takes time, your support is appreciated.

    +
    +
    + + +
    +
    + Show: + + + + + + + +
    + +
    +
    +
    +
    +
    +

    + Browse to a module or class using the sidebar to view its API documentation. +

    + +

    Keyboard Shortcuts

    + +
      +
    • Press s to focus the API search box.

    • + +
    • Use Up and Down to select classes, modules, and search results.

    • + +
    • With the API search box or sidebar focused, use -Left or -Right to switch sidebar tabs.

    • + +
    • With the API search box or sidebar focused, use Ctrl+Left and Ctrl+Right to switch sidebar tabs.

    • +
    +
    +
    + + +
    +
    +
    +
    +
    +
    + + + + + + + + + + diff --git a/Assets/LeanTween/Documentation/index.html.meta b/Assets/LeanTween/Documentation/index.html.meta new file mode 100644 index 0000000..7a0b59d --- /dev/null +++ b/Assets/LeanTween/Documentation/index.html.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 78eeb9616e21d4178b574871040d7fa0 diff --git a/Assets/LeanTween/Editor.meta b/Assets/LeanTween/Editor.meta new file mode 100644 index 0000000..0d4266c --- /dev/null +++ b/Assets/LeanTween/Editor.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 19bfca9f9a913415ea58580f6667f922 +folderAsset: yes +timeCreated: 1454272449 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/LeanTween/Editor/LeanTweenDocumentationEditor.cs b/Assets/LeanTween/Editor/LeanTweenDocumentationEditor.cs new file mode 100644 index 0000000..a854d7c --- /dev/null +++ b/Assets/LeanTween/Editor/LeanTweenDocumentationEditor.cs @@ -0,0 +1,59 @@ +using UnityEngine; +using System.Collections; +#if UNITY_EDITOR +using UnityEditor; + +public class LeanTweenDocumentationEditor : Editor { + + [MenuItem ("Help/LeanTween Documentation")] + static void openDocumentation() + { + #if !UNITY_3_5 && !UNITY_4_0 && !UNITY_4_0_1 && !UNITY_4_1 && !UNITY_4_2 && !UNITY_4_3 + // Loops through all items in case the user has moved the default installation directory + string[] guids = AssetDatabase.FindAssets ("LeanTween", null); + string documentationPath = ""; + foreach (string guid in guids){ + string path = AssetDatabase.GUIDToAssetPath(guid); + if(path.IndexOf("classes/LeanTween.html")>=0){ + documentationPath = path; + break; + } + } + documentationPath = documentationPath.Substring(documentationPath.IndexOf("/")); + string browserPath = "file://" + Application.dataPath + documentationPath + "#index"; + Application.OpenURL(browserPath); + + #else + // assumes the default installation directory + string documentationPath = "file://"+Application.dataPath + "/LeanTween/Documentation/classes/LeanTween.html#index"; + Application.OpenURL(documentationPath); + + #endif + } + + [MenuItem ("Help/LeanTween Forum (ask questions)")] + static void openForum() + { + Application.OpenURL("http://forum.unity3d.com/threads/leantween-a-tweening-engine-that-is-up-to-5x-faster-than-competing-engines.161113/"); + } + + [MenuItem ("Help/LeanTween GitHub (contribute code)")] + static void openGit() + { + Application.OpenURL("https://github.com/dentedpixel/LeanTween"); + } + + [MenuItem ("Help/LeanTween Support (donate)")] + static void openLTDonate() + { + Application.OpenURL("https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=YJPUT3RAK5VL8"); + } + + [MenuItem ("Help/Dented Pixel News")] + static void openDPNews() + { + Application.OpenURL("http://dentedpixel.com/category/developer-diary/"); + } +} + +#endif \ No newline at end of file diff --git a/Assets/LeanTween/Editor/LeanTweenDocumentationEditor.cs.meta b/Assets/LeanTween/Editor/LeanTweenDocumentationEditor.cs.meta new file mode 100644 index 0000000..1bcb938 --- /dev/null +++ b/Assets/LeanTween/Editor/LeanTweenDocumentationEditor.cs.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 52fea17a2d56d46afa0d6cb52e2a4335 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} diff --git a/Assets/LeanTween/Examples.meta b/Assets/LeanTween/Examples.meta new file mode 100644 index 0000000..b6b1d02 --- /dev/null +++ b/Assets/LeanTween/Examples.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 486852d399aed440aa95693d95263c16 diff --git a/Assets/LeanTween/Examples/Archived.meta b/Assets/LeanTween/Examples/Archived.meta new file mode 100644 index 0000000..312cf73 --- /dev/null +++ b/Assets/LeanTween/Examples/Archived.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 8d71b219a4562400b9fabb60eb51396d +folderAsset: yes +timeCreated: 1460027769 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/LeanTween/Examples/Archived/2dUnlitWithFade.shader b/Assets/LeanTween/Examples/Archived/2dUnlitWithFade.shader new file mode 100644 index 0000000..0115e68 --- /dev/null +++ b/Assets/LeanTween/Examples/Archived/2dUnlitWithFade.shader @@ -0,0 +1,30 @@ +Shader "Custom/2dUnlitWithFade" { + Properties + { + _Color ("Color Tint", Color) = (1,1,1,1) + _MainTex ("Base (RGB) Alpha (A)", 2D) = "white" + } + + Category + { + Lighting Off + ZWrite Off + //ZWrite On // uncomment if you have problems like the sprite disappear in some rotations. + Cull back + Blend SrcAlpha OneMinusSrcAlpha + //AlphaTest Greater 0.001 // uncomment if you have problems like the sprites or 3d text have white quads instead of alpha pixels. + Tags {Queue=Transparent} + + SubShader + { + Pass + { + SetTexture [_MainTex] + { + ConstantColor [_Color] + Combine Texture * constant + } + } + } + } +} diff --git a/Assets/LeanTween/Examples/Archived/2dUnlitWithFade.shader.meta b/Assets/LeanTween/Examples/Archived/2dUnlitWithFade.shader.meta new file mode 100644 index 0000000..83969be --- /dev/null +++ b/Assets/LeanTween/Examples/Archived/2dUnlitWithFade.shader.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 8bce9282b1bfd475284fd2e72b37403c diff --git a/Assets/LeanTween/Examples/Archived/GrumpyCat.jpeg b/Assets/LeanTween/Examples/Archived/GrumpyCat.jpeg new file mode 100644 index 0000000..c725862 Binary files /dev/null and b/Assets/LeanTween/Examples/Archived/GrumpyCat.jpeg differ diff --git a/Assets/LeanTween/Examples/Archived/GrumpyCat.jpeg.meta b/Assets/LeanTween/Examples/Archived/GrumpyCat.jpeg.meta new file mode 100644 index 0000000..c7e10a0 --- /dev/null +++ b/Assets/LeanTween/Examples/Archived/GrumpyCat.jpeg.meta @@ -0,0 +1,33 @@ +fileFormatVersion: 2 +guid: 6a9d1d221a3c94d83b614d921df0402e +TextureImporter: + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + textureFormat: -1 + maxTextureSize: 1024 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 0 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + textureType: 5 + buildTargetSettings: [] diff --git a/Assets/LeanTween/Examples/Archived/OldGUIExamplesCS.cs b/Assets/LeanTween/Examples/Archived/OldGUIExamplesCS.cs new file mode 100644 index 0000000..64d4a0e --- /dev/null +++ b/Assets/LeanTween/Examples/Archived/OldGUIExamplesCS.cs @@ -0,0 +1,84 @@ +using UnityEngine; +using System.Collections; +using DentedPixel; + +public class OldGUIExamplesCS : MonoBehaviour { + public Texture2D grumpy; + public Texture2D beauty; + + private float w; + private float h; + + private LTRect buttonRect1; + private LTRect buttonRect2; + private LTRect buttonRect3; + private LTRect buttonRect4; + private LTRect grumpyRect; + private LTRect beautyTileRect; + + + // Use this for initialization + void Start () { + w = Screen.width; + h = Screen.height; + buttonRect1 = new LTRect(0.10f*w, 0.8f*h, 0.2f*w, 0.14f*h ); + buttonRect2 = new LTRect(1.2f*w, 0.8f*h, 0.2f*w, 0.14f*h ); + buttonRect3 = new LTRect(0.35f*w, 0.0f*h, 0.3f*w, 0.2f*h, 0f ); + buttonRect4 = new LTRect(0.0f*w, 0.4f*h, 0.3f*w, 0.2f*h, 1.0f, 15.0f ); + + grumpyRect = new LTRect(0.5f*w - grumpy.width*0.5f, 0.5f*h - grumpy.height*0.5f, grumpy.width, grumpy.height ); + beautyTileRect = new LTRect(0.0f,0.0f,1.0f,1.0f ); + + LeanTween.move( buttonRect2, new Vector2(0.55f*w, buttonRect2.rect.y), 0.7f ).setEase(LeanTweenType.easeOutQuad); + } + + public void catMoved(){ + Debug.Log("cat moved..."); + } + + // Update is called once per frame + void OnGUI () { + GUI.DrawTexture( grumpyRect.rect, grumpy); + + Rect staticRect = new Rect(0.0f*w, 0.0f*h, 0.2f*w, 0.14f*h); + if(GUI.Button( staticRect, "Move Cat")){ + if(LeanTween.isTweening(grumpyRect)==false){ // Check to see if the cat is already tweening, so it doesn't freak out + Vector2 orig = new Vector2( grumpyRect.rect.x, grumpyRect.rect.y ); + LeanTween.move( grumpyRect, new Vector2( 1.0f*Screen.width - grumpy.width, 0.0f*Screen.height ), 1.0f).setEase(LeanTweenType.easeOutBounce).setOnComplete(catMoved); + LeanTween.move( grumpyRect, orig, 1.0f ).setDelay(1.0f).setEase( LeanTweenType.easeOutBounce); + } + } + + if(GUI.Button(buttonRect1.rect, "Scale Centered")){ + LeanTween.scale( buttonRect1, new Vector2(buttonRect1.rect.width, buttonRect1.rect.height) * 1.2f, 0.25f ).setEase( LeanTweenType.easeOutQuad ); + LeanTween.move( buttonRect1, new Vector2(buttonRect1.rect.x-buttonRect1.rect.width*0.1f, buttonRect1.rect.y-buttonRect1.rect.height*0.1f), 0.25f ).setEase(LeanTweenType.easeOutQuad); + } + + if(GUI.Button(buttonRect2.rect, "Scale")){ + LeanTween.scale( buttonRect2, new Vector2(buttonRect2.rect.width, buttonRect2.rect.height) * 1.2f, 0.25f ).setEase(LeanTweenType.easeOutBounce); + } + + staticRect = new Rect(0.76f*w, 0.53f*h, 0.2f*w, 0.14f*h); + if(GUI.Button( staticRect, "Flip Tile")){ + LeanTween.move( beautyTileRect, new Vector2( 0f, beautyTileRect.rect.y + 1.0f ), 1.0f ).setEase(LeanTweenType.easeOutBounce); + } + + GUI.DrawTextureWithTexCoords( new Rect(0.8f*w, 0.5f*h - beauty.height*0.5f, beauty.width*0.5f, beauty.height*0.5f), beauty, beautyTileRect.rect); + + + if(GUI.Button(buttonRect3.rect, "Alpha")){ + LeanTween.alpha( buttonRect3, 0.0f, 1.0f).setEase(LeanTweenType.easeOutQuad); + LeanTween.alpha( buttonRect3, 1.0f, 1.0f).setDelay(1.0f).setEase( LeanTweenType.easeInQuad); + + LeanTween.alpha( grumpyRect, 0.0f, 1.0f).setEase(LeanTweenType.easeOutQuad); + LeanTween.alpha( grumpyRect, 1.0f, 1.0f).setDelay(1.0f).setEase(LeanTweenType.easeInQuad); + } + GUI.color = new Color(1.0f,1.0f,1.0f,1.0f); // Reset to normal alpha, otherwise other gui elements will be effected + + if(GUI.Button(buttonRect4.rect, "Rotate")){ + LeanTween.rotate( buttonRect4, 150.0f, 1.0f ).setEase(LeanTweenType.easeOutElastic); + LeanTween.rotate( buttonRect4, 0.0f, 1.0f ).setDelay(1.0f).setEase(LeanTweenType.easeOutElastic); + } + GUI.matrix = Matrix4x4.identity; + } +} diff --git a/Assets/LeanTween/Examples/Archived/OldGUIExamplesCS.cs.meta b/Assets/LeanTween/Examples/Archived/OldGUIExamplesCS.cs.meta new file mode 100644 index 0000000..353172a --- /dev/null +++ b/Assets/LeanTween/Examples/Archived/OldGUIExamplesCS.cs.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 876bfcaf53a664f29a628faa9fa332fc +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} diff --git a/Assets/LeanTween/Examples/Archived/OldGUIExamplesCS.unity b/Assets/LeanTween/Examples/Archived/OldGUIExamplesCS.unity new file mode 100644 index 0000000..3e75da7 --- /dev/null +++ b/Assets/LeanTween/Examples/Archived/OldGUIExamplesCS.unity @@ -0,0 +1,230 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} + m_AmbientEquatorColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} + m_AmbientGroundColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 3 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &4 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 11 + m_GIWorkflowMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 1 + m_BakeResolution: 50 + m_AtlasSize: 1024 + m_AO: 1 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 0 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 256 + m_ReflectionCompression: 2 + m_MixedBakeMode: 1 + m_BakeBackend: 0 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 512 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 0 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 0 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 0} + m_UseShadowmask: 0 +--- !u!196 &5 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666666 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &1713412972 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1713412973} + - component: {fileID: 1713412974} + - component: {fileID: 1713412977} + - component: {fileID: 1713412975} + - component: {fileID: 1713412978} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1713412973 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1713412972} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!20 &1713412974 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1713412972} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0.019607844} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 100 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 0 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!81 &1713412975 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1713412972} + m_Enabled: 1 +--- !u!124 &1713412977 +Behaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1713412972} + m_Enabled: 1 +--- !u!114 &1713412978 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1713412972} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 876bfcaf53a664f29a628faa9fa332fc, type: 3} + m_Name: + m_EditorClassIdentifier: + grumpy: {fileID: 2800000, guid: 6a9d1d221a3c94d83b614d921df0402e, type: 3} + beauty: {fileID: 2800000, guid: 78e9e608c3c9d47a3b312c2908d10f46, type: 3} diff --git a/Assets/LeanTween/Examples/Archived/OldGUIExamplesCS.unity.meta b/Assets/LeanTween/Examples/Archived/OldGUIExamplesCS.unity.meta new file mode 100644 index 0000000..65e6186 --- /dev/null +++ b/Assets/LeanTween/Examples/Archived/OldGUIExamplesCS.unity.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: ec27881ee9cf54018ac9bd5706c2fdab diff --git a/Assets/LeanTween/Examples/Archived/SoBeautiful.gif b/Assets/LeanTween/Examples/Archived/SoBeautiful.gif new file mode 100644 index 0000000..64170b1 Binary files /dev/null and b/Assets/LeanTween/Examples/Archived/SoBeautiful.gif differ diff --git a/Assets/LeanTween/Examples/Archived/SoBeautiful.gif.meta b/Assets/LeanTween/Examples/Archived/SoBeautiful.gif.meta new file mode 100644 index 0000000..ebf9780 --- /dev/null +++ b/Assets/LeanTween/Examples/Archived/SoBeautiful.gif.meta @@ -0,0 +1,33 @@ +fileFormatVersion: 2 +guid: 78e9e608c3c9d47a3b312c2908d10f46 +TextureImporter: + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + textureFormat: -1 + maxTextureSize: 1024 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + textureType: -1 + buildTargetSettings: [] diff --git a/Assets/LeanTween/Examples/Archived/TestingPunch.cs b/Assets/LeanTween/Examples/Archived/TestingPunch.cs new file mode 100644 index 0000000..683d44a --- /dev/null +++ b/Assets/LeanTween/Examples/Archived/TestingPunch.cs @@ -0,0 +1,182 @@ +using UnityEngine; +using System.Collections; +using DentedPixel; + +public class TestingPunch : MonoBehaviour { + + public AnimationCurve exportCurve; + public float overShootValue = 1f; + + private LTDescr descr; + + void Start () { + //LeanTween.rotateAround(gameObject, gameObject.transform.rotation.eulerAngles, 360f, 5f).setDelay(1f).setEase(LeanTweenType.easeOutBounce); + Debug.Log( "exported curve:" + curveToString(exportCurve) ); + } + + void Update () + { + LeanTween.dtManual = Time.deltaTime; + if (Input.GetKeyDown(KeyCode.Q)) + { + //LeanTween.scale(this.gameObject, Vector3.one*3f, 1.0f).setEase(LeanTweenType.easeSpring).setUseManualTime(true); + //print("scale punch time independent!"); + + LeanTween.moveLocalX(gameObject, 5, 1).setOnComplete( () => { + Debug.Log("on complete move local X"); + }).setOnCompleteOnStart(true); + + GameObject light = GameObject.Find("DirectionalLight"); + Light lt = light.GetComponent(); + + LeanTween.value(lt.gameObject, lt.intensity, 0.0f, 1.5f) + .setEase(LeanTweenType.linear) + .setLoopPingPong() + .setRepeat(-1) + .setOnUpdate((float val)=>{ + + lt.intensity = val; + }); + } + if (Input.GetKeyDown(KeyCode.S)) + { + print("scale punch!"); + + tweenStatically( this.gameObject ); + + LeanTween.scale(this.gameObject, new Vector3(1.15f, 1.15f, 1.15f), 0.6f); + + LeanTween.rotateAround(this.gameObject, Vector3.forward, -360f, 0.3f).setOnComplete(() => + { + LeanTween.rotateAround(this.gameObject, Vector3.forward, -360f, 0.4f).setOnComplete(() => + { + LeanTween.scale(this.gameObject, new Vector3(1f, 1f, 1f), 0.1f); + + LeanTween.value(this.gameObject, (v) => + { + + }, 0, 1, 0.3f).setDelay(1); + + }); + + }); + + + } + + if (Input.GetKeyDown(KeyCode.T)) + { + Vector3[] pts = new Vector3[] {new Vector3(-1f,0f,0f), new Vector3(0f,0f,0f), new Vector3(4f,0f,0f), new Vector3(20f,0f,0f)}; + descr = LeanTween.move(gameObject, pts, 15f).setOrientToPath(true).setDirection(1f).setOnComplete( ()=>{ + Debug.Log("move path finished"); + }); + } + + if (Input.GetKeyDown(KeyCode.Y)) // Reverse the move path + { + descr.setDirection(-descr.direction); + } + + if (Input.GetKeyDown(KeyCode.R)) + { + // LeanTween.rotate(this.gameObject, Vector3.one, 1.0f).setEase(LeanTweenType.punch); + LeanTween.rotateAroundLocal(this.gameObject, this.transform.forward, -80f, 5.0f).setPoint(new Vector3(1.25f, 0f, 0f)); + print("rotate punch!"); + } + + if (Input.GetKeyDown(KeyCode.M)) + { + // LeanTween.move(this.gameObject, new Vector3(0f,0f,1f), 1.0f).setEase(LeanTweenType.punch); + print("move punch!"); + Time.timeScale = 0.25f; + float start = Time.realtimeSinceStartup; + LeanTween.moveX( this.gameObject, 1f, 1f).setOnComplete( destroyOnComp ).setOnCompleteParam( this.gameObject ).setOnComplete( ()=>{ + float end = Time.realtimeSinceStartup; + float diff = end - start; + Debug.Log("start:"+start+" end:"+end+" diff:"+diff+" x:"+this.gameObject.transform.position.x); + }).setEase(LeanTweenType.easeInBack).setOvershoot( overShootValue ).setPeriod(0.3f); + } + + if (Input.GetKeyDown(KeyCode.C)) + { + LeanTween.color( this.gameObject, new Color(1f, 0f, 0f, 0.5f), 1f); + + Color to = new Color(Random.Range(0f,1f),0f,Random.Range(0f,1f),0.0f); + GameObject l = GameObject.Find("LCharacter"); + LeanTween.color( l, to, 4.0f ).setLoopPingPong(1).setEase(LeanTweenType.easeOutBounce); + } + + if (Input.GetKeyDown(KeyCode.E)) + { + LeanTween.delayedCall(gameObject,0.3f, delayedMethod).setRepeat(4).setOnCompleteOnRepeat(true).setOnCompleteParam( "hi" ); + } + + if (Input.GetKeyDown(KeyCode.V)) + { + LeanTween.value( gameObject, updateColor, new Color(1.0f,0.0f,0.0f,1.0f), Color.blue, 4.0f );//.setRepeat(2).setLoopPingPong().setEase(LeanTweenType.easeOutBounce); + } + + if (Input.GetKeyDown(KeyCode.P)) + { + LeanTween.delayedCall(0.05f, enterMiniGameStart).setOnCompleteParam( new object[]{""+5} ); + } + + if(Input.GetKeyDown(KeyCode.U)){ + #if !UNITY_FLASH + LeanTween.value(gameObject, (Vector2 val)=>{ + // Debug.Log("tweening vec2 val:"+val); + transform.position = new Vector3(val.x, transform.position.y, transform.position.z); + }, new Vector2(0f,0f), new Vector2(5f,100f), 1f ).setEase(LeanTweenType.easeOutBounce); + + GameObject l = GameObject.Find("LCharacter"); + Debug.Log("x:"+l.transform.position.x+" y:"+l.transform.position.y); + LeanTween.value(l, new Vector2( l.transform.position.x, l.transform.position.y), new Vector2( l.transform.position.x, l.transform.position.y+5), 1f ).setOnUpdate( + (Vector2 val)=>{ + Debug.Log("tweening vec2 val:"+val); + l.transform.position = new Vector3(val.x, val.y, transform.position.z); + } + + ); + #endif + } + } + + static void tweenStatically( GameObject gameObject ){ + Debug.Log("Starting to tween..."); + LeanTween.value(gameObject, (val)=>{ + Debug.Log("tweening val:"+val); + }, 0f, 1f, 1f); + } + + void enterMiniGameStart( object val ){ + object[] arr = (object [])val; + int lvl = int.Parse((string)arr[0]); + Debug.Log("level:"+lvl); + } + + void updateColor( Color c ){ + GameObject l = GameObject.Find("LCharacter"); + // Debug.Log("new col:"+c); + l.GetComponent().material.color = c; + } + + void delayedMethod( object myVal ){ + string castBack = myVal as string; + Debug.Log("delayed call:"+Time.time +" myVal:"+castBack); + } + + void destroyOnComp( object p ){ + GameObject g = (GameObject)p; + Destroy( g ); + } + + string curveToString( AnimationCurve curve) { + string str = ""; + for(int i = 0; i < curve.length; i++){ + str += "new Keyframe("+curve[i].time+"f, "+curve[i].value+"f)"; + if(i().material.color, ref velocityColor, 1.1f); + Debug.Log("Smoothed y:" + fromY + " vec3:" + fromVec3 + " color:" + fromColor); + } + + private void moveArrow() + { + LeanTween.moveLocalY(followArrow.gameObject, Random.Range(-100f, 100f), 0f); + + var randomCol = new Color(Random.value, Random.value, Random.value); + LeanTween.color(followArrow.gameObject, randomCol, 0f); + + var randomVal = Random.Range(5f, 10f); + followArrow.localScale = Vector3.one * randomVal; + } +} diff --git a/Assets/LeanTween/Examples/Scripts/Following.cs.meta b/Assets/LeanTween/Examples/Scripts/Following.cs.meta new file mode 100644 index 0000000..ce17cce --- /dev/null +++ b/Assets/LeanTween/Examples/Scripts/Following.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 7e619db3c84234f098b8636588c25e4f +timeCreated: 1535223435 +licenseType: Store +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/LeanTween/Examples/Scripts/GeneralAdvancedTechniques.cs b/Assets/LeanTween/Examples/Scripts/GeneralAdvancedTechniques.cs new file mode 100644 index 0000000..ed81ef3 --- /dev/null +++ b/Assets/LeanTween/Examples/Scripts/GeneralAdvancedTechniques.cs @@ -0,0 +1,60 @@ +using UnityEngine; +using System.Collections; +using DentedPixel; + +public class GeneralAdvancedTechniques : MonoBehaviour { + + public GameObject avatarRecursive; + public GameObject avatar2dRecursive; + public RectTransform wingPersonPanel; + public RectTransform textField; + + public GameObject avatarMove; + public Transform[] movePts; + public GameObject[] avatarSpeed; + public GameObject[] avatarSpeed2; + + private Vector3[] circleSm = new Vector3[]{ new Vector3(16f,0f,0f), new Vector3(14.56907f,8.009418f,0f), new Vector3(15.96541f,4.638379f,0f), new Vector3(11.31371f,11.31371f,0f), new Vector3(11.31371f,11.31371f,0f), new Vector3(4.638379f,15.96541f,0f), new Vector3(8.009416f,14.56908f,0f), new Vector3(-6.993822E-07f,16f,0f), new Vector3(-6.993822E-07f,16f,0f), new Vector3(-8.009419f,14.56907f,0f), new Vector3(-4.63838f,15.9654f,0f), new Vector3(-11.31371f,11.31371f,0f), new Vector3(-11.31371f,11.31371f,0f), new Vector3(-15.9654f,4.63838f,0f), new Vector3(-14.56908f,8.009415f,0f), new Vector3(-16f,-1.398764E-06f,0f), new Vector3(-16f,-1.398764E-06f,0f), new Vector3(-14.56907f,-8.009418f,0f), new Vector3(-15.9654f,-4.638382f,0f), new Vector3(-11.31371f,-11.31371f,0f), new Vector3(-11.31371f,-11.31371f,0f), new Vector3(-4.638381f,-15.9654f,0f), new Vector3(-8.009413f,-14.56908f,0f), new Vector3(1.907981E-07f,-16f,0f), new Vector3(1.907981E-07f,-16f,0f), new Vector3(8.00942f,-14.56907f,0f), new Vector3(4.638381f,-15.9654f,0f), new Vector3(11.31371f,-11.3137f,0f), new Vector3(11.31371f,-11.3137f,0f), new Vector3(15.96541f,-4.638378f,0f), new Vector3(14.56907f,-8.009418f,0f), new Vector3(16f,2.797529E-06f,0f) }; + private Vector3[] circleLrg = new Vector3[]{ new Vector3(25f,0f,0f), new Vector3(22.76418f,12.51472f,0f), new Vector3(24.94595f,7.247467f,0f), new Vector3(17.67767f,17.67767f,0f), new Vector3(17.67767f,17.67767f,0f), new Vector3(7.247467f,24.94595f,0f), new Vector3(12.51471f,22.76418f,0f), new Vector3(-1.092785E-06f,25f,0f), new Vector3(-1.092785E-06f,25f,0f), new Vector3(-12.51472f,22.76418f,0f), new Vector3(-7.247468f,24.94594f,0f), new Vector3(-17.67767f,17.67767f,0f), new Vector3(-17.67767f,17.67767f,0f), new Vector3(-24.94594f,7.247468f,0f), new Vector3(-22.76418f,12.51471f,0f), new Vector3(-25f,-2.185569E-06f,0f), new Vector3(-25f,-2.185569E-06f,0f), new Vector3(-22.76418f,-12.51472f,0f), new Vector3(-24.94594f,-7.247472f,0f), new Vector3(-17.67767f,-17.67767f,0f), new Vector3(-17.67767f,-17.67767f,0f), new Vector3(-7.247469f,-24.94594f,0f), new Vector3(-12.51471f,-22.76418f,0f), new Vector3(2.98122E-07f,-25f,0f), new Vector3(2.98122E-07f,-25f,0f), new Vector3(12.51472f,-22.76418f,0f), new Vector3(7.24747f,-24.94594f,0f), new Vector3(17.67768f,-17.67766f,0f), new Vector3(17.67768f,-17.67766f,0f), new Vector3(24.94595f,-7.247465f,0f), new Vector3(22.76418f,-12.51472f,0f), new Vector3(25f,4.371139E-06f,0f) }; + + // Use this for initialization + void Start () { + // Recursion - Set a objects value and have it recursively effect it's children + LeanTween.alpha( avatarRecursive, 0f, 1f).setRecursive(true).setLoopPingPong(); + LeanTween.alpha( avatar2dRecursive, 0f, 1f).setRecursive(true).setLoopPingPong(); + LeanTween.alpha( wingPersonPanel, 0f, 1f).setRecursive(true).setLoopPingPong(); + + // Destroy on Complete - + + // Chaining tweens together + + // setOnCompleteOnRepeat + + + // Move to path of transforms that are moving themselves + LeanTween.value( avatarMove, 0f, (float)movePts.Length-1, 5f).setOnUpdate((float val)=>{ + int first = (int)Mathf.Floor(val); + int next = first < movePts.Length-1 ? first + 1 : first; + float diff = val - (float)first; + // Debug.Log("val:"+val+" first:"+first+" next:"+next); + Vector3 diffPos = (movePts[next].position-movePts[first].position); + avatarMove.transform.position = movePts[first].position + diffPos*diff; + }).setEase(LeanTweenType.easeInOutExpo).setLoopPingPong(); + + // move the pts + for(int i = 0; i < movePts.Length; i++) + LeanTween.moveY( movePts[i].gameObject, movePts[i].position.y + 1.5f, 1f).setDelay(((float)i)*0.2f).setLoopPingPong(); + + + // move objects at a constant speed + for(int i = 0; i < avatarSpeed.Length; i++) + LeanTween.moveLocalZ( avatarSpeed[i], (i+1)*5f, 1f).setSpeed(6f).setEase(LeanTweenType.easeInOutExpo).setLoopPingPong(); // any time you set the speed it overrides the time value + + // move around a circle at a constant speed + for(int i = 0; i < avatarSpeed2.Length; i++){ + LeanTween.moveLocal( avatarSpeed2[i], i == 0 ? circleSm : circleLrg, 1f).setSpeed(20f).setRepeat(-1); + } + + } + +} diff --git a/Assets/LeanTween/Examples/Scripts/GeneralAdvancedTechniques.cs.meta b/Assets/LeanTween/Examples/Scripts/GeneralAdvancedTechniques.cs.meta new file mode 100644 index 0000000..73041c0 --- /dev/null +++ b/Assets/LeanTween/Examples/Scripts/GeneralAdvancedTechniques.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: a4fce1b486cc240c4825b3bfd794e9e0 +timeCreated: 1461150844 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/LeanTween/Examples/Scripts/GeneralBasic.cs b/Assets/LeanTween/Examples/Scripts/GeneralBasic.cs new file mode 100644 index 0000000..eca7c53 --- /dev/null +++ b/Assets/LeanTween/Examples/Scripts/GeneralBasic.cs @@ -0,0 +1,83 @@ +using UnityEngine; +using System.Collections; +using DentedPixel; + +public class GeneralBasic : MonoBehaviour { + + public GameObject prefabAvatar; + + void Start () { + // Setup + GameObject avatarRotate = GameObject.Find("AvatarRotate"); + GameObject avatarScale = GameObject.Find("AvatarScale"); + GameObject avatarMove = GameObject.Find("AvatarMove"); + + // Rotate Example + LeanTween.rotateAround( avatarRotate, Vector3.forward, 360f, 5f); + + // Scale Example + LeanTween.scale( avatarScale, new Vector3(1.7f, 1.7f, 1.7f), 5f).setEase(LeanTweenType.easeOutBounce); + LeanTween.moveX( avatarScale, avatarScale.transform.position.x + 5f, 5f).setEase(LeanTweenType.easeOutBounce); // Simultaneously target many different tweens on the same object + + // Move Example + LeanTween.move( avatarMove, avatarMove.transform.position + new Vector3(-9f, 0f, 1f), 2f).setEase(LeanTweenType.easeInQuad); + + // Delay + LeanTween.move( avatarMove, avatarMove.transform.position + new Vector3(-6f, 0f, 1f), 2f).setDelay(3f); + + // Chain properties (delay, easing with a set repeating of type ping pong) + LeanTween.scale( avatarScale, new Vector3(0.2f, 0.2f, 0.2f), 1f).setDelay(7f).setEase(LeanTweenType.easeInOutCirc).setLoopPingPong( 3 ); + + // Call methods after a certain time period + LeanTween.delayedCall(gameObject, 0.2f, advancedExamples); + + } + + // Advanced Examples + // It might be best to master the basics first, but this is included to tease the many possibilies LeanTween provides. + + void advancedExamples(){ + LeanTween.delayedCall(gameObject, 14f, ()=>{ + for(int i=0; i < 10; i++){ + // Instantiate Container + GameObject rotator = new GameObject("rotator"+i); + rotator.transform.position = new Vector3(10.2f,2.85f,0f); + + // Instantiate Avatar + GameObject dude = (GameObject)GameObject.Instantiate(prefabAvatar, Vector3.zero, prefabAvatar.transform.rotation ); + dude.transform.parent = rotator.transform; + dude.transform.localPosition = new Vector3(0f,1.5f,2.5f*i); + + // Scale, pop-in + dude.transform.localScale = new Vector3(0f,0f,0f); + LeanTween.scale(dude, new Vector3(0.65f,0.65f,0.65f), 1f).setDelay(i*0.2f).setEase(LeanTweenType.easeOutBack); + + // Color like the rainbow + float period = LeanTween.tau/10*i; + float red = Mathf.Sin(period + LeanTween.tau*0f/3f) * 0.5f + 0.5f; + float green = Mathf.Sin(period + LeanTween.tau*1f/3f) * 0.5f + 0.5f; + float blue = Mathf.Sin(period + LeanTween.tau*2f/3f) * 0.5f + 0.5f; + Color rainbowColor = new Color(red, green, blue); + LeanTween.color(dude, rainbowColor, 0.3f).setDelay(1.2f + i*0.4f); + + // Push into the wheel + LeanTween.moveZ(dude, 0f, 0.3f).setDelay(1.2f + i*0.4f).setEase(LeanTweenType.easeSpring).setOnComplete( + ()=>{ + LeanTween.rotateAround(rotator, Vector3.forward, -1080f, 12f); + } + ); + + // Jump Up and back down + LeanTween.moveLocalY(dude,4f,1.2f).setDelay(5f + i*0.2f).setLoopPingPong(1).setEase(LeanTweenType.easeInOutQuad); + + // Alpha Out, and destroy + LeanTween.alpha(dude, 0f, 0.6f).setDelay(9.2f + i*0.4f).setDestroyOnComplete(true).setOnComplete( + ()=>{ + Destroy( rotator ); // destroying parent as well + } + ); + } + + }).setOnCompleteOnStart(true).setRepeat(-1); // Have the OnComplete play in the beginning and have the whole group repeat endlessly + } +} diff --git a/Assets/LeanTween/Examples/Scripts/GeneralBasic.cs.meta b/Assets/LeanTween/Examples/Scripts/GeneralBasic.cs.meta new file mode 100644 index 0000000..87e42bb --- /dev/null +++ b/Assets/LeanTween/Examples/Scripts/GeneralBasic.cs.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: a2605544ab2e14c93a780ca20c108cfe +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} diff --git a/Assets/LeanTween/Examples/Scripts/GeneralBasics2d.cs b/Assets/LeanTween/Examples/Scripts/GeneralBasics2d.cs new file mode 100644 index 0000000..c4ad274 --- /dev/null +++ b/Assets/LeanTween/Examples/Scripts/GeneralBasics2d.cs @@ -0,0 +1,102 @@ +using UnityEngine; +using System.Collections; +using DentedPixel; + +public class GeneralBasics2d : MonoBehaviour { + + public Texture2D dudeTexture; + public GameObject prefabParticles; + + #if !(UNITY_3_5 || UNITY_4_0 || UNITY_4_0_1 || UNITY_4_1 || UNITY_4_2) + + void Start () { + // Setup + GameObject avatarRotate = createSpriteDude( "avatarRotate", new Vector3(-2.51208f,10.7119f,-14.37754f)); + GameObject avatarScale = createSpriteDude( "avatarScale", new Vector3(2.51208f,10.2119f,-14.37754f)); + GameObject avatarMove = createSpriteDude( "avatarMove", new Vector3(-3.1208f,7.100643f,-14.37754f)); + + // Rotate Example + LeanTween.rotateAround( avatarRotate, Vector3.forward, -360f, 5f); + + // Scale Example + LeanTween.scale( avatarScale, new Vector3(1.7f, 1.7f, 1.7f), 5f).setEase(LeanTweenType.easeOutBounce); + LeanTween.moveX( avatarScale, avatarScale.transform.position.x + 1f, 5f).setEase(LeanTweenType.easeOutBounce); // Simultaneously target many different tweens on the same object + + // Move Example + LeanTween.move( avatarMove, avatarMove.transform.position + new Vector3(1.7f, 0f, 0f), 2f).setEase(LeanTweenType.easeInQuad); + + // Delay + LeanTween.move( avatarMove, avatarMove.transform.position + new Vector3(2f, -1f, 0f), 2f).setDelay(3f); + + // Chain properties (delay, easing with a set repeating of type ping pong) + LeanTween.scale( avatarScale, new Vector3(0.2f, 0.2f, 0.2f), 1f).setDelay(7f).setEase(LeanTweenType.easeInOutCirc).setLoopPingPong(3); + + // Call methods after a certain time period + LeanTween.delayedCall(gameObject, 0.2f, advancedExamples); + } + + GameObject createSpriteDude( string name, Vector3 pos, bool hasParticles = true ){ + GameObject go = new GameObject(name); + SpriteRenderer ren = go.AddComponent(); + go.GetComponent().color = new Color(0f,181f/255f,1f); + ren.sprite = Sprite.Create( dudeTexture, new Rect(0.0f,0.0f,256.0f,256.0f), new Vector2(0.5f,0f), 256f); + go.transform.position = pos; + + if(hasParticles){ + GameObject particles = (GameObject)GameObject.Instantiate(prefabParticles, Vector3.zero, prefabParticles.transform.rotation ); + particles.transform.parent = go.transform; + particles.transform.localPosition = prefabParticles.transform.position; + } + return go; + } + + // Advanced Examples + // It might be best to master the basics first, but this is included to tease the many possibilies LeanTween provides. + + void advancedExamples(){ + LeanTween.delayedCall(gameObject, 14f, ()=>{ + for(int i=0; i < 10; i++){ + // Instantiate Container + GameObject rotator = new GameObject("rotator"+i); + rotator.transform.position = new Vector3(2.71208f,7.100643f,-12.37754f); + + // Instantiate Avatar + GameObject dude = createSpriteDude( "dude"+i, new Vector3(-2.51208f,7.100643f,-14.37754f), false);//(GameObject)GameObject.Instantiate(prefabAvatar, Vector3.zero, prefabAvatar.transform.rotation ); + dude.transform.parent = rotator.transform; + dude.transform.localPosition = new Vector3(0f,0.5f,0.5f*i); + + // Scale, pop-in + dude.transform.localScale = new Vector3(0f,0f,0f); + LeanTween.scale(dude, new Vector3(0.65f,0.65f,0.65f), 1f).setDelay(i*0.2f).setEase(LeanTweenType.easeOutBack); + + // Color like the rainbow + float period = LeanTween.tau/10*i; + float red = Mathf.Sin(period + LeanTween.tau*0f/3f) * 0.5f + 0.5f; + float green = Mathf.Sin(period + LeanTween.tau*1f/3f) * 0.5f + 0.5f; + float blue = Mathf.Sin(period + LeanTween.tau*2f/3f) * 0.5f + 0.5f; + Color rainbowColor = new Color(red, green, blue); + LeanTween.color(dude, rainbowColor, 0.3f).setDelay(1.2f + i*0.4f); + + // Push into the wheel + LeanTween.moveLocalZ(dude, -2f, 0.3f).setDelay(1.2f + i*0.4f).setEase(LeanTweenType.easeSpring).setOnComplete( + ()=>{ + LeanTween.rotateAround(rotator, Vector3.forward, -1080f, 12f); + } + ); + + // Jump Up and back down + LeanTween.moveLocalY(dude,1.17f,1.2f).setDelay(5f + i*0.2f).setLoopPingPong(1).setEase(LeanTweenType.easeInOutQuad); + + // Alpha Out, and destroy + LeanTween.alpha(dude, 0f, 0.6f).setDelay(9.2f + i*0.4f).setDestroyOnComplete(true).setOnComplete( + ()=>{ + Destroy( rotator ); // destroying parent as well + } + ); + } + + }).setOnCompleteOnStart(true).setRepeat(-1); // Have the OnComplete play in the beginning and have the whole group repeat endlessly + } + + #endif +} diff --git a/Assets/LeanTween/Examples/Scripts/GeneralBasics2d.cs.meta b/Assets/LeanTween/Examples/Scripts/GeneralBasics2d.cs.meta new file mode 100644 index 0000000..d8c9463 --- /dev/null +++ b/Assets/LeanTween/Examples/Scripts/GeneralBasics2d.cs.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 9b39dd70d168b4cbea9a7b8561d9accc +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} diff --git a/Assets/LeanTween/Examples/Scripts/GeneralCameraShake.cs b/Assets/LeanTween/Examples/Scripts/GeneralCameraShake.cs new file mode 100644 index 0000000..36c19d2 --- /dev/null +++ b/Assets/LeanTween/Examples/Scripts/GeneralCameraShake.cs @@ -0,0 +1,82 @@ +#if !UNITY_FLASH +using UnityEngine; +using System.Collections; +using DentedPixel; + +public class GeneralCameraShake : MonoBehaviour { + + private GameObject avatarBig; + private float jumpIter = 9.5f; + private AudioClip boomAudioClip; + + // Use this for initialization + void Start () { + avatarBig = GameObject.Find("AvatarBig"); + + AnimationCurve volumeCurve = new AnimationCurve( new Keyframe(8.130963E-06f, 0.06526042f, 0f, -1f), new Keyframe(0.0007692695f, 2.449077f, 9.078861f, 9.078861f), new Keyframe(0.01541314f, 0.9343268f, -40f, -40f), new Keyframe(0.05169491f, 0.03835937f, -0.08621139f, -0.08621139f)); + AnimationCurve frequencyCurve = new AnimationCurve( new Keyframe(0f, 0.003005181f, 0f, 0f), new Keyframe(0.01507768f, 0.002227979f, 0f, 0f)); + boomAudioClip = LeanAudio.createAudio(volumeCurve, frequencyCurve, LeanAudio.options().setVibrato( new Vector3[]{ new Vector3(0.1f,0f,0f)} )); + + + bigGuyJump(); + } + + void bigGuyJump(){ + float height = Mathf.PerlinNoise(jumpIter, 0f)*10f; + height = height*height * 0.3f; + // Debug.Log("height:"+height+" jumpIter:"+jumpIter); + + LeanTween.moveY(avatarBig, height, 1f).setEase(LeanTweenType.easeInOutQuad).setOnComplete( ()=>{ + LeanTween.moveY(avatarBig, 0f, 0.27f).setEase(LeanTweenType.easeInQuad).setOnComplete( ()=>{ + LeanTween.cancel(gameObject); + + /************** + * Camera Shake + **************/ + + float shakeAmt = height*0.2f; // the degrees to shake the camera + float shakePeriodTime = 0.42f; // The period of each shake + float dropOffTime = 1.6f; // How long it takes the shaking to settle down to nothing + LTDescr shakeTween = LeanTween.rotateAroundLocal( gameObject, Vector3.right, shakeAmt, shakePeriodTime) + .setEase( LeanTweenType.easeShake ) // this is a special ease that is good for shaking + .setLoopClamp() + .setRepeat(-1); + + // Slow the camera shake down to zero + LeanTween.value(gameObject, shakeAmt, 0f, dropOffTime).setOnUpdate( + (float val)=>{ + shakeTween.setTo(Vector3.right*val); + } + ).setEase(LeanTweenType.easeOutQuad); + + + /******************** + * Shake scene objects + ********************/ + + // Make the boxes jump from the big stomping + GameObject[] boxes = GameObject.FindGameObjectsWithTag("Respawn"); // I just arbitrarily tagged the boxes with this since it was available in the scene + foreach (GameObject box in boxes) { + box.GetComponent().AddForce(Vector3.up * 100 * height); + } + + // Make the lamps spin from the big stomping + GameObject[] lamps = GameObject.FindGameObjectsWithTag("GameController"); // I just arbitrarily tagged the lamps with this since it was available in the scene + foreach (GameObject lamp in lamps) { + float z = lamp.transform.eulerAngles.z; + z = z > 0.0f && z < 180f ? 1 : -1; // push the lamps in whatever direction they are currently swinging + lamp.GetComponent().AddForce(new Vector3(z, 0f, 0f ) * 15 * height); + } + + // Play BOOM! + LeanAudio.play(boomAudioClip, transform.position, height*0.2f); // Like this sound? : http://leanaudioplay.dentedpixel.com/?d=a:fvb:8,0,0.003005181,0,0,0.01507768,0.002227979,0,0,8~8,8.130963E-06,0.06526042,0,-1,0.0007692695,2.449077,9.078861,9.078861,0.01541314,0.9343268,-40,-40,0.05169491,0.03835937,-0.08621139,-0.08621139,8~0.1,0,0,~44100 + + // Have the jump happen again 2 seconds from now + LeanTween.delayedCall(2f, bigGuyJump); + }); + }); + jumpIter += 5.2f; + } + +} +#endif \ No newline at end of file diff --git a/Assets/LeanTween/Examples/Scripts/GeneralCameraShake.cs.meta b/Assets/LeanTween/Examples/Scripts/GeneralCameraShake.cs.meta new file mode 100644 index 0000000..3fb02ea --- /dev/null +++ b/Assets/LeanTween/Examples/Scripts/GeneralCameraShake.cs.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 8a650682fa3d54a57a2521dbf9f6eac2 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} diff --git a/Assets/LeanTween/Examples/Scripts/GeneralEasingTypes.cs b/Assets/LeanTween/Examples/Scripts/GeneralEasingTypes.cs new file mode 100644 index 0000000..f493123 --- /dev/null +++ b/Assets/LeanTween/Examples/Scripts/GeneralEasingTypes.cs @@ -0,0 +1,72 @@ +using UnityEngine; +using System.Collections; +using System.Reflection; +using DentedPixel; + +public class GeneralEasingTypes : MonoBehaviour { + + public float lineDrawScale = 10f; + public AnimationCurve animationCurve; + + private string[] easeTypes = new string[]{ + "EaseLinear","EaseAnimationCurve","EaseSpring", + "EaseInQuad","EaseOutQuad","EaseInOutQuad", + "EaseInCubic","EaseOutCubic","EaseInOutCubic", + "EaseInQuart","EaseOutQuart","EaseInOutQuart", + "EaseInQuint","EaseOutQuint","EaseInOutQuint", + "EaseInSine","EaseOutSine","EaseInOutSine", + "EaseInExpo","EaseOutExpo","EaseInOutExpo", + "EaseInCirc","EaseOutCirc","EaseInOutCirc", + "EaseInBounce","EaseOutBounce","EaseInOutBounce", + "EaseInBack","EaseOutBack","EaseInOutBack", + "EaseInElastic","EaseOutElastic","EaseInOutElastic", + "EasePunch","EaseShake", + }; + + void Start () { + + demoEaseTypes(); + } + + private void demoEaseTypes(){ + for(int i = 0; i < easeTypes.Length; i++){ + string easeName = easeTypes[i]; + Transform obj1 = GameObject.Find(easeName).transform.Find("Line"); + float obj1val = 0f; + LTDescr lt = LeanTween.value( obj1.gameObject, 0f, 1f, 5f).setOnUpdate( (float val)=>{ + Vector3 vec = obj1.localPosition; + vec.x = obj1val*lineDrawScale; + vec.y = val*lineDrawScale; + + obj1.localPosition = vec; + + obj1val += Time.deltaTime/5f; + if(obj1val>1f) + obj1val = 0f; + }); + if(easeName.IndexOf("AnimationCurve")>=0){ + lt.setEase(animationCurve); + }else{ + MethodInfo theMethod = lt.GetType().GetMethod("set"+easeName); + theMethod.Invoke(lt, null); + } + + if (easeName.IndexOf("EasePunch") >= 0) { + lt.setScale(1f); + } else if (easeName.IndexOf("EaseOutBounce") >= 0) { + lt.setOvershoot(2f); + } + } + + LeanTween.delayedCall(gameObject, 10f, resetLines); + LeanTween.delayedCall(gameObject, 10.1f, demoEaseTypes); + } + + private void resetLines(){ + for(int i = 0; i < easeTypes.Length; i++){ + Transform obj1 = GameObject.Find(easeTypes[i]).transform.Find("Line"); + obj1.localPosition = new Vector3(0f,0f,0f); + } + } + +} diff --git a/Assets/LeanTween/Examples/Scripts/GeneralEasingTypes.cs.meta b/Assets/LeanTween/Examples/Scripts/GeneralEasingTypes.cs.meta new file mode 100644 index 0000000..c16432f --- /dev/null +++ b/Assets/LeanTween/Examples/Scripts/GeneralEasingTypes.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 94e9a883a33cd40b9be1a63f002c4db2 +timeCreated: 1471950328 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/LeanTween/Examples/Scripts/GeneralEventsListeners.cs b/Assets/LeanTween/Examples/Scripts/GeneralEventsListeners.cs new file mode 100644 index 0000000..758495f --- /dev/null +++ b/Assets/LeanTween/Examples/Scripts/GeneralEventsListeners.cs @@ -0,0 +1,83 @@ +#if !UNITY_FLASH +using UnityEngine; +using System.Collections; +using DentedPixel; + +public class GeneralEventsListeners : MonoBehaviour { + + Vector3 towardsRotation; + float turnForLength = 0.5f; + float turnForIter = 0f; + Color fromColor; + + // It's best to make this a public enum that you use throughout your project, so every class can have access to it + public enum MyEvents{ + CHANGE_COLOR, + JUMP, + LENGTH + } + + void Awake(){ + LeanTween.LISTENERS_MAX = 100; // This is the maximum of event listeners you will have added as listeners + LeanTween.EVENTS_MAX = (int)MyEvents.LENGTH; // The maximum amount of events you will be dispatching + + fromColor = GetComponent().material.color; + } + + void Start () { + // Adding Listeners, it's best to use an enum so your listeners are more descriptive but you could use an int like 0,1,2,... + LeanTween.addListener(gameObject, (int)MyEvents.CHANGE_COLOR, changeColor); + LeanTween.addListener(gameObject, (int)MyEvents.JUMP, jumpUp); + } + + // ****** Event Listening Methods + + void jumpUp( LTEvent e ){ + GetComponent().AddRelativeForce(Vector3.forward * 300f); + } + + void changeColor( LTEvent e ){ + Transform tran = (Transform)e.data; + float distance = Vector3.Distance( tran.position, transform.position); + Color to = new Color(Random.Range(0f,1f),0f,Random.Range(0f,1f)); + LeanTween.value( gameObject, fromColor, to, 0.8f ).setLoopPingPong(1).setDelay(distance*0.05f).setOnUpdate( + (Color col)=>{ + GetComponent().material.color = col; + } + ); + } + + // ****** Physics / AI Stuff + + void OnCollisionEnter(Collision collision) { + if(collision.gameObject.layer!=2) + towardsRotation = new Vector3(0f, Random.Range(-180, 180), 0f); + } + + void OnCollisionStay(Collision collision) { + if(collision.gameObject.layer!=2){ + turnForIter = 0f; + turnForLength = Random.Range(0.5f, 1.5f); + } + } + + void FixedUpdate(){ + if(turnForIter < turnForLength){ + GetComponent().MoveRotation( GetComponent().rotation * Quaternion.Euler(towardsRotation * Time.deltaTime ) ); + turnForIter += Time.deltaTime; + } + + GetComponent().AddRelativeForce(Vector3.forward * 4.5f); + } + + // ****** Key and clicking detection + + void OnMouseDown(){ + if(Input.GetKey( KeyCode.J )){ // Are you also pressing the "j" key while clicking + LeanTween.dispatchEvent((int)MyEvents.JUMP); + }else{ + LeanTween.dispatchEvent((int)MyEvents.CHANGE_COLOR, transform); // with every dispatched event, you can include an object (retrieve this object with the *.data var in LTEvent) + } + } +} +#endif diff --git a/Assets/LeanTween/Examples/Scripts/GeneralEventsListeners.cs.meta b/Assets/LeanTween/Examples/Scripts/GeneralEventsListeners.cs.meta new file mode 100644 index 0000000..82d5acb --- /dev/null +++ b/Assets/LeanTween/Examples/Scripts/GeneralEventsListeners.cs.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: cd679d4fbbd8d475ba7187561370c3aa +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} diff --git a/Assets/LeanTween/Examples/Scripts/GeneralSequencer.cs b/Assets/LeanTween/Examples/Scripts/GeneralSequencer.cs new file mode 100644 index 0000000..2d05bd9 --- /dev/null +++ b/Assets/LeanTween/Examples/Scripts/GeneralSequencer.cs @@ -0,0 +1,61 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class GeneralSequencer : MonoBehaviour { + + public GameObject avatar1; + + public GameObject star; + + public GameObject dustCloudPrefab; + + public float speedScale = 1f; + + public void Start(){ + + // Jump up + var seq = LeanTween.sequence(); + + + seq.append( LeanTween.moveY( avatar1, avatar1.transform.localPosition.y + 6f, 1f).setEaseOutQuad() ); + + // Power up star, use insert when you want to branch off from the regular sequence (this does not push back the delay of other subsequent tweens) + seq.insert( LeanTween.alpha(star, 0f, 1f) ); + seq.insert( LeanTween.scale( star, Vector3.one * 3f, 1f) ); + + // Rotate 360 + seq.append( LeanTween.rotateAround( avatar1, Vector3.forward, 360f, 0.6f ).setEaseInBack() ); + + // Return to ground + seq.append( LeanTween.moveY( avatar1, avatar1.transform.localPosition.y, 1f).setEaseInQuad() ); + + // Kick off spiraling clouds - Example of appending a callback method + seq.append(() => { + for(int i = 0; i < 50f; i++){ + GameObject cloud = Instantiate(dustCloudPrefab) as GameObject; + cloud.transform.parent = avatar1.transform; + cloud.transform.localPosition = new Vector3(Random.Range(-2f,2f),0f,0f); + cloud.transform.eulerAngles = new Vector3(0f,0f,Random.Range(0,360f)); + + var range = new Vector3(cloud.transform.localPosition.x, Random.Range(2f,4f), Random.Range(-10f,10f)); + + // Tweens not in a sequence, because we want them all to animate at the same time + LeanTween.moveLocal(cloud, range, 3f*speedScale).setEaseOutCirc(); + LeanTween.rotateAround(cloud, Vector3.forward, 360f*2, 3f*speedScale).setEaseOutCirc(); + LeanTween.alpha(cloud, 0f, 3f*speedScale).setEaseOutCirc().setDestroyOnComplete(true); + } + }); + + // You can speed up or slow down the sequence of events + seq.setScale(speedScale); + + // seq.reverse(); // not working yet + + // Testing canceling sequence after a bit of time + //LeanTween.delayedCall(3f, () => + //{ + // LeanTween.cancel(seq.id); + //}); + } +} diff --git a/Assets/LeanTween/Examples/Scripts/GeneralSequencer.cs.meta b/Assets/LeanTween/Examples/Scripts/GeneralSequencer.cs.meta new file mode 100644 index 0000000..556beac --- /dev/null +++ b/Assets/LeanTween/Examples/Scripts/GeneralSequencer.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 5b54bce4a9ed14e28a4a423c794a2d70 +timeCreated: 1488722358 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/LeanTween/Examples/Scripts/GeneralSimpleUI.cs b/Assets/LeanTween/Examples/Scripts/GeneralSimpleUI.cs new file mode 100644 index 0000000..12133b5 --- /dev/null +++ b/Assets/LeanTween/Examples/Scripts/GeneralSimpleUI.cs @@ -0,0 +1,56 @@ +using UnityEngine; +using System.Collections; +using DentedPixel; + +public class GeneralSimpleUI : MonoBehaviour { + #if !UNITY_3_5 && !UNITY_4_0 && !UNITY_4_0_1 && !UNITY_4_1 && !UNITY_4_2 && !UNITY_4_3 && !UNITY_4_5 + + public RectTransform button; + + void Start () { + Debug.Log("For better examples see the 4.6_Examples folder!"); + if(button==null){ + Debug.LogError("Button not assigned! Create a new button via Hierarchy->Create->UI->Button. Then assign it to the button variable"); + return; + } + + // Tweening various values in a block callback style + LeanTween.value(button.gameObject, button.anchoredPosition, new Vector2(200f,100f), 1f ).setOnUpdate( + (Vector2 val)=>{ + button.anchoredPosition = val; + } + ); + + LeanTween.value(gameObject, 1f, 0.5f, 1f ).setOnUpdate( + (float volume)=>{ + Debug.Log("volume:"+volume); + } + ); + + LeanTween.value(gameObject, gameObject.transform.position, gameObject.transform.position + new Vector3(0,1f,0), 1f ).setOnUpdate( + (Vector3 val)=>{ + gameObject.transform.position = val; + } + ); + + LeanTween.value(gameObject, Color.red, Color.green, 1f ).setOnUpdate( + (Color val)=>{ + UnityEngine.UI.Image image = (UnityEngine.UI.Image)button.gameObject.GetComponent( typeof(UnityEngine.UI.Image) ); + image.color = val; + } + ); + + // Tweening Using Unity's new Canvas GUI System + LeanTween.move(button, new Vector3(200f,-100f,0f), 1f).setDelay(1f); + LeanTween.rotateAround(button, Vector3.forward, 90f, 1f).setDelay(2f); + LeanTween.scale(button, button.localScale*2f, 1f).setDelay(3f); + LeanTween.rotateAround(button, Vector3.forward, -90f, 1f).setDelay(4f).setEase(LeanTweenType.easeInOutElastic); + } + + #else + void Start(){ + Debug.LogError("Unity 4.6+ is required to use the new UI"); + } + + #endif +} diff --git a/Assets/LeanTween/Examples/Scripts/GeneralSimpleUI.cs.meta b/Assets/LeanTween/Examples/Scripts/GeneralSimpleUI.cs.meta new file mode 100644 index 0000000..f9b578b --- /dev/null +++ b/Assets/LeanTween/Examples/Scripts/GeneralSimpleUI.cs.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 19c352f230e8b46f08abbbd7cc11edb8 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} diff --git a/Assets/LeanTween/Examples/Scripts/GeneralUISpace.cs b/Assets/LeanTween/Examples/Scripts/GeneralUISpace.cs new file mode 100644 index 0000000..f2f490b --- /dev/null +++ b/Assets/LeanTween/Examples/Scripts/GeneralUISpace.cs @@ -0,0 +1,89 @@ +using UnityEngine; +using System.Collections; +using DentedPixel; + +public class GeneralUISpace : MonoBehaviour { + + public RectTransform mainWindow; + public RectTransform mainParagraphText; + public RectTransform mainTitleText; + public RectTransform mainButton1; + public RectTransform mainButton2; + + public RectTransform pauseRing1; + public RectTransform pauseRing2; + public RectTransform pauseWindow; + + public RectTransform chatWindow; + public RectTransform chatRect; + public Sprite[] chatSprites; + public RectTransform chatBar1; + public RectTransform chatBar2; + public UnityEngine.UI.Text chatText; + + public RectTransform rawImageRect; + + void Start () { + // Time.timeScale = 1f/4f; + + // *********** Main Window ********** + // Scale the whole window in + mainWindow.localScale = Vector3.zero; + LeanTween.scale( mainWindow, new Vector3(1f,1f,1f), 0.6f).setEase(LeanTweenType.easeOutBack); + LeanTween.alphaCanvas( mainWindow.GetComponent(), 0f, 1f).setDelay(2f).setLoopPingPong().setRepeat(2); + + // Fade the main paragraph in while moving upwards + mainParagraphText.anchoredPosition3D += new Vector3(0f,-10f,0f); + LeanTween.textAlpha( mainParagraphText, 0f, 0.6f).setFrom(0f).setDelay(0f); + LeanTween.textAlpha( mainParagraphText, 1f, 0.6f).setEase(LeanTweenType.easeOutQuad).setDelay(0.6f); + LeanTween.move( mainParagraphText, mainParagraphText.anchoredPosition3D + new Vector3(0f,10f,0f), 0.6f).setEase(LeanTweenType.easeOutQuad).setDelay(0.6f); + + // Flash text to purple and back + LeanTween.textColor( mainTitleText, new Color(133f/255f,145f/255f,223f/255f), 0.6f).setEase(LeanTweenType.easeOutQuad).setDelay(0.6f).setLoopPingPong().setRepeat(-1); + + // Fade button in + LeanTween.textAlpha(mainButton2, 1f, 2f ).setFrom(0f).setDelay(0f).setEase(LeanTweenType.easeOutQuad); + LeanTween.alpha(mainButton2, 1f, 2f ).setFrom(0f).setDelay(0f).setEase(LeanTweenType.easeOutQuad); + + // Pop size of button + LeanTween.size(mainButton1, mainButton1.sizeDelta * 1.1f, 0.5f).setDelay(3f).setEaseInOutCirc().setRepeat(6).setLoopPingPong(); + + + // *********** Pause Button ********** + // Drop pause button in + pauseWindow.anchoredPosition3D += new Vector3(0f,200f,0f); + LeanTween.moveY( pauseWindow, pauseWindow.anchoredPosition3D.y + -200f, 0.6f).setEase(LeanTweenType.easeOutSine).setDelay(0.6f); + + // Punch Pause Symbol + RectTransform pauseText = pauseWindow.Find("PauseText").GetComponent(); + LeanTween.moveZ( pauseText, pauseText.anchoredPosition3D.z - 80f, 1.5f).setEase(LeanTweenType.punch).setDelay(2.0f); + + // Rotate rings around in opposite directions + LeanTween.rotateAroundLocal(pauseRing1, Vector3.forward, 360f, 12f).setRepeat(-1); + LeanTween.rotateAroundLocal(pauseRing2, Vector3.forward, -360f, 22f).setRepeat(-1); + + + // *********** Chat Window ********** + // Flip the chat window in + chatWindow.RotateAround(chatWindow.position, Vector3.up, -180f); + LeanTween.rotateAround(chatWindow, Vector3.up, 180f, 2f).setEase(LeanTweenType.easeOutElastic).setDelay(1.2f); + + // Play a series of sprites on the window on repeat endlessly + LeanTween.play(chatRect, chatSprites).setLoopPingPong(); + + // Animate the bar up and down while changing the color to red-ish + LeanTween.color( chatBar2, new Color(248f/255f,67f/255f,108f/255f, 0.5f), 1.2f).setEase(LeanTweenType.easeInQuad).setLoopPingPong().setDelay(1.2f); + LeanTween.scale( chatBar2, new Vector2(1f,0.7f), 1.2f).setEase(LeanTweenType.easeInQuad).setLoopPingPong(); + + // Write in paragraph text + string origText = chatText.text; + chatText.text = ""; + LeanTween.value(gameObject, 0, (float)origText.Length, 6f).setEase(LeanTweenType.easeOutQuad).setOnUpdate( (float val)=>{ + chatText.text = origText.Substring( 0, Mathf.RoundToInt( val ) ); + }).setLoopClamp().setDelay(2.0f); + + // Raw Image + LeanTween.alpha(rawImageRect,0f,1f).setLoopPingPong(); + } + +} diff --git a/Assets/LeanTween/Examples/Scripts/GeneralUISpace.cs.meta b/Assets/LeanTween/Examples/Scripts/GeneralUISpace.cs.meta new file mode 100644 index 0000000..5f46eea --- /dev/null +++ b/Assets/LeanTween/Examples/Scripts/GeneralUISpace.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: cc2ddccee016148b189d987f564ee08e +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/LeanTween/Examples/Scripts/LogoCinematic.cs b/Assets/LeanTween/Examples/Scripts/LogoCinematic.cs new file mode 100644 index 0000000..4692af8 --- /dev/null +++ b/Assets/LeanTween/Examples/Scripts/LogoCinematic.cs @@ -0,0 +1,44 @@ +using UnityEngine; +using System.Collections; +using System.Collections.Generic; +using DentedPixel; + +public class LogoCinematic : MonoBehaviour { + + public GameObject lean; + + public GameObject tween; + + void Awake(){ + + } + + + void Start () { + //Time.timeScale = 0.2f; + + // Slide in + tween.transform.localPosition += -Vector3.right * 15f; + LeanTween.moveLocalX(tween, tween.transform.localPosition.x+15f, 0.4f).setEase(LeanTweenType.linear).setDelay(0f).setOnComplete( playBoom ); + + // Drop Down tween down + tween.transform.RotateAround(tween.transform.position, Vector3.forward, -30f); + LeanTween.rotateAround(tween, Vector3.forward, 30f, 0.4f).setEase(LeanTweenType.easeInQuad).setDelay(0.4f).setOnComplete( playBoom ); + + // Drop Lean In + lean.transform.position += Vector3.up * 5.1f; + LeanTween.moveY(lean, lean.transform.position.y-5.1f, 0.6f).setEase(LeanTweenType.easeInQuad).setDelay(0.6f).setOnComplete( playBoom ); + } + + void playBoom(){ + // Make your own Dynamic Audio at http://leanaudioplay.dentedpixel.com + + AnimationCurve volumeCurve = new AnimationCurve( new Keyframe(0f, 1.163155f, 0f, -1f), new Keyframe(0.3098361f, 0f, 0f, 0f), new Keyframe(0.5f, 0.003524712f, 0f, 0f)); + AnimationCurve frequencyCurve = new AnimationCurve( new Keyframe(0.000819672f, 0.007666667f, 0f, 0f), new Keyframe(0.01065573f, 0.002424242f, 0f, 0f), new Keyframe(0.02704918f, 0.007454545f, 0f, 0f), new Keyframe(0.03770492f, 0.002575758f, 0f, 0f), new Keyframe(0.052459f, 0.007090909f, 0f, 0f), new Keyframe(0.06885245f, 0.002939394f, 0f, 0f), new Keyframe(0.0819672f, 0.006727273f, 0f, 0f), new Keyframe(0.1040983f, 0.003181818f, 0f, 0f), new Keyframe(0.1188525f, 0.006212121f, 0f, 0f), new Keyframe(0.145082f, 0.004151515f, 0f, 0f), new Keyframe(0.1893443f, 0.005636364f, 0f, 0f)); + + AudioClip audioClip = LeanAudio.createAudio(volumeCurve, frequencyCurve, LeanAudio.options().setVibrato( new Vector3[]{ new Vector3(0.1f,0f,0f)} ).setFrequency(11025)); + + LeanAudio.play( audioClip ); //a:fvb:8,.000819672,.007666667,,,.01065573,.002424242,,,.02704918,.007454545,,,.03770492,.002575758,,,.052459,.007090909,,,.06885245,.002939394,,,.0819672,.006727273,,,.1040983,.003181818,,,.1188525,.006212121,,,.145082,.004151515,,,.1893443,.005636364,,,8~8,,1.163155,,-,.3098361,,,,.5,.003524712,,,8~.1,,,~11025~0~~ + } + +} diff --git a/Assets/LeanTween/Examples/Scripts/LogoCinematic.cs.meta b/Assets/LeanTween/Examples/Scripts/LogoCinematic.cs.meta new file mode 100644 index 0000000..3bc70a2 --- /dev/null +++ b/Assets/LeanTween/Examples/Scripts/LogoCinematic.cs.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 674f3c10d8880408e875a9e6c3ee83bb +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} diff --git a/Assets/LeanTween/Examples/Scripts/PathBezier.cs b/Assets/LeanTween/Examples/Scripts/PathBezier.cs new file mode 100644 index 0000000..2b8317d --- /dev/null +++ b/Assets/LeanTween/Examples/Scripts/PathBezier.cs @@ -0,0 +1,48 @@ +using UnityEngine; +using System.Collections; +using DentedPixel; + +namespace DentedPixel.LTExamples{ + +public class PathBezier : MonoBehaviour { + + public Transform[] trans; + + LTBezierPath cr; + private GameObject avatar1; + + void OnEnable(){ + // create the path + cr = new LTBezierPath( new Vector3[] {trans[0].position, trans[2].position, trans[1].position, trans[3].position, trans[3].position, trans[5].position, trans[4].position, trans[6].position} ); + } + + void Start () { + avatar1 = GameObject.Find("Avatar1"); + + // Tween automatically + LTDescr descr = LeanTween.move(avatar1, cr.pts, 6.5f).setOrientToPath(true).setRepeat(-1); + Debug.Log("length of path 1:"+cr.length); + Debug.Log("length of path 2:"+descr.optional.path.length); + } + + private float iter; + void Update () { + // Or Update Manually + //cr.place2d( sprite1.transform, iter ); + + iter += Time.deltaTime*0.07f; + if(iter>1.0f) + iter = 0.0f; + } + + void OnDrawGizmos(){ + // Debug.Log("drwaing"); + if(cr!=null) + OnEnable(); + Gizmos.color = Color.red; + if(cr!=null) + cr.gizmoDraw(); // To Visualize the path, use this method + } +} + +} \ No newline at end of file diff --git a/Assets/LeanTween/Examples/Scripts/PathBezier.cs.meta b/Assets/LeanTween/Examples/Scripts/PathBezier.cs.meta new file mode 100644 index 0000000..56435b7 --- /dev/null +++ b/Assets/LeanTween/Examples/Scripts/PathBezier.cs.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: ac2038ba3961049ed889ae71039982cd +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} diff --git a/Assets/LeanTween/Examples/Scripts/PathBezier2d.cs b/Assets/LeanTween/Examples/Scripts/PathBezier2d.cs new file mode 100644 index 0000000..21d3ade --- /dev/null +++ b/Assets/LeanTween/Examples/Scripts/PathBezier2d.cs @@ -0,0 +1,32 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class PathBezier2d : MonoBehaviour { + + public Transform[] cubes; + + public GameObject dude1; + public GameObject dude2; + + private LTBezierPath visualizePath; + + void Start () { + // move + Vector3[] path = new Vector3[]{cubes[0].position,cubes[1].position,cubes[2].position,cubes[3].position}; + // 90 degree test + // path = new Vector3[] {new Vector3(7.5f, 0f, 0f), new Vector3(0f, 0f, 2.5f), new Vector3(2.5f, 0f, 0f), new Vector3(0f, 0f, 7.5f)}; + visualizePath = new LTBezierPath(path); + LeanTween.move(dude1, path, 10f).setOrientToPath2d(true); + + // move local + LeanTween.moveLocal(dude2, path, 10f).setOrientToPath2d(true); + } + + void OnDrawGizmos(){ + // Debug.Log("drwaing"); + Gizmos.color = Color.red; + if(visualizePath!=null) + visualizePath.gizmoDraw(); // To Visualize the path, use this method + } +} diff --git a/Assets/LeanTween/Examples/Scripts/PathBezier2d.cs.meta b/Assets/LeanTween/Examples/Scripts/PathBezier2d.cs.meta new file mode 100644 index 0000000..f94f2cd --- /dev/null +++ b/Assets/LeanTween/Examples/Scripts/PathBezier2d.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 873cb511c724a48bd919ce8a18fa882c +timeCreated: 1493586162 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/LeanTween/Examples/Scripts/PathSpline.cs b/Assets/LeanTween/Examples/Scripts/PathSpline.cs new file mode 100644 index 0000000..a928a58 --- /dev/null +++ b/Assets/LeanTween/Examples/Scripts/PathSpline.cs @@ -0,0 +1,38 @@ +using UnityEngine; +using System.Collections; +using DentedPixel; + +public class ExampleSpline : MonoBehaviour { + + public Transform[] trans; + + LTSpline spline; + private GameObject ltLogo; + private GameObject ltLogo2; + + void Start () { + spline = new LTSpline( new Vector3[] {trans[0].position, trans[1].position, trans[2].position, trans[3].position, trans[4].position} ); + ltLogo = GameObject.Find("LeanTweenLogo1"); + ltLogo2 = GameObject.Find("LeanTweenLogo2"); + + LeanTween.moveSpline( ltLogo2, spline.pts, 1f).setEase(LeanTweenType.easeInOutQuad).setLoopPingPong().setOrientToPath(true); + + LTDescr zoomInPath_LT = LeanTween.moveSpline(ltLogo2, new Vector3[]{Vector3.zero, Vector3.zero, new Vector3(1,1,1), new Vector3(2,1,1), new Vector3(2,1,1)}, 1.5f); + zoomInPath_LT.setUseEstimatedTime(true); + } + + private float iter; + void Update () { + // Iterating over path + ltLogo.transform.position = spline.point( iter /*(Time.time*1000)%1000 * 1.0 / 1000.0 */); + + iter += Time.deltaTime*0.1f; + if(iter>1.0f) + iter = 0.0f; + } + + void OnDrawGizmos(){ + if(spline!=null) + spline.gizmoDraw(); // debug aid to be able to see the path in the scene inspector + } +} diff --git a/Assets/LeanTween/Examples/Scripts/PathSpline.cs.meta b/Assets/LeanTween/Examples/Scripts/PathSpline.cs.meta new file mode 100644 index 0000000..fd4e012 --- /dev/null +++ b/Assets/LeanTween/Examples/Scripts/PathSpline.cs.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: ef4235237d8d8413c9d5807cf0a1f77b +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} diff --git a/Assets/LeanTween/Examples/Scripts/PathSpline2d.cs b/Assets/LeanTween/Examples/Scripts/PathSpline2d.cs new file mode 100644 index 0000000..2a415d3 --- /dev/null +++ b/Assets/LeanTween/Examples/Scripts/PathSpline2d.cs @@ -0,0 +1,36 @@ +using UnityEngine; +using System.Collections; +using DentedPixel; + +public class PathSpline2d : MonoBehaviour { + + public Transform[] cubes; + + public GameObject dude1; + public GameObject dude2; + + private LTSpline visualizePath; + + void Start () { + Vector3[] path = new Vector3[] { + cubes[0].position, + cubes[1].position, + cubes[2].position, + cubes[3].position, + cubes[4].position + }; + + visualizePath = new LTSpline( path ); + // move + LeanTween.moveSpline(dude1, path, 10f).setOrientToPath2d(true).setSpeed(2f); + + // move Local + LeanTween.moveSplineLocal(dude2, path, 10f).setOrientToPath2d(true).setSpeed(2f); + } + + void OnDrawGizmos(){ + Gizmos.color = Color.red; + if(visualizePath!=null) + visualizePath.gizmoDraw(); + } +} diff --git a/Assets/LeanTween/Examples/Scripts/PathSpline2d.cs.meta b/Assets/LeanTween/Examples/Scripts/PathSpline2d.cs.meta new file mode 100644 index 0000000..e23a2f0 --- /dev/null +++ b/Assets/LeanTween/Examples/Scripts/PathSpline2d.cs.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 15c036b11e3ff486ea685da06fa305f6 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} diff --git a/Assets/LeanTween/Examples/Scripts/PathSplineEndless.cs b/Assets/LeanTween/Examples/Scripts/PathSplineEndless.cs new file mode 100644 index 0000000..aec4864 --- /dev/null +++ b/Assets/LeanTween/Examples/Scripts/PathSplineEndless.cs @@ -0,0 +1,125 @@ +using UnityEngine; +using System.Collections; +using System.Collections.Generic; +using DentedPixel; + +public class PathSplineEndless : MonoBehaviour { + public GameObject trackTrailRenderers; + public GameObject car; + public GameObject carInternal; + + public GameObject[] cubes; + private int cubesIter; + public GameObject[] trees; + private int treesIter; + + public float randomIterWidth = 0.1f; + + private LTSpline track; + private List trackPts = new List(); + private int zIter = 0; + private float carIter = 0f; + private float carAdd; + private int trackMaxItems = 15; + private int trackIter = 1; + private float pushTrackAhead = 0f; + private float randomIter = 0f; + + void Start () { + + // Setup initial track points + for(int i = 0; i < 4; i++){ + addRandomTrackPoint(); + } + refreshSpline(); + + // Animate in track ahead of the car + LeanTween.value(gameObject, 0, 0.3f, 2f).setOnUpdate( ( float val )=>{ + pushTrackAhead = val; + }); + } + + void Update () { + + float zLastDist = (trackPts[ trackPts.Count - 1].z - transform.position.z); + if(zLastDist < 200f){ // if the last node is too close we'll add in a new point and refresh the spline + addRandomTrackPoint(); + refreshSpline(); + } + + // Update avatar's position on correct track + track.place( car.transform, carIter ); + carIter += carAdd * Time.deltaTime; + + // we'll place the trail renders always a bit in front of the car + track.place( trackTrailRenderers.transform, carIter + pushTrackAhead ); + + + // Switch tracks on keyboard input + float turn = Input.GetAxis("Horizontal"); + if(Input.anyKeyDown){ + if(turn<0f && trackIter>0){ + trackIter--; + playSwish(); + }else if(turn>0f && trackIter < 2){ // We have three track "rails" so stopping it from going above 3 + trackIter++; + playSwish(); + } + // Move the internal local x of the car to simulate changing tracks + LeanTween.moveLocalX(carInternal, (trackIter-1)*6f, 0.3f).setEase(LeanTweenType.easeOutBack); + } + } + + // Simple object queuing system + GameObject objectQueue( GameObject[] arr, ref int lastIter ){ + lastIter = lastIter>=arr.Length-1 ? 0 : lastIter+1; + + // Reset scale and rotation for a new animation + arr[ lastIter ].transform.localScale = Vector3.one; + arr[ lastIter ].transform.rotation = Quaternion.identity; + return arr[ lastIter ]; + } + + void addRandomTrackPoint(){ + float randX = Mathf.PerlinNoise(0f, randomIter); + randomIter += randomIterWidth; + + Vector3 randomInFrontPosition = new Vector3( (randX-0.5f)*20f, 0f, zIter*40f); + + // placing the box is just to visualize how the paths get created + GameObject box = objectQueue( cubes, ref cubesIter ); + box.transform.position = randomInFrontPosition; + + // Line the roads with trees + GameObject tree = objectQueue( trees, ref treesIter ); + float treeX = zIter%2==0 ? -15f : 15f; + tree.transform.position = new Vector3( randomInFrontPosition.x + treeX, 0f, zIter*40f); + + // Animate in new tree (just for fun) + LeanTween.rotateAround( tree, Vector3.forward, 0f, 1f).setFrom( zIter%2==0 ? 180f : -180f).setEase(LeanTweenType.easeOutBack); + + trackPts.Add( randomInFrontPosition ); // Add a future spline node + if(trackPts.Count > trackMaxItems) + trackPts.RemoveAt(0); // Remove the trailing spline node + + zIter++; + } + + void refreshSpline(){ + track = new LTSpline( trackPts.ToArray() ); + carIter = track.ratioAtPoint( car.transform.position ); // we created a new spline so we need to update the cars iteration point on this new spline + // Debug.Log("distance:"+track.distance+" carIter:"+carIter); + carAdd = 40f / track.distance; // we want to make sure the speed is based on the distance of the spline for a more constant speed + } + + // Make your own LeanAudio sounds at http://leanaudioplay.dentedpixel.com + void playSwish(){ + AnimationCurve volumeCurve = new AnimationCurve( new Keyframe(0f, 0.005464481f, 1.83897f, 0f), new Keyframe(0.1114856f, 2.281785f, 0f, 0f), new Keyframe(0.2482903f, 2.271654f, 0f, 0f), new Keyframe(0.3f, 0.01670286f, 0f, 0f)); + AnimationCurve frequencyCurve = new AnimationCurve( new Keyframe(0f, 0.00136725f, 0f, 0f), new Keyframe(0.1482391f, 0.005405405f, 0f, 0f), new Keyframe(0.2650336f, 0.002480127f, 0f, 0f)); + + AudioClip audioClip = LeanAudio.createAudio(volumeCurve, frequencyCurve, LeanAudio.options().setVibrato( new Vector3[]{ new Vector3(0.2f,0.5f,0f)} ).setWaveNoise().setWaveNoiseScale(1000)); + + LeanAudio.play( audioClip ); //a:fvb:8,,.00136725,,,.1482391,.005405405,,,.2650336,.002480127,,,8~8,,.005464481,1.83897,,.1114856,2.281785,,,.2482903,2.271654,,,.3,.01670286,,,8~.2,.5,,~~0~~3,1000,1 + } + +} diff --git a/Assets/LeanTween/Examples/Scripts/PathSplineEndless.cs.meta b/Assets/LeanTween/Examples/Scripts/PathSplineEndless.cs.meta new file mode 100644 index 0000000..15fe013 --- /dev/null +++ b/Assets/LeanTween/Examples/Scripts/PathSplineEndless.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 784f0e347ee4d4c3b83ca56d6f33f01a +timeCreated: 1460315101 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/LeanTween/Examples/Scripts/PathSplinePerformance.cs b/Assets/LeanTween/Examples/Scripts/PathSplinePerformance.cs new file mode 100644 index 0000000..a3e2884 --- /dev/null +++ b/Assets/LeanTween/Examples/Scripts/PathSplinePerformance.cs @@ -0,0 +1,93 @@ +using UnityEngine; +using System.Collections; +using System.Collections.Generic; +using DentedPixel; +// This class is to test the upper limits of a complex spline + +public class PathSplinePerformance : MonoBehaviour { + + public GameObject trackTrailRenderers; + public GameObject car; + public GameObject carInternal; + + + public float circleLength = 10f; + public float randomRange = 1f; + public int trackNodes = 30; + public float carSpeed = 30f; + public float tracerSpeed = 2f; + + private LTSpline track; + private int trackIter = 1; + private float carAdd; + private float trackPosition; // ratio 0,1 of the avatars position on the track + + void Start () { + Application.targetFrameRate = 240; + + // Make the track from the provided transforms + List randList = new List(); + float degree = 0f; + int nodeLength = trackNodes + 1;// We need to add some extra because the first and last nodes just act as *guides* to the first and last curvature + for(int i = 0; i < nodeLength; i++){ + float x = Mathf.Cos( degree * Mathf.Deg2Rad ) * circleLength + Random.Range(0f, randomRange); + float z = Mathf.Sin( degree * Mathf.Deg2Rad ) * circleLength + Random.Range(0f, randomRange); + randList.Add( new Vector3(x,1f,z ) ); + + degree += 360f/(float)trackNodes; + } + randList[0] = randList[ randList.Count-1 ]; // set the zero-ith one as the last position so it will flow smoothly into the first curve + randList.Add( randList[1] ); // Add the first and second one in, so the circle connects to itself + randList.Add( randList[2] ); + + track = new LTSpline( randList.ToArray() ); + + carAdd = carSpeed / track.distance; + + tracerSpeed = track.distance / (carSpeed*1.2f); + + // Optional technique to show the trails in game + LeanTween.moveSpline( trackTrailRenderers, track, tracerSpeed ).setOrientToPath(true).setRepeat(-1); + } + + void Update () { + // Switch tracks on keyboard input + float turn = Input.GetAxis("Horizontal"); + if(Input.anyKeyDown){ + if(turn<0f && trackIter>0){ + trackIter--; + playSwish(); + }else if(turn>0f && trackIter < 2){ // We have three track "rails" so stopping it from going above 3 + trackIter++; + playSwish(); + } + // Move the internal local x of the car to simulate changing tracks + LeanTween.moveLocalX(carInternal, (trackIter-1)*6f, 0.3f).setEase(LeanTweenType.easeOutBack); + + } + + // Update avatar's position on correct track + track.place( car.transform, trackPosition ); + + trackPosition += Time.deltaTime * carAdd; + + if(trackPosition>1f) + trackPosition = 0f; // We need to keep the ratio between 0-1 so after one we will loop back to the beginning of the track + } + + // Use this for visualizing what the track looks like in the editor (for a full suite of spline tools check out the LeanTween Editor) + void OnDrawGizmos(){ + if(track!=null) + track.drawGizmo( Color.red ); + } + + // Make your own LeanAudio sounds at http://leanaudioplay.dentedpixel.com + void playSwish(){ + AnimationCurve volumeCurve = new AnimationCurve( new Keyframe(0f, 0.005464481f, 1.83897f, 0f), new Keyframe(0.1114856f, 2.281785f, 0f, 0f), new Keyframe(0.2482903f, 2.271654f, 0f, 0f), new Keyframe(0.3f, 0.01670286f, 0f, 0f)); + AnimationCurve frequencyCurve = new AnimationCurve( new Keyframe(0f, 0.00136725f, 0f, 0f), new Keyframe(0.1482391f, 0.005405405f, 0f, 0f), new Keyframe(0.2650336f, 0.002480127f, 0f, 0f)); + + AudioClip audioClip = LeanAudio.createAudio(volumeCurve, frequencyCurve, LeanAudio.options().setVibrato( new Vector3[]{ new Vector3(0.2f,0.5f,0f)} ).setWaveNoise().setWaveNoiseScale(1000)); + + LeanAudio.play( audioClip ); //a:fvb:8,,.00136725,,,.1482391,.005405405,,,.2650336,.002480127,,,8~8,,.005464481,1.83897,,.1114856,2.281785,,,.2482903,2.271654,,,.3,.01670286,,,8~.2,.5,,~~0~~3,1000,1 + } +} diff --git a/Assets/LeanTween/Examples/Scripts/PathSplinePerformance.cs.meta b/Assets/LeanTween/Examples/Scripts/PathSplinePerformance.cs.meta new file mode 100644 index 0000000..bbef093 --- /dev/null +++ b/Assets/LeanTween/Examples/Scripts/PathSplinePerformance.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 5de62495c8a5d49e6b3ca111f8c7e944 +timeCreated: 1460894008 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/LeanTween/Examples/Scripts/PathSplineTrack.cs b/Assets/LeanTween/Examples/Scripts/PathSplineTrack.cs new file mode 100644 index 0000000..4aa59f0 --- /dev/null +++ b/Assets/LeanTween/Examples/Scripts/PathSplineTrack.cs @@ -0,0 +1,68 @@ +using UnityEngine; +using System.Collections; +using DentedPixel; + +// This project demonstrates how you can use the spline behaviour for a multi-track game (like an endless runner style) + +public class PathSplineTrack : MonoBehaviour { + + public GameObject car; + public GameObject carInternal; + public GameObject trackTrailRenderers; + + public Transform[] trackOnePoints; + + private LTSpline track; + private int trackIter = 1; + private float trackPosition; // ratio 0,1 of the avatars position on the track + + void Start () { + // Make the track from the provided transforms + track = new LTSpline( new Vector3[] {trackOnePoints[0].position, trackOnePoints[1].position, trackOnePoints[2].position, trackOnePoints[3].position, trackOnePoints[4].position, trackOnePoints[5].position, trackOnePoints[6].position} ); + + // Optional technique to show the trails in game + LeanTween.moveSpline( trackTrailRenderers, track, 2f ).setOrientToPath(true).setRepeat(-1); + } + + void Update () { + // Switch tracks on keyboard input + float turn = Input.GetAxis("Horizontal"); + if(Input.anyKeyDown){ + if(turn<0f && trackIter>0){ + trackIter--; + playSwish(); + }else if(turn>0f && trackIter < 2){ // We have three track "rails" so stopping it from going above 3 + trackIter++; + playSwish(); + } + // Move the internal local x of the car to simulate changing tracks + LeanTween.moveLocalX(carInternal, (trackIter-1)*6f, 0.3f).setEase(LeanTweenType.easeOutBack); + + } + + // Update avatar's position on correct track + track.place( car.transform, trackPosition ); + + trackPosition += Time.deltaTime * 0.03f;// * Input.GetAxis("Vertical"); // Uncomment to have the forward and backwards controlled by the directional arrows + + if (trackPosition < 0f) // We need to keep the ratio between 0-1 so after one we will loop back to the beginning of the track + trackPosition = 1f; + else if(trackPosition>1f) + trackPosition = 0f; + } + + // Use this for visualizing what the track looks like in the editor (for a full suite of spline tools check out the LeanTween Editor) + void OnDrawGizmos(){ + LTSpline.drawGizmo( trackOnePoints, Color.red); + } + + // Make your own LeanAudio sounds at http://leanaudioplay.dentedpixel.com + void playSwish(){ + AnimationCurve volumeCurve = new AnimationCurve( new Keyframe(0f, 0.005464481f, 1.83897f, 0f), new Keyframe(0.1114856f, 2.281785f, 0f, 0f), new Keyframe(0.2482903f, 2.271654f, 0f, 0f), new Keyframe(0.3f, 0.01670286f, 0f, 0f)); + AnimationCurve frequencyCurve = new AnimationCurve( new Keyframe(0f, 0.00136725f, 0f, 0f), new Keyframe(0.1482391f, 0.005405405f, 0f, 0f), new Keyframe(0.2650336f, 0.002480127f, 0f, 0f)); + + AudioClip audioClip = LeanAudio.createAudio(volumeCurve, frequencyCurve, LeanAudio.options().setVibrato( new Vector3[]{ new Vector3(0.2f,0.5f,0f)} ).setWaveNoise().setWaveNoiseScale(1000)); + + LeanAudio.play( audioClip ); //a:fvb:8,,.00136725,,,.1482391,.005405405,,,.2650336,.002480127,,,8~8,,.005464481,1.83897,,.1114856,2.281785,,,.2482903,2.271654,,,.3,.01670286,,,8~.2,.5,,~~0~~3,1000,1 + } +} diff --git a/Assets/LeanTween/Examples/Scripts/PathSplineTrack.cs.meta b/Assets/LeanTween/Examples/Scripts/PathSplineTrack.cs.meta new file mode 100644 index 0000000..d41a6dd --- /dev/null +++ b/Assets/LeanTween/Examples/Scripts/PathSplineTrack.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 31af73f8be2864eda9a3fbb6d0d2a9c7 +timeCreated: 1460209336 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/LeanTween/Examples/Scripts/PathSplines.cs b/Assets/LeanTween/Examples/Scripts/PathSplines.cs new file mode 100644 index 0000000..8df95b9 --- /dev/null +++ b/Assets/LeanTween/Examples/Scripts/PathSplines.cs @@ -0,0 +1,46 @@ +using UnityEngine; +using System.Collections; +using DentedPixel; + +public class PathSplines : MonoBehaviour { + + public Transform[] trans; + + LTSpline cr; + private GameObject avatar1; + + void OnEnable(){ + // create the path + cr = new LTSpline( new Vector3[] {trans[0].position, trans[1].position, trans[2].position, trans[3].position, trans[4].position} ); + // cr = new LTSpline( new Vector3[] {new Vector3(-1f,0f,0f), new Vector3(0f,0f,0f), new Vector3(4f,0f,0f), new Vector3(20f,0f,0f), new Vector3(30f,0f,0f)} ); + } + + void Start () { + avatar1 = GameObject.Find("Avatar1"); + + // Tween automatically + LeanTween.move(avatar1, cr, 6.5f).setOrientToPath(true).setRepeat(1).setOnComplete( ()=>{ + Vector3[] next = new Vector3[] {trans[4].position, trans[3].position, trans[2].position, trans[1].position, trans[0].position}; + LeanTween.moveSpline( avatar1, next, 6.5f); // move it back to the start without an LTSpline + }).setEase(LeanTweenType.easeOutQuad); + } + + private float iter; + void Update () { + // Or Update Manually + // cr.place( avatar1.transform, iter ); + + iter += Time.deltaTime*0.07f; + if(iter>1.0f) + iter = 0.0f; + } + + void OnDrawGizmos(){ + // Debug.Log("drwaing"); + if(cr==null) + OnEnable(); + Gizmos.color = Color.red; + if(cr!=null) + cr.gizmoDraw(); // To Visualize the path, use this method + } +} diff --git a/Assets/LeanTween/Examples/Scripts/PathSplines.cs.meta b/Assets/LeanTween/Examples/Scripts/PathSplines.cs.meta new file mode 100644 index 0000000..0ccb4fe --- /dev/null +++ b/Assets/LeanTween/Examples/Scripts/PathSplines.cs.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: de0396ae3eef541c190f0e6962090454 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} diff --git a/Assets/LeanTween/Examples/Scripts/TestingUnitTests.cs b/Assets/LeanTween/Examples/Scripts/TestingUnitTests.cs new file mode 100644 index 0000000..b8db49e --- /dev/null +++ b/Assets/LeanTween/Examples/Scripts/TestingUnitTests.cs @@ -0,0 +1,647 @@ +using UnityEngine; +using System.Collections; +using System.Collections.Generic; +using DentedPixel; + +namespace DentedPixel.LTExamples +{ + + public class TestingUnitTests : MonoBehaviour + { + + public GameObject cube1; + public GameObject cube2; + public GameObject cube3; + public GameObject cube4; + public GameObject cubeAlpha1; + public GameObject cubeAlpha2; + + + private bool eventGameObjectWasCalled = false, eventGeneralWasCalled = false; + private int lt1Id; + private LTDescr lt2; + private LTDescr lt3; + private LTDescr lt4; + private LTDescr[] groupTweens; + private GameObject[] groupGOs; + private int groupTweensCnt; + private int rotateRepeat; + private int rotateRepeatAngle; + private GameObject boxNoCollider; + private float timeElapsedNormalTimeScale; + private float timeElapsedIgnoreTimeScale; + private bool pauseTweenDidFinish = false; + + void Awake() + { + boxNoCollider = GameObject.CreatePrimitive(PrimitiveType.Cube); + Destroy(boxNoCollider.GetComponent(typeof(BoxCollider)) as Component); + } + + void Start() + { + // Time.timeScale = 0.25f; + + LeanTest.timeout = 46f; + LeanTest.expected = 62; + + LeanTween.init(1300); + + // add a listener + LeanTween.addListener(cube1, 0, eventGameObjectCalled); + + LeanTest.expect(LeanTween.isTweening() == false, "NOTHING TWEEENING AT BEGINNING"); + + LeanTest.expect(LeanTween.isTweening(cube1) == false, "OBJECT NOT TWEEENING AT BEGINNING"); + + LeanTween.scaleX(cube4, 2f, 0f).setOnComplete(() => { + LeanTest.expect(cube4.transform.localScale.x == 2f, "TWEENED WITH ZERO TIME"); + }); + + // dispatch event that is received + LeanTween.dispatchEvent(0); + LeanTest.expect(eventGameObjectWasCalled, "EVENT GAMEOBJECT RECEIVED"); + + // do not remove listener + LeanTest.expect(LeanTween.removeListener(cube2, 0, eventGameObjectCalled) == false, "EVENT GAMEOBJECT NOT REMOVED"); + // remove listener + LeanTest.expect(LeanTween.removeListener(cube1, 0, eventGameObjectCalled), "EVENT GAMEOBJECT REMOVED"); + + // add a listener + LeanTween.addListener(1, eventGeneralCalled); + + // dispatch event that is received + LeanTween.dispatchEvent(1); + LeanTest.expect(eventGeneralWasCalled, "EVENT ALL RECEIVED"); + + // remove listener + LeanTest.expect(LeanTween.removeListener(1, eventGeneralCalled), "EVENT ALL REMOVED"); + + lt1Id = LeanTween.move(cube1, new Vector3(3f, 2f, 0.5f), 1.1f).id; + LeanTween.move(cube2, new Vector3(-3f, -2f, -0.5f), 1.1f); + + LeanTween.reset(); + + // Queue up a bunch of tweens, cancel some of them but expect the remainder to finish + GameObject[] cubes = new GameObject[99]; + int[] tweenIds = new int[cubes.Length]; + for (int i = 0; i < cubes.Length; i++) + { + GameObject c = cubeNamed("cancel" + i); + tweenIds[i] = LeanTween.moveX(c, 100f, 1f).id; + cubes[i] = c; + } + int onCompleteCount = 0; + LeanTween.delayedCall(cubes[0], 0.2f, () => { + for (int i = 0; i < cubes.Length; i++) + { + if (i % 3 == 0) + { + LeanTween.cancel(cubes[i]); + } + else if (i % 3 == 1) + { + LeanTween.cancel(tweenIds[i]); + } + else if (i % 3 == 2) + { + LTDescr descr = LeanTween.descr(tweenIds[i]); + // Debug.Log("descr:"+descr); + descr.setOnComplete(() => { + onCompleteCount++; + // Debug.Log("onCompleteCount:"+onCompleteCount); + if (onCompleteCount >= 33) + { + LeanTest.expect(true, "CANCELS DO NOT EFFECT FINISHING"); + } + }); + } + } + }); + + Vector3[] splineArr = new Vector3[] { new Vector3(-1f, 0f, 0f), new Vector3(0f, 0f, 0f), new Vector3(4f, 0f, 0f), new Vector3(20f, 0f, 0f), new Vector3(30f, 0f, 0f) }; + LTSpline cr = new LTSpline(splineArr); + cr.place(cube4.transform, 0.5f); + LeanTest.expect((Vector3.Distance(cube4.transform.position, new Vector3(10f, 0f, 0f)) <= 0.7f), "SPLINE POSITIONING AT HALFWAY", "position is:" + cube4.transform.position + " but should be:(10f,0f,0f)"); + LeanTween.color(cube4, Color.green, 0.01f); + + // Debug.Log("Point 2:"+cr.ratioAtPoint(splineArr[2])); + + // OnStart Speed Test for ignoreTimeScale vs normal timeScale + + GameObject cubeDest = cubeNamed("cubeDest"); + Vector3 cubeDestEnd = new Vector3(100f, 20f, 0f); + LeanTween.move(cubeDest, cubeDestEnd, 0.7f); + + GameObject cubeToTrans = cubeNamed("cubeToTrans"); + LeanTween.move(cubeToTrans, cubeDest.transform, 1.2f).setEase(LeanTweenType.easeOutQuad).setOnComplete(() => { + LeanTest.expect(cubeToTrans.transform.position == cubeDestEnd, "MOVE TO TRANSFORM WORKS"); + }); + + GameObject cubeDestroy = cubeNamed("cubeDestroy"); + LeanTween.moveX(cubeDestroy, 200f, 0.05f).setDelay(0.02f).setDestroyOnComplete(true); + LeanTween.moveX(cubeDestroy, 200f, 0.1f).setDestroyOnComplete(true).setOnComplete(() => { + LeanTest.expect(true, "TWO DESTROY ON COMPLETE'S SUCCEED"); + }); + + GameObject cubeSpline = cubeNamed("cubeSpline"); + LeanTween.moveSpline(cubeSpline, new Vector3[] { new Vector3(0.5f, 0f, 0.5f), new Vector3(0.75f, 0f, 0.75f), new Vector3(1f, 0f, 1f), new Vector3(1f, 0f, 1f) }, 0.1f).setOnComplete(() => { + LeanTest.expect(Vector3.Distance(new Vector3(1f, 0f, 1f), cubeSpline.transform.position) < 0.01f, "SPLINE WITH TWO POINTS SUCCEEDS"); + }); + + // This test works when it is positioned last in the test queue (probably worth fixing when you have time) + GameObject jumpCube = cubeNamed("jumpTime"); + jumpCube.transform.position = new Vector3(100f, 0f, 0f); + jumpCube.transform.localScale *= 100f; + int jumpTimeId = LeanTween.moveX(jumpCube, 200f, 1f).id; + + LeanTween.delayedCall(gameObject, 0.2f, () => { + LTDescr d = LeanTween.descr(jumpTimeId); + float beforeX = jumpCube.transform.position.x; + d.setTime(0.5f); + LeanTween.delayedCall(0.0f, () => { }).setOnStart(() => { + float diffAmt = 1f;// This variable is dependent on a good frame-rate because it evalutes at the next Update + beforeX += Time.deltaTime * 100f * 2f; + LeanTest.expect(Mathf.Abs(jumpCube.transform.position.x - beforeX) < diffAmt, "CHANGING TIME DOESN'T JUMP AHEAD", "Difference:" + Mathf.Abs(jumpCube.transform.position.x - beforeX) + " beforeX:" + beforeX + " now:" + jumpCube.transform.position.x + " dt:" + Time.deltaTime); + }); + }); + + // Tween with time of zero is needs to be set to it's final value + GameObject zeroCube = cubeNamed("zeroCube"); + LeanTween.moveX(zeroCube, 10f, 0f).setOnComplete(() => { + LeanTest.expect(zeroCube.transform.position.x == 10f, "ZERO TIME FINSHES CORRECTLY", "final x:" + zeroCube.transform.position.x); + }); + + // Scale, and OnStart + GameObject cubeScale = cubeNamed("cubeScale"); + LeanTween.scale(cubeScale, new Vector3(5f, 5f, 5f), 0.01f).setOnStart(() => { + LeanTest.expect(true, "ON START WAS CALLED"); + }).setOnComplete(() => { + LeanTest.expect(cubeScale.transform.localScale.z == 5f, "SCALE", "expected scale z:" + 5f + " returned:" + cubeScale.transform.localScale.z); + }); + + // Rotate + GameObject cubeRotate = cubeNamed("cubeRotate"); + LeanTween.rotate(cubeRotate, new Vector3(0f, 180f, 0f), 0.02f).setOnComplete(() => { + LeanTest.expect(cubeRotate.transform.eulerAngles.y == 180f, "ROTATE", "expected rotate y:" + 180f + " returned:" + cubeRotate.transform.eulerAngles.y); + }); + + // RotateAround + GameObject cubeRotateA = cubeNamed("cubeRotateA"); + LeanTween.rotateAround(cubeRotateA, Vector3.forward, 90f, 0.3f).setOnComplete(() => { + LeanTest.expect(cubeRotateA.transform.eulerAngles.z == 90f, "ROTATE AROUND", "expected rotate z:" + 90f + " returned:" + cubeRotateA.transform.eulerAngles.z); + }); + + // RotateAround 360 + GameObject cubeRotateB = cubeNamed("cubeRotateB"); + cubeRotateB.transform.position = new Vector3(200f, 10f, 8f); + LeanTween.rotateAround(cubeRotateB, Vector3.forward, 360f, 0.3f).setPoint(new Vector3(5f, 3f, 2f)).setOnComplete(() => { + LeanTest.expect(cubeRotateB.transform.position.ToString() == (new Vector3(200f, 10f, 8f)).ToString(), "ROTATE AROUND 360", "expected rotate pos:" + (new Vector3(200f, 10f, 8f)) + " returned:" + cubeRotateB.transform.position); + }); + + // Alpha, onUpdate with passing value, onComplete value + LeanTween.alpha(cubeAlpha1, 0.5f, 0.1f).setOnUpdate((float val) => { + LeanTest.expect(val != 0f, "ON UPDATE VAL"); + }).setOnCompleteParam("Hi!").setOnComplete((object completeObj) => { + LeanTest.expect(((string)completeObj) == "Hi!", "ONCOMPLETE OBJECT"); + LeanTest.expect(cubeAlpha1.GetComponent().material.color.a == 0.5f, "ALPHA"); + }); + // Color + float onStartTime = -1f; + LeanTween.color(cubeAlpha2, Color.cyan, 0.3f).setOnComplete(() => { + LeanTest.expect(cubeAlpha2.GetComponent().material.color == Color.cyan, "COLOR"); + LeanTest.expect(onStartTime >= 0f && onStartTime < Time.time, "ON START", "onStartTime:" + onStartTime + " time:" + Time.time); + }).setOnStart(() => { + onStartTime = Time.time; + }); + // moveLocalY (make sure uses y values) + Vector3 beforePos = cubeAlpha1.transform.position; + LeanTween.moveY(cubeAlpha1, 3f, 0.2f).setOnComplete(() => { + LeanTest.expect(cubeAlpha1.transform.position.x == beforePos.x && cubeAlpha1.transform.position.z == beforePos.z, "MOVE Y"); + }); + + Vector3 beforePos2 = cubeAlpha2.transform.localPosition; + LeanTween.moveLocalZ(cubeAlpha2, 12f, 0.2f).setOnComplete(() => { + LeanTest.expect(cubeAlpha2.transform.localPosition.x == beforePos2.x && cubeAlpha2.transform.localPosition.y == beforePos2.y, "MOVE LOCAL Z", "ax:" + cubeAlpha2.transform.localPosition.x + " bx:" + beforePos.x + " ay:" + cubeAlpha2.transform.localPosition.y + " by:" + beforePos2.y); + }); + + AudioClip audioClip = LeanAudio.createAudio(new AnimationCurve(new Keyframe(0f, 1f, 0f, -1f), new Keyframe(1f, 0f, -1f, 0f)), new AnimationCurve(new Keyframe(0f, 0.001f, 0f, 0f), new Keyframe(1f, 0.001f, 0f, 0f)), LeanAudio.options()); + LeanTween.delayedSound(gameObject, audioClip, new Vector3(0f, 0f, 0f), 0.1f).setDelay(0.2f).setOnComplete(() => { + LeanTest.expect(Time.time > 0, "DELAYED SOUND"); + }); + + // Easing Methods + int totalEasingCheck = 0; + int totalEasingCheckSuccess = 0; + for (int j = 0; j < 2; j++) + { + bool isCheckingFrom = j == 1; + int totalTweenTypeLength = (int)LeanTweenType.easeShake; + for (int i = (int)LeanTweenType.notUsed; i < totalTweenTypeLength; i++) + { + LeanTweenType easeType = (LeanTweenType)i; + GameObject cube = cubeNamed("cube" + easeType); + LTDescr descr = LeanTween.moveLocalX(cube, 5, 0.1f).setOnComplete((object obj) => { + GameObject cubeIn = obj as GameObject; + totalEasingCheck++; + if (cubeIn.transform.position.x == 5f) + { + totalEasingCheckSuccess++; + } + if (totalEasingCheck == (2 * totalTweenTypeLength)) + { + LeanTest.expect(totalEasingCheck == totalEasingCheckSuccess, "EASING TYPES"); + } + }).setOnCompleteParam(cube); + + if (isCheckingFrom) + descr.setFrom(-5f); + } + } + + // value2 + bool value2UpdateCalled = false; + LeanTween.value(gameObject, new Vector2(0, 0), new Vector2(256, 96), 0.1f).setOnUpdate((Vector2 value) => { + value2UpdateCalled = true; + }); + LeanTween.delayedCall(0.2f, () => { + LeanTest.expect(value2UpdateCalled, "VALUE2 UPDATE"); + }); + + // check descr + // LTDescr descr2 = LeanTween.descr( descrId ); + // LeanTest.expect(descr2 == null,"DESCRIPTION STARTS AS NULL"); + + StartCoroutine(timeBasedTesting()); + } + + private GameObject cubeNamed(string name) + { + GameObject cube = Instantiate(boxNoCollider) as GameObject; + cube.name = name; + return cube; + } + + IEnumerator timeBasedTesting() + { + yield return new WaitForEndOfFrame(); + + GameObject cubeNormal = cubeNamed("normalTimeScale"); + // float timeElapsedNormal = Time.time; + LeanTween.moveX(cubeNormal, 12f, 1.5f).setIgnoreTimeScale(false).setOnComplete(() => { + timeElapsedNormalTimeScale = Time.time; + }); + + LTDescr[] descr = LeanTween.descriptions(cubeNormal); + LeanTest.expect(descr.Length >= 0 && descr[0].to.x == 12f, "WE CAN RETRIEVE A DESCRIPTION"); + + GameObject cubeIgnore = cubeNamed("ignoreTimeScale"); + LeanTween.moveX(cubeIgnore, 5f, 1.5f).setIgnoreTimeScale(true).setOnComplete(() => { + timeElapsedIgnoreTimeScale = Time.time; + }); + + yield return new WaitForSeconds(1.5f); + LeanTest.expect(Mathf.Abs(timeElapsedNormalTimeScale - timeElapsedIgnoreTimeScale) < 0.7f, "START IGNORE TIMING", "timeElapsedIgnoreTimeScale:" + timeElapsedIgnoreTimeScale + " timeElapsedNormalTimeScale:" + timeElapsedNormalTimeScale); + + // yield return new WaitForSeconds(100f); + Time.timeScale = 4f; + + int pauseCount = 0; + LeanTween.value(gameObject, 0f, 1f, 1f).setOnUpdate((float val) => { + pauseCount++; + }).pause(); + + // Bezier should end at exact end position not just 99% close to it + Vector3[] roundCirc = new Vector3[] { new Vector3(0f, 0f, 0f), new Vector3(-9.1f, 25.1f, 0f), new Vector3(-1.2f, 15.9f, 0f), new Vector3(-25f, 25f, 0f), new Vector3(-25f, 25f, 0f), new Vector3(-50.1f, 15.9f, 0f), new Vector3(-40.9f, 25.1f, 0f), new Vector3(-50f, 0f, 0f), new Vector3(-50f, 0f, 0f), new Vector3(-40.9f, -25.1f, 0f), new Vector3(-50.1f, -15.9f, 0f), new Vector3(-25f, -25f, 0f), new Vector3(-25f, -25f, 0f), new Vector3(0f, -15.9f, 0f), new Vector3(-9.1f, -25.1f, 0f), new Vector3(0f, 0f, 0f) }; + GameObject cubeRound = cubeNamed("bRound"); + Vector3 onStartPos = cubeRound.transform.position; + LeanTween.moveLocal(cubeRound, roundCirc, 0.5f).setOnComplete(() => { + LeanTest.expect(cubeRound.transform.position == onStartPos, "BEZIER CLOSED LOOP SHOULD END AT START", "onStartPos:" + onStartPos + " onEnd:" + cubeRound.transform.position); + }); + + // should be able to retrieve a point + LTBezierPath roundCircPath = new LTBezierPath(roundCirc); + float ratioPoint = roundCircPath.ratioAtPoint(new Vector3(-25f, 25f, 0f)); + LeanTest.expect(Mathf.Equals(ratioPoint, 0.25f), "BEZIER RATIO POINT"); + + // Spline should end at exact end position not just 99% close to it + Vector3[] roundSpline = new Vector3[] { new Vector3(0f, 0f, 0f), new Vector3(0f, 0f, 0f), new Vector3(2f, 0f, 0f), new Vector3(0.9f, 2f, 0f), new Vector3(0f, 0f, 0f), new Vector3(0f, 0f, 0f) }; + GameObject cubeSpline = cubeNamed("bSpline"); + Vector3 onStartPosSpline = cubeSpline.transform.position; + LeanTween.moveSplineLocal(cubeSpline, roundSpline, 0.5f).setOnComplete(() => { + LeanTest.expect(Vector3.Distance(onStartPosSpline, cubeSpline.transform.position) <= 0.01f, "SPLINE CLOSED LOOP SHOULD END AT START", "onStartPos:" + onStartPosSpline + " onEnd:" + cubeSpline.transform.position + " dist:" + Vector3.Distance(onStartPosSpline, cubeSpline.transform.position)); + }); + + // Sequence test, do three tweens and make sure they end at the right points + GameObject cubeSeq = cubeNamed("cSeq"); + var seq = LeanTween.sequence().append(LeanTween.moveX(cubeSeq, 100f, 0.2f)); + seq.append(0.1f).append(LeanTween.scaleX(cubeSeq, 2f, 0.1f)); + seq.append(() => { + LeanTest.expect(cubeSeq.transform.position.x == 100f, "SEQ MOVE X FINISHED", "move x:" + cubeSeq.transform.position.x); + LeanTest.expect(cubeSeq.transform.localScale.x == 2f, "SEQ SCALE X FINISHED", "scale x:" + cubeSeq.transform.localScale.x); + }).setScale(0.2f); + + // Bounds check + GameObject cubeBounds = cubeNamed("cBounds"); + bool didPassBounds = true; + Vector3 failPoint = Vector3.zero; + LeanTween.move(cubeBounds, new Vector3(10, 10, 10), 0.1f).setOnUpdate((float val) => { + // Debug.LogWarning("cubeBounds x:"+cubeBounds.transform.position.x + " y:"+ cubeBounds.transform.position.y+" z:"+cubeBounds.transform.position.z); + if (cubeBounds.transform.position.x < 0f || cubeBounds.transform.position.x > 10f || cubeBounds.transform.position.y < 0f || cubeBounds.transform.position.y > 10f || cubeBounds.transform.position.z < 0f || cubeBounds.transform.position.z > 10f) + { + didPassBounds = false; + failPoint = cubeBounds.transform.position; + // Debug.LogError("OUT OF BOUNDS"); + } + }).setLoopPingPong().setRepeat(8).setOnComplete(() => { + LeanTest.expect(didPassBounds, "OUT OF BOUNDS", "pos x:" + failPoint.x + " y:" + failPoint.y + " z:" + failPoint.z); + }); + + // Local scale check + //GameObject cubeLocal = cubeNamed("cLocal"); + //LeanTween.scale(cubeLocal, new Vector3(0.5f, 0.5f, 0.5f), 0.2f).setOnComplete(() => + //{ + // LeanTest.expect((cubeLocal.transform.localScale.x == 0.5f && cubeLocal.transform.localScale.y == 0.5f && cubeLocal.transform.localScale.z == 0.5f), "SCALE WORKS", "scale x:" + cubeLocal.transform.localScale.x + " y:" + cubeLocal.transform.localScale.y + " z:" + cubeLocal.transform.localScale.z); + //}); + + // Groups of tweens testing + groupTweens = new LTDescr[1200]; + groupGOs = new GameObject[groupTweens.Length]; + groupTweensCnt = 0; + int descriptionMatchCount = 0; + for (int i = 0; i < groupTweens.Length; i++) + { + GameObject cube = cubeNamed("c" + i); + cube.transform.position = new Vector3(0, 0, i * 3); + + groupGOs[i] = cube; + } + + yield return new WaitForEndOfFrame(); + + bool hasGroupTweensCheckStarted = false; + int setOnStartNum = 0; + int setPosNum = 0; + bool setPosOnUpdate = true; + for (int i = 0; i < groupTweens.Length; i++) + { + Vector3 finalPos = transform.position + Vector3.one * 3f; + Dictionary finalDict = new Dictionary { { "final", finalPos }, { "go", groupGOs[i] } }; + groupTweens[i] = LeanTween.move(groupGOs[i], finalPos, 3f).setOnStart(() => { + setOnStartNum++; + }).setOnUpdate((Vector3 newPosition) => { + if (transform.position.z > newPosition.z) + { + setPosOnUpdate = false; + } + // Debug.LogWarning("New Position: " + newPosition.ToString()); + }). + setOnCompleteParam(finalDict). + setOnComplete((object param) => { + Dictionary finalDictRetr = param as Dictionary; + Vector3 neededPos = (Vector3)finalDictRetr["final"]; + GameObject tweenedGo = finalDictRetr["go"] as GameObject; + if (neededPos.ToString() == tweenedGo.transform.position.ToString()) + setPosNum++; + else + { + // Debug.Log("neededPos:"+neededPos+" tweenedGo.transform.position:"+tweenedGo.transform.position); + } + if (hasGroupTweensCheckStarted == false) + { + hasGroupTweensCheckStarted = true; + LeanTween.delayedCall(gameObject, 0.1f, () => { + LeanTest.expect(setOnStartNum == groupTweens.Length, "SETONSTART CALLS", "expected:" + groupTweens.Length + " was:" + setOnStartNum); + LeanTest.expect(groupTweensCnt == groupTweens.Length, "GROUP FINISH", "expected " + groupTweens.Length + " tweens but got " + groupTweensCnt); + LeanTest.expect(setPosNum == groupTweens.Length, "GROUP POSITION FINISH", "expected " + groupTweens.Length + " tweens but got " + setPosNum); + LeanTest.expect(setPosOnUpdate, "GROUP POSITION ON UPDATE"); + }); + } + groupTweensCnt++; + }); + + if (LeanTween.description(groupTweens[i].id).trans == groupTweens[i].trans) + descriptionMatchCount++; + } + + while (LeanTween.tweensRunning < groupTweens.Length) + yield return null; + + LeanTest.expect(descriptionMatchCount == groupTweens.Length, "GROUP IDS MATCH"); + int expectedSearch = groupTweens.Length + 7; + LeanTest.expect(LeanTween.maxSearch <= expectedSearch, "MAX SEARCH OPTIMIZED", "maxSearch:" + LeanTween.maxSearch + " should be:" + expectedSearch); + LeanTest.expect(LeanTween.isTweening() == true, "SOMETHING IS TWEENING"); + + // resume item before calling pause should continue item along it's way + float previousXlt4 = cube4.transform.position.x; + lt4 = LeanTween.moveX(cube4, 5.0f, 1.1f).setOnComplete(() => { + LeanTest.expect(cube4 != null && previousXlt4 != cube4.transform.position.x, "RESUME OUT OF ORDER", "cube4:" + cube4 + " previousXlt4:" + previousXlt4 + " cube4.transform.position.x:" + (cube4 != null ? cube4.transform.position.x : 0)); + }).setDestroyOnComplete(true); + lt4.resume(); + + rotateRepeat = rotateRepeatAngle = 0; + LeanTween.rotateAround(cube3, Vector3.forward, 360f, 0.1f).setRepeat(3).setOnComplete(rotateRepeatFinished).setOnCompleteOnRepeat(true).setDestroyOnComplete(true); + yield return new WaitForEndOfFrame(); + LeanTween.delayedCall(0.1f * 8f + 1f, rotateRepeatAllFinished); + + int countBeforeCancel = LeanTween.tweensRunning; + LeanTween.cancel(lt1Id); + LeanTest.expect(countBeforeCancel == LeanTween.tweensRunning, "CANCEL AFTER RESET SHOULD FAIL", "expected " + countBeforeCancel + " but got " + LeanTween.tweensRunning); + LeanTween.cancel(cube2); + + int tweenCount = 0; + for (int i = 0; i < groupTweens.Length; i++) + { + if (LeanTween.isTweening(groupGOs[i])) + tweenCount++; + if (i % 3 == 0) + LeanTween.pause(groupGOs[i]); + else if (i % 3 == 1) + groupTweens[i].pause(); + else + LeanTween.pause(groupTweens[i].id); + } + LeanTest.expect(tweenCount == groupTweens.Length, "GROUP ISTWEENING", "expected " + groupTweens.Length + " tweens but got " + tweenCount); + + yield return new WaitForEndOfFrame(); + + tweenCount = 0; + for (int i = 0; i < groupTweens.Length; i++) + { + if (i % 3 == 0) + LeanTween.resume(groupGOs[i]); + else if (i % 3 == 1) + groupTweens[i].resume(); + else + LeanTween.resume(groupTweens[i].id); + + if (i % 2 == 0 ? LeanTween.isTweening(groupTweens[i].id) : LeanTween.isTweening(groupGOs[i])) + tweenCount++; + } + LeanTest.expect(tweenCount == groupTweens.Length, "GROUP RESUME"); + + LeanTest.expect(LeanTween.isTweening(cube1) == false, "CANCEL TWEEN LTDESCR"); + LeanTest.expect(LeanTween.isTweening(cube2) == false, "CANCEL TWEEN LEANTWEEN"); + + LeanTest.expect(pauseCount == 0, "ON UPDATE NOT CALLED DURING PAUSE", "expect pause count of 0, but got " + pauseCount); + + + yield return new WaitForEndOfFrame(); + Time.timeScale = 0.25f; + float tweenTime = 0.2f; + float expectedTime = tweenTime * (1f / Time.timeScale); + float start = Time.realtimeSinceStartup; + bool onUpdateWasCalled = false; + LeanTween.moveX(cube1, -5f, tweenTime).setOnUpdate((float val) => { + onUpdateWasCalled = true; + }).setOnComplete(() => { + float end = Time.realtimeSinceStartup; + float diff = end - start; + + LeanTest.expect(Mathf.Abs(expectedTime - diff) < 0.06f, "SCALED TIMING DIFFERENCE", "expected to complete in roughly " + expectedTime + " but completed in " + diff); + LeanTest.expect(Mathf.Approximately(cube1.transform.position.x, -5f), "SCALED ENDING POSITION", "expected to end at -5f, but it ended at " + cube1.transform.position.x); + LeanTest.expect(onUpdateWasCalled, "ON UPDATE FIRED"); + }); + + bool didGetCorrectOnUpdate = false; + LeanTween.value(gameObject, new Vector3(1f, 1f, 1f), new Vector3(10f, 10f, 10f), 1f).setOnUpdate((Vector3 val) => { + didGetCorrectOnUpdate = val.x >= 1f && val.y >= 1f && val.z >= 1f; + }).setOnComplete(() => { + LeanTest.expect(didGetCorrectOnUpdate, "VECTOR3 CALLBACK CALLED"); + }); + + yield return new WaitForSeconds(expectedTime); + Time.timeScale = 1f; + + int ltCount = 0; + GameObject[] allGos = FindObjectsOfType(typeof(GameObject)) as GameObject[]; + foreach (GameObject go in allGos) + { + if (go.name == "~LeanTween") + ltCount++; + } + LeanTest.expect(ltCount == 1, "RESET CORRECTLY CLEANS UP"); + + StartCoroutine(lotsOfCancels()); + } + + IEnumerator lotsOfCancels() + { + yield return new WaitForEndOfFrame(); + + Time.timeScale = 4f; + int cubeCount = 10; + + int[] tweensA = new int[cubeCount]; + GameObject[] aGOs = new GameObject[cubeCount]; + for (int i = 0; i < aGOs.Length; i++) + { + GameObject cube = Instantiate(boxNoCollider) as GameObject; + cube.transform.position = new Vector3(0, 0, i * 2f); + cube.name = "a" + i; + aGOs[i] = cube; + tweensA[i] = LeanTween.move(cube, cube.transform.position + new Vector3(10f, 0, 0), 0.5f + 1f * (1.0f / (float)aGOs.Length)).id; + LeanTween.color(cube, Color.red, 0.01f); + } + + yield return new WaitForSeconds(1.0f); + + int[] tweensB = new int[cubeCount]; + GameObject[] bGOs = new GameObject[cubeCount]; + for (int i = 0; i < bGOs.Length; i++) + { + GameObject cube = Instantiate(boxNoCollider) as GameObject; + cube.transform.position = new Vector3(0, 0, i * 2f); + cube.name = "b" + i; + bGOs[i] = cube; + tweensB[i] = LeanTween.move(cube, cube.transform.position + new Vector3(10f, 0, 0), 2f).id; + } + + for (int i = 0; i < aGOs.Length; i++) + { + LeanTween.cancel(aGOs[i]); + GameObject cube = aGOs[i]; + tweensA[i] = LeanTween.move(cube, new Vector3(0, 0, i * 2f), 2f).id; + } + + yield return new WaitForSeconds(0.5f); + + for (int i = 0; i < aGOs.Length; i++) + { + LeanTween.cancel(aGOs[i]); + GameObject cube = aGOs[i]; + tweensA[i] = LeanTween.move(cube, new Vector3(0, 0, i * 2f) + new Vector3(10f, 0, 0), 2f).id; + } + + for (int i = 0; i < bGOs.Length; i++) + { + LeanTween.cancel(bGOs[i]); + GameObject cube = bGOs[i]; + tweensB[i] = LeanTween.move(cube, new Vector3(0, 0, i * 2f), 2f).id; + } + + yield return new WaitForSeconds(2.1f); + + bool inFinalPlace = true; + for (int i = 0; i < aGOs.Length; i++) + { + if (Vector3.Distance(aGOs[i].transform.position, new Vector3(0, 0, i * 2f) + new Vector3(10f, 0, 0)) > 0.1f) + inFinalPlace = false; + } + + for (int i = 0; i < bGOs.Length; i++) + { + if (Vector3.Distance(bGOs[i].transform.position, new Vector3(0, 0, i * 2f)) > 0.1f) + inFinalPlace = false; + } + + LeanTest.expect(inFinalPlace, "AFTER LOTS OF CANCELS"); + + GameObject cubePaused = cubeNamed("cPaused"); + cubePaused.LeanMoveX(10f, 1f).setOnComplete(() => { + pauseTweenDidFinish = true; + }); + StartCoroutine(pauseTimeNow()); + } + + IEnumerator pauseTimeNow() + { + yield return new WaitForSeconds(0.5f); + Time.timeScale = 0; + + LeanTween.delayedCall(0.5f, () => { + Time.timeScale = 1f; + }).setUseEstimatedTime(true); + + LeanTween.delayedCall(1.5f, () => { + LeanTest.expect(pauseTweenDidFinish, "PAUSE BY TIMESCALE FINISHES"); + }).setUseEstimatedTime(true); + } + + void rotateRepeatFinished() + { + if (Mathf.Abs(cube3.transform.eulerAngles.z) < 0.0001f) + rotateRepeatAngle++; + rotateRepeat++; + } + + void rotateRepeatAllFinished() + { + LeanTest.expect(rotateRepeatAngle == 3, "ROTATE AROUND MULTIPLE", "expected 3 times received " + rotateRepeatAngle + " times"); + LeanTest.expect(rotateRepeat == 3, "ROTATE REPEAT", "expected 3 times received " + rotateRepeat + " times"); + LeanTest.expect(cube3 == null, "DESTROY ON COMPLETE", "cube3:" + cube3); + } + + void eventGameObjectCalled(LTEvent e) + { + eventGameObjectWasCalled = true; + } + + void eventGeneralCalled(LTEvent e) + { + eventGeneralWasCalled = true; + } + + } + +} \ No newline at end of file diff --git a/Assets/LeanTween/Examples/Scripts/TestingUnitTests.cs.meta b/Assets/LeanTween/Examples/Scripts/TestingUnitTests.cs.meta new file mode 100644 index 0000000..d2fc149 --- /dev/null +++ b/Assets/LeanTween/Examples/Scripts/TestingUnitTests.cs.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: fef58bd01146344429d022b95c6af872 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} diff --git a/Assets/LeanTween/Examples/Scripts/TestingZLegacy.cs b/Assets/LeanTween/Examples/Scripts/TestingZLegacy.cs new file mode 100644 index 0000000..85a1e09 --- /dev/null +++ b/Assets/LeanTween/Examples/Scripts/TestingZLegacy.cs @@ -0,0 +1,233 @@ +using UnityEngine; +using System.Collections; +using System; +using System.Threading; +using DentedPixel; + +public class TestingZLegacy : MonoBehaviour { + public AnimationCurve customAnimationCurve; + public Transform pt1; + public Transform pt2; + public Transform pt3; + public Transform pt4; + public Transform pt5; + + public delegate void NextFunc(); + private int exampleIter = 0; + private string[] exampleFunctions = new string[] { /**/"updateValue3Example", "loopTestClamp", "loopTestPingPong", "moveOnACurveExample", "customTweenExample", "moveExample", "rotateExample", "scaleExample", "updateValueExample", "delayedCallExample", "alphaExample", "moveLocalExample", "rotateAroundExample", "colorExample" }; + public bool useEstimatedTime = true; + private GameObject ltLogo; + private TimingType timingType = TimingType.SteadyNormalTime; + private int descrTimeScaleChangeId; + private Vector3 origin; + + public enum TimingType{ + SteadyNormalTime, + IgnoreTimeScale, + HalfTimeScale, + VariableTimeScale, + Length + } + + void Awake(){ + // LeanTween.init(3200); // This line is optional. Here you can specify the maximum number of tweens you will use (the default is 400). This must be called before any use of LeanTween is made for it to be effective. + } + + void Start () { + ltLogo = GameObject.Find("LeanTweenLogo"); + LeanTween.delayedCall(1f, cycleThroughExamples); + origin = ltLogo.transform.position; + +// alphaExample(); + } + + void pauseNow(){ + Time.timeScale = 0f; + Debug.Log("pausing"); + } + + void OnGUI(){ + string label = useEstimatedTime ? "useEstimatedTime" : "timeScale:"+Time.timeScale; + GUI.Label(new Rect(0.03f*Screen.width,0.03f*Screen.height,0.5f*Screen.width,0.3f*Screen.height), label); + } + + void endlessCallback(){ + Debug.Log("endless"); + } + + void cycleThroughExamples(){ + if(exampleIter==0){ + int iter = (int)timingType + 1; + if(iter>(int)TimingType.Length) + iter = 0; + timingType = (TimingType)iter; + useEstimatedTime = timingType==TimingType.IgnoreTimeScale; + Time.timeScale = useEstimatedTime ? 0 : 1f; // pause the Time Scale to show the effectiveness of the useEstimatedTime feature (this is very usefull with Pause Screens) + if(timingType==TimingType.HalfTimeScale) + Time.timeScale = 0.5f; + + if(timingType==TimingType.VariableTimeScale){ + descrTimeScaleChangeId = LeanTween.value( gameObject, 0.01f, 10.0f, 3f).setOnUpdate( (float val)=>{ + //Debug.Log("timeScale val:"+val); + Time.timeScale = val; + }).setEase(LeanTweenType.easeInQuad).setUseEstimatedTime(true).setRepeat(-1).id; + }else{ + Debug.Log("cancel variable time"); + LeanTween.cancel( descrTimeScaleChangeId ); + } + } + gameObject.BroadcastMessage( exampleFunctions[ exampleIter ] ); + + // Debug.Log("cycleThroughExamples time:"+Time.time + " useEstimatedTime:"+useEstimatedTime); + float delayTime = 1.1f; + LeanTween.delayedCall( gameObject, delayTime, cycleThroughExamples).setUseEstimatedTime(useEstimatedTime); + + exampleIter = exampleIter+1>=exampleFunctions.Length ? 0 : exampleIter + 1; + } + + public void updateValue3Example(){ + Debug.Log("updateValue3Example Time:"+Time.time); + LeanTween.value( gameObject, updateValue3ExampleCallback, new Vector3(0.0f, 270.0f, 0.0f), new Vector3(30.0f, 270.0f, 180f), 0.5f ).setEase(LeanTweenType.easeInBounce).setRepeat(2).setLoopPingPong().setOnUpdateVector3(updateValue3ExampleUpdate).setUseEstimatedTime(useEstimatedTime); + } + + public void updateValue3ExampleUpdate( Vector3 val){ + //Debug.Log("val:"+val+" obj:"+obj); + } + + public void updateValue3ExampleCallback( Vector3 val ){ + ltLogo.transform.eulerAngles = val; + // Debug.Log("updateValue3ExampleCallback:"+val); + } + + public void loopTestClamp(){ + Debug.Log("loopTestClamp Time:"+Time.time); + GameObject cube1 = GameObject.Find("Cube1"); + cube1.transform.localScale = new Vector3(1.0f, 1.0f, 1.0f); + LeanTween.scaleZ( cube1, 4.0f, 1.0f).setEase(LeanTweenType.easeOutElastic).setRepeat(7).setLoopClamp().setUseEstimatedTime(useEstimatedTime);// + } + + public void loopTestPingPong(){ + Debug.Log("loopTestPingPong Time:"+Time.time); + GameObject cube2 = GameObject.Find("Cube2"); + cube2.transform.localScale = new Vector3(1.0f, 1.0f, 1.0f); + LeanTween.scaleY( cube2, 4.0f, 1.0f ).setEase(LeanTweenType.easeOutQuad).setLoopPingPong(4).setUseEstimatedTime(useEstimatedTime); + //LeanTween.scaleY( cube2, 4.0f, 1.0f, LeanTween.options().setEaseOutQuad().setRepeat(8).setLoopPingPong().setUseEstimatedTime(useEstimatedTime) ); + } + + public void colorExample(){ + GameObject lChar = GameObject.Find("LCharacter"); + LeanTween.color( lChar, new Color(1.0f,0.0f,0.0f,0.5f), 0.5f ).setEase(LeanTweenType.easeOutBounce).setRepeat(2).setLoopPingPong().setUseEstimatedTime(useEstimatedTime); + } + + public void moveOnACurveExample(){ + Debug.Log("moveOnACurveExample Time:"+Time.time); + + Vector3[] path = new Vector3[] { origin,pt1.position,pt2.position,pt3.position,pt3.position,pt4.position,pt5.position,origin}; + LeanTween.move( ltLogo, path, 1.0f ).setEase(LeanTweenType.easeOutQuad).setOrientToPath(true).setUseEstimatedTime(useEstimatedTime); + } + + public void customTweenExample(){ + Debug.Log("customTweenExample starting pos:"+ltLogo.transform.position+" origin:"+origin); + + LeanTween.moveX( ltLogo, -10.0f, 0.5f ).setEase(customAnimationCurve).setUseEstimatedTime(useEstimatedTime); + LeanTween.moveX( ltLogo, 0.0f, 0.5f ).setEase(customAnimationCurve).setDelay(0.5f).setUseEstimatedTime(useEstimatedTime); + } + + public void moveExample(){ + Debug.Log("moveExample"); + + LeanTween.move( ltLogo, new Vector3(-2f,-1f,0f), 0.5f).setUseEstimatedTime(useEstimatedTime); + LeanTween.move( ltLogo, origin, 0.5f).setDelay(0.5f).setUseEstimatedTime(useEstimatedTime); + } + + public void rotateExample(){ + Debug.Log("rotateExample"); + + Hashtable returnParam = new Hashtable(); + returnParam.Add("yo", 5.0); + + LeanTween.rotate( ltLogo, new Vector3(0f,360f,0f), 1f).setEase(LeanTweenType.easeOutQuad).setOnComplete(rotateFinished).setOnCompleteParam(returnParam).setOnUpdate(rotateOnUpdate).setUseEstimatedTime(useEstimatedTime); + } + + public void rotateOnUpdate( float val ){ + //Debug.Log("rotating val:"+val); + } + + public void rotateFinished( object hash ){ + Hashtable h = hash as Hashtable; + Debug.Log("rotateFinished hash:"+h["yo"]); + } + + public void scaleExample(){ + Debug.Log("scaleExample"); + + Vector3 currentScale = ltLogo.transform.localScale; + LeanTween.scale( ltLogo, new Vector3(currentScale.x+0.2f,currentScale.y+0.2f,currentScale.z+0.2f), 1f ).setEase(LeanTweenType.easeOutBounce).setUseEstimatedTime(useEstimatedTime); + } + + public void updateValueExample(){ + Debug.Log("updateValueExample"); + Hashtable pass = new Hashtable(); + pass.Add("message", "hi"); + LeanTween.value( gameObject, (Action)updateValueExampleCallback, ltLogo.transform.eulerAngles.y, 270f, 1f ).setEase(LeanTweenType.easeOutElastic).setOnUpdateParam(pass).setUseEstimatedTime(useEstimatedTime); + } + + public void updateValueExampleCallback( float val, object hash ){ + // Hashtable h = hash as Hashtable; + // Debug.Log("message:"+h["message"]+" val:"+val); + Vector3 tmp = ltLogo.transform.eulerAngles; + tmp.y = val; + ltLogo.transform.eulerAngles = tmp; + } + + public void delayedCallExample(){ + Debug.Log("delayedCallExample"); + + LeanTween.delayedCall(0.5f, delayedCallExampleCallback).setUseEstimatedTime(useEstimatedTime); + } + + public void delayedCallExampleCallback(){ + Debug.Log("Delayed function was called"); + Vector3 currentScale = ltLogo.transform.localScale; + + LeanTween.scale( ltLogo, new Vector3(currentScale.x-0.2f,currentScale.y-0.2f,currentScale.z-0.2f), 0.5f ).setEase(LeanTweenType.easeInOutCirc).setUseEstimatedTime(useEstimatedTime); + } + + public void alphaExample(){ + Debug.Log("alphaExample"); + + GameObject lChar = GameObject.Find ("LCharacter"); + LeanTween.alpha( lChar, 0.0f, 0.5f ).setUseEstimatedTime(useEstimatedTime); + LeanTween.alpha( lChar, 1.0f, 0.5f ).setDelay(0.5f).setUseEstimatedTime(useEstimatedTime); + } + + public void moveLocalExample(){ + Debug.Log("moveLocalExample"); + + GameObject lChar = GameObject.Find ("LCharacter"); + Vector3 origPos = lChar.transform.localPosition; + LeanTween.moveLocal( lChar, new Vector3(0.0f,2.0f,0.0f), 0.5f ).setUseEstimatedTime(useEstimatedTime); + LeanTween.moveLocal( lChar, origPos, 0.5f ).setDelay(0.5f).setUseEstimatedTime(useEstimatedTime); + } + + public void rotateAroundExample(){ + Debug.Log("rotateAroundExample"); + + GameObject lChar = GameObject.Find ("LCharacter"); + LeanTween.rotateAround( lChar, Vector3.up, 360.0f, 1.0f ).setUseEstimatedTime(useEstimatedTime); + } + + public void loopPause(){ + GameObject cube1 = GameObject.Find("Cube1"); + LeanTween.pause(cube1); + } + + public void loopResume(){ + GameObject cube1 = GameObject.Find("Cube1"); + LeanTween.resume(cube1 ); + } + + public void punchTest(){ + LeanTween.moveX( ltLogo, 7.0f, 1.0f ).setEase(LeanTweenType.punch).setUseEstimatedTime(useEstimatedTime); + } +} diff --git a/Assets/LeanTween/Examples/Scripts/TestingZLegacy.cs.meta b/Assets/LeanTween/Examples/Scripts/TestingZLegacy.cs.meta new file mode 100644 index 0000000..18e3411 --- /dev/null +++ b/Assets/LeanTween/Examples/Scripts/TestingZLegacy.cs.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: ed8575995d061498aa84acbaf0b377de +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} diff --git a/Assets/LeanTween/Examples/Scripts/TestingZLegacyExt.cs b/Assets/LeanTween/Examples/Scripts/TestingZLegacyExt.cs new file mode 100644 index 0000000..156e048 --- /dev/null +++ b/Assets/LeanTween/Examples/Scripts/TestingZLegacyExt.cs @@ -0,0 +1,269 @@ +using UnityEngine; +using System.Collections; +using System; +using System.Threading; +using DentedPixel; + + +public class TestingZLegacyExt : MonoBehaviour { + + public AnimationCurve customAnimationCurve; + public Transform pt1; + public Transform pt2; + public Transform pt3; + public Transform pt4; + public Transform pt5; + + public delegate void NextFunc(); + private int exampleIter = 0; + private string[] exampleFunctions = new string[] { /**/"updateValue3Example", "loopTestClamp", "loopTestPingPong", "moveOnACurveExample", "customTweenExample", "moveExample", "rotateExample", "scaleExample", "updateValueExample", "delayedCallExample", "alphaExample", "moveLocalExample", "rotateAroundExample", "colorExample" }; + public bool useEstimatedTime = true; + private Transform ltLogo; + private TimingType timingType = TimingType.SteadyNormalTime; + private int descrTimeScaleChangeId; + private Vector3 origin; + + public enum TimingType + { + SteadyNormalTime, + IgnoreTimeScale, + HalfTimeScale, + VariableTimeScale, + Length + } + + void Awake() + { + // LeanTween.init(3200); // This line is optional. Here you can specify the maximum number of tweens you will use (the default is 400). This must be called before any use of LeanTween is made for it to be effective. + } + + void Start() + { + ltLogo = GameObject.Find("LeanTweenLogo").transform; + LeanTween.delayedCall(1f, cycleThroughExamples); + origin = ltLogo.position; + + // alphaExample(); + } + + void pauseNow() + { + Time.timeScale = 0f; + Debug.Log("pausing"); + } + + void OnGUI() + { + string label = useEstimatedTime ? "useEstimatedTime" : "timeScale:" + Time.timeScale; + GUI.Label(new Rect(0.03f * Screen.width, 0.03f * Screen.height, 0.5f * Screen.width, 0.3f * Screen.height), label); + } + + void endlessCallback() + { + Debug.Log("endless"); + } + + void cycleThroughExamples() + { + if (exampleIter == 0) + { + int iter = (int)timingType + 1; + if (iter > (int)TimingType.Length) + iter = 0; + timingType = (TimingType)iter; + useEstimatedTime = timingType == TimingType.IgnoreTimeScale; + Time.timeScale = useEstimatedTime ? 0 : 1f; // pause the Time Scale to show the effectiveness of the useEstimatedTime feature (this is very usefull with Pause Screens) + if (timingType == TimingType.HalfTimeScale) + Time.timeScale = 0.5f; + + if (timingType == TimingType.VariableTimeScale) + { + descrTimeScaleChangeId = gameObject.LeanValue(0.01f, 10.0f, 3f).setOnUpdate((float val) => { + //Debug.Log("timeScale val:"+val); + Time.timeScale = val; + }).setEase(LeanTweenType.easeInQuad).setUseEstimatedTime(true).setRepeat(-1).id; + } + else + { + Debug.Log("cancel variable time"); + LeanTween.cancel(descrTimeScaleChangeId); + } + } + gameObject.BroadcastMessage(exampleFunctions[exampleIter]); + + // Debug.Log("cycleThroughExamples time:"+Time.time + " useEstimatedTime:"+useEstimatedTime); + float delayTime = 1.1f; + gameObject.LeanDelayedCall( delayTime, cycleThroughExamples).setUseEstimatedTime(useEstimatedTime); + + exampleIter = exampleIter + 1 >= exampleFunctions.Length ? 0 : exampleIter + 1; + } + + public void updateValue3Example() + { + Debug.Log("updateValue3Example Time:" + Time.time); + gameObject.LeanValue( updateValue3ExampleCallback, new Vector3(0.0f, 270.0f, 0.0f), new Vector3(30.0f, 270.0f, 180f), 0.5f).setEase(LeanTweenType.easeInBounce).setRepeat(2).setLoopPingPong().setOnUpdateVector3(updateValue3ExampleUpdate).setUseEstimatedTime(useEstimatedTime); + } + + public void updateValue3ExampleUpdate(Vector3 val) + { + //Debug.Log("val:"+val+" obj:"+obj); + } + + public void updateValue3ExampleCallback(Vector3 val) + { + ltLogo.transform.eulerAngles = val; + // Debug.Log("updateValue3ExampleCallback:"+val); + } + + public void loopTestClamp() + { + Debug.Log("loopTestClamp Time:" + Time.time); + Transform cube1 = GameObject.Find("Cube1").transform; + cube1.localScale = new Vector3(1.0f, 1.0f, 1.0f); + cube1.LeanScaleZ( 4.0f, 1.0f).setEase(LeanTweenType.easeOutElastic).setRepeat(7).setLoopClamp().setUseEstimatedTime(useEstimatedTime);// + } + + public void loopTestPingPong() + { + Debug.Log("loopTestPingPong Time:" + Time.time); + Transform cube2 = GameObject.Find("Cube2").transform; + cube2.localScale = new Vector3(1.0f, 1.0f, 1.0f); + cube2.LeanScaleY( 4.0f, 1.0f).setEase(LeanTweenType.easeOutQuad).setLoopPingPong(4).setUseEstimatedTime(useEstimatedTime); + //LeanTween.scaleY( cube2, 4.0f, 1.0f, LeanTween.options().setEaseOutQuad().setRepeat(8).setLoopPingPong().setUseEstimatedTime(useEstimatedTime) ); + } + + public void colorExample() + { + GameObject lChar = GameObject.Find("LCharacter"); + lChar.LeanColor( new Color(1.0f, 0.0f, 0.0f, 0.5f), 0.5f).setEase(LeanTweenType.easeOutBounce).setRepeat(2).setLoopPingPong().setUseEstimatedTime(useEstimatedTime); + } + + public void moveOnACurveExample() + { + Debug.Log("moveOnACurveExample Time:" + Time.time); + + Vector3[] path = new Vector3[] { origin, pt1.position, pt2.position, pt3.position, pt3.position, pt4.position, pt5.position, origin }; + ltLogo.LeanMove( path, 1.0f).setEase(LeanTweenType.easeOutQuad).setOrientToPath(true).setUseEstimatedTime(useEstimatedTime); + } + + public void customTweenExample() + { + Debug.Log("customTweenExample starting pos:" + ltLogo.position + " origin:" + origin); + + ltLogo.LeanMoveX(-10.0f, 0.5f).setEase(customAnimationCurve).setUseEstimatedTime(useEstimatedTime); + ltLogo.LeanMoveX( 0.0f, 0.5f).setEase(customAnimationCurve).setDelay(0.5f).setUseEstimatedTime(useEstimatedTime); + } + + public void moveExample() + { + Debug.Log("moveExample"); + + ltLogo.LeanMove(new Vector3(-2f, -1f, 0f), 0.5f).setUseEstimatedTime(useEstimatedTime); + ltLogo.LeanMove(origin, 0.5f).setDelay(0.5f).setUseEstimatedTime(useEstimatedTime); + } + + public void rotateExample() + { + Debug.Log("rotateExample"); + + Hashtable returnParam = new Hashtable(); + returnParam.Add("yo", 5.0); + + ltLogo.LeanRotate(new Vector3(0f, 360f, 0f), 1f).setEase(LeanTweenType.easeOutQuad).setOnComplete(rotateFinished).setOnCompleteParam(returnParam).setOnUpdate(rotateOnUpdate).setUseEstimatedTime(useEstimatedTime); + } + + public void rotateOnUpdate(float val) + { + //Debug.Log("rotating val:"+val); + } + + public void rotateFinished(object hash) + { + Hashtable h = hash as Hashtable; + Debug.Log("rotateFinished hash:" + h["yo"]); + } + + public void scaleExample() + { + Debug.Log("scaleExample"); + + Vector3 currentScale = ltLogo.localScale; + ltLogo.LeanScale(new Vector3(currentScale.x + 0.2f, currentScale.y + 0.2f, currentScale.z + 0.2f), 1f).setEase(LeanTweenType.easeOutBounce).setUseEstimatedTime(useEstimatedTime); + } + + public void updateValueExample() + { + Debug.Log("updateValueExample"); + Hashtable pass = new Hashtable(); + pass.Add("message", "hi"); + gameObject.LeanValue( (Action)updateValueExampleCallback, ltLogo.eulerAngles.y, 270f, 1f).setEase(LeanTweenType.easeOutElastic).setOnUpdateParam(pass).setUseEstimatedTime(useEstimatedTime); + } + + public void updateValueExampleCallback(float val, object hash) + { + // Hashtable h = hash as Hashtable; + // Debug.Log("message:"+h["message"]+" val:"+val); + Vector3 tmp = ltLogo.eulerAngles; + tmp.y = val; + ltLogo.transform.eulerAngles = tmp; + } + + public void delayedCallExample() + { + Debug.Log("delayedCallExample"); + + LeanTween.delayedCall(0.5f, delayedCallExampleCallback).setUseEstimatedTime(useEstimatedTime); + } + + public void delayedCallExampleCallback() + { + Debug.Log("Delayed function was called"); + Vector3 currentScale = ltLogo.localScale; + + ltLogo.LeanScale( new Vector3(currentScale.x - 0.2f, currentScale.y - 0.2f, currentScale.z - 0.2f), 0.5f).setEase(LeanTweenType.easeInOutCirc).setUseEstimatedTime(useEstimatedTime); + } + + public void alphaExample() + { + Debug.Log("alphaExample"); + + GameObject lChar = GameObject.Find("LCharacter"); + lChar.LeanAlpha( 0.0f, 0.5f).setUseEstimatedTime(useEstimatedTime); + lChar.LeanAlpha( 1.0f, 0.5f).setDelay(0.5f).setUseEstimatedTime(useEstimatedTime); + } + + public void moveLocalExample() + { + Debug.Log("moveLocalExample"); + + GameObject lChar = GameObject.Find("LCharacter"); + Vector3 origPos = lChar.transform.localPosition; + lChar.LeanMoveLocal( new Vector3(0.0f, 2.0f, 0.0f), 0.5f).setUseEstimatedTime(useEstimatedTime); + lChar.LeanMoveLocal( origPos, 0.5f).setDelay(0.5f).setUseEstimatedTime(useEstimatedTime); + } + + public void rotateAroundExample() + { + Debug.Log("rotateAroundExample"); + + GameObject lChar = GameObject.Find("LCharacter"); + lChar.LeanRotateAround(Vector3.up, 360.0f, 1.0f).setUseEstimatedTime(useEstimatedTime); + } + + public void loopPause() + { + GameObject cube1 = GameObject.Find("Cube1"); + cube1.LeanPause(); + } + + public void loopResume() + { + GameObject cube1 = GameObject.Find("Cube1"); + cube1.LeanResume(); + } + + public void punchTest() + { + ltLogo.LeanMoveX(7.0f, 1.0f).setEase(LeanTweenType.punch).setUseEstimatedTime(useEstimatedTime); + } +} diff --git a/Assets/LeanTween/Examples/Scripts/TestingZLegacyExt.cs.meta b/Assets/LeanTween/Examples/Scripts/TestingZLegacyExt.cs.meta new file mode 100644 index 0000000..99c9e1f --- /dev/null +++ b/Assets/LeanTween/Examples/Scripts/TestingZLegacyExt.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: c5a76b5b44fc4416a82391d1ab9ec33d +timeCreated: 1533844515 +licenseType: Store +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/LeanTween/Examples/Textures.meta b/Assets/LeanTween/Examples/Textures.meta new file mode 100644 index 0000000..64ca521 --- /dev/null +++ b/Assets/LeanTween/Examples/Textures.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 9e39f8f3dc0404757be9a05da7cc9802 diff --git a/Assets/LeanTween/Examples/Textures/DefaultParticleReplacement.jpg b/Assets/LeanTween/Examples/Textures/DefaultParticleReplacement.jpg new file mode 100644 index 0000000..6687944 Binary files /dev/null and b/Assets/LeanTween/Examples/Textures/DefaultParticleReplacement.jpg differ diff --git a/Assets/LeanTween/Examples/Textures/DefaultParticleReplacement.jpg.meta b/Assets/LeanTween/Examples/Textures/DefaultParticleReplacement.jpg.meta new file mode 100644 index 0000000..c8e6b57 --- /dev/null +++ b/Assets/LeanTween/Examples/Textures/DefaultParticleReplacement.jpg.meta @@ -0,0 +1,33 @@ +fileFormatVersion: 2 +guid: eabba395643bb4e388d633c8d9a4f1e8 +TextureImporter: + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + textureFormat: -1 + maxTextureSize: 1024 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + textureType: -1 + buildTargetSettings: [] diff --git a/Assets/LeanTween/Examples/Textures/Dude2d.png b/Assets/LeanTween/Examples/Textures/Dude2d.png new file mode 100644 index 0000000..d790b85 Binary files /dev/null and b/Assets/LeanTween/Examples/Textures/Dude2d.png differ diff --git a/Assets/LeanTween/Examples/Textures/Dude2d.png.meta b/Assets/LeanTween/Examples/Textures/Dude2d.png.meta new file mode 100644 index 0000000..edd8c8b --- /dev/null +++ b/Assets/LeanTween/Examples/Textures/Dude2d.png.meta @@ -0,0 +1,92 @@ +fileFormatVersion: 2 +guid: 5f7fa9a7940a64e79b5a42d9f661d42c +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 1024 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + applyGammaDecoding: 1 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 1024 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/LeanTween/Examples/Textures/DustCloud.png b/Assets/LeanTween/Examples/Textures/DustCloud.png new file mode 100644 index 0000000..bbb4886 Binary files /dev/null and b/Assets/LeanTween/Examples/Textures/DustCloud.png differ diff --git a/Assets/LeanTween/Examples/Textures/DustCloud.png.meta b/Assets/LeanTween/Examples/Textures/DustCloud.png.meta new file mode 100644 index 0000000..9240e47 --- /dev/null +++ b/Assets/LeanTween/Examples/Textures/DustCloud.png.meta @@ -0,0 +1,128 @@ +fileFormatVersion: 2 +guid: c4c548a339b4d41a590928c0c98934a7 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + applyGammaDecoding: 1 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 1 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 1 + - serializedVersion: 3 + buildTarget: iPhone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 1 + - serializedVersion: 3 + buildTarget: WebGL + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 1 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/LeanTween/Examples/Textures/HorizontalGradient.jpg b/Assets/LeanTween/Examples/Textures/HorizontalGradient.jpg new file mode 100644 index 0000000..566e2d2 Binary files /dev/null and b/Assets/LeanTween/Examples/Textures/HorizontalGradient.jpg differ diff --git a/Assets/LeanTween/Examples/Textures/HorizontalGradient.jpg.meta b/Assets/LeanTween/Examples/Textures/HorizontalGradient.jpg.meta new file mode 100644 index 0000000..860e495 --- /dev/null +++ b/Assets/LeanTween/Examples/Textures/HorizontalGradient.jpg.meta @@ -0,0 +1,33 @@ +fileFormatVersion: 2 +guid: 547f51a8eea214bd7a5863356fd25619 +TextureImporter: + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + textureFormat: -1 + maxTextureSize: 1024 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + textureType: -1 + buildTargetSettings: [] diff --git a/Assets/LeanTween/Examples/Textures/PowerUpStar.png b/Assets/LeanTween/Examples/Textures/PowerUpStar.png new file mode 100644 index 0000000..548e99f Binary files /dev/null and b/Assets/LeanTween/Examples/Textures/PowerUpStar.png differ diff --git a/Assets/LeanTween/Examples/Textures/PowerUpStar.png.meta b/Assets/LeanTween/Examples/Textures/PowerUpStar.png.meta new file mode 100644 index 0000000..3a4a5a4 --- /dev/null +++ b/Assets/LeanTween/Examples/Textures/PowerUpStar.png.meta @@ -0,0 +1,116 @@ +fileFormatVersion: 2 +guid: 70141d51621e24facbca9196bbde84b4 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + applyGammaDecoding: 1 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 1 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 1 + - serializedVersion: 3 + buildTarget: iPhone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 1 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/LeanTween/Framework.meta b/Assets/LeanTween/Framework.meta new file mode 100644 index 0000000..e69c1be --- /dev/null +++ b/Assets/LeanTween/Framework.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: a3f23ec8eb7c24f0bbb1d41bf96c154f +folderAsset: yes +timeCreated: 1469292088 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/LeanTween/Framework/LTDescr.cs b/Assets/LeanTween/Framework/LTDescr.cs new file mode 100644 index 0000000..9826c87 --- /dev/null +++ b/Assets/LeanTween/Framework/LTDescr.cs @@ -0,0 +1,2308 @@ +//namespace DentedPixel{ +using System; +using UnityEngine; + +/** +* Internal Representation of a Tween
    +*
    +* This class represents all of the optional parameters you can pass to a method (it also represents the internal representation of the tween).

    +* Optional Parameters are passed at the end of every method:
    +*
    +*   Example:
    +*   LeanTween.moveX( gameObject, 1f, 1f).setEase( LeanTweenType.easeInQuad ).setDelay(1f);
    +*
    +* You can pass the optional parameters in any order, and chain on as many as you wish.
    +* You can also pass parameters at a later time by saving a reference to what is returned.
    +*
    +* Retrieve a unique id for the tween by using the "id" property. You can pass this to LeanTween.pause, LeanTween.resume, LeanTween.cancel, LeanTween.isTweening methods
    +*
    +*   

    Example:

    +*   int id = LeanTween.moveX(gameObject, 1f, 3f).id;
    +*
      // pause a specific tween
    +*   LeanTween.pause(id);
    +*
      // resume later
    +*   LeanTween.resume(id);
    +*
      // check if it is tweening before kicking of a new tween
    +*   if( LeanTween.isTweening( id ) ){
    +*       LeanTween.cancel( id );
    +*       LeanTween.moveZ(gameObject, 10f, 3f);
    +*   }
    +* @class LTDescr +* @constructor +*/ +public class LTDescr +{ + public bool toggle; + public bool useEstimatedTime; + public bool useFrames; + public bool useManualTime; + public bool usesNormalDt; + public bool hasInitiliazed; + public bool hasExtraOnCompletes; + public bool hasPhysics; + public bool onCompleteOnRepeat; + public bool onCompleteOnStart; + public bool useRecursion; + public float ratioPassed; + public float passed; + public float delay; + public float time; + public float speed; + public float lastVal; + private uint _id; + public int loopCount; + public uint counter = uint.MaxValue; + public float direction; + public float directionLast; + public float overshoot; + public float period; + public float scale; + public bool destroyOnComplete; + public Transform trans; + internal Vector3 fromInternal; + public Vector3 from { get { return this.fromInternal; } set { this.fromInternal = value; } } + internal Vector3 toInternal; + public Vector3 to { get { return this.toInternal; } set { this.toInternal = value; } } + internal Vector3 diff; + internal Vector3 diffDiv2; + public TweenAction type; + private LeanTweenType easeType; + public LeanTweenType loopType; + + public bool hasUpdateCallback; + + public EaseTypeDelegate easeMethod; + public ActionMethodDelegate easeInternal {get; set; } + public ActionMethodDelegate initInternal {get; set; } + public delegate Vector3 EaseTypeDelegate(); + public delegate void ActionMethodDelegate(); + #if !UNITY_3_5 && !UNITY_4_0 && !UNITY_4_0_1 && !UNITY_4_1 && !UNITY_4_2 + public SpriteRenderer spriteRen; + #endif + + #if !UNITY_3_5 && !UNITY_4_0 && !UNITY_4_0_1 && !UNITY_4_1 && !UNITY_4_2 && !UNITY_4_3 && !UNITY_4_5 + public RectTransform rectTransform; + public UnityEngine.UI.Text uiText; + public UnityEngine.UI.Image uiImage; + public UnityEngine.UI.RawImage rawImage; + public UnityEngine.Sprite[] sprites; +#endif + + // Convenience Getters + public Transform toTrans{ + get{ + return optional.toTrans; + } + } + + public LTDescrOptional _optional = new LTDescrOptional(); + + public override string ToString(){ + return (trans!=null ? "name:"+trans.gameObject.name : "gameObject:null")+" toggle:"+toggle+" passed:"+passed+" time:"+time+" delay:"+delay+" direction:"+direction+" from:"+from+" to:"+to+" diff:"+diff+" type:"+type+" ease:"+easeType+" useEstimatedTime:"+useEstimatedTime+" id:"+id+" hasInitiliazed:"+hasInitiliazed; + } + + public LTDescr(){ + + } + + [System.Obsolete("Use 'LeanTween.cancel( id )' instead")] + public LTDescr cancel( GameObject gameObject ){ + // Debug.Log("canceling id:"+this._id+" this.uniqueId:"+this.uniqueId+" go:"+this.trans.gameObject); + if(gameObject==this.trans.gameObject) + LeanTween.removeTween((int)this._id, this.uniqueId); + return this; + } + + public int uniqueId{ + get{ + uint toId = _id | counter << 16; + + /*uint backId = toId & 0xFFFF; + uint backCounter = toId >> 16; + if(_id!=backId || backCounter!=counter){ + Debug.LogError("BAD CONVERSION toId:"+_id); + }*/ + + return (int)toId; + } + } + + public int id{ + get{ + return uniqueId; + } + } + + public LTDescrOptional optional{ + get{ + return _optional; + } + set{ + this._optional = value; + } + } + + public void reset(){ + this.toggle = this.useRecursion = this.usesNormalDt = true; + this.trans = null; + this.spriteRen = null; + this.passed = this.delay = this.lastVal = 0.0f; + this.hasUpdateCallback = this.useEstimatedTime = this.useFrames = this.hasInitiliazed = this.onCompleteOnRepeat = this.destroyOnComplete = this.onCompleteOnStart = this.useManualTime = this.hasExtraOnCompletes = false; + this.easeType = LeanTweenType.linear; + this.loopType = LeanTweenType.once; + this.loopCount = 0; + this.direction = this.directionLast = this.overshoot = this.scale = 1.0f; + this.period = 0.3f; + this.speed = -1f; + this.easeMethod = this.easeLinear; + this.from = this.to = Vector3.zero; + this._optional.reset(); + } + + // Initialize and Internal Methods + + public LTDescr setFollow() + { + this.type = TweenAction.FOLLOW; + return this; + } + + public LTDescr setMoveX(){ + this.type = TweenAction.MOVE_X; + this.initInternal = ()=>{ this.fromInternal.x = trans.position.x; }; + this.easeInternal = ()=>{ trans.position=new Vector3( easeMethod().x,trans.position.y,trans.position.z); }; + return this; + } + + public LTDescr setMoveY(){ + this.type = TweenAction.MOVE_Y; + this.initInternal = ()=>{ this.fromInternal.x = trans.position.y; }; + this.easeInternal = ()=>{ trans.position=new Vector3( trans.position.x,easeMethod().x,trans.position.z); }; + return this; + } + + public LTDescr setMoveZ(){ + this.type = TweenAction.MOVE_Z; + this.initInternal = ()=>{ this.fromInternal.x = trans.position.z; };; + this.easeInternal = ()=>{ trans.position=new Vector3( trans.position.x,trans.position.y,easeMethod().x); }; + return this; + } + + public LTDescr setMoveLocalX(){ + this.type = TweenAction.MOVE_LOCAL_X; + this.initInternal = ()=>{ this.fromInternal.x = trans.localPosition.x; }; + this.easeInternal = ()=>{ trans.localPosition=new Vector3( easeMethod().x,trans.localPosition.y,trans.localPosition.z); }; + return this; + } + + public LTDescr setMoveLocalY(){ + this.type = TweenAction.MOVE_LOCAL_Y; + this.initInternal = ()=>{ this.fromInternal.x = trans.localPosition.y; }; + this.easeInternal = ()=>{ trans.localPosition=new Vector3( trans.localPosition.x,easeMethod().x,trans.localPosition.z); }; + return this; + } + + public LTDescr setMoveLocalZ(){ + this.type = TweenAction.MOVE_LOCAL_Z; + this.initInternal = ()=>{ this.fromInternal.x = trans.localPosition.z; }; + this.easeInternal = ()=>{ trans.localPosition=new Vector3( trans.localPosition.x,trans.localPosition.y,easeMethod().x); }; + return this; + } + + private void initFromInternal(){ this.fromInternal.x = 0; } + + public LTDescr setOffset( Vector3 offset ){ + this.toInternal = offset; + return this; + } + + public LTDescr setMoveCurved(){ + this.type = TweenAction.MOVE_CURVED; + this.initInternal = this.initFromInternal; + this.easeInternal = ()=>{ + newVect = easeMethod(); + val = newVect.x; + if(this._optional.path.orientToPath){ + if(this._optional.path.orientToPath2d){ + this._optional.path.place2d( trans, val ); + }else{ + this._optional.path.place( trans, val ); + } + }else{ + trans.position = this._optional.path.point( val ); + } + }; + return this; + } + + public LTDescr setMoveCurvedLocal(){ + this.type = TweenAction.MOVE_CURVED_LOCAL; + this.initInternal = this.initFromInternal; + this.easeInternal = ()=>{ + newVect = easeMethod(); + val = newVect.x; + if(this._optional.path.orientToPath){ + if(this._optional.path.orientToPath2d){ + this._optional.path.placeLocal2d( trans, val ); + }else{ + this._optional.path.placeLocal( trans, val ); + } + }else{ + trans.localPosition = this._optional.path.point( val ); + } + }; + return this; + } + + public LTDescr setMoveSpline(){ + this.type = TweenAction.MOVE_SPLINE; + this.initInternal = this.initFromInternal; + this.easeInternal = ()=>{ + newVect = easeMethod(); + val = newVect.x; + if(this._optional.spline.orientToPath){ + if(this._optional.spline.orientToPath2d){ + this._optional.spline.place2d( trans, val ); + }else{ + this._optional.spline.place( trans, val ); + } + }else{ + trans.position = this._optional.spline.point( val ); + } + }; + return this; + } + + public LTDescr setMoveSplineLocal(){ + this.type = TweenAction.MOVE_SPLINE_LOCAL; + this.initInternal = this.initFromInternal; + this.easeInternal = ()=>{ + newVect = easeMethod(); + val = newVect.x; + if(this._optional.spline.orientToPath){ + if(this._optional.spline.orientToPath2d){ + this._optional.spline.placeLocal2d( trans, val ); + }else{ + this._optional.spline.placeLocal( trans, val ); + } + }else{ + trans.localPosition = this._optional.spline.point( val ); + } + }; + return this; + } + + public LTDescr setScaleX(){ + this.type = TweenAction.SCALE_X; + this.initInternal = ()=>{ this.fromInternal.x = trans.localScale.x; }; + this.easeInternal = ()=>{ trans.localScale = new Vector3( easeMethod().x,trans.localScale.y,trans.localScale.z); }; + return this; + } + + public LTDescr setScaleY(){ + this.type = TweenAction.SCALE_Y; + this.initInternal = ()=>{ this.fromInternal.x = trans.localScale.y; }; + this.easeInternal = ()=>{ trans.localScale=new Vector3( trans.localScale.x,easeMethod().x,trans.localScale.z); }; + return this; + } + + public LTDescr setScaleZ(){ + this.type = TweenAction.SCALE_Z; + this.initInternal = ()=>{ this.fromInternal.x = trans.localScale.z; }; + this.easeInternal = ()=>{ trans.localScale=new Vector3( trans.localScale.x,trans.localScale.y,easeMethod().x); }; + return this; + } + + public LTDescr setRotateX(){ + this.type = TweenAction.ROTATE_X; + this.initInternal = ()=>{ this.fromInternal.x = trans.eulerAngles.x; this.toInternal.x = LeanTween.closestRot( this.fromInternal.x, this.toInternal.x);}; + this.easeInternal = ()=>{ trans.eulerAngles=new Vector3(easeMethod().x,trans.eulerAngles.y,trans.eulerAngles.z); }; + return this; + } + + public LTDescr setRotateY(){ + this.type = TweenAction.ROTATE_Y; + this.initInternal = ()=>{ this.fromInternal.x = trans.eulerAngles.y; this.toInternal.x = LeanTween.closestRot( this.fromInternal.x, this.toInternal.x);}; + this.easeInternal = ()=>{ trans.eulerAngles=new Vector3(trans.eulerAngles.x,easeMethod().x,trans.eulerAngles.z); }; + return this; + } + + public LTDescr setRotateZ(){ + this.type = TweenAction.ROTATE_Z; + this.initInternal = ()=>{ + this.fromInternal.x = trans.eulerAngles.z; + this.toInternal.x = LeanTween.closestRot( this.fromInternal.x, this.toInternal.x); + }; + this.easeInternal = ()=>{ trans.eulerAngles=new Vector3(trans.eulerAngles.x,trans.eulerAngles.y,easeMethod().x); }; + return this; + } + + public LTDescr setRotateAround(){ + this.type = TweenAction.ROTATE_AROUND; + this.initInternal = ()=>{ + this.fromInternal.x = 0f; + this._optional.origRotation = trans.rotation; + }; + this.easeInternal = ()=>{ + newVect = easeMethod(); + val = newVect.x; + Vector3 origPos = trans.localPosition; + Vector3 rotateAroundPt = (Vector3)trans.TransformPoint( this._optional.point ); + // Debug.Log("this._optional.point:"+this._optional.point); + trans.RotateAround(rotateAroundPt, this._optional.axis, -this._optional.lastVal); + Vector3 diff = origPos - trans.localPosition; + + trans.localPosition = origPos - diff; // Subtract the amount the object has been shifted over by the rotate, to get it back to it's orginal position + trans.rotation = this._optional.origRotation; + + rotateAroundPt = (Vector3)trans.TransformPoint( this._optional.point ); + trans.RotateAround(rotateAroundPt, this._optional.axis, val); + + this._optional.lastVal = val; + }; + return this; + } + + public LTDescr setRotateAroundLocal(){ + this.type = TweenAction.ROTATE_AROUND_LOCAL; + this.initInternal = ()=>{ + this.fromInternal.x = 0f; + this._optional.origRotation = trans.localRotation; + }; + this.easeInternal = ()=>{ + newVect = easeMethod(); + val = newVect.x; + Vector3 origPos = trans.localPosition; + trans.RotateAround((Vector3)trans.TransformPoint( this._optional.point ), trans.TransformDirection(this._optional.axis), -this._optional.lastVal); + Vector3 diff = origPos - trans.localPosition; + + trans.localPosition = origPos - diff; // Subtract the amount the object has been shifted over by the rotate, to get it back to it's orginal position + trans.localRotation = this._optional.origRotation; + Vector3 rotateAroundPt = (Vector3)trans.TransformPoint( this._optional.point ); + trans.RotateAround(rotateAroundPt, trans.TransformDirection(this._optional.axis), val); + + this._optional.lastVal = val; + }; + return this; + } + + public LTDescr setAlpha(){ + this.type = TweenAction.ALPHA; + this.initInternal = ()=>{ + #if UNITY_3_5 || UNITY_4_0 || UNITY_4_0_1 || UNITY_4_1 || UNITY_4_2 + if(trans.gameObject.renderer){ this.fromInternal.x = trans.gameObject.renderer.material.color.a; }else if(trans.childCount>0){ foreach (Transform child in trans) { if(child.gameObject.renderer!=null){ Color col = child.gameObject.renderer.material.color; this.fromInternal.x = col.a; break; }}} + this.easeInternal = this.alpha; + break; + #else + SpriteRenderer ren = trans.GetComponent(); + if(ren!=null){ + this.fromInternal.x = ren.color.a; + }else{ + if(trans.GetComponent()!=null && trans.GetComponent().material.HasProperty("_Color")){ + this.fromInternal.x = trans.GetComponent().material.color.a; + }else if(trans.GetComponent()!=null && trans.GetComponent().material.HasProperty("_TintColor")){ + Color col = trans.GetComponent().material.GetColor("_TintColor"); + this.fromInternal.x = col.a; + }else if(trans.childCount>0){ + foreach (Transform child in trans) { + if(child.gameObject.GetComponent()!=null){ + Color col = child.gameObject.GetComponent().material.color; + this.fromInternal.x = col.a; + break; + } + } + } + } + #endif + + this.easeInternal = ()=>{ + val = easeMethod().x; + #if UNITY_3_5 || UNITY_4_0 || UNITY_4_0_1 || UNITY_4_1 || UNITY_4_2 + alphaRecursive(this.trans, val, this.useRecursion); + #else + if(this.spriteRen!=null){ + this.spriteRen.color = new Color( this.spriteRen.color.r, this.spriteRen.color.g, this.spriteRen.color.b, val); + alphaRecursiveSprite(this.trans, val); + }else{ + alphaRecursive(this.trans, val, this.useRecursion); + } + #endif + }; + + }; + this.easeInternal = ()=>{ + newVect = easeMethod(); + val = newVect.x; + #if UNITY_3_5 || UNITY_4_0 || UNITY_4_0_1 || UNITY_4_1 || UNITY_4_2 + alphaRecursive(this.trans, val, this.useRecursion); + #else + if(this.spriteRen!=null){ + this.spriteRen.color = new Color( this.spriteRen.color.r, this.spriteRen.color.g, this.spriteRen.color.b, val); + alphaRecursiveSprite(this.trans, val); + }else{ + alphaRecursive(this.trans, val, this.useRecursion); + } + #endif + }; + return this; + } + + public LTDescr setTextAlpha(){ + this.type = TweenAction.TEXT_ALPHA; + this.initInternal = ()=>{ + this.uiText = trans.GetComponent(); + this.fromInternal.x = this.uiText != null ? this.uiText.color.a : 1f; + }; + this.easeInternal = ()=>{ textAlphaRecursive( trans, easeMethod().x, this.useRecursion ); }; + return this; + } + + public LTDescr setAlphaVertex(){ + this.type = TweenAction.ALPHA_VERTEX; + this.initInternal = ()=>{ this.fromInternal.x = trans.GetComponent().mesh.colors32[0].a; }; + this.easeInternal = ()=>{ + newVect = easeMethod(); + val = newVect.x; + Mesh mesh = trans.GetComponent().mesh; + Vector3[] vertices = mesh.vertices; + Color32[] colors = new Color32[vertices.Length]; + if (colors.Length == 0){ //MaxFW fix: add vertex colors if the mesh doesn't have any + Color32 transparentWhiteColor32 = new Color32(0xff, 0xff, 0xff, 0x00); + colors = new Color32[mesh.vertices.Length]; + for (int k=0; k{ + #if UNITY_3_5 || UNITY_4_0 || UNITY_4_0_1 || UNITY_4_1 || UNITY_4_2 + if(trans.gameObject.renderer){ + this.setFromColor( trans.gameObject.renderer.material.color ); + }else if(trans.childCount>0){ + foreach (Transform child in trans) { + if(child.gameObject.renderer!=null){ + this.setFromColor( child.gameObject.renderer.material.color ); + break; + } + } + } + #else + SpriteRenderer renColor = trans.GetComponent(); + if(renColor!=null){ + this.setFromColor( renColor.color ); + }else{ + if(trans.GetComponent()!=null && trans.GetComponent().material.HasProperty("_Color")){ + Color col = trans.GetComponent().material.color; + this.setFromColor( col ); + }else if(trans.GetComponent()!=null && trans.GetComponent().material.HasProperty("_TintColor")){ + Color col = trans.GetComponent().material.GetColor ("_TintColor"); + this.setFromColor( col ); + }else if(trans.childCount>0){ + foreach (Transform child in trans) { + if(child.gameObject.GetComponent()!=null){ + Color col = child.gameObject.GetComponent().material.color; + this.setFromColor( col ); + break; + } + } + } + } + #endif + }; + this.easeInternal = ()=>{ + newVect = easeMethod(); + val = newVect.x; + Color toColor = tweenColor(this, val); + + #if !UNITY_3_5 && !UNITY_4_0 && !UNITY_4_0_1 && !UNITY_4_1 && !UNITY_4_2 + + if(this.spriteRen!=null){ + this.spriteRen.color = toColor; + colorRecursiveSprite( trans, toColor); + }else{ + #endif + // Debug.Log("val:"+val+" tween:"+tween+" tween.diff:"+tween.diff); + if(this.type==TweenAction.COLOR) + colorRecursive(trans, toColor, this.useRecursion); + + #if !UNITY_3_5 && !UNITY_4_0 && !UNITY_4_0_1 && !UNITY_4_1 && !UNITY_4_2 + } + #endif + if(dt!=0f && this._optional.onUpdateColor!=null){ + this._optional.onUpdateColor(toColor); + }else if(dt!=0f && this._optional.onUpdateColorObject!=null){ + this._optional.onUpdateColorObject(toColor, this._optional.onUpdateParam); + } + }; + return this; + } + + public LTDescr setCallbackColor(){ + this.type = TweenAction.CALLBACK_COLOR; + this.initInternal = ()=>{ this.diff = new Vector3(1.0f,0.0f,0.0f); }; + this.easeInternal = ()=>{ + newVect = easeMethod(); + val = newVect.x; + Color toColor = tweenColor(this, val); + + #if !UNITY_3_5 && !UNITY_4_0 && !UNITY_4_0_1 && !UNITY_4_1 && !UNITY_4_2 + if(this.spriteRen!=null){ + this.spriteRen.color = toColor; + colorRecursiveSprite( trans, toColor); + }else{ + #endif + // Debug.Log("val:"+val+" tween:"+tween+" tween.diff:"+tween.diff); + if(this.type==TweenAction.COLOR) + colorRecursive(trans, toColor, this.useRecursion); + + #if !UNITY_3_5 && !UNITY_4_0 && !UNITY_4_0_1 && !UNITY_4_1 && !UNITY_4_2 + } + #endif + if(dt!=0f && this._optional.onUpdateColor!=null){ + this._optional.onUpdateColor(toColor); + }else if(dt!=0f && this._optional.onUpdateColorObject!=null){ + this._optional.onUpdateColorObject(toColor, this._optional.onUpdateParam); + } + }; + return this; + } + + + #if !UNITY_3_5 && !UNITY_4_0 && !UNITY_4_0_1 && !UNITY_4_1 && !UNITY_4_2 && !UNITY_4_3 && !UNITY_4_5 + + public LTDescr setTextColor(){ + this.type = TweenAction.TEXT_COLOR; + this.initInternal = ()=>{ + this.uiText = trans.GetComponent(); + this.setFromColor( this.uiText != null ? this.uiText.color : Color.white ); + }; + this.easeInternal = ()=>{ + newVect = easeMethod(); + val = newVect.x; + Color toColor = tweenColor(this, val); + this.uiText.color = toColor; + if (dt!=0f && this._optional.onUpdateColor != null) + this._optional.onUpdateColor(toColor); + + if(this.useRecursion && trans.childCount>0) + textColorRecursive(this.trans, toColor); + }; + return this; + } + + public LTDescr setCanvasAlpha(){ + this.type = TweenAction.CANVAS_ALPHA; + this.initInternal = ()=>{ + this.uiImage = trans.GetComponent(); + if(this.uiImage!=null){ + this.fromInternal.x = this.uiImage.color.a; + }else{ + this.rawImage = trans.GetComponent(); + if(this.rawImage != null){ + this.fromInternal.x = this.rawImage.color.a; + }else{ + this.fromInternal.x = 1f; + } + } + + }; + this.easeInternal = ()=>{ + newVect = easeMethod(); + val = newVect.x; + if(this.uiImage!=null){ + Color c = this.uiImage.color; c.a = val; this.uiImage.color = c; + }else if(this.rawImage!=null){ + Color c = this.rawImage.color; c.a = val; this.rawImage.color = c; + } + if(this.useRecursion){ + alphaRecursive( this.rectTransform, val, 0 ); + textAlphaChildrenRecursive( this.rectTransform, val); + } + }; + return this; + } + + public LTDescr setCanvasGroupAlpha(){ + this.type = TweenAction.CANVASGROUP_ALPHA; + this.initInternal = ()=>{this.fromInternal.x = trans.GetComponent().alpha;}; + this.easeInternal = ()=>{ this.trans.GetComponent().alpha = easeMethod().x; }; + return this; + } + + public LTDescr setCanvasColor(){ + this.type = TweenAction.CANVAS_COLOR; + this.initInternal = ()=>{ + this.uiImage = trans.GetComponent(); + if(this.uiImage==null){ + this.rawImage = trans.GetComponent(); + this.setFromColor( this.rawImage!=null ? this.rawImage.color : Color.white ); + }else{ + this.setFromColor( this.uiImage.color ); + } + + }; + this.easeInternal = ()=>{ + newVect = easeMethod(); + val = newVect.x; + Color toColor = tweenColor(this, val); + if(this.uiImage!=null){ + this.uiImage.color = toColor; + }else if(this.rawImage!=null){ + this.rawImage.color = toColor; + } + + if (dt!=0f && this._optional.onUpdateColor != null) + this._optional.onUpdateColor(toColor); + + if(this.useRecursion) + colorRecursive(this.rectTransform, toColor); + }; + return this; + } + + public LTDescr setCanvasMoveX(){ + this.type = TweenAction.CANVAS_MOVE_X; + this.initInternal = ()=>{ this.fromInternal.x = this.rectTransform.anchoredPosition3D.x; }; + this.easeInternal = ()=>{ Vector3 c = this.rectTransform.anchoredPosition3D; this.rectTransform.anchoredPosition3D = new Vector3(easeMethod().x, c.y, c.z); }; + return this; + } + + public LTDescr setCanvasMoveY(){ + this.type = TweenAction.CANVAS_MOVE_Y; + this.initInternal = ()=>{ this.fromInternal.x = this.rectTransform.anchoredPosition3D.y; }; + this.easeInternal = ()=>{ Vector3 c = this.rectTransform.anchoredPosition3D; this.rectTransform.anchoredPosition3D = new Vector3(c.x, easeMethod().x, c.z); }; + return this; + } + + public LTDescr setCanvasMoveZ(){ + this.type = TweenAction.CANVAS_MOVE_Z; + this.initInternal = ()=>{ this.fromInternal.x = this.rectTransform.anchoredPosition3D.z; }; + this.easeInternal = ()=>{ Vector3 c = this.rectTransform.anchoredPosition3D; this.rectTransform.anchoredPosition3D = new Vector3(c.x, c.y, easeMethod().x); }; + return this; + } + + private void initCanvasRotateAround(){ + this.lastVal = 0.0f; + this.fromInternal.x = 0.0f; + this._optional.origRotation = this.rectTransform.rotation; + } + + public LTDescr setCanvasRotateAround(){ + this.type = TweenAction.CANVAS_ROTATEAROUND; + this.initInternal = this.initCanvasRotateAround; + this.easeInternal = ()=>{ + newVect = easeMethod(); + val = newVect.x; + RectTransform rect = this.rectTransform; + Vector3 origPos = rect.localPosition; + rect.RotateAround((Vector3)rect.TransformPoint( this._optional.point ), this._optional.axis, -val); + Vector3 diff = origPos - rect.localPosition; + + rect.localPosition = origPos - diff; // Subtract the amount the object has been shifted over by the rotate, to get it back to it's orginal position + rect.rotation = this._optional.origRotation; + rect.RotateAround((Vector3)rect.TransformPoint( this._optional.point ), this._optional.axis, val); + }; + return this; + } + + public LTDescr setCanvasRotateAroundLocal(){ + this.type = TweenAction.CANVAS_ROTATEAROUND_LOCAL; + this.initInternal = this.initCanvasRotateAround; + this.easeInternal = ()=>{ + newVect = easeMethod(); + val = newVect.x; + RectTransform rect = this.rectTransform; + Vector3 origPos = rect.localPosition; + rect.RotateAround((Vector3)rect.TransformPoint( this._optional.point ), rect.TransformDirection(this._optional.axis), -val); + Vector3 diff = origPos - rect.localPosition; + + rect.localPosition = origPos - diff; // Subtract the amount the object has been shifted over by the rotate, to get it back to it's orginal position + rect.rotation = this._optional.origRotation; + rect.RotateAround((Vector3)rect.TransformPoint( this._optional.point ), rect.TransformDirection(this._optional.axis), val); + }; + return this; + } + + public LTDescr setCanvasPlaySprite(){ + this.type = TweenAction.CANVAS_PLAYSPRITE; + this.initInternal = ()=>{ + this.uiImage = trans.GetComponent(); + this.fromInternal.x = 0f; + }; + this.easeInternal = ()=>{ + newVect = easeMethod(); + val = newVect.x; + int frame = (int)Mathf.Round( val ); + this.uiImage.sprite = this.sprites[ frame ]; + }; + return this; + } + + public LTDescr setCanvasMove(){ + this.type = TweenAction.CANVAS_MOVE; + this.initInternal = ()=>{ this.fromInternal = this.rectTransform.anchoredPosition3D; }; + this.easeInternal = ()=>{ this.rectTransform.anchoredPosition3D = easeMethod(); }; + return this; + } + + public LTDescr setCanvasScale(){ + this.type = TweenAction.CANVAS_SCALE; + this.initInternal = ()=>{ this.from = this.rectTransform.localScale; }; + this.easeInternal = ()=>{ this.rectTransform.localScale = easeMethod(); }; + return this; + } + + public LTDescr setCanvasSizeDelta(){ + this.type = TweenAction.CANVAS_SIZEDELTA; + this.initInternal = ()=>{ this.from = this.rectTransform.sizeDelta; }; + this.easeInternal = ()=>{ this.rectTransform.sizeDelta = easeMethod(); }; + return this; + } + #endif + + private void callback(){ newVect = easeMethod(); val = newVect.x; } + + public LTDescr setCallback(){ + this.type = TweenAction.CALLBACK; + this.initInternal = ()=>{}; + this.easeInternal = this.callback; + return this; + } + public LTDescr setValue3(){ + this.type = TweenAction.VALUE3; + this.initInternal = ()=>{}; + this.easeInternal = this.callback; + return this; + } + + public LTDescr setMove(){ + this.type = TweenAction.MOVE; + this.initInternal = ()=>{ this.from = trans.position; }; + this.easeInternal = ()=>{ + newVect = easeMethod(); + trans.position = newVect; + }; + return this; + } + + public LTDescr setMoveLocal(){ + this.type = TweenAction.MOVE_LOCAL; + this.initInternal = ()=>{ this.from = trans.localPosition; }; + this.easeInternal = ()=>{ + newVect = easeMethod(); + trans.localPosition = newVect; + }; + return this; + } + + public LTDescr setMoveToTransform(){ + this.type = TweenAction.MOVE_TO_TRANSFORM; + this.initInternal = ()=>{ this.from = trans.position; }; + this.easeInternal = ()=>{ + this.to = this._optional.toTrans.position; + this.diff = this.to - this.from; + this.diffDiv2 = this.diff * 0.5f; + + newVect = easeMethod(); + this.trans.position = newVect; + }; + return this; + } + + public LTDescr setRotate(){ + this.type = TweenAction.ROTATE; + this.initInternal = ()=>{ this.from = trans.eulerAngles; this.to = new Vector3(LeanTween.closestRot( this.fromInternal.x, this.toInternal.x), LeanTween.closestRot( this.from.y, this.to.y), LeanTween.closestRot( this.from.z, this.to.z)); }; + this.easeInternal = ()=>{ + newVect = easeMethod(); + trans.eulerAngles = newVect; + }; + return this; + } + + public LTDescr setRotateLocal(){ + this.type = TweenAction.ROTATE_LOCAL; + this.initInternal = ()=>{ this.from = trans.localEulerAngles; this.to = new Vector3(LeanTween.closestRot( this.fromInternal.x, this.toInternal.x), LeanTween.closestRot( this.from.y, this.to.y), LeanTween.closestRot( this.from.z, this.to.z)); }; + this.easeInternal = ()=>{ + newVect = easeMethod(); + trans.localEulerAngles = newVect; + }; + return this; + } + + public LTDescr setScale(){ + this.type = TweenAction.SCALE; + this.initInternal = ()=>{ this.from = trans.localScale; }; + this.easeInternal = ()=>{ + newVect = easeMethod(); + trans.localScale = newVect; + }; + return this; + } + + public LTDescr setGUIMove(){ + this.type = TweenAction.GUI_MOVE; + this.initInternal = ()=>{ this.from = new Vector3(this._optional.ltRect.rect.x, this._optional.ltRect.rect.y, 0); }; + this.easeInternal = ()=>{ Vector3 v = easeMethod(); this._optional.ltRect.rect = new Rect( v.x, v.y, this._optional.ltRect.rect.width, this._optional.ltRect.rect.height); }; + return this; + } + + public LTDescr setGUIMoveMargin(){ + this.type = TweenAction.GUI_MOVE_MARGIN; + this.initInternal = ()=>{ this.from = new Vector2(this._optional.ltRect.margin.x, this._optional.ltRect.margin.y); }; + this.easeInternal = ()=>{ Vector3 v = easeMethod(); this._optional.ltRect.margin = new Vector2(v.x, v.y); }; + return this; + } + + public LTDescr setGUIScale(){ + this.type = TweenAction.GUI_SCALE; + this.initInternal = ()=>{ this.from = new Vector3(this._optional.ltRect.rect.width, this._optional.ltRect.rect.height, 0); }; + this.easeInternal = ()=>{ Vector3 v = easeMethod(); this._optional.ltRect.rect = new Rect( this._optional.ltRect.rect.x, this._optional.ltRect.rect.y, v.x, v.y); }; + return this; + } + + public LTDescr setGUIAlpha(){ + this.type = TweenAction.GUI_ALPHA; + this.initInternal = ()=>{ this.fromInternal.x = this._optional.ltRect.alpha; }; + this.easeInternal = ()=>{ this._optional.ltRect.alpha = easeMethod().x; }; + return this; + } + + public LTDescr setGUIRotate(){ + this.type = TweenAction.GUI_ROTATE; + this.initInternal = ()=>{ if(this._optional.ltRect.rotateEnabled==false){ + this._optional.ltRect.rotateEnabled = true; + this._optional.ltRect.resetForRotation(); + } + + this.fromInternal.x = this._optional.ltRect.rotation; + }; + this.easeInternal = ()=>{ this._optional.ltRect.rotation = easeMethod().x; }; + return this; + } + + public LTDescr setDelayedSound(){ + this.type = TweenAction.DELAYED_SOUND; + this.initInternal = ()=>{ this.hasExtraOnCompletes = true; }; + this.easeInternal = this.callback; + return this; + } + + public LTDescr setTarget(Transform trans) + { + this.optional.toTrans = trans; + return this; + } + + private void init(){ + this.hasInitiliazed = true; + + usesNormalDt = !(useEstimatedTime || useManualTime || useFrames); // only set this to true if it uses non of the other timing modes + + if (useFrames) + this.optional.initFrameCount = Time.frameCount; + + if (this.time <= 0f) // avoid dividing by zero + this.time = Mathf.Epsilon; + + if(this.initInternal!=null) + this.initInternal(); + + this.diff = this.to - this.from; + this.diffDiv2 = this.diff * 0.5f; + + if (this._optional.onStart != null) + this._optional.onStart(); + + if(this.onCompleteOnStart) + callOnCompletes(); + + if(this.speed>=0){ + initSpeed(); + } + } + + private void initSpeed(){ + if(this.type==TweenAction.MOVE_CURVED || this.type==TweenAction.MOVE_CURVED_LOCAL){ + this.time = this._optional.path.distance / this.speed; + }else if(this.type==TweenAction.MOVE_SPLINE || this.type==TweenAction.MOVE_SPLINE_LOCAL){ + this.time = this._optional.spline.distance/ this.speed; + }else{ + this.time = (this.to - this.from).magnitude / this.speed; + } + } + + public static float val; + public static float dt; + public static Vector3 newVect; + + /** + * If you need a tween to happen immediately instead of waiting for the next Update call, you can force it with this method + * + * @method updateNow + * @return {LTDescr} LTDescr an object that distinguishes the tween + * @example + * LeanTween.moveX(gameObject, 5f, 0f ).updateNow(); + */ + public LTDescr updateNow(){ + updateInternal(); + return this; + } + + public bool updateInternal(){ + + float directionLocal = this.direction; + if(this.usesNormalDt){ + dt = LeanTween.dtActual; + }else if( this.useEstimatedTime ){ + dt = LeanTween.dtEstimated; + }else if( this.useFrames ){ + dt = this.optional.initFrameCount==0 ? 0 : 1; + this.optional.initFrameCount = Time.frameCount; + }else if( this.useManualTime ){ + dt = LeanTween.dtManual; + } + +// Debug.Log ("tween:" + this+ " dt:"+dt); + if(this.delay<=0f && directionLocal!=0f){ + if(trans==null) + return true; + + // initialize if has not done so yet + if(!this.hasInitiliazed) + this.init(); + + dt = dt*directionLocal; + this.passed += dt; + + this.passed = Mathf.Clamp(this.passed, 0f, this.time); + + this.ratioPassed = (this.passed / this.time); // need to clamp when finished so it will finish at the exact spot and not overshoot + + this.easeInternal(); + + if(this.hasUpdateCallback) + this._optional.callOnUpdate(val, this.ratioPassed); + + bool isTweenFinished = directionLocal>0f ? this.passed>=this.time : this.passed<=0f; + // Debug.Log("lt "+this+" dt:"+dt+" fin:"+isTweenFinished); + if(isTweenFinished){ // increment or flip tween + this.loopCount--; + if(this.loopType==LeanTweenType.pingPong){ + this.direction = 0.0f-directionLocal; + }else{ + this.passed = Mathf.Epsilon; + } + + isTweenFinished = this.loopCount == 0 || this.loopType == LeanTweenType.once; // only return true if it is fully complete + + if(isTweenFinished==false && this.onCompleteOnRepeat && this.hasExtraOnCompletes) + callOnCompletes(); // this only gets called if onCompleteOnRepeat is set to true, otherwise LeanTween class takes care of calling it + + return isTweenFinished; + } + }else{ + this.delay -= dt; + } + + return false; + } + + public void callOnCompletes(){ + if(this.type==TweenAction.GUI_ROTATE) + this._optional.ltRect.rotateFinished = true; + + if(this.type==TweenAction.DELAYED_SOUND){ + AudioSource.PlayClipAtPoint((AudioClip)this._optional.onCompleteParam, this.to, this.from.x); + } + if(this._optional.onComplete!=null){ + this._optional.onComplete(); + }else if(this._optional.onCompleteObject!=null){ + this._optional.onCompleteObject(this._optional.onCompleteParam); + } + } + + // Helper Methods + + public LTDescr setFromColor( Color col ){ + this.from = new Vector3(0.0f, col.a, 0.0f); + this.diff = new Vector3(1.0f,0.0f,0.0f); + this._optional.axis = new Vector3( col.r, col.g, col.b ); + return this; + } + + private static void alphaRecursive( Transform transform, float val, bool useRecursion = true){ + Renderer renderer = transform.gameObject.GetComponent(); + if(renderer!=null){ + foreach(Material mat in renderer.materials){ + if(mat.HasProperty("_Color")){ + mat.color = new Color( mat.color.r, mat.color.g, mat.color.b, val); + }else if(mat.HasProperty("_TintColor")){ + Color col = mat.GetColor ("_TintColor"); + mat.SetColor("_TintColor", new Color( col.r, col.g, col.b, val)); + } + } + } + if(useRecursion && transform.childCount>0){ + foreach (Transform child in transform) { + alphaRecursive(child, val); + } + } + } + + private static void colorRecursive( Transform transform, Color toColor, bool useRecursion = true ){ + Renderer ren = transform.gameObject.GetComponent(); + if(ren!=null){ + foreach(Material mat in ren.materials){ + mat.color = toColor; + } + } + if(useRecursion && transform.childCount>0){ + foreach (Transform child in transform) { + colorRecursive(child, toColor); + } + } + } + + #if !UNITY_3_5 && !UNITY_4_0 && !UNITY_4_0_1 && !UNITY_4_1 && !UNITY_4_2 && !UNITY_4_3 && !UNITY_4_5 + + private static void alphaRecursive( RectTransform rectTransform, float val, int recursiveLevel = 0){ + if(rectTransform.childCount>0){ + foreach (RectTransform child in rectTransform) { + UnityEngine.UI.MaskableGraphic uiImage = child.GetComponent(); + if (uiImage != null) { + Color c = uiImage.color; c.a = val; uiImage.color = c; + } else { + uiImage = child.GetComponent(); + if (uiImage != null) { + Color c = uiImage.color; c.a = val; uiImage.color = c; + } + } + + alphaRecursive(child, val, recursiveLevel + 1); + } + } + } + + private static void alphaRecursiveSprite( Transform transform, float val ){ + if(transform.childCount>0){ + foreach (Transform child in transform) { + SpriteRenderer ren = child.GetComponent(); + if(ren!=null) + ren.color = new Color( ren.color.r, ren.color.g, ren.color.b, val); + alphaRecursiveSprite(child, val); + } + } + } + + private static void colorRecursiveSprite( Transform transform, Color toColor ){ + if(transform.childCount>0){ + foreach (Transform child in transform) { + SpriteRenderer ren = transform.gameObject.GetComponent(); + if(ren!=null) + ren.color = toColor; + colorRecursiveSprite(child, toColor); + } + } + } + + private static void colorRecursive( RectTransform rectTransform, Color toColor ){ + + if(rectTransform.childCount>0){ + foreach (RectTransform child in rectTransform) { + UnityEngine.UI.MaskableGraphic uiImage = child.GetComponent(); + if (uiImage != null) { + uiImage.color = toColor; + } else { + uiImage = child.GetComponent(); + if (uiImage != null) + uiImage.color = toColor; + } + colorRecursive(child, toColor); + } + } + } + + private static void textAlphaChildrenRecursive( Transform trans, float val, bool useRecursion = true ){ + + if(useRecursion && trans.childCount>0){ + foreach (Transform child in trans) { + UnityEngine.UI.Text uiText = child.GetComponent(); + if(uiText!=null){ + Color c = uiText.color; + c.a = val; + uiText.color = c; + } + textAlphaChildrenRecursive(child, val); + } + } + } + + private static void textAlphaRecursive( Transform trans, float val, bool useRecursion = true ){ + UnityEngine.UI.Text uiText = trans.GetComponent(); + if(uiText!=null){ + Color c = uiText.color; + c.a = val; + uiText.color = c; + } + if(useRecursion && trans.childCount>0){ + foreach (Transform child in trans) { + textAlphaRecursive(child, val); + } + } + } + + private static void textColorRecursive(Transform trans, Color toColor ){ + if(trans.childCount>0){ + foreach (Transform child in trans) { + UnityEngine.UI.Text uiText = child.GetComponent(); + if(uiText!=null){ + uiText.color = toColor; + } + textColorRecursive(child, toColor); + } + } + } + #endif + + private static Color tweenColor( LTDescr tween, float val ){ + Vector3 diff3 = tween._optional.point - tween._optional.axis; + float diffAlpha = tween.to.y - tween.from.y; + return new Color(tween._optional.axis.x + diff3.x*val, tween._optional.axis.y + diff3.y*val, tween._optional.axis.z + diff3.z*val, tween.from.y + diffAlpha*val); + } + + /** + * Pause a tween + * + * @method pause + * @return {LTDescr} LTDescr an object that distinguishes the tween + */ + public LTDescr pause(){ + if(this.direction != 0.0f){ // check if tween is already paused + this.directionLast = this.direction; + this.direction = 0.0f; + } + + return this; + } + + /** + * Resume a paused tween + * + * @method resume + * @return {LTDescr} LTDescr an object that distinguishes the tween + */ + public LTDescr resume(){ + this.direction = this.directionLast; + + return this; + } + + /** + * Set Axis optional axis for tweens where it is relevant + * + * @method setAxis + * @param {Vector3} axis either the tween rotates around, or the direction it faces in the case of setOrientToPath + * @return {LTDescr} LTDescr an object that distinguishes the tween + * @example + * LeanTween.move( ltLogo, path, 1.0f ).setEase(LeanTweenType.easeOutQuad).setOrientToPath(true).setAxis(Vector3.forward); + */ + public LTDescr setAxis( Vector3 axis ){ + this._optional.axis = axis; + return this; + } + + /** + * Delay the start of a tween + * + * @method setDelay + * @param {float} float time The time to complete the tween in + * @return {LTDescr} LTDescr an object that distinguishes the tween + * @example + * LeanTween.moveX(gameObject, 5f, 2.0f ).setDelay( 1.5f ); + */ + public LTDescr setDelay( float delay ){ + this.delay = delay; + + return this; + } + + /** + * Set the type of easing used for the tween.
    + * + * + * @method setEase + * @param {LeanTweenType} easeType:LeanTweenType the easing type to use + * @return {LTDescr} LTDescr an object that distinguishes the tween + * @example + * LeanTween.moveX(gameObject, 5f, 2.0f ).setEase( LeanTweenType.easeInBounce ); + */ + public LTDescr setEase( LeanTweenType easeType ){ + + switch( easeType ){ + case LeanTweenType.linear: + setEaseLinear(); break; + case LeanTweenType.easeOutQuad: + setEaseOutQuad(); break; + case LeanTweenType.easeInQuad: + setEaseInQuad(); break; + case LeanTweenType.easeInOutQuad: + setEaseInOutQuad(); break; + case LeanTweenType.easeInCubic: + setEaseInCubic();break; + case LeanTweenType.easeOutCubic: + setEaseOutCubic(); break; + case LeanTweenType.easeInOutCubic: + setEaseInOutCubic(); break; + case LeanTweenType.easeInQuart: + setEaseInQuart(); break; + case LeanTweenType.easeOutQuart: + setEaseOutQuart(); break; + case LeanTweenType.easeInOutQuart: + setEaseInOutQuart(); break; + case LeanTweenType.easeInQuint: + setEaseInQuint(); break; + case LeanTweenType.easeOutQuint: + setEaseOutQuint(); break; + case LeanTweenType.easeInOutQuint: + setEaseInOutQuint(); break; + case LeanTweenType.easeInSine: + setEaseInSine(); break; + case LeanTweenType.easeOutSine: + setEaseOutSine(); break; + case LeanTweenType.easeInOutSine: + setEaseInOutSine(); break; + case LeanTweenType.easeInExpo: + setEaseInExpo(); break; + case LeanTweenType.easeOutExpo: + setEaseOutExpo(); break; + case LeanTweenType.easeInOutExpo: + setEaseInOutExpo(); break; + case LeanTweenType.easeInCirc: + setEaseInCirc(); break; + case LeanTweenType.easeOutCirc: + setEaseOutCirc(); break; + case LeanTweenType.easeInOutCirc: + setEaseInOutCirc(); break; + case LeanTweenType.easeInBounce: + setEaseInBounce(); break; + case LeanTweenType.easeOutBounce: + setEaseOutBounce(); break; + case LeanTweenType.easeInOutBounce: + setEaseInOutBounce(); break; + case LeanTweenType.easeInBack: + setEaseInBack(); break; + case LeanTweenType.easeOutBack: + setEaseOutBack(); break; + case LeanTweenType.easeInOutBack: + setEaseInOutBack(); break; + case LeanTweenType.easeInElastic: + setEaseInElastic(); break; + case LeanTweenType.easeOutElastic: + setEaseOutElastic(); break; + case LeanTweenType.easeInOutElastic: + setEaseInOutElastic(); break; + case LeanTweenType.punch: + setEasePunch(); break; + case LeanTweenType.easeShake: + setEaseShake(); break; + case LeanTweenType.easeSpring: + setEaseSpring(); break; + default: + setEaseLinear(); break; + } + + return this; + } + + public LTDescr setEaseLinear(){ this.easeType = LeanTweenType.linear; this.easeMethod = this.easeLinear; return this; } + + public LTDescr setEaseSpring(){ this.easeType = LeanTweenType.easeSpring; this.easeMethod = this.easeSpring; return this; } + + public LTDescr setEaseInQuad(){ this.easeType = LeanTweenType.easeInQuad; this.easeMethod = this.easeInQuad; return this; } + + public LTDescr setEaseOutQuad(){ this.easeType = LeanTweenType.easeOutQuad; this.easeMethod = this.easeOutQuad; return this; } + + public LTDescr setEaseInOutQuad(){ this.easeType = LeanTweenType.easeInOutQuad; this.easeMethod = this.easeInOutQuad; return this;} + + public LTDescr setEaseInCubic(){ this.easeType = LeanTweenType.easeInCubic; this.easeMethod = this.easeInCubic; return this; } + + public LTDescr setEaseOutCubic(){ this.easeType = LeanTweenType.easeOutCubic; this.easeMethod = this.easeOutCubic; return this; } + + public LTDescr setEaseInOutCubic(){ this.easeType = LeanTweenType.easeInOutCubic; this.easeMethod = this.easeInOutCubic; return this; } + + public LTDescr setEaseInQuart(){ this.easeType = LeanTweenType.easeInQuart; this.easeMethod = this.easeInQuart; return this; } + + public LTDescr setEaseOutQuart(){ this.easeType = LeanTweenType.easeOutQuart; this.easeMethod = this.easeOutQuart; return this; } + + public LTDescr setEaseInOutQuart(){ this.easeType = LeanTweenType.easeInOutQuart; this.easeMethod = this.easeInOutQuart; return this; } + + public LTDescr setEaseInQuint(){ this.easeType = LeanTweenType.easeInQuint; this.easeMethod = this.easeInQuint; return this; } + + public LTDescr setEaseOutQuint(){ this.easeType = LeanTweenType.easeOutQuint; this.easeMethod = this.easeOutQuint; return this; } + + public LTDescr setEaseInOutQuint(){ this.easeType = LeanTweenType.easeInOutQuint; this.easeMethod = this.easeInOutQuint; return this; } + + public LTDescr setEaseInSine(){ this.easeType = LeanTweenType.easeInSine; this.easeMethod = this.easeInSine; return this; } + + public LTDescr setEaseOutSine(){ this.easeType = LeanTweenType.easeOutSine; this.easeMethod = this.easeOutSine; return this; } + + public LTDescr setEaseInOutSine(){ this.easeType = LeanTweenType.easeInOutSine; this.easeMethod = this.easeInOutSine; return this; } + + public LTDescr setEaseInExpo(){ this.easeType = LeanTweenType.easeInExpo; this.easeMethod = this.easeInExpo; return this; } + + public LTDescr setEaseOutExpo(){ this.easeType = LeanTweenType.easeOutExpo; this.easeMethod = this.easeOutExpo; return this; } + + public LTDescr setEaseInOutExpo(){ this.easeType = LeanTweenType.easeInOutExpo; this.easeMethod = this.easeInOutExpo; return this; } + + public LTDescr setEaseInCirc(){ this.easeType = LeanTweenType.easeInCirc; this.easeMethod = this.easeInCirc; return this; } + + public LTDescr setEaseOutCirc(){ this.easeType = LeanTweenType.easeOutCirc; this.easeMethod = this.easeOutCirc; return this; } + + public LTDescr setEaseInOutCirc(){ this.easeType = LeanTweenType.easeInOutCirc; this.easeMethod = this.easeInOutCirc; return this; } + + public LTDescr setEaseInBounce(){ this.easeType = LeanTweenType.easeInBounce; this.easeMethod = this.easeInBounce; return this; } + + public LTDescr setEaseOutBounce(){ this.easeType = LeanTweenType.easeOutBounce; this.easeMethod = this.easeOutBounce; return this; } + + public LTDescr setEaseInOutBounce(){ this.easeType = LeanTweenType.easeInOutBounce; this.easeMethod = this.easeInOutBounce; return this; } + + public LTDescr setEaseInBack(){ this.easeType = LeanTweenType.easeInBack; this.easeMethod = this.easeInBack; return this; } + + public LTDescr setEaseOutBack(){ this.easeType = LeanTweenType.easeOutBack; this.easeMethod = this.easeOutBack; return this; } + + public LTDescr setEaseInOutBack(){ this.easeType = LeanTweenType.easeInOutBack; this.easeMethod = this.easeInOutBack; return this; } + + public LTDescr setEaseInElastic(){ this.easeType = LeanTweenType.easeInElastic; this.easeMethod = this.easeInElastic; return this; } + + public LTDescr setEaseOutElastic(){ this.easeType = LeanTweenType.easeOutElastic; this.easeMethod = this.easeOutElastic; return this; } + + public LTDescr setEaseInOutElastic(){ this.easeType = LeanTweenType.easeInOutElastic; this.easeMethod = this.easeInOutElastic; return this; } + + public LTDescr setEasePunch(){ this._optional.animationCurve = LeanTween.punch; this.toInternal.x = this.from.x + this.to.x; this.easeMethod = this.tweenOnCurve; return this; } + + public LTDescr setEaseShake(){ this._optional.animationCurve = LeanTween.shake; this.toInternal.x = this.from.x + this.to.x; this.easeMethod = this.tweenOnCurve; return this; } + + private Vector3 tweenOnCurve(){ + return new Vector3(this.from.x + (this.diff.x) * this._optional.animationCurve.Evaluate(ratioPassed), + this.from.y + (this.diff.y) * this._optional.animationCurve.Evaluate(ratioPassed), + this.from.z + (this.diff.z) * this._optional.animationCurve.Evaluate(ratioPassed) ); + } + + // Vector3 Ease Methods + + private Vector3 easeInOutQuad(){ + val = this.ratioPassed * 2f; + + if (val < 1f) { + val = val * val; + return new Vector3( this.diffDiv2.x * val + this.from.x, this.diffDiv2.y * val + this.from.y, this.diffDiv2.z * val + this.from.z); + } + val = (1f-val) * (val - 3f) + 1f; + return new Vector3( this.diffDiv2.x * val + this.from.x, this.diffDiv2.y * val + this.from.y, this.diffDiv2.z * val + this.from.z); + } + + private Vector3 easeInQuad(){ + val = ratioPassed * ratioPassed; + return new Vector3(this.diff.x * val + this.from.x, this.diff.y * val + this.from.y, this.diff.z * val + this.from.z); + } + + private Vector3 easeOutQuad(){ + val = this.ratioPassed; + val = -val * (val - 2f); + return (this.diff * val + this.from); + } + + private Vector3 easeLinear(){ + val = this.ratioPassed; + return new Vector3(this.from.x+this.diff.x*val, this.from.y+this.diff.y*val, this.from.z+this.diff.z*val); + } + + private Vector3 easeSpring(){ + val = Mathf.Clamp01(this.ratioPassed); + val = (Mathf.Sin(val * Mathf.PI * (0.2f + 2.5f * val * val * val)) * Mathf.Pow(1f - val, 2.2f ) + val) * (1f + (1.2f * (1f - val) )); + return this.from + this.diff * val; + } + + private Vector3 easeInCubic(){ + val = this.ratioPassed * this.ratioPassed * this.ratioPassed; + return new Vector3(this.diff.x * val + this.from.x, this.diff.y * val + this.from.y, this.diff.z * val + this.from.z); + } + + private Vector3 easeOutCubic(){ + val = this.ratioPassed - 1f; + val = (val * val * val + 1); + return new Vector3( this.diff.x * val + this.from.x, this.diff.y * val + this.from.y, this.diff.z * val + this.from.z) ; + } + + private Vector3 easeInOutCubic(){ + val = this.ratioPassed * 2f; + if (val < 1f) { + val = val * val * val; + return new Vector3(this.diffDiv2.x * val + this.from.x, this.diffDiv2.y * val + this.from.y, this.diffDiv2.z * val + this.from.z); + } + val -= 2f; + val = val * val * val + 2f; + return new Vector3(this.diffDiv2.x * val + this.from.x, this.diffDiv2.y * val + this.from.y,this.diffDiv2.z * val + this.from.z); + } + + private Vector3 easeInQuart(){ + val = this.ratioPassed * this.ratioPassed * this.ratioPassed * this.ratioPassed; + return diff * val + this.from; + } + + private Vector3 easeOutQuart(){ + val = this.ratioPassed - 1f; + val = -(val * val * val * val - 1); + return new Vector3(this.diff.x * val + this.from.x, this.diff.y * val + this.from.y,this.diff.z * val + this.from.z); + } + + private Vector3 easeInOutQuart(){ + val = this.ratioPassed * 2f; + if (val < 1f) { + val = val * val * val * val; + return new Vector3(this.diffDiv2.x * val + this.from.x, this.diffDiv2.y * val + this.from.y, this.diffDiv2.z * val + this.from.z); + } + val -= 2f; +// val = (val * val * val * val - 2f); + return -this.diffDiv2 * (val * val * val * val - 2f) + this.from; + } + + private Vector3 easeInQuint(){ + val = this.ratioPassed; + val = val * val * val * val * val; + return new Vector3(this.diff.x * val + this.from.x, this.diff.y * val + this.from.y, this.diff.z * val + this.from.z); + } + + private Vector3 easeOutQuint(){ + val = this.ratioPassed - 1f; + val = (val * val * val * val * val + 1f); + return new Vector3(this.diff.x * val + this.from.x, this.diff.y * val + this.from.y, this.diff.z * val + this.from.z); + } + + private Vector3 easeInOutQuint(){ + val = this.ratioPassed * 2f; + if (val < 1f){ + val = val * val * val * val * val; + return new Vector3(this.diffDiv2.x * val + this.from.x,this.diffDiv2.y * val + this.from.y,this.diffDiv2.z * val + this.from.z); + } + val -= 2f; + val = (val * val * val * val * val + 2f); + return new Vector3(this.diffDiv2.x * val + this.from.x, this.diffDiv2.y * val + this.from.y, this.diffDiv2.z * val + this.from.z); + } + + private Vector3 easeInSine(){ + val = - Mathf.Cos(this.ratioPassed * LeanTween.PI_DIV2); + return new Vector3(this.diff.x * val + this.diff.x + this.from.x, this.diff.y * val + this.diff.y + this.from.y, this.diff.z * val + this.diff.z + this.from.z); + } + + private Vector3 easeOutSine(){ + val = Mathf.Sin(this.ratioPassed * LeanTween.PI_DIV2); + return new Vector3(this.diff.x * val + this.from.x, this.diff.y * val + this.from.y,this.diff.z * val + this.from.z); + } + + private Vector3 easeInOutSine(){ + val = -(Mathf.Cos(Mathf.PI * this.ratioPassed) - 1f); + return new Vector3(this.diffDiv2.x * val + this.from.x, this.diffDiv2.y * val + this.from.y, this.diffDiv2.z * val + this.from.z); + } + + private Vector3 easeInExpo(){ + val = Mathf.Pow(2f, 10f * (this.ratioPassed - 1f)); + return new Vector3(this.diff.x * val + this.from.x, this.diff.y * val + this.from.y, this.diff.z * val + this.from.z); + } + + private Vector3 easeOutExpo(){ + val = (-Mathf.Pow(2f, -10f * this.ratioPassed) + 1f); + return new Vector3(this.diff.x * val + this.from.x, this.diff.y * val + this.from.y, this.diff.z * val + this.from.z); + } + + private Vector3 easeInOutExpo(){ + val = this.ratioPassed * 2f; + if (val < 1) return this.diffDiv2 * Mathf.Pow(2, 10 * (val - 1)) + this.from; + val--; + return this.diffDiv2 * (-Mathf.Pow(2, -10 * val) + 2) + this.from; + } + + private Vector3 easeInCirc(){ + val = -(Mathf.Sqrt(1f - this.ratioPassed * this.ratioPassed) - 1f); + return new Vector3(this.diff.x * val + this.from.x, this.diff.y * val + this.from.y, this.diff.z * val + this.from.z); + } + + private Vector3 easeOutCirc(){ + val = this.ratioPassed - 1f; + val = Mathf.Sqrt(1f - val * val); + + return new Vector3(this.diff.x * val + this.from.x, this.diff.y * val + this.from.y, this.diff.z * val + this.from.z); + } + + private Vector3 easeInOutCirc(){ + val = this.ratioPassed * 2f; + if (val < 1f){ + val = -(Mathf.Sqrt(1f - val * val) - 1f); + return new Vector3(this.diffDiv2.x * val + this.from.x, this.diffDiv2.y * val + this.from.y, this.diffDiv2.z * val + this.from.z); + } + val -= 2f; + val = (Mathf.Sqrt(1f - val * val) + 1f); + return new Vector3(this.diffDiv2.x * val + this.from.x, this.diffDiv2.y * val + this.from.y, this.diffDiv2.z * val + this.from.z); + } + + private Vector3 easeInBounce(){ + val = this.ratioPassed; + val = 1f - val; + return new Vector3(this.diff.x - LeanTween.easeOutBounce(0, this.diff.x, val) + this.from.x, + this.diff.y - LeanTween.easeOutBounce(0, this.diff.y, val) + this.from.y, + this.diff.z - LeanTween.easeOutBounce(0, this.diff.z, val) + this.from.z); + } + + private Vector3 easeOutBounce () + { + val = ratioPassed; + float valM, valN; // bounce values + if (val < (valM = 1 - 1.75f * this.overshoot / 2.75f)) { + val = 1 / valM / valM * val * val; + } else if (val < (valN = 1 - .75f * this.overshoot / 2.75f)) { + val -= (valM + valN) / 2; + // first bounce, height: 1/4 + val = 7.5625f * val * val + 1 - .25f * this.overshoot * this.overshoot; + } else if (val < (valM = 1 - .25f * this.overshoot / 2.75f)) { + val -= (valM + valN) / 2; + // second bounce, height: 1/16 + val = 7.5625f * val * val + 1 - .0625f * this.overshoot * this.overshoot; + } else { // valN = 1 + val -= (valM + 1) / 2; + // third bounce, height: 1/64 + val = 7.5625f * val * val + 1 - .015625f * this.overshoot * this.overshoot; + } + return this.diff * val + this.from; + } + + private Vector3 easeInOutBounce(){ + val = this.ratioPassed * 2f; + if (val < 1f){ + return new Vector3(LeanTween.easeInBounce(0, this.diff.x, val) * 0.5f + this.from.x, + LeanTween.easeInBounce(0, this.diff.y, val) * 0.5f + this.from.y, + LeanTween.easeInBounce(0, this.diff.z, val) * 0.5f + this.from.z); + }else { + val = val - 1f; + return new Vector3(LeanTween.easeOutBounce(0, this.diff.x, val) * 0.5f + this.diffDiv2.x + this.from.x, + LeanTween.easeOutBounce(0, this.diff.y, val) * 0.5f + this.diffDiv2.y + this.from.y, + LeanTween.easeOutBounce(0, this.diff.z, val) * 0.5f + this.diffDiv2.z + this.from.z); + } + } + + private Vector3 easeInBack(){ + val = this.ratioPassed; + val /= 1; + float s = 1.70158f * this.overshoot; + return this.diff * (val) * val * ((s + 1) * val - s) + this.from; + } + + private Vector3 easeOutBack(){ + float s = 1.70158f * this.overshoot; + val = (this.ratioPassed / 1) - 1; + val = ((val) * val * ((s + 1) * val + s) + 1); + return this.diff * val + this.from; + } + + private Vector3 easeInOutBack(){ + float s = 1.70158f * this.overshoot; + val = this.ratioPassed * 2f; + if ((val) < 1){ + s *= (1.525f) * overshoot; + return this.diffDiv2 * (val * val * (((s) + 1) * val - s)) + this.from; + } + val -= 2; + s *= (1.525f) * overshoot; + val = ((val) * val * (((s) + 1) * val + s) + 2); + return this.diffDiv2 * val + this.from; + } + + private Vector3 easeInElastic(){ + return new Vector3(LeanTween.easeInElastic(this.from.x,this.to.x,this.ratioPassed,this.overshoot,this.period), + LeanTween.easeInElastic(this.from.y,this.to.y,this.ratioPassed,this.overshoot,this.period), + LeanTween.easeInElastic(this.from.z,this.to.z,this.ratioPassed,this.overshoot,this.period)); + } + + private Vector3 easeOutElastic(){ + return new Vector3(LeanTween.easeOutElastic(this.from.x,this.to.x,this.ratioPassed,this.overshoot,this.period), + LeanTween.easeOutElastic(this.from.y,this.to.y,this.ratioPassed,this.overshoot,this.period), + LeanTween.easeOutElastic(this.from.z,this.to.z,this.ratioPassed,this.overshoot,this.period)); + } + + private Vector3 easeInOutElastic() + { + return new Vector3(LeanTween.easeInOutElastic(this.from.x,this.to.x,this.ratioPassed,this.overshoot,this.period), + LeanTween.easeInOutElastic(this.from.y,this.to.y,this.ratioPassed,this.overshoot,this.period), + LeanTween.easeInOutElastic(this.from.z,this.to.z,this.ratioPassed,this.overshoot,this.period)); + } + + /** + * Set how far past a tween will overshoot for certain ease types (compatible: easeInBack, easeInOutBack, easeOutBack, easeOutElastic, easeInElastic, easeInOutElastic).
    + * @method setOvershoot + * @param {float} overshoot:float how far past the destination it will go before settling in + * @return {LTDescr} LTDescr an object that distinguishes the tween + * @example + * LeanTween.moveX(gameObject, 5f, 2.0f ).setEase( LeanTweenType.easeOutBack ).setOvershoot(2f); + */ + public LTDescr setOvershoot( float overshoot ){ + this.overshoot = overshoot; + return this; + } + + /** + * Set how short the iterations are for certain ease types (compatible: easeOutElastic, easeInElastic, easeInOutElastic).
    + * @method setPeriod + * @param {float} period:float how short the iterations are that the tween will animate at (default 0.3f) + * @return {LTDescr} LTDescr an object that distinguishes the tween + * @example + * LeanTween.moveX(gameObject, 5f, 2.0f ).setEase( LeanTweenType.easeOutElastic ).setPeriod(0.3f); + */ + public LTDescr setPeriod( float period ){ + this.period = period; + return this; + } + + /** + * Set how large the effect is for certain ease types (compatible: punch, shake, animation curves).
    + * @method setScale + * @param {float} scale:float how much the ease will be multiplied by (default 1f) + * @return {LTDescr} LTDescr an object that distinguishes the tween + * @example + * LeanTween.moveX(gameObject, 5f, 2.0f ).setEase( LeanTweenType.punch ).setScale(2f); + */ + public LTDescr setScale( float scale ){ + this.scale = scale; + return this; + } + + /** + * Set the type of easing used for the tween with a custom curve.
    + * @method setEase (AnimationCurve) + * @param {AnimationCurve} easeDefinition:AnimationCurve an AnimationCure that describes the type of easing you want, this is great for when you want a unique type of movement + * @return {LTDescr} LTDescr an object that distinguishes the tween + * @example + * LeanTween.moveX(gameObject, 5f, 2.0f ).setEase( LeanTweenType.easeInBounce ); + */ + public LTDescr setEase( AnimationCurve easeCurve ){ + this._optional.animationCurve = easeCurve; + this.easeMethod = this.tweenOnCurve; + this.easeType = LeanTweenType.animationCurve; + return this; + } + + /** + * Set the end that the GameObject is tweening towards + * @method setTo + * @param {Vector3} to:Vector3 point at which you want the tween to reach + * @return {LTDescr} LTDescr an object that distinguishes the tween + * @example + * LTDescr descr = LeanTween.move( cube, Vector3.up, new Vector3(1f,3f,0f), 1.0f ).setEase( LeanTweenType.easeInOutBounce );
    + * // Later your want to change your destination or your destiation is constantly moving
    + * descr.setTo( new Vector3(5f,10f,3f) );
    + */ + public LTDescr setTo( Vector3 to ){ + if(this.hasInitiliazed){ + this.to = to; + this.diff = to - this.from; + }else{ + this.to = to; + } + + return this; + } + + public LTDescr setTo( Transform to ){ + this._optional.toTrans = to; + return this; + } + + /** + * Set the beginning of the tween + * @method setFrom + * @param {Vector3} from:Vector3 the point you would like the tween to start at + * @return {LTDescr} LTDescr an object that distinguishes the tween + * @example + * LTDescr descr = LeanTween.move( cube, Vector3.up, new Vector3(1f,3f,0f), 1.0f ).setFrom( new Vector3(5f,10f,3f) );
    + */ + public LTDescr setFrom( Vector3 from ){ + if(this.trans){ + this.init(); + } + this.from = from; + // this.hasInitiliazed = true; // this is set, so that the "from" value isn't overwritten later on when the tween starts + this.diff = this.to - this.from; + this.diffDiv2 = this.diff * 0.5f; + return this; + } + + public LTDescr setFrom( float from ){ + return setFrom( new Vector3(from, 0f, 0f) ); + } + + public LTDescr setDiff( Vector3 diff ){ + this.diff = diff; + return this; + } + + public LTDescr setHasInitialized( bool has ){ + this.hasInitiliazed = has; + return this; + } + + public LTDescr setId( uint id, uint global_counter ){ + this._id = id; + this.counter = global_counter; + // Debug.Log("Global counter:"+global_counter); + return this; + } + + /** + * Set the point of time the tween will start in + * @method setPassed + * @param {float} passedTime:float the length of time in seconds the tween will start in + * @return {LTDescr} LTDescr an object that distinguishes the tween + * @example + * int tweenId = LeanTween.moveX(gameObject, 5f, 2.0f ).id;
    + * // Later
    + * LTDescr descr = description( tweenId );
    + * descr.setPassed( 1f );
    + */ + public LTDescr setPassed( float passed ){ + this.passed = passed; + return this; + } + + /** + * Set the finish time of the tween + * @method setTime + * @param {float} finishTime:float the length of time in seconds you wish the tween to complete in + * @return {LTDescr} LTDescr an object that distinguishes the tween + * @example + * int tweenId = LeanTween.moveX(gameObject, 5f, 2.0f ).id;
    + * // Later
    + * LTDescr descr = description( tweenId );
    + * descr.setTime( 1f );
    + */ + public LTDescr setTime( float time ){ + float passedTimeRatio = this.passed / this.time; + this.passed = time * passedTimeRatio; + this.time = time; + return this; + } + + /** + * Set the finish time of the tween + * @method setSpeed + * @param {float} speed:float the speed in unity units per second you wish the object to travel (overrides the given time) + * @return {LTDescr} LTDescr an object that distinguishes the tween + * @example + * LeanTween.moveLocalZ( gameObject, 10f, 1f).setSpeed(0.2f) // the given time is ignored when speed is set
    + */ + public LTDescr setSpeed( float speed ){ + this.speed = speed; + if(this.hasInitiliazed) + initSpeed(); + return this; + } + + /** + * Set the tween to repeat a number of times. + * @method setRepeat + * @param {int} repeatNum:int the number of times to repeat the tween. -1 to repeat infinite times + * @return {LTDescr} LTDescr an object that distinguishes the tween + * @example + * LeanTween.moveX(gameObject, 5f, 2.0f ).setRepeat( 10 ).setLoopPingPong(); + */ + public LTDescr setRepeat( int repeat ){ + this.loopCount = repeat; + if((repeat>1 && this.loopType == LeanTweenType.once) || (repeat < 0 && this.loopType == LeanTweenType.once)){ + this.loopType = LeanTweenType.clamp; + } + if(this.type==TweenAction.CALLBACK || this.type==TweenAction.CALLBACK_COLOR){ + this.setOnCompleteOnRepeat(true); + } + return this; + } + + public LTDescr setLoopType( LeanTweenType loopType ){ + this.loopType = loopType; + return this; + } + + public LTDescr setUseEstimatedTime( bool useEstimatedTime ){ + this.useEstimatedTime = useEstimatedTime; + this.usesNormalDt = false; + return this; + } + + /** + * Set ignore time scale when tweening an object when you want the animation to be time-scale independent (ignores the Time.timeScale value). Great for pause screens, when you want all other action to be stopped (or slowed down) + * @method setIgnoreTimeScale + * @param {bool} useUnScaledTime:bool whether to use the unscaled time or not + * @return {LTDescr} LTDescr an object that distinguishes the tween + * @example + * LeanTween.moveX(gameObject, 5f, 2.0f ).setRepeat( 2 ).setIgnoreTimeScale( true ); + */ + public LTDescr setIgnoreTimeScale( bool useUnScaledTime ){ + this.useEstimatedTime = useUnScaledTime; + this.usesNormalDt = false; + return this; + } + + /** + * Use frames when tweening an object, when you don't want the animation to be time-frame independent... + * @method setUseFrames + * @param {bool} useFrames:bool whether to use estimated time or not + * @return {LTDescr} LTDescr an object that distinguishes the tween + * @example + * LeanTween.moveX(gameObject, 5f, 2.0f ).setRepeat( 2 ).setUseFrames( true ); + */ + public LTDescr setUseFrames( bool useFrames ){ + this.useFrames = useFrames; + this.usesNormalDt = false; + return this; + } + + public LTDescr setUseManualTime( bool useManualTime ){ + this.useManualTime = useManualTime; + this.usesNormalDt = false; + return this; + } + + public LTDescr setLoopCount( int loopCount ){ + this.loopType = LeanTweenType.clamp; + this.loopCount = loopCount; + return this; + } + + /** + * No looping involved, just run once (the default) + * @method setLoopOnce + * @return {LTDescr} LTDescr an object that distinguishes the tween + * @example + * LeanTween.moveX(gameObject, 5f, 2.0f ).setLoopOnce(); + */ + public LTDescr setLoopOnce(){ this.loopType = LeanTweenType.once; return this; } + + /** + * When the animation gets to the end it starts back at where it began + * @method setLoopClamp + * @param {int} loops:int (defaults to -1) how many times you want the loop to happen (-1 for an infinite number of times) + * @return {LTDescr} LTDescr an object that distinguishes the tween + * @example + * LeanTween.moveX(gameObject, 5f, 2.0f ).setLoopClamp( 2 ); + */ + public LTDescr setLoopClamp(){ + this.loopType = LeanTweenType.clamp; + if(this.loopCount==0) + this.loopCount = -1; + return this; + } + public LTDescr setLoopClamp( int loops ){ + this.loopCount = loops; + return this; + } + + /** + * When the animation gets to the end it then tweens back to where it started (and on, and on) + * @method setLoopPingPong + * @param {int} loops:int (defaults to -1) how many times you want the loop to happen in both directions (-1 for an infinite number of times). Passing a value of 1 will cause the object to go towards and back from it's destination once. + * @return {LTDescr} LTDescr an object that distinguishes the tween + * @example + * LeanTween.moveX(gameObject, 5f, 2.0f ).setLoopPingPong( 2 ); + */ + public LTDescr setLoopPingPong(){ + this.loopType = LeanTweenType.pingPong; + if(this.loopCount==0) + this.loopCount = -1; + return this; + } + public LTDescr setLoopPingPong( int loops ) { + this.loopType = LeanTweenType.pingPong; + this.loopCount = loops == -1 ? loops : loops * 2; + return this; + } + + /** + * Have a method called when the tween finishes + * @method setOnComplete + * @param {Action} onComplete:Action the method that should be called when the tween is finished ex: tweenFinished(){ } + * @return {LTDescr} LTDescr an object that distinguishes the tween + * @example + * LeanTween.moveX(gameObject, 5f, 2.0f ).setOnComplete( tweenFinished ); + */ + public LTDescr setOnComplete( Action onComplete ){ + this._optional.onComplete = onComplete; + this.hasExtraOnCompletes = true; + return this; + } + + /** + * Have a method called when the tween finishes + * @method setOnComplete (object) + * @param {Action} onComplete:Action the method that should be called when the tween is finished ex: tweenFinished( object myObj ){ } + * @return {LTDescr} LTDescr an object that distinguishes the tween + * @example + * object tweenFinishedObj = "hi" as object; + * LeanTween.moveX(gameObject, 5f, 2.0f ).setOnComplete( tweenFinished, tweenFinishedObj ); + */ + public LTDescr setOnComplete( Action onComplete ){ + this._optional.onCompleteObject = onComplete; + this.hasExtraOnCompletes = true; + return this; + } + public LTDescr setOnComplete( Action onComplete, object onCompleteParam ){ + this._optional.onCompleteObject = onComplete; + this.hasExtraOnCompletes = true; + if(onCompleteParam!=null) + this._optional.onCompleteParam = onCompleteParam; + return this; + } + + /** + * Pass an object to along with the onComplete Function + * @method setOnCompleteParam + * @param {object} onComplete:object an object that + * @return {LTDescr} LTDescr an object that distinguishes the tween + * @example + * LeanTween.delayedCall(1.5f, enterMiniGameStart).setOnCompleteParam( new object[]{""+5} );

    + * void enterMiniGameStart( object val ){
    + *  object[] arr = (object [])val;
    + *  int lvl = int.Parse((string)arr[0]);
    + * }
    + */ + public LTDescr setOnCompleteParam( object onCompleteParam ){ + this._optional.onCompleteParam = onCompleteParam; + this.hasExtraOnCompletes = true; + return this; + } + + + /** + * Have a method called on each frame that the tween is being animated (passes a float value) + * @method setOnUpdate + * @param {Action} onUpdate:Action a method that will be called on every frame with the float value of the tweened object + * @return {LTDescr} LTDescr an object that distinguishes the tween + * @example + * LeanTween.moveX(gameObject, 5f, 2.0f ).setOnUpdate( tweenMoved );
    + *
    + * void tweenMoved( float val ){ }
    + */ + public LTDescr setOnUpdate( Action onUpdate ){ + this._optional.onUpdateFloat = onUpdate; + this.hasUpdateCallback = true; + return this; + } + public LTDescr setOnUpdateRatio(Action onUpdate) + { + this._optional.onUpdateFloatRatio = onUpdate; + this.hasUpdateCallback = true; + return this; + } + + public LTDescr setOnUpdateObject( Action onUpdate ){ + this._optional.onUpdateFloatObject = onUpdate; + this.hasUpdateCallback = true; + return this; + } + public LTDescr setOnUpdateVector2( Action onUpdate ){ + this._optional.onUpdateVector2 = onUpdate; + this.hasUpdateCallback = true; + return this; + } + public LTDescr setOnUpdateVector3( Action onUpdate ){ + this._optional.onUpdateVector3 = onUpdate; + this.hasUpdateCallback = true; + return this; + } + public LTDescr setOnUpdateColor( Action onUpdate ){ + this._optional.onUpdateColor = onUpdate; + this.hasUpdateCallback = true; + return this; + } + public LTDescr setOnUpdateColor( Action onUpdate ){ + this._optional.onUpdateColorObject = onUpdate; + this.hasUpdateCallback = true; + return this; + } + + #if !UNITY_FLASH + + public LTDescr setOnUpdate( Action onUpdate ){ + this._optional.onUpdateColor = onUpdate; + this.hasUpdateCallback = true; + return this; + } + + public LTDescr setOnUpdate( Action onUpdate ){ + this._optional.onUpdateColorObject = onUpdate; + this.hasUpdateCallback = true; + return this; + } + + /** + * Have a method called on each frame that the tween is being animated (passes a float value and a object) + * @method setOnUpdate (object) + * @param {Action} onUpdate:Action a method that will be called on every frame with the float value of the tweened object, and an object of the person's choosing + * @return {LTDescr} LTDescr an object that distinguishes the tween + * @example + * LeanTween.moveX(gameObject, 5f, 2.0f ).setOnUpdate( tweenMoved ).setOnUpdateParam( myObject );
    + *
    + * void tweenMoved( float val, object obj ){ }
    + */ + public LTDescr setOnUpdate( Action onUpdate, object onUpdateParam = null ){ + this._optional.onUpdateFloatObject = onUpdate; + this.hasUpdateCallback = true; + if(onUpdateParam!=null) + this._optional.onUpdateParam = onUpdateParam; + return this; + } + + public LTDescr setOnUpdate( Action onUpdate, object onUpdateParam = null ){ + this._optional.onUpdateVector3Object = onUpdate; + this.hasUpdateCallback = true; + if(onUpdateParam!=null) + this._optional.onUpdateParam = onUpdateParam; + return this; + } + + public LTDescr setOnUpdate( Action onUpdate, object onUpdateParam = null ){ + this._optional.onUpdateVector2 = onUpdate; + this.hasUpdateCallback = true; + if(onUpdateParam!=null) + this._optional.onUpdateParam = onUpdateParam; + return this; + } + + /** + * Have a method called on each frame that the tween is being animated (passes a float value) + * @method setOnUpdate (Vector3) + * @param {Action} onUpdate:Action a method that will be called on every frame with the float value of the tweened object + * @return {LTDescr} LTDescr an object that distinguishes the tween + * @example + * LeanTween.moveX(gameObject, 5f, 2.0f ).setOnUpdate( tweenMoved );
    + *
    + * void tweenMoved( Vector3 val ){ }
    + */ + public LTDescr setOnUpdate( Action onUpdate, object onUpdateParam = null ){ + this._optional.onUpdateVector3 = onUpdate; + this.hasUpdateCallback = true; + if(onUpdateParam!=null) + this._optional.onUpdateParam = onUpdateParam; + return this; + } + #endif + + + /** + * Have an object passed along with the onUpdate method + * @method setOnUpdateParam + * @param {object} onUpdateParam:object an object that will be passed along with the onUpdate method + * @return {LTDescr} LTDescr an object that distinguishes the tween + * @example + * LeanTween.moveX(gameObject, 5f, 2.0f ).setOnUpdate( tweenMoved ).setOnUpdateParam( myObject );
    + *
    + * void tweenMoved( float val, object obj ){ }
    + */ + public LTDescr setOnUpdateParam( object onUpdateParam ){ + this._optional.onUpdateParam = onUpdateParam; + return this; + } + + /** + * While tweening along a curve, set this property to true, to be perpendicalur to the path it is moving upon + * @method setOrientToPath + * @param {bool} doesOrient:bool whether the gameobject will orient to the path it is animating along + * @return {LTDescr} LTDescr an object that distinguishes the tween + * @example + * LeanTween.move( ltLogo, path, 1.0f ).setEase(LeanTweenType.easeOutQuad).setOrientToPath(true).setAxis(Vector3.forward);
    + */ + public LTDescr setOrientToPath( bool doesOrient ){ + if(this.type==TweenAction.MOVE_CURVED || this.type==TweenAction.MOVE_CURVED_LOCAL){ + if(this._optional.path==null) + this._optional.path = new LTBezierPath(); + this._optional.path.orientToPath = doesOrient; + }else{ + this._optional.spline.orientToPath = doesOrient; + } + return this; + } + + /** + * While tweening along a curve, set this property to true, to be perpendicalur to the path it is moving upon + * @method setOrientToPath2d + * @param {bool} doesOrient:bool whether the gameobject will orient to the path it is animating along + * @return {LTDescr} LTDescr an object that distinguishes the tween + * @example + * LeanTween.move( ltLogo, path, 1.0f ).setEase(LeanTweenType.easeOutQuad).setOrientToPath2d(true).setAxis(Vector3.forward);
    + */ + public LTDescr setOrientToPath2d( bool doesOrient2d ){ + setOrientToPath(doesOrient2d); + if(this.type==TweenAction.MOVE_CURVED || this.type==TweenAction.MOVE_CURVED_LOCAL){ + this._optional.path.orientToPath2d = doesOrient2d; + }else{ + this._optional.spline.orientToPath2d = doesOrient2d; + } + return this; + } + + public LTDescr setRect( LTRect rect ){ + this._optional.ltRect = rect; + return this; + } + + public LTDescr setRect( Rect rect ){ + this._optional.ltRect = new LTRect(rect); + return this; + } + + public LTDescr setPath( LTBezierPath path ){ + this._optional.path = path; + return this; + } + + /** + * Set the point at which the GameObject will be rotated around + * @method setPoint + * @param {Vector3} point:Vector3 point at which you want the object to rotate around (local space) + * @return {LTDescr} LTDescr an object that distinguishes the tween + * @example + * LeanTween.rotateAround( cube, Vector3.up, 360.0f, 1.0f ) .setPoint( new Vector3(1f,0f,0f) ) .setEase( LeanTweenType.easeInOutBounce );
    + */ + public LTDescr setPoint( Vector3 point ){ + this._optional.point = point; + return this; + } + + public LTDescr setDestroyOnComplete( bool doesDestroy ){ + this.destroyOnComplete = doesDestroy; + return this; + } + + public LTDescr setAudio( object audio ){ + this._optional.onCompleteParam = audio; + return this; + } + + /** + * Set the onComplete method to be called at the end of every loop cycle (also applies to the delayedCall method) + * @method setOnCompleteOnRepeat + * @param {bool} isOn:bool does call onComplete on every loop cycle + * @return {LTDescr} LTDescr an object that distinguishes the tween + * @example + * LeanTween.delayedCall(gameObject,0.3f, delayedMethod).setRepeat(4).setOnCompleteOnRepeat(true); + */ + public LTDescr setOnCompleteOnRepeat( bool isOn ){ + this.onCompleteOnRepeat = isOn; + return this; + } + + /** + * Set the onComplete method to be called at the beginning of the tween (it will still be called when it is completed as well) + * @method setOnCompleteOnStart + * @param {bool} isOn:bool does call onComplete at the start of the tween + * @return {LTDescr} LTDescr an object that distinguishes the tween + * @example + * LeanTween.delayedCall(gameObject, 2f, ()=>{
    // Flash an object 5 times + *  LeanTween.alpha(gameObject, 0f, 1f);
    + *  LeanTween.alpha(gameObject, 1f, 0f).setDelay(1f);
    + * }).setOnCompleteOnStart(true).setRepeat(5);
    + */ + public LTDescr setOnCompleteOnStart( bool isOn ){ + this.onCompleteOnStart = isOn; + return this; + } + + #if !UNITY_3_5 && !UNITY_4_0 && !UNITY_4_0_1 && !UNITY_4_1 && !UNITY_4_2 && !UNITY_4_3 && !UNITY_4_5 + public LTDescr setRect( RectTransform rect ){ + this.rectTransform = rect; + return this; + } + + public LTDescr setSprites( UnityEngine.Sprite[] sprites ){ + this.sprites = sprites; + return this; + } + + public LTDescr setFrameRate( float frameRate ){ + this.time = this.sprites.Length / frameRate; + return this; + } + #endif + + /** + * Have a method called when the tween starts + * @method setOnStart + * @param {Action<>} onStart:Action<> the method that should be called when the tween is starting ex: tweenStarted( ){ } + * @return {LTDescr} LTDescr an object that distinguishes the tween + * @example + * C#:
    + * LeanTween.moveX(gameObject, 5f, 2.0f ).setOnStart( ()=>{ Debug.Log("I started!"); }); + * Javascript:
    + * LeanTween.moveX(gameObject, 5f, 2.0f ).setOnStart( function(){ Debug.Log("I started!"); } ); + */ + public LTDescr setOnStart( Action onStart ){ + this._optional.onStart = onStart; + return this; + } + + /** + * Set the direction of a tween -1f for backwards 1f for forwards (currently only bezier and spline paths are supported) + * @method setDirection + * @param {float} direction:float the direction that the tween should run, -1f for backwards 1f for forwards + * @return {LTDescr} LTDescr an object that distinguishes the tween + * @example + * LeanTween.moveSpline(gameObject, new Vector3[]{new Vector3(0f,0f,0f),new Vector3(1f,0f,0f),new Vector3(1f,0f,0f),new Vector3(1f,0f,1f)}, 1.5f).setDirection(-1f);
    + */ + + public LTDescr setDirection( float direction ){ + if(this.direction!=-1f && this.direction!=1f){ + Debug.LogWarning("You have passed an incorrect direction of '"+direction+"', direction must be -1f or 1f"); + return this; + } + + if(this.direction!=direction){ + // Debug.Log("reverse path:"+this.path+" spline:"+this._optional.spline+" hasInitiliazed:"+this.hasInitiliazed); + if(this.hasInitiliazed){ + this.direction = direction; + }else{ + if(this._optional.path!=null){ + this._optional.path = new LTBezierPath( LTUtility.reverse( this._optional.path.pts ) ); + }else if(this._optional.spline!=null){ + this._optional.spline = new LTSpline( LTUtility.reverse( this._optional.spline.pts ) ); + } + // this.passed = this.time - this.passed; + } + } + + return this; + } + + /** + * Set whether or not the tween will recursively effect an objects children in the hierarchy + * @method setRecursive + * @param {bool} useRecursion:bool whether the tween will recursively effect an objects children in the hierarchy + * @return {LTDescr} LTDescr an object that distinguishes the tween + * @example + * LeanTween.alpha(gameObject, 0f, 1f).setRecursive(true);
    + */ + + public LTDescr setRecursive( bool useRecursion ){ + this.useRecursion = useRecursion; + + return this; + } +} + +//} diff --git a/Assets/LeanTween/Framework/LTDescr.cs.meta b/Assets/LeanTween/Framework/LTDescr.cs.meta new file mode 100644 index 0000000..e47c628 --- /dev/null +++ b/Assets/LeanTween/Framework/LTDescr.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 381c8d6fb1acdc348870a7147bc98723 +timeCreated: 1463137984 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/LeanTween/Framework/LTDescrOptional.cs b/Assets/LeanTween/Framework/LTDescrOptional.cs new file mode 100644 index 0000000..15dd129 --- /dev/null +++ b/Assets/LeanTween/Framework/LTDescrOptional.cs @@ -0,0 +1,89 @@ +//namespace DentedPixel{ +using UnityEngine; +using System; +using System.Collections; +using System.Collections.Generic; + +public class LTDescrOptional { + + public Transform toTrans { get; set; } + public Vector3 point { get; set; } + public Vector3 axis { get; set; } + public float lastVal{ get; set; } + public Quaternion origRotation { get; set; } + public LTBezierPath path { get; set; } + public LTSpline spline { get; set; } + public AnimationCurve animationCurve; + public int initFrameCount; + public Color color; + + public LTRect ltRect { get; set; } // maybe get rid of this eventually + + public Action onUpdateFloat { get; set; } + public Action onUpdateFloatRatio { get; set; } + public Action onUpdateFloatObject { get; set; } + public Action onUpdateVector2 { get; set; } + public Action onUpdateVector3 { get; set; } + public Action onUpdateVector3Object { get; set; } + public Action onUpdateColor { get; set; } + public Action onUpdateColorObject { get; set; } + public Action onComplete { get; set; } + public Action onCompleteObject { get; set; } + public object onCompleteParam { get; set; } + public object onUpdateParam { get; set; } + public Action onStart { get; set; } + + +// #if !UNITY_3_5 && !UNITY_4_0 && !UNITY_4_0_1 && !UNITY_4_1 && !UNITY_4_2 +// public SpriteRenderer spriteRen { get; set; } +// #endif +// +// #if LEANTWEEN_1 +// public Hashtable optional; +// #endif +// #if !UNITY_3_5 && !UNITY_4_0 && !UNITY_4_0_1 && !UNITY_4_1 && !UNITY_4_2 && !UNITY_4_3 && !UNITY_4_5 +// public RectTransform rectTransform; +// public UnityEngine.UI.Text uiText; +// public UnityEngine.UI.Image uiImage; +// public UnityEngine.Sprite[] sprites; +// #endif + + + public void reset(){ + animationCurve = null; + + this.onUpdateFloat = null; + this.onUpdateFloatRatio = null; + this.onUpdateVector2 = null; + this.onUpdateVector3 = null; + this.onUpdateFloatObject = null; + this.onUpdateVector3Object = null; + this.onUpdateColor = null; + this.onComplete = null; + this.onCompleteObject = null; + this.onCompleteParam = null; + this.onStart = null; + + this.point = Vector3.zero; + this.initFrameCount = 0; + } + + public void callOnUpdate( float val, float ratioPassed){ + if(this.onUpdateFloat!=null) + this.onUpdateFloat(val); + + if (this.onUpdateFloatRatio != null){ + this.onUpdateFloatRatio(val,ratioPassed); + }else if(this.onUpdateFloatObject!=null){ + this.onUpdateFloatObject(val, this.onUpdateParam); + }else if(this.onUpdateVector3Object!=null){ + this.onUpdateVector3Object(LTDescr.newVect, this.onUpdateParam); + }else if(this.onUpdateVector3!=null){ + this.onUpdateVector3(LTDescr.newVect); + }else if(this.onUpdateVector2!=null){ + this.onUpdateVector2(new Vector2(LTDescr.newVect.x,LTDescr.newVect.y)); + } + } +} + +//} diff --git a/Assets/LeanTween/Framework/LTDescrOptional.cs.meta b/Assets/LeanTween/Framework/LTDescrOptional.cs.meta new file mode 100644 index 0000000..8b83a30 --- /dev/null +++ b/Assets/LeanTween/Framework/LTDescrOptional.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: c1ba8f1ef97134cb39b52ae26678db63 +timeCreated: 1471504769 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/LeanTween/Framework/LTSeq.cs b/Assets/LeanTween/Framework/LTSeq.cs new file mode 100644 index 0000000..2794d85 --- /dev/null +++ b/Assets/LeanTween/Framework/LTSeq.cs @@ -0,0 +1,225 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +/** +* Internal Representation of a Sequence
    +*
    +*   

    Example:

    +* var seq = LeanTween.sequence();
    +* seq.append(1f); // delay everything one second
    +* seq.append( () => { // fire an event before start
    +*  Debug.Log("I have started");
    +* });
    +* seq.append( LeanTween.move(cube1, Vector3.one * 10f, 1f) ); // do a tween
    +* seq.append( (object obj) => { // fire event after tween
    +*  var dict = obj as Dictionary;
    +*  Debug.Log("We are done now obj value:"+dict["hi"]);
    +* }, new Dictionary(){ {"hi","sup"} } );
    +* @class LTSeq +* @constructor +*/ +public class LTSeq { + + public LTSeq previous; + + public LTSeq current; + + public LTDescr tween; + + public float totalDelay; + + public float timeScale; + + private int debugIter; + + public uint counter; + + public bool toggle = false; + + private uint _id; + + public int id{ + get{ + uint toId = _id | counter << 16; + + /*uint backId = toId & 0xFFFF; + uint backCounter = toId >> 16; + if(_id!=backId || backCounter!=counter){ + Debug.LogError("BAD CONVERSION toId:"+_id); + }*/ + + return (int)toId; + } + } + + public void reset(){ + previous = null; + tween = null; + totalDelay = 0f; + } + + public void init(uint id, uint global_counter){ + reset(); + _id = id; + + counter = global_counter; + + this.current = this; + } + + private LTSeq addOn(){ + this.current.toggle = true; + LTSeq lastCurrent = this.current; + this.current = LeanTween.sequence(true); + // Debug.Log("this.current:" + this.current.id + " lastCurrent:" + lastCurrent.id); + this.current.previous = lastCurrent; + lastCurrent.toggle = false; + this.current.totalDelay = lastCurrent.totalDelay; + this.current.debugIter = lastCurrent.debugIter + 1; + return current; + } + + private float addPreviousDelays(){ +// Debug.Log("delay:"+delay+" count:"+this.current.count+" this.current.totalDelay:"+this.current.totalDelay); + + LTSeq prev = this.current.previous; + + if (prev != null && prev.tween!=null) { + return this.current.totalDelay + prev.tween.time; + } + return this.current.totalDelay; + } + + /** + * Add a time delay to the sequence + * @method append (delay) + * @param {float} delay:float amount of time to add to the sequence + * @return {LTSeq} LTDescr an object that distinguishes the tween + * var seq = LeanTween.sequence();
    + * seq.append(1f); // delay everything one second
    + * seq.append( LeanTween.move(cube1, Vector3.one * 10f, 1f) ); // do a tween
    + */ + public LTSeq append( float delay ){ + this.current.totalDelay += delay; + + return this.current; + } + + /** + * Add a time delay to the sequence + * @method append (method) + * @param {System.Action} callback:System.Action method you want to be called + * @return {LTSeq} LTSeq an object that you can add tweens, methods and time on to + * @example + * var seq = LeanTween.sequence();
    + * seq.append( () => { // fire an event before start
    + *  Debug.Log("I have started");
    + * });
    + * seq.append( LeanTween.move(cube1, Vector3.one * 10f, 1f) ); // do a tween
    + * seq.append( () => { // fire event after tween
    + *  Debug.Log("We are done now");
    + * });;
    + */ + public LTSeq append( System.Action callback ){ + LTDescr newTween = LeanTween.delayedCall(0f, callback); +// Debug.Log("newTween:" + newTween); + return append(newTween); + } + + /** + * Add a time delay to the sequence + * @method add (method(object)) + * @param {System.Action} callback:System.Action method you want to be called + * @return {LTSeq} LTSeq an object that you can add tweens, methods and time on to + * @example + * var seq = LeanTween.sequence();
    + * seq.append( () => { // fire an event before start
    + *  Debug.Log("I have started");
    + * });
    + * seq.append( LeanTween.move(cube1, Vector3.one * 10f, 1f) ); // do a tween
    + * seq.append((object obj) => { // fire event after tween + *  var dict = obj as Dictionary; + *  Debug.Log("We are done now obj value:"+dict["hi"]); + *  }, new Dictionary(){ {"hi","sup"} } ); + */ + public LTSeq append( System.Action callback, object obj ){ + append(LeanTween.delayedCall(0f, callback).setOnCompleteParam(obj)); + + return addOn(); + } + + public LTSeq append( GameObject gameObject, System.Action callback ){ + append(LeanTween.delayedCall(gameObject, 0f, callback)); + + return addOn(); + } + + public LTSeq append( GameObject gameObject, System.Action callback, object obj ){ + append(LeanTween.delayedCall(gameObject, 0f, callback).setOnCompleteParam(obj)); + + return addOn(); + } + + /** + * Retrieve a sequencer object where you can easily chain together tweens and methods one after another + * + * @method add (tween) + * @return {LTSeq} LTSeq an object that you can add tweens, methods and time on to + * @example + * var seq = LeanTween.sequence();
    + * seq.append( LeanTween.move(cube1, Vector3.one * 10f, 1f) ); // do a move tween
    + * seq.append( LeanTween.rotateAround( avatar1, Vector3.forward, 360f, 1f ) ); // then do a rotate tween
    + */ + public LTSeq append( LTDescr tween ){ + this.current.tween = tween; + +// Debug.Log("tween:" + tween + " delay:" + this.current.totalDelay); + + this.current.totalDelay = addPreviousDelays(); + + tween.setDelay( this.current.totalDelay ); + + return addOn(); + } + + public LTSeq insert( LTDescr tween ){ + this.current.tween = tween; + + tween.setDelay( addPreviousDelays() ); + + return addOn(); + } + + + public LTSeq setScale( float timeScale ){ +// Debug.Log("this.current:" + this.current.previous.debugIter+" tween:"+this.current.previous.tween); + setScaleRecursive(this.current, timeScale, 500); + + return addOn(); + } + + private void setScaleRecursive( LTSeq seq, float timeScale, int count ){ + if (count > 0) { + this.timeScale = timeScale; + +// Debug.Log("seq.count:" + count + " seq.tween:" + seq.tween); + seq.totalDelay *= timeScale; + if (seq.tween != null) { +// Debug.Log("seq.tween.time * timeScale:" + seq.tween.time * timeScale + " seq.totalDelay:"+seq.totalDelay +" time:"+seq.tween.time+" seq.tween.delay:"+seq.tween.delay); + if (seq.tween.time != 0f) + seq.tween.setTime(seq.tween.time * timeScale); + seq.tween.setDelay(seq.tween.delay * timeScale); + } + + if (seq.previous != null) + setScaleRecursive(seq.previous, timeScale, count - 1); + } + } + + public LTSeq reverse(){ + + return addOn(); + } + +} diff --git a/Assets/LeanTween/Framework/LTSeq.cs.meta b/Assets/LeanTween/Framework/LTSeq.cs.meta new file mode 100644 index 0000000..c9b68c4 --- /dev/null +++ b/Assets/LeanTween/Framework/LTSeq.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 6c88dbe4cdd9944f198e9796ee394c86 +timeCreated: 1488665079 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/LeanTween/Framework/LeanAudio.cs b/Assets/LeanTween/Framework/LeanAudio.cs new file mode 100644 index 0000000..b7d1939 --- /dev/null +++ b/Assets/LeanTween/Framework/LeanAudio.cs @@ -0,0 +1,418 @@ + +using UnityEngine; +using System.Collections.Generic; + +public class LeanAudioStream { + + public int position = 0; + + public AudioClip audioClip; + public float[] audioArr; + + public LeanAudioStream( float[] audioArr ){ + this.audioArr = audioArr; + } + + public void OnAudioRead(float[] data) { + int count = 0; + while (count < data.Length) { + data[count] = audioArr[this.position]; + position++; + count++; + } + } + + public void OnAudioSetPosition(int newPosition) { + this.position = newPosition; + } +} + +/** +* Create Audio dynamically and easily playback +* +* @class LeanAudio +* @constructor +*/ +public class LeanAudio : object { + + public static float MIN_FREQEUNCY_PERIOD = 0.000115f; + public static int PROCESSING_ITERATIONS_MAX = 50000; + public static float[] generatedWaveDistances; + public static int generatedWaveDistancesCount = 0; + + private static float[] longList; + + public static LeanAudioOptions options(){ + if(generatedWaveDistances==null){ + generatedWaveDistances = new float[ PROCESSING_ITERATIONS_MAX ]; + longList = new float[ PROCESSING_ITERATIONS_MAX ]; + } + return new LeanAudioOptions(); + } + + public static LeanAudioStream createAudioStream( AnimationCurve volume, AnimationCurve frequency, LeanAudioOptions options = null ){ + if(options==null) + options = new LeanAudioOptions(); + + options.useSetData = false; + + int generatedWavePtsLength = createAudioWave( volume, frequency, options); + createAudioFromWave( generatedWavePtsLength, options ); + + return options.stream; + } + + /** + * Create dynamic audio from a set of Animation Curves and other options. + * + * @method createAudio + * @param {AnimationCurve} volumeCurve:AnimationCurve describing the shape of the audios volume (from 0-1). The length of the audio is dicated by the end value here. + * @param {AnimationCurve} frequencyCurve:AnimationCurve describing the width of the oscillations between the sound waves in seconds. Large numbers mean a lower note, while higher numbers mean a tighter frequency and therefor a higher note. Values are usually between 0.01 and 0.000001 (or smaller) + * @param {LeanAudioOptions} options:LeanAudioOptions You can pass any other values in here like vibrato or the frequency you would like the sound to be encoded at. See LeanAudioOptions for more details. + * @return {AudioClip} AudioClip of the procedurally generated audio + * @example + * AnimationCurve volumeCurve = new AnimationCurve( new Keyframe(0f, 1f, 0f, -1f), new Keyframe(1f, 0f, -1f, 0f));
    + * AnimationCurve frequencyCurve = new AnimationCurve( new Keyframe(0f, 0.003f, 0f, 0f), new Keyframe(1f, 0.003f, 0f, 0f));
    + * AudioClip audioClip = LeanAudio.createAudio(volumeCurve, frequencyCurve, LeanAudio.options().setVibrato( new Vector3[]{ new Vector3(0.32f,0f,0f)} ));
    + */ + public static AudioClip createAudio( AnimationCurve volume, AnimationCurve frequency, LeanAudioOptions options = null ){ + if(options==null) + options = new LeanAudioOptions(); + + int generatedWavePtsLength = createAudioWave( volume, frequency, options); + // Debug.Log("generatedWavePtsLength:"+generatedWavePtsLength); + return createAudioFromWave( generatedWavePtsLength, options ); + } + + private static int createAudioWave( AnimationCurve volume, AnimationCurve frequency, LeanAudioOptions options ){ + float time = volume[ volume.length - 1 ].time; + int listLength = 0; + // List list = new List(); + + // generatedWaveDistances = new List(); + // float[] vibratoValues = new float[ vibrato.Length ]; + float passed = 0f; + for(int i = 0; i < PROCESSING_ITERATIONS_MAX; i++){ + float f = frequency.Evaluate(passed); + if(f=time) + break; + if(listLength >= PROCESSING_ITERATIONS_MAX-1){ + Debug.LogError("LeanAudio has reached it's processing cap. To avoid this error increase the number of iterations ex: LeanAudio.PROCESSING_ITERATIONS_MAX = "+(PROCESSING_ITERATIONS_MAX*2)); + break; + }else{ + int distPoint = listLength / 2; + + //generatedWaveDistances.Add( f ); + passed += f; + + generatedWaveDistances[ distPoint ] = passed; + //Debug.Log("distPoint:"+distPoint+" passed:"+passed); + + //list.Add( passed ); + //list.Add( i%2==0 ? -height : height ); + + longList[ listLength ] = passed; + longList[ listLength + 1 ] = i%2==0 ? -height : height; + } + + + + listLength += 2; + + } + + listLength += -2; + generatedWaveDistancesCount = listLength / 2; + + /*float[] wave = new float[ listLength ]; + for(int i = 0; i < wave.Length; i++){ + wave[i] = longList[i]; + }*/ + return listLength; + } + + private static AudioClip createAudioFromWave( int waveLength, LeanAudioOptions options ){ + float time = longList[ waveLength - 2 ]; + float[] audioArr = new float[ (int)(options.frequencyRate*time) ]; + + int waveIter = 0; + float subWaveDiff = longList[waveIter]; + float subWaveTimeLast = 0f; + float subWaveTime = longList[waveIter]; + float waveHeight = longList[waveIter+1]; + for(int i = 0; i < audioArr.Length; i++){ + float passedTime = (float)i / (float)options.frequencyRate; + if(passedTime > longList[waveIter] ){ + subWaveTimeLast = longList[waveIter]; + waveIter += 2; + subWaveDiff = longList[waveIter] - longList[waveIter-2]; + waveHeight = longList[waveIter+1]; + // Debug.Log("passed wave i:"+i); + } + subWaveTime = passedTime - subWaveTimeLast; + float ratioElapsed = subWaveTime / subWaveDiff; + + float value = Mathf.Sin( ratioElapsed * Mathf.PI ); + + if(options.waveStyle==LeanAudioOptions.LeanAudioWaveStyle.Square){ + if(value>0f) + value = 1f; + if(value<0f) + value = -1f; + }else if(options.waveStyle==LeanAudioOptions.LeanAudioWaveStyle.Sawtooth){ + float sign = value > 0f ? 1f : -1f; + if(ratioElapsed<0.5f){ + value = (ratioElapsed*2f)*sign; + }else{ // 0.5f - 1f + value = (1f - ratioElapsed)*2f*sign; + } + }else if(options.waveStyle==LeanAudioOptions.LeanAudioWaveStyle.Noise){ + float peakMulti = (1f-options.waveNoiseInfluence) + Mathf.PerlinNoise(0f, passedTime * options.waveNoiseScale ) * options.waveNoiseInfluence; + + /*if(i<25){ + Debug.Log("passedTime:"+passedTime+" peakMulti:"+peakMulti+" infl:"+options.waveNoiseInfluence); + }*/ + + value *= peakMulti; + } + + //if(i<25) + // Debug.Log("passedTime:"+passedTime+" value:"+value+" ratioElapsed:"+ratioElapsed+" subWaveTime:"+subWaveTime+" subWaveDiff:"+subWaveDiff); + + value *= waveHeight; + + + if(options.modulation!=null){ + for(int k=0; k(); // add an audio source + aSource.clip = clip; // define the clip + aSource.Play(); // start the sound + GameObject.Destroy(tempGO, clip.length); // destroy object after clip duration + return aSource; // return the AudioSource reference + } + + public static void printOutAudioClip( AudioClip audioClip, ref AnimationCurve curve, float scaleX = 1f ){ + // Debug.Log("Audio channels:"+audioClip.channels+" frequency:"+audioClip.frequency+" length:"+audioClip.length+" samples:"+audioClip.samples); + float[] samples = new float[audioClip.samples * audioClip.channels]; + audioClip.GetData(samples, 0); + int i = 0; + + Keyframe[] frames = new Keyframe[samples.Length]; + while (i < samples.Length) { + frames[i] = new Keyframe( (float)i * scaleX, samples[i] ); + ++i; + } + curve = new AnimationCurve( frames ); + } +} + + +/** +* Pass in options to LeanAudio +* +* @class LeanAudioOptions +* @constructor +*/ +public class LeanAudioOptions : object { + + public enum LeanAudioWaveStyle{ + Sine, + Square, + Sawtooth, + Noise + } + + public LeanAudioWaveStyle waveStyle = LeanAudioWaveStyle.Sine; + public Vector3[] vibrato; + public Vector3[] modulation; + public int frequencyRate = 44100; + public float waveNoiseScale = 1000; + public float waveNoiseInfluence = 1f; + + public bool useSetData = true; + public LeanAudioStream stream; + + public LeanAudioOptions(){} + + /** + * Set the frequency for the audio is encoded. 44100 is CD quality, but you can usually get away with much lower (or use a lower amount to get a more 8-bit sound). + * + * @method setFrequency + * @param {int} frequencyRate:int of the frequency you wish to encode the AudioClip at + * @return {LeanAudioOptions} LeanAudioOptions describing optional values + * @example + * AnimationCurve volumeCurve = new AnimationCurve( new Keyframe(0f, 1f, 0f, -1f), new Keyframe(1f, 0f, -1f, 0f));
    + * AnimationCurve frequencyCurve = new AnimationCurve( new Keyframe(0f, 0.003f, 0f, 0f), new Keyframe(1f, 0.003f, 0f, 0f));
    + * AudioClip audioClip = LeanAudio.createAudio(volumeCurve, frequencyCurve, LeanAudio.options().setVibrato( new Vector3[]{ new Vector3(0.32f,0f,0f)} ).setFrequency(12100) );
    + */ + public LeanAudioOptions setFrequency( int frequencyRate ){ + this.frequencyRate = frequencyRate; + return this; + } + + /** + * Set details about the shape of the curve by adding vibrato modulations through it (alters the peak values giving it a wah-wah effect). You can add as many as you want to sculpt out more detail in the sound wave. + * + * @method setVibrato + * @param {Vector3[]} vibratoArray:Vector3[] The first value is the period in seconds that you wish to have the vibrato wave fluctuate at. The second value is the minimum height you wish the vibrato wave to dip down to (default is zero). The third is reserved for future effects. + * @return {LeanAudioOptions} LeanAudioOptions describing optional values + * @example + * AnimationCurve volumeCurve = new AnimationCurve( new Keyframe(0f, 1f, 0f, -1f), new Keyframe(1f, 0f, -1f, 0f));
    + * AnimationCurve frequencyCurve = new AnimationCurve( new Keyframe(0f, 0.003f, 0f, 0f), new Keyframe(1f, 0.003f, 0f, 0f));
    + * AudioClip audioClip = LeanAudio.createAudio(volumeCurve, frequencyCurve, LeanAudio.options().setVibrato( new Vector3[]{ new Vector3(0.32f,0.3f,0f)} ).setFrequency(12100) );
    + */ + public LeanAudioOptions setVibrato( Vector3[] vibrato ){ + this.vibrato = vibrato; + return this; + } + + /* + public LeanAudioOptions setModulation( Vector3[] modulation ){ + this.modulation = modulation; + return this; + }*/ + + public LeanAudioOptions setWaveSine(){ + this.waveStyle = LeanAudioWaveStyle.Sine; + return this; + } + + public LeanAudioOptions setWaveSquare(){ + this.waveStyle = LeanAudioWaveStyle.Square; + return this; + } + + public LeanAudioOptions setWaveSawtooth(){ + this.waveStyle = LeanAudioWaveStyle.Sawtooth; + return this; + } + + public LeanAudioOptions setWaveNoise(){ + this.waveStyle = LeanAudioWaveStyle.Noise; + return this; + } + + public LeanAudioOptions setWaveStyle( LeanAudioWaveStyle style ){ + this.waveStyle = style; + return this; + } + + + public LeanAudioOptions setWaveNoiseScale( float waveScale ){ + this.waveNoiseScale = waveScale; + return this; + } + + public LeanAudioOptions setWaveNoiseInfluence( float influence ){ + this.waveNoiseInfluence = influence; + return this; + } +} + + diff --git a/Assets/LeanTween/Framework/LeanAudio.cs.meta b/Assets/LeanTween/Framework/LeanAudio.cs.meta new file mode 100644 index 0000000..cd86baf --- /dev/null +++ b/Assets/LeanTween/Framework/LeanAudio.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 52e41e970d9353942b27458440bec9eb +timeCreated: 1427917971 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/LeanTween/Framework/LeanSmooth.cs b/Assets/LeanTween/Framework/LeanSmooth.cs new file mode 100644 index 0000000..7af4847 --- /dev/null +++ b/Assets/LeanTween/Framework/LeanSmooth.cs @@ -0,0 +1,364 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +/** +* Use these smooth methods to move one value towards another

    +* Example:
    fromY = LeanSmooth.spring(fromY, followArrow.localPosition.y, ref velocityY, 1.1f);
    +* fromVec3 = LeanSmooth.damp(fromVec3, dude5Title.localPosition, ref velocityVec3, 1.1f);
    +* fromColor = LeanSmooth.damp(fromColor, dude5Title.GetComponent().material.color, ref velocityColor, 1.1f);
    +* Debug.Log("Smoothed y:" + fromY + " vec3:" + fromVec3 + " color:" + fromColor);
    +* +* @class LeanSmooth +*/ + +public class LeanSmooth { + + + /** + * Moves one value towards another (eases in and out to destination with no overshoot) + * + * @method LeanSmooth.damp (float) + * @param {float} current:float the current value + * @param {float} target:float the value we are trying to reach + * @param {float} currentVelocity:float the current velocity of the value + * @param {float} smoothTime:float roughly the time it takes to reach the destination + * @param {float} maxSpeed:float the top speed you want the value to move at (defaults to unlimited -1f) + * @param {float} deltaTime:float the difference in time since the method was called (defaults to Time.deltaTime) + * @example + * followVar = LeanSmooth.damp(followVar, destinationVar, ref followVelocity, 1.1f);\n + * Debug.Log("current:"+followVar); + */ + public static float damp(float current, float target, ref float currentVelocity, float smoothTime, float maxSpeed = -1f, float deltaTime = -1f) + { + if (deltaTime < 0f) + deltaTime = Time.deltaTime; + + smoothTime = Mathf.Max(0.0001f, smoothTime); + float num = 2f / smoothTime; + float num2 = num * deltaTime; + float num3 = 1f / (1f + num2 + 0.48f * num2 * num2 + 0.235f * num2 * num2 * num2); + float num4 = current - target; + float num5 = target; + if (maxSpeed > 0f) + { + float num6 = maxSpeed * smoothTime; + num4 = Mathf.Clamp(num4, -num6, num6); + } + target = current - num4; + float num7 = (currentVelocity + num * num4) * deltaTime; + currentVelocity = (currentVelocity - num * num7) * num3; + float num8 = target + (num4 + num7) * num3; + if (num5 - current > 0f == num8 > num5) + { + num8 = num5; + currentVelocity = (num8 - num5) / deltaTime; + } + return num8; + } + + /** + * Moves one value towards another (eases in and out to destination with no overshoot) + * + * @method LeanSmooth.damp (Vector3) + * @param {float} current:Vector3 the current value + * @param {float} target:Vector3 the value we are trying to reach + * @param {float} currentVelocity:Vector3 the current velocity of the value + * @param {float} smoothTime:float roughly the time it takes to reach the destination + * @param {float} maxSpeed:float the top speed you want the value to move at (defaults to unlimited -1f) + * @param {float} deltaTime:float the difference in time since the method was called (defaults to Time.deltaTime) + * @example + * transform.position = LeanSmooth.damp(transform.position, destTrans.position, ref followVelocity, 1.1f);\n + * Debug.Log("current:"+transform.position); + */ + public static Vector3 damp(Vector3 current, Vector3 target, ref Vector3 currentVelocity, float smoothTime, float maxSpeed = -1f, float deltaTime = -1f) + { + float x = damp(current.x, target.x, ref currentVelocity.x, smoothTime, maxSpeed, deltaTime); + float y = damp(current.y, target.y, ref currentVelocity.y, smoothTime, maxSpeed, deltaTime); + float z = damp(current.z, target.z, ref currentVelocity.z, smoothTime, maxSpeed, deltaTime); + + return new Vector3(x, y, z); + } + + /** + * Moves one color value towards another color (eases in and out to destination with no overshoot) + * + * @method LeanSmooth.damp (Color) + * @param {float} current:Color the current value + * @param {float} target:Color the value we are trying to reach + * @param {float} currentVelocity:Color the current velocity of the value + * @param {float} smoothTime:float roughly the time it takes to reach the destination + * @param {float} maxSpeed:float the top speed you want the value to move at (defaults to unlimited -1f) + * @param {float} deltaTime:float the difference in time since the method was called (defaults to Time.deltaTime) + * @example + * fromColor = LeanSmooth.damp(fromColor, transform.GetComponent().material.color, ref velocityColor, 1.1f);\n + * Debug.Log("current:"+fromColor); + */ + public static Color damp(Color current, Color target, ref Color currentVelocity, float smoothTime, float maxSpeed = -1f, float deltaTime = -1f) + { + float r = damp(current.r, target.r, ref currentVelocity.r, smoothTime, maxSpeed, deltaTime); + float g = damp(current.g, target.g, ref currentVelocity.g, smoothTime, maxSpeed, deltaTime); + float b = damp(current.b, target.b, ref currentVelocity.b, smoothTime, maxSpeed, deltaTime); + float a = damp(current.a, target.a, ref currentVelocity.a, smoothTime, maxSpeed, deltaTime); + + return new Color(r, g, b, a); + } + + /** + * Moves one value towards another (eases in and out to destination with possible overshoot bounciness) + * + * @method LeanSmooth.spring (float) + * @param {float} current:float the current value + * @param {float} target:float the value we are trying to reach + * @param {float} currentVelocity:float the current velocity of the value + * @param {float} smoothTime:float roughly the time it takes to reach the destination + * @param {float} maxSpeed:float the top speed you want the value to move at (defaults to unlimited -1f) + * @param {float} deltaTime:float the difference in time since the method was called (defaults to Time.deltaTime) + * @param {float} [friction]:float rate at which the spring is slowed down once it reaches it's destination + * @param {float} [accelRate]:float the rate it accelerates from it's initial position + * @example + * followVar = LeanSmooth.spring(followVar, destinationVar, ref followVelocity, 1.1f);\n + * Debug.Log("current:"+followVar); + */ + public static float spring(float current, float target, ref float currentVelocity, float smoothTime, float maxSpeed = -1f, float deltaTime = -1f, float friction = 2f, float accelRate = 0.5f) + { + if (deltaTime < 0f) + deltaTime = Time.deltaTime; + + float diff = target - current; + + currentVelocity += deltaTime / smoothTime * accelRate * diff; + + currentVelocity *= (1f - deltaTime * friction); + + if (maxSpeed > 0f && maxSpeed < Mathf.Abs(currentVelocity)) + currentVelocity = maxSpeed * Mathf.Sign(currentVelocity); + + float returned = current + currentVelocity; + + return returned; + } + + /** + * Moves one value towards another (eases in and out to destination with possible overshoot bounciness) + * + * @method LeanSmooth.spring (Vector3) + * @param {Vector3} current:float the current value + * @param {Vector3} target:float the value we are trying to reach + * @param {Vector3} currentVelocity:float the current velocity of the value + * @param {float} smoothTime:float roughly the time it takes to reach the destination + * @param {float} maxSpeed:float the top speed you want the value to move at (defaults to unlimited -1f) + * @param {float} deltaTime:float the difference in time since the method was called (defaults to Time.deltaTime) + * @param {float} [friction]:float rate at which the spring is slowed down once it reaches it's destination + * @param {float} [accelRate]:float the rate it accelerates from it's initial position + * @example + * transform.position = LeanSmooth.spring(transform.position, destTrans.position, ref followVelocity, 1.1f);\n + * Debug.Log("current:"+transform.position); + */ + public static Vector3 spring(Vector3 current, Vector3 target, ref Vector3 currentVelocity, float smoothTime, float maxSpeed = -1f, float deltaTime = -1f, float friction = 2f, float accelRate = 0.5f) + { + float x = spring(current.x, target.x, ref currentVelocity.x, smoothTime, maxSpeed, deltaTime, friction, accelRate); + float y = spring(current.y, target.y, ref currentVelocity.y, smoothTime, maxSpeed, deltaTime, friction, accelRate); + float z = spring(current.z, target.z, ref currentVelocity.z, smoothTime, maxSpeed, deltaTime, friction, accelRate); + + return new Vector3(x, y, z); + } + + /** + * Moves one color towards another (eases in and out to destination with possible overshoot bounciness) + * + * @method LeanSmooth.spring (Color) + * @param {Color} current:float the current value + * @param {Color} target:float the value we are trying to reach + * @param {Color} currentVelocity:float the current velocity of the value + * @param {float} smoothTime:float roughly the time it takes to reach the destination + * @param {float} maxSpeed:float the top speed you want the value to move at (defaults to unlimited -1f) + * @param {float} deltaTime:float the difference in time since the method was called (defaults to Time.deltaTime) + * @param {float} [friction]:float rate at which the spring is slowed down once it reaches it's destination + * @param {float} [accelRate]:float the rate it accelerates from it's initial position + * @example + * fromColor = LeanSmooth.spring(fromColor, transform.GetComponent().material.color, ref velocityColor, 1.1f);\n + * Debug.Log("current:"+fromColor); + */ + public static Color spring(Color current, Color target, ref Color currentVelocity, float smoothTime, float maxSpeed = -1f, float deltaTime = -1f, float friction = 2f, float accelRate = 0.5f) + { + float r = spring(current.r, target.r, ref currentVelocity.r, smoothTime, maxSpeed, deltaTime, friction, accelRate); + float g = spring(current.g, target.g, ref currentVelocity.g, smoothTime, maxSpeed, deltaTime, friction, accelRate); + float b = spring(current.b, target.b, ref currentVelocity.b, smoothTime, maxSpeed, deltaTime, friction, accelRate); + float a = spring(current.a, target.a, ref currentVelocity.a, smoothTime, maxSpeed, deltaTime, friction, accelRate); + + return new Color(r, g, b, a); + } + + /** + * Moves one value towards another (at a constant speed) + * + * @method LeanSmooth.linear (float) + * @param {float} current:float the current value + * @param {float} target:float the value we are trying to reach + * @param {float} moveSpeed:float the speed at which to move towards the target + * @param {float} deltaTime:float the difference in time since the method was called (defaults to Time.deltaTime) + * @example + * followVar = LeanSmooth.linear(followVar, destinationVar, 50f);\n + * Debug.Log("current:"+followVar); + */ + public static float linear(float current, float target, float moveSpeed, float deltaTime = -1f) + { + if (deltaTime < 0f) + deltaTime = Time.deltaTime; + + bool targetGreater = (target > current); + + float currentVelocity = deltaTime * moveSpeed * (targetGreater ? 1f : -1f); + + float returned = current + currentVelocity; + + float returnPassed = returned - target; + if ((targetGreater && returnPassed > 0) || !targetGreater && returnPassed < 0) + { // Has passed point, return target + return target; + } + + return returned; + } + + /** + * Moves one value towards another (at a constant speed) + * + * @method LeanSmooth.linear (Vector3) + * @param {Vector3} current:float the current value + * @param {Vector3} target:float the value we are trying to reach + * @param {float} moveSpeed:float the speed at which to move towards the target + * @param {float} deltaTime:float the difference in time since the method was called (defaults to Time.deltaTime) + * @example + * transform.position = LeanSmooth.linear(transform.position, followTrans.position, 50f);\n + * Debug.Log("current:"+transform.position); + */ + public static Vector3 linear(Vector3 current, Vector3 target, float moveSpeed, float deltaTime = -1f) + { + float x = linear(current.x, target.x, moveSpeed, deltaTime); + float y = linear(current.y, target.y, moveSpeed, deltaTime); + float z = linear(current.z, target.z, moveSpeed, deltaTime); + + return new Vector3(x, y, z); + } + + /** + * Moves one color towards another (at a constant speed) + * + * @method LeanSmooth.linear (Color) + * @param {Color} current:float the current value + * @param {Color} target:float the value we are trying to reach + * @param {float} moveSpeed:float the speed at which to move towards the target + * @param {float} deltaTime:float the difference in time since the method was called (defaults to Time.deltaTime) + * @example + * fromColor = LeanSmooth.linear(fromColor, transform.GetComponent().material.color, 50f);\n + * Debug.Log("current:"+fromColor); + */ + public static Color linear(Color current, Color target, float moveSpeed) + { + float r = linear(current.r, target.r, moveSpeed); + float g = linear(current.g, target.g, moveSpeed); + float b = linear(current.b, target.b, moveSpeed); + float a = linear(current.a, target.a, moveSpeed); + + return new Color(r, g, b, a); + } + + /** + * Moves one value towards another (with an ease that bounces back some when it reaches it's destination) + * + * @method LeanSmooth.bounceOut (float) + * @param {float} current:float the current value + * @param {float} target:float the value we are trying to reach + * @param {float} currentVelocity:float the current velocity of the value + * @param {float} smoothTime:float roughly the time it takes to reach the destination + * @param {float} maxSpeed:float the top speed you want the value to move at (defaults to unlimited -1f) + * @param {float} deltaTime:float the difference in time since the method was called (defaults to Time.deltaTime) + * @param {float} [friction]:float rate at which the spring is slowed down once it reaches it's destination + * @param {float} [accelRate]:float the rate it accelerates from it's initial position + * @param {float} [hitDamping]:float the rate at which to dampen the bounciness of when it reaches it's destination + * @example + * followVar = LeanSmooth.bounceOut(followVar, destinationVar, ref followVelocity, 1.1f);\n + * Debug.Log("current:"+followVar); + */ + public static float bounceOut(float current, float target, ref float currentVelocity, float smoothTime, float maxSpeed = -1f, float deltaTime = -1f, float friction = 2f, float accelRate = 0.5f, float hitDamping = 0.9f) + { + if (deltaTime < 0f) + deltaTime = Time.deltaTime; + + float diff = target - current; + + currentVelocity += deltaTime / smoothTime * accelRate * diff; + + currentVelocity *= (1f - deltaTime * friction); + + if (maxSpeed > 0f && maxSpeed < Mathf.Abs(currentVelocity)) + currentVelocity = maxSpeed * Mathf.Sign(currentVelocity); + + float returned = current + currentVelocity; + + bool targetGreater = (target > current); + float returnPassed = returned - target; + if ((targetGreater && returnPassed > 0) || !targetGreater && returnPassed < 0) + { // Start a bounce + currentVelocity = -currentVelocity * hitDamping; + returned = current + currentVelocity; + } + + return returned; + } + + /** + * Moves one value towards another (with an ease that bounces back some when it reaches it's destination) + * + * @method LeanSmooth.bounceOut (Vector3) + * @param {Vector3} current:float the current value + * @param {Vector3} target:float the value we are trying to reach + * @param {Vector3} currentVelocity:float the current velocity of the value + * @param {float} smoothTime:float roughly the time it takes to reach the destination + * @param {float} maxSpeed:float the top speed you want the value to move at (defaults to unlimited -1f) + * @param {float} deltaTime:float the difference in time since the method was called (defaults to Time.deltaTime) + * @param {float} [friction]:float rate at which the spring is slowed down once it reaches it's destination + * @param {float} [accelRate]:float the rate it accelerates from it's initial position + * @param {float} [hitDamping]:float the rate at which to dampen the bounciness of when it reaches it's destination + * @example + * transform.position = LeanSmooth.bounceOut(transform.position, followTrans.position, ref followVelocity, 1.1f);\n + * Debug.Log("current:"+transform.position); + */ + public static Vector3 bounceOut(Vector3 current, Vector3 target, ref Vector3 currentVelocity, float smoothTime, float maxSpeed = -1f, float deltaTime = -1f, float friction = 2f, float accelRate = 0.5f, float hitDamping = 0.9f) + { + float x = bounceOut(current.x, target.x, ref currentVelocity.x, smoothTime, maxSpeed, deltaTime, friction, accelRate, hitDamping); + float y = bounceOut(current.y, target.y, ref currentVelocity.y, smoothTime, maxSpeed, deltaTime, friction, accelRate, hitDamping); + float z = bounceOut(current.z, target.z, ref currentVelocity.z, smoothTime, maxSpeed, deltaTime, friction, accelRate, hitDamping); + + return new Vector3(x, y, z); + } + + /** + * Moves one color towards another (with an ease that bounces back some when it reaches it's destination) + * + * @method LeanSmooth.bounceOut (Color) + * @param {Color} current:float the current value + * @param {Color} target:float the value we are trying to reach + * @param {Color} currentVelocity:float the current velocity of the value + * @param {float} smoothTime:float roughly the time it takes to reach the destination + * @param {float} maxSpeed:float the top speed you want the value to move at (defaults to unlimited -1f) + * @param {float} deltaTime:float the difference in time since the method was called (defaults to Time.deltaTime) + * @param {float} [friction]:float rate at which the spring is slowed down once it reaches it's destination + * @param {float} [accelRate]:float the rate it accelerates from it's initial position + * @param {float} [hitDamping]:float the rate at which to dampen the bounciness of when it reaches it's destination + * @example + * fromColor = LeanSmooth.bounceOut(fromColor, transform.GetComponent().material.color, ref followVelocity, 1.1f);\n + * Debug.Log("current:" + fromColor); + */ + public static Color bounceOut(Color current, Color target, ref Color currentVelocity, float smoothTime, float maxSpeed = -1f, float deltaTime = -1f, float friction = 2f, float accelRate = 0.5f, float hitDamping = 0.9f) + { + float r = bounceOut(current.r, target.r, ref currentVelocity.r, smoothTime, maxSpeed, deltaTime, friction, accelRate, hitDamping); + float g = bounceOut(current.g, target.g, ref currentVelocity.g, smoothTime, maxSpeed, deltaTime, friction, accelRate, hitDamping); + float b = bounceOut(current.b, target.b, ref currentVelocity.b, smoothTime, maxSpeed, deltaTime, friction, accelRate, hitDamping); + float a = bounceOut(current.a, target.a, ref currentVelocity.a, smoothTime, maxSpeed, deltaTime, friction, accelRate, hitDamping); + + return new Color(r, g, b, a); + } +} diff --git a/Assets/LeanTween/Framework/LeanSmooth.cs.meta b/Assets/LeanTween/Framework/LeanSmooth.cs.meta new file mode 100644 index 0000000..4494902 --- /dev/null +++ b/Assets/LeanTween/Framework/LeanSmooth.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1ca0f285af8dd4270bd759978223faad +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/LeanTween/Framework/LeanTest.cs b/Assets/LeanTween/Framework/LeanTest.cs new file mode 100644 index 0000000..8289622 --- /dev/null +++ b/Assets/LeanTween/Framework/LeanTest.cs @@ -0,0 +1,123 @@ +using UnityEngine; +using System.Collections; + +public class LeanTester : MonoBehaviour { + public float timeout = 15f; + + #if !UNITY_3_5 && !UNITY_4_0 && !UNITY_4_0_1 && !UNITY_4_1 && !UNITY_4_2 && !UNITY_4_3 && !UNITY_4_5 + public void Start(){ + StartCoroutine( timeoutCheck() ); + } + + IEnumerator timeoutCheck(){ + float pauseEndTime = Time.realtimeSinceStartup + timeout; + while (Time.realtimeSinceStartup < pauseEndTime) + { + yield return 0; + } + if(LeanTest.testsFinished==false){ + Debug.Log(LeanTest.formatB("Tests timed out!")); + LeanTest.overview(); + } + } + #endif +} + +public class LeanTest : object { + public static int expected = 0; + private static int tests = 0; + private static int passes = 0; + + public static float timeout = 15f; + public static bool timeoutStarted = false; + public static bool testsFinished = false; + + public static void debug( string name, bool didPass, string failExplaination = null){ + expect( didPass, name, failExplaination); + } + + public static void expect( bool didPass, string definition, string failExplaination = null){ + float len = printOutLength(definition); + int paddingLen = 40-(int)(len*1.05f); + #if UNITY_FLASH + string padding = padRight(paddingLen); + #else + string padding = "".PadRight(paddingLen,"_"[0]); + #endif + string logName = formatB(definition) +" " + padding + " [ "+ (didPass ? formatC("pass","green") : formatC("fail","red")) +" ]"; + if(didPass==false && failExplaination!=null) + logName += " - " + failExplaination; + Debug.Log(logName); + if(didPass) + passes++; + tests++; + + // Debug.Log("tests:"+tests+" expected:"+expected); + if(tests==expected && testsFinished==false){ + overview(); + }else if(tests>expected){ + Debug.Log(formatB("Too many tests for a final report!") + " set LeanTest.expected = "+tests); + } + + if(timeoutStarted==false){ + timeoutStarted = true; + GameObject tester = new GameObject(); + tester.name = "~LeanTest"; + LeanTester test = tester.AddComponent(typeof(LeanTester)) as LeanTester; + test.timeout = timeout; + #if !UNITY_EDITOR + tester.hideFlags = HideFlags.HideAndDontSave; + #endif + } + } + + public static string padRight(int len){ + string str = ""; + for(int i = 0; i < len; i++){ + str += "_"; + } + return str; + } + + public static float printOutLength( string str ){ + float len = 0.0f; + for(int i = 0; i < str.Length; i++){ + if(str[i]=="I"[0]){ + len += 0.5f; + }else if(str[i]=="J"[0]){ + len += 0.85f; + }else{ + len += 1.0f; + } + } + return len; + } + + public static string formatBC( string str, string color ){ + return formatC(formatB(str),color); + } + + public static string formatB( string str ){ + #if UNITY_3_5 || UNITY_4_0 || UNITY_4_0_1 || UNITY_4_1 || UNITY_4_2 + return str; + #else + return ""+ str + ""; + #endif + } + + public static string formatC( string str, string color ){ + #if UNITY_3_5 || UNITY_4_0 || UNITY_4_0_1 || UNITY_4_1 || UNITY_4_2 + return str; + #else + return ""+ str + ""; + #endif + } + + public static void overview(){ + testsFinished = true; + int failedCnt = (expected-passes); + string failedStr = failedCnt > 0 ? formatBC(""+failedCnt,"red") : ""+failedCnt; + Debug.Log(formatB("Final Report:")+" _____________________ PASSED: "+formatBC(""+passes,"green")+" FAILED: "+failedStr+" "); + } +} + \ No newline at end of file diff --git a/Assets/LeanTween/Framework/LeanTest.cs.meta b/Assets/LeanTween/Framework/LeanTest.cs.meta new file mode 100644 index 0000000..0af8aa2 --- /dev/null +++ b/Assets/LeanTween/Framework/LeanTest.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 82464f26ca2ba284a8f92f51248c574a +timeCreated: 1427917971 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/LeanTween/Framework/LeanTween.cs b/Assets/LeanTween/Framework/LeanTween.cs new file mode 100644 index 0000000..6ddf9d3 --- /dev/null +++ b/Assets/LeanTween/Framework/LeanTween.cs @@ -0,0 +1,4090 @@ +//namespace DentedPixel{ + +// LeanTween version 2.50 - http://dentedpixel.com/developer-diary/ +// +// The MIT License (MIT) +// +// Copyright (c) 2017 Russell Savage - Dented Pixel +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + + + +/* +TERMS OF USE - EASING EQUATIONS# +Open source under the BSD License. +Copyright (c)2001 Robert Penner +All rights reserved. +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: +Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. +Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. +Neither the name of the author nor the names of contributors may be used to endorse or promote products derived from this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +/** +* Pass this to the "ease" parameter, to get a different easing behavior

    +* Example:
    LeanTween.rotateX(gameObject, 270.0f, 1.5f).setEase(LeanTweenType.easeInBack); +* +* @class LeanTweenType +*/ + +/** +* @property {integer} linear +*/ +/** +* @property {integer} easeOutQuad +*/ +/** +* @property {integer} easeInQuad +*/ +/** +* @property {integer} easeInOutQuad +*/ +/** +* @property {integer} easeInCubic +*/ +/** +* @property {integer} easeOutCubic +*/ +/** +* @property {integer} easeInOutCubic +*/ +/** +* @property {integer} easeInQuart +*/ +/** +* @property {integer} easeOutQuart +*/ +/** +* @property {integer} easeInOutQuart +*/ +/** +* @property {integer} easeInQuint +*/ +/** +* @property {integer} easeOutQuint +*/ +/** +* @property {integer} easeInOutQuint +*/ +/** +* @property {integer} easeInSine +*/ +/** +* @property {integer} easeOutSine +*/ +/** +* @property {integer} easeInOutSine +*/ +/** +* @property {integer} easeInExpo +*/ +/** +* @property {integer} easeOutExpo +*/ +/** +* @property {integer} easeInOutExpo +*/ +/** +* @property {integer} easeInCirc +*/ +/** +* @property {integer} easeOutCirc +*/ +/** +* @property {integer} easeInOutCirc +*/ +/** +* @property {integer} easeInBounce +*/ +/** +* @property {integer} easeOutBounce +*/ +/** +* @property {integer} easeInOutBounce +*/ +/** +* @property {integer} easeInBack +*/ +/** +* @property {integer} easeOutBack +*/ +/** +* @property {integer} easeInOutBack +*/ +/** +* @property {integer} easeInElastic +*/ +/** +* @property {integer} easeOutElastic +*/ +/** +* @property {integer} easeInOutElastic +*/ +/** +* @property {integer} punch +*/ +using UnityEngine; +using System; +using System.Collections.Generic; + +public enum TweenAction{ + MOVE_X, + MOVE_Y, + MOVE_Z, + MOVE_LOCAL_X, + MOVE_LOCAL_Y, + MOVE_LOCAL_Z, + MOVE_CURVED, + MOVE_CURVED_LOCAL, + MOVE_SPLINE, + MOVE_SPLINE_LOCAL, + SCALE_X, + SCALE_Y, + SCALE_Z, + ROTATE_X, + ROTATE_Y, + ROTATE_Z, + ROTATE_AROUND, + ROTATE_AROUND_LOCAL, + CANVAS_ROTATEAROUND, + CANVAS_ROTATEAROUND_LOCAL, + CANVAS_PLAYSPRITE, + ALPHA, + TEXT_ALPHA, + CANVAS_ALPHA, + CANVASGROUP_ALPHA, + ALPHA_VERTEX, + COLOR, + CALLBACK_COLOR, + TEXT_COLOR, + CANVAS_COLOR, + CANVAS_MOVE_X, + CANVAS_MOVE_Y, + CANVAS_MOVE_Z, + CALLBACK, + MOVE, + MOVE_LOCAL, + MOVE_TO_TRANSFORM, + ROTATE, + ROTATE_LOCAL, + SCALE, + VALUE3, + GUI_MOVE, + GUI_MOVE_MARGIN, + GUI_SCALE, + GUI_ALPHA, + GUI_ROTATE, + DELAYED_SOUND, + CANVAS_MOVE, + CANVAS_SCALE, + CANVAS_SIZEDELTA, + FOLLOW, + +} + +public enum LeanTweenType{ + notUsed, linear, easeOutQuad, easeInQuad, easeInOutQuad, easeInCubic, easeOutCubic, easeInOutCubic, easeInQuart, easeOutQuart, easeInOutQuart, + easeInQuint, easeOutQuint, easeInOutQuint, easeInSine, easeOutSine, easeInOutSine, easeInExpo, easeOutExpo, easeInOutExpo, easeInCirc, easeOutCirc, easeInOutCirc, + easeInBounce, easeOutBounce, easeInOutBounce, easeInBack, easeOutBack, easeInOutBack, easeInElastic, easeOutElastic, easeInOutElastic, easeSpring, easeShake, punch, once, clamp, pingPong, animationCurve +} + +public enum LeanProp +{ + position, + localPosition, + x, + y, + z, + localX, + localY, + localZ, + scale, + color +} + +/** +* LeanTween is an efficient tweening engine for Unity3d

    +* Index of All Methods | Optional Paramaters that can be passed

    +* Optional Parameters are passed at the end of every method
    +*
    +* Example:
    +* LeanTween.moveX( gameObject, 1f, 1f).setEase( LeanTweenType.easeInQuad ).setDelay(1f);
    +*
    +* You can pass the optional parameters in any order, and chain on as many as you wish!

    +* You can also modify this tween later, just save the unique id of the tween.
    +*

    Example:

    +* int id = LeanTween.moveX(gameObject, 1f, 1f).id;
    +* LTDescr d = LeanTween.descr( id );

    +* if(d!=null){ // if the tween has already finished it will return null
    +*    // change some parameters
    +*    d.setOnComplete( onCompleteFunc ).setEase( LeanTweenType.easeInOutBack );
    +* } +* +* @class LeanTween +*/ + +public class LeanTween : MonoBehaviour { + + public static bool throwErrors = true; + public static float tau = Mathf.PI*2.0f; + public static float PI_DIV2 = Mathf.PI / 2.0f; + + private static LTSeq[] sequences; + + private static LTDescr[] tweens; + private static int[] tweensFinished; + private static int[] tweensFinishedIds; + private static LTDescr tween; + private static int tweenMaxSearch = -1; + private static int maxTweens = 400; + private static int maxSequences = 400; + private static int frameRendered= -1; + private static GameObject _tweenEmpty; + public static float dtEstimated = -1f; + public static float dtManual; + #if UNITY_3_5 || UNITY_4_0 || UNITY_4_0_1 || UNITY_4_1 || UNITY_4_2 || UNITY_4_3 || UNITY_4_5 + private static float previousRealTime; + #endif + public static float dtActual; + private static uint global_counter = 0; + private static int i; + private static int j; + private static int finishedCnt; + public static AnimationCurve punch = new AnimationCurve( new Keyframe(0.0f, 0.0f ), new Keyframe(0.112586f, 0.9976035f ), new Keyframe(0.3120486f, -0.1720615f ), new Keyframe(0.4316337f, 0.07030682f ), new Keyframe(0.5524869f, -0.03141804f ), new Keyframe(0.6549395f, 0.003909959f ), new Keyframe(0.770987f, -0.009817753f ), new Keyframe(0.8838775f, 0.001939224f ), new Keyframe(1.0f, 0.0f ) ); + public static AnimationCurve shake = new AnimationCurve( new Keyframe(0f, 0f), new Keyframe(0.25f, 1f), new Keyframe(0.75f, -1f), new Keyframe(1f, 0f) ) ; + + public static void init(){ + init(maxTweens); + } + + public static int maxSearch{ + get{ + return tweenMaxSearch; + } + } + + public static int maxSimulataneousTweens{ + get { + return maxTweens; + } + } + + /** + * Find out how many tweens you have animating at a given time + * + * @method LeanTween.tweensRunning + * @example + * Debug.Log("I have "+LeanTween.tweensRunning+" animating!"); + */ + public static int tweensRunning{ + get{ + int count = 0; + for (int i = 0; i <= tweenMaxSearch; i++){ + if (tweens[i].toggle){ + count++; + } + } + return count; + } + } + + /** + * This line is optional. Here you can specify the maximum number of tweens you will use (the default is 400). This must be called before any use of LeanTween is made for it to be effective. This line is optional. Here you can specify the maximum number of tweens you will use (the default is 400). This must be called before any use of LeanTween is made for it to be effective. + * + * @method LeanTween.init + * @param {integer} maxSimultaneousTweens:int The maximum number of tweens you will use, make sure you don't go over this limit, otherwise the code will throw an error + * @example + * LeanTween.init( 800 ); + */ + public static void init(int maxSimultaneousTweens ){ + init(maxSimultaneousTweens, maxSequences); + } + + public static void init(int maxSimultaneousTweens, int maxSimultaneousSequences){ + if(tweens==null){ + maxTweens = maxSimultaneousTweens; + tweens = new LTDescr[maxTweens]; + tweensFinished = new int[maxTweens]; + tweensFinishedIds = new int[maxTweens]; + _tweenEmpty = new GameObject(); + _tweenEmpty.name = "~LeanTween"; + _tweenEmpty.AddComponent(typeof(LeanTween)); + _tweenEmpty.isStatic = true; + #if !UNITY_EDITOR + _tweenEmpty.hideFlags = HideFlags.HideAndDontSave; + #endif + #if UNITY_EDITOR + if(Application.isPlaying) + DontDestroyOnLoad( _tweenEmpty ); + #else + DontDestroyOnLoad( _tweenEmpty ); + #endif + for(int i = 0; i < maxTweens; i++){ + tweens[i] = new LTDescr(); + } + + #if UNITY_5_4_OR_NEWER + UnityEngine.SceneManagement.SceneManager.sceneLoaded += onLevelWasLoaded54; + #endif + + sequences = new LTSeq[ maxSimultaneousSequences ]; + + for(int i = 0; i < maxSimultaneousSequences; i++){ + sequences[i] = new LTSeq(); + } + } + } + + public static void reset(){ + if(tweens!=null){ + for (int i = 0; i <= tweenMaxSearch; i++){ + if(tweens[i]!=null) + tweens[i].toggle = false; + } + } + tweens = null; + Destroy(_tweenEmpty); + } + + public void Update(){ + LeanTween.update(); + } + + #if UNITY_5_4_OR_NEWER + private static void onLevelWasLoaded54( UnityEngine.SceneManagement.Scene scene, UnityEngine.SceneManagement.LoadSceneMode mode ){ internalOnLevelWasLoaded( scene.buildIndex ); } + #else + public void OnLevelWasLoaded( int lvl ){ internalOnLevelWasLoaded( lvl ); } + #endif + + private static void internalOnLevelWasLoaded( int lvl ){ + // Debug.Log("reseting gui"); + LTGUI.reset(); + } + + private static int maxTweenReached; + + public static void update() { + if(frameRendered != Time.frameCount){ // make sure update is only called once per frame + init(); + + #if UNITY_3_5 || UNITY_4_0 || UNITY_4_0_1 || UNITY_4_1 || UNITY_4_2 || UNITY_4_3 || UNITY_4_5 + dtEstimated = Time.realtimeSinceStartup - previousRealTime; + if(dtEstimated>0.2f) // a catch put in, when at the start sometimes this number can grow unrealistically large + dtEstimated = 0.2f; + previousRealTime = Time.realtimeSinceStartup; + #else + + dtEstimated = dtEstimated<0f ? 0f : dtEstimated = Time.unscaledDeltaTime; + + // Debug.Log("Time.unscaledDeltaTime:"+Time.unscaledDeltaTime); + #endif + + dtActual = Time.deltaTime; + maxTweenReached = 0; + finishedCnt = 0; + // if(tweenMaxSearch>1500) + // Debug.Log("tweenMaxSearch:"+tweenMaxSearch +" maxTweens:"+maxTweens); + for( int i = 0; i <= tweenMaxSearch && i < maxTweens; i++){ + tween = tweens[i]; +// if(i==0 && tweens[i].toggle) +// Debug.Log("tweens["+i+"]"+tweens[i]); + if(tween.toggle){ + maxTweenReached = i; + + if (tween.updateInternal()) { // returns true if the tween is finished with it's loop + tweensFinished[finishedCnt] = i; + tweensFinishedIds[finishedCnt] = tweens[i].id; + finishedCnt++; + } + } + } + + // Debug.Log("maxTweenReached:"+maxTweenReached); + tweenMaxSearch = maxTweenReached; + frameRendered = Time.frameCount; + + for(int i = 0; i < finishedCnt; i++){ + j = tweensFinished[i]; + tween = tweens[ j ]; + + if (tween.id == tweensFinishedIds[i]){ + // Debug.Log("removing tween:"+tween); + removeTween(j); + if(tween.hasExtraOnCompletes && tween.trans!=null) + tween.callOnCompletes(); + } + } + + } + } + + + + public static void removeTween( int i, int uniqueId){ // Only removes the tween if the unique id matches Move a GameObject to a certain location + if(tweens[i].uniqueId==uniqueId){ + removeTween( i ); + } + } + + // This method is only used internally! Do not call this from your scripts. To cancel a tween use LeanTween.cancel + public static void removeTween( int i ){ + if(tweens[i].toggle){ + tweens[i].toggle = false; + tweens[i].counter = uint.MaxValue; + //logError("Removing tween["+i+"]:"+tweens[i]); + if(tweens[i].destroyOnComplete){ +// Debug.Log("destroying tween.type:"+tween.type+" ltRect"+(tweens[i]._optional.ltRect==null)); + if(tweens[i]._optional.ltRect!=null){ + // Debug.Log("destroy i:"+i+" id:"+tweens[i].ltRect.id); + LTGUI.destroy( tweens[i]._optional.ltRect.id ); + }else{ // check if equal to tweenEmpty + if(tweens[i].trans!=null && tweens[i].trans.gameObject!=_tweenEmpty){ + Destroy(tweens[i].trans.gameObject); + } + } + } + //tweens[i].optional = null; + startSearch = i; + //Debug.Log("start search reset:"+startSearch + " i:"+i+" tweenMaxSearch:"+tweenMaxSearch); + if(i+1>=tweenMaxSearch){ + //Debug.Log("reset to zero"); + startSearch = 0; + //tweenMaxSearch--; + } + } + } + + public static Vector3[] add(Vector3[] a, Vector3 b){ + Vector3[] c = new Vector3[ a.Length ]; + for(i=0; iCancels all tweens + * + * @method LeanTween.cancelAll + * @param {bool} callComplete:bool (optional) if true, then the all onCompletes will run before canceling + * @example LeanTween.cancelAll(true);
    + */ + public static void cancelAll(){ + cancelAll(false); + } + public static void cancelAll(bool callComplete){ + init(); + for (int i = 0; i <= tweenMaxSearch; i++) + { + if (tweens[i].trans != null){ + if (callComplete && tweens[i].optional.onComplete != null) + tweens[i].optional.onComplete(); + removeTween(i); + } + } + } + + /** + * Cancel all tweens that are currently targeting the gameObject + * + * @method LeanTween.cancel + * @param {GameObject} gameObject:GameObject gameObject whose tweens you wish to cancel + * @param {bool} callOnComplete:bool (optional) whether to call the onComplete method before canceling + * @example LeanTween.move( gameObject, new Vector3(0f,1f,2f), 1f);
    + * LeanTween.cancel( gameObject ); + */ + public static void cancel( GameObject gameObject ){ + cancel( gameObject, false); + } + public static void cancel( GameObject gameObject, bool callOnComplete ){ + init(); + Transform trans = gameObject.transform; + for(int i = 0; i <= tweenMaxSearch; i++){ + LTDescr tween = tweens[i]; + if(tween!=null && tween.toggle && tween.trans==trans){ + if (callOnComplete && tween.optional.onComplete != null) + tween.optional.onComplete(); + removeTween(i); + } + } + } + + public static void cancel( RectTransform rect ){ + cancel( rect.gameObject, false); + } + +// public static void cancel( GameObject gameObject, int uniqueId ){ +// if(uniqueId>=0){ +// init(); +// int backId = uniqueId & 0xFFFF; +// int backCounter = uniqueId >> 16; +// // Debug.Log("uniqueId:"+uniqueId+ " id:"+backId +" counter:"+backCounter + " setCounter:"+ tweens[backId].counter + " tweens[id].type:"+tweens[backId].type); +// if(tweens[backId].trans==null || (tweens[backId].trans.gameObject == gameObject && tweens[backId].counter==backCounter)) +// removeTween((int)backId); +// } +// } + + public static void cancel( GameObject gameObject, int uniqueId, bool callOnComplete = false ){ + if(uniqueId>=0){ + init(); + int backId = uniqueId & 0xFFFF; + int backCounter = uniqueId >> 16; + // Debug.Log("uniqueId:"+uniqueId+ " id:"+backId +" counter:"+backCounter + " setCounter:"+ tw eens[backId].counter + " tweens[id].type:"+tweens[backId].type); + if(tweens[backId].trans==null || (tweens[backId].trans.gameObject == gameObject && tweens[backId].counter==backCounter)) { + if (callOnComplete && tweens[backId].optional.onComplete != null) + tweens[backId].optional.onComplete(); + removeTween((int)backId); + } + } + } + + public static void cancel( LTRect ltRect, int uniqueId ){ + if(uniqueId>=0){ + init(); + int backId = uniqueId & 0xFFFF; + int backCounter = uniqueId >> 16; + // Debug.Log("uniqueId:"+uniqueId+ " id:"+backId +" action:"+(TweenAction)backType + " tweens[id].type:"+tweens[backId].type); + if(tweens[backId]._optional.ltRect == ltRect && tweens[backId].counter==backCounter) + removeTween((int)backId); + } + } + + /** + * Cancel a specific tween with the provided id + * + * @method LeanTween.cancel + * @param {int} id:int unique id that represents that tween + * @param {bool} callOnComplete:bool (optional) whether to call the onComplete method before canceling + * @example int id = LeanTween.move( gameObject, new Vector3(0f,1f,2f), 1f).id;
    + * LeanTween.cancel( id ); + */ + public static void cancel( int uniqueId ){ + cancel( uniqueId, false); + } + public static void cancel( int uniqueId, bool callOnComplete ){ + if(uniqueId>=0){ + init(); + int backId = uniqueId & 0xFFFF; + int backCounter = uniqueId >> 16; + if (backId > tweens.Length - 1) { // sequence + int sequenceId = backId - tweens.Length; + LTSeq seq = sequences[sequenceId]; + // Debug.Log("sequenceId:" + sequenceId+" maxSequences:"+maxSequences+" prev:"+seq.previous); + + for (int i = 0; i < maxSequences; i++) { + if (seq.current.tween != null) { + int tweenId = seq.current.tween.uniqueId; + int tweenIndex = tweenId & 0xFFFF; + removeTween(tweenIndex); + } + if (seq.current.previous == null) + break; + seq.current = seq.current.previous; + } + } else { // tween + // Debug.Log("uniqueId:"+uniqueId+ " id:"+backId +" action:"+(TweenAction)backType + " tweens[id].type:"+tweens[backId].type); + if (tweens[backId].counter == backCounter) { + if (callOnComplete && tweens[backId].optional.onComplete != null) + tweens[backId].optional.onComplete(); + removeTween((int)backId); + } + } + } + } + + /** + * Retrieve a tweens LTDescr object to modify + * + * @method LeanTween.descr + * @param {int} id:int unique id that represents that tween + * @example int id = LeanTween.move( gameObject, new Vector3(0f,1f,2f), 1f).setOnComplete( oldMethod ).id;

    + *
    // later I want decide I want to change onComplete method
    + * LTDescr descr = LeanTween.descr( id );
    + * if(descr!=null) // if the tween has already finished it will come back null
    + *   descr.setOnComplete( newMethod );
    + */ + public static LTDescr descr( int uniqueId ){ + init(); + + int backId = uniqueId & 0xFFFF; + int backCounter = uniqueId >> 16; + +// Debug.Log("backId:" + backId+" backCounter:"+backCounter); + if (tweens[backId] != null && tweens[backId].uniqueId == uniqueId && tweens[backId].counter == backCounter) { + // Debug.Log("tween count:" + tweens[backId].counter); + return tweens[backId]; + } + for(int i = 0; i <= tweenMaxSearch; i++){ + if (tweens[i].uniqueId == uniqueId && tweens[i].counter == backCounter) { + return tweens[i]; + } + } + return null; + } + + public static LTDescr description( int uniqueId ){ + return descr( uniqueId ); + } + + /** + * Retrieve a tweens LTDescr object(s) to modify + * + * @method LeanTween.descriptions + * @param {GameObject} id:GameObject object whose tween descriptions you want to retrieve + * @example LeanTween.move( gameObject, new Vector3(0f,1f,2f), 1f).setOnComplete( oldMethod );

    + *
    // later I want decide I want to change onComplete method
    + * LTDescr[] descr = LeanTween.descriptions( gameObject );
    + * if(descr.Length>0) // make sure there is a valid description for this target
    + *   descr[0].setOnComplete( newMethod );// in this case we only ever expect there to be one tween on this object
    + */ + public static LTDescr[] descriptions(GameObject gameObject = null) { + if (gameObject == null) return null; + + List descrs = new List(); + Transform trans = gameObject.transform; + for (int i = 0; i <= tweenMaxSearch; i++) { + if (tweens[i].toggle && tweens[i].trans == trans) + descrs.Add( tweens[i] ); + } + return descrs.ToArray(); + } + + [System.Obsolete("Use 'pause( id )' instead")] + public static void pause( GameObject gameObject, int uniqueId ){ + pause( uniqueId ); + } + + /** + * Pause all tweens for a GameObject + * + * @method LeanTween.pause + * @param {int} id:int Id of the tween you want to pause + * @example + * int id = LeanTween.moveX(gameObject, 5, 1.0).id
    + * LeanTween.pause( id );
    + * // Later....
    + * LeanTween.resume( id ); + */ + public static void pause( int uniqueId ){ + int backId = uniqueId & 0xFFFF; + int backCounter = uniqueId >> 16; + if(tweens[backId].counter==backCounter){ + tweens[backId].pause(); + } + } + + /** + * Pause all tweens for a GameObject + * + * @method LeanTween.pause + * @param {GameObject} gameObject:GameObject GameObject whose tweens you want to pause + */ + public static void pause( GameObject gameObject ){ + Transform trans = gameObject.transform; + for(int i = 0; i <= tweenMaxSearch; i++){ + if(tweens[i].trans==trans){ + tweens[i].pause(); + } + } + } + + /** + * Pause all active tweens + * + * @method LeanTween.pauseAll + */ + public static void pauseAll(){ + init(); + for (int i = 0; i <= tweenMaxSearch; i++){ + tweens[i].pause(); + } + } + + /** + * Resume all active tweens + * + * @method LeanTween.resumeAll + */ + public static void resumeAll(){ + init(); + for (int i = 0; i <= tweenMaxSearch; i++){ + tweens[i].resume(); + } + } + + [System.Obsolete("Use 'resume( id )' instead")] + public static void resume( GameObject gameObject, int uniqueId ){ + resume( uniqueId ); + } + + /** + * Resume a specific tween + * + * @method LeanTween.resume + * @param {int} id:int Id of the tween you want to resume + * @example + * int id = LeanTween.moveX(gameObject, 5, 1.0).id
    + * LeanTween.pause( id );
    + * // Later....
    + * LeanTween.resume( id ); + */ + public static void resume( int uniqueId ){ + int backId = uniqueId & 0xFFFF; + int backCounter = uniqueId >> 16; + if(tweens[backId].counter==backCounter){ + tweens[backId].resume(); + } + } + + /** + * Resume all the tweens on a GameObject + * + * @method LeanTween.resume + * @param {GameObject} gameObject:GameObject GameObject whose tweens you want to resume + */ + public static void resume( GameObject gameObject ){ + Transform trans = gameObject.transform; + for(int i = 0; i <= tweenMaxSearch; i++){ + if(tweens[i].trans==trans) + tweens[i].resume(); + } + } + + /** + * Test whether or not a tween is paused on a GameObject + * + * @method LeanTween.isPaused + * @param {GameObject} gameObject:GameObject GameObject that you want to test if it is paused + */ + public static bool isPaused(GameObject gameObject = null) + { + if (gameObject == null) + { + for (int i = 0; i <= tweenMaxSearch; i++) + { + if (Mathf.Equals(tweens[i].direction, 0f)) + return true; + } + return false; + } + Transform trans = gameObject.transform; + for (int i = 0; i <= tweenMaxSearch; i++) + { + if (Mathf.Equals(tweens[i].direction, 0f) && tweens[i].trans == trans) + return true; + } + return false; + } + + public static bool isPaused(RectTransform rect) + { + return isTweening(rect.gameObject); + } + + /** + * Test whether or not a tween is paused or not + * + * @method LeanTween.isPaused + * @param {GameObject} id:int id of the tween that you want to test if it is paused + * @example + * int id = LeanTween.moveX(gameObject, 1f, 3f).id;
    + * LeanTween.pause(gameObject);
    + * if(LeanTween.isPaused( id ))
    + *      Debug.Log("I am paused!");
    + */ + public static bool isPaused(int uniqueId) + { + int backId = uniqueId & 0xFFFF; + int backCounter = uniqueId >> 16; + if (backId < 0 || backId >= maxTweens) return false; + // Debug.Log("tweens[backId].counter:"+tweens[backId].counter+" backCounter:"+backCounter +" toggle:"+tweens[backId].toggle); + if (tweens[backId].counter == backCounter && Mathf.Equals(tweens[i].direction, 0f)) + { + return true; + } + return false; + } + + /** + * Test whether or not a tween is active on a GameObject + * + * @method LeanTween.isTweening + * @param {GameObject} gameObject:GameObject GameObject that you want to test if it is tweening + */ + public static bool isTweening( GameObject gameObject = null ){ + if(gameObject==null){ + for(int i = 0; i <= tweenMaxSearch; i++){ + if(tweens[i].toggle) + return true; + } + return false; + } + Transform trans = gameObject.transform; + for(int i = 0; i <= tweenMaxSearch; i++){ + if(tweens[i].toggle && tweens[i].trans==trans) + return true; + } + return false; + } + + public static bool isTweening( RectTransform rect ){ + return isTweening(rect.gameObject); + } + + /** + * Test whether or not a tween is active or not + * + * @method LeanTween.isTweening + * @param {GameObject} id:int id of the tween that you want to test if it is tweening + * @example + * int id = LeanTween.moveX(gameObject, 1f, 3f).id;
    + * if(LeanTween.isTweening( id ))
    + *      Debug.Log("I am tweening!");
    + */ + public static bool isTweening( int uniqueId ){ + int backId = uniqueId & 0xFFFF; + int backCounter = uniqueId >> 16; + if (backId < 0 || backId >= maxTweens) return false; + // Debug.Log("tweens[backId].counter:"+tweens[backId].counter+" backCounter:"+backCounter +" toggle:"+tweens[backId].toggle); + if(tweens[backId].counter==backCounter && tweens[backId].toggle){ + return true; + } + return false; + } + + public static bool isTweening( LTRect ltRect ){ + for( int i = 0; i <= tweenMaxSearch; i++){ + if(tweens[i].toggle && tweens[i]._optional.ltRect==ltRect) + return true; + } + return false; + } + + public static void drawBezierPath(Vector3 a, Vector3 b, Vector3 c, Vector3 d, float arrowSize = 0.0f, Transform arrowTransform = null){ + Vector3 last = a; + Vector3 p; + Vector3 aa = (-a + 3*(b-c) + d); + Vector3 bb = 3*(a+c) - 6*b; + Vector3 cc = 3*(b-a); + + float t; + + if(arrowSize>0.0f){ + Vector3 beforePos = arrowTransform.position; + Quaternion beforeQ = arrowTransform.rotation; + float distanceTravelled = 0f; + + for(float k = 1.0f; k <= 120.0f; k++){ + t = k / 120.0f; + p = ((aa* t + (bb))* t + cc)* t + a; + Gizmos.DrawLine(last, p); + distanceTravelled += (p-last).magnitude; + if(distanceTravelled>1f){ + distanceTravelled = distanceTravelled - 1f; + /*float deltaY = p.y - last.y; + float deltaX = p.x - last.x; + float ang = Mathf.Atan(deltaY / deltaX); + Vector3 arrow = p + new Vector3( Mathf.Cos(ang+2.5f), Mathf.Sin(ang+2.5f), 0f)*0.5f; + Gizmos.DrawLine(p, arrow); + arrow = p + new Vector3( Mathf.Cos(ang+-2.5f), Mathf.Sin(ang+-2.5f), 0f)*0.5f; + Gizmos.DrawLine(p, arrow);*/ + + arrowTransform.position = p; + arrowTransform.LookAt( last, Vector3.forward ); + Vector3 to = arrowTransform.TransformDirection(Vector3.right); + // Debug.Log("to:"+to+" tweenEmpty.transform.position:"+arrowTransform.position); + Vector3 back = (last-p); + back = back.normalized; + Gizmos.DrawLine(p, p + (to + back)*arrowSize); + to = arrowTransform.TransformDirection(-Vector3.right); + Gizmos.DrawLine(p, p + (to + back)*arrowSize); + } + last = p; + } + + arrowTransform.position = beforePos; + arrowTransform.rotation = beforeQ; + }else{ + for(float k = 1.0f; k <= 30.0f; k++){ + t = k / 30.0f; + p = ((aa* t + (bb))* t + cc)* t + a; + Gizmos.DrawLine(last, p); + last = p; + } + } + } + + public static object logError( string error ){ + if(throwErrors) Debug.LogError(error); else Debug.Log(error); + return null; + } + + public static LTDescr options(LTDescr seed){ Debug.LogError("error this function is no longer used"); return null; } + public static LTDescr options(){ + init(); + + bool found = false; + // Debug.Log("Search start"); + for(j=0, i = startSearch; j <= maxTweens; i++){ + if(j >= maxTweens) + return logError("LeanTween - You have run out of available spaces for tweening. To avoid this error increase the number of spaces to available for tweening when you initialize the LeanTween class ex: LeanTween.init( "+(maxTweens*2)+" );") as LTDescr; + if(i>=maxTweens) + i = 0; + // Debug.Log("searching i:"+i); + if(tweens[i].toggle==false){ + if(i+1>tweenMaxSearch && i+1 < maxTweens) + tweenMaxSearch = i+1; + startSearch = i + 1; + found = true; + break; + } + + j++; + } + if(found==false) + logError("no available tween found!"); + + // Debug.Log("new tween with i:"+i+" counter:"+tweens[i].counter+" tweenMaxSearch:"+tweenMaxSearch+" tween:"+tweens[i]); + tweens[i].reset(); + + global_counter++; + if(global_counter>0x8000) + global_counter = 0; + + tweens[i].setId( (uint)i, global_counter ); + + return tweens[i]; + } + + + public static GameObject tweenEmpty{ + get{ + init(maxTweens); + return _tweenEmpty; + } + } + + public static int startSearch = 0; + public static LTDescr d; + + private static LTDescr pushNewTween( GameObject gameObject, Vector3 to, float time, LTDescr tween ){ + init(maxTweens); + if(gameObject==null || tween==null) + return null; + + tween.trans = gameObject.transform; + tween.to = to; + tween.time = time; + + if (tween.time <= 0f) + tween.updateInternal(); + //tween.hasPhysics = gameObject.rigidbody!=null; + + return tween; + } + + #if !UNITY_3_5 && !UNITY_4_0 && !UNITY_4_0_1 && !UNITY_4_1 && !UNITY_4_2 && !UNITY_4_3 && !UNITY_4_5 + /** + * Play a sequence of images on a Unity UI Object + * + * @method LeanTween.play + * @param {RectTransform} rectTransform:RectTransform RectTransform that you want to play the sequence of sprites on + * @param {Sprite[]} sprites:Sprite[] Sequence of sprites to be played + * @return {LTDescr} LTDescr an object that distinguishes the tween
    + * @example + * LeanTween.play(gameObject.GetComponent<RectTransform>(), sprites).setLoopPingPong(); + */ + public static LTDescr play(RectTransform rectTransform, UnityEngine.Sprite[] sprites){ + float defaultFrameRate = 0.25f; + float time = defaultFrameRate * sprites.Length; + return pushNewTween(rectTransform.gameObject, new Vector3((float)sprites.Length - 1.0f,0,0), time, options().setCanvasPlaySprite().setSprites( sprites ).setRepeat(-1)); + } + #endif + + + /** + * Retrieve a sequencer object where you can easily chain together tweens and methods one after another + * + * @method LeanTween.sequence + * @return {LTSeq} LTSeq an object that you can add tweens, methods and time on to + * @example + * var seq = LeanTween.sequence();
    + * seq.add(1f); // delay everything one second
    + * seq.add( () => { // fire an event before start
    + *  Debug.Log("I have started");
    + * });
    + * seq.add( LeanTween.move(cube1, Vector3.one * 10f, 1f) ); // do a tween
    + * seq.add( () => { // fire event after tween
    + *  Debug.Log("We are done now");
    + * });;
    + */ + public static LTSeq sequence(bool initSequence = true) + { + init(maxTweens); + // Loop through and find available sequence + for (int i = 0; i < sequences.Length; i++) + { + // Debug.Log("i:" + i + " sequences[i]:" + sequences[i]); + if (sequences[i].tween == null || sequences[i].tween.toggle == false) + { + if (sequences[i].toggle == false) + { + LTSeq seq = sequences[i]; + if (initSequence) + { + seq.init((uint)(i + tweens.Length), global_counter); + + global_counter++; + if (global_counter > 0x8000) + global_counter = 0; + } + else + { + seq.reset(); + } + + return seq; + } + } + } + + return null; + } + + /** + * Fade a gameobject's material to a certain alpha value. + * + * @method LeanTween.alpha + * @param {GameObject} gameObject:GameObject Gameobject that you wish to fade + * @param {float} to:float the final alpha value (0-1) + * @param {float} time:float The time with which to fade the object + * @return {LTDescr} LTDescr an object that distinguishes the tween + * @example + * LeanTween.alpha(gameObject, 1f, 1f) .setDelay(1f); + */ + public static LTDescr alpha(GameObject gameObject, float to, float time){ + LTDescr lt = pushNewTween( gameObject, new Vector3(to,0,0), time, options().setAlpha() ); + + #if !UNITY_3_5 && !UNITY_4_0 && !UNITY_4_0_1 && !UNITY_4_1 && !UNITY_4_2 + SpriteRenderer ren = gameObject.GetComponent(); + lt.spriteRen = ren; + #endif + return lt; + } + + /** + * Fade a GUI Object + * + * @method LeanTween.alpha + * @param {LTRect} ltRect:LTRect LTRect that you wish to fade + * @param {float} to:float the final alpha value (0-1) + * @param {float} time:float The time with which to fade the object + * @return {LTDescr} LTDescr an object that distinguishes the tween + * @example + * LeanTween.alpha(ltRect, 1f, 1f) .setEase(LeanTweenType.easeInCirc); + */ + public static LTDescr alpha(LTRect ltRect, float to, float time){ + ltRect.alphaEnabled = true; + return pushNewTween( tweenEmpty, new Vector3(to,0f,0f), time, options().setGUIAlpha().setRect( ltRect ) ); + } + + + #if !UNITY_3_5 && !UNITY_4_0 && !UNITY_4_0_1 && !UNITY_4_1 && !UNITY_4_2 && !UNITY_4_3 && !UNITY_4_5 + /** + * Fade a Unity UI Object + * + * @method LeanTween.alphaText + * @param {RectTransform} rectTransform:RectTransform RectTransform associated with the Text Component you wish to fade + * @param {float} to:float the final alpha value (0-1) + * @param {float} time:float The time with which to fade the object + * @return {LTDescr} LTDescr an object that distinguishes the tween + * @example + * LeanTween.alphaText(gameObject.GetComponent<RectTransform>(), 1f, 1f) .setEase(LeanTweenType.easeInCirc); + */ + public static LTDescr textAlpha(RectTransform rectTransform, float to, float time){ + return pushNewTween(rectTransform.gameObject, new Vector3(to,0,0), time, options().setTextAlpha()); + } + public static LTDescr alphaText(RectTransform rectTransform, float to, float time){ + return pushNewTween(rectTransform.gameObject, new Vector3(to,0,0), time, options().setTextAlpha()); + } + + /** + * Fade a Unity UI Canvas Group + * + * @method LeanTween.alphaCanvas + * @param {RectTransform} rectTransform:RectTransform RectTransform that the CanvasGroup is attached to + * @param {float} to:float the final alpha value (0-1) + * @param {float} time:float The time with which to fade the object + * @return {LTDescr} LTDescr an object that distinguishes the tween + * @example + * LeanTween.alphaCanvas(gameObject.GetComponent<RectTransform>(), 0f, 1f) .setLoopPingPong(); + */ + public static LTDescr alphaCanvas(CanvasGroup canvasGroup, float to, float time){ + return pushNewTween(canvasGroup.gameObject, new Vector3(to,0,0), time, options().setCanvasGroupAlpha()); + } + #endif + + /** + * This works by tweening the vertex colors directly +
    + Vertex-based coloring is useful because you avoid making a copy of your + object's material for each instance that needs a different color.
    +
    + A shader that supports vertex colors is required for it to work + (for example the shaders in Mobile/Particles/) + * + * @method LeanTween.alphaVertex + * @param {GameObject} gameObject:GameObject Gameobject that you wish to alpha + * @param {float} to:float The alpha value you wish to tween to + * @param {float} time:float The time with which to delay before calling the function + * @return {LTDescr} LTDescr an object that distinguishes the tween + */ + public static LTDescr alphaVertex(GameObject gameObject, float to, float time){ + return pushNewTween( gameObject, new Vector3(to,0f,0f), time, options().setAlphaVertex() ); + } + + /** + * Change a gameobject's material to a certain color value + * + * @method LeanTween.color + * @param {GameObject} gameObject:GameObject Gameobject that you wish to change the color + * @param {Color} to:Color the final color value ex: Color.Red, new Color(1.0f,1.0f,0.0f,0.8f) + * @param {float} time:float The time with which to fade the object + * @return {LTDescr} LTDescr an object that distinguishes the tween + * @example + * LeanTween.color(gameObject, Color.yellow, 1f) .setDelay(1f); + */ + public static LTDescr color(GameObject gameObject, Color to, float time){ + LTDescr lt = pushNewTween( gameObject, new Vector3(1.0f, to.a, 0.0f), time, options().setColor().setPoint( new Vector3(to.r, to.g, to.b) ) ); + #if !UNITY_3_5 && !UNITY_4_0 && !UNITY_4_0_1 && !UNITY_4_1 && !UNITY_4_2 + SpriteRenderer ren = gameObject.GetComponent(); + lt.spriteRen = ren; + #endif + return lt; + } + + #if !UNITY_3_5 && !UNITY_4_0 && !UNITY_4_0_1 && !UNITY_4_1 && !UNITY_4_2 && !UNITY_4_3 && !UNITY_4_5 + /** + * Change the color a Unity UI Object + * + * @method LeanTween.colorText + * @param {RectTransform} rectTransform:RectTransform RectTransform attached to the Text Component whose color you want to change + * @param {Color} to:Color the final alpha value ex: Color.Red, new Color(1.0f,1.0f,0.0f,0.8f) + * @param {float} time:float The time with which to fade the object + * @return {LTDescr} LTDescr an object that distinguishes the tween + * @example + * LeanTween.colorText(gameObject.GetComponent<RectTransform>(), Color.yellow, 1f) .setDelay(1f); + */ + public static LTDescr textColor(RectTransform rectTransform, Color to, float time){ + return pushNewTween(rectTransform.gameObject, new Vector3(1.0f, to.a, 0.0f), time, options().setTextColor().setPoint(new Vector3(to.r, to.g, to.b))); + } + public static LTDescr colorText(RectTransform rectTransform, Color to, float time){ + return pushNewTween(rectTransform.gameObject, new Vector3(1.0f, to.a, 0.0f), time, options().setTextColor().setPoint(new Vector3(to.r, to.g, to.b))); + } + #endif + + /** + * Call a method after a specified amount of time + * + * @method LeanTween.delayedCall + * @param {GameObject} gameObject:GameObject Gameobject that you wish to associate with this delayed call + * @param {float} time:float delay The time you wish to pass before the method is called + * @return {LTDescr} LTDescr an object that distinguishes the tween + * @example LeanTween.delayedCall(gameObject, 1f, ()=>{
    Debug.Log("I am called one second later!");
    })); + */ + public static LTDescr delayedCall( float delayTime, Action callback){ + return pushNewTween( tweenEmpty, Vector3.zero, delayTime, options().setCallback().setOnComplete(callback) ); + } + + public static LTDescr delayedCall( float delayTime, Action callback){ + return pushNewTween( tweenEmpty, Vector3.zero, delayTime, options().setCallback().setOnComplete(callback) ); + } + + public static LTDescr delayedCall( GameObject gameObject, float delayTime, Action callback){ + return pushNewTween( gameObject, Vector3.zero, delayTime, options().setCallback().setOnComplete(callback) ); + } + + public static LTDescr delayedCall( GameObject gameObject, float delayTime, Action callback){ + return pushNewTween( gameObject, Vector3.zero, delayTime, options().setCallback().setOnComplete(callback) ); + } + + public static LTDescr destroyAfter( LTRect rect, float delayTime){ + return pushNewTween( tweenEmpty, Vector3.zero, delayTime, options().setCallback().setRect( rect ).setDestroyOnComplete(true) ); + } + + /*public static LTDescr delayedCall(GameObject gameObject, float delayTime, string callback){ + return pushNewTween( gameObject, Vector3.zero, delayTime, TweenAction.CALLBACK, options().setOnComplete( callback ) ); + }*/ + + + /** + * Move a GameObject to a certain location + * + * @method LeanTween.move + * @param {GameObject} gameObject:GameObject Gameobject that you wish to move + * @param {Vector3} vec:Vector3 to The final positin with which to move to + * @param {float} time:float time The time to complete the tween in + * @return {LTDescr} LTDescr an object that distinguishes the tween + * @example LeanTween.move(gameObject, new Vector3(0f,-3f,5f), 2.0f) .setEase( LeanTweenType.easeOutQuad ); + */ + public static LTDescr move(GameObject gameObject, Vector3 to, float time){ + return pushNewTween( gameObject, to, time, options().setMove() ); + } + public static LTDescr move(GameObject gameObject, Vector2 to, float time){ + return pushNewTween( gameObject, new Vector3(to.x, to.y, gameObject.transform.position.z), time, options().setMove() ); + } + + + /** + * Move a GameObject along a set of bezier curves + * + * @method LeanTween.move + * @param {GameObject} gameObject:GameObject Gameobject that you wish to move + * @param {Vector3[]} path:Vector3[] A set of points that define the curve(s) ex: Point1,Handle2,Handle1,Point2,... + * @param {float} time:float The time to complete the tween in + * @return {LTDescr} LTDescr an object that distinguishes the tween + * @example + * Javascript:
    + * LeanTween.move(gameObject, [Vector3(0,0,0),Vector3(1,0,0),Vector3(1,0,0),Vector3(1,0,1)], 2.0) .setEase(LeanTweenType.easeOutQuad).setOrientToPath(true);

    + * C#:
    + * LeanTween.move(gameObject, new Vector3[]{new Vector3(0f,0f,0f),new Vector3(1f,0f,0f),new Vector3(1f,0f,0f),new Vector3(1f,0f,1f)}, 1.5f).setEase(LeanTweenType.easeOutQuad).setOrientToPath(true);;
    + */ + public static LTDescr move(GameObject gameObject, Vector3[] to, float time){ + d = options().setMoveCurved(); + if(d.optional.path==null) + d.optional.path = new LTBezierPath( to ); + else + d.optional.path.setPoints( to ); + + return pushNewTween( gameObject, new Vector3(1.0f,0.0f,0.0f), time, d ); + } + + public static LTDescr move(GameObject gameObject, LTBezierPath to, float time) { + d = options().setMoveCurved(); + d.optional.path = to; + + return pushNewTween(gameObject, new Vector3(1.0f, 0.0f, 0.0f), time, d); + } + + public static LTDescr move(GameObject gameObject, LTSpline to, float time) { + d = options().setMoveSpline(); + d.optional.spline = to; + + return pushNewTween(gameObject, new Vector3(1.0f, 0.0f, 0.0f), time, d); + } + + /** + * Move a GameObject through a set of points + * + * @method LeanTween.moveSpline + * @param {GameObject} gameObject:GameObject Gameobject that you wish to move + * @param {Vector3[]} path:Vector3[] A set of points that define the curve(s) ex: ControlStart,Pt1,Pt2,Pt3,.. ..ControlEnd
    Note: The first and last item just define the angle of the end points, they are not actually used in the spline path itself. If you do not care about the angle you can jus set the first two items and last two items as the same value. + * @param {float} time:float The time to complete the tween in + * @return {LTDescr} LTDescr an object that distinguishes the tween + * @example + * Javascript:
    + * LeanTween.moveSpline(gameObject, [Vector3(0,0,0),Vector3(1,0,0),Vector3(1,0,0),Vector3(1,0,1)], 2.0) .setEase(LeanTweenType.easeOutQuad).setOrientToPath(true);

    + * C#:
    + * LeanTween.moveSpline(gameObject, new Vector3[]{new Vector3(0f,0f,0f),new Vector3(1f,0f,0f),new Vector3(1f,0f,0f),new Vector3(1f,0f,1f)}, 1.5f).setEase(LeanTweenType.easeOutQuad).setOrientToPath(true);
    + */ + public static LTDescr moveSpline(GameObject gameObject, Vector3[] to, float time){ + d = options().setMoveSpline(); + d.optional.spline = new LTSpline( to ); + + return pushNewTween( gameObject, new Vector3(1.0f,0.0f,0.0f), time, d ); + } + + /** + * Move a GameObject through a set of points + * + * @method LeanTween.moveSpline + * @param {GameObject} gameObject:GameObject Gameobject that you wish to move + * @param {LTSpline} spline:LTSpline pass a pre-existing LTSpline for the object to move along + * @param {float} time:float The time to complete the tween in + * @return {LTDescr} LTDescr an object that distinguishes the tween + * @example + * Javascript:
    + * LeanTween.moveSpline(gameObject, ltSpline, 2.0) .setEase(LeanTweenType.easeOutQuad).setOrientToPath(true);

    + * C#:
    + * LeanTween.moveSpline(gameObject, ltSpline, 1.5f).setEase(LeanTweenType.easeOutQuad).setOrientToPath(true);
    + */ + public static LTDescr moveSpline(GameObject gameObject, LTSpline to, float time){ + d = options().setMoveSpline(); + d.optional.spline = to; + + return pushNewTween( gameObject, new Vector3(1.0f,0.0f,0.0f), time, d ); + } + + /** + * Move a GameObject through a set of points, in local space + * + * @method LeanTween.moveSplineLocal + * @param {GameObject} gameObject:GameObject Gameobject that you wish to move + * @param {Vector3[]} path:Vector3[] A set of points that define the curve(s) ex: ControlStart,Pt1,Pt2,Pt3,.. ..ControlEnd + * @param {float} time:float The time to complete the tween in + * @return {LTDescr} LTDescr an object that distinguishes the tween + * @example + * Javascript:
    + * LeanTween.moveSpline(gameObject, [Vector3(0,0,0),Vector3(1,0,0),Vector3(1,0,0),Vector3(1,0,1)], 2.0) .setEase(LeanTweenType.easeOutQuad).setOrientToPath(true);

    + * C#:
    + * LeanTween.moveSpline(gameObject, new Vector3[]{new Vector3(0f,0f,0f),new Vector3(1f,0f,0f),new Vector3(1f,0f,0f),new Vector3(1f,0f,1f)}, 1.5f).setEase(LeanTweenType.easeOutQuad).setOrientToPath(true);
    + */ + public static LTDescr moveSplineLocal(GameObject gameObject, Vector3[] to, float time){ + d = options().setMoveSplineLocal(); + d.optional.spline = new LTSpline( to ); + + return pushNewTween( gameObject, new Vector3(1.0f,0.0f,0.0f), time, d ); + } + + /** + * Move a GUI Element to a certain location + * + * @method LeanTween.move (GUI) + * @param {LTRect} ltRect:LTRect ltRect LTRect object that you wish to move + * @param {Vector2} vec:Vector2 to The final position with which to move to (pixel coordinates) + * @param {float} time:float time The time to complete the tween in + * @return {LTDescr} LTDescr an object that distinguishes the tween + */ + public static LTDescr move(LTRect ltRect, Vector2 to, float time){ + return pushNewTween( tweenEmpty, to, time, options().setGUIMove().setRect( ltRect ) ); + } + + public static LTDescr moveMargin(LTRect ltRect, Vector2 to, float time){ + return pushNewTween( tweenEmpty, to, time, options().setGUIMoveMargin().setRect( ltRect ) ); + } + + /** + * Move a GameObject along the x-axis + * + * @method LeanTween.moveX + * @param {GameObject} gameObject:GameObject gameObject Gameobject that you wish to move + * @param {float} to:float to The final position with which to move to + * @param {float} time:float time The time to complete the move in + * @return {LTDescr} LTDescr an object that distinguishes the tween + */ + public static LTDescr moveX(GameObject gameObject, float to, float time){ + return pushNewTween( gameObject, new Vector3(to,0,0), time, options().setMoveX() ); + } + + /** + * Move a GameObject along the y-axis + * + * @method LeanTween.moveY + * @param {GameObject} GameObject gameObject Gameobject that you wish to move + * @param {float} float to The final position with which to move to + * @param {float} float time The time to complete the move in + * @return {LTDescr} LTDescr an object that distinguishes the tween + */ + public static LTDescr moveY(GameObject gameObject, float to, float time){ + return pushNewTween( gameObject, new Vector3(to,0,0), time, options().setMoveY() ); + } + + /** + * Move a GameObject along the z-axis + * + * @method LeanTween.moveZ + * @param {GameObject} GameObject gameObject Gameobject that you wish to move + * @param {float} float to The final position with which to move to + * @param {float} float time The time to complete the move in + * @return {LTDescr} LTDescr an object that distinguishes the tween + */ + public static LTDescr moveZ(GameObject gameObject, float to, float time){ + return pushNewTween( gameObject, new Vector3(to,0,0), time, options().setMoveZ() ); + } + + /** + * Move a GameObject to a certain location relative to the parent transform. + * + * @method LeanTween.moveLocal + * @param {GameObject} GameObject gameObject Gameobject that you wish to rotate + * @param {Vector3} Vector3 to The final positin with which to move to + * @param {float} float time The time to complete the tween in + * @return {LTDescr} LTDescr an object that distinguishes the tween + */ + public static LTDescr moveLocal(GameObject gameObject, Vector3 to, float time){ + return pushNewTween( gameObject, to, time, options().setMoveLocal() ); + } + + /** + * Move a GameObject along a set of bezier curves, in local space + * + * @method LeanTween.moveLocal + * @param {GameObject} gameObject:GameObject Gameobject that you wish to move + * @param {Vector3[]} path:Vector3[] A set of points that define the curve(s) ex: Point1,Handle1,Handle2,Point2,... + * @param {float} time:float The time to complete the tween in + * @return {LTDescr} LTDescr an object that distinguishes the tween + * @example + * Javascript:
    + * LeanTween.moveLocal(gameObject, [Vector3(0,0,0),Vector3(1,0,0),Vector3(1,0,0),Vector3(1,0,1)], 2.0).setEase(LeanTweenType.easeOutQuad).setOrientToPath(true);

    + * C#:
    + * LeanTween.moveLocal(gameObject, new Vector3[]{Vector3(0f,0f,0f),Vector3(1f,0f,0f),Vector3(1f,0f,0f),Vector3(1f,0f,1f)}).setEase(LeanTweenType.easeOutQuad).setOrientToPath(true);
    + */ + public static LTDescr moveLocal(GameObject gameObject, Vector3[] to, float time){ + d = options().setMoveCurvedLocal(); + if(d.optional.path==null) + d.optional.path = new LTBezierPath( to ); + else + d.optional.path.setPoints( to ); + + return pushNewTween( gameObject, new Vector3(1.0f,0.0f,0.0f), time, d ); + } + + public static LTDescr moveLocalX(GameObject gameObject, float to, float time){ + return pushNewTween( gameObject, new Vector3(to,0,0), time, options().setMoveLocalX() ); + } + + public static LTDescr moveLocalY(GameObject gameObject, float to, float time){ + return pushNewTween( gameObject, new Vector3(to,0,0), time, options().setMoveLocalY() ); + } + + public static LTDescr moveLocalZ(GameObject gameObject, float to, float time){ + return pushNewTween( gameObject, new Vector3(to,0,0), time, options().setMoveLocalZ() ); + } + + public static LTDescr moveLocal(GameObject gameObject, LTBezierPath to, float time) { + d = options().setMoveCurvedLocal(); + d.optional.path = to; + + return pushNewTween(gameObject, new Vector3(1.0f, 0.0f, 0.0f), time, d); + } + public static LTDescr moveLocal(GameObject gameObject, LTSpline to, float time) { + d = options().setMoveSplineLocal(); + d.optional.spline = to; + + return pushNewTween(gameObject, new Vector3(1.0f, 0.0f, 0.0f), time, d); + } + + /** + * Move a GameObject to another transform + * + * @method LeanTween.move + * @param {GameObject} gameObject:GameObject Gameobject that you wish to move + * @param {Transform} destination:Transform Transform whose position the tween will finally end on + * @param {float} time:float time The time to complete the tween in + * @return {LTDescr} LTDescr an object that distinguishes the tween + * @example LeanTween.move(gameObject, anotherTransform, 2.0f) .setEase( LeanTweenType.easeOutQuad ); + */ + public static LTDescr move(GameObject gameObject, Transform to, float time){ + return pushNewTween(gameObject, Vector3.zero, time, options().setTo(to).setMoveToTransform() ); + } + + /** + * Rotate a GameObject, to values are in passed in degrees + * + * @method LeanTween.rotate + * @param {GameObject} GameObject gameObject Gameobject that you wish to rotate + * @param {Vector3} Vector3 to The final rotation with which to rotate to + * @param {float} float time The time to complete the tween in + * @return {LTDescr} LTDescr an object that distinguishes the tween + * @example LeanTween.rotate(cube, new Vector3(180f,30f,0f), 1.5f); + */ + + public static LTDescr rotate(GameObject gameObject, Vector3 to, float time){ + return pushNewTween( gameObject, to, time, options().setRotate() ); + } + + /** + * Rotate a GUI element (using an LTRect object), to a value that is in degrees + * + * @method LeanTween.rotate + * @param {LTRect} ltRect:LTRect LTRect that you wish to rotate + * @param {float} to:float The final rotation with which to rotate to + * @param {float} time:float The time to complete the tween in + * @param {Array} optional:Array Object Array where you can pass optional items. + * @return {LTDescr} LTDescr an object that distinguishes the tween + * @example + * if(GUI.Button(buttonRect.rect, "Rotate"))
    + * LeanTween.rotate( buttonRect4, 150.0f, 1.0f).setEase(LeanTweenType.easeOutElastic);
    + * GUI.matrix = Matrix4x4.identity;
    + */ + public static LTDescr rotate(LTRect ltRect, float to, float time){ + return pushNewTween( tweenEmpty, new Vector3(to,0f,0f), time, options().setGUIRotate().setRect( ltRect ) ); + } + + /** + * Rotate a GameObject in the objects local space (on the transforms localEulerAngles object) + * + * @method LeanTween.rotateLocal + * @param {GameObject} gameObject:GameObject Gameobject that you wish to rotate + * @param {Vector3} to:Vector3 The final rotation with which to rotate to + * @param {float} time:float The time to complete the rotation in + * @return {LTDescr} LTDescr an object that distinguishes the tween + */ + public static LTDescr rotateLocal(GameObject gameObject, Vector3 to, float time){ + return pushNewTween( gameObject, to, time, options().setRotateLocal() ); + } + + /** + * Rotate a GameObject only on the X axis Rotate a GameObject only on the X axis + * + * @method LeanTween.rotateX + * @param {GameObject} GameObject Gameobject that you wish to rotate + * @param {float} to:float The final x-axis rotation with which to rotate + * @param {float} time:float The time to complete the rotation in + * @return {LTDescr} LTDescr an object that distinguishes the tween + */ + public static LTDescr rotateX(GameObject gameObject, float to, float time){ + return pushNewTween( gameObject, new Vector3(to,0,0), time, options().setRotateX() ); + } + + /** + * Rotate a GameObject only on the Y axis + * + * @method LeanTween.rotateY + * @param {GameObject} GameObject Gameobject that you wish to rotate + * @param {float} to:float The final y-axis rotation with which to rotate + * @param {float} time:float The time to complete the rotation in + * @return {LTDescr} LTDescr an object that distinguishes the tween + */ + public static LTDescr rotateY(GameObject gameObject, float to, float time){ + return pushNewTween( gameObject, new Vector3(to,0,0), time, options().setRotateY() ); + } + + /** + * Rotate a GameObject only on the Z axis + * + * @method LeanTween.rotateZ + * @param {GameObject} GameObject Gameobject that you wish to rotate + * @param {float} to:float The final z-axis rotation with which to rotate + * @param {float} time:float The time to complete the rotation in + * @return {LTDescr} LTDescr an object that distinguishes the tween + */ + public static LTDescr rotateZ(GameObject gameObject, float to, float time){ + return pushNewTween( gameObject, new Vector3(to,0,0), time, options().setRotateZ() ); + } + + /** + * Rotate a GameObject around a certain Axis (the best method to use when you want to rotate beyond 180 degrees) + * + * @method LeanTween.rotateAround + * @param {GameObject} gameObject:GameObject Gameobject that you wish to rotate + * @param {Vector3} vec:Vector3 axis in which to rotate around ex: Vector3.up + * @param {float} degrees:float the degrees in which to rotate + * @param {float} time:float time The time to complete the rotation in + * @return {LTDescr} LTDescr an object that distinguishes the tween + * @example + * Example:
    + * LeanTween.rotateAround ( gameObject, Vector3.left, 90f, 1f ); + */ + public static LTDescr rotateAround(GameObject gameObject, Vector3 axis, float add, float time){ + return pushNewTween( gameObject, new Vector3(add,0f,0f), time, options().setAxis(axis).setRotateAround() ); + } + + /** + * Rotate a GameObject around a certain Axis in Local Space (the best method to use when you want to rotate beyond 180 degrees) + * + * @method LeanTween.rotateAroundLocal + * @param {GameObject} gameObject:GameObject Gameobject that you wish to rotate + * @param {Vector3} vec:Vector3 axis in which to rotate around ex: Vector3.up + * @param {float} degrees:float the degrees in which to rotate + * @param {float} time:float time The time to complete the rotation in + * @return {LTDescr} LTDescr an object that distinguishes the tween + * @example + * Example:
    + * LeanTween.rotateAround ( gameObject, Vector3.left, 90f, 1f ); + */ + public static LTDescr rotateAroundLocal(GameObject gameObject, Vector3 axis, float add, float time){ + return pushNewTween( gameObject, new Vector3(add,0f,0f), time, options().setRotateAroundLocal().setAxis(axis) ); + } + + /** + * Scale a GameObject to a certain size + * + * @method LeanTween.scale + * @param {GameObject} gameObject:GameObject gameObject Gameobject that you wish to scale + * @param {Vector3} vec:Vector3 to The size with which to tween to + * @param {float} time:float time The time to complete the tween in + * @return {LTDescr} LTDescr an object that distinguishes the tween + */ + public static LTDescr scale(GameObject gameObject, Vector3 to, float time){ + return pushNewTween( gameObject, to, time, options().setScale() ); + } + + /** + * Scale a GUI Element to a certain width and height + * + * @method LeanTween.scale (GUI) + * @param {LTRect} LTRect ltRect LTRect object that you wish to move + * @param {Vector2} Vector2 to The final width and height to scale to (pixel based) + * @param {float} float time The time to complete the tween in + * @return {LTDescr} LTDescr an object that distinguishes the tween + * @example + * Example Javascript:
    + * var bRect:LTRect = new LTRect( 0, 0, 100, 50 );
    + * LeanTween.scale( bRect, Vector2(bRect.rect.width, bRect.rect.height) * 1.3, 0.25 ).setEase(LeanTweenType.easeOutBounce);
    + * function OnGUI(){
    + *   if(GUI.Button(bRect.rect, "Scale")){ }
    + * }
    + *
    + * Example C#:
    + * LTRect bRect = new LTRect( 0f, 0f, 100f, 50f );
    + * LeanTween.scale( bRect, new Vector2(150f,75f), 0.25f ).setEase(LeanTweenType.easeOutBounce);
    + * void OnGUI(){
    + *   if(GUI.Button(bRect.rect, "Scale")){ }
    + * }
    + */ + public static LTDescr scale(LTRect ltRect, Vector2 to, float time){ + return pushNewTween( tweenEmpty, to, time, options().setGUIScale().setRect( ltRect ) ); + } + + /** + * Scale a GameObject to a certain size along the x-axis only + * + * @method LeanTween.scaleX + * @param {GameObject} gameObject:GameObject Gameobject that you wish to scale + * @param {float} scaleTo:float the size with which to scale to + * @param {float} time:float the time to complete the tween in + * @return {LTDescr} LTDescr an object that distinguishes the tween + */ + public static LTDescr scaleX(GameObject gameObject, float to, float time){ + return pushNewTween( gameObject, new Vector3(to,0,0), time, options().setScaleX() ); + } + + /** + * Scale a GameObject to a certain size along the y-axis only + * + * @method LeanTween.scaleY + * @param {GameObject} gameObject:GameObject Gameobject that you wish to scale + * @param {float} scaleTo:float the size with which to scale to + * @param {float} time:float the time to complete the tween in + * @return {LTDescr} LTDescr an object that distinguishes the tween + */ + public static LTDescr scaleY(GameObject gameObject, float to, float time){ + return pushNewTween( gameObject, new Vector3(to,0,0), time, options().setScaleY() ); + } + + /** + * Scale a GameObject to a certain size along the z-axis only + * + * @method LeanTween.scaleZ + * @param {GameObject} gameObject:GameObject Gameobject that you wish to scale + * @param {float} scaleTo:float the size with which to scale to + * @param {float} time:float the time to complete the tween in + * @return {LTDescr} LTDescr an object that distinguishes the tween + */ + public static LTDescr scaleZ(GameObject gameObject, float to, float time){ + return pushNewTween( gameObject, new Vector3(to,0,0), time, options().setScaleZ()); + } + + /** + * Tween any particular value (float) + * + * @method LeanTween.value (float) + * @param {GameObject} gameObject:GameObject Gameobject that you wish to attach the tween to + * @param {float} from:float The original value to start the tween from + * @param {Vector3} to:float The final float with which to tween to + * @param {float} time:float The time to complete the tween in + * @return {LTDescr} LTDescr an object that distinguishes the tween + * @example + * Example Javascript:
    + * LeanTween.value( gameObject, 1f, 5f, 5f).setOnUpdate( function( val:float ){
    + *  Debug.Log("tweened val:"+val);
    + * } );
    + *
    + * Example C#:
    + * LeanTween.value( gameObject, 1f, 5f, 5f).setOnUpdate( (float val)=>{
    + *  Debug.Log("tweened val:"+val);
    + * } );
    + */ + public static LTDescr value(GameObject gameObject, float from, float to, float time){ + return pushNewTween( gameObject, new Vector3(to,0,0), time, options().setCallback().setFrom( new Vector3(from,0,0) ) ); + } + public static LTDescr value(float from, float to, float time){ + return pushNewTween( tweenEmpty, new Vector3(to,0,0), time, options().setCallback().setFrom( new Vector3(from,0,0) ) ); + } + + /** + * Tween any particular value (Vector2) + * + * @method LeanTween.value (Vector2) + * @param {GameObject} gameObject:GameObject Gameobject that you wish to attach the tween to + * @param {Vector2} from:Vector2 The original value to start the tween from + * @param {Vector3} to:Vector2 The final Vector2 with which to tween to + * @param {float} time:float The time to complete the tween in + * @return {LTDescr} LTDescr an object that distinguishes the tween + * @example + * Example Javascript:
    + * LeanTween.value( gameObject, new Vector2(1f,0f), new Vector3(5f,0f), 5f).setOnUpdate( function( val:Vector2 ){
    + *  Debug.Log("tweened val:"+val);
    + * } );
    + *
    + * Example C#:
    + * LeanTween.value( gameObject, new Vector3(1f,0f), new Vector3(5f,0f), 5f).setOnUpdate( (Vector2 val)=>{
    + *  Debug.Log("tweened val:"+val);
    + * } );
    + */ + public static LTDescr value(GameObject gameObject, Vector2 from, Vector2 to, float time){ + return pushNewTween( gameObject, new Vector3(to.x,to.y,0), time, options().setValue3().setTo( new Vector3(to.x,to.y,0f) ).setFrom( new Vector3(from.x,from.y,0) ) ); + } + + /** + * Tween any particular value (Vector3) + * + * @method LeanTween.value (Vector3) + * @param {GameObject} gameObject:GameObject Gameobject that you wish to attach the tween to + * @param {Vector3} from:Vector3 The original value to start the tween from + * @param {Vector3} to:Vector3 The final Vector3 with which to tween to + * @param {float} time:float The time to complete the tween in + * @return {LTDescr} LTDescr an object that distinguishes the tween + * @example + * Example Javascript:
    + * LeanTween.value( gameObject, new Vector3(1f,0f,0f), new Vector3(5f,0f,0f), 5f).setOnUpdate( function( val:Vector3 ){
    + *  Debug.Log("tweened val:"+val);
    + * } );
    + *
    + * Example C#:
    + * LeanTween.value( gameObject, new Vector3(1f,0f,0f), new Vector3(5f,0f,0f), 5f).setOnUpdate( (Vector3 val)=>{
    + *  Debug.Log("tweened val:"+val);
    + * } );
    + */ + public static LTDescr value(GameObject gameObject, Vector3 from, Vector3 to, float time){ + return pushNewTween( gameObject, to, time, options().setValue3().setFrom( from ) ); + } + + /** + * Tween any particular value (Color) + * + * @method LeanTween.value (Color) + * @param {GameObject} gameObject:GameObject Gameobject that you wish to attach the tween to + * @param {Color} from:Color The original value to start the tween from + * @param {Color} to:Color The final Color with which to tween to + * @param {float} time:float The time to complete the tween in + * @return {LTDescr} LTDescr an object that distinguishes the tween + * @example + * Example Javascript:
    + * LeanTween.value( gameObject, Color.red, Color.yellow, 5f).setOnUpdate( function( val:Color ){
    + *  Debug.Log("tweened val:"+val);
    + * } );
    + *
    + * Example C#:
    + * LeanTween.value( gameObject, Color.red, Color.yellow, 5f).setOnUpdate( (Color val)=>{
    + *  Debug.Log("tweened val:"+val);
    + * } );
    + */ + public static LTDescr value(GameObject gameObject, Color from, Color to, float time){ + LTDescr lt = pushNewTween( gameObject, new Vector3(1f, to.a, 0f), time, options().setCallbackColor().setPoint( new Vector3(to.r, to.g, to.b) ) + .setFromColor(from).setHasInitialized(false) ); + + #if !UNITY_3_5 && !UNITY_4_0 && !UNITY_4_0_1 && !UNITY_4_1 && !UNITY_4_2 + SpriteRenderer ren = gameObject.GetComponent(); + lt.spriteRen = ren; + #endif + return lt; + } + + /** + * Tween any particular value, it does not need to be tied to any particular type or GameObject + * + * @method LeanTween.value (float) + * @param {GameObject} GameObject gameObject GameObject with which to tie the tweening with. This is only used when you need to cancel this tween, it does not actually perform any operations on this gameObject + * @param {Action} callOnUpdate:Action The function that is called on every Update frame, this function needs to accept a float value ex: function updateValue( float val ){ } + * @param {float} float from The original value to start the tween from + * @param {float} float to The value to end the tween on + * @param {float} float time The time to complete the tween in + * @return {LTDescr} LTDescr an object that distinguishes the tween + * @example + * Example Javascript:
    + * LeanTween.value( gameObject, updateValueExampleCallback, 180f, 270f, 1f).setEase(LeanTweenType.easeOutElastic);
    + * function updateValueExampleCallback( val:float ){
    + *   Debug.Log("tweened value:"+val+" set this to whatever variable you are tweening...");
    + * }
    + *
    + * Example C#:
    + * LeanTween.value( gameObject, updateValueExampleCallback, 180f, 270f, 1f).setEase(LeanTweenType.easeOutElastic);
    + * void updateValueExampleCallback( float val ){
    + *   Debug.Log("tweened value:"+val+" set this to whatever variable you are tweening...");
    + * }
    + */ + + public static LTDescr value(GameObject gameObject, Action callOnUpdate, float from, float to, float time){ + return pushNewTween( gameObject, new Vector3(to,0,0), time, options().setCallback().setTo( new Vector3(to,0,0) ).setFrom( new Vector3(from,0,0) ).setOnUpdate(callOnUpdate) ); + } + + /** + * Tweens any float value, it does not need to be tied to any particular type or GameObject + * + * @method LeanTween.value (float) + * @param {GameObject} GameObject gameObject GameObject with which to tie the tweening with. This is only used when you need to cancel this tween, it does not actually perform any operations on this gameObject + * @param {Action} callOnUpdateRatio:Action Function that's called every Update frame. It must accept two float values ex: function updateValue( float val, float ratio){ } + * @param {float} float from The original value to start the tween from + * @param {float} float to The value to end the tween on + * @param {float} float time The time to complete the tween in + * @return {LTDescr} LTDescr an object that distinguishes the tween + * @example + * Example Javascript:
    + * LeanTween.value( gameObject, updateValueExampleCallback, 180f, 270f, 1f).setEase(LeanTweenType.easeOutElastic);
    + * function updateValueExampleCallback( val:float, ratio:float ){
    + *   Debug.Log("tweened value:"+val+" percent complete:"+ratio*100);
    + * }
    + *
    + * Example C#:
    + * LeanTween.value( gameObject, updateValueExampleCallback, 180f, 270f, 1f).setEase(LeanTweenType.easeOutElastic);
    + * void updateValueExampleCallback( float val, float ratio ){
    + *   Debug.Log("tweened value:"+val+" percent complete:"+ratio*100);
    + * }
    + */ + + public static LTDescr value(GameObject gameObject, Action callOnUpdateRatio, float from, float to, float time) { + return pushNewTween(gameObject, new Vector3(to, 0, 0), time, options().setCallback().setTo(new Vector3(to, 0, 0)).setFrom(new Vector3(from, 0, 0)).setOnUpdateRatio(callOnUpdateRatio)); + } + + /** + * Tween from one color to another + * + * @method LeanTween.value (Color) + * @param {GameObject} GameObject gameObject GameObject with which to tie the tweening with. This is only used when you need to cancel this tween, it does not actually perform any operations on this gameObject + * @param {Action} callOnUpdate:Action The function that is called on every Update frame, this function needs to accept a color value ex: function updateValue( Color val ){ } + * @param {Color} Color from The original value to start the tween from + * @param {Color} Color to The value to end the tween on + * @param {Color} Color time The time to complete the tween in + * @return {LTDescr} LTDescr an object that distinguishes the tween + * @example + * Example Javascript:
    + * LeanTween.value( gameObject, updateValueExampleCallback, Color.red, Color.green, 1f).setEase(LeanTweenType.easeOutElastic);
    + * function updateValueExampleCallback( val:Color ){
    + *   Debug.Log("tweened color:"+val+" set this to whatever variable you are tweening...");
    + * }
    + *
    + * Example C#:
    + * LeanTween.value( gameObject, updateValueExampleCallback, Color.red, Color.green, 1f).setEase(LeanTweenType.easeOutElastic);
    + * void updateValueExampleCallback( Color val ){
    + *   Debug.Log("tweened color:"+val+" set this to whatever variable you are tweening...");
    + * }
    + */ + + public static LTDescr value(GameObject gameObject, Action callOnUpdate, Color from, Color to, float time){ + return pushNewTween( gameObject, new Vector3(1.0f,to.a,0.0f), time, options().setCallbackColor().setPoint( new Vector3(to.r, to.g, to.b) ) + .setAxis( new Vector3(from.r, from.g, from.b) ).setFrom( new Vector3(0.0f, from.a, 0.0f) ).setHasInitialized(false).setOnUpdateColor(callOnUpdate) ); + } + public static LTDescr value(GameObject gameObject, Action callOnUpdate, Color from, Color to, float time){ + return pushNewTween( gameObject, new Vector3(1.0f,to.a,0.0f), time, options().setCallbackColor().setPoint( new Vector3(to.r, to.g, to.b) ) + .setAxis( new Vector3(from.r, from.g, from.b) ).setFrom( new Vector3(0.0f, from.a, 0.0f) ).setHasInitialized(false).setOnUpdateColor(callOnUpdate) ); + } + + /** + * Tween any particular value (Vector2), this could be used to tween an arbitrary value like offset property + * + * @method LeanTween.value (Vector2) + * @param {GameObject} gameObject:GameObject Gameobject that you wish to attach the tween to + * @param {Action} callOnUpdate:Action The function that is called on every Update frame, this function needs to accept a float value ex: function updateValue( Vector3 val ){ } + * @param {float} from:Vector2 The original value to start the tween from + * @param {Vector2} to:Vector2 The final Vector3 with which to tween to + * @param {float} time:float The time to complete the tween in + * @return {LTDescr} LTDescr an object that distinguishes the tween + */ + public static LTDescr value(GameObject gameObject, Action callOnUpdate, Vector2 from, Vector2 to, float time){ + return pushNewTween( gameObject, new Vector3(to.x,to.y,0f), time, options().setValue3().setTo( new Vector3(to.x,to.y,0f) ).setFrom( new Vector3(from.x,from.y,0f) ).setOnUpdateVector2(callOnUpdate) ); + } + + /** + * Tween any particular value (Vector3), this could be used to tween an arbitrary property that uses a Vector + * + * @method LeanTween.value (Vector3) + * @param {GameObject} gameObject:GameObject Gameobject that you wish to attach the tween to + * @param {Action} callOnUpdate:Action The function that is called on every Update frame, this function needs to accept a float value ex: function updateValue( Vector3 val ){ } + * @param {float} from:Vector3 The original value to start the tween from + * @param {Vector3} to:Vector3 The final Vector3 with which to tween to + * @param {float} time:float The time to complete the tween in + * @return {LTDescr} LTDescr an object that distinguishes the tween + */ + public static LTDescr value(GameObject gameObject, Action callOnUpdate, Vector3 from, Vector3 to, float time){ + return pushNewTween( gameObject, to, time, options().setValue3().setTo( to ).setFrom( from ).setOnUpdateVector3(callOnUpdate) ); + } + + /** + * Tween any particular value (float) + * + * @method LeanTween.value (float,object) + * @param {GameObject} gameObject:GameObject Gameobject that you wish to attach the tween to + * @param {Action} callOnUpdate:Action The function that is called on every Update frame, this function needs to accept a float value ex: function updateValue( Vector3 val, object obj ){ } + * @param {float} from:float The original value to start the tween from + * @param {Vector3} to:float The final Vector3 with which to tween to + * @param {float} time:float The time to complete the tween in + * @return {LTDescr} LTDescr an object that distinguishes the tween + */ + public static LTDescr value(GameObject gameObject, Action callOnUpdate, float from, float to, float time){ + return pushNewTween( gameObject, new Vector3(to,0,0), time, options().setCallback().setTo( new Vector3(to,0,0) ).setFrom( new Vector3(from,0,0) ).setOnUpdate(callOnUpdate, gameObject) ); + } + + public static LTDescr delayedSound( AudioClip audio, Vector3 pos, float volume ){ + //Debug.LogError("Delay sound??"); + return pushNewTween( tweenEmpty, pos, 0f, options().setDelayedSound().setTo( pos ).setFrom( new Vector3(volume,0,0) ).setAudio( audio ) ); + } + + public static LTDescr delayedSound( GameObject gameObject, AudioClip audio, Vector3 pos, float volume ){ + //Debug.LogError("Delay sound??"); + return pushNewTween( gameObject, pos, 0f, options().setDelayedSound().setTo( pos ).setFrom( new Vector3(volume,0,0) ).setAudio( audio ) ); + } + + #if !UNITY_3_5 && !UNITY_4_0 && !UNITY_4_0_1 && !UNITY_4_1 && !UNITY_4_2 && !UNITY_4_3 && !UNITY_4_5 + + /** + * Move a RectTransform object (used in Unity GUI in 4.6+, for Buttons, Panel, Scrollbar, etc...) + * + * @method LeanTween.move (RectTransform) + * @param {RectTransform} rectTrans:RectTransform RectTransform that you wish to attach the tween to + * @param {Vector3} to:Vector3 The final Vector3 with which to tween to + * @param {float} time:float The time to complete the tween in + * @return {LTDescr} LTDescr an object that distinguishes the tween + * @example LeanTween.move(gameObject.GetComponent<RectTransform>(), new Vector3(200f,-100f,0f), 1f).setDelay(1f); + */ + public static LTDescr move(RectTransform rectTrans, Vector3 to, float time){ + return pushNewTween( rectTrans.gameObject, to, time, options().setCanvasMove().setRect( rectTrans ) ); + } + + /** + * Move a RectTransform object affecting x-axis only (used in Unity GUI in 4.6+, for Buttons, Panel, Scrollbar, etc...) + * + * @method LeanTween.moveX (RectTransform) + * @param {RectTransform} rectTrans:RectTransform RectTransform that you wish to attach the tween to + * @param {float} to:float The final x location with which to tween to + * @param {float} time:float The time to complete the tween in + * @return {LTDescr} LTDescr an object that distinguishes the tween + * @example LeanTween.moveX(gameObject.GetComponent<RectTransform>(), 200f, 1f).setDelay(1f); + */ + public static LTDescr moveX(RectTransform rectTrans, float to, float time){ + return pushNewTween( rectTrans.gameObject, new Vector3(to,0f,0f), time, options().setCanvasMoveX().setRect( rectTrans ) ); + } + + /** + * Move a RectTransform object affecting y-axis only (used in Unity GUI in 4.6+, for Buttons, Panel, Scrollbar, etc...) + * + * @method LeanTween.moveY (RectTransform) + * @param {RectTransform} rectTrans:RectTransform RectTransform that you wish to attach the tween to + * @param {float} to:float The final y location with which to tween to + * @param {float} time:float The time to complete the tween in + * @return {LTDescr} LTDescr an object that distinguishes the tween + * @example LeanTween.moveY(gameObject.GetComponent<RectTransform>(), 200f, 1f).setDelay(1f); + */ + public static LTDescr moveY(RectTransform rectTrans, float to, float time){ + return pushNewTween( rectTrans.gameObject, new Vector3(to,0f,0f), time, options().setCanvasMoveY().setRect( rectTrans ) ); + } + + /** + * Move a RectTransform object affecting z-axis only (used in Unity GUI in 4.6+, for Buttons, Panel, Scrollbar, etc...)n + * + * @method LeanTween.moveZ (RectTransform) + * @param {RectTransform} rectTrans:RectTransform RectTransform that you wish to attach the tween to + * @param {float} to:float The final x location with which to tween to + * @param {float} time:float The time to complete the tween in + * @return {LTDescr} LTDescr an object that distinguishes the tween + * @example LeanTween.moveZ(gameObject.GetComponent<RectTransform>(), 200f, 1f).setDelay(1f); + */ + public static LTDescr moveZ(RectTransform rectTrans, float to, float time){ + return pushNewTween( rectTrans.gameObject, new Vector3(to,0f,0f), time, options().setCanvasMoveZ().setRect( rectTrans ) ); + } + + /** + * Rotate a RectTransform object (used in Unity GUI in 4.6+, for Buttons, Panel, Scrollbar, etc...) + * + * @method LeanTween.rotate (RectTransform) + * @param {RectTransform} rectTrans:RectTransform RectTransform that you wish to attach the tween to + * @param {float} to:float The degree with which to rotate the RectTransform + * @param {float} time:float The time to complete the tween in + * @return {LTDescr} LTDescr an object that distinguishes the tween + * @example LeanTween.rotate(gameObject.GetComponent<RectTransform>(), 90f, 1f).setDelay(1f); + */ + public static LTDescr rotate(RectTransform rectTrans, float to, float time){ + return pushNewTween( rectTrans.gameObject, new Vector3(to,0f,0f), time, options().setCanvasRotateAround().setRect( rectTrans ).setAxis(Vector3.forward) ); + } + + public static LTDescr rotate(RectTransform rectTrans, Vector3 to, float time){ + return pushNewTween( rectTrans.gameObject, to, time, options().setCanvasRotateAround().setRect( rectTrans ).setAxis(Vector3.forward) ); + } + + /** + * Rotate a RectTransform object (used in Unity GUI in 4.6+, for Buttons, Panel, Scrollbar, etc...) + * + * @method LeanTween.rotateAround (RectTransform) + * @param {RectTransform} rectTrans:RectTransform RectTransform that you wish to attach the tween to + * @param {Vector3} axis:Vector3 The axis in which to rotate the RectTransform (Vector3.forward is most commonly used) + * @param {float} to:float The degree with which to rotate the RectTransform + * @param {float} time:float The time to complete the tween in + * @return {LTDescr} LTDescr an object that distinguishes the tween + * @example LeanTween.rotateAround(gameObject.GetComponent<RectTransform>(), Vector3.forward, 90f, 1f).setDelay(1f); + */ + public static LTDescr rotateAround(RectTransform rectTrans, Vector3 axis, float to, float time){ + return pushNewTween( rectTrans.gameObject, new Vector3(to,0f,0f), time, options().setCanvasRotateAround().setRect( rectTrans ).setAxis(axis) ); + } + + /** + * Rotate a RectTransform object around it's local axis (used in Unity GUI in 4.6+, for Buttons, Panel, Scrollbar, etc...) + * + * @method LeanTween.rotateAroundLocal (RectTransform) + * @param {RectTransform} rectTrans:RectTransform RectTransform that you wish to attach the tween to + * @param {Vector3} axis:Vector3 The local axis in which to rotate the RectTransform (Vector3.forward is most commonly used) + * @param {float} to:float The degree with which to rotate the RectTransform + * @param {float} time:float The time to complete the tween in + * @return {LTDescr} LTDescr an object that distinguishes the tween + * @example LeanTween.rotateAroundLocal(gameObject.GetComponent<RectTransform>(), Vector3.forward, 90f, 1f).setDelay(1f); + */ + public static LTDescr rotateAroundLocal(RectTransform rectTrans, Vector3 axis, float to, float time){ + return pushNewTween( rectTrans.gameObject, new Vector3(to,0f,0f), time, options().setCanvasRotateAroundLocal().setRect( rectTrans ).setAxis(axis) ); + } + + /** + * Scale a RectTransform object (used in Unity GUI in 4.6+, for Buttons, Panel, Scrollbar, etc...) + * + * @method LeanTween.scale (RectTransform) + * @param {RectTransform} rectTrans:RectTransform RectTransform that you wish to attach the tween to + * @param {Vector3} to:Vector3 The final Vector3 with which to tween to (localScale) + * @param {float} time:float The time to complete the tween in + * @return {LTDescr} LTDescr an object that distinguishes the tween + * @example LeanTween.scale(gameObject.GetComponent<RectTransform>(), gameObject.GetComponent<RectTransform>().localScale*2f, 1f).setDelay(1f); + */ + public static LTDescr scale(RectTransform rectTrans, Vector3 to, float time){ + return pushNewTween( rectTrans.gameObject, to, time, options().setCanvasScale().setRect( rectTrans ) ); + } + + /** + * Change the sizeDelta of a RectTransform object (used in Unity Canvas, for Buttons, Panel, Scrollbar, etc...) + * + * @method LeanTween.size (RectTransform) + * @param {RectTransform} rectTrans:RectTransform RectTransform that you wish to attach the tween to + * @param {Vector2} to:Vector2 The final Vector2 the tween will end at for sizeDelta property + * @param {float} time:float The time to complete the tween in + * @return {LTDescr} LTDescr an object that distinguishes the tween + * @example LeanTween.size(gameObject.GetComponent<RectTransform>(), gameObject.GetComponent<RectTransform>().sizeDelta*2f, 1f).setDelay(1f); + */ + public static LTDescr size(RectTransform rectTrans, Vector2 to, float time){ + return pushNewTween( rectTrans.gameObject, to, time, options().setCanvasSizeDelta().setRect( rectTrans ) ); + } + + /** + * Alpha an Image Component attached to a RectTransform (used in Unity GUI in 4.6+, for Buttons, Panel, Scrollbar, etc...) + * + * @method LeanTween.alpha (RectTransform) + * @param {RectTransform} rectTrans:RectTransform RectTransform that you wish to attach the tween to + * @param {float} to:float The final Vector3 with which to tween to (localScale) + * @param {float} time:float The time to complete the tween in + * @return {LTDescr} LTDescr an object that distinguishes the tween + * @example LeanTween.alpha(gameObject.GetComponent<RectTransform>(), 0.5f, 1f).setDelay(1f); + */ + public static LTDescr alpha(RectTransform rectTrans, float to, float time){ + return pushNewTween( rectTrans.gameObject, new Vector3(to,0f,0f), time, options().setCanvasAlpha().setRect( rectTrans ) ); + } + + /** + * Change the Color of an Image Component attached to a RectTransform (used in Unity GUI in 4.6+, for Buttons, Panel, Scrollbar, etc...) + * + * @method LeanTween.alpha (RectTransform) + * @param {RectTransform} rectTrans:RectTransform RectTransform that you wish to attach the tween to + * @param {float} to:float The final Vector3 with which to tween to (localScale) + * @param {float} time:float The time to complete the tween in + * @return {LTDescr} LTDescr an object that distinguishes the tween + * @example LeanTween.color(gameObject.GetComponent<RectTransform>(), 0.5f, 1f).setDelay(1f); + */ + public static LTDescr color(RectTransform rectTrans, Color to, float time){ + return pushNewTween( rectTrans.gameObject, new Vector3(1.0f, to.a, 0.0f), time, options().setCanvasColor().setRect( rectTrans ).setPoint( new Vector3(to.r, to.g, to.b) ) ); + } + + #endif + + // Tweening Functions - Thanks to Robert Penner and GFX47 + + public static float tweenOnCurve( LTDescr tweenDescr, float ratioPassed ){ + // Debug.Log("single ratio:"+ratioPassed+" tweenDescr.animationCurve.Evaluate(ratioPassed):"+tweenDescr.animationCurve.Evaluate(ratioPassed)); + return tweenDescr.from.x + (tweenDescr.diff.x) * tweenDescr.optional.animationCurve.Evaluate(ratioPassed); + } + + public static Vector3 tweenOnCurveVector( LTDescr tweenDescr, float ratioPassed ){ + return new Vector3(tweenDescr.from.x + (tweenDescr.diff.x) * tweenDescr.optional.animationCurve.Evaluate(ratioPassed), + tweenDescr.from.y + (tweenDescr.diff.y) * tweenDescr.optional.animationCurve.Evaluate(ratioPassed), + tweenDescr.from.z + (tweenDescr.diff.z) * tweenDescr.optional.animationCurve.Evaluate(ratioPassed) ); + } + + public static float easeOutQuadOpt( float start, float diff, float ratioPassed ){ + return -diff * ratioPassed * (ratioPassed - 2) + start; + } + + public static float easeInQuadOpt( float start, float diff, float ratioPassed ){ + return diff * ratioPassed * ratioPassed + start; + } + + public static float easeInOutQuadOpt( float start, float diff, float ratioPassed ){ + ratioPassed /= .5f; + if (ratioPassed < 1) return diff / 2 * ratioPassed * ratioPassed + start; + ratioPassed--; + return -diff / 2 * (ratioPassed * (ratioPassed - 2) - 1) + start; + } + + public static Vector3 easeInOutQuadOpt( Vector3 start, Vector3 diff, float ratioPassed ){ + ratioPassed /= .5f; + if (ratioPassed < 1) return diff / 2 * ratioPassed * ratioPassed + start; + ratioPassed--; + return -diff / 2 * (ratioPassed * (ratioPassed - 2) - 1) + start; + } + + public static float linear(float start, float end, float val){ + return Mathf.Lerp(start, end, val); + } + + public static float clerp(float start, float end, float val){ + float min = 0.0f; + float max = 360.0f; + float half = Mathf.Abs((max - min) / 2.0f); + float retval = 0.0f; + float diff = 0.0f; + if ((end - start) < -half){ + diff = ((max - start) + end) * val; + retval = start + diff; + }else if ((end - start) > half){ + diff = -((max - end) + start) * val; + retval = start + diff; + }else retval = start + (end - start) * val; + return retval; + } + + public static float spring(float start, float end, float val ){ + val = Mathf.Clamp01(val); + val = (Mathf.Sin(val * Mathf.PI * (0.2f + 2.5f * val * val * val)) * Mathf.Pow(1f - val, 2.2f ) + val) * (1f + (1.2f * (1f - val) )); + return start + (end - start) * val; + } + + public static float easeInQuad(float start, float end, float val){ + end -= start; + return end * val * val + start; + } + + public static float easeOutQuad(float start, float end, float val){ + end -= start; + return -end * val * (val - 2) + start; + } + + public static float easeInOutQuad(float start, float end, float val){ + val /= .5f; + end -= start; + if (val < 1) return end / 2 * val * val + start; + val--; + return -end / 2 * (val * (val - 2) - 1) + start; + } + + + public static float easeInOutQuadOpt2(float start, float diffBy2, float val, float val2){ + val /= .5f; + if (val < 1) return diffBy2 * val2 + start; + val--; + return -diffBy2 * ((val2 - 2) - 1f) + start; + } + + public static float easeInCubic(float start, float end, float val){ + end -= start; + return end * val * val * val + start; + } + + public static float easeOutCubic(float start, float end, float val){ + val--; + end -= start; + return end * (val * val * val + 1) + start; + } + + public static float easeInOutCubic(float start, float end, float val){ + val /= .5f; + end -= start; + if (val < 1) return end / 2 * val * val * val + start; + val -= 2; + return end / 2 * (val * val * val + 2) + start; + } + + public static float easeInQuart(float start, float end, float val){ + end -= start; + return end * val * val * val * val + start; + } + + public static float easeOutQuart(float start, float end, float val){ + val--; + end -= start; + return -end * (val * val * val * val - 1) + start; + } + + public static float easeInOutQuart(float start, float end, float val){ + val /= .5f; + end -= start; + if (val < 1) return end / 2 * val * val * val * val + start; + val -= 2; + return -end / 2 * (val * val * val * val - 2) + start; + } + + public static float easeInQuint(float start, float end, float val){ + end -= start; + return end * val * val * val * val * val + start; + } + + public static float easeOutQuint(float start, float end, float val){ + val--; + end -= start; + return end * (val * val * val * val * val + 1) + start; + } + + public static float easeInOutQuint(float start, float end, float val){ + val /= .5f; + end -= start; + if (val < 1) return end / 2 * val * val * val * val * val + start; + val -= 2; + return end / 2 * (val * val * val * val * val + 2) + start; + } + + public static float easeInSine(float start, float end, float val){ + end -= start; + return -end * Mathf.Cos(val / 1 * (Mathf.PI / 2)) + end + start; + } + + public static float easeOutSine(float start, float end, float val){ + end -= start; + return end * Mathf.Sin(val / 1 * (Mathf.PI / 2)) + start; + } + + public static float easeInOutSine(float start, float end, float val){ + end -= start; + return -end / 2 * (Mathf.Cos(Mathf.PI * val / 1) - 1) + start; + } + + public static float easeInExpo(float start, float end, float val){ + end -= start; + return end * Mathf.Pow(2, 10 * (val / 1 - 1)) + start; + } + + public static float easeOutExpo(float start, float end, float val){ + end -= start; + return end * (-Mathf.Pow(2, -10 * val / 1) + 1) + start; + } + + public static float easeInOutExpo(float start, float end, float val){ + val /= .5f; + end -= start; + if (val < 1) return end / 2 * Mathf.Pow(2, 10 * (val - 1)) + start; + val--; + return end / 2 * (-Mathf.Pow(2, -10 * val) + 2) + start; + } + + public static float easeInCirc(float start, float end, float val){ + end -= start; + return -end * (Mathf.Sqrt(1 - val * val) - 1) + start; + } + + public static float easeOutCirc(float start, float end, float val){ + val--; + end -= start; + return end * Mathf.Sqrt(1 - val * val) + start; + } + + public static float easeInOutCirc(float start, float end, float val){ + val /= .5f; + end -= start; + if (val < 1) return -end / 2 * (Mathf.Sqrt(1 - val * val) - 1) + start; + val -= 2; + return end / 2 * (Mathf.Sqrt(1 - val * val) + 1) + start; + } + + public static float easeInBounce(float start, float end, float val){ + end -= start; + float d = 1f; + return end - easeOutBounce(0, end, d-val) + start; + } + + public static float easeOutBounce(float start, float end, float val){ + val /= 1f; + end -= start; + if (val < (1 / 2.75f)){ + return end * (7.5625f * val * val) + start; + }else if (val < (2 / 2.75f)){ + val -= (1.5f / 2.75f); + return end * (7.5625f * (val) * val + .75f) + start; + }else if (val < (2.5 / 2.75)){ + val -= (2.25f / 2.75f); + return end * (7.5625f * (val) * val + .9375f) + start; + }else{ + val -= (2.625f / 2.75f); + return end * (7.5625f * (val) * val + .984375f) + start; + } + } + + public static float easeInOutBounce(float start, float end, float val){ + end -= start; + float d= 1f; + if (val < d/2) return easeInBounce(0, end, val*2) * 0.5f + start; + else return easeOutBounce(0, end, val*2-d) * 0.5f + end*0.5f + start; + } + + public static float easeInBack(float start, float end, float val, float overshoot = 1.0f){ + end -= start; + val /= 1; + float s= 1.70158f * overshoot; + return end * (val) * val * ((s + 1) * val - s) + start; + } + + public static float easeOutBack(float start, float end, float val, float overshoot = 1.0f){ + float s = 1.70158f * overshoot; + end -= start; + val = (val / 1) - 1; + return end * ((val) * val * ((s + 1) * val + s) + 1) + start; + } + + public static float easeInOutBack(float start, float end, float val, float overshoot = 1.0f){ + float s = 1.70158f * overshoot; + end -= start; + val /= .5f; + if ((val) < 1){ + s *= (1.525f) * overshoot; + return end / 2 * (val * val * (((s) + 1) * val - s)) + start; + } + val -= 2; + s *= (1.525f) * overshoot; + return end / 2 * ((val) * val * (((s) + 1) * val + s) + 2) + start; + } + + public static float easeInElastic(float start, float end, float val, float overshoot = 1.0f, float period = 0.3f){ + end -= start; + + float p = period; + float s = 0f; + float a = 0f; + + if (val == 0f) return start; + + if (val == 1f) return start + end; + + if (a == 0f || a < Mathf.Abs(end)){ + a = end; + s = p / 4f; + }else{ + s = p / (2f * Mathf.PI) * Mathf.Asin(end / a); + } + + if(overshoot>1f && val>0.6f ) + overshoot = 1f + ((1f-val) / 0.4f * (overshoot-1f)); + // Debug.Log("ease in elastic val:"+val+" a:"+a+" overshoot:"+overshoot); + + val = val-1f; + return start-(a * Mathf.Pow(2f, 10f * val) * Mathf.Sin((val - s) * (2f * Mathf.PI) / p)) * overshoot; + } + + public static float easeOutElastic(float start, float end, float val, float overshoot = 1.0f, float period = 0.3f){ + end -= start; + + float p = period; + float s = 0f; + float a = 0f; + + if (val == 0f) return start; + + // Debug.Log("ease out elastic val:"+val+" a:"+a); + if (val == 1f) return start + end; + + if (a == 0f || a < Mathf.Abs(end)){ + a = end; + s = p / 4f; + }else{ + s = p / (2f * Mathf.PI) * Mathf.Asin(end / a); + } + if(overshoot>1f && val<0.4f ) + overshoot = 1f + (val / 0.4f * (overshoot-1f)); + // Debug.Log("ease out elastic val:"+val+" a:"+a+" overshoot:"+overshoot); + + return start + end + a * Mathf.Pow(2f, -10f * val) * Mathf.Sin((val - s) * (2f * Mathf.PI) / p) * overshoot; + } + + public static float easeInOutElastic(float start, float end, float val, float overshoot = 1.0f, float period = 0.3f) + { + end -= start; + + float p = period; + float s = 0f; + float a = 0f; + + if (val == 0f) return start; + + val = val / (1f/2f); + if (val == 2f) return start + end; + + if (a == 0f || a < Mathf.Abs(end)){ + a = end; + s = p / 4f; + }else{ + s = p / (2f * Mathf.PI) * Mathf.Asin(end / a); + } + + if(overshoot>1f){ + if( val<0.2f ){ + overshoot = 1f + (val / 0.2f * (overshoot-1f)); + }else if( val > 0.8f ){ + overshoot = 1f + ((1f-val) / 0.2f * (overshoot-1f)); + } + } + + if (val < 1f){ + val = val-1f; + return start - 0.5f * (a * Mathf.Pow(2f, 10f * val) * Mathf.Sin((val - s) * (2f * Mathf.PI) / p)) * overshoot; + } + val = val-1f; + return end + start + a * Mathf.Pow(2f, -10f * val) * Mathf.Sin((val - s) * (2f * Mathf.PI) / p) * 0.5f * overshoot; + } + + // Mark: LeanTween Following + + /** + * Follow another transforms position/scale/color with a damp transition (eases in and out to destination with no overshoot) + * + * @method LeanTween.followDamp + * @param {Transform} transform:Transform the transform you wish to be the follower + * @param {Transform} transform:Transform the transform you wish to follow + * @param {LeanProp} leanProp:LeanProp enum of the type of following you wish to do position, scale, color, etc. + * @param {float} smoothTime:float roughly the time it takes to reach the destination + * @param {float} [maxSpeed]:float maximum speed at which it moves towards the destination + * @example + * LeanTween.followDamp(transform, followTransform, LeanProp.localY, 1.1f); + */ + public static LTDescr followDamp(Transform trans, Transform target, LeanProp prop, float smoothTime, float maxSpeed = -1f) + { + var d = pushNewTween(trans.gameObject, Vector3.zero, float.MaxValue, options().setFollow().setTarget(target)); + + switch(prop){ + case LeanProp.localPosition: + d.optional.axis = d.trans.localPosition; + d.easeInternal = () => { + d.optional.axis = LeanSmooth.damp(d.optional.axis, d.toTrans.localPosition, ref d.fromInternal, smoothTime, maxSpeed, Time.deltaTime); + d.trans.localPosition = d.optional.axis + d.toInternal; + }; break; + case LeanProp.position: + d.diff = d.trans.position; + d.easeInternal = () => { + d.optional.axis = LeanSmooth.damp(d.optional.axis, d.toTrans.position, ref d.fromInternal, smoothTime, maxSpeed, Time.deltaTime); + d.trans.position = d.optional.axis + d.toInternal; + }; break; + case LeanProp.localX: + d.easeInternal = () => { + d.trans.LeanSetLocalPosX(LeanSmooth.damp(d.trans.localPosition.x, d.toTrans.localPosition.x, ref d.fromInternal.x, smoothTime, maxSpeed, Time.deltaTime)); + }; break; + case LeanProp.localY: + d.easeInternal = () => { + d.trans.LeanSetLocalPosY(LeanSmooth.damp(d.trans.localPosition.y, d.toTrans.localPosition.y, ref d.fromInternal.y, smoothTime, maxSpeed, Time.deltaTime)); + }; break; + case LeanProp.localZ: + d.easeInternal = () => { + d.trans.LeanSetLocalPosZ(LeanSmooth.damp(d.trans.localPosition.z, d.toTrans.localPosition.z, ref d.fromInternal.z, smoothTime, maxSpeed, Time.deltaTime)); + }; break; + case LeanProp.x: + d.easeInternal = () => { + d.trans.LeanSetPosX(LeanSmooth.damp(d.trans.position.x, d.toTrans.position.x, ref d.fromInternal.x, smoothTime, maxSpeed, Time.deltaTime)); + }; break; + case LeanProp.y: + d.easeInternal = () => { + d.trans.LeanSetPosY(LeanSmooth.damp(d.trans.position.y, d.toTrans.position.y, ref d.fromInternal.y, smoothTime, maxSpeed, Time.deltaTime)); + }; break; + case LeanProp.z: + d.easeInternal = () => { + d.trans.LeanSetPosZ(LeanSmooth.damp(d.trans.position.z, d.toTrans.position.z, ref d.fromInternal.z, smoothTime, maxSpeed, Time.deltaTime)); + }; break; + case LeanProp.scale: + d.easeInternal = () => { + d.trans.localScale = LeanSmooth.damp(d.trans.localScale, d.toTrans.localScale, ref d.fromInternal, smoothTime, maxSpeed, Time.deltaTime); + }; break; + case LeanProp.color: + d.easeInternal = () => { + var col = LeanSmooth.damp(d.trans.LeanColor(), d.toTrans.LeanColor(), ref d.optional.color, smoothTime, maxSpeed, Time.deltaTime); + d.trans.GetComponent().material.color = col; + }; break; + } + + return d; + } + + /** + * Follow another transforms position/scale/color with a springy transition (eases in and out to destination with possible overshoot bounciness) + * + * @method LeanTween.followSpring + * @param {Transform} transform:Transform the transform you wish to be the follower + * @param {Transform} transform:Transform the transform you wish to follow + * @param {LeanProp} leanProp:LeanProp enum of the type of following you wish to do position, scale, color, etc. + * @param {float} smoothTime:float roughly the time it takes to reach the destination + * @param {float} [maxSpeed]:float maximum speed at which it moves towards the destination + * @param {float} [friction]:float rate at which the spring is slowed down once it reaches it's destination + * @param {float} [accelRate]:float the rate it accelerates from it's initial position + * @example + * LeanTween.followSpring(transform, followTransform, LeanProp.localY); + */ + public static LTDescr followSpring(Transform trans, Transform target, LeanProp prop, float smoothTime, float maxSpeed = -1f, float friction = 2f, float accelRate = 0.5f) + { + var d = pushNewTween(trans.gameObject, Vector3.zero, float.MaxValue, options().setFollow().setTarget(target)); + switch (prop) + { + case LeanProp.localPosition: + d.optional.axis = d.trans.localPosition; + d.easeInternal = () => { + d.optional.axis = LeanSmooth.spring(d.optional.axis, d.toTrans.localPosition, ref d.fromInternal, smoothTime, maxSpeed, Time.deltaTime, friction, accelRate); + d.trans.localPosition = d.optional.axis + d.toInternal; + }; break; + case LeanProp.position: + d.diff = d.trans.position; + d.easeInternal = () => { + d.diff = LeanSmooth.spring(d.diff, d.toTrans.position, ref d.fromInternal, smoothTime, maxSpeed, Time.deltaTime, friction, accelRate); + d.trans.position = d.diff;// + d.toInternal; + }; break; + case LeanProp.localX: + d.easeInternal = () => { + d.trans.LeanSetLocalPosX(LeanSmooth.spring(d.trans.localPosition.x, d.toTrans.localPosition.x, ref d.fromInternal.x, smoothTime, maxSpeed, Time.deltaTime, friction, accelRate)); + }; break; + case LeanProp.localY: + d.easeInternal = () => { + d.trans.LeanSetLocalPosY(LeanSmooth.spring(d.trans.localPosition.y, d.toTrans.localPosition.y, ref d.fromInternal.y, smoothTime, maxSpeed, Time.deltaTime, friction, accelRate)); + }; break; + case LeanProp.localZ: + d.easeInternal = () => { + d.trans.LeanSetLocalPosZ(LeanSmooth.spring(d.trans.localPosition.z, d.toTrans.localPosition.z, ref d.fromInternal.z, smoothTime, maxSpeed, Time.deltaTime, friction, accelRate)); + }; break; + case LeanProp.x: + d.easeInternal = () => { + d.trans.LeanSetPosX(LeanSmooth.spring(d.trans.position.x, d.toTrans.position.x, ref d.fromInternal.x, smoothTime, maxSpeed, Time.deltaTime, friction, accelRate)); + }; break; + case LeanProp.y: + d.easeInternal = () => { + d.trans.LeanSetPosY(LeanSmooth.spring(d.trans.position.y, d.toTrans.position.y, ref d.fromInternal.y, smoothTime, maxSpeed, Time.deltaTime, friction, accelRate)); + }; break; + case LeanProp.z: + d.easeInternal = () => { + d.trans.LeanSetPosZ(LeanSmooth.spring(d.trans.position.z, d.toTrans.position.z, ref d.fromInternal.z, smoothTime, maxSpeed, Time.deltaTime, friction, accelRate)); + }; break; + case LeanProp.scale: + d.easeInternal = () => { + d.trans.localScale = LeanSmooth.spring(d.trans.localScale, d.toTrans.localScale, ref d.fromInternal, smoothTime, maxSpeed, Time.deltaTime, friction, accelRate); + }; break; + case LeanProp.color: + d.easeInternal = () => { + var col = LeanSmooth.spring(d.trans.LeanColor(), d.toTrans.LeanColor(), ref d.optional.color, smoothTime, maxSpeed, Time.deltaTime, friction, accelRate); + d.trans.GetComponent().material.color = col; + }; break; + } + + return d; + } + + /** + * Follow another transforms position/scale/color (with an ease that bounces back some when it reaches it's destination) + * + * @method LeanTween.followBounceOut + * @param {Transform} transform:Transform the transform you wish to be the follower + * @param {Transform} transform:Transform the transform you wish to follow + * @param {LeanProp} leanProp:LeanProp enum of the type of following you wish to do position, scale, color, etc. + * @param {float} smoothTime:float roughly the time it takes to reach the destination + * @param {float} [maxSpeed]:float maximum speed at which it moves towards the destination + * @param {float} [friction]:float rate at which the spring is slowed down once it reaches it's destination + * @param {float} [accelRate]:float the rate it accelerates from it's initial position + * @param {float} [hitDamp]:float the rate at which to dampen the bounciness of when it reaches it's destination + * @example + * LeanTween.followBounceOut(transform, followTransform, LeanProp.localY, 1.1f); + */ + public static LTDescr followBounceOut(Transform trans, Transform target, LeanProp prop, float smoothTime, float maxSpeed = -1f, float friction = 2f, float accelRate = 0.5f, float hitDamping = 0.9f) + { + var d = pushNewTween(trans.gameObject, Vector3.zero, float.MaxValue, options().setFollow().setTarget(target)); + switch (prop) + { + case LeanProp.localPosition: + d.optional.axis = d.trans.localPosition; + d.easeInternal = () => { + d.optional.axis = LeanSmooth.bounceOut(d.optional.axis, d.toTrans.localPosition, ref d.fromInternal, smoothTime, maxSpeed, Time.deltaTime, friction, accelRate, hitDamping); + d.trans.localPosition = d.optional.axis + d.toInternal; + }; break; + case LeanProp.position: + d.easeInternal = () => { + d.optional.axis = LeanSmooth.bounceOut(d.optional.axis, d.toTrans.position, ref d.fromInternal, smoothTime, maxSpeed, Time.deltaTime, friction, accelRate, hitDamping); + d.trans.position = d.optional.axis + d.toInternal; + }; break; + case LeanProp.localX: + d.easeInternal = () => { + d.trans.LeanSetLocalPosX(LeanSmooth.bounceOut(d.trans.localPosition.x, d.toTrans.localPosition.x, ref d.fromInternal.x, smoothTime, maxSpeed, Time.deltaTime, friction, accelRate, hitDamping)); + }; break; + case LeanProp.localY: + d.easeInternal = () => { + d.trans.LeanSetLocalPosY(LeanSmooth.bounceOut(d.trans.localPosition.y, d.toTrans.localPosition.y, ref d.fromInternal.y, smoothTime, maxSpeed, Time.deltaTime, friction, accelRate, hitDamping)); + }; break; + case LeanProp.localZ: + d.easeInternal = () => { + d.trans.LeanSetLocalPosZ(LeanSmooth.bounceOut(d.trans.localPosition.z, d.toTrans.localPosition.z, ref d.fromInternal.z, smoothTime, maxSpeed, Time.deltaTime, friction, accelRate, hitDamping)); + }; break; + case LeanProp.x: + d.easeInternal = () => { + d.trans.LeanSetPosX(LeanSmooth.bounceOut(d.trans.position.x, d.toTrans.position.x, ref d.fromInternal.x, smoothTime, maxSpeed, Time.deltaTime, friction, accelRate, hitDamping)); + }; break; + case LeanProp.y: + d.easeInternal = () => { + d.trans.LeanSetPosY(LeanSmooth.bounceOut(d.trans.position.y, d.toTrans.position.y, ref d.fromInternal.y, smoothTime, maxSpeed, Time.deltaTime, friction, accelRate, hitDamping)); + }; break; + case LeanProp.z: + d.easeInternal = () => { + d.trans.LeanSetPosZ(LeanSmooth.bounceOut(d.trans.position.z, d.toTrans.position.z, ref d.fromInternal.z, smoothTime, maxSpeed, Time.deltaTime, friction, accelRate, hitDamping)); + }; break; + case LeanProp.scale: + d.easeInternal = () => { + d.trans.localScale = LeanSmooth.bounceOut(d.trans.localScale, d.toTrans.localScale, ref d.fromInternal, smoothTime, maxSpeed, Time.deltaTime, friction, accelRate, hitDamping); + }; break; + case LeanProp.color: + d.easeInternal = () => { + var col = LeanSmooth.bounceOut(d.trans.LeanColor(), d.toTrans.LeanColor(), ref d.optional.color, smoothTime, maxSpeed, Time.deltaTime, friction, accelRate, hitDamping); + d.trans.GetComponent().material.color = col; + }; break; + } + + return d; + } + + /** + * Follow another transforms position/scale/color with a constant speed + * + * @method LeanTween.followLinear + * @param {Transform} transform:Transform the transform you wish to be the follower + * @param {Transform} transform:Transform the transform you wish to follow + * @param {LeanProp} leanProp:LeanProp enum of the type of following you wish to do position, scale, color, etc. + * @param {float} moveSpeed:float roughly the time it takes to reach the destination + * @example + * LeanTween.followLinear(transform, followTransform, LeanProp.localY, 50f); + */ + public static LTDescr followLinear(Transform trans, Transform target, LeanProp prop, float moveSpeed) + { + var d = pushNewTween(trans.gameObject, Vector3.zero, float.MaxValue, options().setFollow().setTarget(target)); + switch (prop) + { + case LeanProp.localPosition: + d.optional.axis = d.trans.localPosition; + d.easeInternal = () => { + d.optional.axis = LeanSmooth.linear(d.optional.axis, d.toTrans.localPosition, moveSpeed); + d.trans.localPosition = d.optional.axis + d.toInternal; + }; break; + case LeanProp.position: + d.easeInternal = () => { + d.trans.position = LeanSmooth.linear(d.trans.position, d.toTrans.position, moveSpeed); + }; break; + case LeanProp.localX: + d.easeInternal = () => { + d.trans.LeanSetLocalPosX(LeanSmooth.linear(d.trans.localPosition.x, d.toTrans.localPosition.x, moveSpeed)); + }; break; + case LeanProp.localY: + d.easeInternal = () => { + d.trans.LeanSetLocalPosY(LeanSmooth.linear(d.trans.localPosition.y, d.toTrans.localPosition.y, moveSpeed)); + }; break; + case LeanProp.localZ: + d.easeInternal = () => { + d.trans.LeanSetLocalPosZ(LeanSmooth.linear(d.trans.localPosition.z, d.toTrans.localPosition.z, moveSpeed)); + }; break; + case LeanProp.x: + d.easeInternal = () => { + d.trans.LeanSetPosX(LeanSmooth.linear(d.trans.position.x, d.toTrans.position.x, moveSpeed)); + }; break; + case LeanProp.y: + d.easeInternal = () => { + d.trans.LeanSetPosY(LeanSmooth.linear(d.trans.position.y, d.toTrans.position.y, moveSpeed)); + }; break; + case LeanProp.z: + d.easeInternal = () => { + d.trans.LeanSetPosZ(LeanSmooth.linear(d.trans.position.z, d.toTrans.position.z, moveSpeed)); + }; break; + case LeanProp.scale: + d.easeInternal = () => { + d.trans.localScale = LeanSmooth.linear(d.trans.localScale, d.toTrans.localScale, moveSpeed); + }; break; + case LeanProp.color: + d.easeInternal = () => { + var col = LeanSmooth.linear(d.trans.LeanColor(), d.toTrans.LeanColor(), moveSpeed); + d.trans.GetComponent().material.color = col; + }; break; + } + + return d; + } + + // LeanTween Listening/Dispatch + + private static System.Action[] eventListeners; + private static GameObject[] goListeners; + private static int eventsMaxSearch = 0; + public static int EVENTS_MAX = 10; + public static int LISTENERS_MAX = 10; + private static int INIT_LISTENERS_MAX = LISTENERS_MAX; + + public static void addListener( int eventId, System.Action callback ){ + addListener(tweenEmpty, eventId, callback); + } + + /** + * Add a listener method to be called when the appropriate LeanTween.dispatchEvent is called + * + * @method LeanTween.addListener + * @param {GameObject} caller:GameObject the gameObject the listener is attached to + * @param {int} eventId:int a unique int that describes the event (best to use an enum) + * @param {System.Action} callback:System.Action the method to call when the event has been dispatched + * @example + * LeanTween.addListener(gameObject, (int)MyEvents.JUMP, jumpUp);
    + *
    + * void jumpUp( LTEvent e ){ Debug.Log("jump!"); }
    + */ + public static void addListener( GameObject caller, int eventId, System.Action callback ){ + if(eventListeners==null){ + INIT_LISTENERS_MAX = LISTENERS_MAX; + eventListeners = new System.Action[ EVENTS_MAX * LISTENERS_MAX ]; + goListeners = new GameObject[ EVENTS_MAX * LISTENERS_MAX ]; + } + // Debug.Log("searching for an empty space for:"+caller + " eventid:"+event); + for(i = 0; i < INIT_LISTENERS_MAX; i++){ + int point = eventId*INIT_LISTENERS_MAX + i; + if(goListeners[ point ]==null || eventListeners[ point ]==null){ + eventListeners[ point ] = callback; + goListeners[ point ] = caller; + if(i>=eventsMaxSearch) + eventsMaxSearch = i+1; + // Debug.Log("adding event for:"+caller.name); + + return; + } + #if UNITY_FLASH + if(goListeners[ point ] == caller && System.Object.ReferenceEquals( eventListeners[ point ], callback)){ + // Debug.Log("This event is already being listened for."); + return; + } + #else + if(goListeners[ point ] == caller && System.Object.Equals( eventListeners[ point ], callback)){ + // Debug.Log("This event is already being listened for."); + return; + } + #endif + } + Debug.LogError("You ran out of areas to add listeners, consider increasing LISTENERS_MAX, ex: LeanTween.LISTENERS_MAX = "+(LISTENERS_MAX*2)); + } + + public static bool removeListener( int eventId, System.Action callback ){ + return removeListener( tweenEmpty, eventId, callback); + } + + public static bool removeListener( int eventId ){ + int point = eventId*INIT_LISTENERS_MAX + i; + eventListeners[ point ] = null; + goListeners[ point ] = null; + return true; + } + + + /** + * Remove an event listener you have added + * @method LeanTween.removeListener + * @param {GameObject} caller:GameObject the gameObject the listener is attached to + * @param {int} eventId:int a unique int that describes the event (best to use an enum) + * @param {System.Action} callback:System.Action the method that was specified to call when the event has been dispatched + * @example + * LeanTween.removeListener(gameObject, (int)MyEvents.JUMP, jumpUp);
    + *
    + * void jumpUp( LTEvent e ){ }
    + */ + public static bool removeListener( GameObject caller, int eventId, System.Action callback ){ + for(i = 0; i < eventsMaxSearch; i++){ + int point = eventId*INIT_LISTENERS_MAX + i; + #if UNITY_FLASH + if(goListeners[ point ] == caller && System.Object.ReferenceEquals( eventListeners[ point ], callback) ){ + #else + if(goListeners[ point ] == caller && System.Object.Equals( eventListeners[ point ], callback) ){ + #endif + eventListeners[ point ] = null; + goListeners[ point ] = null; + return true; + } + } + return false; + } + + /** + * Tell the added listeners that you are dispatching the event + * @method LeanTween.dispatchEvent + * @param {int} eventId:int a unique int that describes the event (best to use an enum) + * @example + * LeanTween.dispatchEvent( (int)MyEvents.JUMP );
    + */ + public static void dispatchEvent( int eventId ){ + dispatchEvent( eventId, null); + } + + /** + * Tell the added listeners that you are dispatching the event + * @method LeanTween.dispatchEvent + * @param {int} eventId:int a unique int that describes the event (best to use an enum) + * @param {object} data:object Pass data to the listener, access it from the listener with *.data on the LTEvent object + * @example + * LeanTween.dispatchEvent( (int)MyEvents.JUMP, transform );
    + *
    + * void jumpUp( LTEvent e ){
    + *   Transform tran = (Transform)e.data;
    + * }
    + */ + public static void dispatchEvent( int eventId, object data ){ + for(int k = 0; k < eventsMaxSearch; k++){ + int point = eventId*INIT_LISTENERS_MAX + k; + if(eventListeners[ point ]!=null){ + if(goListeners[point]){ + eventListeners[ point ]( new LTEvent(eventId, data) ); + }else{ + eventListeners[ point ] = null; + } + } + } + } + + +} // End LeanTween class + +public class LTUtility { + + public static Vector3[] reverse( Vector3[] arr ){ + int length = arr.Length; + int left = 0; + int right = length - 1; + + for (; left < right; left += 1, right -= 1){ + Vector3 temporary = arr[left]; + arr[left] = arr[right]; + arr[right] = temporary; + } + return arr; + } +} + +public class LTBezier { + public float length; + + private Vector3 a; + private Vector3 aa; + private Vector3 bb; + private Vector3 cc; + private float len; + private float[] arcLengths; + + public LTBezier(Vector3 a, Vector3 b, Vector3 c, Vector3 d, float precision){ + this.a = a; + aa = (-a + 3*(b-c) + d); + bb = 3*(a+c) - 6*b; + cc = 3*(b-a); + + this.len = 1.0f / precision; + arcLengths = new float[(int)this.len + (int)1]; + arcLengths[0] = 0; + + Vector3 ov = a; + Vector3 v; + float clen = 0.0f; + for(int i = 1; i <= this.len; i++) { + v = bezierPoint(i * precision); + clen += (ov - v).magnitude; + this.arcLengths[i] = clen; + ov = v; + } + this.length = clen; + } + + private float map(float u) { + float targetLength = u * this.arcLengths[(int)this.len]; + int low = 0; + int high = (int)this.len; + int index = 0; + while (low < high) { + index = low + ((int)((high - low) / 2.0f) | 0); + if (this.arcLengths[index] < targetLength) { + low = index + 1; + } else { + high = index; + } + } + if(this.arcLengths[index] > targetLength) + index--; + if(index<0) + index = 0; + + return (index + (targetLength - arcLengths[index]) / (arcLengths[index + 1] - arcLengths[index])) / this.len; + } + + private Vector3 bezierPoint(float t){ + return ((aa* t + (bb))* t + cc)* t + a; + } + + public Vector3 point(float t){ + return bezierPoint( map(t) ); + } +} + +/** +* Manually animate along a bezier path with this class +* @class LTBezierPath +* @constructor +* @param {Vector3 Array} pts A set of points that define one or many bezier paths (the paths should be passed in multiples of 4, which correspond to each individual bezier curve)
    +* It goes in the order: startPoint,endControl,startControl,endPoint - Note: the control for the end and start are reversed! This is just a *quirk* of the API.
    +* +* @example +* LTBezierPath ltPath = new LTBezierPath( new Vector3[] { new Vector3(0f,0f,0f),new Vector3(1f,0f,0f), new Vector3(1f,0f,0f), new Vector3(1f,1f,0f)} );

    +* LeanTween.move(lt, ltPath.vec3, 4.0f).setOrientToPath(true).setDelay(1f).setEase(LeanTweenType.easeInOutQuad); // animate
    +* Vector3 pt = ltPath.point( 0.6f ); // retrieve a point along the path +*/ +public class LTBezierPath { + public Vector3[] pts; + public float length; + public bool orientToPath; + public bool orientToPath2d; + + private LTBezier[] beziers; + private float[] lengthRatio; + private int currentBezier=0,previousBezier=0; + + public LTBezierPath(){ } + public LTBezierPath( Vector3[] pts_ ){ + setPoints( pts_ ); + } + + public void setPoints( Vector3[] pts_ ){ + if(pts_.Length<4) + LeanTween.logError( "LeanTween - When passing values for a vector path, you must pass four or more values!" ); + if(pts_.Length%4!=0) + LeanTween.logError( "LeanTween - When passing values for a vector path, they must be in sets of four: controlPoint1, controlPoint2, endPoint2, controlPoint2, controlPoint2..." ); + + pts = pts_; + + int k = 0; + beziers = new LTBezier[ pts.Length / 4 ]; + lengthRatio = new float[ beziers.Length ]; + int i; + length = 0; + for(i = 0; i < pts.Length; i+=4){ + beziers[k] = new LTBezier(pts[i+0],pts[i+2],pts[i+1],pts[i+3],0.05f); + length += beziers[k].length; + k++; + } + // Debug.Log("beziers.Length:"+beziers.Length + " beziers:"+beziers); + for(i = 0; i < beziers.Length; i++){ + lengthRatio[i] = beziers[i].length / length; + } + } + + /** + * @property {float} distance distance of the path (in unity units) + */ + public float distance{ + get{ + return length; + } + } + + /** + * Retrieve a point along a path + * + * @method point + * @param {float} ratio:float ratio of the point along the path you wish to receive (0-1) + * @return {Vector3} Vector3 position of the point along the path + * @example + * transform.position = ltPath.point( 0.6f ); + */ + public Vector3 point( float ratio ){ + float added = 0.0f; + for(int i = 0; i < lengthRatio.Length; i++){ + added += lengthRatio[i]; + if(added >= ratio) + return beziers[i].point( (ratio-(added-lengthRatio[i])) / lengthRatio[i] ); + } + return beziers[lengthRatio.Length-1].point( 1.0f ); + } + + public void place2d( Transform transform, float ratio ){ + transform.position = point( ratio ); + ratio += 0.001f; + if(ratio<=1.0f){ + Vector3 v3Dir = point( ratio ) - transform.position; + float angle = Mathf.Atan2(v3Dir.y, v3Dir.x) * Mathf.Rad2Deg; + transform.eulerAngles = new Vector3(0, 0, angle); + } + } + + public void placeLocal2d( Transform transform, float ratio ){ + transform.localPosition = point( ratio ); + ratio += 0.001f; + if(ratio<=1.0f){ + Vector3 v3Dir = point( ratio ) - transform.localPosition; + float angle = Mathf.Atan2(v3Dir.y, v3Dir.x) * Mathf.Rad2Deg; + transform.localEulerAngles = new Vector3(0, 0, angle); + } + } + + /** + * Place an object along a certain point on the path (facing the direction perpendicular to the path) + * + * @method place + * @param {Transform} transform:Transform the transform of the object you wish to place along the path + * @param {float} ratio:float ratio of the point along the path you wish to receive (0-1) + * @example + * ltPath.place( transform, 0.6f ); + */ + public void place( Transform transform, float ratio ){ + place( transform, ratio, Vector3.up ); + + } + + /** + * Place an object along a certain point on the path, with it facing a certain direction perpendicular to the path + * + * @method place + * @param {Transform} transform:Transform the transform of the object you wish to place along the path + * @param {float} ratio:float ratio of the point along the path you wish to receive (0-1) + * @param {Vector3} rotation:Vector3 the direction in which to place the transform ex: Vector3.up + * @example + * ltPath.place( transform, 0.6f, Vector3.left ); + */ + public void place( Transform transform, float ratio, Vector3 worldUp ){ + transform.position = point( ratio ); + ratio += 0.001f; + if(ratio<=1.0f) + transform.LookAt( point( ratio ), worldUp ); + + } + + /** + * Place an object along a certain point on the path (facing the direction perpendicular to the path) - Local Space, not world-space + * + * @method placeLocal + * @param {Transform} transform:Transform the transform of the object you wish to place along the path + * @param {float} ratio:float ratio of the point along the path you wish to receive (0-1) + * @example + * ltPath.placeLocal( transform, 0.6f ); + */ + public void placeLocal( Transform transform, float ratio ){ + placeLocal( transform, ratio, Vector3.up ); + } + + /** + * Place an object along a certain point on the path, with it facing a certain direction perpendicular to the path - Local Space, not world-space + * + * @method placeLocal + * @param {Transform} transform:Transform the transform of the object you wish to place along the path + * @param {float} ratio:float ratio of the point along the path you wish to receive (0-1) + * @param {Vector3} rotation:Vector3 the direction in which to place the transform ex: Vector3.up + * @example + * ltPath.placeLocal( transform, 0.6f, Vector3.left ); + */ + public void placeLocal( Transform transform, float ratio, Vector3 worldUp ){ + // Debug.Log("place ratio:" + ratio + " greater:"+(ratio>1f)); + ratio = Mathf.Clamp01(ratio); + transform.localPosition = point( ratio ); + // Debug.Log("ratio:" + ratio + " +:" + (ratio + 0.001f)); + ratio = Mathf.Clamp01(ratio + 0.001f); + + if(ratio<=1.0f) + transform.LookAt( transform.parent.TransformPoint( point( ratio ) ), worldUp ); + } + + public void gizmoDraw(float t = -1.0f) + { + Vector3 prevPt = point(0); + + for (int i = 1; i <= 120; i++) + { + float pm = (float)i / 120f; + Vector3 currPt2 = point(pm); + //Gizmos.color = new Color(UnityEngine.Random.Range(0f,1f),UnityEngine.Random.Range(0f,1f),UnityEngine.Random.Range(0f,1f),1); + Gizmos.color = (previousBezier == currentBezier) ? Color.magenta : Color.grey; + Gizmos.DrawLine(currPt2, prevPt); + prevPt = currPt2; + previousBezier = currentBezier; + } + } + + /** + * Retrieve the closest ratio near the point + * + * @method ratioAtPoint + * @param {Vector3} point:Vector3 given a current location it makes the best approximiation of where it is along the path ratio-wise (0-1) + * @return {float} float of ratio along the path + * @example + * ratioIter = ltBezier.ratioAtPoint( transform.position ); + */ + public float ratioAtPoint(Vector3 pt, float precision = 0.01f) + { + float closestDist = float.MaxValue; + int closestI = 0; + int maxIndex = Mathf.RoundToInt(1f / precision); + for (int i = 0; i < maxIndex; i++) + { + float ratio = (float)i / (float)maxIndex; + float dist = Vector3.Distance(pt, point( ratio ) ); + // Debug.Log("i:"+i+" dist:"+dist); + if (dist < closestDist) + { + closestDist = dist; + closestI = i; + } + } + //Debug.Log("closestI:"+closestI+" maxIndex:"+maxIndex); + return (float)closestI / (float)(maxIndex); + } +} + +/** +* Animate along a set of points that need to be in the format: controlPoint, point1, point2.... pointLast, endControlPoint Move a GameObject to a certain location +* @class LTSpline +* @constructor +* @param {Vector3 Array} pts A set of points that define the points the path will pass through (starting with starting control point, and ending with a control point)
    +Note: The first and last item just define the angle of the end points, they are not actually used in the spline path itself. If you do not care about the angle you can jus set the first two items and last two items as the same value. +* @example +* LTSpline ltSpline = new LTSpline( new Vector3[] { new Vector3(0f,0f,0f),new Vector3(0f,0f,0f), new Vector3(0f,0.5f,0f), new Vector3(1f,1f,0f), new Vector3(1f,1f,0f)} );

    +* LeanTween.moveSpline(lt, ltSpline.vec3, 4.0f).setOrientToPath(true).setDelay(1f).setEase(LeanTweenType.easeInOutQuad); // animate
    +* Vector3 pt = ltSpline.point( 0.6f ); // retrieve a point along the path +*/ +[System.Serializable] +public class LTSpline { + public static int DISTANCE_COUNT = 3; // increase for a more accurate constant speed + public static int SUBLINE_COUNT = 20; // increase for a more accurate smoothing of the curves into lines + + /** + * @property {float} distance distance of the spline (in unity units) + */ + public float distance = 0f; + + public bool constantSpeed = true; + + public Vector3[] pts; + [System.NonSerialized] + public Vector3[] ptsAdj; + public int ptsAdjLength; + public bool orientToPath; + public bool orientToPath2d; + private int numSections; + private int currPt; + + public LTSpline( Vector3[] pts ){ + init( pts, true); + } + + public LTSpline( Vector3[] pts, bool constantSpeed ) { + this.constantSpeed = constantSpeed; + init(pts, constantSpeed); + } + + private void init( Vector3[] pts, bool constantSpeed){ + if(pts.Length<4){ + LeanTween.logError( "LeanTween - When passing values for a spline path, you must pass four or more values!" ); + return; + } + + this.pts = new Vector3[pts.Length]; + System.Array.Copy(pts, this.pts, pts.Length); + + numSections = pts.Length - 3; + + float minSegment = float.PositiveInfinity; + Vector3 earlierPoint = this.pts[1]; + float totalDistance = 0f; + for(int i=1; i < this.pts.Length-1; i++){ + // float pointDistance = (this.pts[i]-earlierPoint).sqrMagnitude; + float pointDistance = Vector3.Distance(this.pts[i], earlierPoint); + //Debug.Log("pointDist:"+pointDistance); + if(pointDistance < minSegment){ + minSegment = pointDistance; + } + + totalDistance += pointDistance; + } + + if(constantSpeed){ + minSegment = totalDistance / (numSections*SUBLINE_COUNT); + //Debug.Log("minSegment:"+minSegment+" numSections:"+numSections); + + float minPrecision = minSegment / SUBLINE_COUNT; // number of subdivisions in each segment + int precision = (int)Mathf.Ceil(totalDistance / minPrecision) * DISTANCE_COUNT; + // Debug.Log("precision:"+precision); + if(precision<=1) // precision has to be greater than one + precision = 2; + + ptsAdj = new Vector3[ precision ]; + earlierPoint = interp( 0f ); + int num = 1; + ptsAdj[0] = earlierPoint; + distance = 0f; + for(int i = 0; i < precision + 1; i++){ + float fract = ((float)(i)) / precision; + // Debug.Log("fract:"+fract); + Vector3 point = interp( fract ); + float dist = Vector3.Distance(point, earlierPoint); + + // float dist = (point-earlierPoint).sqrMagnitude; + if(dist>=minPrecision || fract>=1.0f){ + ptsAdj[num] = point; + distance += dist; // only add it to the total distance once we know we are adding it as an adjusted point + + earlierPoint = point; + // Debug.Log("fract:"+fract+" point:"+point); + num++; + } + } + // make sure there is a point at the very end + /*num++; + Vector3 endPoint = interp( 1f ); + ptsAdj[num] = endPoint;*/ + // Debug.Log("fract 1f endPoint:"+endPoint); + + ptsAdjLength = num; + } + // Debug.Log("map 1f:"+map(1f)+" end:"+ptsAdj[ ptsAdjLength-1 ]); + + // Debug.Log("ptsAdjLength:"+ptsAdjLength+" minPrecision:"+minPrecision+" precision:"+precision); + } + + public Vector3 map( float u ){ + if(u>=1f) + return pts[ pts.Length - 2]; + float t = u * (ptsAdjLength-1); + int first = (int)Mathf.Floor( t ); + int next = (int)Mathf.Ceil( t ); + + if(first<0) + first = 0; + + Vector3 val = ptsAdj[ first ]; + + + Vector3 nextVal = ptsAdj[ next ]; + float diff = t - first; + + // Debug.Log("u:"+u+" val:"+val +" nextVal:"+nextVal+" diff:"+diff+" first:"+first+" next:"+next); + + val = val + (nextVal - val) * diff; + + return val; + } + + public Vector3 interp(float t) { + currPt = Mathf.Min(Mathf.FloorToInt(t * (float) numSections), numSections - 1); + float u = t * (float) numSections - (float) currPt; + + //Debug.Log("currPt:"+currPt+" numSections:"+numSections+" pts.Length :"+pts.Length ); + Vector3 a = pts[currPt]; + Vector3 b = pts[currPt + 1]; + Vector3 c = pts[currPt + 2]; + Vector3 d = pts[currPt + 3]; + + Vector3 val = (.5f * ( + (-a + 3f * b - 3f * c + d) * (u * u * u) + + (2f * a - 5f * b + 4f * c - d) * (u * u) + + (-a + c) * u + + 2f * b)); + // Debug.Log("currPt:"+currPt+" t:"+t+" val.x"+val.x+" y:"+val.y+" z:"+val.z); + + return val; + } + + /** + * Retrieve a point along a path Move a GameObject to a certain location + * + * @method ratioAtPoint + * @param {Vector3} point:Vector3 given a current location it makes the best approximiation of where it is along the path ratio-wise (0-1) + * @return {float} float of ratio along the path + * @example + * ratioIter = ltSpline.ratioAtPoint( transform.position ); + */ + public float ratioAtPoint( Vector3 pt ){ + float closestDist = float.MaxValue; + int closestI = 0; + for (int i = 0; i < ptsAdjLength; i++) { + float dist = Vector3.Distance(pt, ptsAdj[i]); + // Debug.Log("i:"+i+" dist:"+dist); + if(distMove a GameObject to a certain location + * + * @method point + * @param {float} ratio:float ratio of the point along the path you wish to receive (0-1) + * @return {Vector3} Vector3 position of the point along the path + * @example + * transform.position = ltSpline.point( 0.6f ); + */ + public Vector3 point( float ratio ){ + float t = ratio>1f?1f:ratio; + return constantSpeed ? map(t) : interp(t); + } + + public void place2d( Transform transform, float ratio ){ + transform.position = point( ratio ); + ratio += 0.001f; + if(ratio<=1.0f){ + Vector3 v3Dir = point( ratio ) - transform.position; + float angle = Mathf.Atan2(v3Dir.y, v3Dir.x) * Mathf.Rad2Deg; + transform.eulerAngles = new Vector3(0, 0, angle); + } + } + + public void placeLocal2d( Transform transform, float ratio ){ + Transform trans = transform.parent; + if(trans==null){ // this has no parent, just do a regular transform + place2d(transform, ratio); + return; + } + transform.localPosition = point( ratio ); + ratio += 0.001f; + if(ratio<=1.0f){ + Vector3 ptAhead = point( ratio );//trans.TransformPoint( ); + Vector3 v3Dir = ptAhead - transform.localPosition; + float angle = Mathf.Atan2(v3Dir.y, v3Dir.x) * Mathf.Rad2Deg; + transform.localEulerAngles = new Vector3(0, 0, angle); + } + } + + + /** + * Place an object along a certain point on the path (facing the direction perpendicular to the path) Move a GameObject to a certain location + * + * @method place + * @param {Transform} transform:Transform the transform of the object you wish to place along the path + * @param {float} ratio:float ratio of the point along the path you wish to receive (0-1) + * @example + * ltPath.place( transform, 0.6f ); + */ + public void place( Transform transform, float ratio ){ + place(transform, ratio, Vector3.up); + } + + /** + * Place an object along a certain point on the path, with it facing a certain direction perpendicular to the path Move a GameObject to a certain location + * + * @method place + * @param {Transform} transform:Transform the transform of the object you wish to place along the path + * @param {float} ratio:float ratio of the point along the path you wish to receive (0-1) + * @param {Vector3} rotation:Vector3 the direction in which to place the transform ex: Vector3.up + * @example + * ltPath.place( transform, 0.6f, Vector3.left ); + */ + public void place( Transform transform, float ratio, Vector3 worldUp ){ + // ratio = Mathf.Repeat(ratio, 1.0f); // make sure ratio is always between 0-1 + transform.position = point( ratio ); + ratio += 0.001f; + if(ratio<=1.0f) + transform.LookAt( point( ratio ), worldUp ); + + } + + /** + * Place an object along a certain point on the path (facing the direction perpendicular to the path) - Local Space, not world-space Move a GameObject to a certain location + * + * @method placeLocal + * @param {Transform} transform:Transform the transform of the object you wish to place along the path + * @param {float} ratio:float ratio of the point along the path you wish to receive (0-1) + * @example + * ltPath.placeLocal( transform, 0.6f ); + */ + public void placeLocal( Transform transform, float ratio ){ + placeLocal( transform, ratio, Vector3.up ); + } + + /** + * Place an object along a certain point on the path, with it facing a certain direction perpendicular to the path - Local Space, not world-space Move a GameObject to a certain location + * + * @method placeLocal + * @param {Transform} transform:Transform the transform of the object you wish to place along the path + * @param {float} ratio:float ratio of the point along the path you wish to receive (0-1) + * @param {Vector3} rotation:Vector3 the direction in which to place the transform ex: Vector3.up + * @example + * ltPath.placeLocal( transform, 0.6f, Vector3.left ); + */ + public void placeLocal( Transform transform, float ratio, Vector3 worldUp ){ + transform.localPosition = point( ratio ); + ratio += 0.001f; + if(ratio<=1.0f) + transform.LookAt( transform.parent.TransformPoint( point( ratio ) ), worldUp ); + } + + public void gizmoDraw(float t = -1.0f) { + if(ptsAdj==null || ptsAdj.Length<=0) + return; + + Vector3 prevPt = ptsAdj[0]; + + for (int i = 0; i < ptsAdjLength; i++) { + Vector3 currPt2 = ptsAdj[i]; + // Debug.Log("currPt2:"+currPt2); + //Gizmos.color = new Color(UnityEngine.Random.Range(0f,1f),UnityEngine.Random.Range(0f,1f),UnityEngine.Random.Range(0f,1f),1); + Gizmos.DrawLine(prevPt, currPt2); + prevPt = currPt2; + } + } + + public void drawGizmo( Color color ) { + if( this.ptsAdjLength>=4){ + + Vector3 prevPt = this.ptsAdj[0]; + + Color colorBefore = Gizmos.color; + Gizmos.color = color; + for (int i = 0; i < this.ptsAdjLength; i++) { + Vector3 currPt2 = this.ptsAdj[i]; + // Debug.Log("currPt2:"+currPt2); + + Gizmos.DrawLine(prevPt, currPt2); + prevPt = currPt2; + } + Gizmos.color = colorBefore; + } + } + + public static void drawGizmo(Transform[] arr, Color color) { + if(arr.Length>=4){ + Vector3[] vec3s = new Vector3[arr.Length]; + for(int i = 0; i < arr.Length; i++){ + vec3s[i] = arr[i].position; + } + LTSpline spline = new LTSpline(vec3s); + Vector3 prevPt = spline.ptsAdj[0]; + + Color colorBefore = Gizmos.color; + Gizmos.color = color; + for (int i = 0; i < spline.ptsAdjLength; i++) { + Vector3 currPt2 = spline.ptsAdj[i]; + // Debug.Log("currPt2:"+currPt2); + + Gizmos.DrawLine(prevPt, currPt2); + prevPt = currPt2; + } + Gizmos.color = colorBefore; + } + } + + + public static void drawLine(Transform[] arr, float width, Color color) { + if(arr.Length>=4){ + + } + } + + /*public Vector3 Velocity(float t) { + t = map( t ); + + int numSections = pts.Length - 3; + int currPt = Mathf.Min(Mathf.FloorToInt(t * (float) numSections), numSections - 1); + float u = t * (float) numSections - (float) currPt; + + Vector3 a = pts[currPt]; + Vector3 b = pts[currPt + 1]; + Vector3 c = pts[currPt + 2]; + Vector3 d = pts[currPt + 3]; + + return 1.5f * (-a + 3f * b - 3f * c + d) * (u * u) + + (2f * a -5f * b + 4f * c - d) * u + + .5f * c - .5f * a; + }*/ + + public void drawLinesGLLines(Material outlineMaterial, Color color, float width){ + GL.PushMatrix(); + outlineMaterial.SetPass(0); + GL.LoadPixelMatrix(); + GL.Begin(GL.LINES); + GL.Color(color); + + if (constantSpeed) { + if (this.ptsAdjLength >= 4) { + + Vector3 prevPt = this.ptsAdj[0]; + + for (int i = 0; i < this.ptsAdjLength; i++) { + Vector3 currPt2 = this.ptsAdj[i]; + GL.Vertex(prevPt); + GL.Vertex(currPt2); + + prevPt = currPt2; + } + } + + } else { + if (this.pts.Length >= 4) { + + Vector3 prevPt = this.pts[0]; + + float split = 1f / ((float)this.pts.Length * 10f); + + float iter = 0f; + while (iter < 1f) { + float at = iter / 1f; + Vector3 currPt2 = interp(at); + // Debug.Log("currPt2:"+currPt2); + + GL.Vertex(prevPt); + GL.Vertex(currPt2); + + prevPt = currPt2; + + iter += split; + } + } + } + + + GL.End(); + GL.PopMatrix(); + + } + + public Vector3[] generateVectors(){ + if (this.pts.Length >= 4) { + List meshPoints = new List(); + Vector3 prevPt = this.pts[0]; + meshPoints.Add(prevPt); + + float split = 1f / ((float)this.pts.Length * 10f); + + float iter = 0f; + while (iter < 1f) { + float at = iter / 1f; + Vector3 currPt2 = interp(at); + // Debug.Log("currPt2:"+currPt2); + + // GL.Vertex(prevPt); + // GL.Vertex(currPt2); + meshPoints.Add(currPt2); + + // prevPt = currPt2; + + iter += split; + } + + meshPoints.ToArray(); + } + return null; + } +} + +/** +* Animate GUI Elements by creating this object and passing the *.rect variable to the GUI method

    +* Example Javascript:
    var bRect:LTRect = new LTRect( 0, 0, 100, 50 );
    +* LeanTween.scale( bRect, Vector2(bRect.rect.width, bRect.rect.height) * 1.3, 0.25 );
    +* function OnGUI(){
    +*   if(GUI.Button(bRect.rect, "Scale")){ }
    +* }
    +*
    +* Example C#:
    +* LTRect bRect = new LTRect( 0f, 0f, 100f, 50f );
    +* LeanTween.scale( bRect, new Vector2(150f,75f), 0.25f );
    +* void OnGUI(){
    +*   if(GUI.Button(bRect.rect, "Scale")){ }
    +* }
    +* +* @class LTRect +* @constructor +* @param {float} x:float X location +* @param {float} y:float Y location +* @param {float} width:float Width +* @param {float} height:float Height +* @param {float} alpha:float (Optional) initial alpha amount (0-1) +* @param {float} rotation:float (Optional) initial rotation in degrees (0-360) +*/ + +[System.Serializable] +public class LTRect : System.Object{ + /** + * Pass this value to the GUI Methods + * + * @property rect + * @type {Rect} rect:Rect Rect object that controls the positioning and size + */ + public Rect _rect; + public float alpha = 1f; + public float rotation; + public Vector2 pivot; + public Vector2 margin; + public Rect relativeRect = new Rect(0f,0f,float.PositiveInfinity,float.PositiveInfinity); + + public bool rotateEnabled; + [HideInInspector] + public bool rotateFinished; + public bool alphaEnabled; + public string labelStr; + public LTGUI.Element_Type type; + public GUIStyle style; + public bool useColor = false; + public Color color = Color.white; + public bool fontScaleToFit; + public bool useSimpleScale; + public bool sizeByHeight; + + public Texture texture; + + private int _id = -1; + [HideInInspector] + public int counter; + + public static bool colorTouched; + + public LTRect(){ + reset(); + this.rotateEnabled = this.alphaEnabled = true; + _rect = new Rect(0f,0f,1f,1f); + } + + public LTRect(Rect rect){ + _rect = rect; + reset(); + } + + public LTRect(float x, float y, float width, float height){ + _rect = new Rect(x,y,width,height); + this.alpha = 1.0f; + this.rotation = 0.0f; + this.rotateEnabled = this.alphaEnabled = false; + } + + public LTRect(float x, float y, float width, float height, float alpha){ + _rect = new Rect(x,y,width,height); + this.alpha = alpha; + this.rotation = 0.0f; + this.rotateEnabled = this.alphaEnabled = false; + } + + public LTRect(float x, float y, float width, float height, float alpha, float rotation){ + _rect = new Rect(x,y,width,height); + this.alpha = alpha; + this.rotation = rotation; + this.rotateEnabled = this.alphaEnabled = false; + if(rotation!=0.0f){ + this.rotateEnabled = true; + resetForRotation(); + } + } + + public bool hasInitiliazed{ + get{ + return _id!=-1; + } + } + + public int id{ + get{ + int toId = _id | counter << 16; + + /*uint backId = toId & 0xFFFF; + uint backCounter = toId >> 16; + if(_id!=backId || backCounter!=counter){ + Debug.LogError("BAD CONVERSION toId:"+_id); + }*/ + + return toId; + } + } + + public void setId( int id, int counter){ + this._id = id; + this.counter = counter; + } + + public void reset(){ + this.alpha = 1.0f; + this.rotation = 0.0f; + this.rotateEnabled = this.alphaEnabled = false; + this.margin = Vector2.zero; + this.sizeByHeight = false; + this.useColor = false; + } + + public void resetForRotation(){ + Vector3 scale = new Vector3(GUI.matrix[0,0], GUI.matrix[1,1], GUI.matrix[2,2]); + if(pivot==Vector2.zero){ + pivot = new Vector2((_rect.x+((_rect.width)*0.5f )) * scale.x + GUI.matrix[0,3], (_rect.y+((_rect.height)*0.5f )) * scale.y + GUI.matrix[1,3]); + } + } + + public float x{ + get{ return _rect.x; } + set{ _rect.x = value; } + } + + public float y{ + get{ return _rect.y; } + set{ _rect.y = value; } + } + + public float width{ + get{ return _rect.width; } + set{ _rect.width = value; } + } + + public float height{ + get{ return _rect.height; } + set{ _rect.height = value; } + } + + public Rect rect{ + + get{ + if(colorTouched){ + colorTouched = false; + GUI.color = new Color(GUI.color.r,GUI.color.g,GUI.color.b,1.0f); + } + if(rotateEnabled){ + if(rotateFinished){ + rotateFinished = false; + rotateEnabled = false; + //this.rotation = 0.0f; + pivot = Vector2.zero; + }else{ + GUIUtility.RotateAroundPivot(rotation, pivot); + } + } + if(alphaEnabled){ + GUI.color = new Color(GUI.color.r,GUI.color.g,GUI.color.b,alpha); + colorTouched = true; + } + if(fontScaleToFit){ + if(this.useSimpleScale){ + style.fontSize = (int)(_rect.height*this.relativeRect.height); + }else{ + style.fontSize = (int)_rect.height; + } + } + return _rect; + } + + set{ + _rect = value; + } + } + + public LTRect setStyle( GUIStyle style ){ + this.style = style; + return this; + } + + public LTRect setFontScaleToFit( bool fontScaleToFit ){ + this.fontScaleToFit = fontScaleToFit; + return this; + } + + public LTRect setColor( Color color ){ + this.color = color; + this.useColor = true; + return this; + } + + public LTRect setAlpha( float alpha ){ + this.alpha = alpha; + return this; + } + + public LTRect setLabel( String str ){ + this.labelStr = str; + return this; + } + + public LTRect setUseSimpleScale( bool useSimpleScale, Rect relativeRect){ + this.useSimpleScale = useSimpleScale; + this.relativeRect = relativeRect; + return this; + } + + public LTRect setUseSimpleScale( bool useSimpleScale){ + this.useSimpleScale = useSimpleScale; + this.relativeRect = new Rect(0f,0f,Screen.width,Screen.height); + return this; + } + + public LTRect setSizeByHeight( bool sizeByHeight){ + this.sizeByHeight = sizeByHeight; + return this; + } + + public override string ToString(){ + return "x:"+_rect.x+" y:"+_rect.y+" width:"+_rect.width+" height:"+_rect.height; + } +} + +/** +* Object that describes the event to an event listener +* @class LTEvent +* @constructor +* @param {object} data:object Data that has been passed from the dispatchEvent method +*/ +public class LTEvent { + public int id; + public object data; + + public LTEvent(int id, object data){ + this.id = id; + this.data = data; + } +} + +public class LTGUI { + public static int RECT_LEVELS = 5; + public static int RECTS_PER_LEVEL = 10; + public static int BUTTONS_MAX = 24; + + private static LTRect[] levels; + private static int[] levelDepths; + private static Rect[] buttons; + private static int[] buttonLevels; + private static int[] buttonLastFrame; + private static LTRect r; + private static Color color = Color.white; + private static bool isGUIEnabled = false; + private static int global_counter = 0; + + public enum Element_Type{ + Texture, + Label + } + + public static void init(){ + if(levels==null){ + levels = new LTRect[RECT_LEVELS*RECTS_PER_LEVEL]; + levelDepths = new int[RECT_LEVELS]; + } + } + + public static void initRectCheck(){ + if(buttons==null){ + buttons = new Rect[BUTTONS_MAX]; + buttonLevels = new int[BUTTONS_MAX]; + buttonLastFrame = new int[BUTTONS_MAX]; + for(int i = 0; i < buttonLevels.Length; i++){ + buttonLevels[i] = -1; + } + } + } + + public static void reset(){ + if(isGUIEnabled){ + isGUIEnabled = false; + for(int i = 0; i < levels.Length; i++){ + levels[i] = null; + } + + for(int i = 0; i < levelDepths.Length; i++){ + levelDepths[i] = 0; + } + } + } + + public static void update( int updateLevel ){ + if(isGUIEnabled){ + init(); + if(levelDepths[updateLevel]>0){ + color = GUI.color; + int baseI = updateLevel*RECTS_PER_LEVEL; + int maxLoop = baseI + levelDepths[updateLevel];// RECTS_PER_LEVEL;//; + + for(int i = baseI; i < maxLoop; i++){ + r = levels[i]; + // Debug.Log("r:"+r+" i:"+i); + if(r!=null /*&& checkOnScreen(r.rect)*/){ + //Debug.Log("label:"+r.labelStr+" textColor:"+r.style.normal.textColor); + if(r.useColor) + GUI.color = r.color; + if(r.type == Element_Type.Label){ + if(r.style!=null) + GUI.skin.label = r.style; + if(r.useSimpleScale){ + GUI.Label( new Rect((r.rect.x + r.margin.x + r.relativeRect.x)*r.relativeRect.width, (r.rect.y + r.margin.y + r.relativeRect.y)*r.relativeRect.height, r.rect.width*r.relativeRect.width, r.rect.height*r.relativeRect.height), r.labelStr ); + }else{ + GUI.Label( new Rect(r.rect.x + r.margin.x, r.rect.y + r.margin.y, r.rect.width, r.rect.height), r.labelStr ); + } + }else if(r.type == Element_Type.Texture && r.texture!=null){ + Vector2 size = r.useSimpleScale ? new Vector2(0f, r.rect.height*r.relativeRect.height) : new Vector2(r.rect.width, r.rect.height); + if(r.sizeByHeight){ + size.x = (float)r.texture.width/(float)r.texture.height * size.y; + } + if(r.useSimpleScale){ + GUI.DrawTexture( new Rect((r.rect.x + r.margin.x + r.relativeRect.x)*r.relativeRect.width, (r.rect.y + r.margin.y + r.relativeRect.y)*r.relativeRect.height, size.x, size.y), r.texture ); + }else{ + GUI.DrawTexture( new Rect(r.rect.x + r.margin.x, r.rect.y + r.margin.y, size.x, size.y), r.texture ); + } + } + } + } + GUI.color = color; + } + } + } + + public static bool checkOnScreen(Rect rect){ + bool offLeft = rect.x + rect.width < 0f; + bool offRight = rect.x > Screen.width; + bool offBottom = rect.y > Screen.height; + bool offTop = rect.y + rect.height < 0f; + + return !(offLeft || offRight || offBottom || offTop); + } + + public static void destroy( int id ){ + int backId = id & 0xFFFF; + int backCounter = id >> 16; + if(id>=0 && levels[backId]!=null && levels[backId].hasInitiliazed && levels[backId].counter==backCounter) + levels[backId] = null; + } + + public static void destroyAll( int depth ){ // clears all gui elements on depth + int maxLoop = depth*RECTS_PER_LEVEL + RECTS_PER_LEVEL; + for(int i = depth*RECTS_PER_LEVEL; levels!=null && i < maxLoop; i++){ + levels[i] = null; + } + } + + public static LTRect label( Rect rect, string label, int depth){ + return LTGUI.label(new LTRect(rect), label, depth); + } + + public static LTRect label( LTRect rect, string label, int depth){ + rect.type = Element_Type.Label; + rect.labelStr = label; + return element(rect, depth); + } + + public static LTRect texture( Rect rect, Texture texture, int depth){ + return LTGUI.texture( new LTRect(rect), texture, depth); + } + + public static LTRect texture( LTRect rect, Texture texture, int depth){ + rect.type = Element_Type.Texture; + rect.texture = texture; + return element(rect, depth); + } + + public static LTRect element( LTRect rect, int depth){ + isGUIEnabled = true; + init(); + int maxLoop = depth*RECTS_PER_LEVEL + RECTS_PER_LEVEL; + int k = 0; + if(rect!=null){ + destroy(rect.id); + } + if(rect.type==LTGUI.Element_Type.Label && rect.style!=null){ + if(rect.style.normal.textColor.a<=0f){ + Debug.LogWarning("Your GUI normal color has an alpha of zero, and will not be rendered."); + } + } + if(rect.relativeRect.width==float.PositiveInfinity){ + rect.relativeRect = new Rect(0f,0f,Screen.width,Screen.height); + } + for(int i = depth*RECTS_PER_LEVEL; i < maxLoop; i++){ + r = levels[i]; + if(r==null){ + r = rect; + r.rotateEnabled = true; + r.alphaEnabled = true; + r.setId( i, global_counter ); + levels[i] = r; + // Debug.Log("k:"+k+ " maxDepth:"+levelDepths[depth]); + if(k>=levelDepths[depth]){ + levelDepths[depth] = k + 1; + } + global_counter++; + return r; + } + k++; + } + + Debug.LogError("You ran out of GUI Element spaces"); + + return null; + } + + public static bool hasNoOverlap( Rect rect, int depth ){ + initRectCheck(); + bool hasNoOverlap = true; + bool wasAddedToList = false; + for(int i = 0; i < buttonLevels.Length; i++){ + // Debug.Log("buttonLastFrame["+i+"]:"+buttonLastFrame[i]); + //Debug.Log("buttonLevels["+i+"]:"+buttonLevels[i]); + if(buttonLevels[i]>=0){ + //Debug.Log("buttonLastFrame["+i+"]:"+buttonLastFrame[i]+" Time.frameCount:"+Time.frameCount); + if( buttonLastFrame[i] + 1 < Time.frameCount ){ // It has to have been visible within the current, or + buttonLevels[i] = -1; + // Debug.Log("resetting i:"+i); + }else{ + //if(buttonLevels[i]>=0) + // Debug.Log("buttonLevels["+i+"]:"+buttonLevels[i]); + if(buttonLevels[i]>depth){ + /*if(firstTouch().x > 0){ + Debug.Log("buttons["+i+"]:"+buttons[i] + " firstTouch:"); + Debug.Log(firstTouch()); + Debug.Log(buttonLevels[i]); + }*/ + if(pressedWithinRect( buttons[i] )){ + hasNoOverlap = false; // there is an overlapping button that is higher + } + } + } + } + + if(wasAddedToList==false && buttonLevels[i]<0){ + wasAddedToList = true; + buttonLevels[i] = depth; + buttons[i] = rect; + buttonLastFrame[i] = Time.frameCount; + } + } + + return hasNoOverlap; + } + + public static bool pressedWithinRect( Rect rect ){ + Vector2 vec2 = firstTouch(); + if(vec2.x<0f) + return false; + float vecY = Screen.height-vec2.y; + return (vec2.x > rect.x && vec2.x < rect.x + rect.width && vecY > rect.y && vecY < rect.y + rect.height); + } + + public static bool checkWithinRect(Vector2 vec2, Rect rect){ + vec2.y = Screen.height-vec2.y; + return (vec2.x > rect.x && vec2.x < rect.x + rect.width && vec2.y > rect.y && vec2.y < rect.y + rect.height); + } + + public static Vector2 firstTouch(){ + if(Input.touchCount>0){ + return Input.touches[0].position; + }else if(Input.GetMouseButton(0)){ + return Input.mousePosition; + } + + return new Vector2(Mathf.NegativeInfinity,Mathf.NegativeInfinity); + } + +} + +namespace DentedPixel { public class LeanDummy {} } +//} diff --git a/Assets/LeanTween/Framework/LeanTween.cs.meta b/Assets/LeanTween/Framework/LeanTween.cs.meta new file mode 100644 index 0000000..bf90165 --- /dev/null +++ b/Assets/LeanTween/Framework/LeanTween.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 9c2f4b27196f84954b44753aaac214bb +timeCreated: 1463137984 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/LeanTween/Framework/LeanTween.dll.zip b/Assets/LeanTween/Framework/LeanTween.dll.zip new file mode 100644 index 0000000..029cde1 Binary files /dev/null and b/Assets/LeanTween/Framework/LeanTween.dll.zip differ diff --git a/Assets/LeanTween/Framework/LeanTween.dll.zip.meta b/Assets/LeanTween/Framework/LeanTween.dll.zip.meta new file mode 100644 index 0000000..345e828 --- /dev/null +++ b/Assets/LeanTween/Framework/LeanTween.dll.zip.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ffeadda6aaa064923a3f7e28ff26afb1 +timeCreated: 1477948563 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/LeanTween/Framework/LeanTweenExt.cs b/Assets/LeanTween/Framework/LeanTweenExt.cs new file mode 100644 index 0000000..1fc22b8 --- /dev/null +++ b/Assets/LeanTween/Framework/LeanTweenExt.cs @@ -0,0 +1,187 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using System; + +public static class LeanTweenExt +{ + //LeanTween.addListener + //LeanTween.alpha + public static LTDescr LeanAlpha(this GameObject gameObject, float to, float time) { return LeanTween.alpha(gameObject, to, time); } + //LeanTween.alphaCanvas + public static LTDescr LeanAlphaVertex(this GameObject gameObject, float to, float time) { return LeanTween.alphaVertex(gameObject, to, time); } + //LeanTween.alpha (RectTransform) + public static LTDescr LeanAlpha(this RectTransform rectTransform, float to, float time) { return LeanTween.alpha(rectTransform, to, time); } + //LeanTween.alphaCanvas + public static LTDescr LeanAlpha(this CanvasGroup canvas, float to, float time) { return LeanTween.alphaCanvas(canvas, to, time); } + //LeanTween.alphaText + public static LTDescr LeanAlphaText(this RectTransform rectTransform, float to, float time) { return LeanTween.alphaText(rectTransform, to, time); } + //LeanTween.cancel + public static void LeanCancel(this GameObject gameObject) { LeanTween.cancel(gameObject); } + public static void LeanCancel(this GameObject gameObject, bool callOnComplete) { LeanTween.cancel(gameObject, callOnComplete); } + public static void LeanCancel(this GameObject gameObject, int uniqueId, bool callOnComplete = false) { LeanTween.cancel(gameObject, uniqueId, callOnComplete); } + //LeanTween.cancel + public static void LeanCancel(this RectTransform rectTransform) { LeanTween.cancel(rectTransform); } + //LeanTween.cancelAll + //LeanTween.color + public static LTDescr LeanColor(this GameObject gameObject, Color to, float time) { return LeanTween.color(gameObject, to, time); } + //LeanTween.colorText + public static LTDescr LeanColorText(this RectTransform rectTransform, Color to, float time) { return LeanTween.colorText(rectTransform, to, time); } + //LeanTween.delayedCall + public static LTDescr LeanDelayedCall(this GameObject gameObject, float delayTime, System.Action callback) { return LeanTween.delayedCall(gameObject, delayTime, callback); } + public static LTDescr LeanDelayedCall(this GameObject gameObject, float delayTime, System.Action callback) { return LeanTween.delayedCall(gameObject, delayTime, callback); } + + //LeanTween.isPaused + public static bool LeanIsPaused(this GameObject gameObject) { return LeanTween.isPaused(gameObject); } + public static bool LeanIsPaused(this RectTransform rectTransform) { return LeanTween.isPaused(rectTransform); } + + //LeanTween.isTweening + public static bool LeanIsTweening(this GameObject gameObject) { return LeanTween.isTweening(gameObject); } + //LeanTween.isTweening + //LeanTween.move + public static LTDescr LeanMove(this GameObject gameObject, Vector3 to, float time) { return LeanTween.move(gameObject, to, time); } + public static LTDescr LeanMove(this Transform transform, Vector3 to, float time) { return LeanTween.move(transform.gameObject, to, time); } + public static LTDescr LeanMove(this RectTransform rectTransform, Vector3 to, float time) { return LeanTween.move(rectTransform, to, time); } + //LeanTween.move + public static LTDescr LeanMove(this GameObject gameObject, Vector2 to, float time) { return LeanTween.move(gameObject, to, time); } + public static LTDescr LeanMove(this Transform transform, Vector2 to, float time) { return LeanTween.move(transform.gameObject, to, time); } + //LeanTween.move + public static LTDescr LeanMove(this GameObject gameObject, Vector3[] to, float time) { return LeanTween.move(gameObject, to, time); } + public static LTDescr LeanMove(this GameObject gameObject, LTBezierPath to, float time) { return LeanTween.move(gameObject, to, time); } + public static LTDescr LeanMove(this GameObject gameObject, LTSpline to, float time) { return LeanTween.move(gameObject, to, time); } + public static LTDescr LeanMove(this Transform transform, Vector3[] to, float time) { return LeanTween.move(transform.gameObject, to, time); } + public static LTDescr LeanMove(this Transform transform, LTBezierPath to, float time) { return LeanTween.move(transform.gameObject, to, time); } + public static LTDescr LeanMove(this Transform transform, LTSpline to, float time) { return LeanTween.move(transform.gameObject, to, time); } + //LeanTween.moveLocal + public static LTDescr LeanMoveLocal(this GameObject gameObject, Vector3 to, float time) { return LeanTween.moveLocal(gameObject, to, time); } + public static LTDescr LeanMoveLocal(this GameObject gameObject, LTBezierPath to, float time) { return LeanTween.moveLocal(gameObject, to, time); } + public static LTDescr LeanMoveLocal(this GameObject gameObject, LTSpline to, float time) { return LeanTween.moveLocal(gameObject, to, time); } + public static LTDescr LeanMoveLocal(this Transform transform, Vector3 to, float time) { return LeanTween.moveLocal(transform.gameObject, to, time); } + public static LTDescr LeanMoveLocal(this Transform transform, LTBezierPath to, float time) { return LeanTween.moveLocal(transform.gameObject, to, time); } + public static LTDescr LeanMoveLocal(this Transform transform, LTSpline to, float time) { return LeanTween.moveLocal(transform.gameObject, to, time); } + //LeanTween.moveLocal + public static LTDescr LeanMoveLocalX(this GameObject gameObject, float to, float time) { return LeanTween.moveLocalX(gameObject, to, time); } + public static LTDescr LeanMoveLocalY(this GameObject gameObject, float to, float time) { return LeanTween.moveLocalY(gameObject, to, time); } + public static LTDescr LeanMoveLocalZ(this GameObject gameObject, float to, float time) { return LeanTween.moveLocalZ(gameObject, to, time); } + public static LTDescr LeanMoveLocalX(this Transform transform, float to, float time) { return LeanTween.moveLocalX(transform.gameObject, to, time); } + public static LTDescr LeanMoveLocalY(this Transform transform, float to, float time) { return LeanTween.moveLocalY(transform.gameObject, to, time); } + public static LTDescr LeanMoveLocalZ(this Transform transform, float to, float time) { return LeanTween.moveLocalZ(transform.gameObject, to, time); } + //LeanTween.moveSpline + public static LTDescr LeanMoveSpline(this GameObject gameObject, Vector3[] to, float time) { return LeanTween.moveSpline(gameObject, to, time); } + public static LTDescr LeanMoveSpline(this GameObject gameObject, LTSpline to, float time) { return LeanTween.moveSpline(gameObject, to, time); } + public static LTDescr LeanMoveSpline(this Transform transform, Vector3[] to, float time) { return LeanTween.moveSpline(transform.gameObject, to, time); } + public static LTDescr LeanMoveSpline(this Transform transform, LTSpline to, float time) { return LeanTween.moveSpline(transform.gameObject, to, time); } + //LeanTween.moveSplineLocal + public static LTDescr LeanMoveSplineLocal(this GameObject gameObject, Vector3[] to, float time) { return LeanTween.moveSplineLocal(gameObject, to, time); } + public static LTDescr LeanMoveSplineLocal(this Transform transform, Vector3[] to, float time) { return LeanTween.moveSplineLocal(transform.gameObject, to, time); } + //LeanTween.moveX + public static LTDescr LeanMoveX(this GameObject gameObject, float to, float time) { return LeanTween.moveX(gameObject, to, time); } + public static LTDescr LeanMoveX(this Transform transform, float to, float time) { return LeanTween.moveX(transform.gameObject, to, time); } + //LeanTween.moveX (RectTransform) + public static LTDescr LeanMoveX(this RectTransform rectTransform, float to, float time) { return LeanTween.moveX(rectTransform, to, time); } + //LeanTween.moveY + public static LTDescr LeanMoveY(this GameObject gameObject, float to, float time) { return LeanTween.moveY(gameObject, to, time); } + public static LTDescr LeanMoveY(this Transform transform, float to, float time) { return LeanTween.moveY(transform.gameObject, to, time); } + //LeanTween.moveY (RectTransform) + public static LTDescr LeanMoveY(this RectTransform rectTransform, float to, float time) { return LeanTween.moveY(rectTransform, to, time); } + //LeanTween.moveZ + public static LTDescr LeanMoveZ(this GameObject gameObject, float to, float time) { return LeanTween.moveZ(gameObject, to, time); } + public static LTDescr LeanMoveZ(this Transform transform, float to, float time) { return LeanTween.moveZ(transform.gameObject, to, time); } + //LeanTween.moveZ (RectTransform) + public static LTDescr LeanMoveZ(this RectTransform rectTransform, float to, float time) { return LeanTween.moveZ(rectTransform, to, time); } + //LeanTween.pause + public static void LeanPause(this GameObject gameObject) { LeanTween.pause(gameObject); } + //LeanTween.play + public static LTDescr LeanPlay(this RectTransform rectTransform, UnityEngine.Sprite[] sprites) { return LeanTween.play(rectTransform, sprites); } + //LeanTween.removeListener + //LeanTween.resume + public static void LeanResume(this GameObject gameObject) { LeanTween.resume(gameObject); } + //LeanTween.resumeAll + //LeanTween.rotate + public static LTDescr LeanRotate(this GameObject gameObject, Vector3 to, float time) { return LeanTween.rotate(gameObject, to, time); } + public static LTDescr LeanRotate(this Transform transform, Vector3 to, float time) { return LeanTween.rotate(transform.gameObject, to, time); } + //LeanTween.rotate + //LeanTween.rotate (RectTransform) + public static LTDescr LeanRotate(this RectTransform rectTransform, Vector3 to, float time) { return LeanTween.rotate(rectTransform, to, time); } + //LeanTween.rotateAround + public static LTDescr LeanRotateAround(this GameObject gameObject, Vector3 axis, float add, float time) { return LeanTween.rotateAround(gameObject, axis, add, time); } + public static LTDescr LeanRotateAround(this Transform transform, Vector3 axis, float add, float time) { return LeanTween.rotateAround(transform.gameObject, axis, add, time); } + //LeanTween.rotateAround (RectTransform) + public static LTDescr LeanRotateAround(this RectTransform rectTransform, Vector3 axis, float add, float time) { return LeanTween.rotateAround(rectTransform, axis, add, time); } + //LeanTween.rotateAroundLocal + public static LTDescr LeanRotateAroundLocal(this GameObject gameObject, Vector3 axis, float add, float time) { return LeanTween.rotateAroundLocal(gameObject, axis, add, time); } + public static LTDescr LeanRotateAroundLocal(this Transform transform, Vector3 axis, float add, float time) { return LeanTween.rotateAroundLocal(transform.gameObject, axis, add, time); } + //LeanTween.rotateAround (RectTransform) + public static LTDescr LeanRotateAroundLocal(this RectTransform rectTransform, Vector3 axis, float add, float time) { return LeanTween.rotateAroundLocal(rectTransform, axis, add, time); } + //LeanTween.rotateLocal + //LeanTween.rotateX + public static LTDescr LeanRotateX(this GameObject gameObject, float to, float time) { return LeanTween.rotateX(gameObject, to, time); } + public static LTDescr LeanRotateX(this Transform transform, float to, float time) { return LeanTween.rotateX(transform.gameObject, to, time); } + //LeanTween.rotateY + public static LTDescr LeanRotateY(this GameObject gameObject, float to, float time) { return LeanTween.rotateY(gameObject, to, time); } + public static LTDescr LeanRotateY(this Transform transform, float to, float time) { return LeanTween.rotateY(transform.gameObject, to, time); } + //LeanTween.rotateZ + public static LTDescr LeanRotateZ(this GameObject gameObject, float to, float time) { return LeanTween.rotateZ(gameObject, to, time); } + public static LTDescr LeanRotateZ(this Transform transform, float to, float time) { return LeanTween.rotateZ(transform.gameObject, to, time); } + //LeanTween.scale + public static LTDescr LeanScale(this GameObject gameObject, Vector3 to, float time) { return LeanTween.scale(gameObject, to, time); } + public static LTDescr LeanScale(this Transform transform, Vector3 to, float time) { return LeanTween.scale(transform.gameObject, to, time); } + //LeanTween.scale (GUI) + //LeanTween.scale (RectTransform) + public static LTDescr LeanScale(this RectTransform rectTransform, Vector3 to, float time) { return LeanTween.scale(rectTransform, to, time); } + //LeanTween.scaleX + public static LTDescr LeanScaleX(this GameObject gameObject, float to, float time) { return LeanTween.scaleX(gameObject, to, time); } + public static LTDescr LeanScaleX(this Transform transform, float to, float time) { return LeanTween.scaleX(transform.gameObject, to, time); } + //LeanTween.scaleY + public static LTDescr LeanScaleY(this GameObject gameObject, float to, float time) { return LeanTween.scaleY(gameObject, to, time); } + public static LTDescr LeanScaleY(this Transform transform, float to, float time) { return LeanTween.scaleY(transform.gameObject, to, time); } + //LeanTween.scaleZ + public static LTDescr LeanScaleZ(this GameObject gameObject, float to, float time) { return LeanTween.scaleZ(gameObject, to, time); } + public static LTDescr LeanScaleZ(this Transform transform, float to, float time) { return LeanTween.scaleZ(transform.gameObject, to, time); } + //LeanTween.sequence + //LeanTween.size (RectTransform) + public static LTDescr LeanSize(this RectTransform rectTransform, Vector2 to, float time) { return LeanTween.size(rectTransform, to, time); } + //LeanTween.tweensRunning + //LeanTween.value (Color) + public static LTDescr LeanValue(this GameObject gameObject, Color from, Color to, float time) { return LeanTween.value(gameObject, from, to, time); } + //LeanTween.value (Color) + //LeanTween.value (float) + public static LTDescr LeanValue(this GameObject gameObject, float from, float to, float time) { return LeanTween.value(gameObject, from, to, time); } + public static LTDescr LeanValue(this GameObject gameObject, Vector2 from, Vector2 to, float time) { return LeanTween.value(gameObject, from, to, time); } + public static LTDescr LeanValue(this GameObject gameObject, Vector3 from, Vector3 to, float time) { return LeanTween.value(gameObject, from, to, time); } + //LeanTween.value (float) + public static LTDescr LeanValue(this GameObject gameObject, Action callOnUpdate, float from, float to, float time) { return LeanTween.value(gameObject, callOnUpdate, from, to, time); } + public static LTDescr LeanValue(this GameObject gameObject, Action callOnUpdate, float from, float to, float time) { return LeanTween.value(gameObject, callOnUpdate, from, to, time); } + public static LTDescr LeanValue(this GameObject gameObject, Action callOnUpdate, float from, float to, float time) { return LeanTween.value(gameObject, callOnUpdate, from, to, time); } + public static LTDescr LeanValue(this GameObject gameObject, Action callOnUpdate, Color from, Color to, float time) { return LeanTween.value(gameObject, callOnUpdate, from, to, time); } + public static LTDescr LeanValue(this GameObject gameObject, Action callOnUpdate, Vector2 from, Vector2 to, float time) { return LeanTween.value(gameObject, callOnUpdate, from, to, time); } + public static LTDescr LeanValue(this GameObject gameObject, Action callOnUpdate, Vector3 from, Vector3 to, float time) { return LeanTween.value(gameObject, callOnUpdate, from, to, time); } + + public static void LeanSetPosX(this Transform transform, float val){ + transform.position = new Vector3(val, transform.position.y, transform.position.z); + } + public static void LeanSetPosY(this Transform transform, float val) { + transform.position = new Vector3(transform.position.x, val, transform.position.z); + } + public static void LeanSetPosZ(this Transform transform, float val) { + transform.position = new Vector3(transform.position.x, transform.position.y, val); + } + + public static void LeanSetLocalPosX(this Transform transform, float val) + { + transform.localPosition = new Vector3(val, transform.localPosition.y, transform.localPosition.z); + } + public static void LeanSetLocalPosY(this Transform transform, float val) + { + transform.localPosition = new Vector3(transform.localPosition.x, val, transform.localPosition.z); + } + public static void LeanSetLocalPosZ(this Transform transform, float val) + { + transform.localPosition = new Vector3(transform.localPosition.x, transform.localPosition.y, val); + } + + public static Color LeanColor(this Transform transform) + { + return transform.GetComponent().material.color; + } +} diff --git a/Assets/LeanTween/Framework/LeanTweenExt.cs.meta b/Assets/LeanTween/Framework/LeanTweenExt.cs.meta new file mode 100644 index 0000000..5be2f23 --- /dev/null +++ b/Assets/LeanTween/Framework/LeanTweenExt.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 5dbe851e9c0814f1d8f514ecf70f675d +timeCreated: 1533842565 +licenseType: Store +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/LeanTween/License.txt b/Assets/LeanTween/License.txt new file mode 100644 index 0000000..4f43b9a --- /dev/null +++ b/Assets/LeanTween/License.txt @@ -0,0 +1,31 @@ +The MIT License (MIT) + +Copyright (c) 2017 Russell Savage - Dented Pixel + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +TERMS OF USE - EASING EQUATIONS +Open source under the BSD License. +Copyright (c)2001 Robert Penner +All rights reserved. +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: +Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. +Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. +Neither the name of the author nor the names of contributors may be used to endorse or promote products derived from this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/Assets/LeanTween/License.txt.meta b/Assets/LeanTween/License.txt.meta new file mode 100644 index 0000000..1d0d8ca --- /dev/null +++ b/Assets/LeanTween/License.txt.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e389e9bcd4f944c338327697bd209cad +timeCreated: 1469016738 +licenseType: Store +TextScriptImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/LeanTween/ReadMe.txt b/Assets/LeanTween/ReadMe.txt new file mode 100644 index 0000000..49687de --- /dev/null +++ b/Assets/LeanTween/ReadMe.txt @@ -0,0 +1,9 @@ +LeanTween is an efficient tweening engine for Unity3d + +Full Documentation: + http://dentedpixel.com/LeanTweenDocumentation/classes/LeanTween.html + This can also be accessed offline! From the Unity menu Help->LeanTween Documentation + +Getting Started + + There are many examples included! Look in the “LeanTween/LeanTweenExamples" folder to see many of the methods outlined. diff --git a/Assets/LeanTween/ReadMe.txt.meta b/Assets/LeanTween/ReadMe.txt.meta new file mode 100644 index 0000000..c08c74a --- /dev/null +++ b/Assets/LeanTween/ReadMe.txt.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: f1e0da947b69648fdb1884d602088d92 diff --git a/Assets/Prefabs.meta b/Assets/Prefabs.meta new file mode 100644 index 0000000..7fb5d91 --- /dev/null +++ b/Assets/Prefabs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f3d28a9c465d5d54caf3c2976adc64d9 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Prefabs/Generic.meta b/Assets/Prefabs/Generic.meta new file mode 100644 index 0000000..617cf09 --- /dev/null +++ b/Assets/Prefabs/Generic.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 83fb131611efa414a97565a0092496d5 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Prefabs/Generic/AudioManager.prefab b/Assets/Prefabs/Generic/AudioManager.prefab new file mode 100644 index 0000000..c7f5459 --- /dev/null +++ b/Assets/Prefabs/Generic/AudioManager.prefab @@ -0,0 +1,574 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &6776060637077014056 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6776060637077014058} + - component: {fileID: 6776060637077014057} + m_Layer: 0 + m_Name: SFXAudioSource + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &6776060637077014058 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6776060637077014056} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 6776060638903640299} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!82 &6776060637077014057 +AudioSource: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6776060637077014056} + m_Enabled: 1 + serializedVersion: 4 + OutputAudioMixerGroup: {fileID: 0} + m_audioClip: {fileID: 0} + m_PlayOnAwake: 1 + m_Volume: 1 + m_Pitch: 1 + Loop: 0 + Mute: 0 + Spatialize: 0 + SpatializePostEffects: 0 + Priority: 128 + DopplerLevel: 1 + MinDistance: 1 + MaxDistance: 500 + Pan2D: 0 + rolloffMode: 0 + BypassEffects: 0 + BypassListenerEffects: 0 + BypassReverbZones: 0 + rolloffCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + panLevelCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + spreadCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + reverbZoneMixCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 +--- !u!1 &6776060637407381894 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6776060637407381888} + - component: {fileID: 6776060637407381895} + m_Layer: 0 + m_Name: UIAudioSource + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &6776060637407381888 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6776060637407381894} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 6776060638903640299} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!82 &6776060637407381895 +AudioSource: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6776060637407381894} + m_Enabled: 1 + serializedVersion: 4 + OutputAudioMixerGroup: {fileID: 0} + m_audioClip: {fileID: 0} + m_PlayOnAwake: 1 + m_Volume: 1 + m_Pitch: 1 + Loop: 0 + Mute: 0 + Spatialize: 0 + SpatializePostEffects: 0 + Priority: 128 + DopplerLevel: 1 + MinDistance: 1 + MaxDistance: 500 + Pan2D: 0 + rolloffMode: 0 + BypassEffects: 0 + BypassListenerEffects: 0 + BypassReverbZones: 0 + rolloffCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + panLevelCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + spreadCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + reverbZoneMixCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 +--- !u!1 &6776060638187366663 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6776060638187366657} + - component: {fileID: 6776060638187366656} + m_Layer: 0 + m_Name: BGMAudioSource + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &6776060638187366657 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6776060638187366663} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 6776060638903640299} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!82 &6776060638187366656 +AudioSource: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6776060638187366663} + m_Enabled: 1 + serializedVersion: 4 + OutputAudioMixerGroup: {fileID: 0} + m_audioClip: {fileID: 0} + m_PlayOnAwake: 1 + m_Volume: 1 + m_Pitch: 1 + Loop: 0 + Mute: 0 + Spatialize: 0 + SpatializePostEffects: 0 + Priority: 128 + DopplerLevel: 1 + MinDistance: 1 + MaxDistance: 500 + Pan2D: 0 + rolloffMode: 0 + BypassEffects: 0 + BypassListenerEffects: 0 + BypassReverbZones: 0 + rolloffCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + panLevelCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + spreadCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + reverbZoneMixCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 +--- !u!1 &6776060638898496868 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6776060638898496870} + - component: {fileID: 6776060638898496869} + m_Layer: 0 + m_Name: AmbientAudioSource + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &6776060638898496870 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6776060638898496868} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 6776060638903640299} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!82 &6776060638898496869 +AudioSource: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6776060638898496868} + m_Enabled: 1 + serializedVersion: 4 + OutputAudioMixerGroup: {fileID: 0} + m_audioClip: {fileID: 0} + m_PlayOnAwake: 1 + m_Volume: 1 + m_Pitch: 1 + Loop: 0 + Mute: 0 + Spatialize: 0 + SpatializePostEffects: 0 + Priority: 128 + DopplerLevel: 1 + MinDistance: 1 + MaxDistance: 500 + Pan2D: 0 + rolloffMode: 0 + BypassEffects: 0 + BypassListenerEffects: 0 + BypassReverbZones: 0 + rolloffCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + panLevelCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + spreadCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + reverbZoneMixCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 +--- !u!1 &6776060638903640297 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6776060638903640299} + - component: {fileID: 6776060638903640298} + m_Layer: 0 + m_Name: AudioManager + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &6776060638903640299 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6776060638903640297} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 6776060638187366657} + - {fileID: 6776060637077014058} + - {fileID: 6776060638898496870} + - {fileID: 6776060637407381888} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &6776060638903640298 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6776060638903640297} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 74d11a8e609d32b4bb6702a8c6852f83, type: 3} + m_Name: + m_EditorClassIdentifier: + soundAudioSrc: {fileID: 6776060637077014057} + bgmAudioSource: {fileID: 6776060638187366656} + uiAudioSource: {fileID: 6776060637407381895} + ambientAudioSource: {fileID: 6776060638898496869} + masterVolume: 1 + changeOtherSources: 0 + playOnStart: 0 + startingAudio: + extraAudioThreads: [] + fadeAudioEffectSpeed: 1 + audioArray: + - audioName: ButtonSound + extraThreadIndex: 0 + audioType: 0 + clip: {fileID: 8300000, guid: a1d88d7a37e75434eae69504331cd948, type: 3} + loop: 0 + defaultVolume: 1 diff --git a/Assets/Prefabs/Generic/AudioManager.prefab.meta b/Assets/Prefabs/Generic/AudioManager.prefab.meta new file mode 100644 index 0000000..c068588 --- /dev/null +++ b/Assets/Prefabs/Generic/AudioManager.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 8b3389bdde458c24e92d6d7c885a36d2 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Prefabs/Generic/SceneTransitionManager.prefab b/Assets/Prefabs/Generic/SceneTransitionManager.prefab new file mode 100644 index 0000000..e9eac6f --- /dev/null +++ b/Assets/Prefabs/Generic/SceneTransitionManager.prefab @@ -0,0 +1,454 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &3774675763779798852 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3774675763779798853} + - component: {fileID: 3774675763779798851} + - component: {fileID: 3774675763779798850} + m_Layer: 0 + m_Name: Panel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3774675763779798853 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3774675763779798852} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 3774675765173630535} + m_Father: {fileID: 3774675765003214933} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &3774675763779798851 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3774675763779798852} + m_CullTransparentMesh: 1 +--- !u!114 &3774675763779798850 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3774675763779798852} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: c60e479f442f36e4a990235675a8f11f, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &3774675764626453094 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3774675764626453092} + - component: {fileID: 3774675764626453095} + m_Layer: 0 + m_Name: SceneTransitionManager + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3774675764626453092 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3774675764626453094} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 3774675764858762923} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &3774675764626453095 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3774675764626453094} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 76ad778d7bf1bbc41bacdfd410da4a84, type: 3} + m_Name: + m_EditorClassIdentifier: + transitionTime: 1 + enableStartingTransition: 1 + transitionEnterFunction: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 3774675765003214931} + m_TargetAssemblyTypeName: TransitionUI, Assembly-CSharp + m_MethodName: TransitionAnimationEnter + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + transitionExitFunction: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 3774675765003214931} + m_TargetAssemblyTypeName: TransitionUI, Assembly-CSharp + m_MethodName: TransitionAnimationExit + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!1 &3774675764858762922 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3774675764858762923} + - component: {fileID: 3774675764858762934} + - component: {fileID: 3774675764858762921} + - component: {fileID: 3774675764858762920} + m_Layer: 0 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3774675764858762923 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3774675764858762922} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 3774675765003214933} + m_Father: {fileID: 3774675764626453092} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!223 &3774675764858762934 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3774675764858762922} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 1 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_AdditionalShaderChannelsFlag: 25 + m_SortingLayerID: -894276305 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!114 &3774675764858762921 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3774675764858762922} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 1 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 1280, y: 720} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 + m_PresetInfoIsWorld: 0 +--- !u!114 &3774675764858762920 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3774675764858762922} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!1 &3774675765003214932 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3774675765003214933} + - component: {fileID: 3774675765003214931} + - component: {fileID: 3774675765003214930} + m_Layer: 0 + m_Name: TransitonUI + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3774675765003214933 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3774675765003214932} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 3774675763779798853} + m_Father: {fileID: 3774675764858762923} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &3774675765003214931 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3774675765003214932} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: cdf26c62e5d4b2d4490ef743edfbe89b, type: 3} + m_Name: + m_EditorClassIdentifier: + canvasGroup: {fileID: 3774675765003214930} + useDefaultFadeTransition: 1 + effectDuration: 1 + fadeEffectType: 1 +--- !u!225 &3774675765003214930 +CanvasGroup: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3774675765003214932} + m_Enabled: 1 + m_Alpha: 1 + m_Interactable: 1 + m_BlocksRaycasts: 1 + m_IgnoreParentGroups: 0 +--- !u!1 &3774675765173630534 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3774675765173630535} + - component: {fileID: 3774675765173630533} + - component: {fileID: 3774675765173630532} + m_Layer: 0 + m_Name: LoadingTMP + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3774675765173630535 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3774675765173630534} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 3774675763779798853} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0} + m_AnchorMax: {x: 1, y: 0} + m_AnchoredPosition: {x: -221, y: 75} + m_SizeDelta: {x: 363, y: 72.95999} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &3774675765173630533 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3774675765173630534} + m_CullTransparentMesh: 1 +--- !u!114 &3774675765173630532 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3774675765173630534} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: Loading... + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294967295 + m_fontColor: {r: 1, g: 1, b: 1, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 60 + m_fontSizeBase: 60 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 1 + m_HorizontalAlignment: 1 + m_VerticalAlignment: 256 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} diff --git a/Assets/Prefabs/Generic/SceneTransitionManager.prefab.meta b/Assets/Prefabs/Generic/SceneTransitionManager.prefab.meta new file mode 100644 index 0000000..7ab35d1 --- /dev/null +++ b/Assets/Prefabs/Generic/SceneTransitionManager.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: a0428753c877d4d42ace789b24fe6ef1 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Prefabs/Generic/UI.meta b/Assets/Prefabs/Generic/UI.meta new file mode 100644 index 0000000..962b098 --- /dev/null +++ b/Assets/Prefabs/Generic/UI.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: aa45a4ac151534f4e995edc6bc56f2e3 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Prefabs/Generic/UI/GenericButton.prefab b/Assets/Prefabs/Generic/UI/GenericButton.prefab new file mode 100644 index 0000000..ab8c50b --- /dev/null +++ b/Assets/Prefabs/Generic/UI/GenericButton.prefab @@ -0,0 +1,285 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &205198456463345212 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 205198456463345213} + - component: {fileID: 205198456463345208} + - component: {fileID: 205198456463345215} + - component: {fileID: 205198456463345214} + - component: {fileID: 205198456463345209} + m_Layer: 5 + m_Name: GenericButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &205198456463345213 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 205198456463345212} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 205198456859742481} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 78.7} + m_SizeDelta: {x: 160, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &205198456463345208 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 205198456463345212} + m_CullTransparentMesh: 1 +--- !u!114 &205198456463345215 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 205198456463345212} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: c60e479f442f36e4a990235675a8f11f, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &205198456463345214 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 205198456463345212} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 205198456463345215} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 205198456463345209} + m_TargetAssemblyTypeName: PlayAudioScript, Assembly-CSharp + m_MethodName: PlayAudio + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!114 &205198456463345209 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 205198456463345212} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7b631eb531e35d048ad89374962e76b1, type: 3} + m_Name: + m_EditorClassIdentifier: + audioName: ButtonSound +--- !u!1 &205198456859742480 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 205198456859742481} + - component: {fileID: 205198456859742483} + - component: {fileID: 205198456859742482} + m_Layer: 5 + m_Name: ButtonTextTMP + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &205198456859742481 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 205198456859742480} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 205198456463345213} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &205198456859742483 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 205198456859742480} + m_CullTransparentMesh: 1 +--- !u!114 &205198456859742482 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 205198456859742480} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: 'Button + +' + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4281479730 + m_fontColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 24 + m_fontSizeBase: 24 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} diff --git a/Assets/Prefabs/Generic/UI/GenericButton.prefab.meta b/Assets/Prefabs/Generic/UI/GenericButton.prefab.meta new file mode 100644 index 0000000..51b328a --- /dev/null +++ b/Assets/Prefabs/Generic/UI/GenericButton.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 17516442c9d42194e8f0e602257a34f2 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Prefabs/SceneManagers.meta b/Assets/Prefabs/SceneManagers.meta new file mode 100644 index 0000000..c5ec2f3 --- /dev/null +++ b/Assets/Prefabs/SceneManagers.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3ab2ad6f35e87cd42b8b904e8237ad48 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Prefabs/SceneManagers/MainMenuScene.prefab b/Assets/Prefabs/SceneManagers/MainMenuScene.prefab new file mode 100644 index 0000000..991e91e --- /dev/null +++ b/Assets/Prefabs/SceneManagers/MainMenuScene.prefab @@ -0,0 +1,32 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &2869957253872983843 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2869957253872983841} + m_Layer: 0 + m_Name: MainMenuScene + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2869957253872983841 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2869957253872983843} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1.4861745, y: -2.4737353, z: 99.56795} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/Assets/Prefabs/SceneManagers/MainMenuScene.prefab.meta b/Assets/Prefabs/SceneManagers/MainMenuScene.prefab.meta new file mode 100644 index 0000000..344099c --- /dev/null +++ b/Assets/Prefabs/SceneManagers/MainMenuScene.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 93243fb2c86e6a44cb05cb19aff26211 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes.meta b/Assets/Scenes.meta new file mode 100644 index 0000000..3a5df1c --- /dev/null +++ b/Assets/Scenes.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c30875eb198d13f4d838125bd11bfa19 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes/Lemon_Test.unity b/Assets/Scenes/Lemon_Test.unity new file mode 100644 index 0000000..7f53c00 --- /dev/null +++ b/Assets/Scenes/Lemon_Test.unity @@ -0,0 +1,206 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 3 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 11 + m_GIWorkflowMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 0 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 256 + m_ReflectionCompression: 2 + m_MixedBakeMode: 2 + m_BakeBackend: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 256 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 1 + m_PVRDenoiserTypeDirect: 1 + m_PVRDenoiserTypeIndirect: 1 + m_PVRDenoiserTypeAO: 1 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 1 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 0} + m_UseShadowmask: 1 +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &2045221401 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2045221404} + - component: {fileID: 2045221403} + - component: {fileID: 2045221402} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &2045221402 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2045221401} + m_Enabled: 1 +--- !u!20 &2045221403 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2045221401} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 1 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &2045221404 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2045221401} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/Assets/Scenes/Lemon_Test.unity.meta b/Assets/Scenes/Lemon_Test.unity.meta new file mode 100644 index 0000000..7bee75c --- /dev/null +++ b/Assets/Scenes/Lemon_Test.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 993995b5273d9ca41be90dff40b37089 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes/MainMenuScene.unity b/Assets/Scenes/MainMenuScene.unity new file mode 100644 index 0000000..b3092aa --- /dev/null +++ b/Assets/Scenes/MainMenuScene.unity @@ -0,0 +1,2676 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 3 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 11 + m_GIWorkflowMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 0 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 256 + m_ReflectionCompression: 2 + m_MixedBakeMode: 2 + m_BakeBackend: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 256 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 1 + m_PVRDenoiserTypeDirect: 1 + m_PVRDenoiserTypeIndirect: 1 + m_PVRDenoiserTypeAO: 1 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 1 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 0} + m_UseShadowmask: 1 +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &74093539 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 74093540} + m_Layer: 5 + m_Name: CreditsTab + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &74093540 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 74093539} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1323604326} + m_Father: {fileID: 944464612} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &111153578 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 111153579} + - component: {fileID: 111153581} + - component: {fileID: 111153580} + m_Layer: 5 + m_Name: Panel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &111153579 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 111153578} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1899687693} + m_Father: {fileID: 396298348} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &111153580 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 111153578} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0.392} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: c60e479f442f36e4a990235675a8f11f, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &111153581 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 111153578} + m_CullTransparentMesh: 1 +--- !u!1001 &180541194 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 987901515} + m_Modifications: + - target: {fileID: 205198456463345212, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_Name + value: QuitButton + objectReference: {fileID: 0} + - target: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_SizeDelta.x + value: 264.1 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_SizeDelta.y + value: 49.52 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345214, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.size + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345214, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Mode + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345214, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Target + value: + objectReference: {fileID: 331240513} + - target: {fileID: 205198456463345214, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345214, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_MethodName + value: QuitGame + objectReference: {fileID: 0} + - target: {fileID: 205198456463345214, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_TargetAssemblyTypeName + value: SceneTransition, Assembly-CSharp + objectReference: {fileID: 0} + - target: {fileID: 205198456463345214, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine + objectReference: {fileID: 0} + - target: {fileID: 205198456859742482, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_text + value: Quit + objectReference: {fileID: 0} + - target: {fileID: 205198456859742482, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_fontSize + value: 30 + objectReference: {fileID: 0} + - target: {fileID: 205198456859742482, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_fontSizeBase + value: 30 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 17516442c9d42194e8f0e602257a34f2, type: 3} +--- !u!224 &180541195 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + m_PrefabInstance: {fileID: 180541194} + m_PrefabAsset: {fileID: 0} +--- !u!114 &331240513 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 3774675764626453095, guid: a0428753c877d4d42ace789b24fe6ef1, + type: 3} + m_PrefabInstance: {fileID: 3774675764401382950} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 76ad778d7bf1bbc41bacdfd410da4a84, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &396298347 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 396298348} + m_Layer: 5 + m_Name: MainUIContainer + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &396298348 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 396298347} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 520512879} + - {fileID: 987901515} + - {fileID: 111153579} + m_Father: {fileID: 1919286910} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &488929268 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 205198456463345212, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + m_PrefabInstance: {fileID: 1533712751} + m_PrefabAsset: {fileID: 0} +--- !u!114 &488929269 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 488929268} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ccb3057007dfb1541810d434b448bcc8, type: 3} + m_Name: + m_EditorClassIdentifier: + tabGroup: {fileID: 944464613} + onTabEnter: + m_PersistentCalls: + m_Calls: [] + onTabExit: + m_PersistentCalls: + m_Calls: [] + onTabSelected: + m_PersistentCalls: + m_Calls: [] + onTabDeselected: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &520512878 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 520512879} + - component: {fileID: 520512881} + - component: {fileID: 520512880} + m_Layer: 5 + m_Name: GameLogo + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &520512879 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 520512878} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 807209405} + m_Father: {fileID: 396298348} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 1} + m_AnchorMax: {x: 0.5, y: 1} + m_AnchoredPosition: {x: 0.0000076294, y: -152} + m_SizeDelta: {x: 651.92, y: 145.38} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &520512880 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 520512878} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: c60e479f442f36e4a990235675a8f11f, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &520512881 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 520512878} + m_CullTransparentMesh: 1 +--- !u!1 &608408258 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 608408259} + - component: {fileID: 608408261} + - component: {fileID: 608408260} + m_Layer: 5 + m_Name: Panel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &608408259 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 608408258} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 2113964300} + - {fileID: 944464612} + m_Father: {fileID: 1899687693} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -136.04, y: -83.3} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &608408260 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 608408258} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: c60e479f442f36e4a990235675a8f11f, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &608408261 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 608408258} + m_CullTransparentMesh: 1 +--- !u!1 &807209404 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 807209405} + - component: {fileID: 807209407} + - component: {fileID: 807209406} + m_Layer: 5 + m_Name: GameTitleTMP + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &807209405 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 807209404} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 520512879} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: -0.0000039256} + m_SizeDelta: {x: 427.69, y: 77.43} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &807209406 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 807209404} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: Game Title + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294967295 + m_fontColor: {r: 1, g: 1, b: 1, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 80 + m_fontSizeBase: 80 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!222 &807209407 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 807209404} + m_CullTransparentMesh: 1 +--- !u!1 &913062774 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 913062775} + m_Layer: 5 + m_Name: HowToPlayTab + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &913062775 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 913062774} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1123761198} + m_Father: {fileID: 944464612} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &944464611 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 944464612} + - component: {fileID: 944464613} + m_Layer: 5 + m_Name: TabGroup + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &944464612 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 944464611} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 913062775} + - {fileID: 74093540} + m_Father: {fileID: 608408259} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -79.87, y: -65.11} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &944464613 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 944464611} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0206a02701fc75c4eb1f54e3113fd697, type: 3} + m_Name: + m_EditorClassIdentifier: + tabSets: + - tabButton: {fileID: 488929269} + tabObject: {fileID: 913062774} + - tabButton: {fileID: 1688764030} + tabObject: {fileID: 74093539} + defaultTabIndex: 0 +--- !u!1 &987901514 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 987901515} + - component: {fileID: 987901516} + m_Layer: 5 + m_Name: Button Containers + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &987901515 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 987901514} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1767459689} + - {fileID: 1533712752} + - {fileID: 1163145422} + - {fileID: 180541195} + m_Father: {fileID: 396298348} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 4.55e-13, y: -133} + m_SizeDelta: {x: 288.81, y: 349.61} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &987901516 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 987901514} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 4 + m_Spacing: 0 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 1 + m_ChildControlWidth: 0 + m_ChildControlHeight: 0 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 +--- !u!1 &1123761197 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1123761198} + - component: {fileID: 1123761200} + - component: {fileID: 1123761199} + m_Layer: 5 + m_Name: HowToContentTMP + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1123761198 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1123761197} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 913062775} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 462.79, y: 99.29} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1123761199 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1123761197} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: 'Tutorial + + Here' + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294967295 + m_fontColor: {r: 1, g: 1, b: 1, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 70 + m_fontSizeBase: 70 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!222 &1123761200 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1123761197} + m_CullTransparentMesh: 1 +--- !u!1001 &1163145421 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 987901515} + m_Modifications: + - target: {fileID: 205198456463345212, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_Name + value: CreditsButton + objectReference: {fileID: 0} + - target: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_SizeDelta.x + value: 264.1 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_SizeDelta.y + value: 49.52 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345214, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.size + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345214, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Mode + value: 6 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345214, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[2].m_Mode + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345214, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Target + value: + objectReference: {fileID: 111153578} + - target: {fileID: 205198456463345214, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[2].m_Target + value: + objectReference: {fileID: 1688764030} + - target: {fileID: 205198456463345214, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345214, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[2].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345214, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_MethodName + value: SetActive + objectReference: {fileID: 0} + - target: {fileID: 205198456463345214, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[2].m_MethodName + value: OnEnter + objectReference: {fileID: 0} + - target: {fileID: 205198456463345214, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_TargetAssemblyTypeName + value: UnityEngine.GameObject, UnityEngine + objectReference: {fileID: 0} + - target: {fileID: 205198456463345214, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[2].m_TargetAssemblyTypeName + value: TabButtonScript, Assembly-CSharp + objectReference: {fileID: 0} + - target: {fileID: 205198456463345214, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_BoolArgument + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345214, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[2].m_Arguments.m_BoolArgument + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345214, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine + objectReference: {fileID: 0} + - target: {fileID: 205198456463345214, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[2].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine + objectReference: {fileID: 0} + - target: {fileID: 205198456859742482, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_text + value: Credits + objectReference: {fileID: 0} + - target: {fileID: 205198456859742482, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_fontSize + value: 30 + objectReference: {fileID: 0} + - target: {fileID: 205198456859742482, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_fontSizeBase + value: 30 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 17516442c9d42194e8f0e602257a34f2, type: 3} +--- !u!224 &1163145422 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + m_PrefabInstance: {fileID: 1163145421} + m_PrefabAsset: {fileID: 0} +--- !u!1 &1323604325 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1323604326} + - component: {fileID: 1323604328} + - component: {fileID: 1323604327} + m_Layer: 5 + m_Name: CreditsContentTMP + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1323604326 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1323604325} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 74093540} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 462.79, y: 99.29} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1323604327 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1323604325} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: 'Credits + + Here' + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294967295 + m_fontColor: {r: 1, g: 1, b: 1, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 70 + m_fontSizeBase: 70 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!222 &1323604328 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1323604325} + m_CullTransparentMesh: 1 +--- !u!1001 &1533712751 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 987901515} + m_Modifications: + - target: {fileID: 205198456463345212, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_Name + value: HowToButon + objectReference: {fileID: 0} + - target: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_SizeDelta.x + value: 264.1 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_SizeDelta.y + value: 49.52 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345214, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.size + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345214, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Mode + value: 6 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345214, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[2].m_Mode + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345214, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Target + value: + objectReference: {fileID: 111153578} + - target: {fileID: 205198456463345214, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[2].m_Target + value: + objectReference: {fileID: 488929269} + - target: {fileID: 205198456463345214, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345214, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[2].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345214, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_MethodName + value: SetActive + objectReference: {fileID: 0} + - target: {fileID: 205198456463345214, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[2].m_MethodName + value: OnEnter + objectReference: {fileID: 0} + - target: {fileID: 205198456463345214, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_TargetAssemblyTypeName + value: UnityEngine.GameObject, UnityEngine + objectReference: {fileID: 0} + - target: {fileID: 205198456463345214, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[2].m_TargetAssemblyTypeName + value: TabButtonScript, Assembly-CSharp + objectReference: {fileID: 0} + - target: {fileID: 205198456463345214, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_BoolArgument + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345214, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[2].m_Arguments.m_BoolArgument + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345214, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgument + value: + objectReference: {fileID: 0} + - target: {fileID: 205198456463345214, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine + objectReference: {fileID: 0} + - target: {fileID: 205198456463345214, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[2].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine + objectReference: {fileID: 0} + - target: {fileID: 205198456859742482, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_text + value: How to Play + objectReference: {fileID: 0} + - target: {fileID: 205198456859742482, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_fontSize + value: 30 + objectReference: {fileID: 0} + - target: {fileID: 205198456859742482, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_fontSizeBase + value: 30 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 17516442c9d42194e8f0e602257a34f2, type: 3} +--- !u!224 &1533712752 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + m_PrefabInstance: {fileID: 1533712751} + m_PrefabAsset: {fileID: 0} +--- !u!1 &1538630162 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1538630165} + - component: {fileID: 1538630164} + - component: {fileID: 1538630163} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &1538630163 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1538630162} + m_Enabled: 1 +--- !u!20 &1538630164 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1538630162} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 1 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &1538630165 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1538630162} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1590985153 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 2869957253872983843, guid: 93243fb2c86e6a44cb05cb19aff26211, + type: 3} + m_PrefabInstance: {fileID: 2869957254671959531} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1590985154 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1590985153} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f160c48854b89c54a98d6f6badfcd3a2, type: 3} + m_Name: + m_EditorClassIdentifier: + mainMenuTrack: TestTrack +--- !u!1 &1688764029 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 205198456463345212, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + m_PrefabInstance: {fileID: 1163145421} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1688764030 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1688764029} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ccb3057007dfb1541810d434b448bcc8, type: 3} + m_Name: + m_EditorClassIdentifier: + tabGroup: {fileID: 944464613} + onTabEnter: + m_PersistentCalls: + m_Calls: [] + onTabExit: + m_PersistentCalls: + m_Calls: [] + onTabSelected: + m_PersistentCalls: + m_Calls: [] + onTabDeselected: + m_PersistentCalls: + m_Calls: [] +--- !u!224 &1767459689 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + m_PrefabInstance: {fileID: 205198457112989012} + m_PrefabAsset: {fileID: 0} +--- !u!1 &1851459289 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1851459292} + - component: {fileID: 1851459291} + - component: {fileID: 1851459290} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1851459290 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1851459289} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalAxis: Horizontal + m_VerticalAxis: Vertical + m_SubmitButton: Submit + m_CancelButton: Cancel + m_InputActionsPerSecond: 10 + m_RepeatDelay: 0.5 + m_ForceModuleActive: 0 +--- !u!114 &1851459291 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1851459289} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 1 + m_DragThreshold: 10 +--- !u!4 &1851459292 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1851459289} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1899687692 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1899687693} + - component: {fileID: 1899687695} + - component: {fileID: 1899687694} + - component: {fileID: 1899687697} + - component: {fileID: 1899687696} + m_Layer: 5 + m_Name: Blocker + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1899687693 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1899687692} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 608408259} + m_Father: {fileID: 111153579} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1899687694 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1899687692} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0.392} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: c60e479f442f36e4a990235675a8f11f, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1899687695 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1899687692} + m_CullTransparentMesh: 1 +--- !u!114 &1899687696 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1899687692} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7b631eb531e35d048ad89374962e76b1, type: 3} + m_Name: + m_EditorClassIdentifier: + audioName: ButtonSound +--- !u!114 &1899687697 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1899687692} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1899687694} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 111153578} + m_MethodName: SetActive + m_Mode: 6 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + - m_Target: {fileID: 1899687696} + m_MethodName: PlayAudio + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!1 &1919286906 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1919286910} + - component: {fileID: 1919286909} + - component: {fileID: 1919286908} + - component: {fileID: 1919286907} + m_Layer: 5 + m_Name: MainMenuCanvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1919286907 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1919286906} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &1919286908 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1919286906} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 1 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 1280, y: 720} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 +--- !u!223 &1919286909 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1919286906} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 1 + m_Camera: {fileID: 1538630164} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_AdditionalShaderChannelsFlag: 25 + m_SortingLayerID: 801317867 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!224 &1919286910 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1919286906} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 396298348} + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!1001 &2113964299 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 608408259} + m_Modifications: + - target: {fileID: 205198456463345212, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_Name + value: GenericButton + objectReference: {fileID: 0} + - target: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_AnchorMax.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_AnchorMin.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_SizeDelta.x + value: 70 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_SizeDelta.y + value: 70 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_AnchoredPosition.x + value: -4.950012 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_AnchoredPosition.y + value: -12.899994 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345214, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.size + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345214, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Mode + value: 6 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345214, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Target + value: + objectReference: {fileID: 111153578} + - target: {fileID: 205198456463345214, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345214, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_MethodName + value: SetActive + objectReference: {fileID: 0} + - target: {fileID: 205198456463345214, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_TargetAssemblyTypeName + value: UnityEngine.GameObject, UnityEngine + objectReference: {fileID: 0} + - target: {fileID: 205198456463345214, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine + objectReference: {fileID: 0} + - target: {fileID: 205198456859742482, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_text + value: Close + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 17516442c9d42194e8f0e602257a34f2, type: 3} +--- !u!224 &2113964300 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + m_PrefabInstance: {fileID: 2113964299} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &205198457112989012 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 987901515} + m_Modifications: + - target: {fileID: 205198456463345212, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_Name + value: PlayButton + objectReference: {fileID: 0} + - target: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_SizeDelta.x + value: 264.1 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_SizeDelta.y + value: 49.52 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345213, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345214, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.size + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345214, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Mode + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345214, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Target + value: + objectReference: {fileID: 1590985154} + - target: {fileID: 205198456463345214, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 205198456463345214, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_MethodName + value: HandlePlayButton + objectReference: {fileID: 0} + - target: {fileID: 205198456463345214, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_TargetAssemblyTypeName + value: MainMenuScript, Assembly-CSharp + objectReference: {fileID: 0} + - target: {fileID: 205198456463345214, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_StringArgument + value: PrototypeScene + objectReference: {fileID: 0} + - target: {fileID: 205198456463345214, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine + objectReference: {fileID: 0} + - target: {fileID: 205198456859742482, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_text + value: Play + objectReference: {fileID: 0} + - target: {fileID: 205198456859742482, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_fontSize + value: 30 + objectReference: {fileID: 0} + - target: {fileID: 205198456859742482, guid: 17516442c9d42194e8f0e602257a34f2, + type: 3} + propertyPath: m_fontSizeBase + value: 30 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 17516442c9d42194e8f0e602257a34f2, type: 3} +--- !u!1001 &2869957254671959531 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 2869957253872983841, guid: 93243fb2c86e6a44cb05cb19aff26211, + type: 3} + propertyPath: m_RootOrder + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 2869957253872983841, guid: 93243fb2c86e6a44cb05cb19aff26211, + type: 3} + propertyPath: m_LocalPosition.x + value: -1.4861745 + objectReference: {fileID: 0} + - target: {fileID: 2869957253872983841, guid: 93243fb2c86e6a44cb05cb19aff26211, + type: 3} + propertyPath: m_LocalPosition.y + value: -2.4737353 + objectReference: {fileID: 0} + - target: {fileID: 2869957253872983841, guid: 93243fb2c86e6a44cb05cb19aff26211, + type: 3} + propertyPath: m_LocalPosition.z + value: 99.56795 + objectReference: {fileID: 0} + - target: {fileID: 2869957253872983841, guid: 93243fb2c86e6a44cb05cb19aff26211, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2869957253872983841, guid: 93243fb2c86e6a44cb05cb19aff26211, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2869957253872983841, guid: 93243fb2c86e6a44cb05cb19aff26211, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2869957253872983841, guid: 93243fb2c86e6a44cb05cb19aff26211, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2869957253872983841, guid: 93243fb2c86e6a44cb05cb19aff26211, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2869957253872983841, guid: 93243fb2c86e6a44cb05cb19aff26211, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2869957253872983841, guid: 93243fb2c86e6a44cb05cb19aff26211, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2869957253872983843, guid: 93243fb2c86e6a44cb05cb19aff26211, + type: 3} + propertyPath: m_Name + value: MainMenuSceneManager + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 93243fb2c86e6a44cb05cb19aff26211, type: 3} +--- !u!1001 &3774675764401382950 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 3774675764626453092, guid: a0428753c877d4d42ace789b24fe6ef1, + type: 3} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 3774675764626453092, guid: a0428753c877d4d42ace789b24fe6ef1, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3774675764626453092, guid: a0428753c877d4d42ace789b24fe6ef1, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3774675764626453092, guid: a0428753c877d4d42ace789b24fe6ef1, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3774675764626453092, guid: a0428753c877d4d42ace789b24fe6ef1, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 3774675764626453092, guid: a0428753c877d4d42ace789b24fe6ef1, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3774675764626453092, guid: a0428753c877d4d42ace789b24fe6ef1, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3774675764626453092, guid: a0428753c877d4d42ace789b24fe6ef1, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3774675764626453092, guid: a0428753c877d4d42ace789b24fe6ef1, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3774675764626453092, guid: a0428753c877d4d42ace789b24fe6ef1, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3774675764626453092, guid: a0428753c877d4d42ace789b24fe6ef1, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3774675764626453094, guid: a0428753c877d4d42ace789b24fe6ef1, + type: 3} + propertyPath: m_Name + value: SceneManager + objectReference: {fileID: 0} + - target: {fileID: 3774675764858762934, guid: a0428753c877d4d42ace789b24fe6ef1, + type: 3} + propertyPath: m_Camera + value: + objectReference: {fileID: 1538630164} + - target: {fileID: 3774675764858762934, guid: a0428753c877d4d42ace789b24fe6ef1, + type: 3} + propertyPath: m_SortingLayerID + value: 1794223569 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: a0428753c877d4d42ace789b24fe6ef1, type: 3} +--- !u!1001 &6776060638359211252 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 6776060638903640297, guid: 8b3389bdde458c24e92d6d7c885a36d2, + type: 3} + propertyPath: m_Name + value: AudioManager + objectReference: {fileID: 0} + - target: {fileID: 6776060638903640298, guid: 8b3389bdde458c24e92d6d7c885a36d2, + type: 3} + propertyPath: audioArray.Array.size + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 6776060638903640298, guid: 8b3389bdde458c24e92d6d7c885a36d2, + type: 3} + propertyPath: audioArray.Array.data[1].clip + value: + objectReference: {fileID: 8300000, guid: 08418c315e895cd4d95bc0d2485d5027, type: 3} + - target: {fileID: 6776060638903640298, guid: 8b3389bdde458c24e92d6d7c885a36d2, + type: 3} + propertyPath: audioArray.Array.data[1].audioName + value: TestTrack + objectReference: {fileID: 0} + - target: {fileID: 6776060638903640298, guid: 8b3389bdde458c24e92d6d7c885a36d2, + type: 3} + propertyPath: audioArray.Array.data[1].audioType + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 6776060638903640298, guid: 8b3389bdde458c24e92d6d7c885a36d2, + type: 3} + propertyPath: audioArray.Array.data[1].defaultVolume + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 6776060638903640299, guid: 8b3389bdde458c24e92d6d7c885a36d2, + type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 6776060638903640299, guid: 8b3389bdde458c24e92d6d7c885a36d2, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6776060638903640299, guid: 8b3389bdde458c24e92d6d7c885a36d2, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6776060638903640299, guid: 8b3389bdde458c24e92d6d7c885a36d2, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6776060638903640299, guid: 8b3389bdde458c24e92d6d7c885a36d2, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 6776060638903640299, guid: 8b3389bdde458c24e92d6d7c885a36d2, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6776060638903640299, guid: 8b3389bdde458c24e92d6d7c885a36d2, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6776060638903640299, guid: 8b3389bdde458c24e92d6d7c885a36d2, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6776060638903640299, guid: 8b3389bdde458c24e92d6d7c885a36d2, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6776060638903640299, guid: 8b3389bdde458c24e92d6d7c885a36d2, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6776060638903640299, guid: 8b3389bdde458c24e92d6d7c885a36d2, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 8b3389bdde458c24e92d6d7c885a36d2, type: 3} diff --git a/Assets/Scenes/MainMenuScene.unity.meta b/Assets/Scenes/MainMenuScene.unity.meta new file mode 100644 index 0000000..e15a081 --- /dev/null +++ b/Assets/Scenes/MainMenuScene.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 259302c6bbed6234a948cfc4202af8f6 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes/PrototypeScene.unity b/Assets/Scenes/PrototypeScene.unity new file mode 100644 index 0000000..81d8032 --- /dev/null +++ b/Assets/Scenes/PrototypeScene.unity @@ -0,0 +1,326 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 3 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 12 + m_GIWorkflowMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 0 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 256 + m_ReflectionCompression: 2 + m_MixedBakeMode: 2 + m_BakeBackend: 0 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 500 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 500 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 2 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 0 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 0} + m_LightingSettings: {fileID: 0} +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &519420028 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 519420032} + - component: {fileID: 519420031} + - component: {fileID: 519420029} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &519420029 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 519420028} + m_Enabled: 1 +--- !u!20 &519420031 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 519420028} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 2 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 1 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 0 + m_HDR: 1 + m_AllowMSAA: 0 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 0 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &519420032 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 519420028} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &1289177717 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 3774675764626453092, guid: a0428753c877d4d42ace789b24fe6ef1, type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 3774675764626453092, guid: a0428753c877d4d42ace789b24fe6ef1, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3774675764626453092, guid: a0428753c877d4d42ace789b24fe6ef1, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3774675764626453092, guid: a0428753c877d4d42ace789b24fe6ef1, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3774675764626453092, guid: a0428753c877d4d42ace789b24fe6ef1, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 3774675764626453092, guid: a0428753c877d4d42ace789b24fe6ef1, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3774675764626453092, guid: a0428753c877d4d42ace789b24fe6ef1, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3774675764626453092, guid: a0428753c877d4d42ace789b24fe6ef1, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3774675764626453092, guid: a0428753c877d4d42ace789b24fe6ef1, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3774675764626453092, guid: a0428753c877d4d42ace789b24fe6ef1, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3774675764626453092, guid: a0428753c877d4d42ace789b24fe6ef1, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3774675764626453094, guid: a0428753c877d4d42ace789b24fe6ef1, type: 3} + propertyPath: m_Name + value: SceneManager + objectReference: {fileID: 0} + - target: {fileID: 3774675764858762934, guid: a0428753c877d4d42ace789b24fe6ef1, type: 3} + propertyPath: m_Camera + value: + objectReference: {fileID: 519420031} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: a0428753c877d4d42ace789b24fe6ef1, type: 3} +--- !u!1001 &1406626070 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 6776060638903640297, guid: 8b3389bdde458c24e92d6d7c885a36d2, type: 3} + propertyPath: m_Name + value: AudioManager + objectReference: {fileID: 0} + - target: {fileID: 6776060638903640299, guid: 8b3389bdde458c24e92d6d7c885a36d2, type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 6776060638903640299, guid: 8b3389bdde458c24e92d6d7c885a36d2, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6776060638903640299, guid: 8b3389bdde458c24e92d6d7c885a36d2, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6776060638903640299, guid: 8b3389bdde458c24e92d6d7c885a36d2, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6776060638903640299, guid: 8b3389bdde458c24e92d6d7c885a36d2, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 6776060638903640299, guid: 8b3389bdde458c24e92d6d7c885a36d2, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6776060638903640299, guid: 8b3389bdde458c24e92d6d7c885a36d2, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6776060638903640299, guid: 8b3389bdde458c24e92d6d7c885a36d2, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6776060638903640299, guid: 8b3389bdde458c24e92d6d7c885a36d2, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6776060638903640299, guid: 8b3389bdde458c24e92d6d7c885a36d2, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6776060638903640299, guid: 8b3389bdde458c24e92d6d7c885a36d2, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 8b3389bdde458c24e92d6d7c885a36d2, type: 3} diff --git a/Assets/Scenes/PrototypeScene.unity.meta b/Assets/Scenes/PrototypeScene.unity.meta new file mode 100644 index 0000000..0b34fff --- /dev/null +++ b/Assets/Scenes/PrototypeScene.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 22fd93c991ecfed42a89b618f6cb386b +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes/Texel_test.unity b/Assets/Scenes/Texel_test.unity new file mode 100644 index 0000000..2405ef2 --- /dev/null +++ b/Assets/Scenes/Texel_test.unity @@ -0,0 +1,206 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 3 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 11 + m_GIWorkflowMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 0 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 256 + m_ReflectionCompression: 2 + m_MixedBakeMode: 2 + m_BakeBackend: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 256 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 1 + m_PVRDenoiserTypeDirect: 1 + m_PVRDenoiserTypeIndirect: 1 + m_PVRDenoiserTypeAO: 1 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 1 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 0} + m_UseShadowmask: 1 +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &1702307263 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1702307266} + - component: {fileID: 1702307265} + - component: {fileID: 1702307264} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &1702307264 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1702307263} + m_Enabled: 1 +--- !u!20 &1702307265 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1702307263} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 1 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &1702307266 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1702307263} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/Assets/Scenes/Texel_test.unity.meta b/Assets/Scenes/Texel_test.unity.meta new file mode 100644 index 0000000..970765b --- /dev/null +++ b/Assets/Scenes/Texel_test.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 43795c7601a66d84cbb1f7c184b56c82 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ScriptableObjects.meta b/Assets/ScriptableObjects.meta new file mode 100644 index 0000000..42c8dcd --- /dev/null +++ b/Assets/ScriptableObjects.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 295ac802c88cd48448df9ecb56c7fb04 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts.meta b/Assets/Scripts.meta new file mode 100644 index 0000000..2f7acf7 --- /dev/null +++ b/Assets/Scripts.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ef6bc89fbe3416848aa1c95901542e60 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/EntityScripts.meta b/Assets/Scripts/EntityScripts.meta new file mode 100644 index 0000000..f410147 --- /dev/null +++ b/Assets/Scripts/EntityScripts.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: eb26112da6fce9c4ca2610cb953c66e6 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/GameManagerScripts.meta b/Assets/Scripts/GameManagerScripts.meta new file mode 100644 index 0000000..94c2b87 --- /dev/null +++ b/Assets/Scripts/GameManagerScripts.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7bdec22f29afa8245899160b77f09c8f +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/LemonGenericLib.meta b/Assets/Scripts/LemonGenericLib.meta new file mode 100644 index 0000000..8b61f7b --- /dev/null +++ b/Assets/Scripts/LemonGenericLib.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d2546f4028145a545bde94d128f18972 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/LemonGenericLib/Audio.meta b/Assets/Scripts/LemonGenericLib/Audio.meta new file mode 100644 index 0000000..cad6e9c --- /dev/null +++ b/Assets/Scripts/LemonGenericLib/Audio.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c6a08cabe03c2464a93d39c1ce56b251 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/LemonGenericLib/Audio/AudioManager2D.cs b/Assets/Scripts/LemonGenericLib/Audio/AudioManager2D.cs new file mode 100644 index 0000000..f66b469 --- /dev/null +++ b/Assets/Scripts/LemonGenericLib/Audio/AudioManager2D.cs @@ -0,0 +1,530 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using System; + +//plans for the future: +//create a dictionary driven option +//make it compatible with enums +//use pooling audio channels instead when developing version2.0 + +//namespace Lemon.GenericLib.Audio { + public class AudioManager2D : MonoBehaviour + { + public static AudioManager2D Instance; + + //there are 4 seperate audio streams here, make sure they are assigned + [Header("audio sources")] + [SerializeField] private AudioSource soundAudioSrc; + [SerializeField] private AudioSource bgmAudioSource; + [SerializeField] private AudioSource uiAudioSource; + [SerializeField] private AudioSource ambientAudioSource; + [SerializeField] float masterVolume = 1; + [SerializeField] bool changeOtherSources = false; + [SerializeField] bool playOnStart = false; + [SerializeField] string startingAudio = ""; + [SerializeField] AudioSource[] extraAudioThreads; //best for sound effects + + [Header("extra effects config")] + [SerializeField] float fadeAudioEffectSpeed = 1; + + [Header("audio to play")] + [SerializeField] Audio[] audioArray; + + + //the index for the audio array to track what is playing + //-1 means nothing is playing in that + private int currentSoundIndex = -1; + private int currentBGMIndex = -1; + private int currentUISoundIndex = -1; + private int currentAmbientIndex = -1; + + + //singleton pattern + private void Awake() + { + if (Instance == null) + { + Instance = this; + } + + if (Instance != this) + { + Destroy(gameObject); + } + + } + + private void Start() + { + if (playOnStart) + { + Play(startingAudio); + } + } + + //does not support extra threads + //called when changed volume + public void SetVolume(float vol) + { + + this.masterVolume = vol / 100; + UpdateAudioSrcVolume(currentSoundIndex, Audio.AudioType.Sound); + UpdateAudioSrcVolume(currentBGMIndex, Audio.AudioType.BGM); + UpdateAudioSrcVolume(currentUISoundIndex, Audio.AudioType.UISounds); + UpdateAudioSrcVolume(currentAmbientIndex, Audio.AudioType.Ambient); + + //this also needs to change audio in audio sources outside + //not the best method + if (!changeOtherSources) return; + var audioSrcList = FindObjectsOfType(); + foreach (var audioSrc in audioSrcList) + { + if (audioSrc != soundAudioSrc && audioSrc != bgmAudioSource && audioSrc != uiAudioSource && audioSrc != ambientAudioSource) + audioSrc.volume = masterVolume; + } + } + + //does not support extra threads + private void UpdateAudioSrcVolume(int audioIndex = 0, Audio.AudioType type = Audio.AudioType.BGM) + { + + if (audioIndex >= 0) + { + switch (audioArray[audioIndex].audioType) + { + case Audio.AudioType.Sound: + audioArray[audioIndex].updateVolume(soundAudioSrc, this.masterVolume); + break; + case Audio.AudioType.BGM: + audioArray[audioIndex].updateVolume(bgmAudioSource, this.masterVolume); + break; + case Audio.AudioType.UISounds: + audioArray[audioIndex].updateVolume(uiAudioSource, this.masterVolume); + break; + case Audio.AudioType.Ambient: + audioArray[audioIndex].updateVolume(ambientAudioSource, this.masterVolume); + break; + default: + Debug.LogError($"the audio clip {audioArray[audioIndex].audioName} does not have a audio type assigned \n or there is no update volume option for that type yet"); + break; + } + } + else + { + switch (type) + { + case Audio.AudioType.Sound: + soundAudioSrc.volume = masterVolume; + break; + case Audio.AudioType.BGM: + bgmAudioSource.volume = masterVolume; + break; + case Audio.AudioType.UISounds: + uiAudioSource.volume = masterVolume; + break; + case Audio.AudioType.Ambient: + ambientAudioSource.volume = masterVolume; + break; + default: + Debug.LogError($"the audio clip {audioArray[audioIndex].audioName} does not have a audio type assigned \n or there is no update volume option for that type yet"); + break; + } + } + } + + //force all audio to stop + public void StopAllAudio() + { + //this is the solution to manage fading for now + StopCoroutine("FadeAudioEffect"); + soundAudioSrc.Stop(); + bgmAudioSource.Stop(); + uiAudioSource.Stop(); + ambientAudioSource.Stop(); + foreach (var audioSrc in extraAudioThreads) + { + audioSrc.Stop(); + } + } + + public void StopSound() + { + soundAudioSrc.Stop(); + } + public void StopBGM() + { + bgmAudioSource.Stop(); + } + public void StopUISound() + { + uiAudioSource.Stop(); + } + public void StopAmbient() + { + ambientAudioSource.Stop(); + } + + public void StopExtra() + { + foreach (var audioSrc in extraAudioThreads) + { + audioSrc.Stop(); + } + } + + public void Stop(int audioTypeIndex) + { + if (audioTypeIndex == (int)Audio.AudioType.Sound) + { + soundAudioSrc.Stop(); + } + else if (audioTypeIndex == (int)Audio.AudioType.BGM) + { + bgmAudioSource.Stop(); + } + else if (audioTypeIndex == (int)Audio.AudioType.UISounds) + { + uiAudioSource.Stop(); + } + else if (audioTypeIndex == (int)Audio.AudioType.Ambient) + { + ambientAudioSource.Stop(); + } + else + { + Debug.LogError($"the audio index {audioTypeIndex} cis not a valid audio type\nPlease use 1 - 4 "); + } + } + + + + public void SetFadeEffectSpeed(float newEffectSpeed) + { + fadeAudioEffectSpeed = newEffectSpeed; + } + + + //does not support extra threads + public void PlayFade(string audioName) + { + + for (int i = 0; i < audioArray.Length; i++) + { + //Debug.Log(audioName + " " + audioArray[i].audioName); + if (audioArray[i].audioName.ToUpper() == audioName.ToUpper()) + { + + switch (audioArray[i].audioType) + { + case Audio.AudioType.Sound: + + StartCoroutine(FadeAudioEffect(soundAudioSrc, fadeAudioEffectSpeed, audioArray[i].defaultVolume * masterVolume)); + audioArray[i].Play(soundAudioSrc, masterVolume); + currentSoundIndex = i; + break; + case Audio.AudioType.BGM: + + StartCoroutine(FadeAudioEffect(bgmAudioSource, fadeAudioEffectSpeed, audioArray[i].defaultVolume * masterVolume)); + audioArray[i].Play(bgmAudioSource, masterVolume); + currentBGMIndex = i; + break; + case Audio.AudioType.UISounds: + + StartCoroutine(FadeAudioEffect(uiAudioSource, fadeAudioEffectSpeed, audioArray[i].defaultVolume * masterVolume)); + audioArray[i].Play(uiAudioSource, masterVolume); + currentUISoundIndex = i; + break; + case Audio.AudioType.Ambient: + + StartCoroutine(FadeAudioEffect(ambientAudioSource, fadeAudioEffectSpeed, audioArray[i].defaultVolume * masterVolume)); + audioArray[i].Play(ambientAudioSource, masterVolume); + currentAmbientIndex = i; + break; + default: + Debug.LogError($"the audio clip {audioArray[i].audioName} does not have a audio type assigned \n or there is no play option for that type yet"); + break; + } + return; + } + + + } + Debug.LogError($"the audio clip {audioName} cannot be found\n please check that your spelling is correct"); + + } + + //does not support extra threads + public void PlayFade(string audioName, float fadeAudioEffectSpeed) + { + + for (int i = 0; i < audioArray.Length; i++) + { + //Debug.Log(audioName + " " + audioArray[i].audioName); + if (audioArray[i].audioName.ToUpper() == audioName.ToUpper()) + { + + switch (audioArray[i].audioType) + { + case Audio.AudioType.Sound: + StopCoroutine("FadeAudioEffect"); + StartCoroutine(FadeAudioEffect(soundAudioSrc, fadeAudioEffectSpeed, audioArray[i].defaultVolume * masterVolume)); + audioArray[i].Play(soundAudioSrc, masterVolume); + currentSoundIndex = i; + break; + case Audio.AudioType.BGM: + StopCoroutine("FadeAudioEffect"); + StartCoroutine(FadeAudioEffect(bgmAudioSource, fadeAudioEffectSpeed, audioArray[i].defaultVolume * masterVolume)); + audioArray[i].Play(bgmAudioSource, masterVolume); + currentBGMIndex = i; + break; + case Audio.AudioType.UISounds: + StopCoroutine("FadeAudioEffect"); + StartCoroutine(FadeAudioEffect(uiAudioSource, fadeAudioEffectSpeed, audioArray[i].defaultVolume * masterVolume)); + audioArray[i].Play(uiAudioSource, masterVolume); + currentUISoundIndex = i; + break; + case Audio.AudioType.Ambient: + StopCoroutine("FadeAudioEffect"); + StartCoroutine(FadeAudioEffect(ambientAudioSource, fadeAudioEffectSpeed, audioArray[i].defaultVolume * masterVolume)); + audioArray[i].Play(ambientAudioSource, masterVolume); + currentAmbientIndex = i; + break; + default: + Debug.LogError($"the audio clip {audioArray[i].audioName} does not have a audio type assigned \n or there is no play option for that type yet"); + break; + } + return; + } + + + } + Debug.LogError($"the audio clip {audioName} cannot be found\n please check that your spelling is correct"); + + } + + //does not support extra threads + //0 = sound, 1 is BGM, 2 is UI, 3 is ambient + public void StopFade(int audioTypeIndex) + { + + if (audioTypeIndex == (int)Audio.AudioType.Sound) + { + StartCoroutine(FadeAudioEffect(soundAudioSrc, fadeAudioEffectSpeed, soundAudioSrc.volume, false)); + } + else if (audioTypeIndex == (int)Audio.AudioType.BGM) + { + StartCoroutine(FadeAudioEffect(bgmAudioSource, fadeAudioEffectSpeed, bgmAudioSource.volume, false)); + } + else if (audioTypeIndex == (int)Audio.AudioType.UISounds) + { + StartCoroutine(FadeAudioEffect(uiAudioSource, fadeAudioEffectSpeed, uiAudioSource.volume, false)); + } + else if (audioTypeIndex == (int)Audio.AudioType.Ambient) + { + StartCoroutine(FadeAudioEffect(ambientAudioSource, fadeAudioEffectSpeed, ambientAudioSource.volume, false)); + } + else + { + Debug.LogError($"the audio index {audioTypeIndex} cis not a valid audio type\nPlease use 1 - 4 "); + } + + } + + //does not support extra threads + public void StopFade(int audioTypeIndex, float fadeAudioEffectSpeed) + { + + if (audioTypeIndex == (int)Audio.AudioType.Sound) + { + StartCoroutine(FadeAudioEffect(soundAudioSrc, fadeAudioEffectSpeed, soundAudioSrc.volume, false)); + } + else if (audioTypeIndex == (int)Audio.AudioType.BGM) + { + StartCoroutine(FadeAudioEffect(bgmAudioSource, fadeAudioEffectSpeed, bgmAudioSource.volume, false)); + } + else if (audioTypeIndex == (int)Audio.AudioType.UISounds) + { + StartCoroutine(FadeAudioEffect(uiAudioSource, fadeAudioEffectSpeed, uiAudioSource.volume, false)); + } + else if (audioTypeIndex == (int)Audio.AudioType.Ambient) + { + StartCoroutine(FadeAudioEffect(ambientAudioSource, fadeAudioEffectSpeed, ambientAudioSource.volume, false)); + } + else + { + Debug.LogError($"the audio index {audioTypeIndex} cis not a valid audio type\nPlease use 1 - 4 "); + } + } + + IEnumerator FadeAudioEffect(AudioSource audioSource, float effectSpeed, float MaxVolume, bool increment = true) + { + float currentVolume = 0; + if (increment) + { + currentVolume = 0; + while (currentVolume < MaxVolume) + { + audioSource.volume = currentVolume; + currentVolume += Time.deltaTime * 0.01f * effectSpeed; + yield return null; + } + } + else + { + Debug.Log("fading"); + currentVolume = MaxVolume; + while (currentVolume > 0) + { + audioSource.volume = currentVolume; + currentVolume -= Time.deltaTime * 0.01f * effectSpeed; + yield return null; + } + } + + + + } + + + //use audio name to play audio, I know it is a string but what choice we have, maybe change to scriptable object when we have time + public void Play(string audioName) + { + + for (int i = 0; i < audioArray.Length; i++) + { + //Debug.Log(audioName + " " + audioArray[i].audioName); + if (audioArray[i].audioName.ToUpper() == audioName.ToUpper()) + { + + switch (audioArray[i].audioType) + { + case Audio.AudioType.Sound: + StopCoroutine("FadeAudioEffect"); + audioArray[i].Play(soundAudioSrc, masterVolume); + currentSoundIndex = i; + break; + case Audio.AudioType.BGM: + StopCoroutine("FadeAudioEffect"); + audioArray[i].Play(bgmAudioSource, masterVolume); + currentBGMIndex = i; + break; + case Audio.AudioType.UISounds: + StopCoroutine("FadeAudioEffect"); + audioArray[i].Play(uiAudioSource, masterVolume); + currentUISoundIndex = i; + break; + case Audio.AudioType.Ambient: + StopCoroutine("FadeAudioEffect"); + audioArray[i].Play(ambientAudioSource, masterVolume); + currentAmbientIndex = i; + break; + case Audio.AudioType.Extra: + + if (audioArray[i].extraThreadIndex < 0 || audioArray[i].extraThreadIndex >= extraAudioThreads.Length) + { + Debug.LogError($"the audio clip {audioArray[i].audioName} has a invalid extra audio thread index of {audioArray[i].extraThreadIndex}"); + } + else + { + StopCoroutine("FadeAudioEffect"); + audioArray[i].Play(extraAudioThreads[audioArray[i].extraThreadIndex], masterVolume); + } + break; + default: + Debug.LogError($"the audio clip {audioArray[i].audioName} does not have a audio type assigned \n or there is no play option for that type yet"); + break; + } + return; + } + + + } + + + } + + public void Play(int index) + { + if (index < 0 || index > audioArray.Length) { + Debug.LogError($"Error: Invalid Audio Index of {index}"); + return; + } + + switch (audioArray[index].audioType) + { + case Audio.AudioType.Sound: + StopCoroutine("FadeAudioEffect"); + audioArray[index].Play(soundAudioSrc, masterVolume); + currentSoundIndex = index; + break; + case Audio.AudioType.BGM: + StopCoroutine("FadeAudioEffect"); + audioArray[index].Play(bgmAudioSource, masterVolume); + currentBGMIndex = index; + break; + case Audio.AudioType.UISounds: + StopCoroutine("FadeAudioEffect"); + audioArray[index].Play(uiAudioSource, masterVolume); + currentUISoundIndex = index; + break; + case Audio.AudioType.Ambient: + StopCoroutine("FadeAudioEffect"); + audioArray[index].Play(ambientAudioSource, masterVolume); + currentAmbientIndex = index; + break; + case Audio.AudioType.Extra: + + if (audioArray[index].extraThreadIndex < 0 || audioArray[index].extraThreadIndex >= extraAudioThreads.Length) + { + Debug.LogError($"the audio clip {audioArray[index].audioName} has a invalid extra audio thread index of {audioArray[index].extraThreadIndex}"); + } + else + { + StopCoroutine("FadeAudioEffect"); + audioArray[index].Play(extraAudioThreads[audioArray[index].extraThreadIndex], masterVolume); + } + break; + default: + Debug.LogError($"the audio clip {audioArray[index].audioName} does not have a audio type assigned \n or there is no play option for that type yet"); + break; + } + } + } + + + + //store audio data + [Serializable] + public class Audio + { + public string audioName = ""; + public enum AudioType { Sound, BGM, UISounds, Ambient, Extra } + public int extraThreadIndex; + public AudioType audioType = AudioType.Sound; + public AudioClip clip; + public bool loop = false; + public float defaultVolume = 1; + + + public void Play(AudioSource audioSrc, float volume) + { + audioSrc.clip = clip; + audioSrc.volume = defaultVolume * volume; + audioSrc.loop = loop; + + + audioSrc.Play(); + + } + + public void updateVolume(AudioSource audioSrc, float volume) + { + Debug.Log("update"); + audioSrc.volume = defaultVolume * volume; + } + + } +//} + + diff --git a/Assets/Scripts/LemonGenericLib/Audio/AudioManager2D.cs.meta b/Assets/Scripts/LemonGenericLib/Audio/AudioManager2D.cs.meta new file mode 100644 index 0000000..bd4e235 --- /dev/null +++ b/Assets/Scripts/LemonGenericLib/Audio/AudioManager2D.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 74d11a8e609d32b4bb6702a8c6852f83 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/LemonGenericLib/Audio/PlayAudioScript.cs b/Assets/Scripts/LemonGenericLib/Audio/PlayAudioScript.cs new file mode 100644 index 0000000..932c61b --- /dev/null +++ b/Assets/Scripts/LemonGenericLib/Audio/PlayAudioScript.cs @@ -0,0 +1,18 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +//using Lemon.GenericLib.Audio; + +public class PlayAudioScript : MonoBehaviour +{ + [SerializeField] private string audioName = ""; + + public void PlayAudio() { + AudioManager2D.Instance.Play(audioName); + } + + public void PlayAudio( string audioName) + { + AudioManager2D.Instance.Play(audioName); + } +} diff --git a/Assets/Scripts/LemonGenericLib/Audio/PlayAudioScript.cs.meta b/Assets/Scripts/LemonGenericLib/Audio/PlayAudioScript.cs.meta new file mode 100644 index 0000000..03e83b6 --- /dev/null +++ b/Assets/Scripts/LemonGenericLib/Audio/PlayAudioScript.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7b631eb531e35d048ad89374962e76b1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/LemonGenericLib/DebugUtilities.meta b/Assets/Scripts/LemonGenericLib/DebugUtilities.meta new file mode 100644 index 0000000..704818b --- /dev/null +++ b/Assets/Scripts/LemonGenericLib/DebugUtilities.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 454ba7a3e1c051a468ce9379c33f09c9 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/LemonGenericLib/DebugUtilities/DisableOnAwake.cs b/Assets/Scripts/LemonGenericLib/DebugUtilities/DisableOnAwake.cs new file mode 100644 index 0000000..4a00271 --- /dev/null +++ b/Assets/Scripts/LemonGenericLib/DebugUtilities/DisableOnAwake.cs @@ -0,0 +1,14 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace Lemon.GenericLib.Utility { + public class DisableOnAwake : MonoBehaviour + { + private void Awake() + { + gameObject.SetActive(false); + } + } +} + diff --git a/Assets/Scripts/LemonGenericLib/DebugUtilities/DisableOnAwake.cs.meta b/Assets/Scripts/LemonGenericLib/DebugUtilities/DisableOnAwake.cs.meta new file mode 100644 index 0000000..deb665e --- /dev/null +++ b/Assets/Scripts/LemonGenericLib/DebugUtilities/DisableOnAwake.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5dfb25ba3ec4f3b4c9842d81ea238e56 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/LemonGenericLib/DebugUtilities/InputBasedTestingScript.cs b/Assets/Scripts/LemonGenericLib/DebugUtilities/InputBasedTestingScript.cs new file mode 100644 index 0000000..ee9f08a --- /dev/null +++ b/Assets/Scripts/LemonGenericLib/DebugUtilities/InputBasedTestingScript.cs @@ -0,0 +1,30 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.Events; + + +//future upgrades: +//upgrade this to read specific input without needing to set a unity input +//handle multiple input +//ahndle muliple input variations like left right, get key up, etc. +namespace Lemon.GenericLib.Utility +{ + public class InputBasedTestingScript : MonoBehaviour + { + + + [SerializeField] private string inputKeyName; + public UnityEvent functionsToTest; + + + // Update is called once per frame + void Update() + { + if (Input.GetButtonDown(inputKeyName)) + { + functionsToTest?.Invoke(); + } + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/LemonGenericLib/DebugUtilities/InputBasedTestingScript.cs.meta b/Assets/Scripts/LemonGenericLib/DebugUtilities/InputBasedTestingScript.cs.meta new file mode 100644 index 0000000..59b43c4 --- /dev/null +++ b/Assets/Scripts/LemonGenericLib/DebugUtilities/InputBasedTestingScript.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 69302d519e9f40c4fa9c50e9bb87f438 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/LemonGenericLib/DebugUtilities/KeyCodeInputController.cs b/Assets/Scripts/LemonGenericLib/DebugUtilities/KeyCodeInputController.cs new file mode 100644 index 0000000..9bdae0e --- /dev/null +++ b/Assets/Scripts/LemonGenericLib/DebugUtilities/KeyCodeInputController.cs @@ -0,0 +1,47 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.Events; + + +namespace Lemon.GenericLib.Utility { + + public class KeyCodeInputController : MonoBehaviour + { + [Header("controlls list")] + [SerializeField] private KeyCodeControll[] keyCodeControlls; + + private void Update() + { + + if (Input.anyKeyDown) + { + //CheckInit(); + foreach (var controlls in keyCodeControlls) + { + if (Input.GetKeyDown(controlls.KeyCode)) + { + controlls.InvokeKeyCodeFunction(); + } + } + } + } + + [System.Serializable] + private class KeyCodeControll + { + [SerializeField] private KeyCode keyCode; + [SerializeField] private UnityEvent InputFunctions; + + public KeyCode KeyCode { get => keyCode; set => keyCode = value; } + + public void InvokeKeyCodeFunction() + { + InputFunctions?.Invoke(); + } + + } + } +} + + diff --git a/Assets/Scripts/LemonGenericLib/DebugUtilities/KeyCodeInputController.cs.meta b/Assets/Scripts/LemonGenericLib/DebugUtilities/KeyCodeInputController.cs.meta new file mode 100644 index 0000000..48cc72a --- /dev/null +++ b/Assets/Scripts/LemonGenericLib/DebugUtilities/KeyCodeInputController.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 85106e56a76d0094b8198233c973020e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/LemonGenericLib/DebugUtilities/RestartAndQuit.cs b/Assets/Scripts/LemonGenericLib/DebugUtilities/RestartAndQuit.cs new file mode 100644 index 0000000..9f09af4 --- /dev/null +++ b/Assets/Scripts/LemonGenericLib/DebugUtilities/RestartAndQuit.cs @@ -0,0 +1,28 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.SceneManagement; + +namespace Lemon.GenericLib.Utility +{ + public class RestartAndQuit : MonoBehaviour + { + public bool pressToQuit = false; + public bool pressToRestart = false; + + // Update is called once per frame + void Update() + { + if (Input.GetKeyDown(KeyCode.R) && pressToRestart) + { + SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex); + + } + + if (Input.GetKeyDown(KeyCode.Escape) && pressToQuit) + { + Application.Quit(); + } + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/LemonGenericLib/DebugUtilities/RestartAndQuit.cs.meta b/Assets/Scripts/LemonGenericLib/DebugUtilities/RestartAndQuit.cs.meta new file mode 100644 index 0000000..0e13575 --- /dev/null +++ b/Assets/Scripts/LemonGenericLib/DebugUtilities/RestartAndQuit.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c58e5fe732daf0144af01eba42dfda38 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/LemonGenericLib/DialogueSystem.meta b/Assets/Scripts/LemonGenericLib/DialogueSystem.meta new file mode 100644 index 0000000..946834d --- /dev/null +++ b/Assets/Scripts/LemonGenericLib/DialogueSystem.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 34132cdda7a2a184dbdc84bb76b5224c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/LemonGenericLib/DialogueSystem/DialogueSystem.cs b/Assets/Scripts/LemonGenericLib/DialogueSystem/DialogueSystem.cs new file mode 100644 index 0000000..ec6f0d0 --- /dev/null +++ b/Assets/Scripts/LemonGenericLib/DialogueSystem/DialogueSystem.cs @@ -0,0 +1,404 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using TMPro; +using System; +using Lemon.GenericLib.Generics; + +//note +//dialouge cannot be started in the start() call because it needs to wait for events +namespace Lemon.GenericLib.Dialogue +{ + public class DialogueSystem : MonoBehaviour + { + [Header("dialogue configs")] + [SerializeField] private string[] dialougeTexts; + [SerializeField] private TextMeshProUGUI dialogueTextFeild; + [SerializeField] private static float typingSpeed = 50f; + private static float defaultTypingSpeed; + [SerializeField] Optional interuptInput; + [SerializeField] Optional advancingInput; + [SerializeField] private bool canUseExternalControls = true; + [SerializeField] public Color defaulrColour; + + [Space] + [Header("timing configs")] + [SerializeField] private bool startImmediantly; + [SerializeField] public float startDelay; + [SerializeField] public float endDelay; + + [Space] + [Header("command parsing configs")] + [SerializeField] private char commandPrefix; + [SerializeField] private bool skipEmpty; + [SerializeField] private char[] ignorePrefix; + + [Space] + [Header("extra config ")] + [SerializeField] Optional continueButton; + + public int SceneIndex; + + + public Action dialogueCommandEvents; + public Action dialogueLineEvent; + public Action endDialougeEvents; + public Action dialogueStartEvents; + + public Action initDialogueEvents; + public Action requiredEndEvent; + + private int currentDialougeIndex = 0; + private bool isInterupt = false; + private bool isTyping = false; + public float waitTime = 0f; + public static bool doneSkipping = false; + //public DialogueLogger dialogueLogger; + + + // Start is called before the first frame update + IEnumerator Start() + { + dialogueTextFeild.text = ""; + if (continueButton.Enabled) + { + continueButton.Value.SetActive(false); + } + + //dialougeLineEvent += TestEvent; + + if (startImmediantly) + { + yield return new WaitForSeconds(0.5f); + StartCoroutine(StartDialogueRoutine()); + } + + defaultTypingSpeed = typingSpeed; + } + + // Update is called once per frame + void Update() + { + if (!canUseExternalControls) return; + + HandleInputs(); + } + + bool isInputInterupt = false; + private void HandleInputs() + { + if (interuptInput.Enabled && isTyping) + { + if (Input.GetButtonDown(interuptInput.Value)) + { + //AudioManager2D.audioManager2DInstance.Play("UIClick"); + if (!isInterupt) + { + isInterupt = true; + } + return; + } + } + + if (advancingInput.Enabled) + { + if (Input.GetButtonDown(advancingInput.Value)) + { + //AudioManager2D.audioManager2DInstance.Play("UIClick"); + if (!isTyping) + { + //Debug.Log(isTyping); + AdvanceDialogue(); + } + //else if (!isInterupt){ + // isInputInterupt = true; + // isInterupt = true; + // StartCoroutine(resetInterupt()); + //} + return; + } + } + } + + public void LoadDialouge(string[] dialoguesToLoad, bool startImmediantly = true) + { + + dialougeTexts = dialoguesToLoad; + dialogueStartEvents = null; + //endDialougeEvents = null; + if (startImmediantly) + { + StartDialogue(); + } + } + + public void StartDialogue() + { + if (dialougeTexts == null) return; + //AudioManager2D.audioManager2DInstance.Play("PageFlipSound"); + StartCoroutine(StartDialogueRoutine()); + } + + IEnumerator StartDialogueRoutine() + { + initDialogueEvents?.Invoke(); + dialogueTextFeild.color = defaulrColour; + yield return new WaitForSeconds(startDelay); + dialogueStartEvents?.Invoke(); + + currentDialougeIndex = 0; + TypeDialouge(); + } + + public void AdvanceDialogue() + { + //AudioManager2D.audioManager2DInstance.Play("ButtonSound"); + if (!canUseExternalControls) return; + StopCoroutine("TypeDialougeRoutine"); + if (dialougeTexts == null) return; + + if (continueButton.Enabled) + { + continueButton.Value.SetActive(false); + } + + + currentDialougeIndex++; + Debug.LogWarning(currentDialougeIndex + ", " + dialougeTexts.Length); + if (currentDialougeIndex < dialougeTexts.Length) + { + TypeDialouge(dialougeTexts[currentDialougeIndex]); + } + else + { + + if (continueButton.Enabled) + { + continueButton.Value.SetActive(false); + } + + StartCoroutine(EndDialogueRoutine()); + } + } + + public void SkipDialogue() + { + //isInterupt = true; + //currentDialougeIndex = dialougeTexts.Length; + //currentDialougeIndex++; + if (continueButton.Enabled) + { + continueButton.Value.SetActive(false); + } + AdvanceDialogue(); + } + + IEnumerator EndDialogueRoutine() + { + if (continueButton.Enabled) + { + continueButton.Value.SetActive(false); + } + + requiredEndEvent?.Invoke(); + dialogueTextFeild.text = ""; + yield return new WaitForSeconds(endDelay); + + //fire events + //endDialougeEvents?.Invoke(); + //FindObjectOfType().GoToScene(SceneIndex); + } + + public void SkipDialougeTyping() + { + StopCoroutine("TypeDialougeRoutine"); + dialogueTextFeild.text = ""; + AdvanceDialogue(); + } + + public void TypeDialouge() + { + StopCoroutine("typeDialougeRoutine"); + StartCoroutine(TypeDialougeRoutine(dialougeTexts[currentDialougeIndex])); + } + + public void TypeDialouge(string dialougeToType) + { + StopCoroutine("typeDialougeRoutine"); + StartCoroutine(TypeDialougeRoutine(dialougeToType)); + } + + public void InteruptDialouge() + { + isInterupt = true; + } + + + public void SetStartEvents(Action[] events) + { + dialogueStartEvents = null; + foreach (var item in events) + { + dialogueStartEvents += item; + } + + } + + public void SetEndEvents(Action[] events) + { + + endDialougeEvents = null; + foreach (var item in events) + { + endDialougeEvents += item; + } + + } + + //create a wait time vaiable that is public + + IEnumerator TypeDialougeRoutine(string dialougeToType) + { + + + float t = 0; + int charIndex = 0; + isInterupt = false; + + isTyping = true; + + if (continueButton.Enabled) + { + continueButton.Value.SetActive(false); + } + + Debug.Log(dialougeToType); + if (skipEmpty && (string.IsNullOrWhiteSpace(dialougeToType))) + { + SkipDialougeTyping(); + } + else + { + + + + dialogueCommandEvents?.Invoke(dialougeToType); + //make sure you can change wait time here woth the command fucntion + + + + bool isSkipPrefix = false; + + for (int i = 0; i < ignorePrefix.Length; i++) + { + if (dialougeToType[0].Equals(ignorePrefix[i])) + { + isSkipPrefix = true; + } + } + + //Honestly have no idea where to put the wait so + if (waitTime > 0) + { + yield return new WaitForSeconds(waitTime); + } + waitTime = 0; + + Debug.Log($"shoud skip?: { dialougeToType[0] } {isSkipPrefix} "); + doneSkipping = false; + if (dialougeToType[0].Equals(commandPrefix) || isSkipPrefix) + { + //wait even if wait time is 0 + //reset wait time after wait + SkipDialougeTyping(); + } + else + { + //dialougeToType = dialougeTextEffects.UpdateText(dialougeToType); + dialogueTextFeild.text = dialougeToType; + + //dialougeTextEffects.UpdateText(dialougeToType); + + //typing effect + while (charIndex < dialougeToType.Length) + { + isTyping = true; + //for whatever reason this needs to be in the loop to not show + if (continueButton.Enabled) + { + continueButton.Value.SetActive(false); + } + + if (isInterupt) + { + charIndex = dialougeToType.Length; + } + else + { + t += Time.deltaTime * typingSpeed; + charIndex = Mathf.FloorToInt(t); + charIndex = Mathf.Clamp(charIndex, 0, dialougeToType.Length); + } + + //process here + + dialogueTextFeild.maxVisibleCharacters = charIndex; + //dialogueTextFeild.text = dialougeToType.Substring(0, charIndex); + + yield return null; + } + doneSkipping = true; + + //dialogueLogger.AddToLog(dialougeToType, false, false); + + //dialogueTextFeild.text = dialougeToType; + + + } + } + + + isTyping = false; + + //Fixes for continue button appearing when holding down skip + if (continueButton.Enabled) + { + if (doneSkipping == false) + { + continueButton.Value.SetActive(false); + } + else + { + continueButton.Value.SetActive(true); + } + } + } + + IEnumerator resetInterupt() + { + yield return null; + isInputInterupt = false; + + } + + public void TestEvent(string testString) + { + + Debug.Log(testString); + Debug.Log("Event is working as intended"); + } + + public static void setTypingSpeed(int newValue) + { + typingSpeed = newValue; + } + + public static void setDefaultTypingSpeed() + { + typingSpeed = defaultTypingSpeed; + } + + } + +} + diff --git a/Assets/Scripts/LemonGenericLib/DialogueSystem/DialogueSystem.cs.meta b/Assets/Scripts/LemonGenericLib/DialogueSystem/DialogueSystem.cs.meta new file mode 100644 index 0000000..4a9f546 --- /dev/null +++ b/Assets/Scripts/LemonGenericLib/DialogueSystem/DialogueSystem.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 98352efe069658d4caae5443f470f550 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/LemonGenericLib/Generic Classes.meta b/Assets/Scripts/LemonGenericLib/Generic Classes.meta new file mode 100644 index 0000000..13d1b92 --- /dev/null +++ b/Assets/Scripts/LemonGenericLib/Generic Classes.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1501d425c1bfa664ba75c3d7d4236d87 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/LemonGenericLib/Generic Classes/Grid.meta b/Assets/Scripts/LemonGenericLib/Generic Classes/Grid.meta new file mode 100644 index 0000000..4590bf8 --- /dev/null +++ b/Assets/Scripts/LemonGenericLib/Generic Classes/Grid.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7a233e2e3bb5afd40b770f197760dbc4 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/LemonGenericLib/Generic Classes/Grid/GridClass.cs b/Assets/Scripts/LemonGenericLib/Generic Classes/Grid/GridClass.cs new file mode 100644 index 0000000..60dd0ab --- /dev/null +++ b/Assets/Scripts/LemonGenericLib/Generic Classes/Grid/GridClass.cs @@ -0,0 +1,454 @@ +using System.Collections; +using System.Collections.Generic; +using System.Runtime.InteropServices; +using UnityEngine; +using System; +using UnityEngine.UI; +using TMPro; + +//things to do (for the authur only): +//check if this class is very reusable +//implement a proper way to destroy grids +//add more debug features and controls +//test this in 3D (using x and z axis) +//remove all mentions of real names in this class and replace them with screen names + +//this is Wong Sui Bin's grid class, I advise not to touch this if you are not the authur of this class +//this is a class that greats a 2D grid in the game world that maps with real coordinates +//requires text mesh pro to work + +//so far used for +//level editors +//tile based building system +//grid reresentation of positions of game objects +namespace Lemon.GenericLib.Generics +{ + public class Grid + { + public event EventHandler OnGridObjectChanged; + + public class OnGridObjectChangedArgs : EventArgs + { + public int x, y; + } + + + public int width; + public int height; + private float cellSize; + private Vector3 originPosition; + private TGridObject[,] gridArray; + private TextMeshPro[,] gridText; + + private Color textColour; + private bool showText; + private int textSize; + private bool spawnText; + private bool debugLine; + + #region constructors + //arrangement of y is up and x is right + //grid constructor for custom data types + public Grid(int width, int height, float cellSize, Vector3 originPosition, Transform parent, Func, int, int, TGridObject> createGridObject, bool spawnText = true, bool debugLine = true) + { + this.width = width; + this.height = height; + this.cellSize = cellSize; + this.gridArray = new TGridObject[width, height]; + this.gridText = new TextMeshPro[width, height]; + this.originPosition = originPosition; + this.textColour = Color.white; + this.showText = true; + this.textSize = 5; + this.spawnText = spawnText; + this.debugLine = debugLine; + + //construct grid object + for (int x = 0; x < gridArray.GetLength(0); x++) + { + for (int y = 0; y < gridArray.GetLength(1); y++) + { + gridArray[x, y] = createGridObject(this, x, y); + } + } + + //set debug visuals + for (int x = 0; x < gridArray.GetLength(0); x++) + { + for (int y = 0; y < gridArray.GetLength(1); y++) + { + if (debugLine) + { + Debug.DrawLine(GetWorldPosition(x, y), GetWorldPosition(x, y + 1), Color.white, 100f); + Debug.DrawLine(GetWorldPosition(x, y), GetWorldPosition(x + 1, y), Color.white, 100f); + + } + + + if (spawnText) + gridText[x, y] = CreateGridText(gridArray[x, y]?.ToString(), parent, x, y, GetWorldPositionCenter(x, y), textSize, textColour, TMPro.TextAlignmentOptions.CenterGeoAligned); + + //disable text if configured to not show + gridText[x, y]?.gameObject.SetActive(showText); + } + + + } + if (debugLine) + { + Debug.DrawLine(GetWorldPosition(0, height), GetWorldPosition(width, height), Color.white, 100f); + Debug.DrawLine(GetWorldPosition(width, 0), GetWorldPosition(width, height), Color.white, 100f); + } + + //assign object changed even for debug visuals + OnGridObjectChanged += (object sender, OnGridObjectChangedArgs eventArgs) => + { + gridText[eventArgs.x, eventArgs.y].text = gridArray[eventArgs.x, eventArgs.y].ToString(); + }; + } + + //grid constructor for non custom data type + public Grid(int width, int height, float cellSize, Vector3 originPosition, Transform parent, bool spawnText = true, bool debugLine = true) + { + this.width = width; + this.height = height; + this.cellSize = cellSize; + this.gridArray = new TGridObject[width, height]; + this.gridText = new TextMeshPro[width, height]; + this.originPosition = originPosition; + this.textColour = Color.white; + this.showText = true; + this.textSize = 5; + this.spawnText = spawnText; + this.debugLine = debugLine; + + //set debug visuals + for (int x = 0; x < gridArray.GetLength(0); x++) + { + for (int y = 0; y < gridArray.GetLength(1); y++) + { + if (debugLine) + { + Debug.DrawLine(GetWorldPosition(x, y), GetWorldPosition(x, y + 1), Color.white, 100f); + Debug.DrawLine(GetWorldPosition(x, y), GetWorldPosition(x + 1, y), Color.white, 100f); + + } + + if (spawnText) + gridText[x, y] = CreateGridText(gridArray[x, y]?.ToString(), parent, x, y, GetWorldPositionCenter(x, y), textSize, textColour, TMPro.TextAlignmentOptions.CenterGeoAligned); + + //disable text if configured to not show + gridText[x, y]?.gameObject.SetActive(showText); + } + + + } + if (debugLine) + { + Debug.DrawLine(GetWorldPosition(0, height), GetWorldPosition(width, height), Color.white, 100f); + Debug.DrawLine(GetWorldPosition(width, 0), GetWorldPosition(width, height), Color.white, 100f); + } + //assign object changed even for debug visuals + OnGridObjectChanged += (object sender, OnGridObjectChangedArgs eventArgs) => + { + gridText[eventArgs.x, eventArgs.y].text = gridArray[eventArgs.x, eventArgs.y].ToString(); + }; + } + #endregion + + #region position hash + //the hash index for the grid, start from 0 in the bottom left cell and counting right and upwards + //hash the ridArray position into hash index + public int positionHash(int x, int y) + { + return y * width + x; + } + + //hash the index back to gridArray position + public void positionHash(int index, out int x, out int y) + { + y = index / width; + x = index % width; + } + #endregion + + #region Get Positions + //get world posisiton of a corner of a cell + private Vector3 GetWorldPosition(int x, int y) + { + return new Vector3(x, y) * cellSize + originPosition; + } + + //get world positon of the center of a cell + public Vector3 GetWorldPositionCenter(int x, int y) + { + return GetWorldPosition(x, y) + new Vector3(cellSize, cellSize) * .5f; + } + + //convert a vector 3 position to the center of a grid + public Vector3 GetWorldPositionCenter(Vector3 worldPosition) + { + int x, y; + GetXY(worldPosition, out x, out y); + return GetWorldPositionCenter(x, y); + + } + + //get x and y of grid from world posistion + public void GetXY(Vector3 worldPosition, out int x, out int y) + { + x = Mathf.FloorToInt((worldPosition - originPosition).x / cellSize); + y = Mathf.FloorToInt((worldPosition - originPosition).y / cellSize); + } + + public Vector2Int GetXYVector2Int(Vector3 worldPosition) + { + return new Vector2Int(Mathf.FloorToInt((worldPosition - originPosition).x / cellSize), Mathf.FloorToInt((worldPosition - originPosition).y / cellSize)); + } + #endregion + + #region Grid Object Manipulation + //set value from x and y of the array + public void SetGridObject(int x, int y, TGridObject gridObject) + { + if (x >= 0 && x < width && y >= 0 && y < height) + { + gridArray[x, y] = gridObject; + TriggerGridObjectChanged(x, y); + } + } + + //set value from world position + public void SetGridObject(Vector3 worldPosition, TGridObject gridObject) + { + int x, y; + GetXY(worldPosition, out x, out y); + SetGridObject(x, y, gridObject); + } + + //get value from x and y of the array + public TGridObject GetGridObject(int x, int y) + { + if (x >= 0 && x < width && y >= 0 && y < height) + { + return gridArray[x, y]; + } + else + { + return default(TGridObject); + } + } + + public TGridObject GetGridObject(Vector2Int pos) + { + return GetGridObject(pos.x, pos.y); + } + + //get value from world position + public TGridObject GetGridObject(Vector3 worldPosition) + { + int x, y; + GetXY(worldPosition, out x, out y); + return GetGridObject(x, y); + + } + #endregion + + #region get grid object patterns + List returnObjList = new List(); + + public bool CheckWithinGrid(Vector2Int pos) { + if (pos.x >= 0 && pos.x < width) { + if (pos.y >= 0 && pos.y < height) + return true; + } + return false; + } + + public bool CheckWithinGrid(Vector3 worldPosition) + { + if (worldPosition.x >= originPosition.x && worldPosition.x < originPosition.x + (cellSize*width)) + { + if (worldPosition.y >= originPosition.y && worldPosition.y < originPosition.y + (cellSize * height)) + return true; + } + return false; + } + + public List GetAdjacent(Vector2Int originPos, int range = 1, bool includeSelf = false) + { + returnObjList.Clear(); + List dirList = new List() { Vector2Int.up, Vector2Int.down, Vector2Int.left, Vector2Int.right }; + if (CheckWithinGrid(originPos) && includeSelf) returnObjList.Add(GetGridObject(originPos)); + foreach (var item in dirList) + { + if (CheckWithinGrid(originPos+(item*range))) returnObjList.Add(GetGridObject(originPos+ (item * range))); + } + return returnObjList; + } + + public List GetSurrounding(Vector2Int originPos,int range = 1, bool includeSelf = false) + { + returnObjList.Clear(); + List dirList = new List() { new Vector2Int(-1,1), new Vector2Int(1, 1), new Vector2Int(-1, -1), new Vector2Int(1, -1) }; + returnObjList.AddRange(GetAdjacent(originPos, range, includeSelf)); + foreach (var item in dirList) + { + if (CheckWithinGrid(originPos + (item * range))) returnObjList.Add(GetGridObject(originPos + (item * range))); + } + return returnObjList; + } + + public List GetArea(Vector2Int originPos, int range = 1, bool includeSelf = false) + { + returnObjList.Clear(); + Vector2Int temp; + for (int x = originPos.x- range; x <= originPos.x+range; x++) + { + for (int y = originPos.y - range; y <= originPos.y + range; y++) + { + temp = new Vector2Int(x, y); + if (CheckWithinGrid(temp)) { + if (temp == originPos && !includeSelf) continue; + returnObjList.Add(GetGridObject(temp)); + } + } + } + return returnObjList; + } + + public List GetRow(int y) + { + returnObjList.Clear(); + for (int x = 0; x < width; x++) + { + returnObjList.Add(gridArray[x, y]); + } + return returnObjList; + } + + public List GetColumn(int x) + { + returnObjList.Clear(); + for (int y = 0; y < height; y++) + { + returnObjList.Add(gridArray[x, y]); + } + return returnObjList; + } + + #endregion + + #region entire grid manipulation + public TGridObject[,] OutputArray() + { + return gridArray; + } + + public void DoAllGridObjects(Action function) { + for (int x = 0; x < width; x++) + { + for (int y = 0; y < height; y++) + { + function(x,y,gridArray[x, y]); + } + } + } + + public void DestroyGrid() + { + if (!spawnText) return; + for (int x = 0; x < width; x++) + { + for (int y = 0; y < height; y++) + { + + + if (gridText[x, y] != null) + { + MonoBehaviour.Destroy(gridText[x, y].gameObject); + + } + + + } + } + } + #endregion + + #region DebugText + //trigger the update debug text event using gridArray Position + public void TriggerGridObjectChanged(int x, int y) + { + if (OnGridObjectChanged != null && spawnText) OnGridObjectChanged(this, new OnGridObjectChangedArgs { x = x, y = y }); + } + + //trigger the update debug text event using world Position + public void TriggerGridObjectChanged(Vector3 position) + { + int x, y; + GetXY(position, out x, out y); + if (OnGridObjectChanged != null && spawnText) OnGridObjectChanged(this, new OnGridObjectChangedArgs { x = x, y = y }); + } + + //configure debug text option + //so far no use for this + public void configureDebugText(bool show, Color textColour, int size) + { + + this.showText = show; + this.textColour = textColour; + this.textSize = size; + + if (!spawnText) return; + for (int x = 0; x < width; x++) + { + for (int y = 0; y < height; y++) + { + + //disable text if configured to not show + gridText[x, y]?.gameObject.SetActive(showText); + if (gridText[x, y] != null) + { + gridText[x, y].color = this.textColour; + gridText[x, y].fontSize = this.textSize; + } + + + } + } + } + + //get if the text is shown + public bool getShowText() + { + return showText; + } + + // Create Text in the Grid + private TextMeshPro CreateGridText(string text, Transform parent = null, int x = 0, int y = 0, Vector3 localPosition = default(Vector3), int fontSize = 40, Color? color = null, TextAlignmentOptions textAlignment = TextAlignmentOptions.Left, int sortingOrder = 5000) + { + if (color == null) color = Color.white; + return CreateGridText(parent, text, $"Grid_Text_[{x}, {y}]", localPosition, fontSize, (Color)color, textAlignment, sortingOrder); + } + + // Create Text in the Grid + private TextMeshPro CreateGridText(Transform parent, string text, string objectName, Vector3 localPosition, int fontSize, Color color, TextAlignmentOptions textAlignment, int sortingOrder) + { + GameObject gameObject = new GameObject(objectName, typeof(TextMeshPro)); + Transform transform = gameObject.transform; + transform.SetParent(parent, false); + transform.localPosition = localPosition; + TextMeshPro textMesh = gameObject.GetComponent(); + textMesh.alignment = textAlignment; + //textMesh.anchor = AnchorPositions.Center; + textMesh.text = text; + textMesh.fontSize = fontSize; + textMesh.color = color; + textMesh.GetComponent().sortingOrder = sortingOrder; + return textMesh; + } + #endregion + } + +} \ No newline at end of file diff --git a/Assets/Scripts/LemonGenericLib/Generic Classes/Grid/GridClass.cs.meta b/Assets/Scripts/LemonGenericLib/Generic Classes/Grid/GridClass.cs.meta new file mode 100644 index 0000000..69d524e --- /dev/null +++ b/Assets/Scripts/LemonGenericLib/Generic Classes/Grid/GridClass.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 67f78fc7678d30c41a2a7d560cf4bda9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/LemonGenericLib/Generic Classes/Grid/GridHelper.cs b/Assets/Scripts/LemonGenericLib/Generic Classes/Grid/GridHelper.cs new file mode 100644 index 0000000..43e952a --- /dev/null +++ b/Assets/Scripts/LemonGenericLib/Generic Classes/Grid/GridHelper.cs @@ -0,0 +1,15 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace Lemon.GenericLib.Generics +{ + + public class GridHelper + { + private Grid grid; + + + } +} + diff --git a/Assets/Scripts/LemonGenericLib/Generic Classes/Grid/GridHelper.cs.meta b/Assets/Scripts/LemonGenericLib/Generic Classes/Grid/GridHelper.cs.meta new file mode 100644 index 0000000..4351a0f --- /dev/null +++ b/Assets/Scripts/LemonGenericLib/Generic Classes/Grid/GridHelper.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e422af2af72481844b3dc6e0cd0d8c71 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/LemonGenericLib/Generic Classes/Optional.cs b/Assets/Scripts/LemonGenericLib/Generic Classes/Optional.cs new file mode 100644 index 0000000..824ad56 --- /dev/null +++ b/Assets/Scripts/LemonGenericLib/Generic Classes/Optional.cs @@ -0,0 +1,31 @@ +using System; +using UnityEngine; + +namespace Lemon.GenericLib.Generics +{ + [Serializable] + public struct Optional + { + [SerializeField] private bool enabled; + [SerializeField] private T value; + + public bool Enabled => enabled; + public T Value => value; + + public Optional(T initialValue) + { + enabled = true; + value = initialValue; + } + public void Set(T initialValue) + { + if (enabled) + { + value = initialValue; + } + } + + + + } +} \ No newline at end of file diff --git a/Assets/Scripts/LemonGenericLib/Generic Classes/Optional.cs.meta b/Assets/Scripts/LemonGenericLib/Generic Classes/Optional.cs.meta new file mode 100644 index 0000000..7266cc6 --- /dev/null +++ b/Assets/Scripts/LemonGenericLib/Generic Classes/Optional.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b4d1b9d247f954f4e93b1308c11cccb3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/LemonGenericLib/Generic Classes/TickCounter.cs b/Assets/Scripts/LemonGenericLib/Generic Classes/TickCounter.cs new file mode 100644 index 0000000..962de48 --- /dev/null +++ b/Assets/Scripts/LemonGenericLib/Generic Classes/TickCounter.cs @@ -0,0 +1,66 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using System; + +//todo +//use deligates +namespace Lemon.GenericLib.Generics +{ + public class TickCounter + { + private float counter = 0; + public float increment = 1; + public bool debugtText = false; + public string debugString = "default counter"; + Action callbackAction; + + public TickCounter() + { + increment = 1; + counter = 0; + } + + public TickCounter(float incrementValue) + { + increment = incrementValue; + counter = 0; + } + + public TickCounter(float incrementValue, Action initalAction) + { + increment = incrementValue; + callbackAction += initalAction; + counter = 0; + } + + + + + //call this in update + public void AdvanceTick() + { + if (Time.time > counter) + { + if (debugtText) Debug.Log("Tick: " + debugString); + //do something + callbackAction(); + counter = Time.time + increment; + } + + } + + public void addAction(Action newAction) + { + callbackAction += newAction; + } + + public void removeAction(Action removedAction) + { + callbackAction -= removedAction; + } + + + + } +} \ No newline at end of file diff --git a/Assets/Scripts/LemonGenericLib/Generic Classes/TickCounter.cs.meta b/Assets/Scripts/LemonGenericLib/Generic Classes/TickCounter.cs.meta new file mode 100644 index 0000000..7a2c954 --- /dev/null +++ b/Assets/Scripts/LemonGenericLib/Generic Classes/TickCounter.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 14acffb5acb0f2345a99c54b6fe45e89 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/LemonGenericLib/LemonCodeUtilities.cs b/Assets/Scripts/LemonGenericLib/LemonCodeUtilities.cs new file mode 100644 index 0000000..f9e118f --- /dev/null +++ b/Assets/Scripts/LemonGenericLib/LemonCodeUtilities.cs @@ -0,0 +1,78 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using System.Security.Cryptography; + +//for Iced_Lemon only, do not modify +//TODO: seperate the functionalities in the future +namespace Lemon.GenericLib.Code.Utilities { + + public static class LemonCodeUtilities { + + //strings + #region StringUtilities + public static bool CompareTextNonCase(string textA, string textB) + { + return textA.ToUpper() == textB.ToUpper(); + } + + public static string TrimLastChar(string text) + { + return text.Substring(0, text.Length - 1); + } + #endregion + + + #region RandomUtilities + //randoms + public static float RandomVectorValue(Vector2 vector) { return UnityEngine.Random.Range(vector.x, vector.y); } + public static int RandomVectorValueInt(Vector2Int vector) { return UnityEngine.Random.Range(vector.x, vector.y + 1); } + + public static int RandomArrayIndex(object[] array) { return UnityEngine.Random.Range(0, array.Length); } + public static object RandomArrayItem(object[] array) { return array[UnityEngine.Random.Range(0, array.Length)]; } + public static int RandomListIndex(List list) { return UnityEngine.Random.Range(0, list.Count); } + public static object RandomListItem(List list) { return list[UnityEngine.Random.Range(0, list.Count)]; } + public static bool RandomBool() { return UnityEngine.Random.Range(0, 2) > 0; } + + public static void Shuffle(this IList list) + { + //RNGCryptoServiceProvider provider = new RNGCryptoServiceProvider(); + //int n = list.Count; + //while (n > 1) + //{ + // byte[] box = new byte[1]; + // do provider.GetBytes(box); + // while (!(box[0] < n * (Byte.MaxValue / n))); + // int k = (box[0] % n); + // n--; + // T value = list[k]; + // list[k] = list[n]; + // list[n] = value; + //} + System.Random rng = new System.Random(); + + int n = list.Count; + while (n > 1) + { + n--; + int k = rng.Next(n + 1); + T value = list[k]; + list[k] = list[n]; + list[n] = value; + } + } + #endregion + + public static string PrintList(List list) { + string str = "[ "; + foreach (var item in list) + { + str += item.ToString() + ", "; + } + return str + " ]"; + } + } + + +} diff --git a/Assets/Scripts/LemonGenericLib/LemonCodeUtilities.cs.meta b/Assets/Scripts/LemonGenericLib/LemonCodeUtilities.cs.meta new file mode 100644 index 0000000..dada34a --- /dev/null +++ b/Assets/Scripts/LemonGenericLib/LemonCodeUtilities.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 62610c7ce1754534b8224dad77ba905f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/LemonGenericLib/SceneManagement.meta b/Assets/Scripts/LemonGenericLib/SceneManagement.meta new file mode 100644 index 0000000..79e3a51 --- /dev/null +++ b/Assets/Scripts/LemonGenericLib/SceneManagement.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e5204d5bab5b4a94ca008991c6328ffe +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/LemonGenericLib/SceneManagement/SceneTransition.cs b/Assets/Scripts/LemonGenericLib/SceneManagement/SceneTransition.cs new file mode 100644 index 0000000..8a9320d --- /dev/null +++ b/Assets/Scripts/LemonGenericLib/SceneManagement/SceneTransition.cs @@ -0,0 +1,130 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.SceneManagement; +using UnityEngine.Events; + +namespace Lemon.GenericLib.SceneManagement { + public class SceneTransition : MonoBehaviour + { + public static SceneTransition Instance; + + + //singleton pattern + private void Awake() + { + if (Instance == null) + { + Instance = this; + } + + if (Instance != this) + { + Destroy(gameObject); + } + + } + + [SerializeField] float transitionTime; + //[SerializeField] UITransitionAnimator transitionAnimator; + [SerializeField] bool enableStartingTransition = true; + + [SerializeField] UnityEvent transitionEnterFunction; + [SerializeField] UnityEvent transitionExitFunction; + + + private bool isTransitionAvailable = true; + + // Start is called before the first frame update + void Start() + { + + if (enableStartingTransition) + { + isTransitionAvailable = false; + transitionEnterFunction?.Invoke(); + //transitionAnimator.TransitionIn(); + StartCoroutine(EnableTransition()); + } + + } + + public void TransitionScene(int sceneIndex) + { + if (!isTransitionAvailable) return; + isTransitionAvailable = false; + transitionExitFunction?.Invoke(); + //transitionAnimator.TransitionOut(); + StartCoroutine(LoadScene(sceneIndex)); + } + + public void TransitionScene(string sceneName) + { + if (!isTransitionAvailable) return; + isTransitionAvailable = false; + transitionExitFunction?.Invoke(); + //transitionAnimator.TransitionOut(); + StartCoroutine(LoadScene(sceneName)); + } + + public void RestartScene() + { + TransitionScene(SceneManager.GetActiveScene().buildIndex); + } + + public void QuitGame() + { + transitionExitFunction?.Invoke(); + StartCoroutine(QuitGameRoutine()); + } + + public void TransitionNextScene() + { + if (!isTransitionAvailable) return; + isTransitionAvailable = false; + transitionExitFunction?.Invoke(); + //transitionAnimator.TransitionOut(); + StartCoroutine(LoadScene(SceneManager.GetActiveScene().buildIndex + 1)); + } + public void TransitionPreviousScene() + { + if (!isTransitionAvailable) return; + isTransitionAvailable = false; + transitionExitFunction?.Invoke(); + //transitionAnimator.TransitionOut(); + StartCoroutine(LoadScene(SceneManager.GetActiveScene().buildIndex - 1)); + } + + public void TransitionScene(int sceneIndex, bool useAnimation = true) + { + transitionExitFunction?.Invoke(); + // transitionAnimator.TransitionOut(); + StartCoroutine(LoadScene(sceneIndex)); + } + + IEnumerator LoadScene(int sceneIndex) + { + yield return new WaitForSeconds(transitionTime); + SceneManager.LoadScene(sceneIndex); + } + + IEnumerator LoadScene(string sceneName) + { + yield return new WaitForSeconds(transitionTime); + SceneManager.LoadScene(sceneName); + } + + IEnumerator EnableTransition() + { + yield return new WaitForSeconds(transitionTime); + isTransitionAvailable = true; + } + + IEnumerator QuitGameRoutine() + { + yield return new WaitForSeconds(transitionTime); + Application.Quit(); + } + } +} + diff --git a/Assets/Scripts/LemonGenericLib/SceneManagement/SceneTransition.cs.meta b/Assets/Scripts/LemonGenericLib/SceneManagement/SceneTransition.cs.meta new file mode 100644 index 0000000..4e70ac3 --- /dev/null +++ b/Assets/Scripts/LemonGenericLib/SceneManagement/SceneTransition.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 76ad778d7bf1bbc41bacdfd410da4a84 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/LemonGenericLib/SceneManagement/TransitionUI.cs b/Assets/Scripts/LemonGenericLib/SceneManagement/TransitionUI.cs new file mode 100644 index 0000000..bf17cce --- /dev/null +++ b/Assets/Scripts/LemonGenericLib/SceneManagement/TransitionUI.cs @@ -0,0 +1,55 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.UI; + +namespace Lemon.GenericLib.SceneManagement +{ + public class TransitionUI : MonoBehaviour + { + [SerializeField] private CanvasGroup canvasGroup; + [SerializeField] private bool useDefaultFadeTransition; + [SerializeField] public float effectDuration; + [SerializeField] private LeanTweenType fadeEffectType; + //[SerializeField] float threshold; + //[SerializeField] float rate; + //[SerializeField] GameObject transitionObject; + + + private float targetAlpha = 1; + + public void TransitionAnimationEnter() + { + + targetAlpha = 0; + if (useDefaultFadeTransition) + { + canvasGroup.LeanAlpha(targetAlpha, effectDuration).setEase(fadeEffectType).setOnComplete(() => { canvasGroup.blocksRaycasts = false; }); + return; + } + + } + + public void TransitionAnimationExit() + { + targetAlpha = 1; + if (useDefaultFadeTransition) + { + canvasGroup.LeanAlpha(targetAlpha, effectDuration).setEase(fadeEffectType).setOnComplete(() => { canvasGroup.blocksRaycasts = true; }); + return; + } + } + + //float alpha = 0; + //public void Update() { + // alpha = canvasGroup.alpha; + + // alpha = Mathf.Lerp(alpha, targetAlpha, rate * Time.deltaTime); + + + // canvasGroup.alpha = alpha; + // canvasGroup.blocksRaycasts = (alpha > threshold); + + //} + } +} \ No newline at end of file diff --git a/Assets/Scripts/LemonGenericLib/SceneManagement/TransitionUI.cs.meta b/Assets/Scripts/LemonGenericLib/SceneManagement/TransitionUI.cs.meta new file mode 100644 index 0000000..ec9ac3b --- /dev/null +++ b/Assets/Scripts/LemonGenericLib/SceneManagement/TransitionUI.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: cdf26c62e5d4b2d4490ef743edfbe89b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/LemonGenericLib/Scoring System.meta b/Assets/Scripts/LemonGenericLib/Scoring System.meta new file mode 100644 index 0000000..9b6e95d --- /dev/null +++ b/Assets/Scripts/LemonGenericLib/Scoring System.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4954d2b52f51a3d44bc052acbe51c81c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/LemonGenericLib/Scoring System/ScoreKeeper.cs b/Assets/Scripts/LemonGenericLib/Scoring System/ScoreKeeper.cs new file mode 100644 index 0000000..212c578 --- /dev/null +++ b/Assets/Scripts/LemonGenericLib/Scoring System/ScoreKeeper.cs @@ -0,0 +1,72 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using System; + +namespace Lemon.GenericLib.Score { + + public class ScoreKeeper + { + public string HIGHSCORE_PLAYERPREF = "HighScore"; + + //score variables + private int score = 0; + private int scoreMultiplier = 1; + public int maxMultiplier = 7; + + //score changing event + //mainly used for UI + public Action OnScoreModified; + public Action OnScoreMultiplierModified; + public Action OnNewHighScore; + + //getter setters, not advice to set score directly + public int Score { get => score; set => score = value; } + public int ScoreMultiplier { get => scoreMultiplier; set => scoreMultiplier = value; } + public int HighScore { get => PlayerPrefs.GetInt(HIGHSCORE_PLAYERPREF); set => PlayerPrefs.SetInt(HIGHSCORE_PLAYERPREF, score); } + + + public void ForceUpdate() + { + OnScoreModified?.Invoke(score); + OnScoreMultiplierModified?.Invoke(scoreMultiplier); + } + + public void ModifyScore(int value) + { + score += (value * scoreMultiplier); + OnScoreModified?.Invoke(score); + } + + public void ResetScore() + { + score = 0; + OnScoreModified?.Invoke(score); + } + + public void ModifyMultiplier(int value) + { + scoreMultiplier += value; + scoreMultiplier = Mathf.Clamp(scoreMultiplier, 1, maxMultiplier); + OnScoreMultiplierModified?.Invoke(scoreMultiplier); + } + + public void ResetMultiplier() + { + scoreMultiplier = 1; + OnScoreMultiplierModified?.Invoke(scoreMultiplier); + } + + public bool CheckHighScore() + { + if (score > PlayerPrefs.GetInt(HIGHSCORE_PLAYERPREF)) + { + PlayerPrefs.SetInt(HIGHSCORE_PLAYERPREF, score); + OnNewHighScore?.Invoke(score); + return true; + } + return false; + } + } +} + diff --git a/Assets/Scripts/LemonGenericLib/Scoring System/ScoreKeeper.cs.meta b/Assets/Scripts/LemonGenericLib/Scoring System/ScoreKeeper.cs.meta new file mode 100644 index 0000000..bec885d --- /dev/null +++ b/Assets/Scripts/LemonGenericLib/Scoring System/ScoreKeeper.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 70caaedb4a6576a4fbb4a7f78ecc4605 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/LemonGenericLib/UI.meta b/Assets/Scripts/LemonGenericLib/UI.meta new file mode 100644 index 0000000..725a307 --- /dev/null +++ b/Assets/Scripts/LemonGenericLib/UI.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c2eff9b9eb3fb8b49b67c10a697cd927 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/LemonGenericLib/UI/QuickUIManagers.meta b/Assets/Scripts/LemonGenericLib/UI/QuickUIManagers.meta new file mode 100644 index 0000000..e433677 --- /dev/null +++ b/Assets/Scripts/LemonGenericLib/UI/QuickUIManagers.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 12d0daac2445aa64b89b3cd4c8e6bc59 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/LemonGenericLib/UI/QuickUIManagers/ImageUIManager.cs b/Assets/Scripts/LemonGenericLib/UI/QuickUIManagers/ImageUIManager.cs new file mode 100644 index 0000000..fd8123b --- /dev/null +++ b/Assets/Scripts/LemonGenericLib/UI/QuickUIManagers/ImageUIManager.cs @@ -0,0 +1,110 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.UI; +using System; + +namespace Lemon.GenericLib.UI +{ + public class ImageUIManager : MonoBehaviour + { + public static ImageUIManager Instance; + //singleton pattern + private void Awake() + { + if (Instance == null) + { + Instance = this; + } + + if (Instance != this) + { + Destroy(gameObject); + } + + } + + + [SerializeField] ImageUIData[] ImageUIList; + + [Serializable] + struct ImageUIData + { + public string UIName; + public Image ImageUI; + public float fillRate; + public float targetFill; + public float snapFillMargin; + + public void UpdateFill() + { + if (ImageUI.fillAmount == targetFill) return; + ImageUI.fillAmount = Mathf.Lerp(ImageUI.fillAmount, targetFill, fillRate * Time.deltaTime); + + if (Mathf.Abs(targetFill - ImageUI.fillAmount) <= snapFillMargin) ImageUI.fillAmount = targetFill; + } + + public void SetFill(float value) + { + targetFill = value; + } + + } + + private void Update() + { + for (int i = 0; i < ImageUIList.Length; i++) + { + ImageUIList[i].UpdateFill(); + } + } + + public bool SetFill(string UIName, float fill) + { + for (int i = 0; i < ImageUIList.Length; i++) + { + if (UIName == ImageUIList[i].UIName) + { + ImageUIList[i].SetFill(fill); + return true; + } + } + + Debug.LogError(" Image UI of nane " + UIName + " does not exist"); + return false; + } + + + public bool SetFillForce(string UIName, float fill) + { + for (int i = 0; i < ImageUIList.Length; i++) + { + if (UIName == ImageUIList[i].UIName) + { + ImageUIList[i].ImageUI.fillAmount = fill; + return true; + } + } + + Debug.LogError(" Image UI of nane " + UIName + " does not exist"); + return false; + } + + public bool SetImage(string UIName, Sprite image) + { + for (int i = 0; i < ImageUIList.Length; i++) + { + if (UIName == ImageUIList[i].UIName) + { + ImageUIList[i].ImageUI.sprite = image; + return true; + } + } + + Debug.LogError(" Image UI of nane " + UIName + " does not exist"); + return false; + } + + + } +} \ No newline at end of file diff --git a/Assets/Scripts/LemonGenericLib/UI/QuickUIManagers/ImageUIManager.cs.meta b/Assets/Scripts/LemonGenericLib/UI/QuickUIManagers/ImageUIManager.cs.meta new file mode 100644 index 0000000..f99680b --- /dev/null +++ b/Assets/Scripts/LemonGenericLib/UI/QuickUIManagers/ImageUIManager.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e6113c552c6f9e94190849ea5044d042 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/LemonGenericLib/UI/QuickUIManagers/TextUIManager.cs b/Assets/Scripts/LemonGenericLib/UI/QuickUIManagers/TextUIManager.cs new file mode 100644 index 0000000..507595c --- /dev/null +++ b/Assets/Scripts/LemonGenericLib/UI/QuickUIManagers/TextUIManager.cs @@ -0,0 +1,112 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using System; +using TMPro; + +namespace Lemon.GenericLib.UI +{ + public class TextUIManager : MonoBehaviour + { + + public static TextUIManager Instance; + //singleton pattern + private void Awake() + { + if (Instance == null) + { + Instance = this; + } + + if (Instance != this) + { + Destroy(gameObject); + } + + InitTextUI(); + + } + + public void InitTextUI() + { + for (int i = 0; i < textUIList.Length; i++) + { + textUIList[i].InitUI(); + } + } + + [SerializeField] TextUI[] textUIList; + + [Serializable] + struct TextUI + { + public string UIName; + public TextMeshProUGUI textMesh; + public bool textGoUp; + public float textGoUpDistance; + public float textEffectTime; + public LeanTweenType easeType; + [SerializeField] private Vector3 originalPos; + private bool canAnimate; + [SerializeField] private bool explixitDefineStartY; + [SerializeField] Vector3 startPos; + + + + public void SetText(string text) + { + textMesh.text = text; + if (textGoUp && canAnimate) LeanTween.moveLocalY(textMesh.gameObject, originalPos.y + textGoUpDistance, textEffectTime).setOnComplete(AnimateEffectBack); + } + + public void SetColour(Color colour) + { + textMesh.color = colour; + + } + + public void InitUI() + { + if (explixitDefineStartY) originalPos = startPos; + else originalPos = textMesh.GetComponent().localPosition; + canAnimate = true; + } + + private void AnimateEffectBack() + { + LeanTween.moveLocalY(textMesh.gameObject, originalPos.y, textEffectTime); + } + } + + + public bool SetText(string UIName, string text) + { + for (int i = 0; i < textUIList.Length; i++) + { + if (UIName == textUIList[i].UIName) + { + textUIList[i].SetText(text); + return true; + } + } + + Debug.LogError("text UI of nane " + UIName + " does not exist"); + return false; + } + + public bool SetColour(string UIName, Color colour) + { + for (int i = 0; i < textUIList.Length; i++) + { + if (UIName == textUIList[i].UIName) + { + textUIList[i].SetColour(colour); + return true; + } + } + + Debug.LogError("text UI of nane " + UIName + " does not exist"); + return false; + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/LemonGenericLib/UI/QuickUIManagers/TextUIManager.cs.meta b/Assets/Scripts/LemonGenericLib/UI/QuickUIManagers/TextUIManager.cs.meta new file mode 100644 index 0000000..db0485f --- /dev/null +++ b/Assets/Scripts/LemonGenericLib/UI/QuickUIManagers/TextUIManager.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 454e8a3504cc8734c861860dfef3875f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/LemonGenericLib/UI/Tabs.meta b/Assets/Scripts/LemonGenericLib/UI/Tabs.meta new file mode 100644 index 0000000..37ad69f --- /dev/null +++ b/Assets/Scripts/LemonGenericLib/UI/Tabs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d8a913671c0abc9459f3e8a14d2cc066 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/LemonGenericLib/UI/Tabs/TabButtonScript.cs b/Assets/Scripts/LemonGenericLib/UI/Tabs/TabButtonScript.cs new file mode 100644 index 0000000..5c09448 --- /dev/null +++ b/Assets/Scripts/LemonGenericLib/UI/Tabs/TabButtonScript.cs @@ -0,0 +1,67 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.UI; +using UnityEngine.EventSystems; +using UnityEngine.Events; + +namespace Lemon.GenericLib.UI +{ + public class TabButtonScript : MonoBehaviour, IPointerEnterHandler, IPointerClickHandler, IPointerExitHandler + { + + [SerializeField] TabGroup tabGroup; + + + [SerializeField] private UnityEvent onTabEnter; + [SerializeField] private UnityEvent onTabExit; + [SerializeField] private UnityEvent onTabSelected; + [SerializeField] private UnityEvent onTabDeselected; + + + + + public void OnPointerClick(PointerEventData eventData) + { + tabGroup.OnTabSelected(this); + } + + public void OnPointerEnter(PointerEventData eventData) + { + tabGroup.OnTabEnter(this); + } + + public void OnPointerExit(PointerEventData eventData) + { + tabGroup.OnTabExit(this); + } + + + public void OnEnter() + { + onTabEnter?.Invoke(); + + } + + public void OnExit() + { + onTabExit?.Invoke(); + + } + + public void OnSelected() + { + onTabSelected?.Invoke(); + + } + + public void OnDeselected() + { + onTabDeselected?.Invoke(); + + } + + + + } +} \ No newline at end of file diff --git a/Assets/Scripts/LemonGenericLib/UI/Tabs/TabButtonScript.cs.meta b/Assets/Scripts/LemonGenericLib/UI/Tabs/TabButtonScript.cs.meta new file mode 100644 index 0000000..9aeb87e --- /dev/null +++ b/Assets/Scripts/LemonGenericLib/UI/Tabs/TabButtonScript.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ccb3057007dfb1541810d434b448bcc8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/LemonGenericLib/UI/Tabs/TabGroup.cs b/Assets/Scripts/LemonGenericLib/UI/Tabs/TabGroup.cs new file mode 100644 index 0000000..063656c --- /dev/null +++ b/Assets/Scripts/LemonGenericLib/UI/Tabs/TabGroup.cs @@ -0,0 +1,123 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using System; + +//TODO: make this system supprts tabs without using tab buttons +// or redo the entire thing +// yeah we need to redo the whole thing +// for now make your own page system + +namespace Lemon.GenericLib.UI +{ + public class TabGroup : MonoBehaviour + { + [SerializeField] private List tabSets; + [SerializeField] private int defaultTabIndex; + + + private TabButtonScript selectedButton; + + [Serializable] + struct TabSet + { + public TabButtonScript tabButton; + public GameObject tabObject; + + public TabSet(TabButtonScript tabButton, GameObject tabObject) + { + this.tabButton = tabButton; + this.tabObject = tabObject; + } + + public override bool Equals(object obj) + { + return base.Equals(obj); + } + } + + private void Start() + { + if (tabSets == null || defaultTabIndex < 0 || defaultTabIndex > tabSets.Count) + { + Debug.LogError("default tab cannot be asisgned, pleace chect the default tab index and make sure the tab list is initialized"); + } + else + { + OnTabSelected(tabSets[defaultTabIndex].tabButton); + + + } + } + + public void Subscribe(TabButtonScript button, GameObject tabObject) + { + if (tabSets == null) + { + tabSets = new List(); + } + tabSets.Add(new TabSet(button, tabObject)); + } + + public void OnTabEnter(TabButtonScript button) + { + ResetTabs(); + if (selectedButton == null || button != selectedButton) + { + button.OnEnter(); + } + + } + + public void OnTabExit(TabButtonScript button) + { + ResetTabs(); + + } + + public void OnTabSelected(TabButtonScript button) + { + if (selectedButton != null) + { + selectedButton.OnDeselected(); + } + + + selectedButton = button; + button.OnSelected(); + + UpdateSelectedTab(); + ResetTabs(); + + + } + + + public void ResetTabs() + { + foreach (var item in tabSets) + { + if (selectedButton != null && item.tabButton == selectedButton) { continue; } + item.tabButton.OnExit(); + } + } + + //can overwite this + public void UpdateSelectedTab() + { + foreach (var tab in tabSets) + { + if (tab.tabButton == selectedButton) + { + tab.tabObject.SetActive(true); + tab.tabObject.transform.SetSiblingIndex(tabSets.Count - 1); + } + else + { + tab.tabObject.SetActive(false); + tab.tabObject.transform.SetSiblingIndex(0); + } + } + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/LemonGenericLib/UI/Tabs/TabGroup.cs.meta b/Assets/Scripts/LemonGenericLib/UI/Tabs/TabGroup.cs.meta new file mode 100644 index 0000000..0d33008 --- /dev/null +++ b/Assets/Scripts/LemonGenericLib/UI/Tabs/TabGroup.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0206a02701fc75c4eb1f54e3113fd697 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/LemonGenericLib/Visual Effects.meta b/Assets/Scripts/LemonGenericLib/Visual Effects.meta new file mode 100644 index 0000000..968a363 --- /dev/null +++ b/Assets/Scripts/LemonGenericLib/Visual Effects.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 09ee81d16d5d9e642a895942382537d9 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/LemonGenericLib/Visual Effects/CameraController.cs b/Assets/Scripts/LemonGenericLib/Visual Effects/CameraController.cs new file mode 100644 index 0000000..477f513 --- /dev/null +++ b/Assets/Scripts/LemonGenericLib/Visual Effects/CameraController.cs @@ -0,0 +1,296 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace Lemon.GenericLib.VFX { + public class CameraController : MonoBehaviour + { + + public static CameraController instanceCC; + [SerializeField] Camera cam; + [SerializeField] Transform player; + [SerializeField] float shootshakeDuration = 0.2f; + private Vector2 originalPosition; + + + Vector3 target, mousePos, refVel, shkeOffset; + + float cameraDist = 2.5f; + float smoothTime = 0.2f; + + [SerializeField] float shootShakeMagnitude = 2; + Vector3 shootShakeDirection = Vector3.zero; + float shootShakeTimeEnd = 0; + bool shootshake = false; + + [SerializeField] float shakePower; + [SerializeField] float smallShakeMultiplier; + [SerializeField] Vector2 screenshakeOffset = Vector2.zero; + + + + //private Game_Manager gameManager; + + //singleton pattern + private void Awake() + { + if (instanceCC == null) + { + instanceCC = this; + } + + if (instanceCC != this) + { + Destroy(gameObject); + } + + } + + public void SetPlayer(Transform playerTransform) + { + player = playerTransform; + } + + + // Start is called before the first frame update + void Start() + { + + //cb = GetComponent(); + //gameManager = Game_Manager.instanceGM; + cam = Camera.main; + originalPosition = transform.position; + //player = FindObjectOfType()?.transform; + screenshakeOffset = Vector2.zero; + //gameManager.ChangeGameStateEvent += HandleGameStateChanges; + + } + + ////not working currently for some reason + //private void HandleGameStateChanges(object sender, Game_Manager.ChangeGameStateArgs e) + //{ + // //Debug.Log("finding player"); + // if (e.newState == Game_Manager.GameState.gameplay) { + // Invoke("FindPlayer", 0.01f); + // } + //} + + void FindPlayer() + { + Debug.Log("finding player"); + //player = FindObjectOfType()?.transform; + + } + + Vector3 shootShakeOffset = Vector3.zero; + // Update is called once per frame + void Update() + { + + Vector3 destinationPos = originalPosition; + //Vector3 destinationPos = transform.position; + //if (player != null) + //{ + // mousePos = GetMousePos(); + // target = UpdateTargetPos(); + // Vector3 tempPos; + // tempPos = Vector3.SmoothDamp(transform.position, target, ref refVel, smoothTime); + // transform.position = tempPos; + + // //mouse distance thing + // Vector2 playerPos = Vector3.zero; + // destinationPos = Vector2.Lerp(originalPosition, playerPos, 0.2f); + // Vector2 MousePos = cam.ScreenToWorldPoint(Input.mousePosition); + // Vector3 mouseDistance = MousePos - playerPos; + // mouseDistance = Vector3.Lerp(Vector3.zero, mouseDistance, 0.05f); + + // mouseDistance.z = 0; + + + if (!shootshake || Time.time >= shootShakeTimeEnd) + { + shootshake = false; + //Debug.Log("not shaking"); + shootShakeOffset = Vector3.Lerp(shootShakeOffset, Vector3.zero, 15 * Time.deltaTime); + } + else + { + //Debug.Log(" shaking"); + shootShakeOffset = Vector3.Lerp(shootShakeOffset, shootShakeDirection * shootShakeMagnitude, 15 * Time.deltaTime); + + } + + + + destinationPos.z = -10; + transform.position = destinationPos + (Vector3)screenshakeOffset + shootShakeOffset; + + + //} + + //else + //{ + // destinationPos = Vector2.Lerp(transform.position, originalPosition, 0.2f); + // destinationPos.z = -10; + // transform.position = destinationPos + (Vector3)screenshakeOffset; + //} + + } + + + public Vector3 UpdateTargetPos() + { + Vector3 mouseOffset = mousePos * cameraDist; + Vector3 ret = player.position + mouseOffset; + ret.z = -10; + return ret; + } + + public Vector3 GetMousePos() + { + Vector2 ret = cam.ScreenToViewportPoint(Input.mousePosition); + ret *= 2; + ret -= Vector2.one; + float max = 0.9f; + if (Mathf.Abs(ret.x) > max || Mathf.Abs(ret.y) > max) + { + ret = ret.normalized; + } + return ret; + } + + + public void ApplyShootShake(float duration, Vector3 direction) + { + shootshake = true; + shootShakeDirection = direction; + //yield return new WaitForSeconds(duration); + shootShakeTimeEnd = Time.time + duration; + + } + + public void ApplyShootShake(float angle, float power) + { + shootshake = true; + shootShakeDirection = (new Vector3((float)Mathf.Cos(angle * Mathf.Deg2Rad), (float)Mathf.Sin(angle * Mathf.Deg2Rad))).normalized; + //yield return new WaitForSeconds(duration); + shootShakeTimeEnd = Time.time + shootshakeDuration; + + } + + public void ApplyShootShake(float angle) + { + shootshake = true; + shootShakeDirection = (new Vector3((float)Mathf.Cos(angle * Mathf.Deg2Rad), (float)Mathf.Sin(angle * Mathf.Deg2Rad))).normalized; + //yield return new WaitForSeconds(duration); + shootShakeTimeEnd = Time.time + shootshakeDuration; + + } + + public void ApplyShootShake(Vector3 direction) + { + shootshake = true; + shootShakeDirection = direction; + //yield return new WaitForSeconds(duration); + shootShakeTimeEnd = Time.time + shootshakeDuration; + + } + + + public void ApplyScreenShake(float duration = 0.1f, bool isSmall = false) + { + + StopCoroutine("Screenshake"); + StartCoroutine(Screenshake(duration, isSmall)); + } + + public void ApplyScreenShake(float duration, float newShakePower, bool isSmall = false) + { + //cb.enabled = false; + StopCoroutine("Screenshake"); + StartCoroutine(Screenshake(duration, newShakePower, isSmall)); + + } + + + + IEnumerator Screenshake(float duration, bool isSmall = false) + { + screenshakeOffset = Vector2.zero; + //originalPosition = transform.position; + + //cb.enabled = false; + //Debug.Log("shake " + cb.enabled); + + float currentShakePower = shakePower; + if (isSmall) currentShakePower *= smallShakeMultiplier; + float shakeFadeTime = currentShakePower / duration; + while (duration > 0) + { + + float xOffset = Random.Range(-1f, 1f) * currentShakePower; + float yOffset = Random.Range(-1f, 1f) * currentShakePower; + + screenshakeOffset.x = xOffset; + screenshakeOffset.y = yOffset; + + duration -= Time.deltaTime; + + currentShakePower = Mathf.MoveTowards(shakePower, 0f, shakeFadeTime * Time.deltaTime); + + yield return null; + + } + + screenshakeOffset = Vector2.zero; + + // cb.enabled = true; + } + + IEnumerator Screenshake(float duration, float thisShakePower, bool isSmall = false) + { + screenshakeOffset = Vector2.zero; + float currentShakePower = thisShakePower; + if (isSmall) currentShakePower *= smallShakeMultiplier; + float shakeFadeTime = currentShakePower / duration; + while (duration > 0) + { + + float xOffset = Random.Range(-1f, 1f) * currentShakePower; + float yOffset = Random.Range(-1f, 1f) * currentShakePower; + + screenshakeOffset.x = xOffset; + screenshakeOffset.y = yOffset; + + duration -= Time.deltaTime; + + currentShakePower = Mathf.MoveTowards(shakePower, 0f, shakeFadeTime * Time.deltaTime); + + yield return null; + + } + screenshakeOffset = Vector2.zero; + + } + + public void HitPause(float duration = 0.05f) + { + + Time.timeScale = 1; + StopCoroutine("HitPauseRoutine"); + StartCoroutine(HitPauseRoutine(duration)); + } + + IEnumerator HitPauseRoutine(float duration) + { + + // Debug.LogError("FUCK"); + Time.timeScale = 0; + yield return new WaitForSecondsRealtime(duration); + Time.timeScale = 1; + + } + + } +} + diff --git a/Assets/Scripts/LemonGenericLib/Visual Effects/CameraController.cs.meta b/Assets/Scripts/LemonGenericLib/Visual Effects/CameraController.cs.meta new file mode 100644 index 0000000..3b49867 --- /dev/null +++ b/Assets/Scripts/LemonGenericLib/Visual Effects/CameraController.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: eb19143cd46ff7641a1522d7318b29dd +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/LemonGenericLib/Visual Effects/ConstantRotation.cs b/Assets/Scripts/LemonGenericLib/Visual Effects/ConstantRotation.cs new file mode 100644 index 0000000..415df00 --- /dev/null +++ b/Assets/Scripts/LemonGenericLib/Visual Effects/ConstantRotation.cs @@ -0,0 +1,17 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace Lemon.GenericLib.VFX { + public class ConstantRotation : MonoBehaviour + { + public Vector3 rotationVector; + + + private void FixedUpdate() + { + + transform.Rotate(rotationVector * Time.deltaTime); + } + } +} diff --git a/Assets/Scripts/LemonGenericLib/Visual Effects/ConstantRotation.cs.meta b/Assets/Scripts/LemonGenericLib/Visual Effects/ConstantRotation.cs.meta new file mode 100644 index 0000000..4375e06 --- /dev/null +++ b/Assets/Scripts/LemonGenericLib/Visual Effects/ConstantRotation.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 14b9658d15552084d841ba0dd6a818ba +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/LemonGenericLib/Visual Effects/FixedRotation.cs b/Assets/Scripts/LemonGenericLib/Visual Effects/FixedRotation.cs new file mode 100644 index 0000000..90cdb7f --- /dev/null +++ b/Assets/Scripts/LemonGenericLib/Visual Effects/FixedRotation.cs @@ -0,0 +1,15 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace Lemon.GenericLib.VFX +{ + public class FixedRotation : MonoBehaviour + { + // Update is called once per frame + void Update() + { + transform.rotation = Quaternion.identity; + } + } +} diff --git a/Assets/Scripts/LemonGenericLib/Visual Effects/FixedRotation.cs.meta b/Assets/Scripts/LemonGenericLib/Visual Effects/FixedRotation.cs.meta new file mode 100644 index 0000000..1c15373 --- /dev/null +++ b/Assets/Scripts/LemonGenericLib/Visual Effects/FixedRotation.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9fb2c212857fc924cb0ce6c1e6fbd4a2 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/LemonGenericLib/Visual Effects/GhostManager.cs b/Assets/Scripts/LemonGenericLib/Visual Effects/GhostManager.cs new file mode 100644 index 0000000..00a2877 --- /dev/null +++ b/Assets/Scripts/LemonGenericLib/Visual Effects/GhostManager.cs @@ -0,0 +1,65 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +//TODO: make this object pool compatible + +namespace Lemon.GenericLib.VFX +{ + public class GhostManager : MonoBehaviour + { + public float ghostInterval = 0.1f; + public float ghostLifeTime = 0.5f; + private float currentInterval = 0; + public GameObject ghost; + public bool createGhost = false; + public bool recolourGhost; + public Color ghostColor; + + private SpriteRenderer sr; + + + // Start is called before the first frame update + void Start() + { + sr = GetComponent(); + currentInterval = 0; + } + + // Update is called once per frame + void Update() + { + if (currentInterval >= ghostInterval) + { + if (!createGhost) return; + GameObject currentGhost = Instantiate(ghost, transform.position, transform.rotation); + currentGhost.transform.localScale = transform.localScale; + currentGhost.GetComponent().sprite = sr.sprite; + + if (recolourGhost) + { + currentGhost.GetComponent().color = ghostColor; + } + + Destroy(currentGhost, ghostLifeTime); + currentInterval = 0; + } + else + { + currentInterval += Time.deltaTime; + } + } + + public void CreateGhostTemp(float time) + { + StartCoroutine(CreateGhostTempRoutine(time)); + } + + IEnumerator CreateGhostTempRoutine(float time) + { + createGhost = true; + yield return new WaitForSeconds(time); + createGhost = false; + } + } +} diff --git a/Assets/Scripts/LemonGenericLib/Visual Effects/GhostManager.cs.meta b/Assets/Scripts/LemonGenericLib/Visual Effects/GhostManager.cs.meta new file mode 100644 index 0000000..ec1cbc3 --- /dev/null +++ b/Assets/Scripts/LemonGenericLib/Visual Effects/GhostManager.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 171af91b161e0b644b33be9f2fae0831 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/LemonGenericLib/Visual Effects/Popup_Text.cs b/Assets/Scripts/LemonGenericLib/Visual Effects/Popup_Text.cs new file mode 100644 index 0000000..d82549c --- /dev/null +++ b/Assets/Scripts/LemonGenericLib/Visual Effects/Popup_Text.cs @@ -0,0 +1,77 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using TMPro; + +//use lean tween next time + +namespace Lemon.GenericLib.VFX +{ + public class Popup_Text : MonoBehaviour + { + TextMeshPro PopupText; + public string text; + public float lifetime = 2; + public float startSpeed; + public float speed; + private float targetSpeed; + private float size; + private float targetSize; + public Transform parent; + + + + + // Start is called before the first frame update + void Start() + { + PopupText = GetComponent(); + PopupText.text = text; + targetSpeed = startSpeed; + size = 0; + targetSize = 1; + StartCoroutine(LifeTime()); + parent = transform.parent; + + } + + // Update is called once per frame + void Update() + { + + + transform.localPosition += Vector3.up * targetSpeed * Time.deltaTime; + transform.localScale = new Vector3(transform.localScale.x, size); + targetSpeed = Mathf.Lerp(targetSpeed, speed, 5 * Time.deltaTime); + size = Mathf.Lerp(size, targetSize, 20 * Time.deltaTime); + + if (parent != null) + { + if (parent.localRotation.y != 0) + { + + transform.localRotation = Quaternion.Euler(0, parent.rotation.y - 180, 0); + } + else + { + transform.localRotation = Quaternion.Euler(0, 0, 0); + } + } + + } + + public void SetText(string text) + { + this.text = text; + PopupText.text = this.text; + } + + IEnumerator LifeTime() + { + yield return new WaitForSeconds(lifetime); + targetSize = 0; + Destroy(gameObject, 0.25f); + } + + } +} diff --git a/Assets/Scripts/LemonGenericLib/Visual Effects/Popup_Text.cs.meta b/Assets/Scripts/LemonGenericLib/Visual Effects/Popup_Text.cs.meta new file mode 100644 index 0000000..0c3ae76 --- /dev/null +++ b/Assets/Scripts/LemonGenericLib/Visual Effects/Popup_Text.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e358931fe625ddc46a3f28d6d716833b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/LemonGenericLib/Visual Effects/SineWaveHover.cs b/Assets/Scripts/LemonGenericLib/Visual Effects/SineWaveHover.cs new file mode 100644 index 0000000..84aa03d --- /dev/null +++ b/Assets/Scripts/LemonGenericLib/Visual Effects/SineWaveHover.cs @@ -0,0 +1,29 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace Lemon.GenericLib.VFX +{ + //this only works for sprite objects + public class SineWaveHover : MonoBehaviour + { + [SerializeField] float effectSpeed = 1; + [SerializeField] float effectMultiplier = 1; + [SerializeField] public float effectOffset = 1; + + float yPos; + Vector3 originalPos; + + private void Start() + { + originalPos = transform.localPosition; + } + + // Update is called once per frame + void Update() + { + yPos = Mathf.Sin((Time.time + effectOffset) * effectSpeed) * effectMultiplier; + transform.localPosition = originalPos + new Vector3(0, yPos, 0); + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/LemonGenericLib/Visual Effects/SineWaveHover.cs.meta b/Assets/Scripts/LemonGenericLib/Visual Effects/SineWaveHover.cs.meta new file mode 100644 index 0000000..8c050e5 --- /dev/null +++ b/Assets/Scripts/LemonGenericLib/Visual Effects/SineWaveHover.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2343e432efd75d94a9261bbeed7a17b6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/LemonGenericLib/Visual Effects/SpriteFlicker.cs b/Assets/Scripts/LemonGenericLib/Visual Effects/SpriteFlicker.cs new file mode 100644 index 0000000..709efdd --- /dev/null +++ b/Assets/Scripts/LemonGenericLib/Visual Effects/SpriteFlicker.cs @@ -0,0 +1,55 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace Lemon.GenericLib.VFX +{ + //need to be further developed + public class SpriteFlicker : MonoBehaviour + { + private SpriteRenderer sr; + + + // Start is called before the first frame update + void Start() + { + sr = GetComponent(); + } + + public void FlickerSprite(float duration, int intervals) + { + StopCoroutine("FlickerSpriteRoutine"); + StartCoroutine(FlickerSpriteRoutine(duration, intervals)); + } + + IEnumerator FlickerSpriteRoutine(float duration, int intervals) + { + for (int i = 0; i < intervals; i++) + { + if (i > 0) + { + //if (i == 1) Camera_Controller.instanceCC.ApplyScreenShake(0.05f); + + if (sr.maskInteraction == SpriteMaskInteraction.None) + { + + sr.maskInteraction = SpriteMaskInteraction.VisibleInsideMask; + } + else + { + sr.maskInteraction = SpriteMaskInteraction.None; + } + } + + yield return new WaitForSeconds(duration / intervals); + } + sr.maskInteraction = SpriteMaskInteraction.None; + } + + public void StopFlicker() + { + StopCoroutine("FlickerSpriteRoutine"); + sr.maskInteraction = SpriteMaskInteraction.None; + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/LemonGenericLib/Visual Effects/SpriteFlicker.cs.meta b/Assets/Scripts/LemonGenericLib/Visual Effects/SpriteFlicker.cs.meta new file mode 100644 index 0000000..a8f2e30 --- /dev/null +++ b/Assets/Scripts/LemonGenericLib/Visual Effects/SpriteFlicker.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c233fa6ef7660324c9ded9a1e63c1836 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/LemonGenericLib/Visual Effects/SpriteFrameSetter.cs b/Assets/Scripts/LemonGenericLib/Visual Effects/SpriteFrameSetter.cs new file mode 100644 index 0000000..982ea64 --- /dev/null +++ b/Assets/Scripts/LemonGenericLib/Visual Effects/SpriteFrameSetter.cs @@ -0,0 +1,59 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using System; + +namespace Lemon.GenericLib.VFX +{ + public class SpriteFrameSetter : MonoBehaviour + { + private SpriteRenderer sr; + [SerializeField] private SpriteFrame[] spriteFrames; + + private void Start() + { + sr = GetComponent(); + } + + public void SetFrame(string spriteName) + { + + foreach (var item in spriteFrames) + { + if (item.spriteName == spriteName) + { + sr.sprite = item.sprite; + + return; + } + } + + Debug.LogError("Sprite frame requiested is not available.\nPlease check the spelling error"); + + } + + public void SetFrame(int index) + { + if (index >= 0 && index < spriteFrames.Length) + { + sr.sprite = spriteFrames[index].sprite; + return; + } + + + Debug.LogError($"Sprite frame requiested {index} is not available.\nPlease check the spelling error"); + + } + + [Serializable] + private class SpriteFrame + { + public string spriteName; + public Sprite sprite; + + + } + } + + +} \ No newline at end of file diff --git a/Assets/Scripts/LemonGenericLib/Visual Effects/SpriteFrameSetter.cs.meta b/Assets/Scripts/LemonGenericLib/Visual Effects/SpriteFrameSetter.cs.meta new file mode 100644 index 0000000..71deefa --- /dev/null +++ b/Assets/Scripts/LemonGenericLib/Visual Effects/SpriteFrameSetter.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4dfb673b5ecacd542ad64f5665b1e237 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/LemonGenericLib/Visual Effects/SpriteVibration.cs b/Assets/Scripts/LemonGenericLib/Visual Effects/SpriteVibration.cs new file mode 100644 index 0000000..00e1e7e --- /dev/null +++ b/Assets/Scripts/LemonGenericLib/Visual Effects/SpriteVibration.cs @@ -0,0 +1,46 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace Lemon.GenericLib.VFX +{ + public class SpriteVibration : MonoBehaviour + { + [SerializeField] Vector2 vibrationRange; + private Vector2 originalPos; + private bool isVibrating = false; + + // Start is called before the first frame update + void Start() + { + originalPos = transform.localPosition; + StartCoroutine(Viberate()); + } + + IEnumerator Viberate() + { + while (true) + { + if (isVibrating) + transform.localPosition = originalPos + new Vector2(Random.Range(-vibrationRange.x, vibrationRange.x), Random.Range(-vibrationRange.y, vibrationRange.y)); + //else transform.localPosition = originalPos; + yield return null; + } + } + + public void SetVibration(bool value) { + isVibrating = value; + if (!isVibrating) transform.localPosition = originalPos; + } + + public void SetTempVibration(float duration) { + StartCoroutine(SetTempVibrationRoutine(duration)); + } + + IEnumerator SetTempVibrationRoutine(float duration) { + SetVibration(true); + yield return new WaitForSeconds(duration); + SetVibration(false); + } + } +} diff --git a/Assets/Scripts/LemonGenericLib/Visual Effects/SpriteVibration.cs.meta b/Assets/Scripts/LemonGenericLib/Visual Effects/SpriteVibration.cs.meta new file mode 100644 index 0000000..c5ec789 --- /dev/null +++ b/Assets/Scripts/LemonGenericLib/Visual Effects/SpriteVibration.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ee76a7080bc41504ca743d99f8842420 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/LemonGenericLib/Visual Effects/SquashAndStretch.cs b/Assets/Scripts/LemonGenericLib/Visual Effects/SquashAndStretch.cs new file mode 100644 index 0000000..17f07ec --- /dev/null +++ b/Assets/Scripts/LemonGenericLib/Visual Effects/SquashAndStretch.cs @@ -0,0 +1,213 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace Lemon.GenericLib.VFX +{ + //to do: build linear lerping that can change duration + public class SquashAndStretch : MonoBehaviour + { + [SerializeField] private Vector3 squashSize; + [SerializeField] private Vector3 stretchSize; + [SerializeField] private float transformRate = 10; + [SerializeField] private bool useRealative; + [SerializeField] private bool forceSnap = false; + [SerializeField] private Vector3 snapingMargin = new Vector3(0.001f, 0.001f, 0.001f); + + public enum SquashMode { lerp, linear, addition } + [SerializeField] SquashMode squashMode; + [SerializeField] float linearLerpDuration; + + //if useRealative is enabled the squash size will be the ratio of the original size + //rather than the exact size it's self + + private Vector3 originalSize; + private Vector3 targetSize; + private float timeElapsed = 0; + private Vector3 startSize; + + // Start is called before the first frame update + void Start() + { + originalSize = transform.localScale; + targetSize = originalSize; + startSize = originalSize; + } + + Vector3 vectorToLerp = Vector3.zero; + // Update is called once per frame + void FixedUpdate() + { + //squash and stretch + //if (transform.localScale != targetSize) { + if (squashMode == SquashMode.lerp) + { + transform.localScale = Vector3.Lerp(transform.localScale, targetSize, transformRate * Time.deltaTime); + + //Debug.Log("squashing " + targetSize); + if (forceSnap) + { + if (targetSize.x - transform.localScale.x <= snapingMargin.x && targetSize.y - transform.localScale.y <= snapingMargin.y && targetSize.z - transform.localScale.z <= snapingMargin.z) + { + transform.localScale = targetSize; + } + } + + } + else if (squashMode == SquashMode.linear) + { + if (timeElapsed < linearLerpDuration) + { + transform.localScale = Vector3.Lerp(startSize, targetSize, timeElapsed / linearLerpDuration); + timeElapsed += Time.deltaTime; + } + else + { + if (forceSnap) transform.localScale = targetSize; + } + + } + else if (squashMode == SquashMode.addition) + { + vectorToLerp.x = (transform.localScale.x - targetSize.x) * transformRate * Time.deltaTime; + vectorToLerp.y = (transform.localScale.y - targetSize.y) * transformRate * Time.deltaTime; + vectorToLerp.z = (transform.localScale.z - targetSize.z) * transformRate * Time.deltaTime; + + + transform.localScale += vectorToLerp; + + vectorToLerp = transform.localScale; + if (vectorToLerp.x >= targetSize.x || vectorToLerp.x <= targetSize.x) + { + vectorToLerp.x = targetSize.x; + } + + if (vectorToLerp.y >= targetSize.y || vectorToLerp.y <= targetSize.y) + { + vectorToLerp.y = targetSize.y; + } + + if (vectorToLerp.z >= targetSize.z || vectorToLerp.z <= targetSize.z) + { + vectorToLerp.z = targetSize.z; + } + transform.localScale = vectorToLerp; + + } + //} + + + + + + } + + public void ChnageOriginalSize(Vector3 newSize) + { + originalSize = newSize; + } + + public void SetToSquash() + { + if (useRealative) + { + targetSize = new Vector3(originalSize.x * squashSize.x, originalSize.y * squashSize.y, originalSize.z * squashSize.z); + } + else + { + targetSize = squashSize; + } + + //if (squashMode == SquashMode.linear || squashMode == SquashMode.addition) { + // timeElapsed = 0; + // startSize = transform.localScale; + //} + + + } + + //returns to original size once it is done + public void SetToSquash(float duration) + { + StartCoroutine(SquashTimer(duration)); + } + + public void SetToStretch() + { + if (useRealative) + { + targetSize = new Vector3(originalSize.x * stretchSize.x, originalSize.y * stretchSize.y, originalSize.z * stretchSize.z); + } + else + { + targetSize = stretchSize; + } + + if (squashMode == SquashMode.linear || squashMode == SquashMode.addition) + { + timeElapsed = 0; + startSize = transform.localScale; + } + } + + //returns to original size once it is done + public void SetToStretch(float duration) + { + StartCoroutine(StretchTimer(duration)); + } + + public void customSquish(Vector3 newSize, bool useRealitive = false) + { + if (useRealitive) + { + targetSize = new Vector3(originalSize.x * newSize.x, originalSize.y * newSize.y, originalSize.z * newSize.z); + } + else + { + //Debug.Log("set target size " + targetSize); + targetSize = newSize; + } + + if (squashMode == SquashMode.linear || squashMode == SquashMode.addition) + { + timeElapsed = 0; + startSize = transform.localScale; + } + + } + + //returns to original size once it is done + public void customSquish(Vector3 newSize, float duration, bool useRealitive = false) + { + StartCoroutine(SquishTimer(newSize, duration, useRealitive)); + } + + //resets back to the original size + public void ResetScale() + { + targetSize = originalSize; + } + + //couroutine used + IEnumerator SquashTimer(float duration) + { + SetToSquash(); + yield return new WaitForSeconds(duration); + ResetScale(); + } + IEnumerator StretchTimer(float duration) + { + SetToStretch(); + yield return new WaitForSeconds(duration); + ResetScale(); + } + IEnumerator SquishTimer(Vector3 newSize, float duration, bool useRealitive) + { + + customSquish(newSize, useRealitive); + yield return new WaitForSeconds(duration); + ResetScale(); + } + + } +} \ No newline at end of file diff --git a/Assets/Scripts/LemonGenericLib/Visual Effects/SquashAndStretch.cs.meta b/Assets/Scripts/LemonGenericLib/Visual Effects/SquashAndStretch.cs.meta new file mode 100644 index 0000000..a5de35b --- /dev/null +++ b/Assets/Scripts/LemonGenericLib/Visual Effects/SquashAndStretch.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c6f09ae9992d5484ba1b730e07b37a5b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/LemonGenericLib/Visual Effects/SquashTimer.cs b/Assets/Scripts/LemonGenericLib/Visual Effects/SquashTimer.cs new file mode 100644 index 0000000..f440a4c --- /dev/null +++ b/Assets/Scripts/LemonGenericLib/Visual Effects/SquashTimer.cs @@ -0,0 +1,60 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using Lemon.GenericLib.Generics; + +namespace Lemon.GenericLib.VFX +{ + public class SquashTimer : MonoBehaviour + { + + [SerializeField] float interval = 1.5f; + [SerializeField] SquashAndStretch sns; + public bool interupt = false; + + TickCounter tick = new TickCounter(); + + private bool isSquash = false; + + + + // Start is called before the first frame update + void Start() + { + tick.addAction(SquashingCycle); + } + + // Update is called once per frame + void Update() + { + tick.AdvanceTick(); + } + + void SquashingCycle() + { + if (isSquash) + { + if (!interupt) sns.SetToSquash(); + isSquash = false; + } + else + { + if (!interupt) sns.SetToStretch(); + isSquash = true; + } + } + + + public void InteruptTimer(float duration) + { + StartCoroutine(InteruptTimerCooutine(duration)); + } + + IEnumerator InteruptTimerCooutine(float duration) + { + interupt = true; + yield return new WaitForSeconds(duration); + interupt = false; + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/LemonGenericLib/Visual Effects/SquashTimer.cs.meta b/Assets/Scripts/LemonGenericLib/Visual Effects/SquashTimer.cs.meta new file mode 100644 index 0000000..affc610 --- /dev/null +++ b/Assets/Scripts/LemonGenericLib/Visual Effects/SquashTimer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 116b225e4135df94088980a52d42678f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/LemonGenericLib/Visual Effects/VFX_Manager.cs b/Assets/Scripts/LemonGenericLib/Visual Effects/VFX_Manager.cs new file mode 100644 index 0000000..a39b1b4 --- /dev/null +++ b/Assets/Scripts/LemonGenericLib/Visual Effects/VFX_Manager.cs @@ -0,0 +1,69 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using System; + +//namespace Lemon.GenericLib.VFX +//{ + public class VFX_Manager : MonoBehaviour + { + public static VFX_Manager insatnceVFXM; + + private void Awake() + { + if (insatnceVFXM == null) + { + insatnceVFXM = this; + } + + if (insatnceVFXM != this) + { + Destroy(gameObject); + } + + } + + + [SerializeField] vfxData[] allVFXData; + private Dictionary vfxDictionary; + + [Serializable] + struct vfxData + { + public string vfxName; + public GameObject vfxObject; + public bool shouldKill; + public float lifeTime; + } + + private void Start() + { + vfxDictionary = new Dictionary(); + + foreach (var item in allVFXData) + { + vfxDictionary.Add(item.vfxName, item); + } + } + + + public GameObject spawnVFX(string vfxname, Vector3 position) + { + if (vfxDictionary.ContainsKey(vfxname)) + { + GameObject newVFX = Instantiate(vfxDictionary[vfxname].vfxObject, position, Quaternion.identity); + if (vfxDictionary[vfxname].shouldKill) + { + Destroy(newVFX, vfxDictionary[vfxname].lifeTime); + } + return newVFX; + } + else + { + Debug.LogError($"vfx with name {vfxname} does not exist.\nPlease check if the spelling is correct."); + return null; + } + } + + } +//} \ No newline at end of file diff --git a/Assets/Scripts/LemonGenericLib/Visual Effects/VFX_Manager.cs.meta b/Assets/Scripts/LemonGenericLib/Visual Effects/VFX_Manager.cs.meta new file mode 100644 index 0000000..367ac03 --- /dev/null +++ b/Assets/Scripts/LemonGenericLib/Visual Effects/VFX_Manager.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2a8703975ea06f84e94a7026a3dd532e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/MainMenuScript.cs b/Assets/Scripts/MainMenuScript.cs new file mode 100644 index 0000000..3972f75 --- /dev/null +++ b/Assets/Scripts/MainMenuScript.cs @@ -0,0 +1,38 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using Lemon.GenericLib.SceneManagement; + +public class MainMenuScript : MonoBehaviour +{ + + public static MainMenuScript Instance; + + private void Awake() + { + if (Instance == null) + { + Instance = this; + } + + if (Instance != this) + { + Destroy(gameObject); + } + } + + //[Header("Runtime")] + //[Space] + [Header("Refereces")] + [SerializeField] private string mainMenuTrack; + + private void Start() { + AudioManager2D.Instance.Play(mainMenuTrack); + } + + public void HandlePlayButton() + { + SceneTransition.Instance.TransitionNextScene(); + } + +} diff --git a/Assets/Scripts/MainMenuScript.cs.meta b/Assets/Scripts/MainMenuScript.cs.meta new file mode 100644 index 0000000..61f94b8 --- /dev/null +++ b/Assets/Scripts/MainMenuScript.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f160c48854b89c54a98d6f6badfcd3a2 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ScriptableObjectScripts.meta b/Assets/Scripts/ScriptableObjectScripts.meta new file mode 100644 index 0000000..d95b53f --- /dev/null +++ b/Assets/Scripts/ScriptableObjectScripts.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e8e3cbd1de7025044a7a92113d6e88f0 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/UiScripts.meta b/Assets/Scripts/UiScripts.meta new file mode 100644 index 0000000..33e0776 --- /dev/null +++ b/Assets/Scripts/UiScripts.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: bf45ed03d77ae9144849c5d0c914a13d +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro.meta b/Assets/TextMesh Pro.meta new file mode 100644 index 0000000..f9da8b5 --- /dev/null +++ b/Assets/TextMesh Pro.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f54d1bd14bd3ca042bd867b519fee8cc +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Documentation.meta b/Assets/TextMesh Pro/Documentation.meta new file mode 100644 index 0000000..afa527a --- /dev/null +++ b/Assets/TextMesh Pro/Documentation.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8e7e8f5a82a3a134e91c54efd2274ea9 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Documentation/TextMesh Pro User Guide 2016.pdf b/Assets/TextMesh Pro/Documentation/TextMesh Pro User Guide 2016.pdf new file mode 100644 index 0000000..c2ea2d2 Binary files /dev/null and b/Assets/TextMesh Pro/Documentation/TextMesh Pro User Guide 2016.pdf differ diff --git a/Assets/TextMesh Pro/Documentation/TextMesh Pro User Guide 2016.pdf.meta b/Assets/TextMesh Pro/Documentation/TextMesh Pro User Guide 2016.pdf.meta new file mode 100644 index 0000000..e4afeef --- /dev/null +++ b/Assets/TextMesh Pro/Documentation/TextMesh Pro User Guide 2016.pdf.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 1b8d251f9af63b746bf2f7ffe00ebb9b +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Fonts.meta b/Assets/TextMesh Pro/Fonts.meta new file mode 100644 index 0000000..f0c2972 --- /dev/null +++ b/Assets/TextMesh Pro/Fonts.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6ab70aee4d56447429c680537fbf93ed +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Fonts/LiberationSans - OFL.txt b/Assets/TextMesh Pro/Fonts/LiberationSans - OFL.txt new file mode 100644 index 0000000..f2473f9 --- /dev/null +++ b/Assets/TextMesh Pro/Fonts/LiberationSans - OFL.txt @@ -0,0 +1,46 @@ +Digitized data copyright (c) 2010 Google Corporation + with Reserved Font Arimo, Tinos and Cousine. +Copyright (c) 2012 Red Hat, Inc. + with Reserved Font Name Liberation. + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide development of collaborative font projects, to support the font creation efforts of academic and linguistic communities, and to provide a free and open framework in which fonts may be shared and improved in partnership with others. + +The OFL allows the licensed fonts to be used, studied, modified and redistributed freely as long as they are not sold by themselves. The fonts, including any derivative works, can be bundled, embedded, redistributed and/or sold with any software provided that any reserved names are not used by derivative works. The fonts and derivatives, however, cannot be released under any other type of license. The requirement for fonts to remain under this license does not apply to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright Holder(s) under this license and clearly marked as such. This may include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the copyright statement(s). + +"Original Version" refers to the collection of Font Software components as distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, or substituting -- in part or in whole -- any of the components of the Original Version, by changing formats or by porting the Font Software to a new environment. + +"Author" refers to any designer, engineer, programmer, technical writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining a copy of the Font Software, to use, study, copy, merge, embed, modify, redistribute, and sell modified and unmodified copies of the Font Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, redistributed and/or sold with any software, provided that each copy contains the above copyright notice and this license. These can be included either as stand-alone text files, human-readable headers or in the appropriate machine-readable metadata fields within text or binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font Name(s) unless explicit written permission is granted by the corresponding Copyright Holder. This restriction only applies to the primary font name as presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font Software shall not be used to promote, endorse or advertise any Modified Version, except to acknowledge the contribution(s) of the Copyright Holder(s) and the Author(s) or with their explicit written permission. + +5) The Font Software, modified or unmodified, in part or in whole, must be distributed entirely under this license, and must not be distributed under any other license. The requirement for fonts to remain under this license does not apply to any document created using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. \ No newline at end of file diff --git a/Assets/TextMesh Pro/Fonts/LiberationSans - OFL.txt.meta b/Assets/TextMesh Pro/Fonts/LiberationSans - OFL.txt.meta new file mode 100644 index 0000000..fa60cea --- /dev/null +++ b/Assets/TextMesh Pro/Fonts/LiberationSans - OFL.txt.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6e59c59b81ab47f9b6ec5781fa725d2c +timeCreated: 1484171296 +licenseType: Pro +TextScriptImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Fonts/LiberationSans.ttf b/Assets/TextMesh Pro/Fonts/LiberationSans.ttf new file mode 100644 index 0000000..626dd93 Binary files /dev/null and b/Assets/TextMesh Pro/Fonts/LiberationSans.ttf differ diff --git a/Assets/TextMesh Pro/Fonts/LiberationSans.ttf.meta b/Assets/TextMesh Pro/Fonts/LiberationSans.ttf.meta new file mode 100644 index 0000000..f2fc814 --- /dev/null +++ b/Assets/TextMesh Pro/Fonts/LiberationSans.ttf.meta @@ -0,0 +1,19 @@ +fileFormatVersion: 2 +guid: e3265ab4bf004d28a9537516768c1c75 +timeCreated: 1484171297 +licenseType: Pro +TrueTypeFontImporter: + serializedVersion: 2 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 1 + characterPadding: 0 + includeFontData: 1 + use2xBehaviour: 0 + fontNames: [] + fallbackFontReferences: [] + customCharacters: + fontRenderingMode: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Resources.meta b/Assets/TextMesh Pro/Resources.meta new file mode 100644 index 0000000..cfc142f --- /dev/null +++ b/Assets/TextMesh Pro/Resources.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 243e06394e614e5d99fab26083b707fa +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Resources/Fonts & Materials.meta b/Assets/TextMesh Pro/Resources/Fonts & Materials.meta new file mode 100644 index 0000000..8a01112 --- /dev/null +++ b/Assets/TextMesh Pro/Resources/Fonts & Materials.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 731f1baa9d144a9897cb1d341c2092b8 +folderAsset: yes +timeCreated: 1442040525 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF - Drop Shadow.mat b/Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF - Drop Shadow.mat new file mode 100644 index 0000000..5bc142c --- /dev/null +++ b/Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF - Drop Shadow.mat @@ -0,0 +1,106 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: LiberationSans SDF - Drop Shadow + m_Shader: {fileID: 4800000, guid: fe393ace9b354375a9cb14cdbbc28be4, type: 3} + m_ShaderKeywords: OUTLINE_ON UNDERLAY_ON + m_LightmapFlags: 5 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _Cube: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _FaceTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 28684132378477856, guid: 8f586378b4e144a9851e7b34d9b748ee, + type: 2} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OutlineTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _Ambient: 0.5 + - _Bevel: 0.5 + - _BevelClamp: 0 + - _BevelOffset: 0 + - _BevelRoundness: 0 + - _BevelWidth: 0 + - _BumpFace: 0 + - _BumpOutline: 0 + - _ColorMask: 15 + - _Diffuse: 0.5 + - _DiffusePower: 1 + - _FaceDilate: 0.1 + - _FaceUVSpeedX: 0 + - _FaceUVSpeedY: 0 + - _GlowInner: 0.05 + - _GlowOffset: 0 + - _GlowOuter: 0.05 + - _GlowPower: 0.75 + - _GradientScale: 10 + - _LightAngle: 3.1416 + - _MaskSoftnessX: 0 + - _MaskSoftnessY: 0 + - _OutlineSoftness: 0 + - _OutlineUVSpeedX: 0 + - _OutlineUVSpeedY: 0 + - _OutlineWidth: 0.1 + - _PerspectiveFilter: 0.875 + - _Reflectivity: 10 + - _ScaleRatioA: 0.9 + - _ScaleRatioB: 0.73125 + - _ScaleRatioC: 0.64125 + - _ScaleX: 1 + - _ScaleY: 1 + - _ShaderFlags: 0 + - _Sharpness: 0 + - _SpecularPower: 2 + - _Stencil: 0 + - _StencilComp: 8 + - _StencilOp: 0 + - _StencilReadMask: 255 + - _StencilWriteMask: 255 + - _TextureHeight: 1024 + - _TextureWidth: 1024 + - _UnderlayDilate: 0 + - _UnderlayOffsetX: 0.5 + - _UnderlayOffsetY: -0.5 + - _UnderlaySoftness: 0.05 + - _VertexOffsetX: 0 + - _VertexOffsetY: 0 + - _WeightBold: 0.75 + - _WeightNormal: 0 + m_Colors: + - _ClipRect: {r: -32767, g: -32767, b: 32767, a: 32767} + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EnvMatrixRotation: {r: 0, g: 0, b: 0, a: 0} + - _FaceColor: {r: 1, g: 1, b: 1, a: 1} + - _GlowColor: {r: 0, g: 1, b: 0, a: 0.5} + - _MaskCoord: {r: 0, g: 0, b: 32767, a: 32767} + - _OutlineColor: {r: 0, g: 0, b: 0, a: 1} + - _ReflectFaceColor: {r: 0, g: 0, b: 0, a: 1} + - _ReflectOutlineColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecularColor: {r: 1, g: 1, b: 1, a: 1} + - _UnderlayColor: {r: 0, g: 0, b: 0, a: 0.5} diff --git a/Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF - Drop Shadow.mat.meta b/Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF - Drop Shadow.mat.meta new file mode 100644 index 0000000..fbd2cdb --- /dev/null +++ b/Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF - Drop Shadow.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e73a58f6e2794ae7b1b7e50b7fb811b0 +timeCreated: 1484172806 +licenseType: Pro +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF - Fallback.asset b/Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF - Fallback.asset new file mode 100644 index 0000000..e907cc7 --- /dev/null +++ b/Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF - Fallback.asset @@ -0,0 +1,343 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2180264 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: LiberationSans SDF Material + m_Shader: {fileID: 4800000, guid: fe393ace9b354375a9cb14cdbbc28be4, type: 3} + m_ShaderKeywords: + m_LightmapFlags: 1 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _Cube: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _FaceTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 28268798066460806} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OutlineTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _Ambient: 0.5 + - _Bevel: 0.5 + - _BevelClamp: 0 + - _BevelOffset: 0 + - _BevelRoundness: 0 + - _BevelWidth: 0 + - _BumpFace: 0 + - _BumpOutline: 0 + - _BumpScale: 1 + - _ColorMask: 15 + - _CullMode: 0 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _Diffuse: 0.5 + - _DstBlend: 0 + - _FaceDilate: 0 + - _FaceUVSpeedX: 0 + - _FaceUVSpeedY: 0 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossyReflections: 1 + - _GlowInner: 0.05 + - _GlowOffset: 0 + - _GlowOuter: 0.05 + - _GlowPower: 0.75 + - _GradientScale: 10 + - _LightAngle: 3.1416 + - _MaskSoftnessX: 0 + - _MaskSoftnessY: 0 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _OutlineSoftness: 0 + - _OutlineUVSpeedX: 0 + - _OutlineUVSpeedY: 0 + - _OutlineWidth: 0 + - _Parallax: 0.02 + - _PerspectiveFilter: 0.875 + - _Reflectivity: 10 + - _ScaleRatioA: 0.90909094 + - _ScaleRatioB: 0.73125 + - _ScaleRatioC: 0.7386364 + - _ScaleX: 1 + - _ScaleY: 1 + - _ShaderFlags: 0 + - _Sharpness: 0 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SpecularPower: 2 + - _SrcBlend: 1 + - _Stencil: 0 + - _StencilComp: 8 + - _StencilOp: 0 + - _StencilReadMask: 255 + - _StencilWriteMask: 255 + - _TextureHeight: 512 + - _TextureWidth: 512 + - _UVSec: 0 + - _UnderlayDilate: 0 + - _UnderlayOffsetX: 0 + - _UnderlayOffsetY: 0 + - _UnderlaySoftness: 0 + - _VertexOffsetX: 0 + - _VertexOffsetY: 0 + - _WeightBold: 0.75 + - _WeightNormal: 0 + - _ZWrite: 1 + m_Colors: + - _ClipRect: {r: -32767, g: -32767, b: 32767, a: 32767} + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _EnvMatrixRotation: {r: 0, g: 0, b: 0, a: 0} + - _FaceColor: {r: 1, g: 1, b: 1, a: 1} + - _GlowColor: {r: 0, g: 1, b: 0, a: 0.5} + - _MaskCoord: {r: 0, g: 0, b: 32767, a: 32767} + - _OutlineColor: {r: 0, g: 0, b: 0, a: 1} + - _ReflectFaceColor: {r: 0, g: 0, b: 0, a: 1} + - _ReflectOutlineColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecularColor: {r: 1, g: 1, b: 1, a: 1} + - _UnderlayColor: {r: 0, g: 0, b: 0, a: 0.5} +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 71c1514a6bd24e1e882cebbe1904ce04, type: 3} + m_Name: LiberationSans SDF - Fallback + m_EditorClassIdentifier: + hashCode: -1699145518 + material: {fileID: 2180264} + materialHashCode: 462855346 + m_Version: 1.1.0 + m_SourceFontFileGUID: e3265ab4bf004d28a9537516768c1c75 + m_SourceFontFile_EditorRef: {fileID: 12800000, guid: e3265ab4bf004d28a9537516768c1c75, + type: 3} + m_SourceFontFile: {fileID: 12800000, guid: e3265ab4bf004d28a9537516768c1c75, type: 3} + m_AtlasPopulationMode: 1 + m_FaceInfo: + m_FamilyName: Liberation Sans + m_StyleName: Regular + m_PointSize: 86 + m_Scale: 1 + m_LineHeight: 98.8916 + m_AscentLine: 77.853516 + m_CapLine: 59 + m_MeanLine: 45 + m_Baseline: 0 + m_DescentLine: -18.22461 + m_SuperscriptOffset: 77.853516 + m_SuperscriptSize: 0.5 + m_SubscriptOffset: -18.22461 + m_SubscriptSize: 0.5 + m_UnderlineOffset: -12.261719 + m_UnderlineThickness: 6.298828 + m_StrikethroughOffset: 18 + m_StrikethroughThickness: 6.298828 + m_TabWidth: 24 + m_GlyphTable: [] + m_CharacterTable: [] + m_AtlasTextures: + - {fileID: 28268798066460806} + m_AtlasTextureIndex: 0 + m_IsMultiAtlasTexturesEnabled: 0 + m_ClearDynamicDataOnBuild: 1 + m_UsedGlyphRects: [] + m_FreeGlyphRects: + - m_X: 0 + m_Y: 0 + m_Width: 511 + m_Height: 511 + m_fontInfo: + Name: Liberation Sans + PointSize: 86 + Scale: 1 + CharacterCount: 250 + LineHeight: 98.90625 + Baseline: 0 + Ascender: 77.84375 + CapHeight: 59.1875 + Descender: -18.21875 + CenterLine: 0 + SuperscriptOffset: 77.84375 + SubscriptOffset: -12.261719 + SubSize: 0.5 + Underline: -12.261719 + UnderlineThickness: 6.298828 + strikethrough: 23.675 + strikethroughThickness: 0 + TabWidth: 239.0625 + Padding: 9 + AtlasWidth: 1024 + AtlasHeight: 1024 + atlas: {fileID: 0} + m_AtlasWidth: 512 + m_AtlasHeight: 512 + m_AtlasPadding: 9 + m_AtlasRenderMode: 4169 + m_glyphInfoList: [] + m_KerningTable: + kerningPairs: [] + m_FontFeatureTable: + m_GlyphPairAdjustmentRecords: [] + fallbackFontAssets: [] + m_FallbackFontAssetTable: [] + m_CreationSettings: + sourceFontFileName: + sourceFontFileGUID: e3265ab4bf004d28a9537516768c1c75 + pointSizeSamplingMode: 0 + pointSize: 86 + padding: 9 + packingMode: 4 + atlasWidth: 512 + atlasHeight: 512 + characterSetSelectionMode: 1 + characterSequence: 32 - 126, 160 - 255, 8192 - 8303, 8364, 8482, 9633 + referencedFontAssetGUID: 8f586378b4e144a9851e7b34d9b748ee + referencedTextAssetGUID: + fontStyle: 0 + fontStyleModifier: 0 + renderMode: 4169 + includeFontFeatures: 1 + m_FontWeightTable: + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + fontWeights: + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + normalStyle: 0 + normalSpacingOffset: 0 + boldStyle: 0.75 + boldSpacing: 7 + italicStyle: 35 + tabSize: 10 +--- !u!28 &28268798066460806 +Texture2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: LiberationSans SDF Atlas + m_ImageContentsHash: + serializedVersion: 2 + Hash: 00000000000000000000000000000000 + m_ForcedFallbackFormat: 4 + m_DownscaleFallback: 0 + serializedVersion: 2 + m_Width: 0 + m_Height: 0 + m_CompleteImageSize: 0 + m_TextureFormat: 1 + m_MipCount: 1 + m_IsReadable: 1 + m_StreamingMipmaps: 0 + m_StreamingMipmapsPriority: 0 + m_AlphaIsTransparency: 0 + m_ImageCount: 1 + m_TextureDimension: 2 + m_TextureSettings: + serializedVersion: 2 + m_FilterMode: 1 + m_Aniso: 1 + m_MipBias: 0 + m_WrapU: 0 + m_WrapV: 0 + m_WrapW: 0 + m_LightmapFormat: 0 + m_ColorSpace: 0 + image data: 0 + _typelessdata: + m_StreamData: + offset: 0 + size: 0 + path: diff --git a/Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF - Fallback.asset.meta b/Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF - Fallback.asset.meta new file mode 100644 index 0000000..42dd6ac --- /dev/null +++ b/Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF - Fallback.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2e498d1c8094910479dc3e1b768306a4 +timeCreated: 1484171803 +licenseType: Pro +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF - Outline.mat b/Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF - Outline.mat new file mode 100644 index 0000000..cca8ce8 --- /dev/null +++ b/Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF - Outline.mat @@ -0,0 +1,104 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: LiberationSans SDF - Outline + m_Shader: {fileID: 4800000, guid: fe393ace9b354375a9cb14cdbbc28be4, type: 3} + m_ShaderKeywords: OUTLINE_ON + m_LightmapFlags: 5 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _Cube: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _FaceTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 28684132378477856, guid: 8f586378b4e144a9851e7b34d9b748ee, + type: 2} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OutlineTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _Ambient: 0.5 + - _Bevel: 0.5 + - _BevelClamp: 0 + - _BevelOffset: 0 + - _BevelRoundness: 0 + - _BevelWidth: 0 + - _BumpFace: 0 + - _BumpOutline: 0 + - _ColorMask: 15 + - _Diffuse: 0.5 + - _FaceDilate: 0.1 + - _FaceUVSpeedX: 0 + - _FaceUVSpeedY: 0 + - _GlowInner: 0.05 + - _GlowOffset: 0 + - _GlowOuter: 0.05 + - _GlowPower: 0.75 + - _GradientScale: 10 + - _LightAngle: 3.1416 + - _MaskSoftnessX: 0 + - _MaskSoftnessY: 0 + - _OutlineSoftness: 0 + - _OutlineUVSpeedX: 0 + - _OutlineUVSpeedY: 0 + - _OutlineWidth: 0.1 + - _PerspectiveFilter: 0.875 + - _Reflectivity: 10 + - _ScaleRatioA: 0.9 + - _ScaleRatioB: 0.73125 + - _ScaleRatioC: 0.64125 + - _ScaleX: 1 + - _ScaleY: 1 + - _ShaderFlags: 0 + - _Sharpness: 0 + - _SpecularPower: 2 + - _Stencil: 0 + - _StencilComp: 8 + - _StencilOp: 0 + - _StencilReadMask: 255 + - _StencilWriteMask: 255 + - _TextureHeight: 1024 + - _TextureWidth: 1024 + - _UnderlayDilate: 0 + - _UnderlayOffsetX: 0 + - _UnderlayOffsetY: 0 + - _UnderlaySoftness: 0 + - _VertexOffsetX: 0 + - _VertexOffsetY: 0 + - _WeightBold: 0.75 + - _WeightNormal: 0 + m_Colors: + - _ClipRect: {r: -32767, g: -32767, b: 32767, a: 32767} + - _EnvMatrixRotation: {r: 0, g: 0, b: 0, a: 0} + - _FaceColor: {r: 1, g: 1, b: 1, a: 1} + - _GlowColor: {r: 0, g: 1, b: 0, a: 0.5} + - _MaskCoord: {r: 0, g: 0, b: 32767, a: 32767} + - _OutlineColor: {r: 0, g: 0, b: 0, a: 1} + - _ReflectFaceColor: {r: 0, g: 0, b: 0, a: 1} + - _ReflectOutlineColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecularColor: {r: 1, g: 1, b: 1, a: 1} + - _UnderlayColor: {r: 0, g: 0, b: 0, a: 0.5} diff --git a/Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF - Outline.mat.meta b/Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF - Outline.mat.meta new file mode 100644 index 0000000..88d6334 --- /dev/null +++ b/Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF - Outline.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 79459efec17a4d00a321bdcc27bbc385 +timeCreated: 1484172856 +licenseType: Pro +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF.asset b/Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF.asset new file mode 100644 index 0000000..c7b0771 --- /dev/null +++ b/Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF.asset @@ -0,0 +1,7821 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2180264 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: LiberationSans SDF Material + m_Shader: {fileID: 4800000, guid: fe393ace9b354375a9cb14cdbbc28be4, type: 3} + m_ShaderKeywords: + m_LightmapFlags: 1 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _MainTex: + m_Texture: {fileID: 28684132378477856} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _ColorMask: 15 + - _FaceDilate: 0 + - _GradientScale: 10 + - _MaskSoftnessX: 0 + - _MaskSoftnessY: 0 + - _OutlineSoftness: 0 + - _OutlineWidth: 0 + - _PerspectiveFilter: 0.875 + - _ScaleRatioA: 0.9 + - _ScaleRatioB: 1 + - _ScaleRatioC: 0.73125 + - _ScaleX: 1 + - _ScaleY: 1 + - _ShaderFlags: 0 + - _Sharpness: 0 + - _Stencil: 0 + - _StencilComp: 8 + - _StencilOp: 0 + - _StencilReadMask: 255 + - _StencilWriteMask: 255 + - _TextureHeight: 1024 + - _TextureWidth: 1024 + - _UnderlayDilate: 0 + - _UnderlayOffsetX: 0 + - _UnderlayOffsetY: 0 + - _UnderlaySoftness: 0 + - _VertexOffsetX: 0 + - _VertexOffsetY: 0 + - _WeightBold: 0.75 + - _WeightNormal: 0 + m_Colors: + - _ClipRect: {r: -32767, g: -32767, b: 32767, a: 32767} + - _FaceColor: {r: 1, g: 1, b: 1, a: 1} + - _OutlineColor: {r: 0, g: 0, b: 0, a: 1} + - _UnderlayColor: {r: 0, g: 0, b: 0, a: 0.5} +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 71c1514a6bd24e1e882cebbe1904ce04, type: 3} + m_Name: LiberationSans SDF + m_EditorClassIdentifier: + hashCode: 231247347 + material: {fileID: 2180264} + materialHashCode: -1183942120 + m_Version: 1.1.0 + m_SourceFontFileGUID: e3265ab4bf004d28a9537516768c1c75 + m_SourceFontFile_EditorRef: {fileID: 12800000, guid: e3265ab4bf004d28a9537516768c1c75, + type: 3} + m_SourceFontFile: {fileID: 0} + m_AtlasPopulationMode: 0 + m_FaceInfo: + m_FamilyName: Liberation Sans + m_StyleName: Regular + m_PointSize: 86 + m_Scale: 1 + m_LineHeight: 98.8916 + m_AscentLine: 77.853516 + m_CapLine: 59 + m_MeanLine: 45 + m_Baseline: 0 + m_DescentLine: -18.22461 + m_SuperscriptOffset: 77.853516 + m_SuperscriptSize: 0.5 + m_SubscriptOffset: -18.22461 + m_SubscriptSize: 0.5 + m_UnderlineOffset: -12.261719 + m_UnderlineThickness: 6.298828 + m_StrikethroughOffset: 18 + m_StrikethroughThickness: 6.298828 + m_TabWidth: 24 + m_GlyphTable: + - m_Index: 3 + m_Metrics: + m_Width: 0 + m_Height: 0 + m_HorizontalBearingX: 0 + m_HorizontalBearingY: 0 + m_HorizontalAdvance: 24 + m_GlyphRect: + m_X: 0 + m_Y: 0 + m_Width: 0 + m_Height: 0 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 4 + m_Metrics: + m_Width: 9 + m_Height: 59 + m_HorizontalBearingX: 9 + m_HorizontalBearingY: 59 + m_HorizontalAdvance: 28 + m_GlyphRect: + m_X: 555 + m_Y: 816 + m_Width: 9 + m_Height: 59 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 5 + m_Metrics: + m_Width: 25 + m_Height: 19 + m_HorizontalBearingX: 3 + m_HorizontalBearingY: 59 + m_HorizontalAdvance: 31 + m_GlyphRect: + m_X: 775 + m_Y: 922 + m_Width: 25 + m_Height: 19 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 6 + m_Metrics: + m_Width: 48 + m_Height: 59 + m_HorizontalBearingX: 0 + m_HorizontalBearingY: 59 + m_HorizontalAdvance: 48 + m_GlyphRect: + m_X: 471 + m_Y: 170 + m_Width: 48 + m_Height: 59 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 7 + m_Metrics: + m_Width: 47 + m_Height: 70 + m_HorizontalBearingX: 0 + m_HorizontalBearingY: 64 + m_HorizontalAdvance: 48 + m_GlyphRect: + m_X: 161 + m_Y: 212 + m_Width: 47 + m_Height: 70 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 8 + m_Metrics: + m_Width: 70 + m_Height: 61 + m_HorizontalBearingX: 3 + m_HorizontalBearingY: 60 + m_HorizontalAdvance: 76 + m_GlyphRect: + m_X: 409 + m_Y: 10 + m_Width: 70 + m_Height: 61 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 9 + m_Metrics: + m_Width: 53 + m_Height: 61 + m_HorizontalBearingX: 3 + m_HorizontalBearingY: 60 + m_HorizontalAdvance: 57 + m_GlyphRect: + m_X: 437 + m_Y: 90 + m_Width: 53 + m_Height: 61 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 10 + m_Metrics: + m_Width: 8 + m_Height: 19 + m_HorizontalBearingX: 4 + m_HorizontalBearingY: 59 + m_HorizontalAdvance: 16 + m_GlyphRect: + m_X: 975 + m_Y: 961 + m_Width: 8 + m_Height: 19 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 11 + m_Metrics: + m_Width: 24 + m_Height: 80 + m_HorizontalBearingX: 5 + m_HorizontalBearingY: 62 + m_HorizontalAdvance: 29 + m_GlyphRect: + m_X: 146 + m_Y: 673 + m_Width: 24 + m_Height: 80 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 12 + m_Metrics: + m_Width: 24 + m_Height: 80 + m_HorizontalBearingX: 0 + m_HorizontalBearingY: 62 + m_HorizontalAdvance: 29 + m_GlyphRect: + m_X: 189 + m_Y: 671 + m_Width: 24 + m_Height: 80 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 13 + m_Metrics: + m_Width: 31 + m_Height: 30 + m_HorizontalBearingX: 1 + m_HorizontalBearingY: 59 + m_HorizontalAdvance: 33 + m_GlyphRect: + m_X: 495 + m_Y: 984 + m_Width: 31 + m_Height: 30 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 14 + m_Metrics: + m_Width: 42 + m_Height: 43 + m_HorizontalBearingX: 4 + m_HorizontalBearingY: 50 + m_HorizontalAdvance: 50 + m_GlyphRect: + m_X: 972 + m_Y: 330 + m_Width: 42 + m_Height: 43 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 15 + m_Metrics: + m_Width: 10 + m_Height: 20 + m_HorizontalBearingX: 7 + m_HorizontalBearingY: 9 + m_HorizontalAdvance: 24 + m_GlyphRect: + m_X: 583 + m_Y: 992 + m_Width: 10 + m_Height: 20 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 16 + m_Metrics: + m_Width: 23 + m_Height: 7 + m_HorizontalBearingX: 3 + m_HorizontalBearingY: 26 + m_HorizontalAdvance: 29 + m_GlyphRect: + m_X: 399 + m_Y: 925 + m_Width: 23 + m_Height: 7 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 17 + m_Metrics: + m_Width: 10 + m_Height: 9 + m_HorizontalBearingX: 7 + m_HorizontalBearingY: 9 + m_HorizontalAdvance: 24 + m_GlyphRect: + m_X: 657 + m_Y: 958 + m_Width: 10 + m_Height: 9 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 18 + m_Metrics: + m_Width: 24 + m_Height: 63 + m_HorizontalBearingX: 0 + m_HorizontalBearingY: 62 + m_HorizontalAdvance: 24 + m_GlyphRect: + m_X: 695 + m_Y: 409 + m_Width: 24 + m_Height: 63 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 19 + m_Metrics: + m_Width: 42 + m_Height: 61 + m_HorizontalBearingX: 3 + m_HorizontalBearingY: 60 + m_HorizontalAdvance: 48 + m_GlyphRect: + m_X: 532 + m_Y: 249 + m_Width: 42 + m_Height: 61 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 20 + m_Metrics: + m_Width: 38 + m_Height: 59 + m_HorizontalBearingX: 6 + m_HorizontalBearingY: 59 + m_HorizontalAdvance: 48 + m_GlyphRect: + m_X: 915 + m_Y: 501 + m_Width: 38 + m_Height: 59 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 21 + m_Metrics: + m_Width: 40 + m_Height: 60 + m_HorizontalBearingX: 4 + m_HorizontalBearingY: 60 + m_HorizontalAdvance: 48 + m_GlyphRect: + m_X: 596 + m_Y: 329 + m_Width: 40 + m_Height: 60 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 22 + m_Metrics: + m_Width: 42 + m_Height: 61 + m_HorizontalBearingX: 3 + m_HorizontalBearingY: 60 + m_HorizontalAdvance: 48 + m_GlyphRect: + m_X: 417 + m_Y: 503 + m_Width: 42 + m_Height: 61 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 23 + m_Metrics: + m_Width: 45 + m_Height: 59 + m_HorizontalBearingX: 1 + m_HorizontalBearingY: 59 + m_HorizontalAdvance: 48 + m_GlyphRect: + m_X: 725 + m_Y: 252 + m_Width: 45 + m_Height: 59 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 24 + m_Metrics: + m_Width: 42 + m_Height: 60 + m_HorizontalBearingX: 3 + m_HorizontalBearingY: 59 + m_HorizontalAdvance: 48 + m_GlyphRect: + m_X: 724 + m_Y: 330 + m_Width: 42 + m_Height: 60 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 25 + m_Metrics: + m_Width: 41 + m_Height: 61 + m_HorizontalBearingX: 4 + m_HorizontalBearingY: 60 + m_HorizontalAdvance: 48 + m_GlyphRect: + m_X: 912 + m_Y: 262 + m_Width: 41 + m_Height: 61 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 26 + m_Metrics: + m_Width: 40 + m_Height: 59 + m_HorizontalBearingX: 4 + m_HorizontalBearingY: 59 + m_HorizontalAdvance: 48 + m_GlyphRect: + m_X: 438 + m_Y: 830 + m_Width: 40 + m_Height: 59 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 27 + m_Metrics: + m_Width: 42 + m_Height: 61 + m_HorizontalBearingX: 3 + m_HorizontalBearingY: 60 + m_HorizontalAdvance: 48 + m_GlyphRect: + m_X: 733 + m_Y: 648 + m_Width: 42 + m_Height: 61 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 28 + m_Metrics: + m_Width: 40 + m_Height: 61 + m_HorizontalBearingX: 4 + m_HorizontalBearingY: 60 + m_HorizontalAdvance: 48 + m_GlyphRect: + m_X: 856 + m_Y: 484 + m_Width: 40 + m_Height: 61 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 29 + m_Metrics: + m_Width: 10 + m_Height: 45 + m_HorizontalBearingX: 7 + m_HorizontalBearingY: 45 + m_HorizontalAdvance: 24 + m_GlyphRect: + m_X: 897 + m_Y: 819 + m_Width: 10 + m_Height: 45 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 30 + m_Metrics: + m_Width: 10 + m_Height: 57 + m_HorizontalBearingX: 7 + m_HorizontalBearingY: 45 + m_HorizontalAdvance: 24 + m_GlyphRect: + m_X: 429 + m_Y: 287 + m_Width: 10 + m_Height: 57 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 31 + m_Metrics: + m_Width: 42 + m_Height: 43 + m_HorizontalBearingX: 4 + m_HorizontalBearingY: 50 + m_HorizontalAdvance: 50 + m_GlyphRect: + m_X: 846 + m_Y: 341 + m_Width: 42 + m_Height: 43 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 32 + m_Metrics: + m_Width: 42 + m_Height: 29 + m_HorizontalBearingX: 4 + m_HorizontalBearingY: 42 + m_HorizontalAdvance: 50 + m_GlyphRect: + m_X: 227 + m_Y: 281 + m_Width: 42 + m_Height: 29 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 33 + m_Metrics: + m_Width: 42 + m_Height: 43 + m_HorizontalBearingX: 4 + m_HorizontalBearingY: 50 + m_HorizontalAdvance: 50 + m_GlyphRect: + m_X: 972 + m_Y: 392 + m_Width: 42 + m_Height: 43 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 34 + m_Metrics: + m_Width: 42 + m_Height: 60 + m_HorizontalBearingX: 3 + m_HorizontalBearingY: 60 + m_HorizontalAdvance: 48 + m_GlyphRect: + m_X: 733 + m_Y: 728 + m_Width: 42 + m_Height: 60 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 35 + m_Metrics: + m_Width: 74 + m_Height: 74 + m_HorizontalBearingX: 6 + m_HorizontalBearingY: 62 + m_HorizontalAdvance: 87 + m_GlyphRect: + m_X: 10 + m_Y: 10 + m_Width: 74 + m_Height: 74 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 36 + m_Metrics: + m_Width: 57 + m_Height: 59 + m_HorizontalBearingX: 0 + m_HorizontalBearingY: 59 + m_HorizontalAdvance: 57 + m_GlyphRect: + m_X: 828 + m_Y: 103 + m_Width: 57 + m_Height: 59 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 37 + m_Metrics: + m_Width: 46 + m_Height: 59 + m_HorizontalBearingX: 7 + m_HorizontalBearingY: 59 + m_HorizontalAdvance: 57 + m_GlyphRect: + m_X: 542 + m_Y: 486 + m_Width: 46 + m_Height: 59 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 38 + m_Metrics: + m_Width: 55 + m_Height: 61 + m_HorizontalBearingX: 4 + m_HorizontalBearingY: 60 + m_HorizontalAdvance: 62 + m_GlyphRect: + m_X: 509 + m_Y: 88 + m_Width: 55 + m_Height: 61 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 39 + m_Metrics: + m_Width: 51 + m_Height: 59 + m_HorizontalBearingX: 7 + m_HorizontalBearingY: 59 + m_HorizontalAdvance: 62 + m_GlyphRect: + m_X: 655 + m_Y: 252 + m_Width: 51 + m_Height: 59 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 40 + m_Metrics: + m_Width: 47 + m_Height: 59 + m_HorizontalBearingX: 7 + m_HorizontalBearingY: 59 + m_HorizontalAdvance: 57 + m_GlyphRect: + m_X: 629 + m_Y: 409 + m_Width: 47 + m_Height: 59 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 41 + m_Metrics: + m_Width: 43 + m_Height: 59 + m_HorizontalBearingX: 7 + m_HorizontalBearingY: 59 + m_HorizontalAdvance: 53 + m_GlyphRect: + m_X: 789 + m_Y: 259 + m_Width: 43 + m_Height: 59 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 42 + m_Metrics: + m_Width: 57 + m_Height: 61 + m_HorizontalBearingX: 4 + m_HorizontalBearingY: 60 + m_HorizontalAdvance: 67 + m_GlyphRect: + m_X: 904 + m_Y: 103 + m_Width: 57 + m_Height: 61 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 43 + m_Metrics: + m_Width: 48 + m_Height: 59 + m_HorizontalBearingX: 7 + m_HorizontalBearingY: 59 + m_HorizontalAdvance: 62 + m_GlyphRect: + m_X: 495 + m_Y: 407 + m_Width: 48 + m_Height: 59 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 44 + m_Metrics: + m_Width: 9 + m_Height: 59 + m_HorizontalBearingX: 7 + m_HorizontalBearingY: 59 + m_HorizontalAdvance: 24 + m_GlyphRect: + m_X: 552 + m_Y: 919 + m_Width: 9 + m_Height: 59 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 45 + m_Metrics: + m_Width: 36 + m_Height: 60 + m_HorizontalBearingX: 1 + m_HorizontalBearingY: 59 + m_HorizontalAdvance: 43 + m_GlyphRect: + m_X: 797 + m_Y: 569 + m_Width: 36 + m_Height: 60 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 46 + m_Metrics: + m_Width: 50 + m_Height: 59 + m_HorizontalBearingX: 7 + m_HorizontalBearingY: 59 + m_HorizontalAdvance: 57 + m_GlyphRect: + m_X: 458 + m_Y: 326 + m_Width: 50 + m_Height: 59 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 47 + m_Metrics: + m_Width: 39 + m_Height: 59 + m_HorizontalBearingX: 7 + m_HorizontalBearingY: 59 + m_HorizontalAdvance: 48 + m_GlyphRect: + m_X: 497 + m_Y: 816 + m_Width: 39 + m_Height: 59 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 48 + m_Metrics: + m_Width: 59 + m_Height: 59 + m_HorizontalBearingX: 6 + m_HorizontalBearingY: 59 + m_HorizontalAdvance: 71 + m_GlyphRect: + m_X: 97 + m_Y: 955 + m_Width: 59 + m_Height: 59 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 49 + m_Metrics: + m_Width: 48 + m_Height: 59 + m_HorizontalBearingX: 7 + m_HorizontalBearingY: 59 + m_HorizontalAdvance: 62 + m_GlyphRect: + m_X: 562 + m_Y: 408 + m_Width: 48 + m_Height: 59 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 50 + m_Metrics: + m_Width: 59 + m_Height: 61 + m_HorizontalBearingX: 4 + m_HorizontalBearingY: 60 + m_HorizontalAdvance: 67 + m_GlyphRect: + m_X: 583 + m_Y: 89 + m_Width: 59 + m_Height: 61 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 51 + m_Metrics: + m_Width: 46 + m_Height: 59 + m_HorizontalBearingX: 7 + m_HorizontalBearingY: 59 + m_HorizontalAdvance: 57 + m_GlyphRect: + m_X: 669 + m_Y: 491 + m_Width: 46 + m_Height: 59 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 52 + m_Metrics: + m_Width: 59 + m_Height: 76 + m_HorizontalBearingX: 4 + m_HorizontalBearingY: 60 + m_HorizontalAdvance: 67 + m_GlyphRect: + m_X: 10 + m_Y: 103 + m_Width: 59 + m_Height: 76 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 53 + m_Metrics: + m_Width: 52 + m_Height: 59 + m_HorizontalBearingX: 7 + m_HorizontalBearingY: 59 + m_HorizontalAdvance: 62 + m_GlyphRect: + m_X: 461 + m_Y: 248 + m_Width: 52 + m_Height: 59 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 54 + m_Metrics: + m_Width: 51 + m_Height: 61 + m_HorizontalBearingX: 3 + m_HorizontalBearingY: 60 + m_HorizontalAdvance: 57 + m_GlyphRect: + m_X: 288 + m_Y: 273 + m_Width: 51 + m_Height: 61 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 55 + m_Metrics: + m_Width: 50 + m_Height: 59 + m_HorizontalBearingX: 1 + m_HorizontalBearingY: 59 + m_HorizontalAdvance: 52 + m_GlyphRect: + m_X: 527 + m_Y: 329 + m_Width: 50 + m_Height: 59 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 56 + m_Metrics: + m_Width: 50 + m_Height: 60 + m_HorizontalBearingX: 6 + m_HorizontalBearingY: 59 + m_HorizontalAdvance: 62 + m_GlyphRect: + m_X: 655 + m_Y: 330 + m_Width: 50 + m_Height: 60 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 57 + m_Metrics: + m_Width: 57 + m_Height: 59 + m_HorizontalBearingX: 0 + m_HorizontalBearingY: 59 + m_HorizontalAdvance: 57 + m_GlyphRect: + m_X: 273 + m_Y: 195 + m_Width: 57 + m_Height: 59 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 58 + m_Metrics: + m_Width: 85 + m_Height: 59 + m_HorizontalBearingX: 0 + m_HorizontalBearingY: 59 + m_HorizontalAdvance: 85 + m_GlyphRect: + m_X: 103 + m_Y: 10 + m_Width: 85 + m_Height: 59 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 59 + m_Metrics: + m_Width: 56 + m_Height: 59 + m_HorizontalBearingX: 1 + m_HorizontalBearingY: 59 + m_HorizontalAdvance: 58 + m_GlyphRect: + m_X: 175 + m_Y: 955 + m_Width: 56 + m_Height: 59 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 60 + m_Metrics: + m_Width: 54 + m_Height: 59 + m_HorizontalBearingX: 1 + m_HorizontalBearingY: 59 + m_HorizontalAdvance: 56 + m_GlyphRect: + m_X: 582 + m_Y: 169 + m_Width: 54 + m_Height: 59 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 61 + m_Metrics: + m_Width: 49 + m_Height: 59 + m_HorizontalBearingX: 2 + m_HorizontalBearingY: 59 + m_HorizontalAdvance: 53 + m_GlyphRect: + m_X: 427 + m_Y: 404 + m_Width: 49 + m_Height: 59 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 62 + m_Metrics: + m_Width: 18 + m_Height: 80 + m_HorizontalBearingX: 6 + m_HorizontalBearingY: 62 + m_HorizontalAdvance: 24 + m_GlyphRect: + m_X: 232 + m_Y: 671 + m_Width: 18 + m_Height: 80 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 63 + m_Metrics: + m_Width: 24 + m_Height: 63 + m_HorizontalBearingX: 0 + m_HorizontalBearingY: 62 + m_HorizontalAdvance: 24 + m_GlyphRect: + m_X: 375 + m_Y: 951 + m_Width: 24 + m_Height: 63 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 64 + m_Metrics: + m_Width: 18 + m_Height: 80 + m_HorizontalBearingX: 0 + m_HorizontalBearingY: 62 + m_HorizontalAdvance: 24 + m_GlyphRect: + m_X: 223 + m_Y: 393 + m_Width: 18 + m_Height: 80 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 65 + m_Metrics: + m_Width: 38 + m_Height: 31 + m_HorizontalBearingX: 0 + m_HorizontalBearingY: 59 + m_HorizontalAdvance: 38 + m_GlyphRect: + m_X: 630 + m_Y: 870 + m_Width: 38 + m_Height: 31 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 66 + m_Metrics: + m_Width: 51 + m_Height: 6 + m_HorizontalBearingX: -2 + m_HorizontalBearingY: -12 + m_HorizontalAdvance: 48 + m_GlyphRect: + m_X: 497 + m_Y: 894 + m_Width: 51 + m_Height: 6 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 67 + m_Metrics: + m_Width: 19 + m_Height: 13 + m_HorizontalBearingX: 4 + m_HorizontalBearingY: 63 + m_HorizontalAdvance: 29 + m_GlyphRect: + m_X: 456 + m_Y: 997 + m_Width: 19 + m_Height: 13 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 68 + m_Metrics: + m_Width: 45 + m_Height: 47 + m_HorizontalBearingX: 3 + m_HorizontalBearingY: 46 + m_HorizontalAdvance: 48 + m_GlyphRect: + m_X: 669 + m_Y: 648 + m_Width: 45 + m_Height: 47 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 69 + m_Metrics: + m_Width: 40 + m_Height: 63 + m_HorizontalBearingX: 5 + m_HorizontalBearingY: 62 + m_HorizontalAdvance: 48 + m_GlyphRect: + m_X: 738 + m_Y: 409 + m_Width: 40 + m_Height: 63 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 70 + m_Metrics: + m_Width: 38 + m_Height: 47 + m_HorizontalBearingX: 3 + m_HorizontalBearingY: 46 + m_HorizontalAdvance: 43 + m_GlyphRect: + m_X: 908 + m_Y: 579 + m_Width: 38 + m_Height: 47 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 71 + m_Metrics: + m_Width: 40 + m_Height: 63 + m_HorizontalBearingX: 3 + m_HorizontalBearingY: 62 + m_HorizontalAdvance: 48 + m_GlyphRect: + m_X: 797 + m_Y: 403 + m_Width: 40 + m_Height: 63 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 72 + m_Metrics: + m_Width: 42 + m_Height: 47 + m_HorizontalBearingX: 3 + m_HorizontalBearingY: 46 + m_HorizontalAdvance: 48 + m_GlyphRect: + m_X: 785 + m_Y: 337 + m_Width: 42 + m_Height: 47 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 73 + m_Metrics: + m_Width: 25 + m_Height: 62 + m_HorizontalBearingX: 1 + m_HorizontalBearingY: 62 + m_HorizontalAdvance: 25 + m_GlyphRect: + m_X: 538 + m_Y: 168 + m_Width: 25 + m_Height: 62 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 74 + m_Metrics: + m_Width: 40 + m_Height: 64 + m_HorizontalBearingX: 3 + m_HorizontalBearingY: 46 + m_HorizontalAdvance: 48 + m_GlyphRect: + m_X: 86 + m_Y: 872 + m_Width: 40 + m_Height: 64 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 75 + m_Metrics: + m_Width: 38 + m_Height: 62 + m_HorizontalBearingX: 5 + m_HorizontalBearingY: 62 + m_HorizontalAdvance: 48 + m_GlyphRect: + m_X: 430 + m_Y: 666 + m_Width: 38 + m_Height: 62 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 76 + m_Metrics: + m_Width: 9 + m_Height: 62 + m_HorizontalBearingX: 5 + m_HorizontalBearingY: 62 + m_HorizontalAdvance: 19 + m_GlyphRect: + m_X: 852 + m_Y: 567 + m_Width: 9 + m_Height: 62 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 77 + m_Metrics: + m_Width: 17 + m_Height: 80 + m_HorizontalBearingX: -3 + m_HorizontalBearingY: 62 + m_HorizontalAdvance: 20 + m_GlyphRect: + m_X: 145 + m_Y: 773 + m_Width: 17 + m_Height: 80 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 78 + m_Metrics: + m_Width: 40 + m_Height: 62 + m_HorizontalBearingX: 5 + m_HorizontalBearingY: 62 + m_HorizontalAdvance: 44 + m_GlyphRect: + m_X: 856 + m_Y: 403 + m_Width: 40 + m_Height: 62 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 79 + m_Metrics: + m_Width: 9 + m_Height: 62 + m_HorizontalBearingX: 5 + m_HorizontalBearingY: 62 + m_HorizontalAdvance: 19 + m_GlyphRect: + m_X: 880 + m_Y: 564 + m_Width: 9 + m_Height: 62 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 80 + m_Metrics: + m_Width: 64 + m_Height: 46 + m_HorizontalBearingX: 5 + m_HorizontalBearingY: 46 + m_HorizontalAdvance: 74 + m_GlyphRect: + m_X: 378 + m_Y: 222 + m_Width: 64 + m_Height: 46 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 81 + m_Metrics: + m_Width: 38 + m_Height: 46 + m_HorizontalBearingX: 5 + m_HorizontalBearingY: 46 + m_HorizontalAdvance: 48 + m_GlyphRect: + m_X: 630 + m_Y: 805 + m_Width: 38 + m_Height: 46 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 82 + m_Metrics: + m_Width: 42 + m_Height: 47 + m_HorizontalBearingX: 3 + m_HorizontalBearingY: 46 + m_HorizontalAdvance: 48 + m_GlyphRect: + m_X: 972 + m_Y: 264 + m_Width: 42 + m_Height: 47 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 83 + m_Metrics: + m_Width: 40 + m_Height: 64 + m_HorizontalBearingX: 5 + m_HorizontalBearingY: 46 + m_HorizontalAdvance: 48 + m_GlyphRect: + m_X: 145 + m_Y: 872 + m_Width: 40 + m_Height: 64 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 84 + m_Metrics: + m_Width: 40 + m_Height: 64 + m_HorizontalBearingX: 3 + m_HorizontalBearingY: 46 + m_HorizontalAdvance: 48 + m_GlyphRect: + m_X: 329 + m_Y: 666 + m_Width: 40 + m_Height: 64 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 85 + m_Metrics: + m_Width: 23 + m_Height: 46 + m_HorizontalBearingX: 5 + m_HorizontalBearingY: 46 + m_HorizontalAdvance: 29 + m_GlyphRect: + m_X: 926 + m_Y: 816 + m_Width: 23 + m_Height: 46 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 86 + m_Metrics: + m_Width: 38 + m_Height: 47 + m_HorizontalBearingX: 2 + m_HorizontalBearingY: 46 + m_HorizontalAdvance: 43 + m_GlyphRect: + m_X: 956 + m_Y: 740 + m_Width: 38 + m_Height: 47 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 87 + m_Metrics: + m_Width: 23 + m_Height: 56 + m_HorizontalBearingX: 1 + m_HorizontalBearingY: 55 + m_HorizontalAdvance: 24 + m_GlyphRect: + m_X: 388 + m_Y: 672 + m_Width: 23 + m_Height: 56 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 88 + m_Metrics: + m_Width: 38 + m_Height: 46 + m_HorizontalBearingX: 5 + m_HorizontalBearingY: 45 + m_HorizontalAdvance: 48 + m_GlyphRect: + m_X: 495 + m_Y: 919 + m_Width: 38 + m_Height: 46 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 89 + m_Metrics: + m_Width: 43 + m_Height: 45 + m_HorizontalBearingX: 0 + m_HorizontalBearingY: 45 + m_HorizontalAdvance: 43 + m_GlyphRect: + m_X: 226 + m_Y: 329 + m_Width: 43 + m_Height: 45 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 90 + m_Metrics: + m_Width: 63 + m_Height: 45 + m_HorizontalBearingX: -1 + m_HorizontalBearingY: 45 + m_HorizontalAdvance: 61 + m_GlyphRect: + m_X: 655 + m_Y: 188 + m_Width: 63 + m_Height: 45 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 91 + m_Metrics: + m_Width: 43 + m_Height: 45 + m_HorizontalBearingX: 0 + m_HorizontalBearingY: 45 + m_HorizontalAdvance: 43 + m_GlyphRect: + m_X: 737 + m_Y: 188 + m_Width: 43 + m_Height: 45 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 92 + m_Metrics: + m_Width: 41 + m_Height: 63 + m_HorizontalBearingX: 0 + m_HorizontalBearingY: 45 + m_HorizontalAdvance: 41 + m_GlyphRect: + m_X: 609 + m_Y: 640 + m_Width: 41 + m_Height: 63 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 93 + m_Metrics: + m_Width: 35 + m_Height: 45 + m_HorizontalBearingX: 3 + m_HorizontalBearingY: 45 + m_HorizontalAdvance: 42 + m_GlyphRect: + m_X: 968 + m_Y: 806 + m_Width: 35 + m_Height: 45 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 94 + m_Metrics: + m_Width: 27 + m_Height: 80 + m_HorizontalBearingX: 1 + m_HorizontalBearingY: 62 + m_HorizontalAdvance: 29 + m_GlyphRect: + m_X: 164 + m_Y: 113 + m_Width: 27 + m_Height: 80 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 95 + m_Metrics: + m_Width: 8 + m_Height: 80 + m_HorizontalBearingX: 7 + m_HorizontalBearingY: 62 + m_HorizontalAdvance: 22 + m_GlyphRect: + m_X: 181 + m_Y: 772 + m_Width: 8 + m_Height: 80 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 96 + m_Metrics: + m_Width: 27 + m_Height: 80 + m_HorizontalBearingX: 1 + m_HorizontalBearingY: 62 + m_HorizontalAdvance: 29 + m_GlyphRect: + m_X: 227 + m_Y: 182 + m_Width: 27 + m_Height: 80 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 97 + m_Metrics: + m_Width: 44 + m_Height: 11 + m_HorizontalBearingX: 3 + m_HorizontalBearingY: 34 + m_HorizontalAdvance: 50 + m_GlyphRect: + m_X: 333 + m_Y: 832 + m_Width: 44 + m_Height: 11 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 98 + m_Metrics: + m_Width: 0 + m_Height: 0 + m_HorizontalBearingX: 0 + m_HorizontalBearingY: 0 + m_HorizontalAdvance: 24 + m_GlyphRect: + m_X: 0 + m_Y: 0 + m_Width: 0 + m_Height: 0 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 99 + m_Metrics: + m_Width: 10 + m_Height: 59 + m_HorizontalBearingX: 9 + m_HorizontalBearingY: 45 + m_HorizontalAdvance: 28 + m_GlyphRect: + m_X: 349 + m_Y: 195 + m_Width: 10 + m_Height: 59 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 100 + m_Metrics: + m_Width: 38 + m_Height: 60 + m_HorizontalBearingX: 5 + m_HorizontalBearingY: 59 + m_HorizontalAdvance: 48 + m_GlyphRect: + m_X: 915 + m_Y: 422 + m_Width: 38 + m_Height: 60 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 101 + m_Metrics: + m_Width: 45 + m_Height: 60 + m_HorizontalBearingX: 2 + m_HorizontalBearingY: 60 + m_HorizontalAdvance: 48 + m_GlyphRect: + m_X: 669 + m_Y: 569 + m_Width: 45 + m_Height: 60 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 102 + m_Metrics: + m_Width: 40 + m_Height: 40 + m_HorizontalBearingX: 4 + m_HorizontalBearingY: 48 + m_HorizontalAdvance: 48 + m_GlyphRect: + m_X: 733 + m_Y: 807 + m_Width: 40 + m_Height: 40 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 103 + m_Metrics: + m_Width: 50 + m_Height: 59 + m_HorizontalBearingX: -1 + m_HorizontalBearingY: 59 + m_HorizontalAdvance: 48 + m_GlyphRect: + m_X: 358 + m_Y: 357 + m_Width: 50 + m_Height: 59 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 104 + m_Metrics: + m_Width: 8 + m_Height: 80 + m_HorizontalBearingX: 7 + m_HorizontalBearingY: 62 + m_HorizontalAdvance: 22 + m_GlyphRect: + m_X: 306 + m_Y: 766 + m_Width: 8 + m_Height: 80 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 105 + m_Metrics: + m_Width: 40 + m_Height: 69 + m_HorizontalBearingX: 4 + m_HorizontalBearingY: 62 + m_HorizontalAdvance: 48 + m_GlyphRect: + m_X: 223 + m_Y: 492 + m_Width: 40 + m_Height: 69 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 106 + m_Metrics: + m_Width: 25 + m_Height: 8 + m_HorizontalBearingX: 1 + m_HorizontalBearingY: 59 + m_HorizontalAdvance: 29 + m_GlyphRect: + m_X: 931 + m_Y: 961 + m_Width: 25 + m_Height: 8 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 107 + m_Metrics: + m_Width: 61 + m_Height: 61 + m_HorizontalBearingX: 1 + m_HorizontalBearingY: 60 + m_HorizontalAdvance: 63 + m_GlyphRect: + m_X: 277 + m_Y: 90 + m_Width: 61 + m_Height: 61 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 108 + m_Metrics: + m_Width: 32 + m_Height: 33 + m_HorizontalBearingX: 1 + m_HorizontalBearingY: 60 + m_HorizontalAdvance: 32 + m_GlyphRect: + m_X: 784 + m_Y: 870 + m_Width: 32 + m_Height: 33 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 109 + m_Metrics: + m_Width: 42 + m_Height: 34 + m_HorizontalBearingX: 3 + m_HorizontalBearingY: 39 + m_HorizontalAdvance: 48 + m_GlyphRect: + m_X: 972 + m_Y: 454 + m_Width: 42 + m_Height: 34 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 110 + m_Metrics: + m_Width: 42 + m_Height: 24 + m_HorizontalBearingX: 4 + m_HorizontalBearingY: 32 + m_HorizontalAdvance: 50 + m_GlyphRect: + m_X: 972 + m_Y: 560 + m_Width: 42 + m_Height: 24 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 111 + m_Metrics: + m_Width: 23 + m_Height: 7 + m_HorizontalBearingX: 3 + m_HorizontalBearingY: 26 + m_HorizontalAdvance: 29 + m_GlyphRect: + m_X: 583 + m_Y: 890 + m_Width: 23 + m_Height: 7 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 112 + m_Metrics: + m_Width: 61 + m_Height: 61 + m_HorizontalBearingX: 1 + m_HorizontalBearingY: 60 + m_HorizontalAdvance: 63 + m_GlyphRect: + m_X: 357 + m_Y: 90 + m_Width: 61 + m_Height: 61 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 113 + m_Metrics: + m_Width: 50 + m_Height: 4 + m_HorizontalBearingX: -1 + m_HorizontalBearingY: 65 + m_HorizontalAdvance: 48 + m_GlyphRect: + m_X: 862 + m_Y: 961 + m_Width: 50 + m_Height: 4 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 114 + m_Metrics: + m_Width: 24 + m_Height: 24 + m_HorizontalBearingX: 5 + m_HorizontalBearingY: 60 + m_HorizontalAdvance: 34 + m_GlyphRect: + m_X: 687 + m_Y: 906 + m_Width: 24 + m_Height: 24 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 115 + m_Metrics: + m_Width: 43 + m_Height: 52 + m_HorizontalBearingX: 2 + m_HorizontalBearingY: 52 + m_HorizontalAdvance: 47 + m_GlyphRect: + m_X: 607 + m_Y: 487 + m_Width: 43 + m_Height: 52 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 116 + m_Metrics: + m_Width: 27 + m_Height: 36 + m_HorizontalBearingX: 1 + m_HorizontalBearingY: 60 + m_HorizontalAdvance: 29 + m_GlyphRect: + m_X: 792 + m_Y: 815 + m_Width: 27 + m_Height: 36 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 117 + m_Metrics: + m_Width: 27 + m_Height: 37 + m_HorizontalBearingX: 1 + m_HorizontalBearingY: 60 + m_HorizontalAdvance: 29 + m_GlyphRect: + m_X: 687 + m_Y: 796 + m_Width: 27 + m_Height: 37 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 118 + m_Metrics: + m_Width: 19 + m_Height: 13 + m_HorizontalBearingX: 3 + m_HorizontalBearingY: 63 + m_HorizontalAdvance: 29 + m_GlyphRect: + m_X: 545 + m_Y: 997 + m_Width: 19 + m_Height: 13 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 119 + m_Metrics: + m_Width: 43 + m_Height: 63 + m_HorizontalBearingX: 5 + m_HorizontalBearingY: 45 + m_HorizontalAdvance: 50 + m_GlyphRect: + m_X: 593 + m_Y: 247 + m_Width: 43 + m_Height: 63 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 120 + m_Metrics: + m_Width: 40 + m_Height: 70 + m_HorizontalBearingX: 3 + m_HorizontalBearingY: 59 + m_HorizontalAdvance: 46 + m_GlyphRect: + m_X: 208 + m_Y: 770 + m_Width: 40 + m_Height: 70 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 121 + m_Metrics: + m_Width: 10 + m_Height: 10 + m_HorizontalBearingX: 9 + m_HorizontalBearingY: 28 + m_HorizontalAdvance: 29 + m_GlyphRect: + m_X: 996 + m_Y: 932 + m_Width: 10 + m_Height: 10 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 122 + m_Metrics: + m_Width: 16 + m_Height: 18 + m_HorizontalBearingX: 5 + m_HorizontalBearingY: 0 + m_HorizontalAdvance: 29 + m_GlyphRect: + m_X: 622 + m_Y: 958 + m_Width: 16 + m_Height: 18 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 123 + m_Metrics: + m_Width: 24 + m_Height: 35 + m_HorizontalBearingX: 3 + m_HorizontalBearingY: 59 + m_HorizontalAdvance: 29 + m_GlyphRect: + m_X: 687 + m_Y: 852 + m_Width: 24 + m_Height: 35 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 124 + m_Metrics: + m_Width: 29 + m_Height: 33 + m_HorizontalBearingX: 1 + m_HorizontalBearingY: 60 + m_HorizontalAdvance: 31 + m_GlyphRect: + m_X: 835 + m_Y: 877 + m_Width: 29 + m_Height: 33 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 125 + m_Metrics: + m_Width: 42 + m_Height: 34 + m_HorizontalBearingX: 3 + m_HorizontalBearingY: 39 + m_HorizontalAdvance: 48 + m_GlyphRect: + m_X: 972 + m_Y: 507 + m_Width: 42 + m_Height: 34 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 126 + m_Metrics: + m_Width: 67 + m_Height: 59 + m_HorizontalBearingX: 2 + m_HorizontalBearingY: 59 + m_HorizontalAdvance: 72 + m_GlyphRect: + m_X: 498 + m_Y: 10 + m_Width: 67 + m_Height: 59 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 127 + m_Metrics: + m_Width: 68 + m_Height: 59 + m_HorizontalBearingX: 2 + m_HorizontalBearingY: 59 + m_HorizontalAdvance: 72 + m_GlyphRect: + m_X: 10 + m_Y: 955 + m_Width: 68 + m_Height: 59 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 128 + m_Metrics: + m_Width: 66 + m_Height: 60 + m_HorizontalBearingX: 3 + m_HorizontalBearingY: 60 + m_HorizontalAdvance: 72 + m_GlyphRect: + m_X: 584 + m_Y: 10 + m_Width: 66 + m_Height: 60 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 129 + m_Metrics: + m_Width: 43 + m_Height: 60 + m_HorizontalBearingX: 5 + m_HorizontalBearingY: 45 + m_HorizontalAdvance: 53 + m_GlyphRect: + m_X: 903 + m_Y: 183 + m_Width: 43 + m_Height: 60 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 130 + m_Metrics: + m_Width: 57 + m_Height: 74 + m_HorizontalBearingX: 0 + m_HorizontalBearingY: 74 + m_HorizontalAdvance: 57 + m_GlyphRect: + m_X: 829 + m_Y: 10 + m_Width: 57 + m_Height: 74 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 131 + m_Metrics: + m_Width: 57 + m_Height: 74 + m_HorizontalBearingX: 0 + m_HorizontalBearingY: 74 + m_HorizontalAdvance: 57 + m_GlyphRect: + m_X: 905 + m_Y: 10 + m_Width: 57 + m_Height: 74 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 132 + m_Metrics: + m_Width: 57 + m_Height: 75 + m_HorizontalBearingX: 0 + m_HorizontalBearingY: 75 + m_HorizontalAdvance: 57 + m_GlyphRect: + m_X: 10 + m_Y: 673 + m_Width: 57 + m_Height: 75 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 133 + m_Metrics: + m_Width: 57 + m_Height: 75 + m_HorizontalBearingX: 0 + m_HorizontalBearingY: 75 + m_HorizontalAdvance: 57 + m_GlyphRect: + m_X: 10 + m_Y: 767 + m_Width: 57 + m_Height: 75 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 134 + m_Metrics: + m_Width: 57 + m_Height: 72 + m_HorizontalBearingX: 0 + m_HorizontalBearingY: 72 + m_HorizontalAdvance: 57 + m_GlyphRect: + m_X: 88 + m_Y: 113 + m_Width: 57 + m_Height: 72 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 135 + m_Metrics: + m_Width: 57 + m_Height: 75 + m_HorizontalBearingX: 0 + m_HorizontalBearingY: 75 + m_HorizontalAdvance: 57 + m_GlyphRect: + m_X: 10 + m_Y: 861 + m_Width: 57 + m_Height: 75 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 136 + m_Metrics: + m_Width: 82 + m_Height: 59 + m_HorizontalBearingX: 1 + m_HorizontalBearingY: 59 + m_HorizontalAdvance: 86 + m_GlyphRect: + m_X: 207 + m_Y: 10 + m_Width: 82 + m_Height: 59 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 137 + m_Metrics: + m_Width: 55 + m_Height: 78 + m_HorizontalBearingX: 4 + m_HorizontalBearingY: 60 + m_HorizontalAdvance: 62 + m_GlyphRect: + m_X: 10 + m_Y: 576 + m_Width: 55 + m_Height: 78 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 138 + m_Metrics: + m_Width: 47 + m_Height: 74 + m_HorizontalBearingX: 7 + m_HorizontalBearingY: 74 + m_HorizontalAdvance: 57 + m_GlyphRect: + m_X: 84 + m_Y: 580 + m_Width: 47 + m_Height: 74 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 139 + m_Metrics: + m_Width: 47 + m_Height: 74 + m_HorizontalBearingX: 7 + m_HorizontalBearingY: 74 + m_HorizontalAdvance: 57 + m_GlyphRect: + m_X: 157 + m_Y: 487 + m_Width: 47 + m_Height: 74 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 140 + m_Metrics: + m_Width: 47 + m_Height: 75 + m_HorizontalBearingX: 7 + m_HorizontalBearingY: 75 + m_HorizontalAdvance: 57 + m_GlyphRect: + m_X: 157 + m_Y: 393 + m_Width: 47 + m_Height: 75 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 141 + m_Metrics: + m_Width: 47 + m_Height: 72 + m_HorizontalBearingX: 7 + m_HorizontalBearingY: 72 + m_HorizontalAdvance: 57 + m_GlyphRect: + m_X: 150 + m_Y: 580 + m_Width: 47 + m_Height: 72 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 142 + m_Metrics: + m_Width: 19 + m_Height: 74 + m_HorizontalBearingX: 0 + m_HorizontalBearingY: 74 + m_HorizontalAdvance: 24 + m_GlyphRect: + m_X: 227 + m_Y: 859 + m_Width: 19 + m_Height: 74 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 143 + m_Metrics: + m_Width: 19 + m_Height: 74 + m_HorizontalBearingX: 5 + m_HorizontalBearingY: 74 + m_HorizontalAdvance: 24 + m_GlyphRect: + m_X: 265 + m_Y: 859 + m_Width: 19 + m_Height: 74 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 144 + m_Metrics: + m_Width: 28 + m_Height: 75 + m_HorizontalBearingX: -2 + m_HorizontalBearingY: 75 + m_HorizontalAdvance: 24 + m_GlyphRect: + m_X: 981 + m_Y: 10 + m_Width: 28 + m_Height: 75 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 145 + m_Metrics: + m_Width: 25 + m_Height: 72 + m_HorizontalBearingX: 0 + m_HorizontalBearingY: 72 + m_HorizontalAdvance: 24 + m_GlyphRect: + m_X: 216 + m_Y: 580 + m_Width: 25 + m_Height: 72 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 146 + m_Metrics: + m_Width: 58 + m_Height: 59 + m_HorizontalBearingX: 0 + m_HorizontalBearingY: 59 + m_HorizontalAdvance: 62 + m_GlyphRect: + m_X: 751 + m_Y: 102 + m_Width: 58 + m_Height: 59 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 147 + m_Metrics: + m_Width: 48 + m_Height: 75 + m_HorizontalBearingX: 7 + m_HorizontalBearingY: 75 + m_HorizontalAdvance: 62 + m_GlyphRect: + m_X: 210 + m_Y: 88 + m_Width: 48 + m_Height: 75 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 148 + m_Metrics: + m_Width: 59 + m_Height: 75 + m_HorizontalBearingX: 4 + m_HorizontalBearingY: 74 + m_HorizontalAdvance: 67 + m_GlyphRect: + m_X: 10 + m_Y: 388 + m_Width: 59 + m_Height: 75 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 149 + m_Metrics: + m_Width: 59 + m_Height: 75 + m_HorizontalBearingX: 4 + m_HorizontalBearingY: 74 + m_HorizontalAdvance: 67 + m_GlyphRect: + m_X: 10 + m_Y: 482 + m_Width: 59 + m_Height: 75 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 150 + m_Metrics: + m_Width: 59 + m_Height: 76 + m_HorizontalBearingX: 4 + m_HorizontalBearingY: 75 + m_HorizontalAdvance: 67 + m_GlyphRect: + m_X: 10 + m_Y: 198 + m_Width: 59 + m_Height: 76 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 151 + m_Metrics: + m_Width: 59 + m_Height: 76 + m_HorizontalBearingX: 4 + m_HorizontalBearingY: 75 + m_HorizontalAdvance: 67 + m_GlyphRect: + m_X: 10 + m_Y: 293 + m_Width: 59 + m_Height: 76 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 152 + m_Metrics: + m_Width: 59 + m_Height: 73 + m_HorizontalBearingX: 4 + m_HorizontalBearingY: 72 + m_HorizontalAdvance: 67 + m_GlyphRect: + m_X: 751 + m_Y: 10 + m_Width: 59 + m_Height: 73 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 153 + m_Metrics: + m_Width: 40 + m_Height: 39 + m_HorizontalBearingX: 5 + m_HorizontalBearingY: 48 + m_HorizontalAdvance: 50 + m_GlyphRect: + m_X: 838 + m_Y: 819 + m_Width: 40 + m_Height: 39 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 154 + m_Metrics: + m_Width: 63 + m_Height: 65 + m_HorizontalBearingX: 2 + m_HorizontalBearingY: 62 + m_HorizontalAdvance: 67 + m_GlyphRect: + m_X: 669 + m_Y: 10 + m_Width: 63 + m_Height: 65 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 155 + m_Metrics: + m_Width: 50 + m_Height: 75 + m_HorizontalBearingX: 6 + m_HorizontalBearingY: 74 + m_HorizontalAdvance: 62 + m_GlyphRect: + m_X: 88 + m_Y: 392 + m_Width: 50 + m_Height: 75 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 156 + m_Metrics: + m_Width: 50 + m_Height: 75 + m_HorizontalBearingX: 6 + m_HorizontalBearingY: 74 + m_HorizontalAdvance: 62 + m_GlyphRect: + m_X: 88 + m_Y: 486 + m_Width: 50 + m_Height: 75 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 157 + m_Metrics: + m_Width: 50 + m_Height: 76 + m_HorizontalBearingX: 6 + m_HorizontalBearingY: 75 + m_HorizontalAdvance: 62 + m_GlyphRect: + m_X: 88 + m_Y: 297 + m_Width: 50 + m_Height: 76 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 158 + m_Metrics: + m_Width: 50 + m_Height: 73 + m_HorizontalBearingX: 6 + m_HorizontalBearingY: 72 + m_HorizontalAdvance: 62 + m_GlyphRect: + m_X: 157 + m_Y: 301 + m_Width: 50 + m_Height: 73 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 159 + m_Metrics: + m_Width: 54 + m_Height: 74 + m_HorizontalBearingX: 1 + m_HorizontalBearingY: 74 + m_HorizontalAdvance: 56 + m_GlyphRect: + m_X: 88 + m_Y: 204 + m_Width: 54 + m_Height: 74 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 160 + m_Metrics: + m_Width: 46 + m_Height: 59 + m_HorizontalBearingX: 7 + m_HorizontalBearingY: 59 + m_HorizontalAdvance: 57 + m_GlyphRect: + m_X: 734 + m_Y: 491 + m_Width: 46 + m_Height: 59 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 161 + m_Metrics: + m_Width: 44 + m_Height: 63 + m_HorizontalBearingX: 6 + m_HorizontalBearingY: 62 + m_HorizontalAdvance: 53 + m_GlyphRect: + m_X: 545 + m_Y: 564 + m_Width: 44 + m_Height: 63 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 162 + m_Metrics: + m_Width: 45 + m_Height: 64 + m_HorizontalBearingX: 3 + m_HorizontalBearingY: 63 + m_HorizontalAdvance: 48 + m_GlyphRect: + m_X: 324 + m_Y: 583 + m_Width: 45 + m_Height: 64 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 163 + m_Metrics: + m_Width: 45 + m_Height: 64 + m_HorizontalBearingX: 3 + m_HorizontalBearingY: 63 + m_HorizontalAdvance: 48 + m_GlyphRect: + m_X: 333 + m_Y: 749 + m_Width: 45 + m_Height: 64 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 164 + m_Metrics: + m_Width: 45 + m_Height: 63 + m_HorizontalBearingX: 3 + m_HorizontalBearingY: 62 + m_HorizontalAdvance: 48 + m_GlyphRect: + m_X: 478 + m_Y: 485 + m_Width: 45 + m_Height: 63 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 165 + m_Metrics: + m_Width: 45 + m_Height: 62 + m_HorizontalBearingX: 3 + m_HorizontalBearingY: 61 + m_HorizontalAdvance: 48 + m_GlyphRect: + m_X: 250 + m_Y: 952 + m_Width: 45 + m_Height: 62 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 166 + m_Metrics: + m_Width: 45 + m_Height: 60 + m_HorizontalBearingX: 3 + m_HorizontalBearingY: 59 + m_HorizontalAdvance: 48 + m_GlyphRect: + m_X: 733 + m_Y: 569 + m_Width: 45 + m_Height: 60 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 167 + m_Metrics: + m_Width: 45 + m_Height: 71 + m_HorizontalBearingX: 3 + m_HorizontalBearingY: 70 + m_HorizontalAdvance: 48 + m_GlyphRect: + m_X: 260 + m_Y: 580 + m_Width: 45 + m_Height: 71 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 168 + m_Metrics: + m_Width: 71 + m_Height: 47 + m_HorizontalBearingX: 2 + m_HorizontalBearingY: 46 + m_HorizontalAdvance: 76 + m_GlyphRect: + m_X: 661 + m_Y: 94 + m_Width: 71 + m_Height: 47 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 169 + m_Metrics: + m_Width: 38 + m_Height: 64 + m_HorizontalBearingX: 3 + m_HorizontalBearingY: 46 + m_HorizontalAdvance: 43 + m_GlyphRect: + m_X: 427 + m_Y: 583 + m_Width: 38 + m_Height: 64 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 170 + m_Metrics: + m_Width: 42 + m_Height: 64 + m_HorizontalBearingX: 3 + m_HorizontalBearingY: 63 + m_HorizontalAdvance: 48 + m_GlyphRect: + m_X: 436 + m_Y: 747 + m_Width: 42 + m_Height: 64 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 171 + m_Metrics: + m_Width: 42 + m_Height: 64 + m_HorizontalBearingX: 3 + m_HorizontalBearingY: 63 + m_HorizontalAdvance: 48 + m_GlyphRect: + m_X: 484 + m_Y: 567 + m_Width: 42 + m_Height: 64 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 172 + m_Metrics: + m_Width: 42 + m_Height: 63 + m_HorizontalBearingX: 3 + m_HorizontalBearingY: 62 + m_HorizontalAdvance: 48 + m_GlyphRect: + m_X: 608 + m_Y: 558 + m_Width: 42 + m_Height: 63 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 173 + m_Metrics: + m_Width: 42 + m_Height: 60 + m_HorizontalBearingX: 3 + m_HorizontalBearingY: 59 + m_HorizontalAdvance: 48 + m_GlyphRect: + m_X: 851 + m_Y: 262 + m_Width: 42 + m_Height: 60 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 174 + m_Metrics: + m_Width: 19 + m_Height: 63 + m_HorizontalBearingX: 0 + m_HorizontalBearingY: 63 + m_HorizontalAdvance: 24 + m_GlyphRect: + m_X: 838 + m_Y: 737 + m_Width: 19 + m_Height: 63 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 175 + m_Metrics: + m_Width: 19 + m_Height: 63 + m_HorizontalBearingX: 6 + m_HorizontalBearingY: 63 + m_HorizontalAdvance: 24 + m_GlyphRect: + m_X: 418 + m_Y: 951 + m_Width: 19 + m_Height: 63 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 176 + m_Metrics: + m_Width: 29 + m_Height: 62 + m_HorizontalBearingX: -2 + m_HorizontalBearingY: 62 + m_HorizontalAdvance: 24 + m_GlyphRect: + m_X: 980 + m_Y: 104 + m_Width: 29 + m_Height: 62 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 177 + m_Metrics: + m_Width: 25 + m_Height: 59 + m_HorizontalBearingX: 0 + m_HorizontalBearingY: 59 + m_HorizontalAdvance: 24 + m_GlyphRect: + m_X: 794 + m_Y: 737 + m_Width: 25 + m_Height: 59 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 178 + m_Metrics: + m_Width: 42 + m_Height: 64 + m_HorizontalBearingX: 3 + m_HorizontalBearingY: 63 + m_HorizontalAdvance: 48 + m_GlyphRect: + m_X: 487 + m_Y: 650 + m_Width: 42 + m_Height: 64 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 179 + m_Metrics: + m_Width: 38 + m_Height: 61 + m_HorizontalBearingX: 5 + m_HorizontalBearingY: 61 + m_HorizontalAdvance: 48 + m_GlyphRect: + m_X: 915 + m_Y: 342 + m_Width: 38 + m_Height: 61 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 180 + m_Metrics: + m_Width: 42 + m_Height: 64 + m_HorizontalBearingX: 3 + m_HorizontalBearingY: 63 + m_HorizontalAdvance: 48 + m_GlyphRect: + m_X: 548 + m_Y: 646 + m_Width: 42 + m_Height: 64 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 181 + m_Metrics: + m_Width: 42 + m_Height: 64 + m_HorizontalBearingX: 3 + m_HorizontalBearingY: 63 + m_HorizontalAdvance: 48 + m_GlyphRect: + m_X: 497 + m_Y: 733 + m_Width: 42 + m_Height: 64 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 182 + m_Metrics: + m_Width: 42 + m_Height: 63 + m_HorizontalBearingX: 3 + m_HorizontalBearingY: 62 + m_HorizontalAdvance: 48 + m_GlyphRect: + m_X: 672 + m_Y: 714 + m_Width: 42 + m_Height: 63 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 183 + m_Metrics: + m_Width: 42 + m_Height: 62 + m_HorizontalBearingX: 3 + m_HorizontalBearingY: 61 + m_HorizontalAdvance: 48 + m_GlyphRect: + m_X: 314 + m_Y: 952 + m_Width: 42 + m_Height: 62 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 184 + m_Metrics: + m_Width: 42 + m_Height: 60 + m_HorizontalBearingX: 3 + m_HorizontalBearingY: 59 + m_HorizontalAdvance: 48 + m_GlyphRect: + m_X: 972 + m_Y: 185 + m_Width: 42 + m_Height: 60 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 185 + m_Metrics: + m_Width: 43 + m_Height: 39 + m_HorizontalBearingX: 2 + m_HorizontalBearingY: 48 + m_HorizontalAdvance: 47 + m_GlyphRect: + m_X: 965 + m_Y: 603 + m_Width: 43 + m_Height: 39 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 186 + m_Metrics: + m_Width: 50 + m_Height: 49 + m_HorizontalBearingX: 1 + m_HorizontalBearingY: 47 + m_HorizontalAdvance: 53 + m_GlyphRect: + m_X: 357 + m_Y: 435 + m_Width: 50 + m_Height: 49 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 187 + m_Metrics: + m_Width: 38 + m_Height: 64 + m_HorizontalBearingX: 5 + m_HorizontalBearingY: 63 + m_HorizontalAdvance: 48 + m_GlyphRect: + m_X: 558 + m_Y: 729 + m_Width: 38 + m_Height: 64 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 188 + m_Metrics: + m_Width: 38 + m_Height: 64 + m_HorizontalBearingX: 5 + m_HorizontalBearingY: 63 + m_HorizontalAdvance: 48 + m_GlyphRect: + m_X: 615 + m_Y: 722 + m_Width: 38 + m_Height: 64 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 189 + m_Metrics: + m_Width: 38 + m_Height: 63 + m_HorizontalBearingX: 5 + m_HorizontalBearingY: 62 + m_HorizontalAdvance: 48 + m_GlyphRect: + m_X: 799 + m_Y: 485 + m_Width: 38 + m_Height: 63 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 190 + m_Metrics: + m_Width: 38 + m_Height: 60 + m_HorizontalBearingX: 5 + m_HorizontalBearingY: 59 + m_HorizontalAdvance: 48 + m_GlyphRect: + m_X: 956 + m_Y: 661 + m_Width: 38 + m_Height: 60 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 191 + m_Metrics: + m_Width: 41 + m_Height: 81 + m_HorizontalBearingX: 0 + m_HorizontalBearingY: 63 + m_HorizontalAdvance: 41 + m_GlyphRect: + m_X: 86 + m_Y: 673 + m_Width: 41 + m_Height: 81 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 192 + m_Metrics: + m_Width: 40 + m_Height: 80 + m_HorizontalBearingX: 5 + m_HorizontalBearingY: 62 + m_HorizontalAdvance: 48 + m_GlyphRect: + m_X: 86 + m_Y: 773 + m_Width: 40 + m_Height: 80 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 193 + m_Metrics: + m_Width: 41 + m_Height: 77 + m_HorizontalBearingX: 0 + m_HorizontalBearingY: 59 + m_HorizontalAdvance: 41 + m_GlyphRect: + m_X: 269 + m_Y: 670 + m_Width: 41 + m_Height: 77 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 1997 + m_Metrics: + m_Width: 0 + m_Height: 0 + m_HorizontalBearingX: 0 + m_HorizontalBearingY: 0 + m_HorizontalAdvance: 43 + m_GlyphRect: + m_X: 0 + m_Y: 0 + m_Width: 0 + m_Height: 0 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 1998 + m_Metrics: + m_Width: 0 + m_Height: 0 + m_HorizontalBearingX: 0 + m_HorizontalBearingY: 0 + m_HorizontalAdvance: 86 + m_GlyphRect: + m_X: 0 + m_Y: 0 + m_Width: 0 + m_Height: 0 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 1999 + m_Metrics: + m_Width: 0 + m_Height: 0 + m_HorizontalBearingX: 0 + m_HorizontalBearingY: 0 + m_HorizontalAdvance: 43 + m_GlyphRect: + m_X: 0 + m_Y: 0 + m_Width: 0 + m_Height: 0 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 2000 + m_Metrics: + m_Width: 0 + m_Height: 0 + m_HorizontalBearingX: 0 + m_HorizontalBearingY: 0 + m_HorizontalAdvance: 86 + m_GlyphRect: + m_X: 0 + m_Y: 0 + m_Width: 0 + m_Height: 0 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 2001 + m_Metrics: + m_Width: 0 + m_Height: 0 + m_HorizontalBearingX: 0 + m_HorizontalBearingY: 0 + m_HorizontalAdvance: 29 + m_GlyphRect: + m_X: 0 + m_Y: 0 + m_Width: 0 + m_Height: 0 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 2002 + m_Metrics: + m_Width: 0 + m_Height: 0 + m_HorizontalBearingX: 0 + m_HorizontalBearingY: 0 + m_HorizontalAdvance: 22 + m_GlyphRect: + m_X: 0 + m_Y: 0 + m_Width: 0 + m_Height: 0 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 2003 + m_Metrics: + m_Width: 0 + m_Height: 0 + m_HorizontalBearingX: 0 + m_HorizontalBearingY: 0 + m_HorizontalAdvance: 14 + m_GlyphRect: + m_X: 0 + m_Y: 0 + m_Width: 0 + m_Height: 0 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 2004 + m_Metrics: + m_Width: 0 + m_Height: 0 + m_HorizontalBearingX: 0 + m_HorizontalBearingY: 0 + m_HorizontalAdvance: 48 + m_GlyphRect: + m_X: 0 + m_Y: 0 + m_Width: 0 + m_Height: 0 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 2005 + m_Metrics: + m_Width: 0 + m_Height: 0 + m_HorizontalBearingX: 0 + m_HorizontalBearingY: 0 + m_HorizontalAdvance: 24 + m_GlyphRect: + m_X: 0 + m_Y: 0 + m_Width: 0 + m_Height: 0 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 2006 + m_Metrics: + m_Width: 0 + m_Height: 0 + m_HorizontalBearingX: 0 + m_HorizontalBearingY: 0 + m_HorizontalAdvance: 17 + m_GlyphRect: + m_X: 0 + m_Y: 0 + m_Width: 0 + m_Height: 0 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 2007 + m_Metrics: + m_Width: 0 + m_Height: 0 + m_HorizontalBearingX: 0 + m_HorizontalBearingY: 0 + m_HorizontalAdvance: 7 + m_GlyphRect: + m_X: 0 + m_Y: 0 + m_Width: 0 + m_Height: 0 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 2008 + m_Metrics: + m_Width: 0 + m_Height: 0 + m_HorizontalBearingX: 0 + m_HorizontalBearingY: 0 + m_HorizontalAdvance: 0 + m_GlyphRect: + m_X: 0 + m_Y: 0 + m_Width: 0 + m_Height: 0 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 2009 + m_Metrics: + m_Width: 4 + m_Height: 65 + m_HorizontalBearingX: -2 + m_HorizontalBearingY: 54 + m_HorizontalAdvance: 0 + m_GlyphRect: + m_X: 204 + m_Y: 871 + m_Width: 4 + m_Height: 65 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 2010 + m_Metrics: + m_Width: 20 + m_Height: 70 + m_HorizontalBearingX: -10 + m_HorizontalBearingY: 59 + m_HorizontalAdvance: 0 + m_GlyphRect: + m_X: 267 + m_Y: 770 + m_Width: 20 + m_Height: 70 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 2011 + m_Metrics: + m_Width: 21 + m_Height: 70 + m_HorizontalBearingX: -2 + m_HorizontalBearingY: 59 + m_HorizontalAdvance: 0 + m_GlyphRect: + m_X: 260 + m_Y: 393 + m_Width: 21 + m_Height: 70 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 2012 + m_Metrics: + m_Width: 21 + m_Height: 70 + m_HorizontalBearingX: -19 + m_HorizontalBearingY: 59 + m_HorizontalAdvance: 0 + m_GlyphRect: + m_X: 282 + m_Y: 482 + m_Width: 21 + m_Height: 70 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 2013 + m_Metrics: + m_Width: 48 + m_Height: 6 + m_HorizontalBearingX: 0 + m_HorizontalBearingY: 25 + m_HorizontalAdvance: 48 + m_GlyphRect: + m_X: 862 + m_Y: 936 + m_Width: 48 + m_Height: 6 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 2014 + m_Metrics: + m_Width: 48 + m_Height: 6 + m_HorizontalBearingX: 0 + m_HorizontalBearingY: 25 + m_HorizontalAdvance: 48 + m_GlyphRect: + m_X: 929 + m_Y: 936 + m_Width: 48 + m_Height: 6 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 2015 + m_Metrics: + m_Width: 86 + m_Height: 6 + m_HorizontalBearingX: 0 + m_HorizontalBearingY: 25 + m_HorizontalAdvance: 86 + m_GlyphRect: + m_X: 103 + m_Y: 88 + m_Width: 86 + m_Height: 6 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 2016 + m_Metrics: + m_Width: 86 + m_Height: 6 + m_HorizontalBearingX: 0 + m_HorizontalBearingY: 25 + m_HorizontalAdvance: 86 + m_GlyphRect: + m_X: 277 + m_Y: 170 + m_Width: 86 + m_Height: 6 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 2017 + m_Metrics: + m_Width: 22 + m_Height: 62 + m_HorizontalBearingX: 7 + m_HorizontalBearingY: 62 + m_HorizontalAdvance: 36 + m_GlyphRect: + m_X: 862 + m_Y: 181 + m_Width: 22 + m_Height: 62 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 2018 + m_Metrics: + m_Width: 51 + m_Height: 15 + m_HorizontalBearingX: -2 + m_HorizontalBearingY: -4 + m_HorizontalAdvance: 48 + m_GlyphRect: + m_X: 288 + m_Y: 353 + m_Width: 51 + m_Height: 15 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 2019 + m_Metrics: + m_Width: 9 + m_Height: 19 + m_HorizontalBearingX: 5 + m_HorizontalBearingY: 59 + m_HorizontalAdvance: 19 + m_GlyphRect: + m_X: 612 + m_Y: 995 + m_Width: 9 + m_Height: 19 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 2020 + m_Metrics: + m_Width: 9 + m_Height: 19 + m_HorizontalBearingX: 5 + m_HorizontalBearingY: 59 + m_HorizontalAdvance: 19 + m_GlyphRect: + m_X: 640 + m_Y: 995 + m_Width: 9 + m_Height: 19 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 2021 + m_Metrics: + m_Width: 9 + m_Height: 19 + m_HorizontalBearingX: 5 + m_HorizontalBearingY: 8 + m_HorizontalAdvance: 19 + m_GlyphRect: + m_X: 1002 + m_Y: 961 + m_Width: 9 + m_Height: 19 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 2022 + m_Metrics: + m_Width: 9 + m_Height: 19 + m_HorizontalBearingX: 5 + m_HorizontalBearingY: 59 + m_HorizontalAdvance: 19 + m_GlyphRect: + m_X: 686 + m_Y: 949 + m_Width: 9 + m_Height: 19 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 2023 + m_Metrics: + m_Width: 23 + m_Height: 19 + m_HorizontalBearingX: 3 + m_HorizontalBearingY: 59 + m_HorizontalAdvance: 29 + m_GlyphRect: + m_X: 967 + m_Y: 894 + m_Width: 23 + m_Height: 19 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 2024 + m_Metrics: + m_Width: 23 + m_Height: 19 + m_HorizontalBearingX: 3 + m_HorizontalBearingY: 59 + m_HorizontalAdvance: 29 + m_GlyphRect: + m_X: 580 + m_Y: 916 + m_Width: 23 + m_Height: 19 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 2025 + m_Metrics: + m_Width: 23 + m_Height: 19 + m_HorizontalBearingX: 3 + m_HorizontalBearingY: 8 + m_HorizontalAdvance: 29 + m_GlyphRect: + m_X: 580 + m_Y: 954 + m_Width: 23 + m_Height: 19 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 2026 + m_Metrics: + m_Width: 22 + m_Height: 19 + m_HorizontalBearingX: 3 + m_HorizontalBearingY: 59 + m_HorizontalAdvance: 29 + m_GlyphRect: + m_X: 622 + m_Y: 920 + m_Width: 22 + m_Height: 19 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 2027 + m_Metrics: + m_Width: 38 + m_Height: 68 + m_HorizontalBearingX: 5 + m_HorizontalBearingY: 62 + m_HorizontalAdvance: 48 + m_GlyphRect: + m_X: 303 + m_Y: 865 + m_Width: 38 + m_Height: 68 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 2028 + m_Metrics: + m_Width: 38 + m_Height: 68 + m_HorizontalBearingX: 5 + m_HorizontalBearingY: 62 + m_HorizontalAdvance: 48 + m_GlyphRect: + m_X: 300 + m_Y: 387 + m_Width: 38 + m_Height: 68 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 2029 + m_Metrics: + m_Width: 24 + m_Height: 23 + m_HorizontalBearingX: 3 + m_HorizontalBearingY: 40 + m_HorizontalAdvance: 30 + m_GlyphRect: + m_X: 819 + m_Y: 929 + m_Width: 24 + m_Height: 23 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 2030 + m_Metrics: + m_Width: 64 + m_Height: 9 + m_HorizontalBearingX: 11 + m_HorizontalBearingY: 9 + m_HorizontalAdvance: 86 + m_GlyphRect: + m_X: 661 + m_Y: 160 + m_Width: 64 + m_Height: 9 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 2031 + m_Metrics: + m_Width: 21 + m_Height: 63 + m_HorizontalBearingX: -2 + m_HorizontalBearingY: 52 + m_HorizontalAdvance: 0 + m_GlyphRect: + m_X: 876 + m_Y: 737 + m_Width: 21 + m_Height: 63 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 2032 + m_Metrics: + m_Width: 21 + m_Height: 63 + m_HorizontalBearingX: -19 + m_HorizontalBearingY: 52 + m_HorizontalAdvance: 0 + m_GlyphRect: + m_X: 916 + m_Y: 734 + m_Width: 21 + m_Height: 63 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 2033 + m_Metrics: + m_Width: 20 + m_Height: 70 + m_HorizontalBearingX: -10 + m_HorizontalBearingY: 59 + m_HorizontalAdvance: 0 + m_GlyphRect: + m_X: 388 + m_Y: 583 + m_Width: 20 + m_Height: 70 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 2034 + m_Metrics: + m_Width: 20 + m_Height: 70 + m_HorizontalBearingX: -10 + m_HorizontalBearingY: 59 + m_HorizontalAdvance: 0 + m_GlyphRect: + m_X: 397 + m_Y: 747 + m_Width: 20 + m_Height: 70 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 2035 + m_Metrics: + m_Width: 20 + m_Height: 70 + m_HorizontalBearingX: -10 + m_HorizontalBearingY: 59 + m_HorizontalAdvance: 0 + m_GlyphRect: + m_X: 360 + m_Y: 862 + m_Width: 20 + m_Height: 70 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 2036 + m_Metrics: + m_Width: 0 + m_Height: 0 + m_HorizontalBearingX: 0 + m_HorizontalBearingY: 0 + m_HorizontalAdvance: 17 + m_GlyphRect: + m_X: 0 + m_Y: 0 + m_Width: 0 + m_Height: 0 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 2037 + m_Metrics: + m_Width: 82 + m_Height: 61 + m_HorizontalBearingX: 2 + m_HorizontalBearingY: 60 + m_HorizontalAdvance: 86 + m_GlyphRect: + m_X: 308 + m_Y: 10 + m_Width: 82 + m_Height: 61 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 2038 + m_Metrics: + m_Width: 12 + m_Height: 22 + m_HorizontalBearingX: 3 + m_HorizontalBearingY: 59 + m_HorizontalAdvance: 16 + m_GlyphRect: + m_X: 427 + m_Y: 363 + m_Width: 12 + m_Height: 22 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 2039 + m_Metrics: + m_Width: 26 + m_Height: 22 + m_HorizontalBearingX: 3 + m_HorizontalBearingY: 59 + m_HorizontalAdvance: 30 + m_GlyphRect: + m_X: 730 + m_Y: 907 + m_Width: 26 + m_Height: 22 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 2040 + m_Metrics: + m_Width: 35 + m_Height: 22 + m_HorizontalBearingX: -4 + m_HorizontalBearingY: 59 + m_HorizontalAdvance: 30 + m_GlyphRect: + m_X: 730 + m_Y: 866 + m_Width: 35 + m_Height: 22 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 2041 + m_Metrics: + m_Width: 23 + m_Height: 34 + m_HorizontalBearingX: 3 + m_HorizontalBearingY: 39 + m_HorizontalAdvance: 29 + m_GlyphRect: + m_X: 883 + m_Y: 883 + m_Width: 23 + m_Height: 34 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 2042 + m_Metrics: + m_Width: 23 + m_Height: 34 + m_HorizontalBearingX: 3 + m_HorizontalBearingY: 39 + m_HorizontalAdvance: 29 + m_GlyphRect: + m_X: 925 + m_Y: 883 + m_Width: 23 + m_Height: 34 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 2043 + m_Metrics: + m_Width: 28 + m_Height: 59 + m_HorizontalBearingX: 9 + m_HorizontalBearingY: 59 + m_HorizontalAdvance: 43 + m_GlyphRect: + m_X: 583 + m_Y: 812 + m_Width: 28 + m_Height: 59 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 2044 + m_Metrics: + m_Width: 35 + m_Height: 5 + m_HorizontalBearingX: -3 + m_HorizontalBearingY: 68 + m_HorizontalAdvance: 29 + m_GlyphRect: + m_X: 968 + m_Y: 870 + m_Width: 35 + m_Height: 5 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 2045 + m_Metrics: + m_Width: 44 + m_Height: 59 + m_HorizontalBearingX: -18 + m_HorizontalBearingY: 59 + m_HorizontalAdvance: 14 + m_GlyphRect: + m_X: 799 + m_Y: 181 + m_Width: 44 + m_Height: 59 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 2046 + m_Metrics: + m_Width: 10 + m_Height: 62 + m_HorizontalBearingX: 7 + m_HorizontalBearingY: 62 + m_HorizontalAdvance: 24 + m_GlyphRect: + m_X: 322 + m_Y: 474 + m_Width: 10 + m_Height: 62 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 2047 + m_Metrics: + m_Width: 20 + m_Height: 70 + m_HorizontalBearingX: -10 + m_HorizontalBearingY: 59 + m_HorizontalAdvance: 0 + m_GlyphRect: + m_X: 399 + m_Y: 836 + m_Width: 20 + m_Height: 70 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 2048 + m_Metrics: + m_Width: 20 + m_Height: 70 + m_HorizontalBearingX: -10 + m_HorizontalBearingY: 59 + m_HorizontalAdvance: 0 + m_GlyphRect: + m_X: 794 + m_Y: 648 + m_Width: 20 + m_Height: 70 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 2049 + m_Metrics: + m_Width: 22 + m_Height: 70 + m_HorizontalBearingX: -11 + m_HorizontalBearingY: 59 + m_HorizontalAdvance: 0 + m_GlyphRect: + m_X: 833 + m_Y: 648 + m_Width: 22 + m_Height: 70 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 2050 + m_Metrics: + m_Width: 22 + m_Height: 70 + m_HorizontalBearingX: -11 + m_HorizontalBearingY: 59 + m_HorizontalAdvance: 0 + m_GlyphRect: + m_X: 874 + m_Y: 648 + m_Width: 22 + m_Height: 70 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 2051 + m_Metrics: + m_Width: 22 + m_Height: 70 + m_HorizontalBearingX: -11 + m_HorizontalBearingY: 59 + m_HorizontalAdvance: 0 + m_GlyphRect: + m_X: 915 + m_Y: 645 + m_Width: 22 + m_Height: 70 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 2052 + m_Metrics: + m_Width: 20 + m_Height: 70 + m_HorizontalBearingX: -10 + m_HorizontalBearingY: 59 + m_HorizontalAdvance: 0 + m_GlyphRect: + m_X: 456 + m_Y: 908 + m_Width: 20 + m_Height: 70 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 2075 + m_Metrics: + m_Width: 47 + m_Height: 61 + m_HorizontalBearingX: 0 + m_HorizontalBearingY: 60 + m_HorizontalAdvance: 48 + m_GlyphRect: + m_X: 351 + m_Y: 503 + m_Width: 47 + m_Height: 61 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 2090 + m_Metrics: + m_Width: 70 + m_Height: 33 + m_HorizontalBearingX: 7 + m_HorizontalBearingY: 59 + m_HorizontalAdvance: 86 + m_GlyphRect: + m_X: 382 + m_Y: 170 + m_Width: 70 + m_Height: 33 + m_Scale: 1 + m_AtlasIndex: 0 + - m_Index: 2179 + m_Metrics: + m_Width: 52 + m_Height: 51 + m_HorizontalBearingX: 0 + m_HorizontalBearingY: 51 + m_HorizontalAdvance: 52 + m_GlyphRect: + m_X: 358 + m_Y: 287 + m_Width: 52 + m_Height: 51 + m_Scale: 1 + m_AtlasIndex: 0 + m_CharacterTable: + - m_ElementType: 1 + m_Unicode: 32 + m_GlyphIndex: 3 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 33 + m_GlyphIndex: 4 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 34 + m_GlyphIndex: 5 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 35 + m_GlyphIndex: 6 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 36 + m_GlyphIndex: 7 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 37 + m_GlyphIndex: 8 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 38 + m_GlyphIndex: 9 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 39 + m_GlyphIndex: 10 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 40 + m_GlyphIndex: 11 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 41 + m_GlyphIndex: 12 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 42 + m_GlyphIndex: 13 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 43 + m_GlyphIndex: 14 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 44 + m_GlyphIndex: 15 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 45 + m_GlyphIndex: 16 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 46 + m_GlyphIndex: 17 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 47 + m_GlyphIndex: 18 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 48 + m_GlyphIndex: 19 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 49 + m_GlyphIndex: 20 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 50 + m_GlyphIndex: 21 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 51 + m_GlyphIndex: 22 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 52 + m_GlyphIndex: 23 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 53 + m_GlyphIndex: 24 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 54 + m_GlyphIndex: 25 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 55 + m_GlyphIndex: 26 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 56 + m_GlyphIndex: 27 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 57 + m_GlyphIndex: 28 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 58 + m_GlyphIndex: 29 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 59 + m_GlyphIndex: 30 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 60 + m_GlyphIndex: 31 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 61 + m_GlyphIndex: 32 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 62 + m_GlyphIndex: 33 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 63 + m_GlyphIndex: 34 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 64 + m_GlyphIndex: 35 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 65 + m_GlyphIndex: 36 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 66 + m_GlyphIndex: 37 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 67 + m_GlyphIndex: 38 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 68 + m_GlyphIndex: 39 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 69 + m_GlyphIndex: 40 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 70 + m_GlyphIndex: 41 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 71 + m_GlyphIndex: 42 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 72 + m_GlyphIndex: 43 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 73 + m_GlyphIndex: 44 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 74 + m_GlyphIndex: 45 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 75 + m_GlyphIndex: 46 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 76 + m_GlyphIndex: 47 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 77 + m_GlyphIndex: 48 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 78 + m_GlyphIndex: 49 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 79 + m_GlyphIndex: 50 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 80 + m_GlyphIndex: 51 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 81 + m_GlyphIndex: 52 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 82 + m_GlyphIndex: 53 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 83 + m_GlyphIndex: 54 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 84 + m_GlyphIndex: 55 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 85 + m_GlyphIndex: 56 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 86 + m_GlyphIndex: 57 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 87 + m_GlyphIndex: 58 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 88 + m_GlyphIndex: 59 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 89 + m_GlyphIndex: 60 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 90 + m_GlyphIndex: 61 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 91 + m_GlyphIndex: 62 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 92 + m_GlyphIndex: 63 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 93 + m_GlyphIndex: 64 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 94 + m_GlyphIndex: 65 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 95 + m_GlyphIndex: 66 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 96 + m_GlyphIndex: 67 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 97 + m_GlyphIndex: 68 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 98 + m_GlyphIndex: 69 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 99 + m_GlyphIndex: 70 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 100 + m_GlyphIndex: 71 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 101 + m_GlyphIndex: 72 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 102 + m_GlyphIndex: 73 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 103 + m_GlyphIndex: 74 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 104 + m_GlyphIndex: 75 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 105 + m_GlyphIndex: 76 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 106 + m_GlyphIndex: 77 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 107 + m_GlyphIndex: 78 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 108 + m_GlyphIndex: 79 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 109 + m_GlyphIndex: 80 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 110 + m_GlyphIndex: 81 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 111 + m_GlyphIndex: 82 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 112 + m_GlyphIndex: 83 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 113 + m_GlyphIndex: 84 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 114 + m_GlyphIndex: 85 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 115 + m_GlyphIndex: 86 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 116 + m_GlyphIndex: 87 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 117 + m_GlyphIndex: 88 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 118 + m_GlyphIndex: 89 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 119 + m_GlyphIndex: 90 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 120 + m_GlyphIndex: 91 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 121 + m_GlyphIndex: 92 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 122 + m_GlyphIndex: 93 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 123 + m_GlyphIndex: 94 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 124 + m_GlyphIndex: 95 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 125 + m_GlyphIndex: 96 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 126 + m_GlyphIndex: 97 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 160 + m_GlyphIndex: 98 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 161 + m_GlyphIndex: 99 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 162 + m_GlyphIndex: 100 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 163 + m_GlyphIndex: 101 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 164 + m_GlyphIndex: 102 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 165 + m_GlyphIndex: 103 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 166 + m_GlyphIndex: 104 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 167 + m_GlyphIndex: 105 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 168 + m_GlyphIndex: 106 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 169 + m_GlyphIndex: 107 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 170 + m_GlyphIndex: 108 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 171 + m_GlyphIndex: 109 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 172 + m_GlyphIndex: 110 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 173 + m_GlyphIndex: 111 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 174 + m_GlyphIndex: 112 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 175 + m_GlyphIndex: 113 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 176 + m_GlyphIndex: 114 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 177 + m_GlyphIndex: 115 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 178 + m_GlyphIndex: 116 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 179 + m_GlyphIndex: 117 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 180 + m_GlyphIndex: 118 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 181 + m_GlyphIndex: 119 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 182 + m_GlyphIndex: 120 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 183 + m_GlyphIndex: 121 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 184 + m_GlyphIndex: 122 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 185 + m_GlyphIndex: 123 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 186 + m_GlyphIndex: 124 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 187 + m_GlyphIndex: 125 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 188 + m_GlyphIndex: 126 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 189 + m_GlyphIndex: 127 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 190 + m_GlyphIndex: 128 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 191 + m_GlyphIndex: 129 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 192 + m_GlyphIndex: 130 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 193 + m_GlyphIndex: 131 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 194 + m_GlyphIndex: 132 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 195 + m_GlyphIndex: 133 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 196 + m_GlyphIndex: 134 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 197 + m_GlyphIndex: 135 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 198 + m_GlyphIndex: 136 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 199 + m_GlyphIndex: 137 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 200 + m_GlyphIndex: 138 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 201 + m_GlyphIndex: 139 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 202 + m_GlyphIndex: 140 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 203 + m_GlyphIndex: 141 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 204 + m_GlyphIndex: 142 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 205 + m_GlyphIndex: 143 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 206 + m_GlyphIndex: 144 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 207 + m_GlyphIndex: 145 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 208 + m_GlyphIndex: 146 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 209 + m_GlyphIndex: 147 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 210 + m_GlyphIndex: 148 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 211 + m_GlyphIndex: 149 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 212 + m_GlyphIndex: 150 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 213 + m_GlyphIndex: 151 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 214 + m_GlyphIndex: 152 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 215 + m_GlyphIndex: 153 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 216 + m_GlyphIndex: 154 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 217 + m_GlyphIndex: 155 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 218 + m_GlyphIndex: 156 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 219 + m_GlyphIndex: 157 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 220 + m_GlyphIndex: 158 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 221 + m_GlyphIndex: 159 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 222 + m_GlyphIndex: 160 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 223 + m_GlyphIndex: 161 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 224 + m_GlyphIndex: 162 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 225 + m_GlyphIndex: 163 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 226 + m_GlyphIndex: 164 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 227 + m_GlyphIndex: 165 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 228 + m_GlyphIndex: 166 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 229 + m_GlyphIndex: 167 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 230 + m_GlyphIndex: 168 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 231 + m_GlyphIndex: 169 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 232 + m_GlyphIndex: 170 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 233 + m_GlyphIndex: 171 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 234 + m_GlyphIndex: 172 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 235 + m_GlyphIndex: 173 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 236 + m_GlyphIndex: 174 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 237 + m_GlyphIndex: 175 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 238 + m_GlyphIndex: 176 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 239 + m_GlyphIndex: 177 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 240 + m_GlyphIndex: 178 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 241 + m_GlyphIndex: 179 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 242 + m_GlyphIndex: 180 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 243 + m_GlyphIndex: 181 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 244 + m_GlyphIndex: 182 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 245 + m_GlyphIndex: 183 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 246 + m_GlyphIndex: 184 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 247 + m_GlyphIndex: 185 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 248 + m_GlyphIndex: 186 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 249 + m_GlyphIndex: 187 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 250 + m_GlyphIndex: 188 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 251 + m_GlyphIndex: 189 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 252 + m_GlyphIndex: 190 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 253 + m_GlyphIndex: 191 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 254 + m_GlyphIndex: 192 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 255 + m_GlyphIndex: 193 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 8192 + m_GlyphIndex: 1997 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 8193 + m_GlyphIndex: 1998 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 8194 + m_GlyphIndex: 1999 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 8195 + m_GlyphIndex: 2000 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 8196 + m_GlyphIndex: 2001 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 8197 + m_GlyphIndex: 2002 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 8198 + m_GlyphIndex: 2003 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 8199 + m_GlyphIndex: 2004 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 8200 + m_GlyphIndex: 2005 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 8201 + m_GlyphIndex: 2006 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 8202 + m_GlyphIndex: 2007 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 8203 + m_GlyphIndex: 2008 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 8204 + m_GlyphIndex: 2009 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 8205 + m_GlyphIndex: 2010 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 8206 + m_GlyphIndex: 2011 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 8207 + m_GlyphIndex: 2012 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 8210 + m_GlyphIndex: 2013 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 8211 + m_GlyphIndex: 2014 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 8212 + m_GlyphIndex: 2015 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 8213 + m_GlyphIndex: 2016 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 8214 + m_GlyphIndex: 2017 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 8215 + m_GlyphIndex: 2018 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 8216 + m_GlyphIndex: 2019 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 8217 + m_GlyphIndex: 2020 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 8218 + m_GlyphIndex: 2021 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 8219 + m_GlyphIndex: 2022 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 8220 + m_GlyphIndex: 2023 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 8221 + m_GlyphIndex: 2024 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 8222 + m_GlyphIndex: 2025 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 8223 + m_GlyphIndex: 2026 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 8224 + m_GlyphIndex: 2027 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 8225 + m_GlyphIndex: 2028 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 8226 + m_GlyphIndex: 2029 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 8230 + m_GlyphIndex: 2030 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 8234 + m_GlyphIndex: 2031 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 8235 + m_GlyphIndex: 2032 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 8236 + m_GlyphIndex: 2033 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 8237 + m_GlyphIndex: 2034 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 8238 + m_GlyphIndex: 2035 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 8239 + m_GlyphIndex: 2036 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 8240 + m_GlyphIndex: 2037 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 8242 + m_GlyphIndex: 2038 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 8243 + m_GlyphIndex: 2039 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 8244 + m_GlyphIndex: 2040 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 8249 + m_GlyphIndex: 2041 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 8250 + m_GlyphIndex: 2042 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 8252 + m_GlyphIndex: 2043 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 8254 + m_GlyphIndex: 2044 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 8260 + m_GlyphIndex: 2045 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 8286 + m_GlyphIndex: 2046 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 8298 + m_GlyphIndex: 2047 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 8299 + m_GlyphIndex: 2048 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 8300 + m_GlyphIndex: 2049 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 8301 + m_GlyphIndex: 2050 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 8302 + m_GlyphIndex: 2051 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 8303 + m_GlyphIndex: 2052 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 8364 + m_GlyphIndex: 2075 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 8482 + m_GlyphIndex: 2090 + m_Scale: 1 + - m_ElementType: 1 + m_Unicode: 9633 + m_GlyphIndex: 2179 + m_Scale: 1 + m_AtlasTextures: + - {fileID: 28684132378477856} + m_AtlasTextureIndex: 0 + m_UsedGlyphRects: + - m_X: 0 + m_Y: 0 + m_Width: 93 + m_Height: 93 + - m_X: 93 + m_Y: 0 + m_Width: 104 + m_Height: 78 + - m_X: 197 + m_Y: 0 + m_Width: 101 + m_Height: 78 + - m_X: 298 + m_Y: 0 + m_Width: 101 + m_Height: 80 + - m_X: 0 + m_Y: 93 + m_Width: 78 + m_Height: 95 + - m_X: 0 + m_Y: 188 + m_Width: 78 + m_Height: 95 + - m_X: 0 + m_Y: 283 + m_Width: 78 + m_Height: 95 + - m_X: 0 + m_Y: 378 + m_Width: 78 + m_Height: 94 + - m_X: 0 + m_Y: 472 + m_Width: 78 + m_Height: 94 + - m_X: 0 + m_Y: 566 + m_Width: 74 + m_Height: 97 + - m_X: 399 + m_Y: 0 + m_Width: 89 + m_Height: 80 + - m_X: 0 + m_Y: 663 + m_Width: 76 + m_Height: 94 + - m_X: 0 + m_Y: 757 + m_Width: 76 + m_Height: 94 + - m_X: 0 + m_Y: 851 + m_Width: 76 + m_Height: 94 + - m_X: 0 + m_Y: 945 + m_Width: 87 + m_Height: 78 + - m_X: 488 + m_Y: 0 + m_Width: 86 + m_Height: 78 + - m_X: 574 + m_Y: 0 + m_Width: 85 + m_Height: 79 + - m_X: 659 + m_Y: 0 + m_Width: 82 + m_Height: 84 + - m_X: 741 + m_Y: 0 + m_Width: 78 + m_Height: 92 + - m_X: 819 + m_Y: 0 + m_Width: 76 + m_Height: 93 + - m_X: 895 + m_Y: 0 + m_Width: 76 + m_Height: 93 + - m_X: 971 + m_Y: 0 + m_Width: 47 + m_Height: 94 + - m_X: 93 + m_Y: 78 + m_Width: 105 + m_Height: 25 + - m_X: 78 + m_Y: 103 + m_Width: 76 + m_Height: 91 + - m_X: 78 + m_Y: 194 + m_Width: 73 + m_Height: 93 + - m_X: 78 + m_Y: 287 + m_Width: 69 + m_Height: 95 + - m_X: 78 + m_Y: 382 + m_Width: 69 + m_Height: 94 + - m_X: 78 + m_Y: 476 + m_Width: 69 + m_Height: 94 + - m_X: 74 + m_Y: 570 + m_Width: 66 + m_Height: 93 + - m_X: 76 + m_Y: 663 + m_Width: 60 + m_Height: 100 + - m_X: 76 + m_Y: 763 + m_Width: 59 + m_Height: 99 + - m_X: 76 + m_Y: 862 + m_Width: 59 + m_Height: 83 + - m_X: 87 + m_Y: 945 + m_Width: 78 + m_Height: 78 + - m_X: 154 + m_Y: 103 + m_Width: 46 + m_Height: 99 + - m_X: 200 + m_Y: 78 + m_Width: 67 + m_Height: 94 + - m_X: 151 + m_Y: 202 + m_Width: 66 + m_Height: 89 + - m_X: 147 + m_Y: 291 + m_Width: 69 + m_Height: 92 + - m_X: 147 + m_Y: 383 + m_Width: 66 + m_Height: 94 + - m_X: 147 + m_Y: 477 + m_Width: 66 + m_Height: 93 + - m_X: 140 + m_Y: 570 + m_Width: 66 + m_Height: 91 + - m_X: 267 + m_Y: 80 + m_Width: 80 + m_Height: 80 + - m_X: 347 + m_Y: 80 + m_Width: 80 + m_Height: 80 + - m_X: 427 + m_Y: 80 + m_Width: 72 + m_Height: 80 + - m_X: 499 + m_Y: 78 + m_Width: 74 + m_Height: 80 + - m_X: 573 + m_Y: 79 + m_Width: 78 + m_Height: 80 + - m_X: 651 + m_Y: 84 + m_Width: 90 + m_Height: 66 + - m_X: 741 + m_Y: 92 + m_Width: 77 + m_Height: 78 + - m_X: 818 + m_Y: 93 + m_Width: 76 + m_Height: 78 + - m_X: 894 + m_Y: 93 + m_Width: 76 + m_Height: 80 + - m_X: 970 + m_Y: 94 + m_Width: 48 + m_Height: 81 + - m_X: 267 + m_Y: 160 + m_Width: 105 + m_Height: 25 + - m_X: 217 + m_Y: 172 + m_Width: 46 + m_Height: 99 + - m_X: 263 + m_Y: 185 + m_Width: 76 + m_Height: 78 + - m_X: 372 + m_Y: 160 + m_Width: 89 + m_Height: 52 + - m_X: 339 + m_Y: 185 + m_Width: 29 + m_Height: 78 + - m_X: 368 + m_Y: 212 + m_Width: 83 + m_Height: 65 + - m_X: 136 + m_Y: 663 + m_Width: 43 + m_Height: 99 + - m_X: 179 + m_Y: 661 + m_Width: 43 + m_Height: 99 + - m_X: 206 + m_Y: 570 + m_Width: 44 + m_Height: 91 + - m_X: 222 + m_Y: 661 + m_Width: 37 + m_Height: 99 + - m_X: 213 + m_Y: 383 + m_Width: 37 + m_Height: 99 + - m_X: 213 + m_Y: 482 + m_Width: 59 + m_Height: 88 + - m_X: 250 + m_Y: 570 + m_Width: 64 + m_Height: 90 + - m_X: 259 + m_Y: 660 + m_Width: 60 + m_Height: 96 + - m_X: 135 + m_Y: 763 + m_Width: 36 + m_Height: 99 + - m_X: 135 + m_Y: 862 + m_Width: 59 + m_Height: 83 + - m_X: 165 + m_Y: 945 + m_Width: 75 + m_Height: 78 + - m_X: 171 + m_Y: 762 + m_Width: 27 + m_Height: 99 + - m_X: 198 + m_Y: 760 + m_Width: 59 + m_Height: 89 + - m_X: 194 + m_Y: 861 + m_Width: 23 + m_Height: 84 + - m_X: 217 + m_Y: 849 + m_Width: 38 + m_Height: 93 + - m_X: 240 + m_Y: 942 + m_Width: 64 + m_Height: 81 + - m_X: 255 + m_Y: 849 + m_Width: 38 + m_Height: 93 + - m_X: 257 + m_Y: 760 + m_Width: 39 + m_Height: 89 + - m_X: 296 + m_Y: 756 + m_Width: 27 + m_Height: 99 + - m_X: 293 + m_Y: 855 + m_Width: 57 + m_Height: 87 + - m_X: 304 + m_Y: 942 + m_Width: 61 + m_Height: 81 + - m_X: 651 + m_Y: 150 + m_Width: 83 + m_Height: 28 + - m_X: 461 + m_Y: 160 + m_Width: 67 + m_Height: 78 + - m_X: 528 + m_Y: 158 + m_Width: 44 + m_Height: 81 + - m_X: 572 + m_Y: 159 + m_Width: 73 + m_Height: 78 + - m_X: 645 + m_Y: 178 + m_Width: 82 + m_Height: 64 + - m_X: 451 + m_Y: 238 + m_Width: 71 + m_Height: 78 + - m_X: 522 + m_Y: 239 + m_Width: 61 + m_Height: 80 + - m_X: 583 + m_Y: 237 + m_Width: 62 + m_Height: 82 + - m_X: 645 + m_Y: 242 + m_Width: 70 + m_Height: 78 + - m_X: 216 + m_Y: 319 + m_Width: 62 + m_Height: 64 + - m_X: 217 + m_Y: 271 + m_Width: 61 + m_Height: 48 + - m_X: 278 + m_Y: 263 + m_Width: 70 + m_Height: 80 + - m_X: 250 + m_Y: 383 + m_Width: 40 + m_Height: 89 + - m_X: 348 + m_Y: 277 + m_Width: 71 + m_Height: 70 + - m_X: 278 + m_Y: 343 + m_Width: 70 + m_Height: 34 + - m_X: 290 + m_Y: 377 + m_Width: 57 + m_Height: 87 + - m_X: 419 + m_Y: 277 + m_Width: 29 + m_Height: 76 + - m_X: 448 + m_Y: 316 + m_Width: 69 + m_Height: 78 + - m_X: 517 + m_Y: 319 + m_Width: 69 + m_Height: 78 + - m_X: 586 + m_Y: 319 + m_Width: 59 + m_Height: 79 + - m_X: 645 + m_Y: 320 + m_Width: 69 + m_Height: 79 + - m_X: 348 + m_Y: 347 + m_Width: 69 + m_Height: 78 + - m_X: 417 + m_Y: 353 + m_Width: 31 + m_Height: 41 + - m_X: 347 + m_Y: 425 + m_Width: 69 + m_Height: 68 + - m_X: 417 + m_Y: 394 + m_Width: 68 + m_Height: 78 + - m_X: 485 + m_Y: 397 + m_Width: 67 + m_Height: 78 + - m_X: 552 + m_Y: 398 + m_Width: 67 + m_Height: 78 + - m_X: 619 + m_Y: 399 + m_Width: 66 + m_Height: 78 + - m_X: 685 + m_Y: 399 + m_Width: 43 + m_Height: 82 + - m_X: 272 + m_Y: 472 + m_Width: 40 + m_Height: 89 + - m_X: 312 + m_Y: 464 + m_Width: 29 + m_Height: 81 + - m_X: 341 + m_Y: 493 + m_Width: 66 + m_Height: 80 + - m_X: 314 + m_Y: 573 + m_Width: 64 + m_Height: 83 + - m_X: 319 + m_Y: 656 + m_Width: 59 + m_Height: 83 + - m_X: 323 + m_Y: 739 + m_Width: 64 + m_Height: 83 + - m_X: 378 + m_Y: 573 + m_Width: 39 + m_Height: 89 + - m_X: 378 + m_Y: 662 + m_Width: 42 + m_Height: 75 + - m_X: 387 + m_Y: 737 + m_Width: 39 + m_Height: 89 + - m_X: 407 + m_Y: 493 + m_Width: 61 + m_Height: 80 + - m_X: 417 + m_Y: 573 + m_Width: 57 + m_Height: 83 + - m_X: 420 + m_Y: 656 + m_Width: 57 + m_Height: 81 + - m_X: 426 + m_Y: 737 + m_Width: 61 + m_Height: 83 + - m_X: 468 + m_Y: 475 + m_Width: 64 + m_Height: 82 + - m_X: 474 + m_Y: 557 + m_Width: 61 + m_Height: 83 + - m_X: 477 + m_Y: 640 + m_Width: 61 + m_Height: 83 + - m_X: 532 + m_Y: 476 + m_Width: 65 + m_Height: 78 + - m_X: 535 + m_Y: 554 + m_Width: 63 + m_Height: 82 + - m_X: 538 + m_Y: 636 + m_Width: 61 + m_Height: 83 + - m_X: 487 + m_Y: 723 + m_Width: 61 + m_Height: 83 + - m_X: 548 + m_Y: 719 + m_Width: 57 + m_Height: 83 + - m_X: 597 + m_Y: 477 + m_Width: 62 + m_Height: 71 + - m_X: 598 + m_Y: 548 + m_Width: 61 + m_Height: 82 + - m_X: 599 + m_Y: 630 + m_Width: 60 + m_Height: 82 + - m_X: 605 + m_Y: 712 + m_Width: 57 + m_Height: 83 + - m_X: 659 + m_Y: 481 + m_Width: 65 + m_Height: 78 + - m_X: 659 + m_Y: 559 + m_Width: 64 + m_Height: 79 + - m_X: 659 + m_Y: 638 + m_Width: 64 + m_Height: 66 + - m_X: 662 + m_Y: 704 + m_Width: 61 + m_Height: 82 + - m_X: 714 + m_Y: 320 + m_Width: 61 + m_Height: 79 + - m_X: 715 + m_Y: 242 + m_Width: 64 + m_Height: 78 + - m_X: 728 + m_Y: 399 + m_Width: 59 + m_Height: 82 + - m_X: 724 + m_Y: 481 + m_Width: 65 + m_Height: 78 + - m_X: 723 + m_Y: 559 + m_Width: 64 + m_Height: 79 + - m_X: 723 + m_Y: 638 + m_Width: 61 + m_Height: 80 + - m_X: 723 + m_Y: 718 + m_Width: 61 + m_Height: 79 + - m_X: 727 + m_Y: 178 + m_Width: 62 + m_Height: 64 + - m_X: 789 + m_Y: 171 + m_Width: 63 + m_Height: 78 + - m_X: 779 + m_Y: 249 + m_Width: 62 + m_Height: 78 + - m_X: 775 + m_Y: 327 + m_Width: 61 + m_Height: 66 + - m_X: 787 + m_Y: 393 + m_Width: 59 + m_Height: 82 + - m_X: 789 + m_Y: 475 + m_Width: 57 + m_Height: 82 + - m_X: 852 + m_Y: 171 + m_Width: 41 + m_Height: 81 + - m_X: 893 + m_Y: 173 + m_Width: 62 + m_Height: 79 + - m_X: 841 + m_Y: 252 + m_Width: 61 + m_Height: 79 + - m_X: 902 + m_Y: 252 + m_Width: 60 + m_Height: 80 + - m_X: 962 + m_Y: 175 + m_Width: 61 + m_Height: 79 + - m_X: 962 + m_Y: 254 + m_Width: 61 + m_Height: 66 + - m_X: 962 + m_Y: 320 + m_Width: 61 + m_Height: 62 + - m_X: 836 + m_Y: 331 + m_Width: 61 + m_Height: 62 + - m_X: 846 + m_Y: 393 + m_Width: 59 + m_Height: 81 + - m_X: 846 + m_Y: 474 + m_Width: 59 + m_Height: 80 + - m_X: 905 + m_Y: 332 + m_Width: 57 + m_Height: 80 + - m_X: 962 + m_Y: 382 + m_Width: 61 + m_Height: 62 + - m_X: 905 + m_Y: 412 + m_Width: 57 + m_Height: 79 + - m_X: 962 + m_Y: 444 + m_Width: 61 + m_Height: 53 + - m_X: 905 + m_Y: 491 + m_Width: 57 + m_Height: 78 + - m_X: 962 + m_Y: 497 + m_Width: 61 + m_Height: 53 + - m_X: 962 + m_Y: 550 + m_Width: 61 + m_Height: 43 + - m_X: 323 + m_Y: 822 + m_Width: 63 + m_Height: 30 + - m_X: 350 + m_Y: 852 + m_Width: 39 + m_Height: 89 + - m_X: 365 + m_Y: 941 + m_Width: 43 + m_Height: 82 + - m_X: 389 + m_Y: 826 + m_Width: 39 + m_Height: 89 + - m_X: 428 + m_Y: 820 + m_Width: 59 + m_Height: 78 + - m_X: 487 + m_Y: 806 + m_Width: 58 + m_Height: 78 + - m_X: 784 + m_Y: 638 + m_Width: 39 + m_Height: 89 + - m_X: 787 + m_Y: 559 + m_Width: 55 + m_Height: 79 + - m_X: 784 + m_Y: 727 + m_Width: 44 + m_Height: 78 + - m_X: 823 + m_Y: 638 + m_Width: 41 + m_Height: 89 + - m_X: 828 + m_Y: 727 + m_Width: 38 + m_Height: 82 + - m_X: 842 + m_Y: 557 + m_Width: 28 + m_Height: 81 + - m_X: 870 + m_Y: 554 + m_Width: 28 + m_Height: 81 + - m_X: 898 + m_Y: 569 + m_Width: 57 + m_Height: 66 + - m_X: 955 + m_Y: 593 + m_Width: 62 + m_Height: 58 + - m_X: 864 + m_Y: 638 + m_Width: 41 + m_Height: 89 + - m_X: 905 + m_Y: 635 + m_Width: 41 + m_Height: 89 + - m_X: 946 + m_Y: 651 + m_Width: 57 + m_Height: 79 + - m_X: 866 + m_Y: 727 + m_Width: 40 + m_Height: 82 + - m_X: 906 + m_Y: 724 + m_Width: 40 + m_Height: 82 + - m_X: 946 + m_Y: 730 + m_Width: 57 + m_Height: 66 + - m_X: 389 + m_Y: 915 + m_Width: 42 + m_Height: 26 + - m_X: 408 + m_Y: 941 + m_Width: 38 + m_Height: 82 + - m_X: 446 + m_Y: 898 + m_Width: 39 + m_Height: 89 + - m_X: 545 + m_Y: 806 + m_Width: 28 + m_Height: 78 + - m_X: 573 + m_Y: 802 + m_Width: 47 + m_Height: 78 + - m_X: 620 + m_Y: 795 + m_Width: 57 + m_Height: 65 + - m_X: 677 + m_Y: 786 + m_Width: 46 + m_Height: 56 + - m_X: 723 + m_Y: 797 + m_Width: 59 + m_Height: 59 + - m_X: 782 + m_Y: 805 + m_Width: 46 + m_Height: 55 + - m_X: 828 + m_Y: 809 + m_Width: 59 + m_Height: 58 + - m_X: 487 + m_Y: 884 + m_Width: 70 + m_Height: 25 + - m_X: 485 + m_Y: 909 + m_Width: 57 + m_Height: 65 + - m_X: 485 + m_Y: 974 + m_Width: 50 + m_Height: 49 + - m_X: 542 + m_Y: 909 + m_Width: 28 + m_Height: 78 + - m_X: 887 + m_Y: 809 + m_Width: 29 + m_Height: 64 + - m_X: 916 + m_Y: 806 + m_Width: 42 + m_Height: 65 + - m_X: 958 + m_Y: 796 + m_Width: 54 + m_Height: 64 + - m_X: 620 + m_Y: 860 + m_Width: 57 + m_Height: 50 + - m_X: 677 + m_Y: 842 + m_Width: 43 + m_Height: 54 + - m_X: 720 + m_Y: 856 + m_Width: 54 + m_Height: 41 + - m_X: 774 + m_Y: 860 + m_Width: 51 + m_Height: 52 + - m_X: 825 + m_Y: 867 + m_Width: 48 + m_Height: 52 + - m_X: 873 + m_Y: 873 + m_Width: 42 + m_Height: 53 + - m_X: 446 + m_Y: 987 + m_Width: 38 + m_Height: 32 + - m_X: 958 + m_Y: 860 + m_Width: 54 + m_Height: 24 + - m_X: 535 + m_Y: 987 + m_Width: 38 + m_Height: 32 + - m_X: 677 + m_Y: 896 + m_Width: 43 + m_Height: 43 + - m_X: 720 + m_Y: 897 + m_Width: 45 + m_Height: 41 + - m_X: 765 + m_Y: 912 + m_Width: 44 + m_Height: 38 + - m_X: 809 + m_Y: 919 + m_Width: 43 + m_Height: 42 + - m_X: 852 + m_Y: 926 + m_Width: 67 + m_Height: 25 + - m_X: 852 + m_Y: 951 + m_Width: 69 + m_Height: 23 + - m_X: 915 + m_Y: 873 + m_Width: 42 + m_Height: 53 + - m_X: 957 + m_Y: 884 + m_Width: 42 + m_Height: 38 + - m_X: 919 + m_Y: 926 + m_Width: 67 + m_Height: 25 + - m_X: 921 + m_Y: 951 + m_Width: 44 + m_Height: 27 + - m_X: 965 + m_Y: 951 + m_Width: 27 + m_Height: 38 + - m_X: 573 + m_Y: 880 + m_Width: 42 + m_Height: 26 + - m_X: 570 + m_Y: 906 + m_Width: 42 + m_Height: 38 + - m_X: 570 + m_Y: 944 + m_Width: 42 + m_Height: 38 + - m_X: 612 + m_Y: 910 + m_Width: 41 + m_Height: 38 + - m_X: 612 + m_Y: 948 + m_Width: 35 + m_Height: 37 + - m_X: 573 + m_Y: 982 + m_Width: 29 + m_Height: 39 + - m_X: 602 + m_Y: 985 + m_Width: 28 + m_Height: 38 + - m_X: 630 + m_Y: 985 + m_Width: 28 + m_Height: 38 + - m_X: 986 + m_Y: 922 + m_Width: 29 + m_Height: 29 + - m_X: 992 + m_Y: 951 + m_Width: 28 + m_Height: 38 + - m_X: 647 + m_Y: 948 + m_Width: 29 + m_Height: 28 + - m_X: 676 + m_Y: 939 + m_Width: 28 + m_Height: 38 + m_FreeGlyphRects: + - m_X: 78 + m_Y: 93 + m_Width: 15 + m_Height: 10 + - m_X: 74 + m_Y: 566 + m_Width: 4 + m_Height: 4 + - m_X: 198 + m_Y: 78 + m_Width: 2 + m_Height: 25 + - m_X: 151 + m_Y: 194 + m_Width: 3 + m_Height: 8 + - m_X: 147 + m_Y: 287 + m_Width: 4 + m_Height: 4 + - m_X: 267 + m_Y: 78 + m_Width: 31 + m_Height: 2 + - m_X: 488 + m_Y: 78 + m_Width: 11 + m_Height: 2 + - m_X: 573 + m_Y: 78 + m_Width: 1 + m_Height: 1 + - m_X: 651 + m_Y: 79 + m_Width: 8 + m_Height: 5 + - m_X: 818 + m_Y: 92 + m_Width: 1 + m_Height: 1 + - m_X: 970 + m_Y: 93 + m_Width: 1 + m_Height: 1 + - m_X: 200 + m_Y: 172 + m_Width: 17 + m_Height: 30 + - m_X: 263 + m_Y: 172 + m_Width: 4 + m_Height: 13 + - m_X: 368 + m_Y: 185 + m_Width: 4 + m_Height: 27 + - m_X: 140 + m_Y: 661 + m_Width: 39 + m_Height: 2 + - m_X: 250 + m_Y: 660 + m_Width: 9 + m_Height: 1 + - m_X: 136 + m_Y: 762 + m_Width: 35 + m_Height: 1 + - m_X: 179 + m_Y: 760 + m_Width: 19 + m_Height: 2 + - m_X: 171 + m_Y: 861 + m_Width: 23 + m_Height: 1 + - m_X: 198 + m_Y: 849 + m_Width: 19 + m_Height: 12 + - m_X: 217 + m_Y: 942 + m_Width: 23 + m_Height: 3 + - m_X: 259 + m_Y: 756 + m_Width: 37 + m_Height: 4 + - m_X: 293 + m_Y: 849 + m_Width: 3 + m_Height: 6 + - m_X: 499 + m_Y: 158 + m_Width: 29 + m_Height: 2 + - m_X: 572 + m_Y: 158 + m_Width: 1 + m_Height: 1 + - m_X: 645 + m_Y: 159 + m_Width: 6 + m_Height: 19 + - m_X: 451 + m_Y: 212 + m_Width: 10 + m_Height: 26 + - m_X: 522 + m_Y: 238 + m_Width: 6 + m_Height: 1 + - m_X: 572 + m_Y: 237 + m_Width: 11 + m_Height: 2 + - m_X: 216 + m_Y: 291 + m_Width: 1 + m_Height: 28 + - m_X: 263 + m_Y: 263 + m_Width: 15 + m_Height: 8 + - m_X: 348 + m_Y: 263 + m_Width: 20 + m_Height: 14 + - m_X: 278 + m_Y: 377 + m_Width: 12 + m_Height: 6 + - m_X: 448 + m_Y: 277 + m_Width: 3 + m_Height: 39 + - m_X: 517 + m_Y: 316 + m_Width: 5 + m_Height: 3 + - m_X: 417 + m_Y: 347 + m_Width: 2 + m_Height: 6 + - m_X: 347 + m_Y: 377 + m_Width: 1 + m_Height: 48 + - m_X: 485 + m_Y: 394 + m_Width: 32 + m_Height: 3 + - m_X: 552 + m_Y: 397 + m_Width: 34 + m_Height: 1 + - m_X: 619 + m_Y: 398 + m_Width: 26 + m_Height: 1 + - m_X: 250 + m_Y: 472 + m_Width: 22 + m_Height: 10 + - m_X: 290 + m_Y: 464 + m_Width: 22 + m_Height: 8 + - m_X: 272 + m_Y: 561 + m_Width: 69 + m_Height: 9 + - m_X: 341 + m_Y: 464 + m_Width: 6 + m_Height: 29 + - m_X: 312 + m_Y: 545 + m_Width: 29 + m_Height: 25 + - m_X: 314 + m_Y: 545 + m_Width: 27 + m_Height: 28 + - m_X: 314 + m_Y: 656 + m_Width: 5 + m_Height: 4 + - m_X: 319 + m_Y: 739 + m_Width: 4 + m_Height: 17 + - m_X: 378 + m_Y: 737 + m_Width: 9 + m_Height: 2 + - m_X: 416 + m_Y: 425 + m_Width: 1 + m_Height: 68 + - m_X: 417 + m_Y: 656 + m_Width: 3 + m_Height: 6 + - m_X: 416 + m_Y: 472 + m_Width: 69 + m_Height: 3 + - m_X: 416 + m_Y: 472 + m_Width: 52 + m_Height: 21 + - m_X: 468 + m_Y: 557 + m_Width: 6 + m_Height: 16 + - m_X: 474 + m_Y: 640 + m_Width: 3 + m_Height: 16 + - m_X: 532 + m_Y: 475 + m_Width: 20 + m_Height: 1 + - m_X: 532 + m_Y: 554 + m_Width: 3 + m_Height: 3 + - m_X: 535 + m_Y: 636 + m_Width: 3 + m_Height: 4 + - m_X: 477 + m_Y: 723 + m_Width: 10 + m_Height: 14 + - m_X: 538 + m_Y: 719 + m_Width: 10 + m_Height: 4 + - m_X: 597 + m_Y: 476 + m_Width: 22 + m_Height: 1 + - m_X: 597 + m_Y: 548 + m_Width: 1 + m_Height: 6 + - m_X: 598 + m_Y: 630 + m_Width: 1 + m_Height: 6 + - m_X: 599 + m_Y: 712 + m_Width: 6 + m_Height: 7 + - m_X: 659 + m_Y: 477 + m_Width: 26 + m_Height: 4 + - m_X: 659 + m_Y: 704 + m_Width: 3 + m_Height: 8 + - m_X: 734 + m_Y: 150 + m_Width: 7 + m_Height: 28 + - m_X: 734 + m_Y: 170 + m_Width: 84 + m_Height: 1 + - m_X: 734 + m_Y: 170 + m_Width: 55 + m_Height: 8 + - m_X: 779 + m_Y: 242 + m_Width: 10 + m_Height: 7 + - m_X: 775 + m_Y: 320 + m_Width: 4 + m_Height: 7 + - m_X: 775 + m_Y: 393 + m_Width: 12 + m_Height: 6 + - m_X: 787 + m_Y: 475 + m_Width: 2 + m_Height: 6 + - m_X: 893 + m_Y: 171 + m_Width: 1 + m_Height: 2 + - m_X: 841 + m_Y: 249 + m_Width: 11 + m_Height: 3 + - m_X: 1018 + m_Y: 0 + m_Width: 5 + m_Height: 175 + - m_X: 955 + m_Y: 173 + m_Width: 15 + m_Height: 2 + - m_X: 955 + m_Y: 173 + m_Width: 7 + m_Height: 79 + - m_X: 836 + m_Y: 327 + m_Width: 5 + m_Height: 4 + - m_X: 897 + m_Y: 331 + m_Width: 5 + m_Height: 62 + - m_X: 897 + m_Y: 332 + m_Width: 8 + m_Height: 61 + - m_X: 386 + m_Y: 822 + m_Width: 1 + m_Height: 30 + - m_X: 323 + m_Y: 852 + m_Width: 27 + m_Height: 3 + - m_X: 350 + m_Y: 941 + m_Width: 15 + m_Height: 1 + - m_X: 386 + m_Y: 826 + m_Width: 3 + m_Height: 26 + - m_X: 426 + m_Y: 820 + m_Width: 2 + m_Height: 6 + - m_X: 789 + m_Y: 557 + m_Width: 53 + m_Height: 2 + - m_X: 846 + m_Y: 554 + m_Width: 24 + m_Height: 3 + - m_X: 898 + m_Y: 554 + m_Width: 7 + m_Height: 15 + - m_X: 955 + m_Y: 569 + m_Width: 7 + m_Height: 24 + - m_X: 870 + m_Y: 635 + m_Width: 35 + m_Height: 3 + - m_X: 946 + m_Y: 635 + m_Width: 9 + m_Height: 16 + - m_X: 905 + m_Y: 724 + m_Width: 1 + m_Height: 3 + - m_X: 428 + m_Y: 898 + m_Width: 18 + m_Height: 17 + - m_X: 431 + m_Y: 898 + m_Width: 15 + m_Height: 43 + - m_X: 548 + m_Y: 802 + m_Width: 25 + m_Height: 4 + - m_X: 605 + m_Y: 795 + m_Width: 15 + m_Height: 7 + - m_X: 662 + m_Y: 786 + m_Width: 15 + m_Height: 9 + - m_X: 782 + m_Y: 797 + m_Width: 2 + m_Height: 8 + - m_X: 485 + m_Y: 898 + m_Width: 2 + m_Height: 11 + - m_X: 906 + m_Y: 806 + m_Width: 10 + m_Height: 3 + - m_X: 1003 + m_Y: 651 + m_Width: 20 + m_Height: 145 + - m_X: 946 + m_Y: 796 + m_Width: 12 + m_Height: 10 + - m_X: 720 + m_Y: 842 + m_Width: 3 + m_Height: 14 + - m_X: 774 + m_Y: 856 + m_Width: 8 + m_Height: 4 + - m_X: 825 + m_Y: 860 + m_Width: 3 + m_Height: 7 + - m_X: 873 + m_Y: 867 + m_Width: 14 + m_Height: 6 + - m_X: 446 + m_Y: 1019 + m_Width: 39 + m_Height: 4 + - m_X: 484 + m_Y: 987 + m_Width: 1 + m_Height: 36 + - m_X: 535 + m_Y: 974 + m_Width: 7 + m_Height: 13 + - m_X: 765 + m_Y: 897 + m_Width: 9 + m_Height: 15 + - m_X: 720 + m_Y: 938 + m_Width: 45 + m_Height: 85 + - m_X: 809 + m_Y: 912 + m_Width: 16 + m_Height: 7 + - m_X: 852 + m_Y: 919 + m_Width: 21 + m_Height: 7 + - m_X: 916 + m_Y: 871 + m_Width: 42 + m_Height: 2 + - m_X: 957 + m_Y: 871 + m_Width: 1 + m_Height: 13 + - m_X: 557 + m_Y: 884 + m_Width: 16 + m_Height: 22 + - m_X: 557 + m_Y: 884 + m_Width: 13 + m_Height: 25 + - m_X: 615 + m_Y: 880 + m_Width: 5 + m_Height: 30 + - m_X: 612 + m_Y: 906 + m_Width: 8 + m_Height: 4 + - m_X: 535 + m_Y: 1019 + m_Width: 38 + m_Height: 4 + - m_X: 570 + m_Y: 982 + m_Width: 3 + m_Height: 5 + - m_X: 535 + m_Y: 1021 + m_Width: 67 + m_Height: 2 + - m_X: 602 + m_Y: 982 + m_Width: 10 + m_Height: 3 + - m_X: 647 + m_Y: 978 + m_Width: 318 + m_Height: 7 + - m_X: 658 + m_Y: 978 + m_Width: 307 + m_Height: 45 + - m_X: 658 + m_Y: 989 + m_Width: 365 + m_Height: 34 + - m_X: 1012 + m_Y: 651 + m_Width: 11 + m_Height: 271 + - m_X: 999 + m_Y: 884 + m_Width: 24 + m_Height: 38 + - m_X: 957 + m_Y: 922 + m_Width: 29 + m_Height: 4 + - m_X: 1017 + m_Y: 593 + m_Width: 6 + m_Height: 358 + - m_X: 1020 + m_Y: 593 + m_Width: 3 + m_Height: 430 + - m_X: 1015 + m_Y: 651 + m_Width: 8 + m_Height: 300 + - m_X: 653 + m_Y: 910 + m_Width: 24 + m_Height: 29 + - m_X: 653 + m_Y: 910 + m_Width: 23 + m_Height: 38 + - m_X: 704 + m_Y: 939 + m_Width: 61 + m_Height: 84 + - m_X: 704 + m_Y: 950 + m_Width: 105 + m_Height: 73 + - m_X: 704 + m_Y: 961 + m_Width: 148 + m_Height: 62 + - m_X: 647 + m_Y: 977 + m_Width: 274 + m_Height: 8 + - m_X: 647 + m_Y: 976 + m_Width: 29 + m_Height: 9 + - m_X: 658 + m_Y: 977 + m_Width: 263 + m_Height: 46 + - m_X: 658 + m_Y: 976 + m_Width: 18 + m_Height: 47 + - m_X: 704 + m_Y: 974 + m_Width: 217 + m_Height: 49 + m_fontInfo: + Name: Liberation Sans + PointSize: 86 + Scale: 1 + CharacterCount: 250 + LineHeight: 98.90625 + Baseline: 0 + Ascender: 77.84375 + CapHeight: 59.1875 + Descender: -18.21875 + CenterLine: 0 + SuperscriptOffset: 77.84375 + SubscriptOffset: -12.261719 + SubSize: 0.5 + Underline: -12.261719 + UnderlineThickness: 6.298828 + strikethrough: 23.675 + strikethroughThickness: 0 + TabWidth: 239.0625 + Padding: 9 + AtlasWidth: 1024 + AtlasHeight: 1024 + atlas: {fileID: 0} + m_AtlasWidth: 1024 + m_AtlasHeight: 1024 + m_AtlasPadding: 9 + m_AtlasRenderMode: 4169 + m_glyphInfoList: [] + m_KerningTable: + kerningPairs: [] + m_FontFeatureTable: + m_GlyphPairAdjustmentRecords: + - m_FirstAdjustmentRecord: + m_GlyphIndex: 3 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -4.75 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 36 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 3 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -1.546875 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 55 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 3 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -1.546875 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 60 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 20 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -6.390625 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 20 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 36 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -4.75 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 3 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 36 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -6.390625 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 55 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 36 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -6.390625 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 57 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 36 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -3.1875 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 58 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 36 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -6.390625 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 60 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 36 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -1.546875 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 89 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 36 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -1.546875 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 90 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 36 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -1.546875 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 92 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 36 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -6.390625 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 2020 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 41 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -9.53125 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 15 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 41 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -9.53125 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 17 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 41 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -4.75 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 36 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 47 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -3.1875 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 3 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 47 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -6.390625 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 55 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 47 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -6.390625 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 57 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 47 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -6.390625 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 58 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 47 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -6.390625 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 60 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 47 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -3.1875 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 92 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 47 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -4.75 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 2020 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 51 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -1.546875 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 3 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 51 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -11.09375 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 15 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 51 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -11.09375 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 17 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 51 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -6.390625 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 36 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 53 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -1.546875 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 55 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 53 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -1.546875 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 57 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 53 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -1.546875 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 58 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 53 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -1.546875 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 60 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 55 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -1.546875 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 3 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 55 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -9.53125 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 15 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 55 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -4.75 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 16 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 55 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -9.53125 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 17 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 55 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -9.53125 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 29 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 55 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -9.53125 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 30 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 55 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -6.390625 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 36 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 55 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -1.546875 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 50 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 55 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -9.53125 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 68 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 55 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -9.53125 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 70 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 55 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -9.53125 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 72 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 55 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -3.1875 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 76 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 55 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -9.53125 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 82 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 55 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -3.1875 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 85 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 55 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -9.53125 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 86 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 55 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -3.1875 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 88 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 55 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -4.75 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 90 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 55 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -4.75 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 92 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 57 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -7.890625 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 15 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 57 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -4.75 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 16 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 57 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -7.890625 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 17 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 57 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -3.1875 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 29 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 57 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -3.1875 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 30 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 57 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -6.390625 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 36 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 57 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -6.390625 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 68 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 57 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -4.75 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 72 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 57 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -1.546875 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 76 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 57 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -4.75 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 82 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 57 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -3.1875 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 85 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 57 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -3.1875 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 88 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 57 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -3.1875 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 92 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 58 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -4.75 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 15 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 58 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -1.546875 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 16 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 58 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -4.75 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 17 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 58 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -1.546875 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 29 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 58 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -1.546875 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 30 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 58 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -3.1875 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 36 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 58 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -3.1875 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 68 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 58 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -1.546875 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 72 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 58 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -1.546875 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 82 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 58 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -1.546875 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 85 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 58 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -1.546875 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 88 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 58 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -0.75 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 92 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 60 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -1.546875 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 3 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 60 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -11.09375 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 15 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 60 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -7.890625 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 16 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 60 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -11.09375 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 17 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 60 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -4.75 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 29 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 60 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -5.578125 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 30 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 60 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -6.390625 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 36 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 60 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -6.390625 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 68 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 60 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -7.890625 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 72 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 60 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -3.1875 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 76 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 60 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -7.890625 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 82 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 60 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -6.390625 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 83 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 60 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -7.890625 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 84 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 60 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -4.75 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 88 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 60 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -4.75 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 89 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 73 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -1.546875 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 73 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 73 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 1.546875 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 2020 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 85 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -4.75 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 15 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 85 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -4.75 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 17 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 85 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 3.1875 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 2020 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 89 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -6.390625 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 15 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 89 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -6.390625 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 17 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 90 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -4.75 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 15 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 90 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -4.75 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 17 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 92 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -6.390625 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 15 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 92 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -6.390625 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 17 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 2019 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -1.546875 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 2019 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 2020 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -3.1875 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 3 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 2020 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -1.546875 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 86 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 2020 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -1.546875 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 2020 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + fallbackFontAssets: [] + m_FallbackFontAssetTable: + - {fileID: 11400000, guid: 2e498d1c8094910479dc3e1b768306a4, type: 2} + m_CreationSettings: + sourceFontFileName: + sourceFontFileGUID: e3265ab4bf004d28a9537516768c1c75 + pointSizeSamplingMode: 0 + pointSize: 86 + padding: 9 + packingMode: 4 + atlasWidth: 1024 + atlasHeight: 1024 + characterSetSelectionMode: 1 + characterSequence: 32 - 126, 160 - 255, 8192 - 8303, 8364, 8482, 9633 + referencedFontAssetGUID: 8f586378b4e144a9851e7b34d9b748ee + referencedTextAssetGUID: + fontStyle: 0 + fontStyleModifier: 0 + renderMode: 4169 + includeFontFeatures: 1 + m_FontWeightTable: + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + fontWeights: + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + - regularTypeface: {fileID: 0} + italicTypeface: {fileID: 0} + normalStyle: 0 + normalSpacingOffset: 0 + boldStyle: 0.75 + boldSpacing: 7 + italicStyle: 35 + tabSize: 10 +--- !u!28 &28684132378477856 +Texture2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: LiberationSans SDF Atlas + m_ImageContentsHash: + serializedVersion: 2 + Hash: 00000000000000000000000000000000 + m_ForcedFallbackFormat: 4 + m_DownscaleFallback: 0 + serializedVersion: 2 + m_Width: 1024 + m_Height: 1024 + m_CompleteImageSize: 1048576 + m_TextureFormat: 1 + m_MipCount: 1 + m_IsReadable: 0 + m_StreamingMipmaps: 0 + m_StreamingMipmapsPriority: -92 + m_AlphaIsTransparency: 0 + m_ImageCount: 1 + m_TextureDimension: 2 + m_TextureSettings: + serializedVersion: 2 + m_FilterMode: 1 + m_Aniso: 1 + m_MipBias: 0 + m_WrapU: 0 + m_WrapV: 0 + m_WrapW: 0 + m_LightmapFormat: 0 + m_ColorSpace: 0 + image data: 1048576 + _typelessdata: 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040607090b0d0f101112121313131212100f0e0c0a08060603000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000407090a1313131313131313130e0d0b08030000000000000000000000000000000000000002070a0c0d1313131313131313130b0a0805000000000000000000000000000000000000000000000000000000000000050a0d0f10131313131313130e0d0b0803000000000000000000000000000000000000000000000004080a0a13131313131313131313131313131313131313131313131313131313131313131313131313131313130a09070400000000000000000000000000000000000000000006060606060600000000000000000000000000000000000000000000020507080c0f1112131211100c080806020000000000000000000000030607090d1011121312110e0a070604010000000000000000000000000000000000000000000000000000000000000000000000000606060606060000000000000000000000000000000000000000000000000000000000010507070c0f1112131312100c08080602000000000000000000000000000000000000000000000000000000000000000000030608091313131313120707050100000000000000000000000000000000000000000000000000000000000105070713131313130c0b09060100000000000000000000000000000000000000000000000000000000000306080913131313131207070501000000000000000000000000000000000000000000000000000000000105070713131313130c0b09060100000000000000000000000000000000000004080a0a0b0b0b0b0b0b0b07060401000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030607090b0d0f1111121313121211100f0d0a0807050200000000000000000000000000000000000000000000000000000000000000000003080c0e0e131313131313130f0e0c09040000000000000000000000000000000000000000000000000000000000000003070b0d0e131313131313130e0e0c0803000000000000000000000003080c0e0e131313131313130f0e0c09040000000000000000000000000000000000000000000000000000000000000003070b0d0e131313131313130e0e0c080300000000000000000000000000000000000000000000040613131313131313131312110e09040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000205070c10131315171a1c1d1e1e1f20201f1f1e1d1c1b19171513120f0b06060401000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050b101316172020202020202020201b1a18140f080100000000000000000000000000000000070e1317191a202020202020202020181715110c060000000000000000000000000000000000000000000000000000030a10161a1c1d202020202020201b1a18140f080100000000000000000000000000000000000000050b101416172020202020202020202020202020202020202020202020202020202020202020202020202020202020171614100b0500000000000000000000000000000106090b0c131313131313080705020000000000000000000000000000000002090e111414181c1e1f201f1e1c191514120e090300000000000000060b101213161a1d1e1f201e1d1b171413110d0701000000000000000000000000000000000000000000000000000000000000030608091313131313130b0a0805000000000000000000000000000000000000000000000002080d111314191c1e1f201f1e1c191514120e09030000000000000000000000000000000000000000000000000000000000040a0f12151520202020201f1413110d08020000000000000000000000000000000000000000000000000002080d1113142020202020191815120d060000000000000000000000000000000000000000000000000000040a0f12151520202020201f1413110d080200000000000000000000000000000000000000000000000002080d1113142020202020191815120d06000000000000000000000000000000050b10141617181818181818181413110d07010000000000000000000001030405060606060504040200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000104060b10121315171a1c1d1e1f1f201f1f1e1d1b19171514120e0906030000000000000000000000000000000000000000000000000000000001090f14181a1b202020202020201c1b191510090200000000000000000000000000000000000000000000000000000001080e1317191a202020202020201b1a18140f09010000000000000001090f14181a1b202020202020201c1b191510090200000000000000000000000000000000000000000000000000000001080e1317191a202020202020201b1a18140f0901000000000000000000000000000000000001070c10132020202020202020201f1d1a150f0800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000104090e1214181c1f20222426282a2a2b2c2c2c2c2c2b2a2927262422201f1c171413110d0705020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080f161c2022232d2d2d2d2d2d2d2d2d282724201a130b0200000000000000000000000000010a12191f2326272d2d2d2d2d2d2d2d2d2424211d171009000000000000000000000000000000000000000000000000040d151c2126292a2d2d2d2d2d2d2d2727241f1a130b0200000000000000000000000000000000000810171c2023242d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2423201c161008000000000000000000000000060d1215181920202020201f1514120e090300000000000000000000000002080e141a1e202125292a2b2c2c2b292622211e1a150e0903000000020a11171c1f2023272a2b2c2c2b2a282420201d18130c07000000000000000000000000000000000000000000000000000000030a0f121515202020202020181715110c060000000000000000000000000000000000000002080d13191e202125292b2c2d2c2b292622211e1a150e09030000000000000000000000000000000000000000000000000000060e151b1f21222c2d2d2d2d2c21201d19130c040000000000000000000000000000000000000000000000050c13191d20212d2d2d2d2d2524221e181109010000000000000000000000000000000000000000000000060e151b1f21222c2d2d2d2d2c21201d19130c0400000000000000000000000000000000000000000000050c13191d20212d2d2d2d2d2524221e181109010000000000000000000000000810171c2023242525252525252520201d18130c0400000000030607090b0e0f1112121313121211100f0d0a0807050200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070d1113171c1f20222426292a2b2b2c2c2c2b2b2a28262422211e1a1312100c0600000000000000000000000000000000000000000000000000030b131a202427282d2d2d2d2d2d2d292825211b140c0300000000000000000000000000000000000000000000000000020b12191f2326272d2d2d2d2d2d2d282724201a130b030000000000030b131a202427282d2d2d2d2d2d2d292825211b140c0300000000000000000000000000000000000000000000000000020b12191f2326272d2d2d2d2d2d2d282724201a130b03000000000000000000000000000000030b12181c1f2d2d2d2d2d2d2d2d2c2c2a2620191209000000000000000000000000000000000000000000000000000000000000000000000000000000000001070d11141a1e2123282c2d2f31333537373838393939383837353433302e2d2b282221201d1814120e0904000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008111921272c2f303939393939393939393433302b251d140b010000000000000000000000000a141c242a2f323339393939393939393931302d28221b120900000000000000000000000000000000000000000000030d161f262d323536393939393939393433302b251d140b0000000000000000000000000000000008111a22282d30313939393939393939393939393939393939393939393939393939393939393939393939393939393939302f2c28211a1108000000000000000000010911181e2224252d2d2d2d2d2c22211e1a140d0600000000000000000000050d14191f252a2d2e3235373839383736322f2e2b26201a150e0600070c141c23282b2d303336383939383734312d2c29241d18120b03000000000000000000000000000000000000000000000000060e151a1f21222c2d2d2d2d2d2424211d1710090000000000000000000000000000000000050c13191e252a2d2e3235373939393836332e2d2b261f1a150e0600000000000000000000000000000000000000000000000006101820262b2e2f3939393939382e2d29251e160e04000000000000000000000000000000000000000000050e161e252a2d2e393939393932312e29231b13090000000000000000000000000000000000000000000006101820262b2e2f3939393939382e2d29251e160e040000000000000000000000000000000000000000050e161e252a2d2e393939393932312e29231b1309000000000000000000000008121a22282d3031313131313131312d2c29241d160d0405060b10121316181a1c1d1f1f20201f1f1e1d1b19171514120e0906030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090e13181d2023282b2d2f3133353737383939393837373533312e2d2a26201f1c17110d0802000000000000000000000000000000000000000000010b151d252b303435393939393939393534312c261e150c000000000000000000000000000000000000000000000000000b141d242b303334393939393939393534302b251d150b01000000010b151d252b303435393939393939393534312c261e150c000000000000000000000000000000000000000000000000000b141d242b303334393939393939393534302b251d150b0100000000000000000000000000030d151d23292c3939393939393939393836312b241b1208000000000000000000000000000000000000000000000000000000000000000000000000000003090e13181d20262a2d2e34383a3c3e40424344454546464645454342413f3d3b3938332d2d2c2924201e1a14100c070100000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f19232b33383c3d46464646464646464641403c362f261d1308000000000000000000000007121c262e353b3f404646464646464646463e3d39342c241b10060000000000000000000000000000000000000000000a151f2831383e42434646464646464641403c362f261d0f05000000000000000000000000000005101a232c33393c3d46464646464646464646464646464646464646464646464646464646464646464646464646464646463d3c38332c231a1005000000000000000009131b23292e31323939393939392e2d2a261f180f060000000000000000080e171e252a30363a3b3f424445464544433f3b3a37312b2620180f0b12181e262e34383a3c40434445464544413d3a39352f28231c150c050000000000000000000000000000000000000000000006101820262b2e2f39393939393931302d28221a1209000000000000000000000000000000070e161e252a3036393a3f424445464645433f3b3a37312b2620180f0900000000000000000000000000000000000000000000040e18222a31373a3c4646464646453a3935302820160c0200000000000000000000000000000000000000020c1620283036394646464646463f3e3a342d251b11060000000000000000000000000000000000000000040e18222a31373a3c4646464646453a3935302820160c02000000000000000000000000000000000000020c1620283036394646464646463f3e3a342d251b110600000000000000000005101a242c33393c3d3e3e3e3e3e3e3e3a39352f281f160b1113171c1f20222527292a2b2c2c2d2c2b2b2a28262422211e1a1312100c06000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0f151a1d24292c2e34383a3c3e404244444546464545444342403d3b3a36312d2c28231c19130d08020000000000000000000000000000000000000009131d272f373c40414646464646464642413d3730271e0e050000000000000000000000000000000000000000000000030d1d262e363c3f414646464646464641403c372f271d130900000009131d272f373c40414646464646464642413d3730271e0e050000000000000000000000000000000000000000000000030d1d262e363c3f414646464646464641403c372f271d1309000000000000000000000000010b151f272f343846464646464646464645423d352d24190f04000000000000000000000000000000000000000000000000000000000000000000000001070c141a1d24292c31363a3b404546484a4d4f505151525353525251504f4e4c4a4846443f3d3a39352f2d2a251f1d18120e090300000000000000000000000000000000000000000000000000000000000000000000000000000000000b16212b353d44484a5353535353535353534e4c4841382f251a0f03000000000000000000020e19242e3840474b4d5353535353535353534b49453e362c22170c000000000000000000000000000000000000000005101c26313a43494e50535353535353534e4c4841382f21170d03000000000000000000000000000b17222c363e44494a53535353535353535353535353535353535353535353535353535353535353535353535353535353534a48443e352c21160b0000000000000006111b252d343a3e3f4646464646463b3a36312921180b0200000000000008111a202930363b4246474b4f51525352514f4c4847423c37312a211b151c232830383f4446494d5051525351504e4a4745403a342e271e170e050000000000000000000000000000000000000000030e18222a31373a3c4646464646463e3d39342c241a0e0500000000000000000000000000071019202830363a4146474c4f51525352514f4c4847423c37312a211b12090100000000000000000000000000000000000000000a15202a343c4347485353535353524746413a32281e13080000000000000000000000000000000000000008131e28323a41465353535353534c4a463f372d23180d01000000000000000000000000000000000000000a15202a343c4347485353535353524746413a32281e130800000000000000000000000000000000000008131e28323a41465353535353534c4a463f372d23180d0100000000000000000b17222c363e44494a4b4b4b4b4b4b4b4745403a31281d191d2023282b2d2f3234363738393939393837373533312e2d2a26201f1c17110d08020000000000000000000000000000000000000000000000000000000000000000000000000000070c151b20262b2f35393a3f4446484a4d4f5051525253525251504e4c4a4846423d3a38342e29251e19140d050000000000000000000000000000000000030f1a252f3941484d4e535353535353534f4d4942393020170d02000000000000000000000000000000000000000000010b151f2e3840474c4d535353535353534e4d4841392f251a0f0300030f1a252f3941484d4e535353535353534f4d4942393020170d02000000000000000000000000000000000000000000010b151f2e3840474c4d535353535353534e4d4841392f251a0f03000000000000000000000007121d2731394045535353535353535353524e473f352b20150900000000000000000000000000000000000000000000000000000000000000000000030b12181f252a2f35393b4246484b51535557595b5d5d5e5f5f5f5f5f5e5d5c5a59575553504a4a4745413b3a36302c29241d1a140f0a03000000000000000000000000000000000000000000000000000000000000000000000000000004101c27333d474f54566060606060606060605b58534a41362b20140400000000000000000007131f2a35404a52575a606060606060606060575550483e34281d1101000000000000000000000000000000000000000a16212d38434c545a5d606060606060605a58534a4133291f140900000000000000000000000004101c28333e48505557606060606060606060606060606060606060606060606060606060606060606060606060606060606057554f473e33281c10040000000000010d18232d373f464a4c5353535353524846423b33291d140a000000000008111a232c323b41464d5254585c5d5e5f5f5e5c5955534d47423c332d241e272e343e424a5053565a5d5e5f5f5e5d5b5753514b444039302920170f05000000000000000000000000000000000000000a15202a343c4347485353535353534b49453e362c20170d020000000000000000000000071119222b323a41464c5254585c5e5f605f5e5c5955534d47423c332d241b130900000000000000000000000000000000000000030f1b26313c464e53555f606060605f54524c443a3025190c030000000000000000000003030303030303010d1925303a444c525f6060606060585651493f34291e1206000000000000000000000000000000000000030f1b26313c464e53555f606060605f54524c443a3025190c0300000000000000000003030303030303010d1925303a444c525f6060606060585651493f34291e12060000000000000004101c28333e485055575858585858585853514b433a2f2625292d2e34383a3c3e414244454546464545444342403d3b3a36312d2c28231c19130d080200000000000000000000000000000000000000000000000000000000000000000000030b121820262b31373a4145474a50535557595c5d5e5e5f5f5f5e5e5d5b595755534d4946443f3835302a251e170e08020000000000000000000000000000000814202b37414b53595b606060606060605c59544b4232291f140900000000000000000000000000000000000000000007121d2731404a52585a606060606060605b59534b41372b201408000814202b37414b53595b606060606060605c59544b4232291f140900000000000000000000000000000000000000000007121d2731404a52585a606060606060605b59534b41372b20140800000000000000000000000c18232f39434b515f606060606060605f5e5951473d31261a0e010000000000000000000000000000000000000000000000000000000000000000060d151d232930363a4045474d5355545c60626466686a6a6b6b6c6c6c6b6b6a6867666361605b545654514b4846423b39352f2a251f1a150e08020000000000000000000000000000000000000000000000000000000000000000000000000713202c38444f5960636c6c6c6c6c6c6c6c6c67645c53483c3020150a0000000000000000000a17232f3b47525c63666c6c6c6c6c6c6c6c6c64615a5045392d1d1207000000000000000000000000000000000000000d1a26323e49545e66696c6c6c6c6c6c6c67645c53453b30251a0e0200000000000000000000000814202d3944505a61646c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6361594f44382c201407000000000006121e29343f4951565860606060605f55534d453b2f261b1106000000050f1a232c353e444c52575e6165686a6b6c6b6a6965625f57534d453f372d27303940444f545c606366696b6c6c6b6a6764605d55514a423b322921170b020000000000000000000000000000000000030f1a26313c464e53555f6060606060575550483e32291e130800000000000000000000050e19232b343d444c52565e6165686a6c6c6c6b6966615f57534d453e362d251b110800000000000000000000000000000000000006121f2b37434e585f626c6c6c6c6c6b615e564c4135291e150b00000000000004080a0a1010101010101010111d2a36414c565e6c6c6c6c6c6c65625b51463a2e22150900000000000000000000000000000000000006121f2b37434e585f626c6c6c6c6c6b615e564c4135291e150b000000000004080a0a1010101010101010111d2a36414c565e6c6c6c6c6c6c65625b51463a2e221509000000000000000814202d3944505a616464646464646464605d554b41382d3035393a3f4446494b4d4f5052525353525251504e4c4a4846423d3a38342e29251e19140d050000000000000000000000000000000000000000000000000000000000000000070c151d232831373c42474b5154545c60626466686a6a6b6c6c6c6b6a6a686664615f575653504a46413a3630292019130d0500000000000000000000000000000c1824303c48535d64686c6c6c6c6c6c6c68655d54443b3025190e0000000000000000000000000000000000000000000c18232f3943525c64676c6c6c6c6c6c6c68645d53483c3024180c000c1824303c48535d64686c6c6c6c6c6c6c68655d54443b3025190e0000000000000000000000000000000000000000000c18232f3943525c64676c6c6c6c6c6c6c68645d53483c3024180c0000000000000000000004101c2934404b555c6c6c6c6c6c6c6c6c6c6a63594e42362a1d1104000000000000000000000000000000000000000000000000000000000000030a11171f272f343b42464b5153575f6165666d6f71737576777878797979787876757472706e6c666663605d5554524d4745403936312b262019140d0500000000000000000000000000000000000000000000000000000000000000000000000916222f3c4854606b70797979797979797979746e64584c3c32261b0f0300000000000000000c1926323f4b57636e73797979797979797979716c615549392f23180c000000000000000000000000000000000000000f1c2935424e5a66707679797979797979746e64574d42362a1f140900000000000000000000000a1623303c4955616c707979797979797979797979797979797979797979797979797979797979797979797979797979797979706b6155483c2f23160900000000000915222e3a46515b62656c6c6c6c6c6c615f574d41382d22170b0300030d17212c353e474f565e61696e7275777879787776726e69625f5751493f373039424a515961666d6f7376777879787774706d67605c544d443b33291d140a000000000000000000000000000000000006121f2b37434e585f626c6c6c6c6c6c64615a50443a3025190e040000000000000000020d17202b353d464f565e61686d7275777879797876726e69625f5750483f372d23190d0400000000000000000000000000000000000815212e3a47535f6a6f7979797979786d685e52463d30271c1207000000050b101416171d1d1d1d1d1d1d1d1d202d3946525e68767979797979726d62564a3e312418080100000000000000000000000000000000000815212e3a47535f6a6f7979797979786d685e52463d30271c12070000050b101416171d1d1d1d1d1d1d1d1d202d3946525e68767979797979726d62564a3e31241808010000000000000a1623303c4955616c70717171717171716d675d53493f383a4146474a505355585a5c5d5e5f5f605f5e5e5d5b595755534d4946443f3835302a251e170e080200000000000000000000000000000000000000000000000000000000000810191e272e343c43474d53555d6064666d6f7173757777787979787877767573706e696763605c54524c46413b322a251e170e06000000000000000000000000000e1a2734404d59646f7479797979797979756f65564d42362a1c11060000000000000000000000000000000000000004101c2934404b55646e7479797979797979746f64594d4034271a0e000e1a2734404d59646f7479797979797979756f65564d42362a1c11060000000000000000000000000000000000000004101c2934404b55646e7479797979797979746f64594d4034271a0e0000000000000000000006131f2c3845515c67767979797979797979756a5e5245382c1f12060000000000000000000000000000000000000000000000000000000000040c151c2328313940454d52555d6065696e7276797b7d80828384848586868585848382817f7d7b797673706d6765615e5753514b46423b37312a251e170e07000000000000000000000000000000000000000000000000000000000000000000030f1b27333f495363707d868686868686868686807467584e43372b1f12060000000000000005111e2a36424d576673808686868686868686867e7164554b4034291c1004000000000000000000000000000000000000101d2a3643505d697682868686868686868074695e52463b30251a0e02000000000000000000000a1724313d4a5764707d86868686868686868686868686868686868686868686868686868686868686868686868686868686867d7063574a3d3024170a00000000000b1824313e4a56626d727979797979796e695f53493f33271f14090009141f29333e474f5961686e747b7e828485868584827f7b756e69625b51493f39424b545c606c70787c80838485868483817d7a726d665e564d453b2f261c1106000000000000000000000000000000000815212e3a47535f6a6f797979797979716c61564c41362a20160c020000000000000009141f29333d474f5960686d747a7f828485868584827f7b756e69625a51493f352b1f160c01000000000000000000000000000000000915222f3c4855626f7c8786868686857a6d61594f42392e23180c03000810171c202324292929292929292929292e3a4754616d7a86868686867f7265584c3f322519130c04000000000000000000000000000000000915222f3c4855626f7c8786868686857a6d61594f42392e23180c030810171c202324292929292929292929292e3a4754616d7a86868686867f7265584c3f322519130c0400000000000a1724313d4a5764707e7e7e7e7e7e7e7e796d655b504443484c5254545c60626567696a6b6c6c6c6c6b6a6a686664615f575653504a46413a3630292019130d0500000000000000000000000000000000000000000000000000000009111a222a303940454e53575f62676d7175797b7d8082838485858685858483817f7d7b7874706d66615e56524c443e36302920180f070000000000000000000000000e1b2835414e5b687481868686868686868175695e5246382d22170b0000000000000000000000000000000000000006131f2c3845515c677480868686868686868174685b4e4135281b0e000e1b2835414e5b687481868686868686868175695e5246382d22170b0000000000000000000000000000000000000006131f2c3845515c677480868686868686868174685b4e4135281b0e000000000000000000000714202d3a4753606d798686868686868687796c5f5346392c20130600000000000000000000000000000000000000000000000000000000060d161e262e343d434b51575e61676d72777b7f8286888a8c8e909091929292929291908f8d8c8a888583807d7a76726e6964605d55534d47433c36302920191007000000000000000000000000000000000000000000000000000000000000000005121f2b3744505b6574818d939393939393939184786a5f53473b2e211508000000000000000714202d3a46525e69778390939393939393938e8275675c5145382c1f13060000000000000000000000000000000000000a1723303d4a5663707d89959393939392867b6e61574d42362a1f1409000000000000000000000a1724313d4a5764707d8a9393939393939393939393939393939393939393939393939393939393939393939393939393938a7d7063574a3d3024170a00000000000c1925323f4c5865727f8686868686867b6e655b50443b31251a0e050e1a25313b454f59616b707a81878b8f90919292918f8c88827b726d625b5147404b545c666d757d84898d9091929291908e8a857f786e695e574d42382d22170b010000000000000000000000000000000915222f3c4855626f7b8786868686867e71685e52463e32281e1308000000000000020e1a25303b454f59606b6f7a81868b8f91929392918f8c87827b716c625b51473d31281d1307000000000000000000000000000000000815212e3a47535f6a73808d9693978e81746b60544a4034281f140908111a21282d303136363636363636363636363a4754616d7a879393938b7f7265584c3f3229241e160d040000000000000000000000000000000815212e3a47535f6a73808d9693978e81746b60544a4034281f1409111a21282d303136363636363636363636363a4754616d7a879393938b7f7265584c3f3229241e160d04000000000a1724303d4a5763707d868b8b8b8b8b8b81776c605a504e54565e6165666d6f7174757778787979787877767573706e696763605c54524c46413b322a251e170e060000000000000000000000000000000000000000000000000009121b232c343c424b51585f62696e747a7d8185888a8c8f9091919292929191908e8c8a8884807d79736d68615e565046413a322a2119100700000000000000000000000916232f3c4956626f7c89959393939392867b6e61544a3f33281c0f030000000000000000000000000000000000000714202d3a4753606d7985929393939395897c6f6356493c30231609000916232f3c4956626f7c89959393939392867b6e61544a3f33281c0f030000000000000000000000000000000000000714202d3a4753606d7985929393939395897c6f6356493c30231609000000000000000000000714202d3a4753606d7a8693939393939286796c5f5346392c201306000000000000000000000000000000000000000000000000000000060f171f2830383f444f555c60696e737a7f84888b8f929897999b9d9d9e9e9f9f9f9e9e9d9b9a99969892908c8986827f7b76716d67615e57534e46413b322b22190f04000000000000000000000000000000000000000000000000000000000000000613202d394653606c7884919e9f9f9f9f9fa196887c6f6255483c3025190d010000000000000814212e3b4754616e7b8795a09f9f9f9f9f9f9285796d6053473a2d22170b0000000000000000000000000000000000000916222f3c4854606b7683909da79fa3998d8074695e52463b3025190e020000000000000000000a1724313d4a5764707d8a979f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f968a7d7063574a3d3024170a00000000000613202d394653606c7782909893988f82776c60574d42362a20170d121e2a36424d57616b707d868e939a9b9d9e9d9d9d9c98948f877f726d62594f45515c666d78818a9196999c9e9d9d9e9d9a98928c837b6e695e544a3f33281d12070000000000000000000000000000000815212e3a47535f6a737f8c95939392857a6d615a50443a3024190d04000000000005111e2a36424d57606b6f7d858d92999b9d9c9b9c9e9c9a938f867e726d62594f433a2f24180d0100000000000000000000000000000006121f2b37434e58606d7984919e9f93887d6f665c51443b31261a0d101a232c33393c3d4343434343434343434343434754616d7a87949f988b7f7265584c3f39352f281f160c01000000000000000000000000000006121f2b37434e58606d7984919e9f93887d6f665c51443b31261a0d1a232c33393c3d4343434343434343434343434754616d7a87949f988b7f7265584c3f39352f281f160c010000000a16232f3c4855616b727f8c93979797938d80736c6158586062686d7175797c7e8082838585868685858483817f7d7b7874706d66615e56524c443e36302920180f07000000000000000000000000000000000000000000000009121b242d353e464e545c606a6f757b81868a8e929797999b9d9d9e9f9f9f9e9d9d9b999796918d8985807a746e68615a524c443c332b22191007000000000000000000000915222e3b4854606a7783909daa9fa3998c7f73665b5044382b1f1409000000000000000000000000000000000006121f2b37434e5864717e8a97a29f9f9d9083776b6054483b2f221509000915222e3b4854606a7783909daa9fa3998c7f73665b5044382b1f1409000000000000000000000000000000000006121f2b37434e5864717e8a97a29f9f9d9083776b6054483b2f221509000000000000000000000714202d3a4753606d7a86939f9f9f9f9286796c5f5346392c2013060000000000000000000000000000000000000000000000000000050e172129313a424a505960676d737b80858b9195989c9fa3a39f9d9b9a999898989898999b9c9d9fa3a29f9c9999928f8b87837e79746e69625f58524c443d342b21160a000000000000000000000000000000000000000000000000000000000000000916232f3c4956626f7c8996a1adacacacb2a8998c7f7266564c41362a1d1105000000000004101c2834404b5465717e8b98a7b1acacacaea2988a7d7063544a3f33281c0f0300000000000000000000000000000000000714202c38444f5963707d8a959fabab9f92867b6e61564d42362a1f14080000000000000000000a1724313d4a5764707d8a97a3acacb2acaba6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a3968a7d7063574a3d3024170a000000000005121f2b3744505b656e7b86929f9f948b7e72695e53463f32291f1414212d3a46535e69707d8692989f9d9b9691909192999f9e99928b7f726b60554e58606d78818e939ea09e9892909091979d9f9f9590847b6e665b5044392f23180c00000000000000000000000000000006121f2b37434e58606d78839099a1978e81756c61564c4135291f160c01000000000714202d3a46525e696f7d8691979f9f9892908e8f91979f9f98928b7f726b60554b4035291d1307000000000000000000000000000000030f1b26313c45515d67707d8a939e9a9183786d60574d42362a1f1617212c353e44494a5050505050505050505050505054616d7a8794a0988b7f726558504745413a31281e13080000000000000000000000000000030f1b26313c45515d67707d8a939e9a9183786d60574d42362a1f16212c353e44494a5050505050505050505050505054616d7a8794a0988b7f726558504745413a31281e13080000000714202c38444f59636d74818e959fa59c928a7e716a60626a6f757a7e8285888b8d8f9091929293929191908e8c8a8884807d79736d68615e565046413a322a2119100700000000000000000000000000000000000000000007101b242d363e474f585f666d737c82878e92989b9ea2a9a6a8aaa8a7a6a6a6a7a8a9a8a6a8a19e9a97928c86807a716c615e564d453c342b22190e0500000000000000000007131f2c38434e5865727e8b98a2aeab9e9184786c6053463b30251a0e00000000000000000000000000000000000814212e3a47535f6a7683909ca9aea2988b7f7265594f43382c1f13070007131f2c38434e5865727e8b98a2aeab9e9184786c6053463b30251a0e00000000000000000000000000000000000814212e3a47535f6a7683909ca9aea2988b7f7265594f43382c1f1307000000000000000000000714202d3a4753606d7a8693a0acac9f9286796c5f5346392c20130600000000000000000000000000000000000000000000000000030d172029333b434c545c606b707980868d92979da0a29f9b989892908e8d8c8c8b8b8b8c8d8e8f919299979a9d9fa39f9c9a938f8b85807b756e6a615e564e463d32271b0f03000000000000000000000000000000000000000000000000000000000006121e2b37424d576673808d99a8b1acaaacaea99d908376685e5246392d201306000000000006131f2c3845515c6675828f9ba8b0aba9abb0aa9a8e8174665b5044382b1f1206000000000000000000000000000000000004101c27333d4855616b7783909da7aea3988d8074695e52463b3025190e0200000000000000000a1724313d4a5764707d8a97a3b0b2a8a19e9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a968a7d7063574a3d3024170a0000000000030f1b27333f49535f69727f8c959f9f92867b6e615a50443b3025191f2c38434e58616e7b869298a29c938e88848384868c9299a39f93887d6f675c535f6a73808d939ea197928b858483858990959fa0969083786c60554b4034291c10040000000000000000000000000000030f1a26313c44515c666f7c87929f9e938a7d70685d52453d31281d130700000007131f2c38434f59616e7b859298a19a938c86838282858a9297a29f93877d70675d51453a2f24180d010000000000000000000000000000000a15202935404b55616b75818e98a0958c7f72695f53463e31281e1c28333e474f55575c5c5c5c5c5c5c5c5c5c5c5c5c5c616d7a8794a0988b7f72655c5c54524c433a2f24190d0100000000000000000000000000000a15202935404b55616b75818e98a0958c7f72695f53463e31281e28333e474f55575c5c5c5c5c5c5c5c5c5c5c5c5c5c616d7a8794a0988b7f72655c5c54524c433a2f24190d01000004101c28333e47515b606d79839096a1a49f92867c6f6a6f767c81868b8f9298989a9c9d9e9f9f9f9f9e9d9d9b999796918d8985807a746e68615a524c443c332b2219100700000000000000000000000000000000000000050e19222d363e485059616a6f7980878f93999fa3aaabaaaaa29f9d9b9a9a999a9a9b9d9fa2aaa9aba9a19e98928d857e756d685f574e463c342a20170c030000000000000000030f1b27323d4754606d7a85929facaca1968a7d7063574d42362a1c110600000000000000000000000000000004101c2934404b55626e7b88949fabac9f92867a6d6054473d32271b0f0300030f1b27323d4754606d7a85929facaca1968a7d7063574d42362a1c110600000000000000000000000000000004101c2934404b55626e7b88949fabac9f92867a6d6054473d32271b0f03000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c201306000000000000000000000000000000000000000000000000020b151f29323b454d565d666d747d848c92999fa29f9c98928f8b88858381807f7f7e7e7f7f8081828486888a8d9092999b9ea19f9c98928d86817c746e6860584e43382c1f130700000000000000000000000000000000000000000000000000000000000814212e3a47535f697784919daaa7a09d9fa2aa9f93867a6d6154473a2e23170c00000000000713202d3a4653606d7985929faca69f9c9fa6ab9e9285796c605346392d20130a0000000000000000000000000000000000000b16212c38444f5964707d8a95a0acaa9f92867b6e61564d41362a1e140800000000000000000a1724313d4a5764707d8a97a3b0aca196918d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8a7d7063574a3d3024170a0000000000000b17222d38414d57606d78839099a2988f82766c62564d41362a20222e3b4854606a75828f98a29c918c817b7876777a7f87929aa49a9184796d6056626e7c87929fa19791857e797776787c838f949f9f958b7f72675c5145382c1f13060000000000000000000000000000000a15202834404a54606a73808d96a09e91857a6d60594f433a2f24180d0300000915222f3b4854606b75828f97a19f9388807a767576797e859297a2999184796d60554b4035291d1104000000000000000000000000000000040c18242f39434f59616e7b85929f9f92867b6e615a50433a2f24202d39444f5961646969696969696969696969696969696d7a8794a0988b7f72696969605d564c4135291d11040000000000000000000000000000040c18242f39434f59616e7b85929f9f92867b6e615a50433a2f242d39444f5961646969696969696969696969696969696d7a8794a0988b7f72696969605d564c4135291d11040000000b17212c353f45515c676e7a849198a2a39891857b747c82898e92999c9fa2aaa7a8aaa8a8a7a6a6a7a8a9a8a6a8a19e9a97928c86807a716c615e564d453c342b22190e050000000000000000000000000000000000020d17202b343e48505a616b707c838c92999fa4abaca7a09d999892908f8d8d8d8d8d8f909298989c9fa4abaaa29f97928a827a6e6960584e463c32291e150b0000000000000000000a16202c3945515d6774818e9aa7b1a89b8f8275695e5246382e23170b00000000000000000000000000000006131f2c3845515c6774808d9aa6b0a79b8e8174685d5245392b21160a0000000a16202c3945515d6774818e9aa7b1a89b8f8275695e5246382e23170b00000000000000000000000000000006131f2c3845515c6774808d9aa6b0a79b8e8174685d5245392b21160a00000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013060000000000000000000000000000000000000000000000000a141d27313a444d575f686d78808991969fa39e9b948f8a85827e7b7977757373727171727273747677797b7e8083868a8e92979b9fa29f99928e87817a6f6a6054483b2e22150900000000000000000000000000000000000000000000000000000000000815222f3b4855626e7b8895a0aca095909298a2a4998a7e7164544a3f34281c1003000000000a1723303d4a5663707d8998a2a99f9490949faba197897c6f6356493c31261b0f03000000000000000000000000000000000005101c28333e4653606c7883909da7aea3988d8074685e52463b3025190e02000000000000000a1724313d4a5764707d8a97a3b0ab9e91848080808080808080808080808080808080808080808080808080808080808080807c6e6255483b2f22150800000000000006111b262f3c44505c666f7c86929f9f948b7e71685e52463e32292834404b54626f7c89939e9f948c7f746e696a686d737e88939fa0968b7f72655e6875828f99a39e91857b716d676a6a6f78828f98a29f9285796d6053473a2e23170b000000000000000000000000000000030c18232e39424e58606d7984919aa1978e81746b60554b4035291f150b0105111e2a36414c56636f7c89939e9e938b7e736d6868666d717c85929fa1968c8073675d5145392c2013070000000000000000000000000000000007121d27313e46525e69727f8b959f988f82756c61554c41352923303c4955616c70767676767676767676767676767676767a8794a0988b7f767676766d685d5245392c20130600000000000000000000000000000007121d27313e46525e69727f8b959f988f82756c61554c413529303c4955616c70767676767676767676767676767676767a8794a0988b7f767676766d685d5245392c20130600000005101a232834404b555e686f7c86929aa4a197908381878f949b9fa3abacaaaba39f9d9c9b9a999a9a9b9d9fa2aaa9aba9a19e98928d857e756d685f574e463c342a20170c030000000000000000000000000000000009141f29323d46505a626c717d8690959fa3ababa49f9b95908c898584828180808081828385888b8f93999fa2aaa9a19e938f847b6f6a60584e443b30271d1207000000000000000004111d2935414b55626f7c88959fabac9f92877b6e61544a3f34281c100300000000000000000000000000000714202d3a4753606d7985929eabaca095897c6f63564c413529190f0400000004111d2935414b55626f7c88959fabac9f92877b6e61544a3f34281c100300000000000000000000000000000714202d3a4753606d7985929eabaca095897c6f63564c413529190f0400000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c201306000000000000000000000000000000000000000000000006111c262f39434c565f696e7a828d929ea0a09d938e88827d7975716e6c666867666565656565666869666d6e7174767a7d81858a8e92989ea19f99928e867c6f6256493c2f2316090000000000000000000000000000000000000000000000000000000005111e2a36414c5666727f8c99a7aa9d908386929fab9b8e8175665c5044382c1f120600000005121e2a36424d576774808d9aaaa1979083909ca9a99a8d807367584e43372b1f12060000000000000000000000000000000000000b161f2b3744505b65717e8a95a0acaa9f92867b6e61564c41362a1e14080a0a0a0a0a0a0a0a1724313d4a5764707d8a97a3b0a99c8f827673737373737373737373737373737373737373737373737373737373737373736e6a5f53473a2e211408000000000000000a141d28343f4a545f6a737f8c95a09f92857b6e615a50443a302c3845515c6674818e9aa59c9082786c615f575d616c74818d99a49d9083776a616d7a86929fa0958a7d7069605c5860666e7b86929fa2978a7e7164544a3f34281c100300000000000000000000000000000007121c27303c45515c676f7d88939f9d93897d70675d51453d31271d12070714202d3946525e6875828f9ca59b8e81756c615d565c606a717e8b96a09f92857a6d6053473a2f24180c00000000000000000000000000000000010b151f2a36424d56606c788390999e948a7e71675d51453c3026313d4a5764707d8283838383838383838383838383838383909ca99e9184838383827a6d6054473a2d211407000000000000000000000000000000010b151f2a36424d56606c788390999e948a7e71675d51453c30313d4a5764707d8283838383838383838383838383838383909ca99e9184838383827a6d6054473a2d21140700000000081118232e39434c565f6a717e88939fa5a095908d93999fa6acaaa8a09d999992908f8e8d8d8d8d8f909298989c9fa4abaaa29f97928a827a6e6960584e463c32291e150b000000000000000000000000000000030d1925303b444e58626c717e879298a0a7afa79f99938e88837f7c79777574737373747577797c7f83878d92989ea5ada59e9691857c6f6a5f564c42392e23180c0300000000000000010d18242f3a47535f6a7683909da9afa3998c7f73665c5044382b1f14090a0a0a0a0a0a0a0a0a0a0a0a0a0a121f2b37434e5864717e8b97a2adaa9d9083776b6054443a2f24190700000000010d18242f3a47535f6a7683909da9afa3998c7f73665c5044382b1f14090a0a0a0a0a0a0a0a0a0a0a0a0a0a121f2b37434e5864717e8b97a2adaa9d9083776b6054443a2f2419070000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130600000000000000000000000000000000000000000000000b17222d38424b555e686e7b838f949da49c969189817c76706d666561605b545a5959585858595a5b545c60626467676d7174797d81868c91969da09e9285796d6053473a2d201407000000000000000000000000000000000000000000000000000000000714202d3946525e687683909da9a79a8d80828f9ca99f9285796d6053463a2d2013090000000714212d3a46535f697784919daa9e91857e8a97a8aa9e9184776a5f53473a2e211509000000000000000000000000000000000000030f1b27333f4953606c7884919da8aea3988d8074685e52463b3025191616161616161616161724313d4a5764707d8a97a3b0a99c8f82766967676767676767676767676767676767676767676767676767676767676767625f584e43372b1f120600000000000000020b17232e38424e58606d78839099a2978f82756c61564c41362d3a4653606d7985929fa2988a7d70655b534d5259616e7b87939f9f95887b6f65727e8b99a39d9184786c6057514e545e6874818d9aa99c8f8276665c5044382b1f1206000000000000000000000000000000000b151e2934404b55606b74808d96a19e9184796d60594f43392f24180c0814212e3b4754616e7a86929f9f94887b6e615a524c5058606c7884919da2978b7e7164554b4035291d100400000000000000000000000000000000030d1925303b44505b666f7c87929f9e91847a6d60584e42382e323f4b5865727e8b8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f90949faba096918f8f8f877a6d6154473a2e21140700000000000000000000000000000000030d1925303b44505b666f7c87929f9e91847a6d60584e42382e3f4b5865727e8b8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f90949faba096918f8f8f877a6d6154473a2e211407000000000007121d27303b444e58616c73808c939ea7a09d9a9fa4abaca59e9b96918c898684828180808081828385888b8f93999fa2aaa9a19e938f847b6f6a60584e443b30271d120700000000000000000000000000010b151f2a36424d56606a717e889299a2aaafa49c959087817c77726f6d6668676766676768666c6f72767b80868e939fa3aaa8a09792867c6f685e544b403428201509000000000000000007131d2b37434e5864717e8b97a2adab9e9184786d6053463b31251a16161616161616161616161616161616212e3a47535f6a7683909ca9aea2988b7f7265594f4332281e1308000000000007131d2b37434e5864717e8b97a2adab9e9184786d6053463b31251a16161616161616161616161616161616212e3a47535f6a7683909ca9aea2988b7f7265594f4332281e13080000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130600000000000000000000000000000000000000000000030f1c28333f4a545d676d7a8491959fa39f928d847d756f6a64605c545553504a4d4c4c4b4b4c4c4d4e4a51535557555d6064666d70757a7f848a9095978c7f72675d5145392c1f1306000000000000000000000000000000000000000000000000000000000814212e3b4754616e7a87939faca7978a7e7f8c99aba297897c6f6356493c31251a0e0200000815222e3b4855616e7b8896a0a89b8e827a8796a0aca096887b6f6255483c31251a0e020000000000000000000000000000000000000b17222d3844505b66717e8a96a0acaa9f92867a6e61564c41362a232323232323232323232324313d4a5764707d8a97a3b0a99c8f8276695c5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a55534e463c31261a0f02000000000000000006111c26303c44515c666f7c87929f9e938a7e71685e52463e323c4956626f7c8997a29f9285796d6053494246535f697683909da7988b7f726875828f9bab998c8073655b5045424d5663707c8998a39f9285796d6053463a2d20130700000000000000000000000000000000030c18232f39434f59606d7984919ea1968d80746b60554b4035291e150b1825323e4b5865717e8b99a39c908376695f53464144505b65727f8c99a99c8f8276675d5145392c1f1306000000000000000000000000000000000009141f28333f4a545f6a74808d96a1978d80746a60544a3f34323f4b5865727e8b989c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9fa6b0a8a09e9c9c94877a6d6154473a2e211407000000000000000000000000000000000009141f28333f4a545f6a74808d96a1978d80746a60544a3f343f4b5865727e8b989c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9fa6b0a8a09e9c9c94877a6d6154473a2e2114070000000000000b151e29323c46505a606c77818e96a0acaaa7acafa7a09d938e89847f7c7a777575747373747577797c7f83878d92989ea5ada59e9691857c6f6a5f564c42392e23180c0300000000000000000000000007121d27313946525e696f7c86929aa3ababa39f928d837c756f6a6662605c545a5a5a5a5a545b606265696e747b818a9298a2a9a9a19891847a6e665c51453c31261a0e0500000000000000010f1b26323c4753606d7985929fabada1968a7d7063574d42362a23232323232323232323232323232323232934404b55626e7b88949fabac9f92867a6d6054473d3221160c010000000000010f1b26323c4753606d7985929fabada1968a7d7063574d42362a23232323232323232323232323232323232934404b55626e7b88949fabac9f92867a6d6054473d3221160c010000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130600000000000000000000000000000000000000000005101a232b3844505b666d79839096a0a299928b8079706b625f5853514b4846443f40403f3e3e3f3f4041404446484b4c5154545c6063686d72797e838a91857a6d60554b4035291d100400000000000000000000000000000000000000000000000000000004111d2935414c5565727e8b9aa4aca095877a7d8999a3a9998d807366574d42362a1e12050004101d2935404b5565727f8b98a8a9988b7f7784919daaa8998c7f7366574d42362a1e120500000000000000000000000000000000000006111b28333f4a54606d7884919ea8aea2988d8073685e52463a30303030303030303030303030313d4a5764707d8a97a3b0a99c8f8276695c4f4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4847433c332a201509000000000000000000000a141e2834404a545f6a73808d95a09e92857a6d615a50443a3f4b5865727e8b98a99c8f8276665c504138424d576673808d99a69b8e8174677784919eab96897d706353493f3b4653606d7986929fa298887b6e6255483b2f221508000000000000000000000000000000000007121d27313d45515d67707d89939e9f93887d6f675d51453d30271c121d2935414c566875828e9bab998c7f7266574d42353f4953626e7b8897a29f92867a6d6053473a2d2014070000000000000000000000000000000000020b17222d38424e58606d7984919e9f93877c6f665c50443b303f4b5865727e8b98a9a49f969393939393939393939394979ea8a39b98939393877a6d6154473a2e2114070000000000000000000000000000000000020b17222d38424e58606d7984919e9f93877c6f665c50443b3f4b5865727e8b98a9a49f969393939393939393939394979ea8a39b98939393877a6d6154473a2e211407000000000000030c17202a343e44505b656d7a84919daab6b4b3a9a0959189817c7773706d6769686766676768666c6f72767b80868e939fa3aaa8a09792867c6f685e544b4034282015090000000000000000000000000c18232f3943505a616e7b859198a3acaca399928b80786f6a625f585653504a4e4d4d4d4e4a505355575e61696e757e869297a2aaaaa1969082786d60574e42372b21170b00000000000000000a151f2c3845515d6774808d9aa6b0a89c8f8275695e5346382e3030303030303030303030303030303030303845515c6774808d9aa6b0a79b8e8174685d5245392c201304000000000000000a151f2c3845515d6774808d9aa6b0a89c8f8275695e5346382e3030303030303030303030303030303030303845515c6774808d9aa6b0a79b8e8174685d5245392c201304000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013060000000000000000000000000000000000000000000b17212a36424d57606c78818f959fa29892877e736d676059534e46454040434546464544423f3b3a373134383a3b3e4145474a5053565d60666d71787e847f73675d5143392f24180c000000000000000000000000000000000000000000000000000000000613202c3945515d6776828f9cacaa9d9184777a86929faa9d908477695e53463a2d2114070006131f2c3945515d6776828f9ca9a197887c74818d9aa7aa9d908377695e53463a2d211408000000000000000000000000000000000000000b17222d3844505c66717e8b96a1acaa9f92867a6e61564c413d3d3d3d3d3d3d3d3d3d3d3d3d3d3d4a5764707d8a97a3b0a99c8f8276695c4f43404040404040404040404040404040404040404040404040404040403b3a37312a21180e0300000000000000000000020c18232e39424e58606d79839199a1978e81756c61564c41414e5b6774818e9aa79a8d807467544a3f2f3e4b5764717e8a97a49d9083776d7a86939fa399877b6e6154473b3845515c677784909daa978a7e7164574b3e3124180b0000000000000000000000000000000000010b151f2935404b55616b74818e97a19a9184796d60584e42392e2318202d3946525d687884919ea996897c706356493d31394653606c7985929fa398897c6f6356493c3023160900000000000000000000000000000000000006111c262f3c45515d67707d8a949e999083786d60574d42363f4b5865727e8b97a19a938a86868686868686868686878c97a39b918b868686867a6d6154473a2e21140700000000000000000000000000000000000006111c262f3c45515d67707d8a949e999083786d60574d423f4b5865727e8b97a19a938a86868686868686868686878c97a39b918b868686867a6d6154473a2e2114070000000000000008131e28313a46535e696f7d86929facb9b9ada29791837d75706b6663605d555b5a5a5a5a545b606265696e747b818a9298a2a9a9a19891847a6e665c51453c31261a0e050000000000000000000004101c2934404b55616c76828f97a1aaafa49a92877e736d665f58534e4946443f41404040413f4446484d53565e616c717c859298a2aca89f948d80736a5f53473e33281c10040000000000000004101d2935404b55626e7b88949fabac9f93877b6e61544a3f3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d4753606d7985929eabaca095897c6f63564c4135291d11040000000000000004101d2935404b55626e7b88949fabac9f93877b6e61544a3f3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d4753606d7985929eabaca095897c6f63564c4135291d1104000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c201306000000000000000000000000000000000000000004101c28333a46525e69727f8b939ea39992867d716c605c554f47434446494d5051525352514f4c4847433c37332d2f2f35393a3f44464c52545c60656c7179796d60554b4131271f1911060000000000000000000000000000000000000000000000000000000714212d3a4754606d7a86929faca79a8d81747683909da9a095877b6e6154483b2f24180c000714202d3a4753606d7a86929fab9e928579717e8a97a7aca095877b6e6154483b3025190d0100000000000000000000000000000000000006111c28343f4a54606d7984919ea8aea2988d8073685e52494949494949494949494949494949494a5764707d8a97a3b0a99c8f8276695c4f43363434343434343434343434343434343434343434343434343434342f2e2b2620180f0600000000000000000000000007121c27303c45515c676f7c87939f9e938a7e70685d5246434f5c6976828f9ca5988b7f7265584c3f2e3c4956636f7c8996a29f9285786f7b889aa49f9286796c6053463934404b556975828f9ca5998c7f7266594c3f3326190c000000000000000000000000000000000000030d18242f3a434f59606d7a85919ea0968d80736a60544a4034281e212e3a4754616d7a8796a1a297877a6d6054473a2d3744505b6576828f9caa988b7f7265584c3f3225190c000000000000000000000000000000000000000a141d2935414b55616c75828f98a0958b7f72695e52463e3a4754616d7a85919a93867d797979797979797979797a8794a0988b7f7979797976685e5246392d201307000000000000000000000000000000000000000a141d2935414b55616c75828f98a0958b7f72695e52463e4754616d7a85919a93867d797979797979797979797a8794a0988b7f7979797976685e5246392d201307000000000000010d19242f3a43505a616e7b859299a3aebbb8ab9e92857a706b6360595653514b4e4d4d4d4e4a505355575e61696e757e869297a2aaaaa1969082786d60574e42372b21170b0000000000000000000006131f2c3845515c67707d8a949fa9b0a69f93887e716c605c544e47433c3a38342e3433342d3338393c42464d525a616a6f7c86929aa4afa69f92877b6e62594f44392d20150a00000000000000000c18242f3947535f6a7683909ca9afa4998c8073665c504949494949494949494949494949494949494949494e5864717e8b97a2adaa9d9083776b6054443a2f24190d0100000000000000000c18242f3947535f6a7683909ca9afa4998c8073665c504949494949494949494949494949494949494949494e5864717e8b97a2adaa9d9083776b6054443a2f24190d01000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130600000000000000000000000000000000000000000714202c38444f59616e7b86929fa59f92877d706b615a514b4344495053565a5c5e5f5f5f5e5c5955534e46443f382f27343c424a5053565b5d5f5f5b60666c6d675c51454039312b2317110a0200000000000000000000000000000000000000000000000004101c2834404b5464717e8a99a3aea7978a7e7173808d99aba7988b7f7265554b4035291d10040a1724303d4a5763707d8a98a3a89b8f82756e7a8795a0aca7988b7f7265564c4135291d1105000000000000000000000000000000000000000b17232e3844515c66727e8b96a1adaa9f92867a6d615656565656565656565656565656565656565764707d8a97a3b0a99c8f8276695c4f433629272727272727272727272727272727272727272727272727272722211f1a150e0600000000000000000000000000000b151e2834404b55606a73808d96a09e91857a6d61594f43505d6a7683909da4978a7e7164574b3e313b4855616e7b8894a19f9286796f7c8996ac9e918578655b5044372e414e5b6774818e9aa6998d8073665a4d4033271a0d0000000000000000000000000000000000000007131d28313d45525d68717e8a939e9f92877c6f665c51443c3026232f3c4956626f7c8995a89f928578685d5245392c333f49536774818e9aa79a8d8174675a4e4134271b0e00000000000000000000000000000000000000020b18242f3a43505a616e7b86929f9f92867b6e61594f433946525e68707d88939a92857a6e656c6c6c6c6c6c6d7a8794a0988b7f726c6c6c6c5e564c41362a1d110500000000000000000000000000000000000000020b18242f3a43505a616e7b86929f9f92867b6e61594f4346525e68707d88939a92857a6e656c6c6c6c6c6c6d7a8794a0988b7f726c6c6c6c5e564c41362a1d110500000000000004111d2935414c55626c76828f97a1abb5afacada2978e81776c605a504947454042414040413f4446484d53565e616c717c859298a2aca89f948d80736a5f53473e33281c1004000000000000000003101c28343f4a54606d7984919ea6b0aa9e948c7f736c625a504a423c37322d2c282327272722282b2d31363b42465058606a707e88939fa8aea3998f82766c6155493c31261b0f000000000000000007121d2b37434e5864717e8a97a1adab9e9184796d6056565656565656565656565656565656565656565656565f6a7683909ca9aea2988b7f7265594f4332281e130800000000000000000007121d2b37434e5864717e8a97a1adab9e9184796d6056565656565656565656565656565656565656565656565f6a7683909ca9aea2988b7f7265594f4332281e130800000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130600000000000000000000000000000000000000000a16232f3c4855616b75828f98a29d938b7e716b60595045414950535b606366696b6c6c6c6b6866625f58535049413d333d464e545b6063676a6b6c6c6b696663605c54514b433d3528221c140b02000000000000000000000000000000000000000000000006131f2c3845515c6675818e9babaca095877a6e707d8999a3a89c8f8275675d5145392c1f1306121f2b37434e586774818d9aaaa8988b7f72687784919daaa99c8f8376685e5246392d2013070000000000000000000000000000000000000006111c2834404a54606d7984919ea9aea2988d8073686363636363636363636363636363636363636364707d8a97a3b0a99c8f8276695c4f4336291c1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1514120f0903000000000000000000000000000000030c18232e39434e58606d7984919aa1978e81746b61564c515e6a7784919da3978a7d7064574a3d313b4754616e7a8794a1a399867a707d8a96a39e9184776b5e493f3334414d5a6774808d9aa79a8d8174675a4e4134271b0e000000000000000000000000000000030608090d0c161f2935414c56616c75818f97a2999083786d60584e42382e23313e4a5764717d8a97a49d9084776a564c4135292d404c5966737f8c99a69c8f8276695c4f4336291c10000000000000000000000006060606060606060007131d28313e46535e69727f8c95a0988e81756b61554b40414c56616b74808d95978f82776c6058606060616d7a8794a0988b7f726560605f524c443a3025190d010000000000000000000000000000020608080c0e07131d28313e46535e69727f8c95a0988e81756b61554b414c56616b74808d95978f82776c6058606060616d7a8794a0988b7f726560605f524c443a3025190d010000000000000613202c3945515d67717e8b949fa9b3aba39fa3a99e938c80736c61584e453b352f3433342d3338393c42464d525a616a6f7c86929aa4afa69f92877b6e62594f44392d20150a000000000000000006121f2b3844505c66727f8c96a0acaea2988f82776c605a50443f38302b26201f1c171a1a1a171c1f20252a30363e464e58616c73808d96a1acab9f948a7d7064584e43372b1d120700000000000000010f1a26313c4653606d7985929eacada1968a7d70646363636363636363636363636363636363636363636363636e7b88949fabac9f92867a6d6054473d3221160c01000000000000000000010f1a26313c4653606d7985929eacada1968a7d70646363636363636363636363636363636363636363636363636e7b88949fabac9f92867a6d6054473d3221160c0100000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013060000000000000000000000000000000000000007131f2c38434f5963707d8a949ea1978e81746c62594f47444c535b60656c6f7376787979787775726e6a64605b534e443f464e585f666c707477787979777673706d66605d554f4740332d261d140a00000000000000000000000000000000000000000000000713202d3a4653606d7985929fabaa9d908477686d7a86929fac9f92867a6d6053473a2d20140a15212e3a47535f6a7884919eaba196887b6e6774818d9aabac9f92867a6d6154473a2f24180c00000000000000000000000000000000000000000c18232e3945515c66727f8b97a1adaa9f92867a707070707070707070707070707070707070707070707d8a97a3b0a99c8f8276695c4f4336291c100d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0808060200000000000000000000000000000000000007121d27303d45515d67707d88939f9e938a7d70685d52515e6b7884919ea3968a7d7063574a3d303a4754616d7a8794a0a194877a717d8a97a49d9184776a5e51442d34404d5a6773808d9aa69b8e8175685b4e4235281b0f00000000000000000000000000040a0f1315161a1d1f1924303a44505a616e7a85929ea0958c7f736a5f544a3f3428323f4b5865727e8b98a59c8f8376695c50432f24323e4b5865717e8b98a49d9083776a5d5044372a1d1100000000000002060a0c0d131313131313131313130c161f2a36424d57606d788390999e938a7d70675d51453c444f59606d79839098948c7f726a60554b54616d7a8794a0988b7f726558535346413a32281e13080000000000000000000000000003090e121415191b1d1e161f2a36424d57606d788390999e938a7d70675d5145444f59606d79839098948c7f726a60554b54616d7a8794a0988b7f726558535346413a32281e130800000000000004111d2935414c55606d7a85929ea6b0aaa2999299a1a59c928a7e716a60574d43392f26272722282b2d31363b42465058606a707e88939fa8aea3998f82766c6155493c31261b0f00000000000000000713202d3a4653606d7884919ea8b2a99f92867b6e655b50483e342e261e1b1312100c060d060b0f12131a1f252a343d46505a606d7984919ea8b0a69c8f83766a5f5347392e23180c000000000000000009151f2c3845515c6673808d9aa4afa99c8f82757070707070707070707070707070707070707070707070707074808d9aa6b0a79b8e8174685d5245392c201304000000000000000000000009151f2c3845515c6673808d9aa4afa99c8f82757070707070707070707070707070707070707070707070707074808d9aa6b0a79b8e8174685d5245392c2013040000000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c201306000000000000000000000000000000000000000915222f3b4854606b7683909da69e91857a6d605a5047454d565e656c71787c80838485868584827f7b77716c65605850494e58606a6f787d81838586858483807c78726d67605952443f382f261c1106000000000000000000000000000000000000000000030f1b27333f495363707d8a98a2aeaa9a8d807367677683909ca9a3988a7d7063574a3d31261b0f15222f3c4855626f7b8896a1ab9e9184786a64717d8a99a3afa3998b7e7164554b4035291d10040000000000000000000000000000000000000007121c2834404b54606d7985919ea9aea2988e817c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7f8c99a6b2a99c8f8276695c4f4336291c1003010101010101010101010101010101010101010101010100000000000000000000000000000000000000000000000b151e2935404b55606b74818d96a19e91847a6d60594f5e6a7784919da3978a7d7064574a3d313b4754616e7a8794a1aa93877a707d8a96a39e9184776b5e51442f34414d5a6774808d9aa79a8e8174675b4e4134281b0e0000000000000000000000040a0f151b1f212226292b2c2c28323e46525e68717e8b949e9f92877c6f665c50443c2f33404c5966737f8c99a69c8f8275695c4f423629313e4b5764717e8a97a49e9184786b5e5145382b1e120000000000070d121619192020202020202020202020201a25313b44505c666f7c87939f9e9184796d60584e413d45515c676f7c86929f92867c6f675d5154616d7a8794a0988b7f7265584c3f3936302820160c020000000000000000000000060c11151a1e212226282a2b2c2c25313b44505c666f7c87939f9e9184796d60584e4145515c676f7c86929f92867c6f675d5154616d7a8794a0988b7f7265584c3f3936302820160c020000000000000613202c3945515d67737f8c97a2adaea29892869196a1a49f92867c6f695e554b41382d2217171c1f20252a30363e464e58616c73808d96a1acab9f948a7d7064584e43372b1d120700000000000005111e2a36414c5664707d8a96a1adada1978c7f72695e53493f3628231c140c0a060300000000000306090e1419222b343e45515d67717e8a96a0acab9f94887c6f62544b4034281c10040000000000000004101c2834404b54616e7b87939facac9f93877d7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7d85929fabaca095897c6f63564c4135291d1104000000000000000000000004101c2834404b54616e7b87939facac9f93877d7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7d85929fabaca095897c6f63564c4135291d11040000000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130600000000000000000000000000000000000005111e2a36424d56636f7c89959f9f958a7e71685d5248434d575e686d777e84898d8f91929292918f8c88837e786f6a605b5354606a6f7c83898e9092929291908c89847f796f6b635c504a42382d22171007000000000000000000000000000000000000000005121f2b3744505b6574818e9aaaaea398897d70636673808c99a9aa9a8d817467584e43372b1f121d2935414c5666727f8c99a8ac9b8e817468606d7a86929facab9b8f8275675d5145382c1f130600000000000000000000000000000000000000000c18232e3945515d67727f8c97a1adaa9d938e898989898989898989898989898989898989898989898c919ca8b5a99c8f8276695c4f4336291c100300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c18242f39434f59606d7984919ea1968e81746b60555d6a7783909da4978a7d7164574a3e313b4855616e7b8894a1a2988679707c8996a39e9184786b564c413534414e5b6774818e9aa69a8d8073675a4d4034271a0d00000000000000000000070e151b20262b2e2f3336383939393736414c56626c76828f98a2999083786d60574d41382d404d596673808c99a69b8e8275685b4f423528313d4a5764707d8a97a39e9285786b5f5245382c1f12000000010a12191e2325262d2d2d2d2d2d2d2d2d2d2d2d2d2d28343f4a54606a74808d97a1968d80736a5f53493f404b555f6a727f8b94999184796d605a54616d7a8794a0988b7f7265584c3f322a251e160e050000000000000000000002090e171d1f262b2e2f3235373839393938343f4a54606a74808d97a1968d80736a5f5349404b555f6a727f8b94999184796d605a54616d7a8794a0988b7f7265584c3f322a251e160e05000000000000000714212d3a4754606d7a85929fa9b3a99f92867c849198a2a29891847b6e675d53493f332722190f12131a1f252a343d46505a606d7984919ea8b0a69c8f83766a5f5347392e23180c0000000000000714202d3946525e6876828f9ca8b2ab9e9185796d60574d41382d2417110a02000000000000000000000002091019222935404b55606c7884919dabb0a69a8e8174665c5145382c1f130600000000000000000c18232e3946535f6976828f9ca9afa499938a89898989898989898989898989898989898989898989898989899297a2adaa9d9084776b6054443a2f24190d010000000000000000000000000c18232e3946535f6976828f9ca9afa499938a89898989898989898989898989898989898989898989898989899297a2adaa9d9084776b6054443a2f24190d010000000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013060000000000000000000000000000000000000714202d3a46525e6975828f9ba79d9083766c61564c414b555e696e7a828b9196999c9e9f9f9f9e9b9995908a837c726c655c5c666f7c8690959a9d9e9f9f9e9c9996918b847d736e605b544a3f332822190c02000000000000000000000000000000000000000613202d394653606c7885919eabac9f9286796d60636f7c8997a2ab9e9184786a5f53473a2e2115202c3945525d687683909ca9a49a8a7e71645d687683909ca9ac9f9285796d6053473a2e23170b000000000000000000000000000000000000000007121d2935404b55606d7985929ea9afa59d9a96969696969696969696969696969696969696969696999ca3adb5a99c8f8276695c4f4336291c100c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0706040000000000000000000000000000000000000000000000000007121d27313d45515d67707d89939d9d93897d70675d5c6976838f9ca4988b7e7165584b3e323c4855626f7b8895a29f9285796f7c8895a99f928578685d52453935424e5b6875818e9ba6998c807366594d4033261a0d00000000000000000109101920272b32373b3c40434546464544423e44505a616e7b86929f9f958c7f72695f53493f33404d5a6673808d99a69b8e8174685b4e413528303d4a5663707d8996a39f9285786c5f5245392c1f120000000a131c232a2f32333939393939393939393939393939392e38424e58606d7a85919e9f92877c6f655b50443a434e58626d75828f97968e81746c6157616d7a8794a0988b7f7265584c3f322519130c0500000000000000000000050d141a22282d31373a3b3f414445454646454441424e58606d7a85919e9f92877c6f655b5044434e58626d75828f97968e81746c6157616d7a8794a0988b7f7265584c3f322519130c050000000000000006121e2b37424d5765727e8b97a2adada1978c7f727c86929aa4a1969083796d655b50443e342b20170d090e1419222b343e45515d67717e8a96a0acab9f94887c6f62544b4034281c100400000000000814212e3b4754616e7a87939facafa3998c7f72675d51453b2f261b1206000000000000000000000000000000071018242f3944505b66727e8b99a3aeac9f9285796d6053463a2d201308000000000000000007121d2a36424d5764707d8a96a1adaba49f9796969696969696969696969696969696969696969696969696969fa2a9aea2988b7f7265594f4332281e13080000000000000000000000000007121d2a36424d5764707d8a96a1adaba49f9796969696969696969696969696969696969696969696969696969fa2a9aea2988b7f7265594f4332281e1308000000000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013060000000000000000000000000000000000000814212e3b4754616e7b87939fa1968a7e71645a504445515d676e7b848f949ea0a8a39f9c9a999a9b9e9f9d9590877f776d66606d79849198a0a79f9d979595989c9f9e96918780746c665b50443f342b1e140a00000000000000000000000000000000000000091623303c4956636f7c8997a1ada99c8f8276675d606d7985929faba196887b6f6255483c302419212d3a4754606d7a86929fac9f93877a6e615666737f8c99a8aea2988a7d7064544a3f34281c100300000000000000000000000000000000000000000c18242f3945515d67727f8c97a2adafa9a7a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a6a8adb5b5a99c8f8276695c4f4336291c1919191919191919191919191919191919191919191313100c070000000000000000000000000000000000000000000000010b151f2935414b55606b74818e97a19e9184796d60596875818e9ba6998c807366594d40313d4a5763707d8a96a39e9184776e7a8797a1a298877a6d6054473a36424d57697683909cac988b7e7265584b3f3225180c00000000000000010a131b222b32373c4347494d5052525352514e4b4746535e69727f8b949f9f92867b6e655b50443b404d5a6673808d99a69b8e8174685b4e413528303d4a5663707d8996a39f9285786c5f5245392c1f12000007121c252e353b3e4046464646464646464646464646464646464645525d68717e8a949f999083776c60564c413c46515b616d7a85919a938a7e71695e616d7a8794a0988b7f7265584c3f322519080200000000000000000000060f171f252a34393c4247484c4e505152535252514e4c48525d68717e8a949f999083776c60564c4146515b616d7a85919a938a7e71695e616d7a8794a0988b7f7265584c3f322519080200000000000000000814212e3a47535f697683909da9b3ab9e9185796d717e88939fa59f958e81776c605a50463c32291f150b02091019222935404b55606c7884919dabb0a69a8e8174665c5145382c1f130600000000030f1b27333f495364717e8b9aa4afac9f92867a6e61554b4033291d140a000000000000000000000000000000000007121d28333f4a54616d7a86929facaea298897d706356493d2f24190d0100000000000000000e1a26313b4653606d7984919eabb5afaca3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3abadb3ac9f92867a6d6054473d3221160c0100000000000000000000000000000e1a26313b4653606d7984919eabb5afaca3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3abadb3ac9f92867a6d6054473d3221160c01000000000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c201306000000000000000000000000000000000004101d2935404b5565727e8b99a49e9184786d605346434e58606d798391969fa6a49f9992908e8d8d8e91969a9f99928c81786d66717e8a96a0a89f95908a88898b8f949da099938c81786c605b51463d30261c1106000000000000000000000000000000000006121f2b37434e586773808d9aa9b2a8988c7f7265555c6675828f9ba8a8998c7f7266564c4135291d27333f495364717d8a99a3aa9d908377685e55626f7c8896a1adaa9b8e8174665c5044382b1f1206000000000000000000000000000000000000000007121d2935404b55606d7a85929faab3b5b4b1acaa9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9fa3a6abb4b5a99c8f8276695c4f43362926262626262626262626262626262626262626262626201f1c18120b0300000000000000000000000000000000000000000000030d18242f3a434f59606d7a84919ea1968d80746b6066727f8c99ab9b8e817568574d42373f4a5465727f8b98a59b8f8275697885929eaa95887c6f6255493c3a46535e697885919ea49a897c6f6256493c2f231609000000000000000a131c252d343c43474e5355595c5e5f5f5f5d5b5853514d57606c77829098a3989082776c60574d42404d596673808c99a69b8e8175685b4e423528303d4a5763707d8a96a39e9285786b5f5245382c1f1200020d19232e3740464b4c535353535353535353535353535353535353534c56616c76828f989f948b7e71685e52463d3f46525e68707d88939f92857b6e66616d7a8794a0988b7f7265584c3f3225190c00000000000000000000060f18212930363e45494d5355595b5d5e5f5f5f5e5d5b58555356616c76828f989f948b7e71685e52463f46525e68707d88939f92857b6e66616d7a8794a0988b7f7265584c3f3225190c0000000000000000000815222f3b4855626e7b88959fabafa3998c7f73676c73808c939ea79e938c7f736c61584e443b31271d120700071018242f3944505b66727e8b99a3aeac9f9285796d6053463a2d2013080000000005121f2b3744505b6575818e9bacb6a99c8f8276685e5243392f21170b020000000000000000000000000000000000010b17222d3846525d6875828f9ca8b4aa9a8d807367564c4135291d1104000000000000000009141f2c3844505c6673808c99a3afbbb9b1acaa9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9fa7a9afb8bab1a79b8e8174685d5245392c20130400000000000000000000000000000009141f2c3844505c6673808c99a3afbbb9b1acaa9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9fa7a9afb8bab1a79b8e8174685d5245392c20130400000000000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130600000000000000000000000000000000000613202c3945515d6775828f9ca8998c7f72665c50444854606a74808d95a0a8a499938d87838180808184888d92989f938e81786c74818e9ba8a09690837d7b7c7e828991969f9f938e81746d62584e42382e23170b01000000000000000000000000000000000815212e3a47535f6a7784919eaaaca196887c6f62555465717e8b98a7a99c908376685d5246392d202b3744505b6574818e9babaa9a8d80736756535f6a7884919eabab9e9285796d6053463a2d20130a0000000000000000000000000000000000000000010d18242f3945515d6773808c98a2aebab1a7a09d93939393939393939393939393939393939393979aa2abb5a99c8f8276695c4f433633333333333333333333333333333333333333333333332d2c28231d150c030000000000000000000000000000000000000000010407131d28313d45525d68707d8a939e9f93887d6f6763707d8a99a39e918478695f53473f44505c6675818e9ba9998c7f736976838f9ca5988b7f7265574d423f4854616e7b8796a19f93867a6d6053473a2d20140700000000000008121c252e373f464e54585f6266696b6c6c6c6a6864605d55515b656e7b86929f9f948b7f72695e5346404c5966737f8c99a69b8f8275685c4f423529313e4a5764717d8a97a49e9184786b5e5145382b1e120006121e2a3540495157596060606060606060606060606060606060606060605a616e7b86929f9e92857a6d61594f4239414c56616b74808d95979083786d616d7a8794a0988b7f7265584c3f3225190c000000000000000000030d18212a333b42465055575f6265686a6b6c6c6c6b6a6865615f575a616e7b86929f9e92857a6d61594f42414c56616b74808d95979083786d616d7a8794a0988b7f7265584c3f3225190c0000000000000000030f1c28333f4a5465727f8b98a7b1ac9f92867b6e61606c77818e95a0a59f93887e716a60564d43392f231812080007121d28333f4a54616d7a86929facaea298897d706356493d2f24190d010000000613202d394653606c7885929eabb3a9988b7f7265564c4131271d0f050000000000000000000000000000000000000006111c2935414c5665727f8b98aab4aa9d918477685d5245392c201306000000000000000003101c28343f4a54616e7b87929facb9b1a7a0939393939393939393939393939393939393939393939b9ea5afb8aca095897c6f63564c4135291d110400000000000000000000000000000003101c28343f4a54616e7b87929facb9b1a7a0939393939393939393939393939393939393939393939b9ea5afb8aca095897c6f63564c4135291d110400000000000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130600000000000000000000000000000000000714202d3a4753606d7a86929fa096887b6e62544a414d56626f7c87939fa7a4999387807a7674737375777b80868e939f938c807376838f9ca99e918478706e6f71767d848f949f9d938b7f726a60544a3f34281d1207000000000000000000000000000000000915222f3c4855626f7b8896a0acab9e9184786a5f5354616e7b8795a0ac9f92867a6d6154473a2d222d394653606c7885929eaba298897d7063564e586774818e9aaaada197897c706356493d32261b0f03000000000000000000000000000000000000000007121d2935414c55606d7a85929faab4aca09591868686868686868686868686868686868686868a909aa6b5a99c8f8276695c4f433f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3a38342e271e150b00000000000000000000000000000000000001080d111314161f2935414c56616c75818e97a19a9184796d616d7a86929fa196887b6e6259504a4e56606d7985919ea197897d706673808d99a79c8f8275695f544d4a505b65717e8b98a99d908377675d5145392c2013060000000000040e1a242e374049515860626a6f7376787979787775716d67605c555f69727f8c959f9f92867b6e615a50444b5865727e8b98a59c8f8276695c4f432f24313e4b5864717e8b97a49d9083776a5d5044372a1d11000a16232f3b46515b63666c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6b69727f8c95a0978e81746b60544b403a444f59606d79839098958c80736b6d7a8794a0988b7f7265584c3f3225190c0000000000000000010b151f2a333c454d525a6164696e72747778787979787774726e6963605f69727f8c95a0978e81746b60544b40444f59606d79839098958c80736b6d7a8794a0988b7f7265584c3f3225190c000000000000000006121f2b3844505b6676828f9ca9b5a99c8f8276685e5b656d79839097a1a49a92867c6f685e554b403429241a1006010b17222d3846525d6875828f9ca8b4aa9a8d807367564c4135291d11040000000815222e3b4855616e7b8897a1adada197887b6e6255483b3022150b0000000000000000000000000000000000000000000d1924303c4855626f7b8898a2aeaca095877a6d6054473a2d2114070000000000000000000c17232e3846525e6975828f9ca8b2aca095898686868686868686868686868686868686868686868e939ea9b4aa9d9084776b6054443a2f24190d01000000000000000000000000000000000c17232e3846525e6975828f9ca8b2aca095898686868686868686868686868686868686868686868e939ea9b4aa9d9084776b6054443a2f24190d0100000000000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130600000000000000000000000000000000000a1724303d4a5763707d8a98a39e9184776a5f534246525e6875828f99a4a89f93877e746d6867666768696e737a818b929893887d7783909da5988c7f72666262656b707a828f959f9f92877c6f665c5044392f24180d00000000000000000000000000000005121e2a36424d5766737f8c99a8b2aa9a8d807467584e525e697783909daaa3998a7e7164544a3f33282f3c4956626f7c8997a1ab9f9285796d60534a5764707d8a98a3aea99a8d807467584e43372b1f13060000000000000000000000000000000000000000010d19242f3a45525d6873808d98a2aeaa9d9184777979797979797979797979797979797979797e8a97a3b0a99c8f8276695c4f4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4645403930271d120700000000000000000000000000000001070c13191d20212428242f3a444f59616d7a85929ea0968d80736a6876828f9ca89a8d80746b605b54585f68707d8a97a19e9185796d626f7b8895a09f93877b6e665e57545c606d7683909da4998c7f7266554b4035291d110400000000020c16202c364049525b626a6f767c80838585868584817e7a736d675e57606d78839099a2988f82766c62564d4a5764717d8a97a49d9083776a554b403529323f4c5965727f8c98a59c8f8276695c4f4336291c10000c1925323e4b57636d737979797979797979797979797979797979797979797978736d7883919a9e93897d70665c51453c3d45515c676f7c86929f93877d706d7a8794a0988b7f7265584c3f3225190c000000000000000007121d27313c464e575e616c71777b7f8183848586858584817f7b76706b60606d7883919a9e93897d70665c51453d45515c676f7c86929f93877d706d7a8794a0988b7f7265584c3f3225190c00000000000000000613202d394653606c7985929facb3a9988b7f726556535d676e7b859198a3a29891847a6e675c514540362c22180e0506111c2935414c5665727f8b98aab4aa9d918477685d5245392c2013060000000a1724303d4a5763707d8a96a9b3ab9e928578695f53473a2e2114030000000000000000000000000000000000000000000813202d394653606c7985929facb1a795897c6f6256493c2f23160900000000000000000006111c2a36424d5763707d8a96a1acaa9d9083797979797979797979797979797979797979797979818e9ba7aea2988b7f7265594f4332281e1308000000000000000000000000000000000006111c2a36424d5763707d8a96a1acaa9d9083797979797979797979797979797979797979797979818e9ba7aea2988b7f7265594f4332281e13080000000000000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130600000000000000000000000000000000000c1926333f4c5966727f8c99aa9a8d807467584e434754616e7b86929faba1968c7f736c615e565a5a575f61686d757e86929891857a83909ca3968a7d706354565960686d79839096a1999083786d60554b4035291c110600000000000000000000000000000714202d3a46525e697783909daaaea298897d7063564a4d566673808d99a9ab9b8e8175665b5044382b36414c566673808c99a9ab9b8e8275665c514753606d7a86929facab9e9184786a5f53473b2e21150900000000000000000000000000000000000000000008131e2935414c56616d7a86929faaaca0958a7d706c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c707d8a97a3b0a99c8f8276695c595959595959595959595959595959595959595959595959595953514b43392e23180c0000000000000000000000000000030b12181e24292c2d31353738323e46525e68717e8a939e9f93877c6f67717e8a95a09f92877d716c6667676a6e7a84919ea2988d8073665f6a7783909da4998f82786e696767666d727f8b959f9f93877b6e6154483b2f24180d010000000008131e28323e48525b636d727c82888c8f91929292908e8b857f796e695e5c666f7c87929f9f948b7e71685e524956626f7c8995a99e918578675d5145392c34404d5a6773808d9aa69a8e8174675b4e4134281b0e000d192633404c5966737f868686868686868686868686868686868686868686868578666f7d88939f9d9184796d60574d4237404b555f6a727f8b94999184796d7a8794a0988b7f7265584c3f3225190c00000000000000000c18242f39434e585f696e767e83888c8e909192929291908e8b87827d746d67666f7d88939f9d9184796d60574d42404b555f6a727f8b94999184796d7a8794a0988b7f7265584c3f3225190c00000000000000000815222f3b4855626e7b8898a2aeada197887b6e62554b555e696f7c86929fa4a1969083796d605b51483e342a20170c030d1924303c4855626f7b8898a2aeaca095877a6d6054473a2d2114070000000c1926323f4c5965727f8c98a5b2a99c8f837669574d42372b1e120600000000000000000000000000000000000000000006121f2b3844505b667783909daab1a4978b7e7164584b3e3125180b000000000000000000000e1a25303b4653606c7884919eabaca095897c6f6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6d7a86929facac9f92867a6d6054473d3221160c010000000000000000000000000000000000000e1a25303b4653606c7884919eabaca095897c6f6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6d7a86929facac9f92867a6d6054473d3221160c010000000000000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130600000000000000000000000000000000030f1b27333f49536874818e9bab978a7e7164574b3f4c5965727f8c99a3ab9e9184796d605a524c4d4d4d53565e616c717d8692978d80828f9ca396897c706356494f565d676e7a84919ea0958b7f72675d5145382d22170b00000000000000000000000000000815212e3b4854616e7b87939facab9f9285796d6053464956636f7c8997a1ab9e9285796c605346392d3946525e687783909daaa4998b7e7164544b45515d6776828f9ca9aca196887c6f6255493c31261a0e020000000000000000000000000000000000000000010d1924303a46525e6873808d98a3aea79c9083766b606060606060606060606060606064707d8a97a3b0a99c8f827669666666666666666666666666666666666666666666666666666666605c554b4034281c1004000000000000000000000000060d151d24292f35393a3e4144454645414c56616c75828f97a2999183796d6d7984919da39992857e78757474767b839096a19f92867b6e615864717d8a949e9f948f827b76747475797f87929fa1978e8174695e52463a2d1d130700000000010d1924303a44505a636e737f878f94999c9e9e9d9e9d9b98928c837b6e695e5f6a73808c95a09f92857b6e615a5054616d7a8797a1a197867a6d6053473a2d35414c566875828f9bac998c7f7266594c3f3326190c000d192633404c5966737f8c93939393939393939393939393939393939393939185786b6b74818e97a0968c7f73695f53463e39434e58626d75828f97968d80747a8794a0988b7f7265584c3f3225190c0000000000000004101d2935404b555f6a6e7b838a9095989b9c9a989898999c9b9a938f8981796d676b74818e97a0968c7f73695f53463e434e58626d75828f97968d80747a8794a0988b7f7265584c3f3225190c00000000000000000b1824313e4b5764717e8a97aab4ab9e928578695f53474d57606a717e8a929ca59f958e81756d635a50463c32291e150b0813202d394653606c7985929facb1a795897c6f6256493c2f2316090000000e1b2834414e5b6774818e9aa7b3a79a8d8074675a4d4131261a0e02000000000000000000000000000000000000000000030f1c28333f4a546875818e9ba8b3a6998d8073665a4d4033271a0d0000000000000000000009141f2b3844505b66727f8c99a3aea79a8d8174675c606060606060606060606060605765717e8b98a2aea79b8e8174685d5245392c2013040000000000000000000000000000000000000009141f2b3844505b66727f8c99a3aea79a8d8174675c606060606060606060606060605765717e8b98a2aea79b8e8174685d5245392c201304000000000000000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013060000000000000000000000000000000005121f2b3744505b657783909da499887c6f625549424d566875828f9baba9998c7f73675c514641404042474c525a626b707d8792928785919ea3968a7d7063574a434c555e68707d8a939e9f9285796d60544a3f33281c0f0300000000000000000000000004111d2935414c5665727f8b9aa4afab9b8e8275665c51444653606d7985929eaba197897c6f6356493c303a4754616d7a87939fac9f93867a6d615447404b5565727e8b98a7b1a8998c807366574d42362a1e120500000000000000000000000000000000000000000008131e2a36414c56616e7a86929fabab9f94897c6f63574e535353535353535353535764707d8a97a3b0a99c8f8276727272727272727272727272727272727272727272727272727272726d675c5145382c1f13060000000000000000000000060f181f272f353a4145474a4e505253525150505a616e7a85929fa0958d80736a707d89919fa297928a8482808183879095a09e938c7f72695e55616c75828f95a09f948f8783818082858b9299a29892857a6d61574d42362a1e0c010000000005111d2935414c56616c73808c92999f9f9992919091979c9e9f9590847b6e675c606d79839099a2978f82756c6156525e687885919ea995897c6f6256493c303946525d687784919ea49a897d7063564a3d3023170a000d192633404c5966737f8c999999999999999da0a7a9a29f999999999999999185786b616d7a85929e9f92867b6e615a50443a3c46515b616d7a85919a93887d7a8794a0988b7f7265584c3f3225190c0000000000000006131f2c3945515d676e7c8490959d9d9993908d8b8b8b8d8f92999f9c938e82796d616d7a85929e9f92867b6e615a50443c46515b616d7a85919a93887d7a8794a0988b7f7265584c3f3225190c00000000000000000d1a2633404d596673808c99a6b3a99c8f827669574d42454e58616c73808d939ea79e938c7f736c61584e443b30271d1207121f2b3844505b667783909daab1a4978b7e7164584b3e3125180b000000101c2936434f5c6976828f9ca9b2a5998c7f7266594c3f3326190900000000000000000000000000000000000000000000000b17222d404d5a6773808d9aa6b3a89b8e8175685b4f4235281c0f00000000000000000000030f1c28333f4a54616e7a86929facab9f9285796d60535353535353535353535353535f697683909caaaca095897c6f63564c4135291d110400000000000000000000000000000000000000030f1c28333f4a54616e7a86929facab9f9285796d60535353535353535353535353535f697683909caaaca095897c6f63564c4135291d1104000000000000000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c201306000000000000000000000000000000000613202d394653606c7985929f9f93867a6d60534746525e697885919eaba297887b6e62554b40363031373a41465059616b727f8b93929197a1a4978b7e7164584b3e434c56616c75828f9ba2978b7f72665b5044382b1f12060000000000000000000000000713202c3945525d6876828f9cacafa3998a7e7164544a4044505c6675818e9baba9998c807366574d42363f4a5464717e8b9aa4a99d908376685e52463b4854616e7b8795a0acaa9d908377695f53463a2d211408000000000000000000000000000000000000000000020d1925303a46525e6874808d99a3aea69b8f82756a5f534746464646464646464a5764707d8a97a3b0aa9d91847f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f796d6053463a2d20130700000000000000000000060f18212a313940454c5254575b5d5e5f5f5e5d59565e68717e8b949e9f92877c6f6b737f8c93999e9f97918e8d8e90939aa09e938e81786d6056505a616e7a8390959e9f9993908e8d8e92979f9f9892867d70685e52453b30251a0e00000000000713202d3946525d68717e8a929fa198928b86848385888f949da0969083796d605c666f7c87939f9e938a7e71685e52566975828f9ca5988b7f7265574d42363b4754616d7a86939f9f93867a6d6154473a2e211407000d192633404c5966737f8c8c8c8c8c8c8c8c9095a0a297928c8c8c8c8c8c8c8c85786b5d68717e8b949f988f82766c61564c41353f46525e68707d88939a91847a8794a0988b7f7265584c3f3225190c00000000000004111d2935414c55606d798391969f9b938e8783807f7e7f8082878f949e9d948e81746a68717e8b949f988f82766c61564c413f46525e68707d88939a91847a8794a0988b7f7265584c3f3225190c00000000000000010e1b2834414e5b6774818e9aa7b4a79a8d8174675a4e413d46505a606c77818f95a0a59f93887e706a5f564c43392e2318110f1c28333f4a546875818e9ba8b3a6998d8073665a4d4033271a0d000000101d2a3643505d697683909ca9b1a4978a7e7164574b3e3124180b0000000000000000000000000000000000000000000000061926323f4c5965727f8c98a5b2a89c8f8275695c4f4236291c0f00000000000000000000000b17222d3846525e6875828e9ba8ada2978a7e7164574d42464646464646463f4a54626e7b88949fabaa9d9084776b6054443a2f24190d0100000000000000000000000000000000000000000b17222d3846525e6875828e9ba8ada2978a7e7164574d42464646464646463f4a54626e7b88949fabaa9d9084776b6054443a2f24190d01000000000000000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c201306000000000000000000000000000000000714212d3a4754606d7a8798a29e918478675c51454754616e7a8797a1ab9e928578695f5343392f25262b30363e474f59626d74818e979ea1a9a6998c7f7366594c403b444f59626f7c88949e9e9184786c605346392d22170b0000000000000000000000000714212d3a4754606d7a86929facac9f92867a6d6054473a3f4a5464717e8a99a3aa9d908377695e52463a44505c6675828e9baca8998c7f7366564c413a46535e697783909daaaca095887b6e6155483b3025190d0100000000000000000000000000000000000000000008131e2a36414c56616e7b86929fabac9f93877b6e62564d423639393939393d4a5764707d8a97a3b0aca096918c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c877a6d6054473a2d211407000000000000000000030c18212a333c434b51565d6064686a6b6c6c6b69666260626c76828f98a2999083786d6d737f878f94989b9d9b9a9a9d9c9996918a81786d665c5046525e686e7a838b92979a9c9c9a9a9b9d9b9a938e867d706b60564c4133291f14090000000004111d2935414c56616d7a85929ea19792867f7a7776787c828d929d9f958c7f73685e606a73808d96a09e92857a6d61595965727f8c98a79c8f8275695e524641444f5964717e8a9aa49d908377685e5246392d20130700091623303c4956636f7d808080808080808083909d9f928580808080808080807f726556626c76828f989f948a7e71685d52453d36414c56616b74808d95958c808c99a5988b7f7265584c3f3225190c0000000000000613202c3945515d6773808d95a09b918c817b767372717273767b828f939e9f93877c6f626c76828f989f948a7e71685d52453d414c56616b74808d95958c808c99a5988b7f7265584c3f3225190c0000000000000003101c2936434f5c6976828f9ca9b2a5988c7f7265594c3f343e44505b656d79839097a1a49a92867c6f685e554b403428231a1017222d404d5a6773808d9aa6b3a89b8e8275685b4f4235281c0f020000111e2a3744515d6a7783909daab0a3968a7d7063574a3d3024170a00000000000000000000000000000000000000000000000b1825323e4b5865717e8b98a4b1a99c908376695d5043362a1d10000000000000000000000006111c2a36414c5663707d8996a0aca99c8f8276695e5246382d393939393844505c6673808d99a6aea2988b7f7265594f4332281e130800000000000000000000000000000000000000000006111c2a36414c5663707d8996a0aca99c8f8276695e5246382d393939393844505c6673808d99a6aea2988b7f7265594f4332281e130800000000000000000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c201306000000000000000000000000000000000815212e3b4854616e7b8794aa9d9083776a554b404955626f7c8895a9a99c8f837669574d4231271d1a1e252a353e47515b616d7a85929ea7b1a79a8e8174675b4e41323e47535f6a75828f9ca096897d7063544a3f33281c0f030000000000000000000004101c2934404b5564717e8b99a3afa99c8f8376685d5245393a4754606d7a86929faca095877b6e6154473b4653606d7985929faba196887c6f6255493c36424d576673808d99a9b1a7988c7f7265564c41362a1d1105000000000000000000000000000000000000000000020e1925303b46525e6974818d99a3afa49a8e8174695e52463a2f242d2d313d4a5764707d8a97a3b0b2a8a09d99999999999999999999999999999999999999999999999999999993877a6d6054473a2d2114070000000000000000000b151e2a333c454d555d60686d7174777879787776736f6c65616e7b86929fa0958c7f736a6d727c82888b8f9091929291908d89847d756d665c544a414c565e686d787e85898d9091929291908f8b87817b706b60594f443a3021170d02000000000713202c3945525d6873808d97a19e92857c726d676a6a6f77808d95a09f92867a6e6158606d7984919aa1978e81756b6155616e7b88959f9f92867b6e615a524d5056606b75828f9ca4998c7f7366564c4135291d1105000915222f3b4854606b6f7373737373737374818e9b9e91847873737373737373726d62575a626e7b86929f9e91857a6d60584e42383a444f59606d798390989285929fa5988b7f7265584c3f3225190c0000000000000714212d3a4754606d7a85929f9e948c7f746e696765656566696e78818f98a39a8e817566626e7b86929f9e91857a6d60584e423a444f59606d798390989285929fa5988b7f7265584c3f3225190c0000000000000004111d2a3744505d6a7783909daab1a4978a7e7164574b3e31333f49535d676e7b859299a3a29891847a6e675c51453f352c22181926323f4c5965727f8c98a5b2a89c8f8275695c4f4236291c0f030000111e2b3844515e6b7784919eaaafa396897c706356493d3023160a00000000000000000000000000000000000000000000000b1824313e4b5764717e8a97a4b1aa9d9083776a5d5044372a1d110000000000000000000000000d1925303b4854606b7784919daaac9f93877b6e6153493f33272d2d2d3a4653606d7984919eabac9f92867a6d6054473d3221160c01000000000000000000000000000000000000000000000d1925303b4854606b7784919daaac9f93877b6e6153493f33272d2d2d3a4653606d7984919eabac9f92867a6d6054473d3221160c0100000000000000000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c201306000000000000000000000000000000000815222f3b4855626e7b8895a19c8f8376695c5043495663707c8996a3a89b8e8175685b4e423128150e1319232c353f46525d68717e8a95a0aca99c90837669574d423637434e5864707d8a97a29a8e8174665b5044382b1f12060000000000000000000006131f2c3845515c6775828f9babb1a7988b7f7265564c41353945525d687683909ca9a7988b7e7165544b40495663707c8997a2ab9e9184786a5f53473b313c4956636f7c8997a1ada99c908376685e5246392d2013070000000000000000000000000000000000000000000008141e2a36424d57616e7b87929fabac9f92867b6e61564c4135291d24313d4a5764707d8a97a3b0bab2acaaa5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a093877a6d6054473a2d211407000000000000000007121d27303c454e575f676d737a7e81838586858483807c78706b69727e8b949f9f92867c6f666a6f757b7f82848586858483807c79706c605c544a423b444c565e666d72797d80838485868584827e7b746e6860594f473d32281e0f0500000000000714212d3a4754606d7a86929f9f958a7e716a605d585f656d7883919da3988d8073665c5d67707d88939f9e938a7d70675d5f697683909da3998e81756c615e565b60686f7d87939f9f93877b6e6155483b3025190d01000713202c38444f5960636666666666666874818e9b9e9184786b66666666666665625b51535f6973808c96a0978d80746a60544a3f343d45515c676f7c8692989298a2a5988b7f7265584c3f3225190c0000000000000b1825323e4b5865717e8b989e9c8f82756d615e57585858575e666e7b86929f9e9285796d606973808c96a0978d80746a60544a3f3d45515c676f7c8692989298a2a5988b7f7265584c3f3225190c0000000000000004111e2b3744515e6a7784919daab0a3968a7d7063574a3d302d38414b555e696f7d87929fa4a1969083796d605b51473e342a201725323e4b5865717e8b98a4b1a99c908376695d5043362a1d10030000121f2b3845525e6b7885919eabafa296897c6f6356493c3023160900000000000000000000000000000000000000000000000a1724313d4a5764707d8a97a3b0aa9e9184776b5e5144382b1e1100000000000000000000000008141e2c38444f5965727f8c98a3aea4998c7f73655b5044372b1f2a36414c5663707d8a97a1ada79b8e8174685d5245392c201304000000000000000000000000000000000000000000000008141e2c38444f5965727f8c98a3aea4998c7f73655b5044372b1f2a36414c5663707d8a97a1ada79b8e8174685d5245392c2013040000000000000000000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c201306000000000000000000000000000000000916232f3c4956626f7c8995a29c8f8275695c4f424a5764707d8a97a3a79a8e8174675b4e4134281b0e08111a232935414c56616c7783909da8ab9f928578695e52463a323c4653606d7985929e9e9285796c605346392d201306000000000000000000000714202d3a4753606d7985929facaca095887b6e6155483b3035414c5666727f8c99a8a89b8f8275665c51454d576673808d99a9aa9a8d817467584e43372d394653606c7985929eabac9f93867a6d6154473a2f24180d01000000000000000000000000000000000000000000020e1a25303b46535e6974818e99a3aea3998d8073685d5245392e2324313d4a5764707d8a97a3b0b8b0aaa99f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f93877a6d6054473a2d21140700000000000000000c18232e39424e575f696e7980868a8e9091929291908c89837d746c6c77828f98a2999083786d6062696e7275777879787776736f6d66615a504a4238323b444c545c60676d707376777879787775716e69615e564f473d352b20160c000000000004101d2935404b5565727e8b98a29d9083766c6158514e535c66707d8a97a19e9185796d6055606b74818e96a19e91847a6d605964717e8a95a09e938b7e736e6869666c707a84919aa3998f8275695f53463a2d1e13080000030f1b27323d474f545659595959595b6874818e9b9e9184786b5e5959595959595751494d57606d7984919e9f93877c6f665c50443b34404b555f6a727f8b949fa2aaa5988b7f7265584c3f3225190c0000000000000e1b2835414e5b6874818e909192897c6f635b524d4c4b4c4d545e6976828f9ca297887b6e61606d7984919e9f93877c6f665c50443b404b555f6a727f8b949fa2aaa5988b7f7265584c3f3225190c0000000000000005121e2b3845515e6b7884919eabafa396897c706356493d30262f3a434d57606b717e8b929da69f958e81756d635a50463c32291e24313e4b5764717e8a97a4b1aa9d9083776a5d5044372a1d11040000121f2b3845525e6b7884919eabafa296897c6f6356493c3023160900000000000000000000000000000000000000000000000b1724313e4a5764717d8a97a4b0aa9d9184776a5e5144372b1e1100000000000000000000000002101c27333d4754616d7a86929facab9e9184786c6053463a2f242d3946525e6875828f9ba9aca095897c6f63564c4135291d1104000000000000000000000000000000000000000000000002101c27333d4754616d7a86929facab9e9184786c6053463a2f242d3946525e6875828f9ba9aca095897c6f63564c4135291d11040000000000000000000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c201306000000000000000000000000000000000a1623303d495663707c8996a39b8e8275685b4f424b5764717e8a97a4a79a8d8074675a4d4134271a0e0008111924303a44505a64717e8a96a1aca297877b6e6154473b2e3845515c6674818e9ba197897c6f6356493c30231608000000000000000000030f1c28333f4a5463707d8a98a2aeaa9d908477695f53463a2d303c4855626f7b8896a1ac9f9285796d605346535e697784909daaa2988a7d7063574a3d322b3844505b6674818e9babafa4998b7e7165554b4035291d10040000000000000000000000000000000000000000000009141f2a36424d57616e7b87929fabab9f92857a6d60554b40342824313d4a5764707d8a97a3b0b0a69f9c93939393939393939393939393939393939393939393939393939393877a6d6054473a2d2114070000000000000004101c2834404b545f6a6e7b848c92989b9d9e9d9d9e9c9995908980776c6e7b86929f9f958c7f72695f5f6165686a6b6c6c6b696663605c5450443f383029323a424a50555c606367696b6c6c6b6a6865615e57524d443d352b23190e04000000000006131f2c3945515d6776828f9ca8988b7f72655a5045414a54606d7985919ea197897c70635659606d7a84919ea1968e81746b60606c78839098a39b908b807b777576797d849196a09f92877c6e62574d42362a1e0c020000000b16212b353d4448494d4d4d4d4e5b6874818e9b9e9184786b5e514d4d4d4d4c4a463f45515c67707d89939e999083786d60574d423639434e58626d75828f97a19f9f988b7f7265584c3f3225190c0000000000000c1926323f4c5965727f8283848586786d605346423f3e3f424d576773808d9aa995897c6f625c67707d89939e999083786d60574d4239434e58626d75828f97a19f9f988b7f7265584c3f3225190c0000000000000005121f2c3845525f6b7885929eabafa296897c6f6356493c302328313b454f59626c73808d949ea79e938c7f726c61584e443a302724313d4a5764707d8a97a3b0aa9e9184776b5e5144382b1e11050000111e2b3844515e6b7784919eaab0a396897d7063564a3d3023170a00000000000000000000000000000000000000000000000b1825313e4b5864717e8b97a4b1a99d9083766a5d5043372a1d10000000000000000000000000000b16202d3946525d6875818e9ba7aca096897c7063554b4135292e3a4754616d7a86929facaa9d9084776b6054443a2f24190d010000000000000000000000000000000000000000000000000b16202d3946525d6875818e9ba7aca096897c7063554b4135292e3a4754616d7a86929facaa9d9084776b6054443a2f24190d010000000000000000000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130600000000000000000000000000000000091623303c4956636f7c8996a29b8f8275685c4f424a5763707d8a96a3a79a8e8174675b4e4134281b07000008131e28323e4653606d7984919eaba9978a7d7064574a3d2d34404b5464717e8a97a8998c7f7266594c3f2f24190d01000000000000000006121f2b3844505b6674818e9baab3a9998d807366574d42362a2e3a47535f6a7884919eaba298897d7063564954616e7b8795a0ac9f9286796d6053473a2d28333f4a5464717d8a99a3aeab9c8f8275675d5145392c20130600000000000000000000000000000000000000000000020e1a25313b46535f6975818e99a4aea2988c7f72675c5145382d22313d4a5764707d8a97a3b0aa9f948f86868686868686868686868686868686868686868686868686868686867a6d6054473a2d2114070000000000000006131f2c3845515c666e7c8591969f9f9c9791909092989fa09d928d81786c727f8c959f9f92867b6e665b55585c5d5e5f5f5e5d5a5653504a423e342e26202930383f444b5153565a5d5e5f5f5e5d5c5854524d46413b322b231911080000000000000714202d3a4753606d7a86929fa196877a6e6154473e3944505c6674818d9aa9998d80736654515d67707d8a939e9f93887d70675d666f7c869299a29b928d86838283858a9196a09d938c80736a5f53453b31261a0e00000000040f19232b32383b3c404040414e5b6874818e9b9e9184786b5e51454040403f3e3a34404b55606b75818e97a0958c7f72695e52463e313c46515b616d7a85919a9393938b7f7265584c3f3225190c0000000000000c1825313e4a57636d7275767778796d665c5044383030363f4c5966727f8c99ab96897d706355606b75818e97a0958c7f72695e52463e3c46515b616d7a85919a9393938b7f7265584c3f3225190c0000000000000005121f2b3845525e6b7885919eabafa296897c6f6356493c30231f29333d47505a606c78828f95a0a59f93887e706a5f564c42392e23313e4a5764717d8a97a4b0aa9d9184776a5e5144372b1e11040000111e2a3744515d6a7784909daab0a3978a7d7064574a3d3124170a00000000000000000000000000000000000000000000000c1825323f4b5865727e8b98a5b1a99c8f8276695c504336291d100000000000000000000000000005111d2935414c56636f7c8995a0aca89b8e8174675d5145392c37434e5865727f8b99a3aea2988b7f7265594f4332281e13080000000000000000000000000000000000000000000000000005111d2935414c56636f7c8995a0aca89b8e8174675d5145392c37434e5865727f8b99a3aea2988b7f7265594f4332281e1308000000000000000000000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c201306000000000000000000000000000000000916232f3c4956626f7c8995a29c8f8275695c4f42495663707c8996a3a89b8e8175685b4e422e23180c0000020c16202c3844505c6673808d99a9a6998c807366544a3f332e3a4754616d7a8796a19b8f827568564c4135291d110400000000000000000613202d394653606c7985929eabada197897c6f6256493c31262b37434e586774808d9aaaaa9a8d807367574d5565727e8b98a7a89c8f8275675d5145382c222d3a4754606d7a86929facac9f92867a6d6053473a2e23170c000000000000000000000000000000000000000000000009141f2b37424d57626e7b87939facaa9e9184796d6053493f3327313d4a5764707d8a97a3b0a99c8f82797979797979797979797979797979797979797979797979797979797976685d5245392c20130700000000000004111d2935414c56606d79849197a19e949089858384858b9297a29d938c7f726c78839098a3989083786c60574d4f5152535251504d4946443f383028231c171e262e34394045474a4d5051525352514f4b4846423b3630292019110800000000000000091623303c4956636f7c8998a39e918478685e524639343f4a5464717e8b97ac9c908376665b5055616b75818e97a19a9184796d60606a717e8792989f9d9992908f8f91979ea09d938e81786d60584e4333291f1409000000000007111921272c2f30333335414e5b6874818e9b9e9184786b5e514538333332312e2e39434f59616d7a85929f9f92867b6e61594f4339343f46525e68707d8786868686867f7265584c3f3225190c0000000000000916222e3a46515b636568696b676d675c544a3f41414142464e586673808d99a399887c6f625559616d7a85929f9f92867b6e61594f43393f46525e68707d8786868686867f7265584c3f3225190c0000000000000005111e2b3844515e6b7784919eaab0a396897d7063564a3d302317212b353f44505b666d79839197a2a49a92867c6f685e544b403428313e4b5864717e8b97a4b1aa9d9084776a5d5144372a1e11040000101d2a3643505d697683909ca9b1a5988b7e7265584b3f3225180700000000000000000000000000000000000000000000000d1a2633404d596673808c99a6b3a89b8f8275685c4f4235291c0f00000000000000000000000000010d1924303a4854606b7783909daaac9f92857a6d6054473c313b4754606a7783909dabac9f92867a6d6054473d3221160c0100000000000000000000000000000000000000000000000000010d1924303a4854606b7783909daaac9f92857a6d6054473c313b4754606a7783909dabac9f92867a6d6054473d3221160c01000000000000000000000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c201306000000000000000000000000000000000915222f3c4855626f7b8895ab9c908376695d50434955626f7c8895a9a99c8f837669554b4034281c1004000004101c28343f4a54626f7c8996a1a99c8f8276665b5044382d3946525e687884919e9e918578685d5245392c2013070000000000000000091623303c4956636f7c8997a1adab9e9185786c605346392d2026313d4a5663707d8998a2aa9d918477695e535c6775828f9ca8a7988b7e7265554b403529202c3945515d6776828f9ca9aea3988a7d7164544a3f34281c100300000000000000000000000000000000000000000000030e1a26313c47535f6a75818e9aa4ada1978b7e71655b5044372b313d4a5764707d8a97a3b0a99c8f82766c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c5d564c4135291d11040000000000000613202c3945525d68737f8c96a09e938e827c787677797e859298a29f92867b6e6e7b86929f9f948b7f72695f53493f4546454443403c3a38342e261e17110c151c23282f34383a3d40434445464544423e3b3a36302a251f170e0800000000000000000c1925323f4c5865727f8b98aa9b8f827568564d41362e3b4855626e7b889aa49f9285796c60534f59616d7a85929ea0968d80746a60616c717e868e92999b9d9d9c9c9e9c9a96918a81786d665c50463c3121180d03000000000000070f161b202223262835414e5b6874818e9b9e9184786b5e5145382b2626251d27303d46525e68717e8b949f988f82756c61554b403536414c56616b70797979797979726d62564a3e3124180b00000000000006121e2a353f495157595b5d555c605c554b474e4e4e4e4d52575f6a76838f9c9f92867a6d6054525e68717e8b949f988f82756c61554b4036414c56616b70797979797979726d62564a3e3124180b0000000000000004111e2a3744515d6a7784909daab0a3978a7d7064574a3d312417192328333f4a545d676e7b859299a3a29891847a6d665c51453f35323f4b5865727e8b98a5b1a99d9083766a5d5043372a1d100400000f1c2835424f5b6875818e9ba8b3a6998c807366594d402f23180c00000000000000000000000000000000000000000000010e1b2834414e5b6774818e9aa7b4a79a8e8174675b4e4134281b0e000000000000000000000000000008131e2c38434f5965727f8b98a2aea2988b7e7165574d4237404b55626f7c8895a0aca79b8e8174685d5245392c20130400000000000000000000000000000000000000000000000000000008131e2c38434f5965727f8b98a2aea2988b7e7165574d4237404b55626f7c8895a0aca79b8e8174685d5245392c20130400000000000000000000000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c201306000000000000000000000000000000000714212e3a4754616d7a8799a49d9184776a564c414754606d7a8797a1ab9e918478675c5145382c1f13060000000c17232e394653606c7884919eab9f9285796c605346392d36414c566975828f9ca197877a6d6054473a2d2114070000000000000006121f2b37434e586773808d9aa9b3aa9a8e8174655b5044372b1f202d3a4653606d7985929faca095877b6e6154606d7985929faca095877b6e6154483b2f241d2935414c5565727f8b98a7b1aa9b8e8175665c5044382c1f1206000000000000000000000000000000000000000000000009141f2b37434e58626f7c87939faca99d9184786c6053463d32313d4a5764707d8a97a3b0a99c8f8276696060606060606060606060606060606060606060606060606060605f524c443a2f24190d010000000000000714212d3a4754606d7a86929fa1978e81786f6a6a676d717c86929fa2988e81746a727f8c95a09f92867b6e655b50443b3039383633302d2c28231c150c06030a11171d23292c2d303436383939383735322e2d2a251f19140d050000000000000000000e1b2734414e5a6774818d9aa69a8d8073675a4d40302d3a4653606d7986939fa298877b6e615448525e68717e8a939e9f93877c6f675c616c717b81868b8f9192929291908d89847d746d665c544a3f342a200f060000000000000000040b0f1315161b2835414e5b6874818e9b9e9184786b5e5145382b1e1918151e2a36414c56606c778390999e938a7d70675d51453c2f3a444f5961636c6c6c6c6c6c65625b51463a2e221509000000000000010d18232d373f464a4c4f504b5153514c52545a5a5a5b575e61696f7c87929f9c8f8376675d514c56606c778390999e938a7d70675d51453c3a444f5961636c6c6c6c6c6c65625b51463a2e2215090000000000000003101d2a3643505d697683909ca9b1a5988b7e7265584b3f3225181017222d38424c555f69707d87929fa4a1969082786d605b51473e34404d596673808c99a6b3a89c8f8275695c4f4236291c0f0300000d1a2734404d5a6773808d9aa6b3a89b8e817568554b4034291c100400000000000000000000000000000000000000000005121e2a36424d576976838f9ca9b2a5988c7f7265594c3f3226190c0000000000000000000000000000020f1b27323d4754606d7a86929facaa9c908376695f53473845515c6774808d9aa7aca095897c6f63564c4135291d1104000000000000000000000000000000000000000000000000000000020f1b27323d4754606d7a86929facaa9c908376695f53473845515c6774808d9aa7aca095897c6f63564c4135291d110400000000000000000000000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c201306000000000000000000000000000000000613202d394653606c7986939f9f928578685d524545515d677885919eab9f9386796d6053463a2d20130800000006121f2b3744505b6575818e9ba8a298887b6f6255483c2f30404d5a6673808d99a995887c6f6255493c2f221609000000000000000815212e3b47535f6a7784919eaaaea2988a7d706453493f33271b1f2c3845515c6775828f9baca7988b7e72655463707d8998a2aa9d908377695e52463a2d1d19242f3b4855616e7b8895a0acab9f9285796d6053463a2d20130a0000000000000000000000000000000000000000000000030f1a26313c47535f6a75828f9ba6aca0968a7d7064594f4438313d4a5764707d8a97a3b0a99c8f8276695c53535353535353535353535353535353535353535353535353535345413a32281e130800000000000004101c2934404b5565717e8b98a29e92857a6d6660585c606a717e8b96a19f92857a6d6d78839099a2988f82776c60574d42362a2b2a2723201f1c17110a03000000060c12181c1f2023272a2b2c2c2b2a292521201e1a140e0802000000000000000000000f1c2936424f5c6975828f9ca5988c7f7265594c3f322c3845515c667885929eaa96897c706356494c56616c75828f97a2999183796d605a61696e757b7f82848586858583807c78706c605c544b42382e22180e00000000000000000000000307090e1b2835414e5b6874818e9b9e9184786b5e5145382b1e120b0c1925303a44505b656f7c87929f9e9184796d60584e4138323d474f5556606060606060585651493f34291e12060000000000000007111c252d353a3e3f42434045474c565d616767676869696e727b8491999e938a7d7063554b44505b656f7c87929f9e9184796d60584e41383d474f5556606060606060585651493f34291e120600000000000000020f1c2835424f5b6875828e9ba8b3a6998c807366594d402f23180c111c262f3a434d57606b727f8b929da69f948e81746d63594f463c414e5b6774818e9aa7b4a79a8e8174675b4e4134281b0e0100000c1925323f4c5865727f8b98abb5aa9d908477675c5145382c1f13060000000000000000000000000000000000000000000714212d3a46535f697885929fabb4aa968a7d7063574a3d3024170a0000000000000000000000000000000a16202c3945515d6774818e9aa7ab9f94887b6e62544a3f4653606d7985929fabaa9d9084776b6054443a3024190d01000000000000000000000000000000000000000000000000000000000a16202c3945515d6774818e9aa7ab9f94887b6e62544a3f4653606d7985929fabaa9d9084776b6054443a3024190d0100000000000000000000000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013060000000000000000000000000000000006121f2b3844505b667884919ea297877a6d605447414c556976838f9ca9a499897c6f6356493c3025190d000000030f1b27333f495365727e8b98acaa988b7e7265584b3f30323f4b5865727e8b98a3978a7d7064574a3d3124170a000000000000000915222f3c4855626f7c8896a0acac9f9286796d6053473a2d22171c2834404b5565717e8b9aa4a89c8f8275665c6774808d9aaaa9998d807366574d42362a1e14212d3a46535f697784919daaada297897d706356493d32271b0f0300000000000000000000000000000000000000000000000915202b37434e58626f7c88949eaaa89d9083766b6054483c313d4a5764707d8a97a3b0a99c8f8276695c4f464646464646464646464646464646464646464646464646464639352f2820160c0100000000000006131f2c3845515c677683909ca9998c7f73675d544e5157606d7984919ea2988b7e71666f7c87929f9f948b7e72695e52463e32291f1a161312100c0600000000000001070c101314171a1d1e1f201f1e1c181514120e0902000000000000000000000000111d2a3744505d6a7783909da4978a7d7164574a3e312834404b546a7783909da4978a7d7164574a44505a616e7b85929fa0958c80736a5f575f61696e727577787979787673706c65615a514b423930261c0f0600000000000000000000000000020e1b2835414e5b6874818e9b9e9184786b5e5145382b1e120008131e27333f49535f6a73808d96a0968d80736a5f53493f33353d44484a5353535353534c4a463f372d23180d0100000000000000000a131c232a2e3132352f343946525d686d7474747475777b7f8591969e938e81746b6155433f49535f6a73808d96a0968d80736a5f53493f333d44484a5353535353534c4a463f372d23180d0100000000000000010d1a2734404d5a6773808d9aa6b3a89b8e817568554b4034291c100a141d28313b454f59626d74808d949fa69d938c7f726b61584e44424d57697683909ca9b2a6998c7f7366594c403326190d000000091623303c4956636f7c8999a4afac9f9286796d6053473a2d22170b0000000000000000000000000000000000000000000815222e3b4855616e7b8897a2adaea298887b6e6155483b2e22150800000000000000000000000000000004111d2935414c55626f7c88959faba6998d8073665c50444d5764717e8a97a2ada2988b7f7265594f4332281e1308000000000000000000000000000000000000000000000000000000000004111d2935414c55626f7c88959faba6998d8073665c50444d5764717e8a97a2ada2988b7f7265594f4332281e13080000000000000000000000000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130600000000000000000000000000000000030f1c28333f4a546976838f9ca995897c6f625649404d5a6673808d99aaab998c7f7266564c41362a1c11060000000b17222d3c4956626f7c899aa4a89b8e817568564c4136313d4a5764707d8a97a3988b7f7265584c3f3225190c00000000000005121e2a36424d5766737f8c99a8b2ac9c8f8275675d5145382c1b1118232e3b4754616e7a87939fac9f9285796d60697784919daaa197897c6f6256493c30251a121e2a36424d576673808d99a9b3a99a8d807467584e43372b1f13060000000000000000000000000000000000000000000000030f1b26313c4754606a75828f9ca6ab9f95897c6f63584e43373d4a5764707d8a97a3b0a99c8f8276695c4f43393939393939393939393939393939393939393939393939392c29241e160d04000000000000000714202d3a4753606d7986929fa197887b6f62554b4245515c6674818d9aaa9b8e8174686a73808c95a09f92867b6e615a50443b3025190e07060300000000000000000000000406070a0d1011121312110f0b080705020000000000000000000000000000121e2b3845515e6b7884919ea3968a7d7063574a3d30232e43505d697683909ca5988b7e7265584b3f46525e69717e8b949f9f92877c6f665c53575e6165686a6c6c6c6b696763605b535045403930271e140a0000000000000000000000000205070e1b2835414e5b6874818e9b9e9184786b5e5145382b1e1205020b17222d38414e58606d7984919e9f92877c6f655b50443b3033383c3d4646464646463f3e3a342d251b1106000000000000000000010a11181e22252628232e3a4754616d7a808181818284878c929796918b81796d60594f4438414e58606d7984919e9f92877c6f655b50443b33383c3d4646464646463f3e3a342d251b11060000000000000000000c1925323f4c5865727f8b98abb5aa9d908477675c5145382c1f13060b161f2a333d47515b606d78828f96a0a59f93877d706a5f564c47535f697885929eabb4aa978a7e7164574b3e3124180b0000000714202d3a4753606d7a86939facaea399897d706353493f33271b0f030000000000000000000000000000000000000004111d2935414c5565717e8b98a9b3ac9f9285786d6053463a2d201307000000000000000000000000000000010d19242f3a47545f6a7783909da9ab9e9184796d605346525e6976828f9ca9ac9f92867a6d6054473d3221160c020000000000000000000000000000000000000000000000000000000000010d19242f3a47545f6a7783909da9ab9e9184796d605346525e6976828f9ca9ac9f92867a6d6054473d3221160c020000000000000000000000000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130600000000000000000000000000000000000b17222d414e5b6774818e9aa4978b7e7164584b3e495663707c8998a2a99c8f8276685e5246382d22170b0000000614202d3a4753606d7a86939faa9e918477685e5246392f3c4956626f7c8995a2998c7f7266594c3f3326190c0000000000000714212d3a46535e697783909daaafa49a8b7e7165554b4035291d0a14202d3946525e687783909daaa298897c70636e7b8796a0ab9e9285796c605346392d20130e1a26313c4956636f7c8997a1adab9e9184786a6054473b2e2215090000000000000000000000000000000000000000000000000a15202b37434e58626f7c89949faba79c8f82756a5f53473b3d4a5764707d8a97a3b0a99c8f8276695c4f43362d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d201d19130c0400000000000000000916232f3c4956626f7c8999a39e9285796c6053463a404a5464717d8a97ac9d90847767606d79839099a2988f82766c62564d41362a20170c0200000000000000000000000000000000010305060605040200000000000000000000000000000000000000121f2c3845525f6b7885929ea396897c706356493d302936434f5c6976828f9ca5988c7f7265594c3f424d56626c76828f98a2999083786d60584e5254585c5e5f5f5f5e5d5a56535049413e342e271e150c020000000000000000000002090e1114141b2835414e5b6874818e9b9e9184786b5e5145382b1e12050006111b262f3c45515d67707d8a939e999083776c60564c41362a2c2f3039393939393932312e29231b1309000000000000000000000000070d121618191c212e3b4854616e7b878d8d8e8f9193938f8d89847e756d675c51473e2f3c45515d67707d8a939e999083776c60564c41362c2f3039393939393932312e29231b130900000000000000000000091623303c4956636f7c8999a4afac9f9286796d6053473a2d22170b040d18212b353f44505c666d7a849197a2a49992867c6f685e544b55626e7b8897a2adaea298887b6f6255483c2f2215090000000613202c3945515d677784909daab4ab9a8d8073655b5044372b1f140a000000000000000000000000000000000000010c13202c3945515d6775828e9ba8b5a89c8f8275665c5044382b1f12060000000000000000000000000000000008131e2b37434e5865717e8b97a2ada1968a7d7063564c54616e7b87939faca79b8e8174685d5245392c2013040000000000000000000000000000000000000000000000000000000000000008131e2b37434e5865717e8b97a2ada1968a7d7063564c54616e7b87939faca79b8e8174685d5245392c201304000000000000000000000000000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013060000000000000000000000000000000000061825323f4b5865727e8b98aa9a8d817467564c414653606d7986929fac9f92867a6e61544a3f33281d1207000006131f2c3945515d677885919eaba096877a6e6154473b2f3c4955626f7c8895a2998c807366594d4033261a0d0000000000000815212e3b4854616e7b8795a0acac9f93877a6e6154473b2f24180c111e2a36414c5666737f8c99a9aa998d807366717e8b97a8ab9b8e8174665b5044382b1f120913202d3a4653606d7985929eabada196887c6f6255493c31261a0e020000000000000000000000000000000000000000000000040f1b27323c4854606a76828f9ca6ac9f93877c6f62574d423d4a5764707d8a97a3b0a99c8f8276695c4f433629202020202020202020202020202020202020202020201413110d08010000000000000000000b1825323e4b5865717e8b98ab9c908376655b5044373b4855626e7b889aa49f9286796d60666f7c87929f9e948b7e71685e52463e32291e130800000000000000000000000000000000000000000000000000000000000000000000000000000000000000121f2c3945525f6c7885929fa296897c6f6356493c302935424f5c6875828f9ba6998c7f7366594c403b44505a616e7b86929fa0958c7f726a5f544a484c4f5152535252504d4946443f382f28231d150c0300000000000000000000050d14191e2021272835414e5b6874818e9b9e9184786b5e5145382b1e120500000a141d2935404b55616b75818e989f958b7e72685e52463d302723232d2d2d2d2d2d2524221e18110901000000000000000000000000000106090c0c15212e3b4854616e7b87949a9b9c9e938682807d78716c605c554b40352935404b55616b75818e989f958b7e72685e52463d3027232d2d2d2d2d2d2524221e18110901000000000000000000000714202d3a4753606d7a86939facaea399897d706353493f33271b0f03060f192328343f4a545d686e7b859299a3a29891847a6d665c515665717e8b98a9b3ac9f9285796d6053463a2d20130700000004101d2935404b556773808d9aa9b3ab9e9184786c6053463c2f261b1106000000000000000000000000000000000007131d28333f4a54606d7a86929facb1a7988b7f7265544a3f34281c100300000000000000000000000000000000010f1b26323c4753606d7985929faba99b8e8275685d525966737f8c99a4aca095897c6f63564c4135291d110400000000000000000000000000000000000000000000000000000000000000010f1b26323c4753606d7985929faba99b8e8275685d525966737f8c99a4aca095897c6f63564c4135291d1104000000000000000000000000000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130600000000000000000000000000000000000916222f3c4955626f7c8898a29d908377685d524545515c6775828e9ba8a3998b7f72665b5044392e23180f060004101d2935404b556a7784909daaa8978a7d7064574a3d2f3b4855626e7b8895a19a8d8074675a4d4134271a0e000000000005111d2a36414c5665727f8b98a7b1a99d908376685e5246392d1d12070e1925303c4955626f7c8896a1a99d9083766774818e9ba7a3998a7d7164544a3f33281c0f06121f2b3844505c6674818e9babb2a8998c807366574d42372b1e12060000000000000000000000000000000000000000000000000a15202c38434e5863707d89949faba49a8e8174695e52463d4a5764707d8a97a3b0a99c8f8276695c4f4336291c1313131313131313131313131313131313131313130707040100000000000000000000000d1a2633404d596673808c99a69b8e81746853493f333a4653606d7986939fa399887b6e61606a73808d96a09f92857b6e615a50443a3025190e04000000000000000000000000000000000000000000000000000000000000000000000000000000000000121f2c3945525f6c7885929fa295897c6f6256493c2f2935424f5c6875828f9ba6998c7f7366594c40323f46535e69727f8b949f9f92867c6e665b50443f42444546464543403d3937332d261d18120b0300000000000000000000050e171f252a2d2e342d35414e5b6874818e9b9e9184786b5e5145382b1e12050000020b18242f39434f59616e7b85929f9f92857a6e61594f43392e2318202020202020191815120d06000000000000000000000000000000060b0f12131c212e3b4854616e7b8793939495989a9285817d756e685e574d43392e242f39434f59616e7b85929f9f92857a6e61594f43392e23182020202020191815120d060000000000000000000000000613202c3945515d677784909daab5ab9a8d8073655b5044372b1f140a00071117232e38424c565f69707d87929fa5a0969082786d605b5d6875828f9ca8b5a99c908376665c5044382b1f1206000000010d18242f3d495663707c8997a1adaca196897d7063584e41382d22170f06000000000000000000000000000000071118242f3844505b66717e8b98a2aeaca095887b6e6155483b2e23170b0000000000000000000000000000000000000a151f2c3945515d6774808d9aa6ac9f92867a6d6154606b7784919eabaa9d9084776b6054443a3024190d0100000000000000000000000000000000000000000000000000000000000000000a151f2c3945515d6774808d9aa6ac9f92867a6d6154606b7784919eabaa9d9084776b6054443a3024190d01000000000000000000000000000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130600000000000000000000000000000000000713202d3a4653606d7985929f9f93867a6d605447404b5563707d8996a1ab9e9184786c60554b4034282118100b09111d2a36414c566a7784919daaa69a8d807367554b40343b4855616e7b8894a19a8d8174675a4e4134271b0e00000000000713202d3946525e6876838f9ca9b2a8998c7f7266564c41362a1e0b010815222e3b47545f6a7884919eab9f92867a6d7784919eaa9f92867a6d6054473a2d22170b03101c28343f4a5464717d8a99a3aeaa9d908477695f53473a2d211408000000000000000000000000000000000000000000000000040f1b27323d4854606b7683909ca7ac9f92867b6e61564c414a5764707d8a97a3b0a99c8f8276695c4f4336291c100d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0a0a08040000000000000000000e1a2734414d5a6774808d9aa69a8d8073675a4d402d3845515c677885929fab95887c6f6258606d79849199a2978f82756c61564c41362a20160c020000000000000000000000000000000000000000000000000000000000000000000000000000000000121f2c3845525f6b7885929ea296897c6f6356493c302936434f5c6976828f9ca5998c7f7266594c3f3336424d57606c78839098a3989083786c60574d41382d393939383634302d2b27221b140b070000000000000000000000020d17202930363a3b413a38414e5b6874818e9b9e9184786b5e5145382b1e120500000007121d27313e46525e68727f8b959f978e81756b60554b4034281f1509131313130c0b0906010000000000000000000000000000020a11171c1f2028232e3b4854616e7b86868687898c9195928e89827a6e695e544a40342827313e46525e68727f8b959f978e81756b60554b4034281f15091313130c0b0906010000000000000000000000000004111d2935404b556773808d9aa9b3ab9e9184786c6053463c2f261b11060006111c26303a444d57606b727f8b939da69f948e81746d62606d7a86929facb2a8998c7f7266544a3f34281c1003000000000713202d3a4653606d7985929eacb2a89c8f82756a5f53493f332721180f0802000000000000000000000003091119232935404b55606c7884919daab3a99d908477695f53463a2d1c110600000000000000000000000000000000000004101d2935404b55626f7b88949faba3998b7e726557636f7c8996a0aca2988b7f7265594f4332281e130800000000000000000000000000000000000000000000000000000000000000000004101d2935404b55626f7b88949faba3998b7e726557636f7c8996a0aca2988b7f7265594f4332281e130800000000000000000000000000000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c201306000000000000000000000000000000000006121f2c3844515c6676828f9ca4998a7d7164554b404653606c7884919ea8a0968a7d71675c51453d332a221c18181a222d3946525e687885929eaba99d908376675c5145383c4955626f7c8895a2998d8073665a4d4033271a0d00000000000714212e3a4754616d7a86929facaca096887b6f6255483c3025190d0006131f2b37434e586774818e9aaaa399897d707b8796a0a99c8f8276675d5145392c1c1106000b17232e3a4754606d7a86929facaca095887b6e6155483b3025190d010000000000000000000000000000000000000000000000000a16212c38444f5963707d89959faba3998d8073685d52454a5764707d8a97a3b0a99c8f8276695c4f4336291c1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a171614100b05000000000000000e1b2835414e5b6874818e9ba6998d8073665a4d403334404b556b7885919ea396897c7063565c676f7c87939f9e938a7e71685e52463e32281e13080000000000000000000000000000000000000000000000000000000000000000000000000000000000121f2b3845525e6b7885919ea396897d7063564a3d30293643505c6976838f9ca5988b7f7265584c3f32313b44505b666e7b86929f9f958b7f72695f53493f33272c2c2b2a2723201f1b17110a0200000000000000000000000009141f29323b4246474d4745404e5b6874818e9b9e9184786b5e5145382b1e1205000000010b151f2a36414d56606c788390999e93897d70675c51453c31261a0e04060606000000000000000000000000000000000000020b141c22282b2d352e343a46535e69767979797a7c7f848c9399948f847b6e665c5144382c1f2a36414d56606c788390999e93897d70675c51453c31261a0e040606000000000000000000000000000000000000010d18242f3d495663707c8997a1adaca196897d7063584e41382d22170f06000a151e28323c454f59626d74818e949fa69d938c7f726b66727f8b98a3aeaca096887c6f6255493c2e23170b000000000006121f2c3844505c6673808d9aa4afaa9e94887c6f655b50443d332a2219140e09060400000100000406090e141a232b353d45515d67717e8a95a0acada2978b7e7265574d42362a1e0a00000000000000000000000000000000000000000c18242f3947535f6a7683909ca9ab9d908376695f6774818e9aa8ac9f92867a6d6054473d3221160c02000000000000000000000000000000000000000000000000000000000000000000000c18242f3947535f6a7683909ca9ab9d908376695f6774818e9aa8ac9f92867a6d6054473d3221160c0200000000000000000000000000000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c201306000000000000000000000000000000000004101c2834404a5465727f8c98a79b8e8175675c514544505b66727f8c96a1a89e9184796d60594f453c342c272524262a343c4754616d7a86939facac9f9286796d6053473a3d495663707c8996a3998c7f7266594c3f3326190c0000000004101d2935404b5564717e8b99a3afaa9e9184776a5f53473a2e1e140800030f1b26323d4a5763707d8a98a2ab998c80737e8a97a8a8988c7f7265554c4135291d0a00000613202c3945515d6776828f9ca9b1a7988c7f7265564c41362a1e110500000000000000000000000000000000000000000000000004101b27323d4854606b7683909da7ab9f92857a6d60554b4a5764707d8a97a3b0a99c8f8276695c4f4336292727272727272727272727272727272727272727272727272423201c1710080000000000000f1c2835424f5b6875828e9ba6998c7f7366594c40332e44515e6b7784919ea3968a7d70635755606b74808d96a09e92857a6d615a50443a3024190d0400000000000000000000000000000000000000000000000000000000000000000000000000000000111e2a3744515d6a7784909da3978a7d7064574a3d312a3743505d6a7683909da4978b7e7164584b3e3128333f4a545f6a737f8c95a09f92867b6e655b50443b30251a1f1d1a1613120f0b0600000000000000000000000000020e1925303b444d52545a53514b4e5b6874818e9b9e9184786b5e5145382b1e120500000000030d1925303b44505b666f7c87929f9e9184796d60574d42372b20160c0200000000000000000000000000000000000000000a141d262d33383942434045464d575e6c6c666d6d6f72787f87939f969083786d6053463c312625303b44505b666f7c87929f9e9184796d60574d42372b20160c0200000000000000000000000000000000000000000713202d3a4653606d7985929eacb2a89c8f82756a5f53493f332721180f08030c16202a333d47515b606d78828f96a0a59f93877d706d7984919eaab4aa9d9184776a5f53473b2e1c1106000000000003101c28343f4a54616e7b87939fabb0a69c9083776c60584e453c342a251e1a1312100c070e070c1013131a1f262a353d47505a606d7984919ea7b1a99f9285796d6053473b31261a0e000000000000000000000000000000000000000007121d2b37434e5864717e8a97a1ab9f95887b6e616d7985929faba79b8e8174685d5245392c201304000000000000000000000000000000000000000000000000000000000000000000000007121d2b37434e5864717e8a97a1ab9f95887b6e616d7985929faba79b8e8174685d5245392c2013040000000000000000000000000000000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013060000000000000000000000000000000000000c18232e3b4855616e7b88959f9f9285796d6053473f4a54606d7984919ea6a0968c7f736b60574e463f3833313131363d46505a64717e8a9aa4afaea399897c6f6356493c3d4a5764707d8a97a3988b7f7265584c3f3225190c0000000006131f2c3945515d6775828f9babb3a99a8d807467584e43372b1f0d0200000a14202d3a4753606d7986929fa99c908376818d9aa7a096887b6e6155483b2f24190d000004111d2935414c5565727f8b98a7b1a99c908376685e5246392d201407000000000000000000000000000000000000000000000000000b16212c38444f5963707d8a95a0aba2988c7f72675c514a5764707d8a97a3b0a99c8f8276695c4f43363434343434343434343434343434343434343434343434343431302d28221a110800000000000f1b2835424e5b6875818e9ba6998c807366594d40333845525e6b7885919ea396897c7063564f59606d7984919ea1978e81756c61564c4135291f160c01000000000000000000000000000000000000000000000000000000000000000000000000000000101d293643505c6976838f9ca4988b7e7165584b3e322935414c566b7784919eac968a7d7063574a3d30222d38424e57606d78839099a2988f82776c60574d42362a20170d0d0a06050300000000000000000000000000000005111e2a36424d565e6167605c554e5b6874818e9b9e9184786b5e5145382b1e1205000000000008141f28333f4a545f6a73808d96a0968c8073695f53473e32281e13080000000000000000000000000000000000000006111c262f383f44464f504b51535452535f605c606162666c727f8b95a0958c7f7265574e42372b1f28333f4a545f6a73808d96a0968c8073695f53473e32281e1308000000000000000000000000000000000000000006121f2c3844505c6673808d9aa4afaa9e94887c6f655b50443d332a2219140e090e18212c353f44515c666d7a849198a2a49992867c717e8b96a0acaea3988c7f7265584e43372b1f0a000000000000000c17232e3846535f6975828e99a3afab9f948b7f726a60574e463e36302a25201f1c181b1a1b181c1f20262b31363f474f59616c74808d96a1adada2978d8073675d5145392a1f14090000000000000000000000000000000000000000010f1a26313c4653606d7985929eaca7998c7f7366717d8a98a2aca095897c6f63564c4135291d11040000000000000000000000000000000000000000000000000000000000000000000000010f1a26313c4653606d7985929eaca7998c7f7366717d8a98a2aca095897c6f63564c4135291d11040000000000000000000000000000000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013060000000000000000000000000000000000000714212d3a46535f697783909da2988a7e7164584e4345515c67717e8b949fa89f92877d70695f585048443f3e3e3f42464f58616c7683909cacaab0ab998c7f7266594c3f3f4c5865727f8b98a4978b7e7164584b3e3125180b000000000714202d3a4753606d7a86929facada297897c706356493d31261a0f00000006131f2c3845515d6775828f9ca89f92867983909daa9d918477695f53473a2d1e13080000010d19242f3b4855616e7b8895a0acac9f93867a6e6154473b2f24180d0100000000000000000000000000000000000000000000000004101c27333d4855616b7783909da7aa9e9285796d60544a5764707d8a97a3b0a99c8f8276695c4f4340404040404040404040404040404040404040404040404040403d3c39332c231a1005000000000e1b2734414e5a6774818d9aa69a8d8073675a4d40343744505b657885929ea295897c6f625649515d67707d89939d9e938a7d70685d52453e31281e13080000000000000000000000000000000000000000000000000000000000000000000000000000000f1b2835424e5b6875818e9ba6998c7f7366594c402e2c3945525d687985929fa49a887b6f6255483c2f22262f3c44505c666f7c87929f9f948b7e71695e52463e32291e1308000000000000000000000000000000000000000714202d3a46525e696e746d675f585b6874818e9b9e9184786b5e5145382b1e12050000000000020b17222d38424e58606d7984919e9f92867b6e625a50443a3024190c030000000000000000000000000000000000000b17222d38424a50535b5d555c60605d564c4a505354545b606c7883909d9e9184786a5f53473a2e21222d38424e58606d7984919e9f92867b6e625a50443a3024190c030000000000000000000000000000000000000003101c28343f4a54616e7b87939fabb0a69c9083776c60584e453c342a251e1a1312101a232834404a545e686f7c869299a4a29891847b85929ea8b2aa9f92867a6d6154473c32261b0f0000000000000006111c2a36424d57626e7b87929fa8b0a69f92877c6f695f585046413b36312d2c282327272723282c2d31373b42465159606b717e8a929da8b1a79f92857a6d61554b4035291d10040000000000000000000000000000000000000000000a151f2c3845515c6773808d9aa4aa9d9184776a75828e9baaaa9d9084776b6054443a3024190d010000000000000000000000000000000000000000000000000000000000000000000000000a151f2c3845515c6773808d9aa4aa9d9184776a75828e9baaaa9d9084776b6054443a3024190d010000000000000000000000000000000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130600000000000000000000000000000000000005121e2b37424d5765727f8c98a39c9083766a605447404b55606c77828f97a2a39992857b6f6a625a554f4c4b4b4c4d5359606a707d8a949f9b9ea6a89b8f827568574d42404b546774818e9aa896897c6f6356493c3023160900000003101c28343f4a5464707d8a98a2aeab9f9285796d6053463a2d20130a00000004101d2935404b5565727e8b98a7a3988a7d87939fa99a8d807367574d42372b1e0c010000000814212d3a46535f697784919daaafa4998b7e7165554b4135291d1104000000000000000000000000000000000000000000000000000b16212c38444f5964707d8a95a0aca1978b7e72665b505764707d8a97a3b0a99c8f8276695c4f4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4a49443e362c22170b000000000d1a2734404d5a6773808d9aa69a8e8174675b4e4130394653606c7986929fa895887b6e6255484b55606b74818e96a19e91857a6d60594f433a2f24190d0400000000000000000000000000000000000000000000000000000000000000000000000000000d1a2633404d596673808c99a69a8e817467544b40342d3a4754606d7a8798a29f93867a6d6053473a2d201d28343f4a545f6a73808d95a09f92857b6e615a50443a3025190e040000000000000000000000000000000000000814212e3b4754616e7b80796f6a605b6874818e9b9e9184786b5e5145382b1e120500000000000006111c262f3c45515d67707d8a939e988f82766c61564c4135291e150a0000000000000000000000000000000000030f1c28333f4a545b6068696b676d6d685d52454446474a505b6573808c99a196887b6e6255483b2f221c262f3c45515d67707d8a939e988f82766c61564c4135291e150a00000000000000000000000000000000000000000c17232e3846535f6975828e99a3afab9f948b7f726a60574e463e36302a25201f1c1818232e39424c565f6a707d87939fa5a09691859297a1adaea2988d8074685e5246392a20150a00000000000000000e1a26313b47535f6974808d96a0abaea39991857b6e6a615a524c46423c3a38342e3434342e34383a3c42474d535b626b707d86929fa4aeaaa0958b7f72685e5243392f24180d0100000000000000000000000000000000000000000004101c2834404b55616e7b87939faca095887b6f7985929faca3988b7f7265594f4332281e13080000000000000000000000000000000000000000000000000000000000000000000000000004101c2834404b55616e7b87939faca095887b6f7985929faca3988b7f7265594f4332281e1308000000000000000000000000000000000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c201306000000000000000000000000000000000000020e1a26313c4754616d7a86929f9f94887c6f62584e4244505b656e7b859299a4a19791857c716c63615959585758575f616b707c869299938f939eab9e928578695f534745515c667683909da196877a6d6054473a2d21140700000006121f2c3844505c6674818e9baab4ab9b8e8175665c5044382c1f1206000000000c18242f3b4754616e7b8795a0aa9c8f838f99a4a297897c706356493d31261a0e0000000005121e2a36424d576673808d99a9b3ab9c8f8275675d5145392c2013070000000000000000000000000000000000000000000000000005101c28333e4653606c7883909da8a99e9184786c60555764707d8a97a3b0a99c8f8276695c5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a575550483e33281c10040000000c1926323f4c5965727f8c98a59c8f827669564c41363b4754616e7a8799a3a196877a6d605447434f59606d7a84919ea1978e81746b61554c4135291f160c01000000000000000000000000000000000000000000000000000000000000000000000000000a1724313d4a5764707d8a97a89d908376665c514538303d495663707c8996aa9e918477675d5145392c1f17232e38424e58606d79849199a2988f82756c61564c41362a20160c0200000000000000000000000000000000000815212e3b4854616e7b87837c726c656874818e9b9e9184786b5e5145382b1e1205000000000000000a141d2935404b55616c75828f989f948a7e71685d52453d30261c11060000000000000000000000000000000006121f2b3844505b666c75767778797a6d60544b403a3a3f495364717e8b97a8978a7d7164574a3e3124141d2935404b55616c75828f989f948a7e71685d52453d30261c11060000000000000000000000000000000000000006111c2a36424d57626e7b87929fa8b0a69f92877c6f695f585046413b36312d2c2823272727303a444e58616b727f8c939ea7a0989298a1a9b1a79f92867a6e61564c41362a1e1105000000000000000009141f2b37424d57606d79849199a4afaba19791847c706c615e56534d494644404141414141404546494d53575f616d727d869298a2aeaca2989083786c60564c4131281d120700000000000000000000000000000000000000000000000c18232e3946535f6976828f9ca9a7998c7f737d8a98a2ac9f92867a6d6054473d3221160c0200000000000000000000000000000000000000000000000000000000000000000000000000000c18232e3946535f6976828f9ca9a7998c7f737d8a98a2ac9f92867a6d6054473d3221160c02000000000000000000000000000000000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c201306000000000000000000000000000000000000000914202d3946525e6874818e9aa49b8f82756a60544a3f49535e69717e87939fa3a19791867e76706b686564646567696e747d8592989387828f9baaa197887b6e6255484653606d7985929f9e918478675d5145392c2013060000000713202d3a4653606d7985929eabaea3998a7e7164544a3f34281c1003000000000714202d3a46525e697783909daa9f948f949fab9f9285796d6053463a2d20130900000000020e1a26313c4956636f7c8997a1adac9f92867a6d6054473a2e23180c00000000000000000000000000000000000000000000000000000b161f2b3744505b65717e8a95a0aca0968a7d7064626264707d8a97a3b0a99c8f827669676767676767676767676767676767676767676767676767676767676764615a5044392d2014080000000a1723303d4a5663707d8996a89e918477685e5246393c4956626f7c8995ab9e918478685d52453d45515d67707d8a939e9e938a7d70675d51453d31281d1207000000000000000000000000000000000000000000000000000000000000000000000000000815212e3b4854616e7b8796a09f9286796d6053463c36414c5665727f8c98ab9b8e817568554b4035291d111c26303c45515c676f7c87939f9e948a7e71685e52463e32281e130800000000000000000000000000000000000815212e3b4854616e7b8790867f776e6974818e9b9e9184786b5e5145382b1e120500000000000000020b18242f3a43505a616e7b86929f9e92857a6d60594f42382e23170c030000000000000000000000000000000613202d394653606c7881838485868275665c5145403f414a5464717e8b97a4988b7e7165584b3e32251818242f3a43505a616e7b86929f9e92857a6d60594f42382e23170c03000000000000000000000000000000000000000e1a26313b47535f6974808d96a0abaea39991857b6e6a615a524c46423c3a38342e34343430353c464f59636d74818e959faaa29fa2aab3aaa0958c7f72685e52443a3025190d010000000000000000030e1a26313c45515d676f7d87939fa4aea9a19691867e756e68615e575653514a4e4e4d4e4e4b515356575f62696e767f879298a2aaafa49a92867c6f665b50443a301f160c01000000000000000000000000000000000000000000000007121d2b37424d5764717d8a97a1aa9d908377818e9baaa79b8e8174685d5245392c20130400000000000000000000000000000000000000000000000000000000000000000000000000000007121d2b37424d5764717d8a97a1aa9d908377818e9baaa79b8e8174685d5245392c20130400000000000000000000000000000000000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013060000000000000000000000000000000000000005111d2935414c56626f7c87939f9f93877c6f665b5044414d57616c727f8b919fa3a198928b827d78757271717274777b81879297978e817d8998a3a9978b7e7164584b4a5463707d8a98a29c8f827569554c4135291d11040000000a1623303d495663707d8997a2adac9f92867a6d6054473a2e23170c000000000005111e2a36424d576673808c99a9a69f9c9fa6ab9b8e8275665c5044382c1f120600000000000913202d394653606c7985929eabaea3988a7d7164544a4034281c100400000000000000000000000000000000000000000000000000030f1b27333f4953606c7884919da8a89c9083766e6e6e6e707d8a97a3b0a99c8f8276737373737373737373737373737373737373737373737373737373737373706c6155493c3023160a0000000714212e3a4754616d7a8796a0a096877a6d61544740414d5765727f8c98ac9c8f827569564c4135414c55616b75818e97a19e91847a6d60594f43392f24180d030000000000000000000000000000000000000000000000000000000000000000000000000714202d3a46525e697784919ea398897d7063584e433f46525e6876828f9ca3998b7e7164584b3e2f24180c151e2834404b55606b74808d96a19e92857a6d615a50443a3024190d04000000000000000000000000000000000815212e3b4854616e7b8798928c827b7174818e9b9e9184786b5e5145382b1e1205000000000000000007131d28313e46525e69727f8c95a0978e81746b60544a3f34281f140900000000000000000000000000000006121f2b3844505b6677849091929285796d6058514a4c4b515b6673808d99a9978a7d7164574a3e312417131d28313e46525e69727f8c95a0978e81746b60544a3f34281f14090000000000000000000000000000000000000009141f2b37424d57606d79849199a4afaba19791847c706c615e56534d49464440414141414241464749505b606d79839098a2aeacaeb4aea2989083786d60564c4132291e13080000000000000000000009151f2935404b55606b727f8b929da4ada9a198928a817a746e696562605c545b5a5a5a5b545c606266696e747b828b9299a2aaaea39f93887e706a5f544a3f32291e0d04000000000000000000000000000000000000000000000000000e1a26313c4653606d7984919eaba095887b85929faba095897c6f63564c4135291d1104000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a26313c4653606d7984919eaba095887b85929faba095897c6f63564c4135291d110400000000000000000000000000000000000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130600000000000000000000000000000000000000010d1925303a47535f6a75828f9aa49a9083786c60564c4145505a626d737f8a9298a0a29f948f8984817f7e7e7f8083878e92999992857b7986929fa79a8e817467564c505c6674818e9aa7988c7f7265594c3f2f24190d01000006131f2b37434e586774808d9aa9b3a99c8f8276675d5145392c1c11060000000000020e1a25303c4955626f7c8897a1adaba9abafa4998b7e7164544a3f34281c1003000000000006121f2b3844505b6674818e9babb4aa9b8e8175665c5144382c1f120600000000000000000000000000000000000000000000000000000b17222d3844505b66717e8b96a0ab9f948a7d7b7b7b7b7b7f8b98a5b1ab9e9184808080808080808080808080808080808080808080808080808080808080807e7064574a3d3124170a0000000713202d3946525e687784919ea8978a7e71645b514b4c535f6976828f9ca49a8c7f7266594c3f2f3a434f59616d7a85919ea1968e81746b60554b4035291f150b01000000000000000000000000000000000000000000000000000000000000000000000005121e2a36424d576773808d9aa69b8e81746a5f554e4a5059616d7a86929f9f92867a6d6154473a2e2114070c18232e39434f59606d7984919ea1978e81756c61564c4135291f160c010000000000000000000000000000000815212e3b4854616e7b879298948f857e74818e9b9e9184786b5e5145382b1e12050000000000000000010c161f2a36424d57606d788390999f93887c6f665c50443b31251a0d040000000000000000000000000000030f1c28333f4a546774818e9a9f978b7e716a605c5459555d606c7884919da297897c6f6356493c3023160c161f2a36424d57606d788390999f93887c6f665c50443b31251a0d04000000000000000000000000000000000000030e1a26313c45515d676f7d87939fa4aea9a19691867e756e68615e575653514a4e4e4d4e4f4c5254535b60636b6f7a85929facb8bab2a89f92867c6f665c50443b3020170d0200000000000000000000030d18242f3a434f59626d74808d929ca3adaaa29f938e86807b76726f6d6669686767676869666d6f72777b81868f949fa3ababa39f918c7f726c61584e42382d20170d000000000000000000000000000000000000000000000000000009141f2c3844505c6673808c99a4a79c8f828f97a2aa9d9084776b6054443a3024190d010000000000000000000000000000000000000000000000000000000000000000000000000000000009141f2c3844505c6673808c99a4a79c8f828f97a2aa9d9084776b6054443a3024190d0100000000000000000000000000000000000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c201306000000000000000000000000000000000000000008131e2b37434e58626f7c87939f9f958b7f72685e53493f48515b636d737e8691969fa39f9c96918e8c8b8a8b8d9093999f9993877d707683909ca99d918477685d5253606d7985919ea095887b6e6155483b2e2215080000000815222e3b4754606a7884919eabb1a7988b7f7265554c4135291d0a000000000000000913202d394653606c7884919eabb8b6b9ac9f93867a6d6154473a2e23170c000000000000030f1c28333f4a5464717d8a99a3aeab9f9285796d6053463a2d22170b000000000000000000000000000000000000000000000000000006111b28333f4a54606d7884919ea8a69a8f8a88888888888b919ba7b3aca196918d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8074675a4e4134271b0e01000005111d2a36414c566673808c99a59d9083766d605c55565e656e7b87939f9f93877b6e6154483b2e313e46525d68717e8a939e9d93897d70675d51453d31271d12070000000000000000000000000000000000000000000000000000000000000000000000020e1a25303c4855626f7c88949f9f92867c6f676058545c606b73808d99a39c8f8275685e5246392d20130707121d27303d45515d67707d89939d9e938a7d70685d52453d31281d13070000000000000000000000000000000613202d394653606c787f86909597928a81818e9b9e9184786b5e5145382b1e1205000000000000000000040d1a25303b44505c666f7c87939f9a9083786d60574d42362a1f160c0100000000000000000000000000000b17222d3c4956626f7c89949f9f92857c716d66666666676d737f8c96a09f9285796d6053463a2d2013070d1a25303b44505c666f7c87939f9a9083786d60574d42362a1f160c0100000000000000000000000000000000000009151f2935404b55606b727f8b929da4ada9a198928a817a746e696562605c545b5a5a5b5c565d6163656c70757d839098a2aebab9aca0968a7e716a5f544a3f32291e0e0500000000000000000000000007131d28313d47515b606c77808c919ea1a9aea59e98928d87837f7c79777674747474747677797c7f83888e92999fa6aea8a199928b7f736d635a50463c2f261c0e05000000000000000000000000000000000000000000000000000003101c28343f4a54616e7b87939fac9e948f949ea9a3988b7f7265594f4332281e1308000000000000000000000000000000000000000000000000000000000000000000000000000000000003101c28343f4a54616e7b87939fac9e948f949ea9a3988b7f7265594f4332281e13080000000000000000000000000000000000000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013060000000000000000000000000000000000000000020f1b26323c47535f6a74818e97a29f92857a6d655b50443f49515b636c717c848c92989ea1a19e9b989797989a9d9f9f9791877e716b73808c99a09f93867a6d61545b65717e8a97a19d918477695f53473a2d2114080000000916222f3c4955626f7c8896a1adaca095877b6e6154483b2f24190d0000000000000005121f2b3744505b6574818e9aaab4bfb6a99c908376685e5246392d1c1106000000000000000b17222d3a4754606d7a86929facada297897d706353493f33271b0f0300000000000000000000000000000000000000000000000000000b17222d3844505c66717e8b96a1aca19a969595959595989ba3adb8b2a8a19e9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a8d8174675a4e4134271b0e010000010d1925303b4855626e7b88939e9f958b7f736d676767686d77828f99a49c908376695e53463a2d2935414c56616c75818e97a19e9184796d60594f43392f24180c0400000000000000000000000000000000000000000000000000000000000000000000000915212e3b47535f6a76828f9aa3999083796f6a6867666d717d87929f9f94897d7063564c41362a1e1105000b151e2935404b55606b74818e97a19e91857a6d60594f433a2f24180d04000000000000000000000000000006121f2b3844505b666c727c838c9299938e8e939e9e9184786b5e5145382b1e12050000000000000000000009141f28343f4a54606a74808d97a0958c7f72695e53463e31281d130700000000000000000000000000000615222e3b4754606a76828f98a29792857e7975737273757a8088939fa1978d8074665c5144382c1f120609141f28343f4a54606a74808d97a0958c7f72695e53463e31281d1307000000000000000000000000000000000000030d18242f3a434f59626d74808d929ca3adaaa29f938e86807b76726f6d6669686767676869686d7073787d82899095a0aab4b4b7aa9e9184796d605b51473e342a20160c030000000000000000000000010c161f2b353f44505b656c747f8a92979ea6acaaa29f9a93908c898684828181808181828486898c90959a9fa3ababa49f9691877e736d635b51473e342a1d140a000000000000000000000000000000000000000000000000000000000c17232e3846535e6975828f9ca8a69e9c9ea6ac9f92867a6d6054473d3221160c020000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232e3846535e6975828f9ca8a69e9c9ea6ac9f92867a6d6054473d3221160c020000000000000000000000000000000000000000000000000000000104000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013060503000000000000000000000000000000000000000a15202b37434e58616d7a85929fa2978f81776c605a50464049515a616a6f797f868c9196999c9d9e9f9f9e9c9a98928d857d716c63707d899994949a8a7d706355606c7883909da3998c807366574d42372b1e1206000005121e2a36424d576673808c99a8b2aa9d908377695e53463a2d1e130800000000000000030f1b27333f495364707d8a98a2aeacb2a8998c7f7266564c41362a1d0a00000000000000000613202c3945515d6776828f9ca9b3a99a8d8174655b5044372b1f1205000000000000000000000000000000000000000000000000000006111c28343f4a54606d7984919ea8aba5a3a1a1a1a1a1a5a7adacacacb2acaba6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a69a8d8174675a4e4134271b0e010000000814212e3a47535f6975818e98a29f92877f79757474767a818f949f9e93897d7063574d42362a24303a44505a616d7a85929ea0968d80746b60554b40352920150a000000000000000000000000000000000000000000000000000000000000000000000006121f2b37434e58626f7c87939f9f9590837c77757475797e869299a2988f82766b6054443a3025190d0100030c18242f39434f59606d7a84919ea1978e81746b60554b40352921160a0000000000000000000000000000030f1c28333f4a545b606a6e787f8690959b9b9ea59e9184786b5e5145382b1e120500000000000000000000030b17232e38424e58606d7a84919e9f92867b6e615a50433a2f24180d010000000000000000000000000006131f2b37434e58616e7b869298a097928b8582807f8082858d939aa19892857a6d61544a4034281c1004030b17232e38424e58606d7a84919e9f92867b6e615a50433a2f24180d0100000000000000000000000000000000000007131d28313d47515b606c77808c919ea1a9aea59e98928d87837f7c797776747474747576777a7d8084898e939da0a7afaaa8abaca0968e81746d62594f463c32281e150b000000000000000000000000040d192327333f49535b606d737d858f949da0a7acaca49f9c989892918f8e8d8d8d8e8f919298999d9fa7acaca69f99938d847d716c635b51493f352c22180b020000000000000000000000000000000000000000000000000000000006111c2a36424d5763707d8a96a1acaaa8aab0a79b8e8174685d5245392c2013040000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c2a36424d5763707d8a96a1acaaa8aab0a79b8e8174685d5245392c201304000000000000000000000000000000000000000000000000000004090e11131314202d3a4753606d7a8693a0acac9f9286796c5f5346392c201312110f0c070100000000000000000000000000000000040f1b26323c46525e68717e8b949e9e938c80736c61584f474048505860676d737b8084898c8f9192929291908d8a85807a706b61606d798787878787878073665d67707d8a95a09f92867b6e6154483c31261a0e0200000714212d3a46535f697784909d9f9fa9998c807366574d42362a1e120500000000000000000b17222d3a4753606d7a86929f9f9f9fa196887b6f6255483c3025190d000000000000000004111d2935414b5565727f8b98a79f9f9e9184786c605346392d2013060000000000000000000000000000000000000000000000000000000b17232e3844515c66727e8b96a19f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9a8d8174675a4e4134271b0e0100000006121e2b37424d57616e7b859298a299928c8582818182868f939e9f958e81756b6054453b31251e28323e46525e68717e8a949e9f93887d6f675d51453d32271b0f0300000000000000000000000000000000000000000000000000000000000000000000030f1b26323c4754606a74808d949e9f95908983818082848b9298a29992857b6e61594f4432291e130800000007121d28313d45525d68707d8a939e9d93897d70675d51453d32271b0f0300000000000000000000000000000b17222d38424a50585f666d727c838c9299a0a79e9184786b5e5145382b1e1205000000000000000000000006111c26303d45515d67717e8a949e988f82756c61554b4035291d110400000000000000000000000000030f1b27323d46535f69707d8691969e9f97928e8c8c8d8f92989f9f9691867d6f685e5242392e23180c000006111c26303d45515d67717e8a949e988f82756c61554b4035291d1104000000000000000000000000000000000000010c161f2b353f44505b656c747f8a92979ea6acaaa29f9a93908c898684828181808182838487898c91969b9ea5acaba59e9b9ea1a89d938c7f726b61584e443a30271c1207000000000000000000000000071017222d384149505b636b707b828990959c9fa4acaca9aaa39f9d9c9b9a9a9a9b9c9d9fa3aaaaababa39f9b948f878079706b625a514940372e231a10060000000000000000000000000000000000000000000000000000000000000e1a25313b4653606c7884919e9f9f9f9f9fa095897c6f63564c4135291d110400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a25313b4653606c7884919e9f9f9f9f9fa095897c6f63564c4135291d110400000000000000000000000000000000000000000000000000080f151a1d1f2020202d3a4753606d7a86939f9f9f9f9286796c5f5346392c20201f1e1c18130c05000000000000000000000000000000000a15202a36414c56626d76828f97a19f93887e716a60594f473f464e555c60696e73797c7f82848586858583817d79736d6860595d67757a7a7a7a7a7a796d60606d7984919ea49a8e8174695e53463a2a1f15090000000815222e3b4855616e7b88959393939396897c6f6256493c31251a0e02000000000000000006131f2c3945515d6775828f93939393939184786a5f53473a2e1e13080000000000000000010d18242f3b4854616e7b87959393939396897c6f6256493c2f23160900000000000000000000000000000000000000000000000000000006111c2834404a54606d7984919393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393938d8174675a4e4134271b0e01000000020e1a26313c46525e69707d8692989f9f98928f8d8d8f92999e9f9590837a6d61594f4433291f16202a36414c56616c75828f97a29a9184796d60584e43372b1f130600000000000000000000000000000000000000000000000000000000000000000000000a15202b37434e58606d78828e939da09d95908e8d8e91969f9f9792877d70695f53473d3320170d02000000010c161f2935414c56616c75818e97a19e9184796d60594f44382c1f1307000000000000000000000000000006111c262f383f444e545c606a6f788087909593939184786b5e5145382b1e12050000000000000000000000000a141e2935414c55616c75828f9893948a7d70675d5145392c20130600000000000000000000000000000a15202a36424d57606b707c848c9196999c9b9999999b9d9a97928d847d6f6b60564c4130271c12070000000a141e2935414c55616c75828f9893948a7d70675d5145392c20130600000000000000000000000000000000000000040d192327333f49535b606d737d858f949da0a7acaca49f9c989892918f8e8d8d8e8f8f919696999ea1a8aaaca69f9c938e9196a1a59f93877d706a5f564c42392e2318110800000000000000000000000006111b262f383f44515961696e757d83898f939a9c9fa2aaa7a8aaa9a7a7a7a7a7a9a9a8a6a9a29e9b99928e88827c746d676059504840372e251c11080000000000000000000000000000000000000000000000000000000000000009141f2b3844505b66737f8c999393939393939084776b6054443a3024190d01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141f2b3844505b66737f8c999393939393939084776b6054443a3024190d0100000000000000000000000000000000000000000000000009121a20262a2c2d2d2d2d3a4753606d7a8693939393939286796c5f5346392d2d2d2c2b28241e170f07000000000000000000000000000000040d1925303a44505a616e7b859299a39a92867c6f6b6159504641434b51565e61666d6f737677787979787674706d67615d564f555d686d6d6d6d6d6d6d67616b74808d96a19f93877c6f62574d42362a180e030000000c1926323f4c5965727f8686868686868684786c605346392d20130900000000000000000004101d2935404b5565727f86868686868686807467584e43372b1f12060000000000000000000714212d3a46535e697783868686868686868073665a4d4033271a0d000000000000000000000000000000000000000000000000000000000c18232e3945515c67727f86868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868074675a4e4134271b0e01000000000915202a36424d56616b707d868e92999b9d9b9a9a9c9d9a97928b837a6d685d52473d3321170e1925303a44505a616e7b85929393968d80736a6054473b2e2215080000000000000000000000000000000000000000000000000000000000000000000000040f1b27323d44515c666d79818a9195999c9d9b9a9b9e9c99928e857d706b61574d42352b210e050000000000040d19242f3a44505a616d7a85929393968d80746b6054483b2f2215090000000000000000000000000000000a141d262d333c424a50585f666d737c838686868684786b5e5145382b1e1205000000000000000000000000020c19242f3a43505a616e7b8686868686847a6d6053473a2d2014070000000000000000000000000000040e1a26313b454f59606a6f797f848a8d8f9192929291908d8a8580796f6b60594f443a301e150b00000000020c19242f3a43505a616e7b8686868686847a6d6053473a2d2014070000000000000000000000000000000000000000071017222d384149505b636b707b828990959c9fa4acaca9aaa39f9d9c9b9a9a9a9b9c9ea0a8a6abacaba39f9b94908981849198a2a49992867c6e685e544a40342823190b020000000000000000000000000a141d262d3340474f575e616b70777d82878b8f9298989a9b9d9e9e9f9f9f9e9d9d9b999797928e8a86817c766f6a605d554f473e362e251c130a0000000000000000000000000000000000000000000000000000000000000000030f1c28333f4a54616e7a8786868686868686867f7265594f4332281e1308000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1c28333f4a54616e7a8786868686868686867f7265594f4332281e130800000000000000000000000000000000000000000000000008121b242b323639393939393a4753606d798686868686868687796c5f5346393939393837342f2921190f0500000000000000000000000000000008131e29323f46525e69707d87929fa29892857d706b625a524c4440454d52545c606366696a6b6c6c6b696764605c55524c444c565d61616161616160606a707d88939fa2978e81756a5f53453b31251a06000000000b1825313e4a57626d7279797979797979786c655b5044372b1f1205000000000000000000000c18242f394a56626d7279797979797979746e6458463c31261b0f0300000000000000000005121e2a36424d5767717779797979797979736e63584b3f3226190c0000000000000000000000000000000000000000000000000000000007121c2834404b55626d727979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979746e64584c3f33261a0d0000000000030e1925303b444f59616b707a81868b8e9091929291908d8a857f786d685e564c41352b210f08131e29323e46525e69717e8686868686877c6f6256493c2f2316090000000000000000000000000000000000000000000000000000000000000000000000000a16202834404a545c676d747d84898d8f91929292918f8c87817b706b61594f453b3123190f0000000000000008131e28323e46525e68717e8686868686887c6f6356493c30231609000000000000000000000000000000020b141c222830383f444e545c606a6f77797979797872685c5043372a1d11040000000000000000000000000008131e28313e46535f696e7979797979786d675d5145392c20130600000000000000000000000000000009141f29333d474f5860676d72787d8082848586858483807e79736d6760594f473d32281e0c03000000000008131e28313e46535f696e7979797979786d675d5145392c20130600000000000000000000000000000000000000000006111b262f383f44515961696e757d83898f939a9c9fa2aaa7a8aaa9a7a7a7a7a8a9aaa8a6aaa29f9c99928f89837d757c86929aa4a29891847a6d665c51443f352b1d140a000000000000000000000000020b141b2227353e454d525960636b70757b7e8285888b8d8f9091929292929191908e8c8a8885817e7a746f6a626058514b433d352d241c130a010000000000000000000000000000000000000000000000000000000000000000000b17222d3846525e686e797979797979797979726d6256473d32261e140a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222d3846525e686e797979797979797979726d6256473d3220160c020000000000000000000000000000000000000000000000040f1a242d363d4245464646464545515c67767979797979797979756a5e523e454646464544403a332b21170c010000000000000000000000000000020d17202a36424d56606b727f8b929ca29792867d716c615e5650474242464a505356595c5e5f5f5f5e5d5a5753514b46413a444c5254545454545960696f7c86929aa49f92857b6e61584e4333291f1409000000000916222e3a46515b62656c6c6c6c6c6c6c6b605b53493f33271b0f030000000000000000000007121d2e3a45515b62656c6c6c6c6c6c6c67645c5247342a20150a00000000000000000000020e1a25313b45555f676a6c6c6c6c6c6c6c66635c52473b2f23170a00000000000000000000000000000000000000000000000000000000000c18232e3943515b62656c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c67645c52473c3024170b00000000000009141f29323e474f5960686e747a7e81838485858483817d79726d665e564c443a3023190f020d17202a36424d57626c717979797979796f6a6054473b2e221508000000000000000000000000000000000000000000000000000000000000000000000000040c18232e39424b555c606c70777c80838485868584827f7b756e6961594f473e332a1f110700000000000000010c16202a36414c56616c717979797979796f6b6054483b2f22150900000000000000000000000000000000020a11171e262e343c424a51585f626a6c6c6c6c6b6860564b3f33271b0f0200000000000000000000000000010c161f2a36424d575f616c6c6c6c6c6b605d554b4035291d1104000000000000000000000000000000030d17212b353d464e555c60666d70737677787978787674716d67605d554f473d352b20160c000000000000010c161f2a36424d575f616c6c6c6c6c6b605d554b4035291d1104000000000000000000000000000000000000000000000a141d262d3340474f575e616b70777d82878b8f9298989a9b9d9e9e9f9f9f9f9e9d9c9a9898928f8b86827d76706b707e88939fa5a0968f82786d605b51473d2f261b1106000000000000000000000000020a1117232c333b42464f54596063696e7276797c7e808283848585868585848382807d7b7975716d68625f58544e45403a312b231b120a010000000000000000000000000000000000000000000000000000000000000000000006111c2a36414d565e616c6c6c6c6c6c6c6c6c65625b51443f3830261c110600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c2a36414d565e616c6c6c6c6c6c6c6c6c65625b5146342b210e040000000000000000000000000000000000000000000000000915202b363f484e5253535353514a4b555c6c6c6c6c6c6c6c6c6c6a6359464b5253535352504c453d33291e1307000000000000000000000000000000050e1925303b444f59626d73808d929da29892877e756d68615a534e47433f4446494c4f5152535252504e4a4745403935323a414647474d535b626b707b859198a29e948b7e71685e52463c3121170d030000000006121e29353f49515759606060606060605e53504941382d22170b000000000000000000000001111d29343f48515658606060606060605a58524a413622180e04000000000000000000000009141f2933434d555b5d606060606060605a58524a40352a1f1307000000000000000000000000000000000000000000000000000000000007121d27303f4951565860606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060605a58524a41362b1f1408000000000000020d17202c353e474f565e61686e717577787979787674706d67605c544c443a32281e110700050e1a25303b45505a62656c6c6c6c6c6c6260584e43372b1f13060000000000000000000000000000000000000000000000000000000000000000000000000007121c273039434b515a61646b6f7376787979797775726e69615e574f473e352c21180e000000000000000000040d1925303a44505a61646c6c6c6c6c6c6360594f44382c1f1307000000000000000000000000000000000000060c141c2328303940444e54555d606060605e5c564e443a2f23170b000000000000000000000000000000040d1a26313b454d53555f606060605e53514b433a2f24180d0100000000000000000000000000000000060f19232b343d434b51545c606366696b6c6c6c6b6a6764605d55514b433d342b23190e0400000000000000040d1a26313b454d53555f606060605e53514b433a2f24180d0100000000000000000000000000000000000000000000020b141b2227353e454d525960636b70757b7e8285888b8d8f9091929293929291908f8d8b8885827e7a75706b63616c737f8c939ea79f948d80746d62594f41382d22170b000000000000000000000000000006111a202930363d44484f54565e6165666d6f7174757778787979787877767573716f6d6664605d56534e47433d352f281f191109000000000000000000000000000000000000000000000000000000000000000000000000000e1925303b444d52545f606060606060606060605f5e504a42382e23170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17232e38424a505e5f606060606060606060585651493f3422190f000000000000000000000000000000000000000000000000000e1a26323d4851595e606060605e575550515f606060606060605f5e595053585f6060605f5c574f453a2f24180c0000000000000000000000000000000009141f29323d47515b636e74808d929fa299928b817a706c625f57534e4745413c4043444546464543413d3a383435393a3d43474c52575f626d727d859197a1a0958f82756c62564d41342a200f050000000000010d18232d373f464a4c535353535353535246443f382f261b11060000000000000000000000010c18232d363f454a4b535353535353534e4c4741382f241006000000000000000000000000030d1721323b434a4f51535353535353534d4b4740382e24190e020000000000000000000000000000000000000000000000000000000000000b151e2d373f464a4c53535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353534e4c4741382f241a0e0300000000000000050e1a232c353d444c52565e6164686a6b6c6c6b6a6763605d55504a423a322820160c00000009141f29333f4850565860606060605f56544e463d32271b0f0300000000000000000000000000000000000000000000000000000000000000000000000000000b151e2730394045505559606366696b6c6c6c6b6965615e57524d453e352c231a0f060000000000000000000008131e29323e4850555760606060606056544f473d32271b0f0300000000000000000000000000000000000000020a11171e272e343c434749515353535351504b443c32281d12070000000000000000000000000000000009141f29333b4246485253535353514745403a31281d1307000000000000000000000000000000000000081119222b303940454a5053575a5c5e5f5f5f5e5d5a5753514b45413a312b2219110700000000000000000009141f29333b4246485253535353514745403a31281d1307000000000000000000000000000000000000000000000000020a1117232c333b42464f54596063696e7276797c7e808283848585868685848382807e7c7975726e686360595a636d75818e95999999928b7f726b6053493f33271b0f030000000000000000000000000000080e171f252a33383d44484d535f605c60626567686a6b6b6c6c6c6b6a6a68666462605c605f534d47433c383229241d160d07000000000000000000000000000000000000000000000000000000000000000000000000000008141f29323b41464753534d545b60666c6c6c6c6c6a5c544a3f34281c10030000000000000000000000000000000000000000000000000000000000000000000000000000000000000003101c28343f4a545c6a6c6c6c6c6c66605b544d4c4a463f372d23130c04000000000000000000000000000000000000000000000000111d2a36424e59636b6c6c6c6c6b64615a534d53535353535353534d535b60656c6c6c6c6b6861574c4034281c0f00000000000000000000000000000000020d17202b353f49525c646e74808c9399a29f938e857d756e6a625f5854524c49474540413f3e3e3d3d3e3f3f404045474a4e53565e61696e767e879297a1a1969083796d605a50443b3022180e0000000000000007111b252d353a3e3f46464646464646453937332d261d140a0000000000000000000000000006111b242d343a3d3f4646464646464641403c362f261d130000000000000000000000000000050f202932393f434446464646464646403f3b352e261c120800000000000000000000000000000000000000000000000000000000000000030c1b252d343a3e3f4646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646413f3c362f261d130800000000000000000008111a232c323b41464c5254585b5d5e5f5f5e5d5a5753514b443f38302820160e04000000020d17202d363f454a4b5353535353534947433d342b20150a000000000000000000000000000000000000000000000000000000000000000000000000000000030c151e272e343e44494f54565a5c5e5f5f5f5e5c5954524d46423b332c231a11080000000000000000000000020d17202c363e45494b5353535353534948443d352b21160a00000000000000000000000000000000000000000000060c151c232832373b3c444646464645433f3a322a20160c0100000000000000000000000000000000030d17212931363a3b4646464646453a39352f281f160c01000000000000000000000000000000000000000810191e272e34383f44464a4d505152535251504d4a47454039352f281f19100700000000000000000000030d17212931363a3b4646464646453a39352f281f160c01000000000000000000000000000000000000000000000000000006111a202930363d44484f54565e6165666d6f7174757778787979797878777573716f6d6665615e56544f515b606d79838c8c8c8c8c8c867d70655b5044372b1f1205000000000000000000000000000000050d141a21272c36424d575e6c6c6c6c6c6c6c6a665f5f5f5f5f5e5e66696c6c6c6c6c6c6c5e574d42362b272018130c04000000000000000000000000000000000000000000000000000000000000000000000000000001070e17202930363b424651575f666c72797979797975665c5044382b1f12060000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2b3844505c66757979797979726c665f575146423b3229251e160e070100000000000000000000000000000000000000000000131f2c3945525e6b757979797978706c615f57514b434646424b51575f656c71787979797873685c5044372b1e110000000000000000000000000000000000050e19232d37404a525c646e737f8792979f9e97928a827b756f6a65605d565653514b4d4c4b4b4a4a4b4b4c4d4b515357585f62686d737b828b9299a19f9791847a6e675d51483e32291f100600000000000000000a131b23292e313239393939393939382d2b27221b140b02000000000000000000000000000009121b23292e3132393939393939393433302b241d140b0100000000000000000000000000000e1720272e3336373939393939393933322f2a241c140a00000000000000000000000000000000000000000000000000000000000000000009131b23292e313239393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393433302b241d140b010000000000000000000008111a202930363b4146474b4e5051525251504e4a47454039342e261e160e040000000000050e1b242d343a3d3e4646464646463c3b37322b22190f0400000000000000000000000000000000000000000000000000000000000000000000000000000000030c151d232833393d4348494d5051525352514f4c4846423b363029211a110800000000000000000000000000050e1b242c34393d3e4646464646463c3b38322b23190f040000000000000000000000000000000000000000000000030b121820262b2e2f37393939393837332f2820180f05000000000000000000000000000000000000060f171f262a2d2e3939393939382d2c29241d160d04000000000000000000000000000000000000000000070c151d23282e34383a3d4043444546454543413e3a38352f29241d160d07000000000000000000000000060f171f262a2d2e3939393939382d2c29241d160d0400000000000000000000000000000000000000000000000000000000080e171f252a33383d44484d5254545c60626567686a6b6b6c6c6c6c6b6a69676562605c5454524c484445515c676e7b808080808080807f786c605346392d2013060000000000000000000000000000000002090e16212d3a46535e69767979797979797771665b5253525a66707679797979797976695e53463a2d21160d07010000000000000000000000000000000000000000000000000000000000000000000000000000040c1318202830353e444d525b62696e787f8686868687796d6053463a2d201307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d7987868686867f786e69625b524d443e3530282018130c0400000000000000000000000000000000000000000013202d394653606c7987868686847d756e69605c554f46454f545c60696e777e8586868685786b5f5245382c1f1200000000000000000000000000000000000007111b252e38414a525c646d727d8590949fa19e938f87817c76716d686663605d555a59585757575858595a555d6063676a6f747a80868f949fa39e9590857c6e685e554c41362d20170d000000000000000000010a11181e2225262d2d2d2d2d2d2d2b201f1b17110a02000000000000000000000000000000000911181d2224252d2d2d2d2d2d2d2726241f1a130b02000000000000000000000000000000050e161c2227292a2d2d2d2d2d2d2d2726231f19120a02000000000000000000000000000000000000000000000000000000000000000000010911181e2225252d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2726241f1a130b02000000000000000000000000080e171e252a3036393b3e42444546464543413d3a39352f28231c150c040000000000000009121b22292e31323939393939392f2e2b2720191007000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b121822282d32383b3c40434546464644423f3b3a36302a251f170f0800000000000000000000000000000009121b22282d3031393939393939302f2c27211911070000000000000000000000000000000000000000000000000000070c151b1f22222a2d2d2d2d2b2a27231d160f060000000000000000000000000000000000000000060d141a1e21222c2d2d2d2d2b20201d18130c040000000000000000000000000000000000000000000000030b12181c23282b2d30333638393939383734312d2c29241d18130c040000000000000000000000000000060d141a1e21222c2d2d2d2d2b20201d18130c04000000000000000000000000000000000000000000000000000000000000050d141a21272c33383b4246474a505355585a5c5d5e5f5f605f5f5e5d5c5a585553504a4746413b38404b555e696e73737373737373726c655b5044372b1f12050000000000000000000000000000000000000815212e3b4854616e7b86868686868683776a5d50464f5c6976828686868686867b6e6154483b2e211508000000000000000000000000000000000000000000000000000000000000000000000000000000070d161d2429323a414650565e616d727b828c929992877e71665c5044382b1f12060000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2b3844505c66717e879399928c827b726d615e565046413a3229241d160d0700000000000000000000000000000000000000000b1825313e4b5864717e889396918a827b736d67615953525960666d737b828b929792877e7064574a3d3124170a0000000000000000000000000000000000000009131c262f38414a525b626b707b828c92989e9e99928e88837e7a76726f6d67696766656464646465666769676d7074777c81868d92999fa19e938e837b6e6a5f564d433a2f241b0e050000000000000000000000070d12161819202020202020201f13120f0b0600000000000000000000000000000000000000060c11151718202020202020201b1a17140e08010000000000000000000000000000000000040b11161a1d1e202020202020201a1917130e0800000000000000000000000000000000000000000000000000000000000000000000000000070d1216181920202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020201b1a17140e08010000000000000000000000000000050d14191e252a2d2e313537383939383734302d2c29241d17110a030000000000000000000911181d2124252d2d2d2d2d2c23221f1b150f07000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070c171c21272c2f303336383939393836322e2d2a251f1a140d0500000000000000000000000000000000000910171d2124242d2d2d2d2d2d23221f1b160f0700000000000000000000000000000000000000000000000000000000040a0f1315161e202020201e1d1b17120c050000000000000000000000000000000000000000000003090e1214151f202020201e1413110d07010000000000000000000000000000000000000000000000000000070c11171c1f202427292b2c2c2c2b2a2724201f1d18120d07010000000000000000000000000000000003090e1214151f202020201e1413110d0701000000000000000000000000000000000000000000000000000000000000000002090e161c21272c30363a3b3f4446494b4d4f5051525253535251504f4d4b4946443f3b3936302f39434d565e616666666666666665605b53493f33271b0f030000000000000000000000000000000000000815212e3b4854616e7b87939393939083776a5d50444f5c6976828f93939393877b6e6154483b2e21150800000000000000000000000000000000000000000000000000000000000000000000000000000710191f282f353e444c525a61696e767f8690949a93877e716c61544a3f34281c10030000000000000000000000000000000000000000000000000000000000000000000000000000000000000003101c28343f4a54616c717e87939a9490867f766e69615a524c443e352f281f191007000000000000000000000000000000000000000a1724303d4956626c717f8b919e948f868079706b615f5d606b6f797f868f949f93887e716c6155493c3023160a00000000000000000000000000000000000000010a141d262f384049515961696e787f868f949c9f9f9b94908b86837f7c7a77757472717170707172727376787a7d8084888e92989fa39f97928b81796e695f574e443b31281e1209000000000000000000000000000106090b0c1313131313131312060503000000000000000000000000000000000000000000000105090b0c131313131313130e0d0b0803000000000000000000000000000000000000000000060b0e1011131313131313130d0c0a07020000000000000000000000000000000000000000000000000000000000000000000000000000000106090b0c13131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313130e0d0b0803000000000000000000000000000000000002080e14191e202125282a2b2c2c2b2a2724201f1d18120c06000000000000000000000000060c111517182020202020201615130f0a040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050b10161b1f222327292b2c2c2c2b292621201e1a140e090300000000000000000000000000000000000000060c111517182020202020201615130f0a040000000000000000000000000000000000000000000000000000000000000003060809111313131312110f0b0701000000000000000000000000000000000000000000000000000205070813131313131207060401000000000000000000000000000000000000000000000000000000000000060b101213171a1d1e1f201f1e1d1a171413100c070100000000000000000000000000000000000000000205070813131313131207060401000000000000000000000000000000000000000000000000000000000000000000000000050b10161c1f252a2d2e34383a3c3e414244454546464645454442403e3c3a38342e2d2a2527313b444d5254595959595959595953504941382d22170b000000000000000000000000000000000000000815212e3b4854616e7b87949f9f9d9083776a5d50444f5c6976828f9c9f9f94877b6e6154483b2e21150800000000000000000000000000000000000000000000000000000000000000000000000000040f19222b313a41454f565e616c717b828b92989a93887e716c615a5042382e23170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17232e3842505a616c717e88939a98928b827b716c615e564f45413a312b22190f040000000000000000000000000000000000000815212d3945505a626d727f8b919c98928c847d756e69686d747c838c92989c918b7f726c625a5044392d2014080000000000000000000000000000000000000000020b141d262e373f474f575e666d727b828990949b9f9f9c9992908c89868482807f7e7e7d7d7e7e7f808284868a8d91969b9fa39f99938d857e756d675e574e453c32291f160c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080e111414181b1d1e1f1f1e1d1b171413100c070100000000000000000000000000000105090b0b13131313131309080603000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0f1315161a1d1e1f201f1e1c191514120e0903000000000000000000000000000000000000000000000005080a0b1313131313130909070300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000306070a0d101112131212100e0b070604000000000000000000000000000000000000000000000000000000060606060605000000000000000000000000000000000000000000000000000000000000000000000000000000000000050b1014191e2023282c2d2f3234353738383939393938373634322f2d2c2823201e191f29323b4246474d4d4d4d4d4d4d4c46443f382f261b1106000000000000000000000000000000000000000815212e3b4854616e7b8794a1aa9d9083776a5d50444f5c6976828f9ca9a194877b6e6154483b2e211508000000000000000000000000000000000000000000000000000000000000000000000000000a16212b343d434b515961686d757e858f949f9f93887f716c625a50483e30261c110600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c26303e48505a626c717f88939f9f948f857e756d686159514b433d342b21160a00000000000000000000000000000000000005111d29343e48505a626d727f8c929c9f96918a827b73717a818891959f9d928c7f736d625a50483e33281c1004000000000000000000000000000000000000000000020b141c252d353e454d545c60696e757c83898f93999da09f9c999992918f8d8c8b8a8a8a8b8b8c8d8f91939a9a9ea0a19e99928e87817a716c605d554d453c332a20170d040000000000000000000000000000050a0d0f10101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010100f0d0a0500000000000000000000000002080d101213131313131313090806030000000000000000000000000000000000000000000000010407071213131313131313131313120f0a0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020507080b0f1112131312100e0a07060400000000000000000000000000000000000000000000060606060606000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030709090d1012131313110f0c08070502000000000000000000000000000000000000000000000000000000000006060606060600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040607090b0d0f1111121313121111100d0b08060603000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002090e1114171c1f20222527292a2b2c2c2d2c2c2b2a29272522201f1c1714110d17202930363a3b404040404040403f3937332d261d140a00000000000000000000000000000000000000000815212e3b4854616e7b8794a1a99d9083776a5d50444f5c6976828f9ca9a194877b6e6154483b2e211508000000000000000000000000000000000000000000000000000000000000000000000000030f1b27323d464e555d606b707a818a92979f9b918b7f726d625a50483e362c1e140a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141e2c363e48505a626d727f8b919b9e97928a817a706b605d554e463d32271b0f030000000000000000000000000000000000000c17222d363f48515b636d737f8c929ca09e948f867f7d848d939aa09d938d80736d635b51483e362c22170b0000000000000000000000000000000000000000000000020a131b232c333b424a50575f616b6f767c82878c9196989c9fa29f9d9c9a99989797979798999a9c9e9fa39f9c9997918c86817c746d68625a514b433b332a21180e0500000000000000000000000000030a1016191c1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1c1916100a03000000000000000000060d14191c1f1f2020202020201515120f0a030000000000000000000000000000000000000001080d1113141f202020202020202020201e1b161009010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000104070c10121316181a1c1d1e1f1f201f1e1d1c1a181513120f0b060300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030607090b0d0f1111121313121211100f0d0a08070502000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000205060c10121316181a1c1d1e1f1f20201f1e1d1c1a18161312100c0605050e171f252a2d2e33333333333333322d2b27221b140b0200000000000000000000000000000000000000000815212e3b4854616e7b87949c9c9c9083776a5d50444f5c6976828f9c9c9c94877b6e6154483b2e21150800000000000000000000000000000000000000000000000000000000000000000000000007131f2c38434e5860676d747d858e939fa29b918b7f726d625a50483f362d241a0c020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c1a242d363f48505a626d727f8b919ba29f938e857d746d6760584e43382c1f130700000000000000000000000000000000000006101b242d363f49515b636d73808d929da49e98928c8a91969fa49e938e81746e645b51493f362d241a10050000000000000000000000000000000000000000000000000109111a212930383f444d535960636b6f757b7f84888c8f929797999b9c9d9e9f9f9f9f9e9d9d9b99979992908c8884807a746f6a615d5650454039312920180f0600000000000000000000000000040d151c21262929292929292929292929292929292929292929292929292929292929292929292929292929292929292929292929292929292929292929292929292929292929292929292929292929292929292929292929292929292926211c150d04000000000000000810181f25292b2c2d2d2d2d2d2d22211f1b150e060000000000000000000000000000000000040c13191d20212b2d2d2d2d2d2d2d2d2d2d2b27211b130a0100000000000000000000000000000000000000000000000000000000000000030506090c0e1011121313131211100e0b090605030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030506090c0e1011121313131211100e0b090605030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010507070b0d0f111213131312110f0d0b07070501000000000000000000020608080c0f1112131312110f0c080705020000000000000000000000000000000000000000000000000000000001080d1113181c1f20222527292a2b2c2c2c2c2b2a29272422201f1c1712100c06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000104060b10121315171a1c1d1e1f1f201f1f1e1d1b19171514120e0906030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030607090b0e0f1112121313131212110f0d0b0907060300000000050d14191e20212626262626262626201f1b17110a020000000000000000000000000000000000000000000815212e3b4854616e7b878f8f8f8f8f83776a5d50444f5c6976828f8f8f8f8f877b6e6154483b2e2115080000000000000000000000000000000000000000000000000000000000000000000000000915222e3b4854606a6f79818a91979ea39c918c7f726d625b51483f362d241b12080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121b242d363f48515b626d727f8c919ca39e97918a81796f6a6054483b2e2215090000000000000000000000000000000000000009121b242d373f49525b636e74808d929da5a39f99979ea1a69e948e81786c605c524940372d241b1108000000000000000000000000000000000000000000000000000000080f171e262e343b42464f54596063696e73777b7f8285888a8c8e8f9192929292929191908f8d8b8886837f7c78736e68625f58524c443f352f271f170e0600000000000000000000000000030d161f262d3235363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363635322d261f160d03000000000006101a222a303538393939393939392f2e2b2620181006000000000000000000000000000000040d161e24292c2d383939393939393939393937332c251c13090000000000000000000000000000000000000000000000000000000003060b0f121315181b1d1e1f2020201f1e1c1a181513120f0b0603000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003060b0f121315181b1d1e1f2020201f1e1c1a181513120f0b060300000000000000000000000000000000000000000000000000000000000000000000000000000000000004080d111314171a1c1e1f1f20201f1e1c1a171413110d08040100000000030a0f121415191c1e1f20201f1e1c191514120e090300000000000000000000000000000000000000000000000003090e13191d2023282c2d2f31333637383839393838373634312f2d2b28221f1c17110d0802000000000000000000000000000000000000000000000000000000000000000000000000000001070d1113171c1f20222426292a2b2b2c2c2c2b2b2a28262422211e1a1312100c060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010204050506060606050403010000000000000000000002090e1114141a1a1a1a1a1a1a1913120f0b0600000000000000000000000000000000000000000000000814212e3b4754616e7a8283838383828074675a4e414d5a6673808283838383827a6e6154473b2e2114080000000000000000000000000000000000000000000000000000000000000000000000000916232f3c4956626f7c848e9393939393918c7f726d625b51493f362d241b120900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009121b242d363f49515b626d727f8c9193939393938e847c6f6256493c2f231609000000000000000000000000000000000000000009121b252d374049525c646e74808d939da59f9f9f9fa79f948f82786d665b504a40372e251b12090000000000000000000000000000000000000000000000000000000000050c141c232831363d44484f54575e61666a6e7276797b7e80818384858586868584848382807e7c7a76726f6c65615e56534e46413a3229241d150d0500000000000000000000000000000a151f2831383e424343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343423e3831281f150a00000000020d18222c343b4144464646464646463c3a37312a22180e0300000000000000000000000000010c1620282f35393a4546464646464646464646433e372e251b100500000000000000000000000000000000000000000000000000060b1012171b1f20222527292b2c2c2d2c2c2b29272522201f1b17120f0b0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b1012171b1f20222527292b2c2c2d2c2c2b29272522201f1b17120f0b060000000000000000000000000000000000000000000000000000000000000000000000000001070c1013191d20212427292a2c2c2d2c2c2b29272421201d1913100d0701060b0f151a1f212226292b2c2c2c2c2a282621211e1a140d05000000000000000000000000000000000000000000030a0f151a1e24292c2e34383a3c3e4042444445464645444443403e3b3938332d2c28231c19130d08010000000000000000000000000000000000000000000000000000000000000000000003090e13181d2023282b2d2f3133353737383939393837373533312e2d2a26201f1c17110d0802000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020507080d0d0d0d0d0d0d0c060503000000000000000000000000000000000000000000000000000714202d3946525e686e767676767676746e64584c404b58636e737676767676766e685e5246392d2014070000000000000000000000000000000000000000000000000000000000000000000000010e1b2734414e5a67748186868686868686867f736d635b51493f372d241b1209000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009121b242d373f49515b636d737f86868686868686868174675a4e4134271b0e01000000000000000000000000000000000000000009131c252e37404a525c606c77818e93939393939393959082796d665c544a3f382e251c130900000000000000000000000000000000000000000000000000000000000000020a11171f262a32383d44484d5354575f6265666c6f717375767778797979787877767573716f6d676662605b53524c47433c3530282018120b03000000000000000000000000000005101c26313a42494e50505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050504e49423a31261c100500000008141f2a343e464d51525353535353534847433c342a20150a0000000000000000000000000008131e28323a41454752535353535353535353534f4940372c21160a0000000000000000000000000000000000000000000002080d11171c1f22272b2d2f323436373939393938373634322f2d2b27221f1c17110d08020000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080d11171c1f22272b2d2f323436373939393938373634322f2d2b27221f1c17110d0802000000000000000000000000000000000000000000000000000000000000000000060b12181d1f252a2d2e313336373839393939373634312e2d2a25201d18120d11171b1f262b2e2f323537393939393735322e2d2a251f170f0500000000000000000000000000000000000000060b151a1f262b2f35393a404446494b4d4f50515252535251504f4d4b4846443f3a38342e29241e19130c0400000000000000000000000000000000000000000000000000000000000000040a0f151a1d24292c2e34383a3c3e404244444546464545444342403d3b3a36312d2c28231c19130d0802000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111e2a36414c565e6169696969696967645c52473c47525c6366696969696969615e564c41362a1e11050000000000000000000000000000000000000000000000000000000000000000000000010d1a2733404c58646e747979797979797979736d635b51493f372d251b12090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009121b252d373f49515b636d737979797979797979746e64584c4033271a0d010000000000000000000000000000000000000000010a131c252e384044505b656c7881868686868686868683796d675d544a42382d261c130a01000000000000000000000000000000000000000000000000000000000000000000060b141a21272c32383b4246484e5355545b6062646668696a6b6c6c6c6c6b6a6a68666462605d555553504946413b373229241e160e07010000000000000000000000000000000a16212d38424c545a5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5a544c42382d21160a0000000d1925303b4650585d5f60606060606055534e463c31261b0f030000000000000000000000030c19242f3a444c52545e6060606060606060605f5a52493e33271b0f000000000000000000000000000000000000000001070d13191c23282b2d3337393c3f41434445464646454443413e3c3937332d2b28221c19130d070100000000000000000000000000000000000000000000000000000000000000000000000000000001070d13191c23282b2d3337393c3f41434445464646454443413e3c3937332d2b28221c19130d07010000000000000000000000000000000000000000000000000000000000020a11171d24292c3036393a3e40424445464646454442403e3a3936302c29241d191b22272b31373a3b3f42444546464544423f3b3a36312921170d0300000000000000000000000000000000020a111720262b31373a4145474a515355585a5c5d5e5f5f5f5f5e5d5c5a575553504a46443f38353029241e160d070000000000000000000000000000000000000000000000000000000000070c151b20262b2f35393a3f4446484a4d4f5051525253525251504e4c4a4846423d3a38342e29251e19140d0500000000000000000000000000000000000000000000000000000000000000010407070a0d10111213131211100d0b07070501000000000000000000000000000000010406070a0d0f11121213131211100e0c0908060300000000000000000000000000000000000000000000000000000000000000000000000000010d1925303b444c52545c5c5c5c5c5c5a58524a4136404a52585a5c5c5c5c5c5c54524c443b3025190d010000000000000000000000000000000000000000000000000000000000000000000000000b1824303c48535c64676c6c6c6c6c6c6c6c66635b51493f372d251b130900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009131b252d373f49515b63666c6c6c6c6c6c6c6c67645c53483c3024180b00000000000000000000000000000000000000000000010a131c2627333f49535b666c757979797979797979776d675d554b42392f261c140a01000000000000000000000000000000000000000000000000000000000000000000000003090e161b21272c31363a3c4247484a50535557595b5c5e5f5f5f5f5f5e5e5d5c5a585553514b4946443f3836302b262019130c0400000000000000000000000000000000000d1926323e49545e666969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969665e54493e3226190d000000101c2935414d5862696c6c6c6c6c6c6c625f584e43372b1f120600000000000000000000000b151e2935414c565d606b6c6c6c6c6c6c6c6c6c6c645a4f43372b1e1200000000000000000000000000000000000000040c13181e24292e34383a3f4446484b4e50515253535352514f4d4b4846443f3938332d29241e18130c0400000000000000000000000000000000000000000000000000000000000000000000000000040c13181e24292e34383a3f4446484b4e50515253535352514f4d4b4846443f3938332d29241e18130c04000000000000000000000000000000000000000000000000000000060c141c23282f35393a4146474a4d4f515252535352514f4d4a4746413a39352f2924262d33373c4347484c4f5152535352514f4c4846423b33291f1409000000000000000000000000000000060c141c232831373c42474c5154545c60626466696a6b6b6c6c6b6b6a69676462605b5453504a45413a352f281f18120b0300000000000000000000000000000000000000000000000000030b121820262b31373a4145474a50535557595c5d5e5e5f5f5f5e5e5d5b595755534d4946443f3835302a251e170e080200000000000000000000000000000000000000000000000000000002080d111314171a1d1e1f201f1f1e1c1a181413110d0803000000000000000000000003080d111314171a1c1e1f1f201f1f1e1d1b181615130f0a0602000000000000000000000000000000000000000000000000000000000000000000000008141e29323b4146475050505050504e4c4741382f3840474b4d5050505050504746413b32291e1408000000000000000000000000000000000000000000000000000000000000000000000000000814202b36414a53585a60606060606060605957514940372e251b1309000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000109131b252e37404951575960606060606060605a58534a41362b2014080000000000000000000000000000000000000000000000010a1417222d38414a545b60686c6c6c6c6c6c6c6c6a605d554c433930271d140a020000000000000000000000000000000000000000000000000000000000000000000000000000040a0f161b1f252a2d31373a3b3f4446484b4d4e505152525353525151504f4d4b494745403c3937332d2a251e1b150d08020000000000000000000000000000000000000f1c2935424e5a6670767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767670665a4e4235291c0f000000121f2b3844515d697479797979797979766a5f53473a2e2115080000000000000000000007121d27303945525d686d78797979797979797979766c5f5346392d2013000000000000000000000000000000000001070d161d24293035383f444649505355585a5c5e5f5f605f5f5e5c5a585553504946443f38353029241d160d080200000000000000000000000000000000000000000000000000000000000000000001070d161d24293035383f444649505355585a5c5e5f5f605f5f5e5c5a585553504946443f38353029241d160d0802000000000000000000000000000000000000000000000000070f181e262e34394045474c5254575a5c5d5f5f605f5f5e5c5a5754524c47454039352f2f383f44464e5355595c5e5f5f5f5f5d5b5954534d453b31251a0e0200000000000000000000000000070f181e262e343c43474d53555d6064666d6f71737577777879797877777673716e6c6663605c54524c45413a3128231d150c040000000000000000000000000000000000000000000000070c151d232831373c42474b5154545c60626466686a6a6b6c6c6c6b6a6a686664615f575653504a46413a3630292019130d0500000000000000000000000000000000000000000000000003090e13191d202124272a2b2c2c2c2c2b29272421201d1913100c0600000000000000060b0f13191d20212426292a2b2c2c2c2b2b29272522211f1b15120e0903000000000000000000000000000000000000000000000000000000000000000000020d1720293036393b43434343434341403c362f262e353b3f404343434343433b3936302920170d0200000000000000000000000000000000000000000000000000000000000000000000000000030f1a252f3841484c4e53535353535353534c4b4640372e251c1309010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010a131c252e3740464b4c53535353535353534e4c4841382f251a0f030000000000000000000000000000000000000000000000000006111b262f38424a50535b60606060606060605d54514c433a31271e150b020000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0f141a1e21262b2e2d3338393c3e40424344454646464545444342403e3c3a39352f2d2b27221b19140f0a040000000000000000000000000000000000000000101d293643505c6976828383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838276695c504336291d10000000131f2c3946525f6c79868686868686867c6f6255483c2f221509000000000000000000000c18232e39424f59606d7a85868686868686868686796c605346392d201300000000000000000000000000000000040c13181f282f353a41454a5053535b60626567696a6c6c6c6c6b6a69676562605b5353504a45413a352f281f19130c0400000000000000000000000000000000000000000000000000000000000000040c13181f282f353a41454a5053535b60626567696a6c6c6c6c6b6a69676562605b5353504a45413a352f281f19130c0400000000000000000000000000000000000000000000071019212a30383f444b5153565e616466696a6b6c6c6c6c6a696764615e5653514b45413a3c41495053585f6265686a6c6c6c6c6a6865615e574d42362a1e1205000000000000000000000000081019212a30383f444e53575f62676d7175797c7e8082838485858685848382807e7b7974706d66605d56524c433d342e271e160e050000000000000000000000000000000000000000000810191e272e343c43474d53555d6064666d6f7173757777787979787877767573706e696763605c54524c46413b322a251e170e0600000000000000000000000000000000000000000000060e141a1e24292c2d3134363738393938383634312e2d29251f1c17110a03000000020a11171b1f24292c2d313335373839393938383634322f2e2b26211e1a150e09030000000000000000000000000000000000000000000000000000000000000000050e171e252a2d2e3636363636363433302b241d242a2f32333636363636362e2d2a251e170e0500000000000000000000000000000000000000000000000000000000000000000000000000000008131d262f363c40414646464646464646403e3b352e251c130a0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010a131c252e353b3e40464646464646464641403c362f261d13080000000000000000000000000000000000000000000000000000000a141d262f383f44464e5353535353535353504745413a31281f150c03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090e12151a1e2122282b2d2f313335363738393939393837373533312f2d2c2924201f1b17110e08020000000000000000000000000000000000000000000013202d394653606c79868f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f86796c605346392d2013000000131f2c3946525f6c79859293939393887b6f6255483c2f22150900000000000000000005101c2834404b54606b74818e979393939393939386796c605346392d2013000000000000000000000000000000070d161d2429313a40454c52545c6063656c6f727476777879797978777674716f6c6563605b54524c45413a3129241e160e070000000000000000000000000000000000000000000000000000000000070d161d2429313a40454c52545c6063656c6f727476777879797978777674716f6c6563605b54524c45413a3129241e160e070000000000000000000000000000000000000000071019232b333b424a50555d6065686d717375777879797978777573716d6865605d55524c44464e535b60646a6e727577787979787775726e695e53463a2d211407000000000000000000000008111a222b333c424a50585f62696e747a7e8185888b8d8f90919292929291908f8d8a8885817d79736d68605d564f454039302820160e050000000000000000000000000000000000000009111a222a303940454e53575f62676d7175797b7d8082838485858685858483817f7d7b7874706d66615e56524c443e36302920180f070000000000000000000000000000000000000000060f181f262b3035393a3d404344454646454443403e3a3935302c28231c150c0802070b141b22272b2f35393a3d40424445454646454443413f3c3b37322e2b26201a150e060000000000000000000000000000000000000000000000000000000000000000050d14191e20212929292929292726241f1a13191f23262729292929292921201e19140d0500000000000000000000000000000000000000000000000000000000000000000000000000000000010b141d252b303334393939393939393933322f2a231c130a01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010a131c232a2f323339393939393939393433302b251d140b01000000000000000000000000000000000000000000000000000000020b141d262d333839424646464646464646443a39352f281f160d0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000205090e1214171c1f2022242628292b2c2c2c2c2c2b2b2a2927252220201d1813120f0b060000000000000000000000000000000000000000000000000013202d394653606c7986939c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9386796c605346392d2013000000131f2c3946525f6c7985929f9f9f95887b6f6255483c2f2215090000000000000000050e1b242c3845515c666f7c88939fa99f9f9f9f9f9386796c605346392d201300000000000000000000000000000810191f282f353e434b51565d60666d7074787b7e81838485868686858482807e7b7874706c66605d56514b433e353028201910080000000000000000000000000000000000000000000000000000000810191f282f353e434b51565d60666d7074787b7e81838485868686858482807e7b7874706c66605d56514b433e35302820191008000000000000000000000000000000000000050e19222b353d454d545c60676d72767a7e80828485858686858482807d7a76726d67605d565050585f656c71767b7f82848586868584827f7b6e6154483b2e2115080000000000000000000007111a232b343d454d545c606a6e757b81868a8e929897999c9d9e9e9f9f9e9e9d9c9a9797928e8985807a736d686059514b423a322820170e05000000000000000000000000000000000009121b232c343c424b51585f62696e747a7d8185888a8c8f9091919292929191908e8c8a8884807d79736d68615e565046413a322a211910070000000000000000000000000000000000020a1117212a31373a4145474a4d505152535252514f4d4b4746413a38342e261e19130d12181d262d33373a4145474a4d4f51525253525251504e4b4947433c3a37312b2620180f06000000000000000000000000000000000000000000000000000000000000000002080d1114141d1d1d1d1d1d1b1a17140e080e1317191a1d1d1d1d1d1d1414110d0802000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b131a202427272d2d2d2d2d2d2d2d2625231e19120a010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010a12191e2325262d2d2d2d2d2d2d2d272724201a130b020000000000000000000000000000000000000000000000000000000000020b141c22282b2d353939393939393939372d2c29241e160d040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000206060b0f121315181a1b1d1e1f1f20201f1e1e1d1c1a18161413110d07050300000000000000000000000000000000000000000000000000000013202d394653606c7986939f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9386796c605346392d2013000000131f2c3946525f6c7985929faca295887b6f6255483c2f22150900000000000000020c16202b37424d57606d7983919aa4afacacacac9f9386796c605346392d20130000000000000000000000000009111a222b313a41454f555d60686d73797d8185888b8d8f919292939292918f8d8b8885817d78726d68605d555046413a322b221a11090000000000000000000000000000000000000000000000000009111a222b313a41454f555d60686d73797d8185888b8d8f919292939292918f8d8b8885817d78726d68605d555046413a322b221a110900000000000000000000000000000000020d17202b343d474f575f666d72797e83878a8d8f909292939292918f8d8a86837e79736d68605b5a626a6e787d83888c8f9192929292908e8c8275685b4f4235281c0f000000000000000000050f19232b353d464e575f666d727c81878e92999b9fa2aaa6a8aaa9a8a7a7a8a9aaa9a6a9a29e9a97928d85807a706b605c544c443a322920170c0300000000000000000000000000000009121b242d353e464e545c606a6f757b81868a8e929797999b9d9d9e9f9f9f9e9d9d9b999796918d8985807a746e68615a524c443c332b22191007000000000000000000000000000000020b141b2227333c42464c5254575a5d5e5f5f5f5f5e5c5a5754524c46443f38302a251e171d24292f383f44464c515457595c5d5e5f5f5f5e5e5c5a5855534e4847423c37312a2117110a020000000000000000000000000000000000000000000000000000000000000000010507081010101010100e0d0b08030002070a0c0d1010101010100807050100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001080f14181a1b2020202020202020191916120d07000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070d1216191920202020202020201b1a18140f080100000000000000000000000000000000000000000000000000000000000000020a11171c1f20282d2d2d2d2d2d2d2d2a21201d19130c040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030606090b0d0f101112131313121211100f0d0b090706040100000000000000000000000000000000000000000000000000000000000013202d394653606c798693939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939386796c605346392d2013000000131f2c3946525f6c7985929faca295887b6f6255483c2f2215090000000000000008131e28323a47535f69737f8c95a0acb6b8b9beac9f9386796c605346392d201300000000000000000000000009121b232c343d434b515961676d737a7f848a8e92979899969494989298949496999897918e89847f7a736d67615a524c443d342c231b1209000000000000000000000000000000000000000000000009121b232c343d434b515961676d737a7f848a8e92979899969494989298949496999897918e89847f7a736d67615a524c443d342c231b120900000000000000000000000000000008141e29323d464f5960696e787f858b90939a999c9d9e9f9f9f9f9d9c9a9992908b85807a726c65636c717c838a9095989b9d9f9f9f9f9d9b8e8275685b4f4235281c0f0000000000000000030d17212b353d474f5860696e787f868e93999fa3ababaca8a9a29e9d9b9b9a9b9c9d9fa3aaa9aba9a19e98928c857d736d665d564c443a32291e150a000000000000000000000000000007101b242d363e474f585f666d737c82878e92989b9ea2a9a6a8aaa8a7a6a6a6a7a8a9a8a6a8a19e9a97928c86807a716c615e564d453c342b22190e0500000000000000000000000000000a141d262d333f454d53565d606467696a6b6c6c6b6b696764615e5653504a423e36302920272f353e41495053555d606466686a6b6c6c6c6b6b696765625f5855534e47423c3328221c140b020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003080b0d0e13131313131313130d0c0a0602000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002060a0c0d13131313131313130e0d0b08030000000000000000000000000000000000000000000000000000000000000000000000060b0f12131b20202020202020201d1413110d08010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202d394653606c798686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686796c605346392d2013000000131f2c3946525f6c7985929faca295887b6f6255483c2f221509000000000000030d1925303a44505a616e7b86929fa7afacabadb3ac9f9386796c605346392d2013000000000000000000000009121b242d353e464e555d606c707980868c91969a97918e8c8988878685868788898c8f91979a96918c868079706c615d564e463e352d241b120900000000000000000000000000000000000000000009121b242d353e464e555d606c707980868c91969a97918e8c8988878685868788898c8f91979a96918c868079706c615d564e463e352d241b120900000000000000000000000000020e1925303b444e58606b6f7b838b92979c9fa4a9a19e9c9a9a999a9c9ea1a39f9c97928d857e776e6d737e8690959d9fa7a8aba49f9f9f9f9b8e8275685b4f4235281c0f00000000000000010b151f29333d474f59606a6f7b838c92999fa4abadaaa29f9b979792908f8e8e8e8f909298989d9fa7acaaa29f97918880786d685e564c443a30261c1106000000000000000000000000050e19222d363e485059616a6f7980878f93999fa3aaabaaaaa29f9d9b9a9a999a9a9b9d9fa2aaa9aba9a19e98928d857e756d685f574e463c342a20170c0300000000000000000000000006111b262f383f4451575f61686d7073767778797978777673716d6864605c545046413a322a313940454f535b6064676d707375777878797978777674726f6a67625f57534d453f332d261d140b0200000000000000000000000000000000000002080d10121313131313131313131313131313131313131313131313121211100e0b09070604000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000306060f131313131313131311070604010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030608090c0f111213131211100e0c0a07060401000000000000000000000000000000000000000000000000000000000013202d3946535f6c767979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979766c5f5346392d2013000000131f2c3946525f6c7985929faca295887b6f6255483c2f2215090000000000010b151f2a36414c56626c76828f98a3aca49f9ea1a9b39f9386796c605346392d20130000000000000000000007111b242d363e474f5860676d747d848c929897928d8985827f7d7b7a7979797a7b7d7f8285898d929798928c857d756d6860584f473f362d241b11070000000000000000000000000000000000000007111b242d363e474f5860676d747d848c929897928d8985827f7d7b7a7979797a7b7d7f8285898d929798928c857d756d6860584f473f362d241b110700000000000000000000000005111e2a36414c56606a6f7d8590959ea1a9a29e9997928f8e8d8d8d8f9197999ea1a29f97928b827a747f8b92989fa7a9a19e999993929292998e8275685b4f4235281c0f0000000000000007121d27313b454f59606b707c8590959fa3abaea9a19e98928e8a87858382818181828386888b90959b9fa4aca9a19a938d837a6d685e564c42382e23170d0400000000000000000000020d17202b343e48505a616b707c838c92999fa4abaca7a09d999892908f8d8d8d8d8d8f909298989c9fa4abaaa29f97928a827a6e6960584e463c32291e150b0000000000000000000000000b17222d384149505b62696e747a7d808384858685858482807e7a76716d66615a524c443b333a434b515961656c71757a7d80828485858685858483817e7c78746e6a625f5751443f382f261d140a0000000000000000000000000000000000060d14191c1f1f202020202020202020202020202020202020202020201f1e1e1c1a18161413100c070501000000000000000000000000000000000000000000000000000000000003080c0e0e131313131313130f0e0c09040000000000000000000000000000000000000000000000000000000000000003070b0d0e131313131313130e0e0c080300000000000000000000000000000000000000000000000000000000000000000001040707090c0e101111121313121211100f0d0b0907060300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0f131516191c1e1f1f201f1e1d1b19161413110d0801000000000000000000000000000000000000000000000000000000121e2b37434f5a646c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c645a4f43372b1e12000000131f2c3946525f6c7985929faca295887b6f6255483c2f221509000000000007121d27313946525e68717e8b949faaa49a939297a1ad9f9386796c605346392d2013000000000000000000060f19232d363e485059616a6f79818a919797918b85817c797572706e6d6d666d6d6e707275797c81858b919697918a817a6f6a615951483f362d23190f060000000000000000000000000000000000060f19232d363e485059616a6f79818a919797918b85817c797572706e6d6d666d6d6e707275797c81858b919697918a817a6f6a615951483f362d23190f0600000000000000000000000714202d3946525e686f7c869297a0a7a49d97928c888582818080808285888c91969ea1a29f948f84818c919fa3aaa39f97928d898685858687898275685b4f4235281c0f000000000000000c18242f39434d57606b707d8692979fa7aeaba39f96918b86817e7b7876757474757677797c7f83888e939a9fa7aca49f9590837a6d685e544a3f34281f160c0100000000000000000009141f29323d46505a626c717d8690959fa3ababa49f9b95908c898584828180808081828385888b8f93999fa2aaa9a19e938f847b6f6a60584e443b30271d120700000000000000000000030f1b27333f49535b606d727b81868a8d909192929292918f8d8a86837e78716c615e564d453c444c555d606c70787d82868a8c8f909192929291918f8d8b8884807b756e69625b504a42382f261b11060000000000000000000000000000000810181f25292b2c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2c2c2b2a29272523201f1c1813110d08020000000000000000000000000000000000000000000000000001090f14181a1b202020202020201c1b191510090200000000000000000000000000000000000000000000000000000001080e1317191a202020202020201b1a18140f0901000000000000000000000000000000000000000000000000000000000206080d11131416181a1c1e1e1f1f201f1f1e1d1b1a18161312100b060603000000000000000000000000000000000000000000000000000000000000000000000000060a0e1011131313131313100f0d0a05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070c10151b1f222226292a2b2c2c2b2b2a28252321201d19130c0400000000000000000000000000000000000000000000000000000f1b27333e49525a5f60606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060605f5a52493e33271b0f000000131f2c3946525f6c7985929faca295887b6f6255483c2f22150900000000020b18232f39434f59616d7a85929ea6a99f938785929eab9f9386796c605346392d20130000000000000000030c18212b353e48505a626b707c848e9398928c857f7974706c6666636161605c6061616366666c7074797f848b9298938e857c706b625b51483e352b21180c03000000000000000000000000000000030c18212b353e48505a626b707c848e9398928c857f7974706c6666636161605c6061616366666c7074797f848b9298938e857c706b625b51483e352b21180c0300000000000000000007131f2c38444f59616e7a859198a2a9a39f928d85807b78757473737475787b7f848b91969ea59f96918d929ca4a9a199928c85807c797878797a7d7e7164574a3e3124170b00000000000004101d2935404b555e69707d879298a2a9b1a8a099928c847f7a75716e696a6868676869666d6f72767b818790959da4afa79f9590837a6d665c50443e31281d13070000000000000000030d1925303b444e58626c717e879298a0a7afa79f99938e88837f7c79777574737373747577797c7f83878d92989ea5ada59e9691857c6f6a5f564c42392e23180c030000000000000000040f19232b3744505b656c747f868d92989a9c9d9e9f9f9e9e9c9a9992908a847e756d685f574e464c565d676d747d838a8f9299999b9d9e9f9f9f9e9e9c9a9896918d87817b726d605b544a41382d22170b040000000000000000000000000006101a222a30353839393939393939393939393939393939393939393939393838373634322f2d2c2923201d19130f0a0300000000000000000000000000000000000000000000030b131a202427282d2d2d2d2d2d2d292825211b140c0300000000000000000000000000000000000000000000000000020b12191f2326272d2d2d2d2d2d2d282724201a130b0300000000000000000000000000000000000000000000000000040a0f1214191d2021232527292a2b2c2c2c2c2b2b2a28272522201f1c1715120f0a050200000000000000000000000000000000000000000000000000000000000000040b11161a1d1e2020202020201d1c1916100a030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b12181d1f272b2e2f3235373839393837363532302d2c29241e160d04000000000000000000000000000000000000000000000000000a16212c3740494f535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353534f4940372c21160a000000131f2c3946525f6c7985929faca295887b6f6255483c2f221509000000000a141d2934404b55606b74818e97a1ada1978e8183909da99f9386796c605346392d201300000000000000000b151e2a333d47505a626c717d8691969490867f79726d6763605b54565554535053545556545b6063676d72797f858f949791867d726d625a50473d332a1e150a0000000000000000000000000000000b151e2a333d47505a626c717d8691969490867f79726d6763605b54565554535053545556545b6063676d72797f858f949791867d726d625a50473d332a1e150a0000000000000000000915222f3b4854606b75818e97a1aaa399928a8079736e69696767666769696e73797f848e939fa3a19e9a9da4a8a09691877f79736f6d67666c6e70716c6155493c3023170a000000000005101a232c3945515d676e7b859299a2aab1a79f9691878079726d6764615e575c5b5b5b545c6062656a6e747c838d929fa3aba7a0959082786d60594f433a2f24180d02000000000000010b151f2a36424d56606a717e889299a2aaafa49c959087817c77726f6d6668676766676768666c6f72767b80868e939fa3aaa8a09792867c6f685e544b40342820150900000000000000000b16212c38444f59606c77818b92999fa2aaa9a8a09e9c9b9c9d9fa29f9c96918a827a6e695f584e555d686d79818a90959c9fa3aba39f9e9c9b9c9d9ea1a9a8a19e99938e867f746c665b53493f332720150a000000000000000000000000020d18222c343b4144464646464646464646464646464646464646464646464645454443413e3c3a38342f2d29241e1a150f0a0400000000000000000000000000000000000000010b151d252b303435393939393939393534312c261e150c000000000000000000000000000000000000000000000000000b141d242b303334393939393939393534302b251d150b0100000000000000000000000000000000000000000000070c10151a1f2124292c2d303234363738383939393838373533322f2d2b2823211f1b15120e090300000000000000000000000000000000000000000000000000000000050d151c2227292a2d2d2d2d2d2d292926211c150d04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070d151d24292c32373b3c3f4244454646454443413f3d3a39352f281f160c0100000000000000000000000000000000000000000000000005101b252e373e4346464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646433e372e251b1005000000131f2c3946525f6c7985929faca295887b6f6255483c2f22150900000006111b262f3845515c67707d89939ea9a69e91857a84919daa9f9386796c605346392d20130000000000000007121d27303c454f59626c717e879298938c827b726d67605c5553504a4d505152535352514e4a5053555c60676d727b828b929892877f726c61594f453c30261c11060000000000000000000000000007121d27303c454f59626c717e879298938c827b726d67605c5553504a4a484746444647484a4a5053555c60676d727b828b929892877f726c61594f453c30261c11060000000000000005111d2a36414c56636f7c89939ea9a59f92877e746d67625f575b5a5a5a575f62666d7279818c9299a3aba7a9aca09691847c736d6762605c5b60616364615a5045392d21140800000000000b16212b37434e58606d79839097a1abb1a79f9590847c736d67605d5554524d4f4e4e4e4a505355585f626a6f78808a9299a3aba79f948d80736b61554b4035291f140900000000000007121d27313946525e696f7c86929aa3ababa39f928d837c756f6a6662605c545a5a5a5a5a545b606265696e747b818a9298a2a9a9a19891847a6e665c51453c31261a0e0500000000000003101b27323b4854606b73808c939fa3aba9a19e9896918f8f8f909297989d9f9e938f847b6e6a5f565d676d7a838e939da0a7a59e9b999291908f8f909297979c9fa6a49f98928b81786c655b50443c32261b0f05000000000000000000000008141f2a343e464d5152535353535353535353535353535353535353535353535251514f4d4b494745403a3935302b26201b150c0700000000000000000000000000000000000009131d272f373c40414646464646464642413d3730271e0e050000000000000000000000000000000000000000000000030d1d262e363c3f414646464646464641403c372f271d13090000000000000000000000000000000000000000070c12181c1f262b2e2f35393a3c3f414344444546464545444342403e3c3a38342e2e2b26211e1a140f0a0400000000000000000000000000000000000000000000000000040d171f272e3336373939393939393635322d261f160d03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010a10191f272f35383c4347494c4f515252535251504e4c494745413a31281e13080000000000000000000000000000000000000000000000000009131c252c33373939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393937332c251c130900000000131f2c3946525f6c7985929faca295887b6f6255483c2f2215090000000b17222d38414e58606d7984919ea5aa9e948a7e7885919eab9f9386796c605346392d2013000000000000000c18232e39434d57606b717e8b929992887f786e69605d55514b5153575a5c5e5f5f5f5f5d5b5854524d51555c60696e767f879298928b7e716b60574e42382e23170c030000000000000000000000000c18232e39434d57606b717e8b929992887f786e69605d55514b514f4b443b3a3a383a3a3b3d3f44464b51555c60696e767f879298928b7e716b60574e42382e23170c030000000000000713202d3946525e6875828f9ca5ab9e938b7e716c605d55534d4e4d4d4d4d53545c60676d757f87929facb4b7aa9e91847b6f6a605d55535150535456575550483e33281c11050000000004101c27333a47535f6a74808d95a0a9b2a89f9590837a6f6a605c55514b484642424141423f4446494e53585f666d737e879299a4afa69f93887d70675d51453b30251a0e0200000000000c18232f3943505a616e7b859198a3acaca399928b80786f6a625f585653504a4e4d4d4d4e4a505355575e61696e757e869297a2aaaaa1969082786d60574e42372b21170b0000000000000713202c38444f5963707d88939fa5aea69f97918c87848382828385888b90959d9e9691857c6e685e606d798390959da5a8a09d938f8a86848382828385878b8f949da0a7a29f938e81776c60584e43372b21160b00000000000000000000000d1925303b4650585d5f6060606060606060606060606060606060606060605f5f5e5d5c5a585653514b4746413a37312b262018120b03000000000000000000000000000000030f1a252f3941484d4e535353535353534f4d4942393020170d02000000000000000000000000000000000000000000010b151f2e3840474c4d535353535353534e4d4841392f251a0f030000000000000000000000000000000000030b12181c23282c31373a3b414547494b4d4f5151525253525251504e4d4b4946443f3c3a37312d2a251f1b160f0a0400000000000000000000000000000000000000000000000b151f2931393f424446464646464643423e3831281f150a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b131c222b31394045474e5455595c5d5e5f5f5e5e5d5b585654514c433a2f24190d01000000000000000000000000000000000000000000000000010a131b21272b2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2b27211b130a0100000000131f2c3946525f6c7985929faca295887b6f6255483c2f2215090000040f1b27333f49535f6a73808c96a0aca2988f82757985929fac9f9386796c605346392d201300000000000004101c2834404b555f69707d87929892877e726c665f57514d53555c606467696b6c6c6c6b6a6865615e57544f51575e616d727d86929792877d706a5f544a3f3428201509000000000000000000000004101c2834404b555f69707d87929892877e726c665f57606060605e5c564e44392d2c2d2e323f49515759606060575e616d727d86929792877d706a5f544a3f34282015090000000000000714212e3a4754616d7a86929faca3998e81756d625a514b47424140404142474b51555e69707c86929facb8b0a3968a7d70696058514b46454446474a4a49453e362c22170c00000000000714202c38444f59626e7c87929fa7b1aaa1969083796d685f58514b45413b3a363035342e34383a3c43474e545c606c717e87939fa5afa49a9185796d60574d42362a1e11050000000004101c2934404b55616c76828f97a1aaafa49a92877e736d665f58534e4946443f41404040413f4446484d53565e616c717c859298a2aca89f948d80736a5f53473e33281c100400000000000916222f3b4854606b7683909aa4afa89f948f847f7a7776757676787b7f838990959c9791847a6d666c75818f959fa7a79f959189827e7a7776757676787b7e828990959ea5a59d938c7f736a5f53473d33271c100400000000000000000003101c2935414d5862696c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6b6b6a69676562605c5554524c47433c373228231d150c0700000000000000000000000000000814202b37414b53595b606060606060605c59544b4232291f140900000000000000000000000000000000000000000007121d2731404a52585a606060606060605b59534b41372b20140800000000000000000000000000000001070c151d23282e34383c4347484c525456585a5c5d5e5f5f5f5f5e5e5d5b5a585553504a4847433c3a36312b27201b150d0802000000000000000000000000000000000000000006111c27313b434a4f51535353535353504e49423a31261c1005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010b141c252e343d434b515358606265686a6b6c6c6b6a69686563605d554c4135291d110400000000000000000000000000000000000000000000000000010910161b1e202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020201e1b161009010000000000131f2c3946525f6c7985929faca295887b6f6255483c2f22150900040d1a232b3744505b656f7c87929fa8a79f92867b6e7986939fac9f9386796c605346392d20130000000000050f1a232c3845515c676e7b85929992867d716c605b544d51575f61676d70737677787979787775726e69636059524d525b626b707c85929892857c6e665c50443c31261a0f04000000000000000000050f1a232c3845515c676e7b85929992867d716c605b63666c6c6c6c6b6760564b3f331f25303b44515b62656c6c6c6c6c67646b707c85929892857c6e665c50443c31261a0f0400000000000b1825313e4b5864717e8b99a3ac9f92867b6e625a504540393731343331373c45515c676e7b859299a3aeabaea99c9083786c60564c413a3838393b3d3e3c39332c241a100500000000000916232f3c4855616b76828f99a3afaea39891847a6d675e564e454039352f2d2a25282823282c2d31373c424a505a616c727f8b939ea8aca1978c8073695e52463a2d2014070000000006131f2c3845515c67707d8a949fa9b0a69f93887e716c605c544e47433c3a38342e3433342d3338393c42464d525a616a6f7c86929aa4afa69f92877b6e62594f44392d20150a00000000000a1623303d495663707c89949facaca0958f827a726d686968696a696e72767d838c929f968f82786d717e8b939ea7a79f9590837d75716d676968696a696e71767d838e939ea5a59f92877c6f62594f44382c20140700000000000000000005121f2b3844515d697479797979797979797979797979797979797979797979797878777674716f6d6764615d56534e47433c342e271e191008000000000000000000000000000c1824303c48535d64686c6c6c6c6c6c6c68655d54443b3025190e0000000000000000000000000000000000000000000c18232f3943525c64676c6c6c6c6c6c6c68645d53483c3024180c0000000000000000000000000000030b12181e272e34394044464e5355565d60636567696a6b6b6c6c6c6b6b6a68666562605c5455534e4846423b37322b262019130c04000000000000000000000000000000000000000a16222e39434d555b5d6060606060605c5a544c42382d21160a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009131c262e3740464f555d60656a6f7275777879797877767472706d675d5145392c201306000000000000000000000000000000000000000000000000000000050a0f1213131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313120f0a0500000000000000131f2c3946525f6c7985929faca295887b6f6255483c2f221509010c161f2a36414c56606c77839099a3aba0958c7f726d7a879aa4af9f9386796c605346392d201300000000000b16212b37434e58606d7983919792877d706b615a504d555c60696e74797d8082848586868584817f7b76706b605d564e5159606a6f7c8692979083786d60584e43372b21160a0000000000000000000b16212b37434e58606d7983919792877d706b615a636d72797979797772675c4f43372a2a36414d56626d727979797979746e646a6f7c8692979083786d60584e43372b21160a00000000000e1b2834414e5b6774818e9aaba99c8f8276695f53483f352f2b262727313c46515b606d79839097a1aaa29fa2aa9f948b7e71685e52463c322b2d2e3031302d28221a1208000000000005121e2a36424d5763707d89949fabb2a89f92867c6f685e554c443c342e2924201e1a1b1b171c1f20262b30383f44505a626d75818e96a0aca79f92867b6e6154473b2e21140800000003101c28343f4a54606d7984919ea6b0aa9e948c7f736c625a504a423c37322d2c282327272722282b2d31363b42465058606a707e88939fa8aea3998f82766c6155493c31261b0f0000000004101d2935404b556774808d9aa6b0a99d91837a6d68615e565c5c575f61656b7078808b9399948c7f737a85929fa5aba095908279706b64605d555c5c565e61646b7079818e939ea8a3999083776b6054483c2f22160900000000000000000006131f2c3946525f6c79868686868686868686868686868686868686868686868685848482807e7c7975716d68625f58534e454039302a221a11090000000000000000000000000e1a2734404d59646f7479797979797979756f65564d42362a1c11060000000000000000000000000000000000000004101c2934404b55646e7479797979797979746f64594d4034271a0e00000000000000000000000000040d151d2329303940454a5153585f6266686d6f7274767777787979787877767573716f6d6666625f5854534d47433d373129241e160e060000000000000000000000000000000000010e1a27333f4a555f676a6c6c6c6c6c6c69665e54493e3226190d010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007101b252e384049515960676d71777c7f8284858586858483817f7d796d6054473a2d21140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929faca295887b6f6255483c2f22150907121d28313946525e68727e8b949faba3999083786d6e7a8794a1b69f9386796c605346392d20130000000004101c27333a47535f6a73808c95928b7f726b6159504d575e676d737b81858a8d8f9192929292908e8b87827d756d685f584e4f58606a707e8793958c7f726a5f53473d32271b0f040000000000000004101c27333a47535f6a73808c95928b7f726b61595966727f8686868684776b5e51443826303846525e68727f8686868686817467606a707e8793958c7f726a5f53473d32271b0f0400000000101d2a3743505d6a7683909da9a5988c7f7265574d423629241d1a242f39434e58626d74818e959fa9a29892989fa69e92857a6d61584e43372b2021232423211c1710080000000000000714212d3a46535e6975828f9ca6b0aca0968c7f736a60564c433a3228231d1814120e09060c1012131a1e262e343e48515b606d7984919ea09d95908a807366594d4033261a0d00000006121f2b3844505c66727f8c96a0acaea2988f82776c605a50443f38302b26201f1c171a1a1a171c1f20252a30363e464e58616c73808d96a1acab9f948a7d7064584e43372b1d120700000006131f2c3945515d677784909daaada1978a7d70675e56524c4f4f4d53555960666d737e87939f92867b7f8c97a2ada39990837a6d67605954514c4f4f4d52545960676d78818f96a0a49f95897d7063564a3d3023170a00000000000000000006131f2c3946525f6c7985929393939393939393939393939393939393939399929291908f8d8b8985827e7a756f6a625f58514b433c342c231b120900000000000000000000000e1b2835414e5b687481868686868686868175695e5246382d22170b0000000000000000000000000000000000000006131f2c3845515c677480868686868686868174685b4e4135281b0e000000000000000000000000050e161f272f343d434b51545c60646a6e72767a7c7e808284848585868585848381807e7c7976736f6a66615e57544e47433c3530282017110a0200000000000000000000000000000003101d2936424f5b6771777979797979797670665a4e4235291c0f03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c19222d37404a525b636b6f797e84888c8f909192929191908e8b897f7266594c3f3326190c0000000000000000000000000003080c0e0e131313131313130f0e0c09040000000000000000000000000000000000000000000000000000000000000003070b0d0e131313131313130e0e0c0803000000000000000000000000000000000000000000000000000000000406070b0e11121313131313130c0c0a0602000000000000131f2c3946525f6c7985929faca295887b6f6255483c2f2215090b18242f39434f59616e7a85929fa6a89f92877c6f666e7b8894a1ac9f9386796c605346392d2013000000000714202c38444f59626f7c8792968e81746d62594f4d575e696e7980868d92989a9c9b999898999b9b9a938f89827a6f6a5f574d4e58616c737f8c9592867c6e62594f43382c20150a000000000000000714202c38444f59626f7c8792968e81746d62594f5966727f8c93939184776b5e5144382e38424f59616e7b8692939391857a6d6058616c737f8c9592867c6e62594f43382c20150a00000000121f2b3845525e6b7885919eaba295897c6f6256493c31231817202935404b555f6a727f8b939da7a298928590949fa1978e81746a5f53473c32261b17171714110c05000000000000000815212e3b4854616e7b87939facb2a89d9184796d60584e443a31292018120d0705020000000306090c151c2328363f45515d676f7d899395908a837e776c605346392d2013060000000713202d3a4653606d7884919ea8b2a99f92867b6e655b50483e342e261e1b1312100c060d060b0f12131a1f252a343d46505a606d7984919ea8b0a69c8f83766a5f5347392e23180c0000000714202d3a4753606d7a86939facab9e9285786c60554c464142434246484f545c606c727f8b9398908385929ea9ab9f92877c6f685d554f47454142434246474f555d666d7984919b9a93908c8276695c4f4336291c1003000000000000000006131f2c3946525f6c7985929f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9fa39f9e9e9d9c9a9898928f8b86817c756f6a605c554e463e352d241b1209000000000000000000000916232f3c4956626f7c89959393939392867b6e61544a3f33281c0f030000000000000000000000000000000000000714202d3a4753606d7985929393939395897c6f6356493c302316090000000000000000000000050f172028313940454f555c60666d71777b7f8386898b8d8f9091929292929191908e8d8b8885827f7c77736e69626058534e46413a3228221c140b03000000000000000000000000000004111e2a3744515d6a77838686868686868276695c504336291d10030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a151e2b343f49525c646d737c848b9095989b9d9e9f9f9e9d9c9b988c7f7266594c3f3326190c000000000000000000000001090f14181a1b202020202020201c1b191510090200000000000000000000000000000000000000000000000000000001080e1317191a202020202020201b1a18140f0901000000000000000000000000000000000000000000000001070c101314171b1e1f202020202020191816120d070000000000131f2c3946525f6c7985929faca295887b6f6255483c2f22150a141d2935404b55616b75818e97a2aca1968d80746a626f7b8895a2ac9f9386796c605346392d2013000000000916232f3c4855606b768390999184796d605b514b555e696e7b838d92999f9c96918e8c8b8b8c8e92979e9c938f847c6f695f564c505a606d788390988f82766b6054483d32271b0f000000000000000916232f3c4855606b768390999184796d605b514c5966727f8c999e9184776b5e514438343f4a54606b75818e989e948a7e71685d525a606d788390988f82766b6054483d32271b0f00000000131f2c3946525f6c7985929faca194887b6e6155483b2e22151f29333b45515d676f7c86929fa5a49a92867b829099a39f93877c6f62584e43372b20150a0a0805000000000000000005121e2a36424d576673808d99a4afaca0968a7e71665c51463c32281f170e0700000000000000000000030a1117242935414b55606b75818e8a837d78706c655b5044372b1f1205000005111e2a36414c5664707d8a96a1adada1978c7f72695e53493f3628231c140c0a060300000000000306090e1419222b343e45515d67717e8a96a0acab9f94887c6f62544b4034281c100400000815212e3b4854616e7b879aa4afa89b8f8275655b50433a363031363a3d424a515a626d75818e9794909297a1ada3998d80736a5f564c433d39352f30363a3d434b545d67707d8a8e8b87837f7c6f6255493c2f22160900000000000000000006131f2c3946525f6c7985929facacacada7a5a5a5a5a5a5a5a5a5a5a5a5a5a5a6a6a7aaa9a7aaa29f9b99928e87827c736d675f584f473f362d241b10070000000000000000000915222e3b4854606a7783909daa9fa3998c7f73665b5044382b1f1409000000000000000000000000000000000006121f2b37434e5864717e8a97a29f9f9d9083776b6054483b2f22150900000000000000000000050e172129323a434b515960676d72797e83888c909399989a9c9d9e9e9f9f9f9e9e9d9b999898928f8c8884807b756f6a625f58524c443d332d261d150c040000000000000000000000000004111e2a3744515d6a778490939393938f8376695c504336291d1003000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c26303d46515b646e737f8791969da0a7a8aaa8a4a2a0a0a0a1998c7f7266594c3f3326190c00000000000000000000030b131a202427282d2d2d2d2d2d2d292825211b140c0300000000000000000000000000000000000000000000000000020b12191f2326272d2d2d2d2d2d2d282724201a130b03000000000000000000000000000000000000000000060b12181c1f2024282a2b2c2d2d2d2d2d2625221e18120a01000000131f2c3946525f6c7985929faca295887b6f6255483c2f2215111c262f3845515d67707d8a939ea9a59e9184796d60626f7c8895a2ac9f9386796c605346392d201300000007131f2c38434f5963707d899593897d70675d5145515d676e7b8490959f9f948f898481807e7e7f82858a91969e9691857b6e685d5245505c666f7c879294897c6f63584e43372b1c1106000000000007131f2c38434f5963707d899593897d70675d51494c5966727f8c999e9184776b5e5144383844505c666f7d89939e988f82756c61564c505c666f7c879294897c6f63584e43372b1c110600000013202c3946535f6c7986929faca093877a6d6054473a2d211a25303b45505a606d79839199a3a59f93887e707c87929fa49a8f82756a5f53473c32261b0f01000000000000000000000714212d3a46535f697784919eabb5ab9d9184786c60544b40342b20160d0500000000000000000000000000061218242f3a434f59616e7b837e78716c65605b53493f33271b0f0300000714202d3946525e6876828f9ca8b2ab9e9185796d60574d41382d2417110a02000000000000000000000002091019222935404b55606c7884919dabb0a69a8e8174665c5145382c1f130600000916222f3c4955626f7c8895acb6a79a8d81746753493f312a25262a2d30394044515b616d7a85929f9c9ea1a9ac9f92867a6d61584e433a312c2924252a2d3139424b55606c7783827e7a76736f6a6054473b2e22150800000000000000000006131f2c3946525f6c7985929facb8ada39c9898989898989898989898989898999a9b9d9fa3aaaaacaba39f9a938f8780796f6a615950483f362d22190f05000000000000000007131f2c38434e5865727e8b98a2aeab9e9184786c6053463b30251a0e00000000000000000000000000000000000814212e3a47535f6a7683909ca9aea2988b7f7265594f43382c1f1307000000000000000000030d172029333b444c555c606b6f797f848b9095999c9fa4aba7a9a9a8a7a6a6a7a7a8a9a8a6aaa29f9c9995918c87817c766f6a615d564f443f382f271e160d0400000000000000000000000004111e2a3744515d6a7784909d9f9f9c8f8376695c504336291d100300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232e38424e58626d73808c9299a0a8acaaa39f9b979594939394958c7f7266594c3f3326190c000000000000000000010b151d252b303435393939393939393534312c261e150c000000000000000000000000000000000000000000000000000b141d242b303334393939393939393534302b251d150b01000000000000000000000000000000000000020a11171d23292c2d3134373839393939393933322f2a231c130a000000131f2c3946525f6c7985929faca295887b6f6255483c2f221517222d38424e58606d7984919ea5a99e938a7d70675d626f7c8995a2ac9f9386796c605346392d20130000000915222f3b4854606b7683909a8e81756b60554b4e58606d798390969f99928b827c78747372727375797e848e939d9791847a6d605a504a545f6a74808d988f82766a605447382e23170c00000000000915222f3b4854606b7683909a8e81756b60554b414c5966727f8c999e9184776b5e514436414c56606d7883909d9f92867b6e615a50444a545f6a74808d988f82766a605447382e23170c000000121f2c3945525f6c7885929faba194877a6e6154473b2e21202a36424d57616c74818e95a0a89e938c7f736c74808d97a29f93877c6f62584e43372b1e1308000000000000000000000815222e3b4855616e7b8896a0acafa3998c7f72665b5042392e22190e0500000000000000000000000000000007131d28313d46535f696e77716c65605b53504941382d22170b0000000814212e3b4754616e7a87939facafa3998c7f72675d51453b2f261b1206000000000000000000000000000000071018242f3944505b66727e8b99a3aeac9f9285796d6053463a2d2013080000091623303c4956636f7c8996a2afa69a8d8073675a4d403025191a1e21272e343f46525e6873808c99a3abadb3a89c8f8275685e52463c3128201d19191e2027303944505b656c7675716d68666260584e43372b1f130600000000000000000006131f2c3946525f6c7985929facb8a79c918c8b8b8b8b8b8b8b8b8b8b8b8b8b8c8d8e909298999da0a7aaaca49f99928d837c706b625a50483e342b21170d0300000000000000030f1b27323d4754606d7a85929facaca1968a7d7063574d42362a1c110600000000000000000000000000000004101c2934404b55626e7b88949fabac9f92867a6d6054473d32271b0f030000000000000000010b151f29333b454d565d676d747c848c91969da0a7a9aca8a9a19e9c9b9a9a999a9a9b9d9fa2a9a6aaa9a7a09d99928e89827c746d686059504a423930281f160c01000000000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d10030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003101c28343f4a54606a727f8b929fa3abaca49f98928e8b8887868687898b7f7266594c3f3326190c00000000000000000009131d272f373c40414646464646464642413d3730271e0e050000000000000000000000000000000000000000000000030d1d262e363c3f414646464646464641403c372f271d13090000000000000000000000000000000000030b141b22272f34383a3e4144454646464646463f3e3a352e251c12070000131f2c3946525f6c7985929faca295887b6f6255483c2f22151c28333f4a545f6a73808d96a1aca2978e81756b6155626f7c8995a2ac9f9386796c605346392d2013000004101c2934404b55636f7c899493877c6f62594f4754606a74808d95a09892877e766f6c6566656566666d7179818e939d968e81756c61554b4e58616e7b869294897c6f62544a3f34281c100300000004101c2934404b55636f7c899493877c6f62594f433f4c5966727f8c999e9184776b5e51443846525e68727f8b959f958b7f72695e53483e424e58616e7b869294897c6f62544a3f34281c10030000111e2b3844515e6b7784919eaaa295887c6f6255493c2f2428323a46525e69707e8a939da8a0958e81776c606d7a85929fa49a8f82756a5f53473a2f24190d010000000000000000000c1825323f4b5865727e8b98a8b2ac9f92867a6e61544a3f30271d100700000000000000000000000000000000010c161f2a36424d575f616a64605b535049443f382f261b11060000030f1b27333f495364717e8b9aa4afac9f92867a6e61554b4033291d140a000000000000000000000000000000000007121d28333f4a54616d7a86929facaea298897d706356493d2f24190d01000916222f3c4955626f7c8895aab4a79b8e817468564c41362a24201d191c232a36414c56616e7a86929facb9b3a9978a7e7164564c41342a1f161d1d1d1d151e27333f49535b606a6864615e5655544e463c32271b0f0300000000000000000006131f2c3946525f6c7985929facb2a5988c7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f80818386888c91959c9ea6acaba39f9591867d716c625a50463d33291f140900000000000000000a16202c3945515d6774818e9aa7b1a89b8f8275695e5246382e23170b00000000000000000000000000000006131f2c3845515c6774808d9aa6b0a79b8e8174685d5245392b21160a00000000000000000007121d27313b454d575e686d79808791959ea1a8acaaa29f9b979791908e8d8d8d8d8e8f909297979a9ea0a8ababa39f9b948f87817a706b605b544b433a31281d1307000000000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d10030000000000000000000000000000000000000000000000000000000000000000000000000000000000000001040707121f2c3844505c666f7c87929fa4afaaa39a938d86817e7b7a797a7a7c7e7d6f6356493c302316090000000000000000030f1a252f3941484d4e535353535353534f4d4942393020170d02000000000000000000000000000000000000000000010b151f2e3840474c4d535353535353534e4d4841392f251a0f03000000000000000000000000000000030c151d262d33394045474a4e51525353535353534c4b463f372e23180d0200131f2c3946525f6c7985929faca295887b6f6255483c2f221a242b3844505b666f7c87929fa8a69f92857a6e615956626f7c8995a2ac9f9386796c605346392d2013000006131f2c3845515c6775818e9b8f82756a5f53474d57626f7c87939f9f92867d716c62605b535858545c60676d77818e959e938a7e71675d5146525e6974818d9a8e8174665c5044382c1f120600000006131f2c3845515c6775818e9b8f82756a5f53473d3f4c5966727f8c999e9184776b5e5144424e58616d7a85929f999083786c60574d42363c46525e6974818d9a8e8174665c5044382c1f12060000101d293643505c6976838f9ca9a4978b7e7164564c413529303a44505a616e7b85929ea5a3989183796d655d6873808d98a39f93877c6f62564c4135291d1104000000000000000004101d2935404b556875828f9ba8b5a99c908376685e5242382d1e150b000000000000000000000000000000000000040d1a26313b454d53555d57535049443f38332d261d140a00000005121f2b3744505b6575818e9bacb6a99c8f8276685e5243392f21170b020000000000000000000000000000000000010b17222d3846525d6875828f9ca8b4aa9a8d807367564c4135291d1104000814212e3b4754616e7a8798a2aeaa9d908377685e52463c352f2c2924272625303a46525e6876828f9ca9b6ada197877b6e6154483b302a2a2a2a2a2a2a2a2a222d38414950535d5b5854524c4947433c342b20150a0000000000000000000006131f2c3946525f6c7985929facada093877a7272727272727272727272727273737477797c8084898f949da0a7afa7a09892877e716c61584e453b30251a0d040000000000000004111d2935414b55626f7c88959fabac9f92877b6e61544a3f34281c100300000000000000000000000000000714202d3a4753606d7985929eabaca095897c6f63564c413529190f040000000000000000040e18242f39434d575e696e7a828d9399a0a8ada8a19e98928e8a878583818180808081828385878a8d9196999ea1a9aca69f99928d847d736c665c554b433a2f24180d010000000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d1003000000000000000000000000000000000000000000000000000000000000000000000000000000000206080d1113141d2935404b55606d78839099a3aeaba3989288817a75716f6d6d6d6e6f716f6b6054483b2f22150900000000000000000814202b37414b53595b606060606060605c59544b4232291f140900000000000000000000000000000000000000000007121d2731404a52585a606060606060605b59534b41372b2014080000000000000000000000000000000b151e272f383f444b5153575b5d5e5f6060606060595751493f352a1e120600131f2c3946525f6c7985929faca295887b6f6255483c2f221f2a36424d57606c78839099a3ab9f948b7e71685e5256626f7c8995a2ac9f9386796c605346392d201300000714202d3a4753606d79859296897c6f63584e46535f6975828f9a9f948b7f726b615a5350494b4b4b51555d656d78839099999184796d6053474d56616e7b88959285796d6053463a2d2013070000000714202d3a4753606d79859296897c6f63584e43353f4c5966727f8c999e9184776b5e513f4a54606a74818e979f92877c6f665b50453b3136424d56616e7b88959285796d6053463a2d20130700000d1a2633404d596673808c99a9a79b8e8174685d52453b3136414c56616c75828f97a2a59f92867c6f675d56616e7a86929fa49a8e8174685d5245392c20150a000000000000000006131f2c3845515d677884919eabb6ac998c7f7266564c412f261c0c030000000000000000000000000000000000000009141f29333b424648504a46443f38332d27221b140b020000000613202d394653606c7885929eabb3a9988b7f7265564c4131271d0f050000000000000000000000000000000000000006111c2935414c5665727f8b98aab4aa9d918477685d5245392c201306000714202d3a46525e697885929fabac9f92867a6e61584e45403a39352f3433333236414c566673808c99a6b3ab9e928578695e53463a3737373737373737373737372f383f4446504f4b4746413c3b37322b2620180f0600000000000000000006131f2c3946525f6c7985929facada093877a6d656565656565656565656565666768666d6f73777c828990959fa4acaaa299928b7e716a60574d42362a1f160c01000000000000010d18242f3a47535f6a7683909da9afa3998c7f73665c5044382b1f14090a0a0a0a0a0a0a0a0a0a0a0a0a0a121f2b37434e5864717e8b97a2adaa9d9083776b6054443a2f2419070000000000000000020c16202935404b555e696e7b8390949fa4abaaa29f96918b86817e7b78767574737374747577787b7d8084888d92979ea1a8aba39f96918780786d675d554b4035291d11040000000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d1003000000000000000000000000000000000000000000000000000000000000000000000000000003090e1214191d2021242c3945515d67727f8b95a0abafa39992867d746d6864626160606162656360594f43382c1f130700000000000000000c1824303c48535d64686c6c6c6c6c6c6c68655d54443b3025190e0000000000000000000000000000000000000000000c18232f3943525c64676c6c6c6c6c6c6c68645d53483c3024180c000000000000000000000000000007121d273039414950555c6064676a6b6c6c6c6c6c6c66635b51463a2f22160a00131f2c3946525f6c7985929faca295887b6f6255483c2f2228313a46525e69727f8b959faba3999082776c60564c56626f7c8995a2ac9f9386796c605346392d201300000a1724313d4a5764707d8a989184786c6053464855616e7b88949e9c9083786c60595046443f3f3f40454b535c666e7b878e8a86827c6f62554846535f6976839097897d7063564a3d2f23180c0000000a1724313d4a5764707d8a989184786c6053463c313f4c5966727f8c999e9184776b5e5144505b666f7c87939f968d80736a5f544a3f3329303b46535f6976839097897d7063564a3d2f23180c00000a1723303d4a5663707d8997a1ac9f92867a6d60574d43393946525e68717e8a949ea89e938b7f726a5f55525e6874818d9aa49f92867a6d6054473d32271b0f03000000000000000714202d3a4753606d7a86939facafa49a897c6f6356493c3023140a0000000000000000000000000000000000000000030d17212931363a3b443e3937332d27221b17110a02000000000815222e3b4855616e7b8897a1adada197887b6e6255483b3022150b0000000000000000000000000000000000000000000d1924303c4855626f7b8898a2aeaca095877a6d6054473a2d2114070005111e2a36424d566976828f9caaafa3998c80736a5f58514b4745414240403f3f3f3e4a5764717d8a97a4b0a99c8f827669574d4244444444444444444444444444444444444444444444444444443b3a37312a21180e03000000000000000006131f2c3946525f6c7985929facada093877a6d605858585858585858585858595a545c6062666b6f767c838d939aa3ababa39f92867c6f695e52463e31281d13070000000000000007131d2b37434e5864717e8b97a2adab9e9184786d6053463b31251a16161616161616161616161616161616212e3a47535f6a7683909ca9aea2988b7f7265594f4332281e1308000000000000000008131e28323a45515d676e7b8491959fa6afa7a098928c847f7a75716e6969686767666767686a696e7173777b80858b91969fa2aaa9a199938c81796d675d5145392c2013060000000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d1003000000000000000000000000000000000000000000000000000000000000000000000000060c10151a1e2124292c2d30333f4a54606d7985929ea7b1a79f92877d706b615e565554535354565856544f473d32271b0f0300000000000000000e1a2734404d59646f7479797979797979756f65564d42362a1c11060000000000000000000000000000000000000004101c2934404b55646e7479797979797979746f64594d4034271a0e00000000000000000000000000040d18232e39434b535b60676d71747778797979797979726d63574b3e3225180c00131f2c3946525f6c7985929faca295887b6f6255483c2f242f3a43505a616e7b86929fa7a89f92867c6e655b504956626f7c8995a2ac9f9386796c605346392d20130004111d2935414c566874818e9a8d8073655b50444b5566737f8c99a096897d70665b50473e37332d2e3439414a545f697380827e7a766f6a5f5347424d5765727f8c988d817467554b4034291c10040004111d2935414c566874818e9a8d8073655b504437333f4c5966727f8c999e9184776b5e514c56606c7883909a9e9184796d60584e42382d212a36424d5765727f8c988d817467554b4034291c1004000713202d3a4653606d7985929eaaa2988c7f72695f554b43424f59616d7a85929ea6a1968f81756d62584e4c56616e7b87939fa2988b7f7265584e43372b1f1306000000000000000915222f3c4855626f7b889aa4afac9f93867a6d6054473a2d211407000000000000000000000000000000000000000000060f171f262a2d2e37312d2b27221b17110b060000000000000a1724303d4a5763707d8a96a9b3ab9e928578695f53473a2e2114030000000000000000000000000000000000000000000813202d394653606c7985929facb1a795897c6f6256493c2f23160900020e1925303f4b5865727e8b98a2aeab9f92867c6f6a605d5554524c4e4d4d4c4c4b4b4b5663707c8996a3afa79b8e8174685b505050505050505050505050505050505050505050505050505050504847433c332a201509000000000000000006131f2c3946525f6c7985929facada093877a6d60544c4c4c4c4c4c4c4c4c4c4c4d4a5053555960636a6f7980889299a3abaea39891857b6e615a50433a2f24180d00000000000000010f1b26323c4753606d7985929fabada1968a7d7063574d42362a23232323232323232323232323232323232934404b55626e7b88949fabac9f92867a6d6054473d3221160c0100000000000000010d1925303a44505a606d79839096a0a8b0a69e9591867f79726d6764615e575b5a5a5a5a5b5c575e6164676a6e73797e848c92989fa7aba49f938e82796d6053473a2d2014070000000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d100300000000000000000000000000000000000000000000000000000000000000000000030a11171c1f262b2e2f35393a3d4044505b66727f8b97a1adaca0958c7f736b6159524c4847464747494b4948433d352b21160a0000000000000000000e1b2835414e5b687481868686868686868175695e5246382d22170b0000000000000000000000000000000000000006131f2c3845515c677480868686868686868174685b4e4135281b0e000000000000000000000000010c161f2834404b555c656c71797d8184858686868686867f7266594c3f3326190c00131f2c3946525f6c7985929faca295887b6f6255483c2f2935414c55616c75828f98a2aca0968c80736a5f53494956626f7c8995a2ac9f9386796c605346392d2013000713202c3945525d6877849199897c6f62534945515d677683909d9e9184786c60544a3f352b272223282f38424d57636e7375716d68625f584e433b4854616e7b8797908477675c5145382c1f1306000713202c3945525d6877849199897c6f6253493f33333f4c5966727f8c999e9184776b5e53535d68717e8b959e93897d70675d51463c2f261c26313b4854616e7b8797908477675c5145382c1f13060006131f2c3845515c6773808c98a2aa9f92867b6e675d554c4a54616b75818e97a1a59e91847a6d605b514646535f697683909caa9d9083776a6054473b2e221509000000000000000b1724313e4a5764717d8a97acb6aa9e918477675d5145392c20130600000000000000000000000000000000000000000000060d141a1e21222a24201f1b17110b0600000000000000000c1926323f4c5965727f8c98a5b2a99c8f837669574d42372b1e120600000000000000000000000000000000000000000006121f2b3844505b667783909daab1a4978b7e7164584b3e3125180b00000914212d3a4754606d7a85929fa7aea29891847c726d6763605d565b5a59595858585857626f7c8995a2afa79a8d8074675d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d55534e463c31261a0f020000000000000006131f2c3946525f6c7985929facada093877a6d6054473f3f3f3f3f3f3f3f3f40403f4446494f545860676d737e879299a3aeaaa1978f82766c61554b4135291d1207000000000000000a151f2c3845515d6774808d9aa6b0a89c8f8275695e5346382e3030303030303030303030303030303030303845515c6774808d9aa6b0a79b8e8174685d5245392c201304000000000000000005111d2935414c56626d75818e959fa8b0a69e948f837b726d66605d5554534d4e4e4d4d4d4e4f4d525457585f62666d71797f8690959ea5afa59e948d8073665a4d4033271a0d0000000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d1003000000000000000000000000000000000000000000000000000000000000000003090c151c23282c31373a3b4145474a4d4e53606c7884919ea9b1a79d9083786c60594f46413c3a3a3a3b3c3e3c3b38322b23190f040000000000000000000916232f3c4956626f7c89959393939392867b6e61544a3f33281c0f030000000000000000000000000000000000000714202d3a4753606d7985929393939395897c6f6356493c3023160900000000000000000000000007131d28313a45515c676d777e848a8e909192999393938c7f7266594c3f3326190c00131f2c3946525f6c7985929faca295887b6f6255483c2f303845515d67707d8a939eaaa49a9184796d60584e414956626f7c8995a2ac9f9386796c605346392d2013000714212d3a4754606d7a87969286796d6053464753606d7a86939f998d8073655b5042382d231b17181d26303b45525c63666864615d56534e463c3a46535e697885919286796d6053473a2d201407000714212d3a4754606d7a87969286796d6053463a2d333f4c5966727f8c999e9184776b606060606d7a85929e978e81746b60554b40342a1d14212d3a46535e697885919286796d6053473a2d2014070004101c2834404b55616e7a86929fa6a2989083796d675e56515c66707d8a939ea99e938a7d70685d52493f424d5765717e8b98a3a095897c6f6256493c31261a0e020000000000000c1926323f4c5965727f8c98a5b2a99c8f837669554b4135291d1104000000000000000000000000000000000000000000000003090e1214151d1713120f0b06000000000000000000000e1b2834414e5b6774818e9aa7b3a79a8d8074675a4d4131261a0e02000000000000000000000000000000000000000000030f1c28333f4a546875818e9ba8b3a6998d8073665a4d4033271a0d00000713202c3945525d68737f8c95a0a8aaa19691867f7974706d6869686766666565656464646f7c8995a2afa6998c7f736a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a625f584e43372b1f12060000000000000006131f2c3946525f6c7985929facada093877a6d6054473a3232323232323232332e34383a3d43484e555c606c717e87929fa5afa99f948a7e71675d5145392e23180c0000000000000004101d2935404b55626e7b88949fabac9f93877b6e61544a3f3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d4753606d7985929eabaca095897c6f63564c4135291d110400000000000000000713202d3946525e68717e8b939ea7b1a79e948f82796e69605c54514b484642424140404141424246484a4e53545c60666d727b838f939ea8afa69a8d8074675a4d4134271a0e0000000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d100300000000000000000000000000000000000000000000000000000000000000050d141a1e262e34383c4247484c525457595b5563707d8996a0acab9f95897d70665b504745403a37322d2e2f32302f2c2721191007000000000000000000000915222e3b4854606a7783909daa9fa3998c7f73665b5044382b1f1409000000000000000000000000000000000006121f2b37434e5864717e8a97a29f9f9d9083776b6054483b2f2215090000000000000000000000010d18242f3a43515b606d79818b91969a9d9e9fa39f9f998c7f7266594c3f3326190c00131f2c3946525f6c7985929faca295887b6f6255483c2e38424e58606d7a84919ea6a99f93887d70675c51463c4956626f7c8995a2ac9f9386796c605346392d2013000a1623303d495663707d8996908377665c51454956626f7c8999a4978a7d706453493f2f261c0f0b0b151e2a33404a5257595b5754524c47433c3436424d576976828f99897c6f6256493c2f231609000a1623303d495663707d8996908377665c5145382c333f4c5966727f8c999e9184776d6d6d6d6d74808d979e92857a6d61594f433b322920171e2a36424d576976828f99897c6f6256493c2f23160900000c18232e3946525e68727f8b949fa89f958f82796e68615a606d7884919ea5a1978e81756b61564c41373b4754606d7a86929fa79a8d807467574d42372b1e12060000000000000d192633404c5966737f8c99a6b2a89b8e8175685b4e422f24180d010000000000000000000000000000000000000000000000000002050708110b060503000000000000000000000000101c2936434f5c6976828f9ca9b2a5998c7f7266594c3f3326190900000000000000000000000000000000000000000000000b17222d404d5a6773808d9aa6b3a89b8e8175685b4f4235281c0f000004111d2935414c56606d79839096a0a7a8a198928c85807d7a787675737372727271717171707c8995a2afa5988c7f777777777777777777777777777777777777777777777777777777777777776e6a5f53473a2e2114080000000000000006131f2c3946525f6c7985929facada093877a6d6054473a2d252525252525252623282c2d32383d434b515a616c727f8b939ea9b0a69e91847a6d60544b4034281c1004000000000000000c18242f3947535f6a7683909ca9afa4998c8073665c504949494949494949494949494949494949494949494e5864717e8b97a2adaa9d9083776b6054443a2f24190d010000000000000006121f2b37434e58616d7a85929ea5afa9a0958f82796d675f57514a45403b3a3631343433343430363a3b3e43474b51545c60696e79818f96a0aca79a8d8074675a4d4134271a0e0000000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d1003000000000000000000000000000000000000000000000000000000000000080f171f252a30383f44464d5355565d60636668696775818e9ba8b2aa9d9083776b605b5353514b47433c3731292423221f1b160f07000000000000000000000007131f2c38434e5865727e8b98a2aeab9e9184786c6053463b30251a0e00000000000000000000000000000000000814212e3a47535f6a7683909ca9aea2988b7f7265594f43382c1f1307000000000000000000000004111d2935414b55626d75818e939ea1a8aaa29f9c9998988c7f7266594c3f3326190c00131f2c3946525f6c7985929faca295887b6f6255483c343f4a54606a74808d96a1ada1978e81746b60554b403c4956626f7c8995a2ac9f9386796c605346392d2013000c1925323f4c5865727f8b988e817467544b404b5864717e8b97a398877b6e6154473b2d21140a00030c18212e3840474b4d4f4b4746413a37322a31404d596673808c988b7e7165584b3e3225180b000c1925323f4c5865727f8b988e817467544b403428333f4c5966727f8c999e9184797a7a7a7a7a7c87929f978b7e7168605b544d443b32291d1a2531404d596673808c988b7e7165584b3e3225180b000007121d2a36414c56606c78829096a1a79e948f837a716c6268727f8c96a0a69e91857a6d61594f443a303945525d6875828f9bac9e918477695f53473a2e2114080000000000000d1a2734404d5a6773808d9aa6b3a79a8d8074675a4d4134271a070000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000101d2a3643505d697683909ca9b1a4978a7e7164574b3e3124180b0000000000000000000000000000000000000000000000061926323f4c5965727f8c98a5b2a89c8f8275695c4f4236291c0f0000010d19242f3a45515c666e7b8490959fa3aaa29f97928d898784838180807f7f7e7e7e7e7d7d7f8c98a5b2ab9e9184838383838383838383838383838383838383838383838383838383838383837c6e6255483b2f2215080000000000000006131f2c3946525f6c7985929facada093877a6d6054473a2d2119191919191919171c1f20272c30394045505a626d74818e97a1adada1968c7f73665c5145382c1f14090000000000000007121d2b37434e5864717e8a97a1adab9e9184796d6056565656565656565656565656565656565656565656565f6a7683909ca9aea2988b7f7265594f4332281e130800000000000000000815212e3a47535f6a74818e97a2adada2979083796d675d554d444039352f2d2a252727272728252a2d2e31373940454b51575f676d7884919eaaa79a8d8074675a4d4134271a0e0000000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d100300000000000000000000000000000000000000000000000000000000020a121a212931363e424a5053575f6266686d70737576777986929facb1a4988b7e716e6c6564605d55534e47433c352f281f180f0a04000000000000000000000000030f1b27323d4754606d7a85929facaca1968a7d7063574d42362a1c110600000000000000000000000000000004101c2934404b55626e7b88949fabac9f92867a6d6054473d32271b0f0300000000000000000000000613202c3945515d67727f8b939ea5ada49d98928f8d8c8b8b7f7266594c3f3326190c00131f2c3946525f6c7985929faca295887b6f6255483c3844505c666f7c87939fa9a69e92857a6d60594f43393c4956626f7c8995a2ac9f9386796c605346392d2013000d1a2733404d5a6673808d998c7f7366594c404c5966727f8c999f928579695e52463a2d2014020000060f1c262e353b3f40423e3a3935302b2625323e4b5865717e8b988c7f7266594c3f3326190c000d1a2733404d5a6673808d998c7f7366594c402e23333f4c5966727f8c99a096918686868686868892999e92857c78716c665e564d443b2f261b25323e4b5865717e8b988c7f7266594c3f3326190c0000000d1925303b44505b666e7b849197a1a69e9590857e756f6d7a85929fa89f948a7e71685d52473e322935414c5664717e8a9aa4a096887b6e6255483b2f2215080000000000000e1b2734414e5a6774818d9aa7b3a69a8d8073675a4d4034271a0d0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111e2a3744515d6a7783909daab0a3968a7d7063574a3d3024170a00000000000000000000000000000000000000000000000b1825323e4b5865717e8b98a4b1a99c908376695d5043362a1d1000000008131e2834404b545e696e7b838d92999fa2a9a29e9a9696918f8e8d8c8c8b8b8b8b8a8a8a8c919ba7b4ada19691909090909090909090909090909090909090909090909090909090909090887c6f6255493c2f2216090000000000000006131f2c3946525f6c7985929facada093877a6d6054473a2d21140c0c0c0c0c060c1012131b1e272e343e47515b606d7985919ea7b1a99e9185796d6053463b31251a0e02000000000000010f1a26313c4653606d7985929eacada1968a7d70646363636363636363636363636363636363636363636363636e7b88949fabac9f92867a6d6054473d3221160c010000000000000005111d2935414c56626f7c87939fa9b0a69f92857b6e675d554b433c342e2924211e1a1b1a1a1a1b1a1e2021262b2e343940454d555c667784909daaa79a8d8074675a4d4134271a0e0000000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d1003000000000000000000000000000000000000000000000000000000020b141c242c333b424650545c6065696e73777a7d80818384869298a2aeb3a69a8d807d7b7975716d67625f58534e454039312a211a1108000000000000000000000000000a16202c3945515d6774818e9aa7b1a89b8f8275695e5246382e23170b00000000000000000000000000000006131f2c3845515c6774808d9aa6b0a79b8e8174685d5245392b21160a0000000000000000000000000714212d3a4754606d7a85929fa6ada39c928d8682807f7f7f7c6f6255493c2f22160900131f2c3946525f6c7985929faca295887b6f6255483c424d57606d78839099a4aa9e948a7e71685d52473d303c4956626f7c8995a2ac9f9386796c605346392d2013000e1b2734414e5a6774818d988b7e7265584b404d5a6773808d9a9e9185786b574d42362a1e11050000000a131c242a2f323335312e2d29241e1b24313e4a5764717d8a978d8073665a4d4033271a0d000e1b2734414e5a6774818d988b7e7265584b3f3226333f4c5966727f8c99a8a09e939393939393959fa3a1979289847e786e685e564d41382d2224313e4a5764717d8a978d8073665a4d4033271a0d00000008141e28333f4a545e696e7b8591969fa69f97918a827c76808d97a2a3998f82766c61564c41352c242f3a4754616d7a87939fa1988c7f7265594c3f3226190c0000000000000e1b2835414e5b6874818e9ba7b3a6998c807366594d4033261a0d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111e2b3844515e6b7784919eaaafa396897c706356493d3023160a00000000000000000000000000000000000000000000000b1824313e4b5764717e8a97a4b1aa9d9083776a5d5044372a1d11000000010c18232e39424d575e696e7980878e92989b9ea1a9a8a19e9c9b9a999998989897979797989ba3adb8b2a8a19e9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d95887b6e6255483b2f2215080000000000000006131f2c3946525f6c7985929facada093877a6d6054473a2d21140700000000000003060a0c151d2328353f45515d67717e8b95a0acada1978b7e7164574d42362a1e12050000000000000009151f2c3845515c6673808d9aa4afa99c8f82757070707070707070707070707070707070707070707070707074808d9aa6b0a79b8e8174685d5245392c20130400000000000000000713202d3946525e6874818e9aa4afab9f948b7e71695e554b433a3128231c1814120e090d0d0e090e1214151a1d23282e343c434b546a7784909daaa79a8d8074675a4d4134271a0e0000000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d10030000000000000000000000000000000000000000000000000000020b141c262e363e454d535a61666d71767b8084868a8c8e90919298a2aab4b5a89d928d8a8885817e7a756f6a625f58514b433c332c231a120800000000000000000000000004111d2935414b55626f7c88959fabac9f92877b6e61544a3f34281c100300000000000000000000000000000714202d3a4753606d7985929eabaca095897c6f63564c413529190f04000000000000000000000004101c2934404b5565727f8b98a2aea79c918c807a75737272726f6a5f54473b2e22150800131f2c3946525f6c7985929faca295887b6f6255483c46535f69727f8c95a0aba2988f82766c61564c41352f3c4956626f7c8995a2ac9f9386796c605346392d2013000f1b2835424e5b6875818e978a7e7164574b414d5a6774808d9a9d9184776a5e514430251a0e02000000010a12191f232626282421201d19131723303d4a5663707d89968d8174675a4e4134271b0e000f1b2835424e5b6875818e978a7e7164574b3e3126333f4c5966727f8c99a8a09393939393939393939496999e96918b827a6e685e53493f332723303d4a5663707d89968d8174675a4e4134271b0e000000020b17222d38424d575f696f7c8490949fa3a19e948f888287929fa99f92877c6e625a50443a3028232d3946525e687783909997928e8376695c504336291d100300000000000e1b2835414e5b6874818e9ba7b3a6998d8073665a4d4033271a0d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000121f2b3845525e6b7885919eabafa296897c6f6356493c3023160900000000000000000000000000000000000000000000000a1724313d4a5764707d8a97a3b0aa9e9184776b5e5144382b1e110000000007121d27303b454d575e676d747b81868b8e929796989a9b9c9d9d9d9e9e9e9e9e9f9f9f9fa4acb6c0b6aea9a79f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9fa8aaaaaaaaab94887b6e6155483b2e2215080000000000000006131f2c3946525f6c7985929facada093877a6d6054473a2d211407000000000000000000030b1218232935414b55606c7883909da9b3a99d908377695e53463a2d2114060000000000000004101c2834404b54616e7b87939facac9f93877d7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7d85929fabaca095897c6f63564c4135291d110400000000000000000714212e3a4754616d7a86929facb0a69c9082766c62574d433930281f18120d07050c111517181c1c1c1c1c1c1c181d23283144515d6a7784909daaa79a8d8074675a4d4134271a0e0000000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d100300000000000000000000000000000000000000000000000000000a141c262e38404850575e616c71787e83888d90939a999b9c9e9fa2aab4b1b2aea49d9a9797928e8b86817c756f6a605d554e463e352c241a11080000000000000000000000010d18242f3a47535f6a7683909da9afa3998c7f73665c5044382b1f14090a0a0a0a0a0a0a0a0a0a0a0a0a0a121f2b37434e5864717e8b97a2adaa9d9083776b6054443a2f24190700000000000000000000000006131f2c3845515c677683909daaaca0958c7f746d6866656565625f584e43372b1f130600131f2c3946525f6c7985929faca295887b6f62554844505a616e7b86929fa7a79f92867b6e615a50443a302f3c4956626f7c8995a2ac9f9386796c605346392d2013000f1c2935424f5c6875828f978a7d7064574a414e5a6774818d9a9d9184776a5e51442f24180d0100000000040c13181d2020201d1814120f0916232f3c4956626f7c89958e8175685b4e4235281b0f000f1c2935424f5c6875828f978a7d7064574a3d3126333f4c5966727f8c99a09689868686868686868687898d92989e948f847a6e655b5044372b232f3c4956626f7c89958e8175685b4e4235281b0f0000000006111c262f3b454d575f6a6f7a828d92999fa69e9c948f9299a3a2978d80746a5f534b454039342e2a36414c566673808d8c8985817e7064574a3d3124170a0000000000000e1b2734414e5a6774818d9aa7b3a69a8d8073675a4d4034271a0d0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000121f2b3845525e6b7884919eabafa296897c6f6356493c3023160900000000000000000000000000000000000000000000000b1724313e4a5764717d8a97a4b0aa9d9184776a5e5144372b1e1100000000000b151e29333b454d555d60696e747a7e8285888a8c8d8e8f9090919191919192929292939aa4afbbaea49d9a93939393939393939393939393939393939393939393939b9ea5afafa499877a6d6154473a2e2114070000000000000003131f2c3946525f6c7985929facada093877a6d6054473a2d21140c0c0c0c0c0c0c0c07060400071118242f3a44505b65717e8b97a2adab9f95877b6e6154483b2e23170c00000000000000000c18232e3946535f6976828f9ca9afa499938a89898989898989898989898989898989898989898989898989899297a2adaa9d9084776b6054443a2f24190d010000000000000005111e2a36424d5666727f8c98a3aeab9f94897c6f635a50453b31271e160d07000911181d212425292929292929292929292a3744515d6a7784909daaa79a8d8074675a4d4134271a0e0000000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d10030000000000000000000000000000000000000000000000000009121c262e38404a525a61696e767e848b9095999d9fa4aca8a9a8a6a5a4a4a4a5a6a8aaa6a9a19e9b98928e88827c736d675f584f473e362c231a1007000000000000000000000007131d2b37434e5864717e8b97a2adab9e9184786d6053463b31251a16161616161616161616161616161616212e3a47535f6a7683909ca9aea2988b7f7265594f4332281e13080000000000000000000000000714202d3a4753606d7986929facac9d9083786c605d5659585855544e463c32261b0f0300131f2c3946525f6c7985929faca295887b6f6255484c56616c76828f98a2aba0958c7f72695e53483e32282f3c4956626f7c8995a2ac9f9386796c605346392d2013000f1b2835424e5b6875818e978a7e7164574b404d5a6773808d9a9e9184786b554b4035291d1004000000080d161d24292c2d2c2924211f1a151723303d4a5663707d89968d8174675a4e4134271b0e000f1b2835424e5b6875818e978a7e7164574b3e3126333f4c5966727f8c999e918479797979797979797a7c808590959f969082776c6053463c3126303d4a5663707d89968d8174675a4e4134271b0e00000000000a141d29333c454e585f686d78808790959ea0a69e9c9fa3ab9f92857a6d65605c54514b443f3830303d495663707d83807c7874706c6155493c3023160a0000000000000d1a2734404d5a6773808d9aa6b3a79a8d8174675a4e4134271b090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111e2b3844515e6b7784919eaab0a396897d7063564a3d3023170a00000000000000000000000000000000000000000000000b1825313e4b5864717e8b97a4b1a99d9083766a5d5043372a1d100000000000030c172129333b434b51575f62686d7175787b7d7f808283838484848485858585858687939facb9a99d928d86868686868686868686868686868686868686868686868e939eaaac9f9386796c605346392d2013060000000000040a0f131f2c3946525f6c7985929facada093877a6d6054473a2d211919191919191919191313100c0707131d27333f4953606d7985929fabb1a7988b7e7265544a3f34281c10030000000000000007121d2a36424d5764707d8a96a1adaba49f9796969696969696969696969696969696969696969696969696969fa2a9aea2988b7f7265594f4332281e130800000000000000000714202d3a46525e697784909daab4aa9c9083766b6054483f33291f150c040009121b22292e313236363636363636363636363744515d6a7784909daaa79a8d8074675a4d4134271a0e0000000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d100300000000000000000000000000000000000000000000000006101b242e38404a525c636c717b838a91969d9fa7aaacaba39f9d9b999897979898999b9d9fa3ababaaa29f9b948f8780796e6a615950483e352c22180d0400000000000000000000010f1b26323c4753606d7985929fabada1968a7d7063574d42362a23232323232323232323232323232323232934404b55626e7b88949fabac9f92867a6d6054473d3221160c010000000000000000000000000916232f3c4956626f7c8999a3aea49a8b7e71665b524c4c4c4c4947433c342a20150a0000131f2c3946525f6c7985929faca295887b6f625548525d68717e8a949faaa4999083786d60574d42362c232f3c4956626f7c8995a2ac9f9386796c605346392d2013000e1b2734414e5a6774818d988b7f7265584c404d596673808c999f928578675d5145392c20130600000811191f282f35393a39352f2e2b26201824313e4a5764717d8a978d8073665a4d4033271a0d000e1b2734414e5a6774818d988b7f7265584c3f3226333f4c5966727f8c999e9184776c6c6c6c6c666c6d6f737b8390969f948b7e7165574d42372b313e4a5764717d8a978d8073665a4d4033271a0d0000000000020b17202a333c464e565e666d737c838b91969ea1a9acafaa9d90837d77716d66605d55504a423d353b4854606b7077736f6c656461594f44392d2014080000000000000d192633404c5966737f8c99a6b2a89b8f8275685c4f4230251a0e0200000000000000000000000000000000000000000000000000000102030000000000000000000000000000000000111e2a3744515d6a7784909daab0a3978a7d7064574a3d3124170a00000000000000000000000000000000000000000000000c1825323f4b5865727e8b98a5b1a99c8f8276695c504336291d100000000000040d161e2429313940454d53565d606468696e707274757676777777787878787879797c8995a2afa79a8d807979797979797979797979797979797979797979797979818e9ba8ab9e928578665b5044382b1f120600000000070e151b1f222c3946525f6c7985929facada093877a6d6054473a2d26262626262626262626201f1c18120b0b17222d3845515d6774818e9aabb5a89c8f8275665c5044382c1f120600000000000000000e1a26313b4653606d7984919eabb5afaca3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3abadb3ac9f92867a6d6054473d3221160c0100000000000000000814212e3b4754616e7b8795a0acaea2988a7e7164594f44362d21170d030006111b242d343a3d3e43434343434343434343434344515d6a7784909daaa79a8d8074675a4d4134271a0e0000000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d10030000000000000000000000000000000000000000000000030c18222d36404a525c646e737e8590949da0a8abaaa29f9b9992908e8c8b8b8a8b8b8c8e9092999a9ea1a9aca69e99928d837c706b615a50473e342a1f160c01000000000000000000000a151f2c3845515d6774808d9aa6b0a89c8f8275695e5346382e3030303030303030303030303030303030303845515c6774808d9aa6b0a79b8e8174685d5245392c201304000000000000000000000000000a1724313d4a5764707d8a97abac9f93867a6d61544a413f3f3f3c3b37322a22190e040000131f2c3946525f6c7985929faca295887b6f62554f59606d7a85929ea6a89f93877c6f665c50453b3124232f3c4956626f7c8995a2ac9f9386796c605346392d2013000d1a2733404d5a6673808d998c7f7366594c404b5865727e8b989f93867a6d6053473a2d20140900030d19232b313a40454745403b3a37312a2125323e4b5865717e8b988c7f7266594c3f3326190c000d1a2733404d5a6673808d998c7f7366594c402e23333f4c5966727f8c999e9184776b606060605b606163696e7a84919e9d908377695f53463a2d323e4b5865717e8b988c7f7266594c3f3326190c000000000000050e18212a343c444c545c606a6f787e848b9297a1adb8aca0959089837e79726d67605c544f45403a444f5960636a6662605b53554f473e33281c10040000000000000b1825313e4b5864717e8b97a4b1a99d9083766a574d42362a1e1105000000000000000000000000000000000000000000000003080c0e0e0f0b07070401000000000000000000000000101d2a3643505d697683909ca9b1a5988b7e7265584b3f3225180700000000000000000000000000000000000000000000000d1a2633404d596673808c99a6b3a89b8f8275685c4f4235291c0f00000000010c161f282f35393a3e3f42474c525458575f6163656768696a6a6a6b6b6b6b6b6c6c6f7c8995a2afa89b8e82756c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c7783909daaa99d9083766a544a3f33281c0f0300000007101920262b2e2f3946525f6c7985929facada093877a6d6054473a33333333333333333333332d2c28231d150c111b2935404b5564717d8a99a3afac9f9285796d6053463a2d201307000000000000000009141f2c3844505c6673808c99a3afbbb9b1acaa9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9fa7a9afb8bab1a79b8e8174685d5245392c2013040000000000000000000b1825323e4b5865717e8b98a7b1ac9f9285796d6053473d32201b0f0500010c18222d363f454a4b4f4f4f4f4f4f4f4f4f4f4f4f4f515d6a7784909daaa79a8d8074675a4d4134271a0e0000000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d100300000000000000000000000000000000000000000000000b151e2a343f48525c646e73808a92979fa6aca9a29f98928e8a868381807f7e7e7e7f80818386898d92979ea0a8aba39f9591867d716c61594f463c31281e13080000000000000000000004101d2935404b55626e7b88949fabac9f93877b6e61544a3f3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d4753606d7985929eabaca095897c6f63564c4135291d1104000000000000000000000000000b1825313e4b5864717e8b97a4ab9e918478685e5242382f32322f2e2b2620191007000000131f2c3946525f6c7985929faca295887b6f625554606b74818e97a1ada1968d80746a60544a3f33291f232f3c4956626f7c8995a2ac9f9386796c605346392d2013000c1925323f4c5865727f8b988e817468554b404a5663707d8996a49a897c6f6356493c30251a0e090c151f2b353d434b5153514b4847433c332f2633404d596673808c988b7e7165584b3e3225180b000c1925323f4c5865727f8b988e817468554b403428333f4c5966727f8c999e9184776b5e53534a505354565e68727e8b9aa095887b6e6155483b2e33404d596673808c988b7e7165584b3e3225180b00000000000000060f18222a323a424b51585f666c71787e85929eabadaba7a09d95908b847f79726d666059514b433d474f54565d595653504949443e352c21170b000000000000000a1723303d4a5663707d8996aab4ab9f928578695e52463a2d20140700000000000000000000000000000000000000000001090f14181a1b1c181413110d0805010000000000000000000f1c2835424f5b6875818e9ba8b3a6998c807366594d402f23180c00000000000000000000000000000000000000000000010e1b2834414e5b6774818e9aa7b4a79a8e8174675b4e4134281b0e0000000008131e28313a4145474b4c4d4e4f5052504d535557595a5b5c5d5d5e5e5e5e5e5f5f626f7c8995a2afa99c908376655b60606060606060606060606060606060605e697885929faba79b8e8174685b4e412d22170b000000040e19222a32373b3c3f46525f6c7985929facada093877a6d6054473f3f3f3f3f3f3f3f3f3f3f3f3a38342e271e150c18242f3a4754606d7a86929facaea298887b6e6255483b2f221508000000000000000003101c28343f4a54616e7b87929facb9b1a7a0939393939393939393939393939393939393939393939b9ea5afb8aca095897c6f63564c4135291d1104000000000000000004101d2935404b556875828e9ba8b5a89b8f8275675d5145392c1f1309000005111d29343f485056585c5c5c5c5c5c5c5c5c5c5c5c5c5c5d6a7784909daaa79a8d8074675a4d4134271a0e0000000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d10030000000000000000000000000000000000000000000007121d27303c46505a646e73808d929fa2a9aea59e97928c86817d7a77757372717171727375777a7d81858b91969fa3aba7a09892877e716b61584e433a2f24190c03000000000000000000000c18242f3947535f6a7683909ca9afa4998c8073665c504949494949494949494949494949494949494949494e5864717e8b97a2adaa9d9083776b6054443a2f24190d01000000000000000000000000000c1925323f4c5865727f8b98a5a99c8f827669564c412f26252522221f1b150e0700000000131f2c3946525f6c7985929faca295887b6f62555c666f7d88939fa9a59e9184796d60584e42382e2117232f3c4956626f7c8995a2ac9f9386796c605346392d2013000a1623303d495663707d8996908377675c51454754616e7a8796a1988b7f7265574d42362a201a19191e27313d474f555d605d5555534e4641382a36424d576976828f99897c6f6256493c2f231609000a1623303d495663707d8996908377675c5145382c333f4c5966727f8c999e9184776b5e51463f4446474d56616d7a87939f978a7e7164574b3e3136424d576976828f99897c6f6256493c2f23160900000000000000000610182029303940454e545b60666d7a85929fa9a19e989ea0a09d97918c857f78706b605d554e463d444849514d4946443f3839332c231a1005000000000000000815222e3b4855616e7b8898a2aeada297877b6e6154473b2e21140a0000000000000000000000000000000000000000030b131a20242728292521201d1913110d0802000000000000000d1a2734404d5a6773808d9aa6b3a89b8e817568554b4034291c100400000000000000000000000000000000000000000005121e2a36424d576976838f9ca9b2a5988c7f7265594c3f3226190c000000010d19242f3a434c525457595a5b5c5d5e5d5a54484a4c4d4f5050515151515252525663707d8996a3b0ab9e9285796c605353535353535353535353535353535354616e7b8798a2aeaa988c7f7265594c3f322619060000000a15202a343c4347494c4c525f6c7985929facada093877a6d60544c4c4c4c4c4c4c4c4c4c4c4c4c4645403930271d1213202c3945525d687783909daab4aa978a7d7064574a3d3124170a0000000000000000000c17232e3846525e6975828f9ca8b2aca095898686868686868686868686868686868686868686868e939ea9b4aa9d9084776b6054443a2f24190d01000000000000000006131f2c3845515d677884919eabb5ab988b7e7265554b4035291d100400000915212e3a45505a62656969696969696969696969696969696a7784909daaa79a8d8074675a4d4134271a0e0000000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d1003000000000000000000000000000000000000000000000c18232e39434e58626c73808d929ca4adaaa39f938e857f7a75706d67686665646465656668676d7074797e848c9299a1a9aaa29992877d706a5f554c4135291e150a0000000000000000000007121d2b37434e5864717e8a97a1adab9e9184796d6056565656565656565656565656565656565656565656565f6a7683909ca9aea2988b7f7265594f4332281e130800000000000000000000000000000c1925323f4c5865727f8b98a5a89b8e8275685b4f42302814191615130f0a040000000000131f2c3946525f6c7985929faca295887b6f6257606d7984919aa4a99e938a7d70675d51463c30261c16232f3c4956626f7c8995a2ac9f9386796c605346392d2013000714212d3a4754606d7a87969286796d60534646525e687884919e9c8f8275695e52463c332a262524293039434f5960676d6765625f58534a41363a46535f697885919286796d6053473a2d201407000714212d3a4754606d7a87969286796d6053463a2d333f4c5966727f8c999e9184776b5e51443338393b46525d687784919e998c7f7366594c40333a46535f697885919286796d6053473a2d201407000000000000000000060e171e272e343c424a505b66727f8c98a2a197918c91969d9fa19e97918b837d746d675f584f473d3b3d44403c3937332d2d28211a110800000000000000000613202d394653606c7985929facb3a9968a7d7063574a3d31261b0f01000000000000000000000000000000000000000b151d252b30343536312d2c2924201d19130c070100000000000c1925323f4c5865727f8b98abb5aa9d908477675c5145382c1f13060000000000000000000000000000000000000000000714212d3a46535f697885929fabb4aa968a7d7063574a3d3024170a00000004111d2935414c565d6064656668696a6b69665e54423f414243434444444545454a5764717d8a97a4b0ada297887b6f625548464646464646464646464646414c5665717e8b98aaaea298897c6f6256493c2f2316090000030f1b26323c464e54555959595f6c7985929facada093877a6d60595959595959595959595959595953514b43392e2318111d2935414c566875818e9ba8b2a5998c7f7266594c3f3326190c00000000000000000006111c2a36424d5763707d8a96a1acaa9d9083797979797979797979797979797979797979797979818e9ba7aea2988b7f7265594f4332281e13080000000000000000000714202d3a4753606d7986939facaea399887b6f6255483c2f24180c0000000b1724313d4a56626c71767676767676767676767676767676767784909daaa79a8d8074675a4d4134271a0e0000000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d100300000000000000000000000000000000000000000004101c2834404b555f6a717e8b929da4aeaaa298928b817a736d6863605d5559585857585859555d6063676d717980879197a0a8aba39992867c6f675d51453d30261c1106000000000000000000010f1a26313c4653606d7985929eacada1968a7d70646363636363636363636363636363636363636363636363636e7b88949fabac9f92867a6d6054473d3221160c0100000000000000000000000000000c1925323f4c5865727f8b98a5a79b8e8174685b4e4135281b0e0908060300000000000000131f2c3946525f6c7985929faca195887b6e625f69737f8c95a0aca2978e81756b61554b40342b1e1516232f3c4956626f7c8995a2ac9f9386796c605346392d2013000713202c3945525d6877849199897c6f635349414d566774818e9a9f92877b6e61584e453c3631322f353a424b55606b707a76726e6a645c53483c3b4855616e7b8897908477675c5145382c1f1306000713202c3945525d6877849199897c6f6353493f33333f4c5966727f8c999e9184776b5e5144382e2e35414c566a7683909d9a8d8073675a4d40343b4855616e7b8897908477675c5145382c1f130600000000000000000000050c151d23282f394653606c7884919eaa9e91857f848a90959c9fa19e95918981796e6a60594f463c3237332f2d2b27221b1c17100800000000000000000006121f2b3844505b667683909ca9b3a79a8d807467584e43372b1e1308000000000000000000000000000000000000060f1d272f373c4041423e3a39352f2d29251e18120b0300000000091623303c4956636f7c8999a4afac9f9286796d6053473a2d22170b0000000000000000000000000000000000000000000815222e3b4855616e7b8897a2adaea298887b6e6155483b2e2215080000000613202c3945525d686d71727374757778767066544b403435363737373838383f4b5865727e8b98a5b1b3a9988b7f7265594f42392e393939393939392d3945525d6875828e9ba8ac9f9285796d6053463a2d201307000006131f2b37434e585f62666666666c7985929facada093877a6d666666666666666666666666666666605c554b4034281c1019242f404d596673808c99a6b3a79b8e8174685b4e4135281b0e000000000000000000000e1a25303b4653606c7884919eabaca095897c6f6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6d7a86929facac9f92867a6d6054473d3221160c010000000000000000000916222f3c4955626f7c889aa4afac9f9286796d6053463a2d2013070000000b1825323e4b5865717e828282828282828282828282828282828286929faca79a8d8074675a4d4134271a0e0000000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d100300000000000000000000000000000000000000000006131f2c3845515c676f7c86929fa4aeaaa29892867e756d68605d5654514b4d4c4b4b4b4c4d4b5153555c60676d737d859196a0a8aba29891847a6d60594f42382e23170c0000000000000000000009151f2c3845515c6673808d9aa4afa99c8f82757070707070707070707070707070707070707070707070707074808d9aa6b0a79b8e8174685d5245392c2013040000000000000000000000000000000c1925323f4c5865727f8b98a5a79b8e8174685b4e4135281b0e0200000000000000000000131f2c3946525f6c7985929faca194887b6e61626e7b86929fa8a69f92857b6e61594f433a2f22190c16232f3c4956626f7c8995a2ac9f9386796c605346392d20130004111d2935414c566875818e9a8d8074655b5044495663707d8996a0998d80736a5f574e4642403f3f41454c545d67707d86837f7b746e64584c40424d5765727f8c988e817467554b4034291c10040004111d2935414c566875818e9a8d8074655b504437333f4c5966727f8c999e9184776b5e51443b3b3b3c44505c667783909d998d8073665a4d4037424d5765727f8c988e817467554b4034291c10040000000000000000000000030b121b27333f4953636f7c8996a1a3998c7f73787d83898f949da0a09d938e847c706b60584e443b302523201f1b1711100b0500000000000000000000030f1c28333f4a546774808d9aaab4aa9d9184776a5f53473a2f24190b0200000000000000000000000000000000030e18212f3941484d4e4f4b4745413a39353029241d150d030000000714202d3a4753606d7a86939facaea399897d706353493f33271b0f030000000000000000000000000000000000000004111d2935414c5565717e8b98a9b3ac9f9285786d6053463a2d2013070000000714212d3a4754606d7a7e7f80818283858276665c5145382f2c2924262a2d37434e586774818e9aa7b4b7aa9d9083776b60544b40352f2b2623282b2f38414c56606d7a85929faca99b8e8275665c5144382c1f120600000815222e3b47545f6a6f72727272727985929facada093877a727272727272727272727272727272726d675c5145382c1f131824313e4b5764717e8a97a4b1a89c8f8275695c4f4236291c0f0000000000000000000009141f2b3844505b66727f8c99a3aea79a8d8174675c606060606060606060606060605765717e8b98a2aea79b8e8174685d5245392c201304000000000000000000000b1824313e4b5764717e8a97acb6aa9d908477665c5144382c1f12060000010d1a2734404d5a6773808d8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f9298a2aea79a8d8074675a4d4134271a0e0000000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d1003000000000000000000000000000000000000000004111d2935414c56606d79839198a2aeaea39892867d716c615e56524c474541403f3e3e3e3f404045474b51555c606b6f7b849196a1abaaa0968e81746b60544a3f34281c110600000000000000000004101c2834404b54616e7b87939facac9f93877d7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7d85929fabaca095897c6f63564c4135291d11040000000000000000000000000000000c1925323f4c5865727f8b98a5a79b8e8174685b4e4135281b0e0200000000000000000000131f2c3946525f6c7985929faca194877a6e616c76828f98a3ab9f948b7e72685e52473e31281d100916232f3c4956626f7c8995a2ac9f9386796c605346392d201300010d19242f3d4a5764707d8a989184786c6053464653606c7884919e9f92877c6f695f58534d4d4c4c4c51565d666d7983918f8c888174675a4e4147535f6977839097897d7063564a3d2f23180c0000010d19242f3d4a5764707d8a989184786c6053463c323f4c5966727f8c999e9184776b5e5148484848494e56606d7985929f988b7f7265584c3f3a47535f6977839097897d7063564a3d2f23180c0000000000000000000000000005121f2b3744505b6574808d9aa89f92867a6e6c70767c828991959fa39d9691867d706a5f564c41362a2113120f0b0600000000000000000000000000000b17222d3d4a5763707d8a98a2aeaca095887c6f62564c4135291d140a000000000000000000000000000000000915202a33414b53595b5c5854524c4746413a352f271f150b0100000613202c3945515d677784909daab4ab9a8d8073655b5044372b1f140a000000000000000000000000000000000000010c13202c3945515d6775828e9ba8b5a89c8f8275665c5044382b1f12060000000714212d3a4754606d7a878c8d8e8f909186796d60544a403a39352f31363a3f47535f6a7783909daab6b8aca095897d70665c5145413a37312e34383b424a525e68727f8c98a2ada1978a7d7164544a4034281c100400000916222f3c4955626f7c7f7f7f7f7f7f86929facb3a6998c807f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f796d6053463a2d20131724303d4a5763707d8a96a3b0a99c908376695d5043362a1d1000000000000000000000030f1c28333f4a54616e7a86929facab9f9285796d60535353535353535353535353535f697683909caaaca095897c6f63564c4135291d1104000000000000000000000c1926333f4c5966727f8c99a5b2a99c8f827669544a4034281c10040000010d1a2734404d5a6773808d9a9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9fa2aab4a79a8d8074675a4d4134271a0e0000000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d100300000000000000000000000000000000000000000713202c3945525d68727f8c95a0aaafa59f92867d706b625a524c45413a39352f32313132322f35383a40454b515960696e7b849199a3aea89e93897d70665c5044382d22170b000000000000000000000c18232e3946535f6976828f9ca9afa499938a89898989898989898989898989898989898989898989898989899297a2adaa9d9084776b6054443a2f24190d010000000000000000000000000000000c1925323f4c5865727f8b98a5a79b8e8174685b4e4135281b0e0200000000000000000000131f2c3946525f6c7985929faca094877a6d68717e8b949faaa3999083776c60564d41352c1f160c0916232f3c4956626f7c8995a2ac9f9386796c605346392d201300000813202d3a4653606d79859296897c7063584e44505b66717e8b959f9991847b6f6a615f57595859555d60686d78818e959c93877c6f625548424d57616e7b88959285796d6053463a2d2013070000000813202d3a4653606d79859296897c7063584e43373f4c5966727f8c999e9184776b5e545454545556585f68707d8a98a298897d7063564a3d424d57616e7b88959285796d6053463a2d201307000000000000000000000000000613202d394653606c7884919eac9b8f82756860646b6f767d838c9299a2a09892867c6f685e52463d32271b1003000000000000000000000000000000000614202d3a4753606d7985929facb1a79a8d8073685d52453b2f261b1106000000000000000000000000000006101a26313c45535d64686964605d5654524c45403931271d1207000004101d2935404b556773808d9aa9b3ab9e9184786c6053463c2f261b1106000000000000000000000000000000000007131d28333f4a54606d7a86929facb1a7988b7f7265544a3f34281c10030000000613202c3945515d67778390999b9c9d988a7d71665b514b4745404343424648505a626f7b8895a0acb8bcb1a79d9083796d605b524c464242413f44464d545b616d7a85919eaaa99e9184796d6053463a2e23180c0000000c1925323f4c5865727f8b8c8c8c8c8c9299a3aeb4a89c928c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c877a6d6054473a2d21141623303d495663707c8996a3afaa9d9083776a5d5044372a1d1100000000000000000000000b17222d3846525e6875828e9ba8ada2978a7e7164574d42464646464646463f4a54626e7b88949fabaa9d9084776b6054443a2f24190d01000000000000000000000d1a2633404d596673808c99a6b3a79a8e8174675b4e412e23180c000000010d1a2734404d5a6773808d9aa6a9a9a9a9a9a9a9a9a9a9a9a9a9a9acaeb4aca79a8d8074675a4d4134271a0e0000000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d10030000000000000000000000000000000000000004111d2935404b55606d7a85929fa7b1a99d938b7e716b60595046413a352f2c2924252524252524292c2e343940454f575e696f7c87929fa7afa59d9183786d60544a3f33281c0f0300000000000000000007121d2a36424d5764707d8a96a1adaba49f9796969696969696969696969696969696969696969696969696969fa2a9aea2988b7f7265594f4332281e1308000000000000000000000000000000000c1925323f4c5865727f8b98a5a79b8e8174685b4e4135281b0e0200000000000000000000131f2c3946525f6c7985929faca093867a6d6d7a85929ea6a89f92867c6e655b50443b30231a0d040916232f3c4956626f7c8995a2ac9f9386796c605346392d2013000006131f2c3845515c6775818e9b8f82756a6054474a54606c78839098a09691847c746e696766656567676d727a828e939e958d80746a5f534746535e6974818e9a8e8174665c5044382c1f120600000006131f2c3845515c6775818e9b8f82756a6054473e3f4c5966727f8c999e9184776b61616161616162656a6f7a84919e9f9285796d6053463a46535e6974818e9a8e8174665c5044382c1f1206000000000000000000000000000815222f3b4855626e7b8896a1a49a8b7e7164565960636b70787f879297a2a29891847a6e61594f44382c1e13080000000000000000000000000000000006131f2c3845515c6775828f9ba8b2ab9f92857a6d60574d41382d2217110a020000000000000000000001081018222b37424e57646f7475716d6865615e56514b43392f24180c0000010d18242f3d495663707c8997a1adaca196897d7063584e41382d22170f06000000000000000000000000000000071118242f3844505b66717e8b98a2aeaca095887b6e6155483b2e23170b0000000004111d2935414c556673808d99a3a8aa9d9083786c605d5553514b50504d53555a626c74818e9aa7b1b6b4b6aca0958d80736d605d56534d4e4e4a5053575e666c75828f97a1ada1978c7f73665c5145382c1c12070000000c1925323f4c5865727f8b98999999999fa3abb4b9ada49c99999999999999999999999999999993877a6d6054473a2d211416222f3c4955626f7c8895a2afaa9e9184776b5e5144382b1e11000000000000000000000006111c2a36414c5663707d8996a0aca99c8f8276695e5246382d393939393844505c6673808d99a6aea2988b7f7265594f4332281e130800000000000000000000000e1a2734414d5a6774808d9aa7b3a69a8d8073675a4d4034271a07000000010d1a2734404d5a6773808d9a9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9a8d8074675a4d4134271a0e0000000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d1003000000000000000000000000000000000000000613202c3945515d6773808d97a2adada1978e81746c61594f473e36302924201d181918181819181d1f23282f343d454d57606a727f8c95a0acaca0958b7e71665b5044382b1f1308000000000000000000000e1a26313b4653606d7984919eabb5afaca3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3abadb3ac9f92867a6d6054473d3221160c01000000000000000000000000000000000c1925323f4c5865727f8b98a5a79b8e8174685b4e4135281b0e0200000000000000000000131f2c3946525f6c7985929faca39986796d75818e97a2aca0968c80736a5f53493f32291f1108000916232f3c4956626f7c8995a2ac9f9386796c605346392d2013000004101c2834404b55636f7c899494887c6f62594f44505b666e7b869298a0969187807b777473727273767a7f858f939e969083796d60584e434e58616e7b869294897c6f62544a3f34281c100300000004101c2834404b55636f7c899494887c6f62594f443f4c5966727f8c999e9184776e6e6e6e6e6e6e6f72757c839096a0978d8074665c5145434e58616e7b869294897c6f62544a3f34281c1003000000000000000000000000000b1825323e4b5865717e8b98a89f93877a6d61544f545960666d737d859297a2a1968f82756b6054483a2f24190d0100000000000000000000000000000004101c2934404b5563707d8a96a1acaea2988c7f73695e53493f3327221b140b090603000001000205080d1319222a343c47535f6a7481827e7a76716d68605d554b4035291d100400000713202d3a4653606d7985929eacb2a89c8f82756a5f53493f332721180f0802000000000000000000000003091119232935404b55606c7884919daab3a99d908477695f53463a2d1c110600000000010d19242f3b4854616e7b86929fa9ab9f958c7f736d6762605d555d5d575f61656d717e8a939da9afa9a7a9aba79c928c7f746d68615f575b5b545c6062696e78808d949ea9a59e9184796d60544b4034281c0b000000000c1925323f4c5865727f8b98a5a5a5a5acaeb4bdbfb6ada8a6a5a5a5a5a5a5a5a5a5a5a5a5a5a093877a6d6054473a2d211416222f3c4955626f7c8895a2afab9e9184786b5e5145382b1e120000000000000000000000000d1925303b4854606b7784919daaac9f93877b6e6153493f33272d2d2d3a4653606d7984919eabac9f92867a6d6054473d3221160c0100000000000000000000000e1b2834414e5b6774818e9aa7b3a6998c807366594d4033261a0d000000010d1a2734404d5a6773808d939393939393939393939393939393939393939393938d8074675a4d4134271a0e0000000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d1003000000000000000000000000000000000000000714202d3a4753606d7a85929fa9b2a89e91857a6d605a50473d352a251e1913110d070b0b0b070c1013181d2329333b454e58606d7883909da7b1a79e9184786c6053463a3024190d0100000000000000000009141f2c3844505c6673808c99a3afbbb9b1acaa9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9fa7a9afb8bab1a79b8e8174685d5245392c20130400000000000000000000000000000000000c1925323f4c5865727f8b98a5a79b8e8174685b4e4135281b0e0200000000000000000000131f2c3946525f6c7985929fac9f928679707d89939ea9a59d9184796d60584e41382d20170d00000916232f3c4956626f7c8995a2ac9f9386796c605346392d20130000000c18232e394854606b76828f9c8f82756c61564c4a545f69707d8692979f99928d888481807f7f8082868b91979e9691847b6e675c51464b55606a74818d998f82766a605442382e23170c00000000000c18232e394854606b76828f9c8f82756c61564c414c5966727f8c999e91847b7b7b7b7b7b7b7b7c7e82879095a09892857a6d61544b404b55606a74818d998f82766a605442382e23170c00000000000000000000000000010e1b2834414e5b6774818e9aa79e918477685e5246484f545c606b707c85929fa59e93897d7063564c4135291d1104000000000000000000000000000000000c18232f394653606c7884919ea8b2aa9f92867b6e655b50443e332d261d1a1312100b060e090e1214191e2429343c46505a626e7b878f8b86827e7a766d675d5145392c1f1306000006121f2c3844505c6673808d9aa4afaa9e94887c6f655b50443d332a2219140e09060400000100000406090e141a232b353d45515d67717e8a95a0acada2978b7e7265574d42362a1e0a0000000000000814212d3a46535e6974818e97a1aba79c918c8079736f6d676a6a6a6a696e71777e87929fa5afa59d9b9c9fa6a49c918c807a726e6969686768666d6f747b828d929da6a69e938a7e71675d5142392e23180c000000000c1925323f4c5865727f8b989f9f9f9fa0aeb4bcb9b0a8a2a09f9f9f9f9f9f9f9f9f9f9f9f9f9f93877a6d6054473a2d211416232f3c4956626f7c8995a2afaa9d9184776a5e5144372b1e1100000000000000000000000008141e2c38444f5965727f8c98a3aea4998c7f73655b5044372b1f2a36414c5663707d8a97a1ada79b8e8174685d5245392c2013040000000000000000000000000f1c2835424f5b6875818e9ba8b2a5998c7f7266594c3f3326190c000000010d1a2734404d5a6773808686868686868686868686868686868686868686868686868074675a4d4134271a0e0000000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d100300000000000000000000000000000000000006121e2b37424d5765717e8b98a2aeaca0968b7e71685d52483e352b2319130d08040100000000000004070c12182129333d44505c66707d89959fabaca0968a7d7064564c4135291d110400000000000000000003101c28343f4a54616e7b87929facb9b1a7a0939393939393939393939393939393939393939393939b9ea5afb8aca095897c6f63564c4135291d110400000000000000000000000000000000000c1925323f4c5865727f8b98a5a79b8e8174685b4e4135281b0e0200000000000000000000131f2c3946525f6c7985929fac9f9285797984919ea5a99d93897d70675c51463c2f261b0e0500000916232f3c4956626f7c8995a2ac9f9386796c605346392d201300000007121d2c38434f5963707d8994948a7d70685d52454d57606b707d858f949c9f9a95918e8c8b8c8d8f92989e9c938e847b6e695f554b45515c676f7c879394897c6f63584e4330261c1106000000000007121d2c38434f5963707d8994948a7d70685d52454c5966727f8c99a196918787878787878788898b8f93999e9691867d6f685d524245515c676f7c879394897c6f63584e4330261c11060000000000000000000000000004111d2a3744505d6a7783909da89b8e827568564c413d424a5159606a707d8a939ea69c8f8276685d5245392c2013070000000000000000000000000000000007121f2b3844505b66727f8b96a1acaea2988f82776c605a50443f382f2b26201f1c171b1a1b1a1e2124292f353e464e58626c75828f9999928f8b8682796d6053473a2d201407000003101c28343f4a54616e7b87939fabb0a69c9083776c60584e453c342a251e1a1312100c070e070c1013131a1f262a353d47505a606d7984919ea7b1a99f9285796d6053473b31261a0e00000000000005121e2a36424d57616e7b859299a3aba39c928d84807c7a7877767677787b7e838b9299a3aea69d938e90949fa6a39c928d857f7b777675747576797c80868f949da4a69f948e81746c61554b4030271d1207000000000c1925323f4c5865727f8b939393939393a2aab4b3a89e9693939393939393939393939393939393877a6d6054473a2d21141623303d495663707c8996a3afaa9d9083776a5d5044372a1d1100000000000000000000000002101c27333d4754616d7a86929facab9e9184786c6053463a2f242d3946525e6875828f9ba9aca095897c6f63564c4135291d11040000000000000000000000000f1b2835424e5b6875818e9ba8b2a6998c7f7366594c403326190d000000000d1926333f4c58646e73797979797979797979797979797979797979797979797979746e64584c3f33261a0d0000000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d10030000000000000000000000000000000000000814212e3a47535f697683909daab4aa9e9184786d60564c41362d2319110802000000000000000000000001070f172128343f4a54606b7783909daab2a89b8f8275685d5245392c201307000000000000000000000c17232e3846525e6975828f9ca8b2aca095898686868686868686868686868686868686868686868e939ea9b4aa9d9084776b6054443a2f24190d0100000000000000000000000000000000000c1925323f4c5865727f8b98a5a79b8e8174685b4e4135281b0e0200000000000000000000131f2c3946525f6c7985929fab9e918578808d96a0aca1978e81746b60554b40342a1d140a0000000916232f3c4956626f7c8995a2ac9f9386796c605346392d2013000000000f1b27323d4854606b7682909991847a6d605b51484f59606b707b828a8f939a9a9d9a9998989a9c9a99928f8981796e695f574d47505a606d798491988f82766b6054463d321e150a000000000000000f1b27323d4854606b7682909991847a6d605b514c5966727f8c99a8a19e949494949494949495989c9a97928d847d6f6b60564c47505a606d798491988f82766b6054463d321e150a000000000000000000000000000004101d2935404b556b7885919ea6998c807366594d40303940444f58616b75818e9ba99f92867a6d6054473a2d21140700000000000000000000000000000000030f1c28333f4a54606d7984919ea6b0aa9e948c7f726c615a5049413c37312d2b2823272728252a2d2f353a41454f585f6a717e8b939ea39f9c998f8275675d5145392c1f13060000000c17232e3846535f6975828e99a3afab9f948b7f726a60574e463e36302a25201f1c181b1a1b181c1f20262b31363f474f59616c74808d96a1adada2978d8073675d5145392a1f1409000000000000020e1a25313b46525e69707d879299a1a9a49c96918d8986858483838485888b90959fa3aba59d948e818390949da5a49d97928c8884828181828385898d92989ea6a49f948f82796d605a5043392f1e150b00000000000c1925323f4c5865727f8686868686868998a2aeafa2968c87868686868686868686868686868686867a6d6054473a2d21141824313e4b5764717e8a97a4b1a99c8f8376695c504336291d10000000000000000000000000000b16202d3946525d6875818e9ba7aca096897c7063554b4135292e3a4754616d7a86929facaa9d9084776b6054443a2f24190d010000000000000000000000000e1b2834414e5b6774818e9aa7b3a6998d8073665a4d4033271a0d000000000b17232f3b47525c64676c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c67645c52473c3023170b0000000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d10030000000000000000000000000000000000000815222f3b4855626e7b88959fabaea3988b7e72665c50443a2f241b1107000000000000000000000000000000050f17232e38424f5964717e8a98a2aeac9f92867a6d6054473a2d2114080000000000000000000006111c2a36424d5763707d8a96a1acaa9d9083797979797979797979797979797979797979797979818e9ba7aea2988b7f7265594f4332281e13080000000000000000000000000000000000000c1925323f4c5865727f8b98a5a79b8e8174685b4e4135281b0e0200000000000000000000131f2c3946525f6c7985929faa9d91847b87929fa8a69e92857a6d61594f43392e22180b020000000916232f3c4956626f7c8995a2ac9f9386796c605346392d2013000000000a16212c38444f59626f7c8692978e81746d625a50474f5960696e767d83878b8e909192929291908e8b86827c756d675f574d474f59626c73808d9592867c6e62594f44342b200c03000000000000000a16212c38444f59626f7c8692978e81746d625a505966727f8c9393939393939393939399929291908d8a8580796f6b60594f474f59626c73808d9592867c6e62594f44342b200c03000000000000000000000000000006131f2c3945515d677986929fa5988b7f7265584c3f322e343d464f59626f7c8997a2a3998a7d7164574a3e3124170b00000000000000000000000000000000000b17222d3845515c67717e8b949ea9b0a69f92877e716c605b534d47423c3a38342e34343531363a3b41454c5159616a6f7c86929fa5aea99f93877c6f62554b4035291d100400000006111c2a36424d57626e7b87929fa8b0a69f92877c6f695f585046413b36312d2c282327272723282c2d31373b42465159606b717e8a929da8b1a79f92857a6d61554b4035291d10040000000000000009141f2a36424d57606b717e8792979fa2a8a19e999a9391909090919297989da0a7a8a19e938e82797a828e939da0a8a19e9996918f8e8e8f9092989a9fa3a7a09a938d82796d675d51483e31281d0c0300000000000b1824313e4a56626d7279797979797986929facada093877a7979797979797979797979797979797976685d5245392c20131926333f4c5966727f8c99a5b2a79b8e8174685b4e4135281b0e0000000000000000000000000005111d2935414c56636f7c8995a0aca89b8e8174675d5145392c37434e5865727f8b99a3aea2988b7f7265594f4332281e1308000000000000000000000000000e1b2734414e5a6774818d9aa7b3a79a8d8074675a4d4134271a080000000007131f2b36404a52585a6060606060606060606060606060606060606060606060605a58524a40362b1f13070000000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d10030000000000000000000000000000000000030f1c28333f4a5465727f8b98a7b1ac9f92867a6d60544a3f32281e1209000000000000000000000000000000000006111c26303d4753606d7a85929facaea3998b7e7164584b3e3025190e02000000000000000000000e1a25303b4653606c7884919eabaca095897c6f6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6d7a86929facac9f92867a6d6054473d3221160c010000000000000000000000000000000000000c1925323f4c5865727f8b98a5a79b8e8174685b4e4135281b0e0200000000000000000000131f2c3946525f6c7985929faa9d9083839099a3aa9f948a7e71685d52473d30271d0f06000000000916232f3c4956626f7c8995a2ac9f9386796c605346392d20130000000004101c27333d47535f6a737f8c95938c7f726c615950444f575f616b70767b7e8183858586858583817e7a756f6a605d554d445059606b717e8b92958c7f736a5f53473d3222190f000000000000000004101c27333d47535f6a737f8c95938c7f726c61595966727f86868686868686868686868686858483807d79736d6760594f445059606b717e8b92958c7f736a5f53473d3222190f0000000000000000000000000000000714202d3a4753606d7a8699a3a4978b7e7164584b3e312328343e4653606c7985929fab998c7f7266594c3f3326190c000000000000000000000000000000000006111c2834404b55616c75828f97a2abafa39992877e726c655f57534d4946443f41414141424246484c52555d606b707c859298a2aeada2978f82756a5f5343392f24180c00000000000e1a26313b47535f6974808d96a0abaea39991857b6e6a615a524c46423c3a38342e3434342e34383a3c42474d535b626b707d86929fa4aeaaa0958b7f72685e5243392f24180d0100000000000000030e1a25303b454f59626c717d858d92989d9fa4aca49f9e9d9d9d9d9ea1a9aba49f9c96918a81786d6d78818991959c9fa3a8a09e9c9b9a9b9c9fa2aaa39f9b95908880786d675d554b40362c1f160c0000000000000915222e3a46515b62656c6c6c6c6c7985929facada093877a6d6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c5d564c4135291d111c2934404b556774818e9aa7b3a6998c807366594d4033261a0d00000000000000000000000000010d1924303a4854606b7783909daaac9f92857a6d6054473c313b4754606a7783909dabac9f92867a6d6054473d3221160c01000000000000000000000000000d1a2733404d5a6673808d99a6b3a89b8e8175685b4e422f24190d01000000020e19242e3840474c4d5353535353535353535353535353535353535353535353534d4c4740382f24190e030000000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d1003000000000000000000000000000000000006121f2b3844505b6675828f9ba8b5a89b8f8275685d5242382e20160c000000000000000000000000000000000000000a15202c3945515d6775828e9ba8b4ab9b8e817468564c41362a1e11050000000000000000000009141f2b3844505b66727f8c99a3aea79a8d8174675c606060606060606060606060605765717e8b98a2aea79b8e8174685d5245392c201304000000000000000000000000000000000000000c1925323f4c5865727f8b98a5a79b8e8174685b4e4135281b0e0200000000000000000000131f2c3946525f6c7985929fac9f928790959faba2988f82766c61564c41352b1e150b00000000000916232f3c4956626f7c8995a2ac9f9386796c605346392d201300000000000b16212b37434e58606d7883909793887e716b625a514a4d53596163696e71747678797979787674716d68626058514b4a505a616b707d8792979083786d60584e43352b2110070000000000000000000b16212b37434e58606d7883909793887e716b625a636d727979797979797979797979797978777673716d67605d554f4a505a616b707d8792979083786d60584e43352b2110070000000000000000000000000000000613202d394653606c7986929fa5988b7e7265584b3f3025212b3744505b657784909da79a8d8074675a4d4134271a0e0100000000000000000000000000000000000c18232e3943505a616e7b859299a3afaba39992877f776e69615f575553504a4e4e4d4e4f4d5354565d60676d747d859297a1aaaea49e92857b6e61584e4331271d1207000000000009141f2b37424d57606d79849199a4afaba19791847c706c615e56534d494644404141414141404546494d53575f616d727d869298a2aeaca2989083786c60564c4131281d120700000000000000000009141f29333d47505a626b6f7a80868c90939a999b9d9e9e9f9f9f9e9d9c9a9993908b847d746d66666d747d848a8f92999a9c9d9e9f9f9f9e9d9b9998928f89837d746d665d554c43392f241a0d0400000000000006121e29343f49515658606060606c7985929facada093877a6d6060606060606060606060606060605f524c443a2f2419131f2c3845515c677783909daab4aa988b7e7165584b3e3225180b000000000000000000000000000008131e2c38434f5965727f8b98a2aea2988b7e7165574d4237404b55626f7c8895a0aca79b8e8174685d5245392c20130400000000000000000000000000000c1825323f4b5865727e8b98a5b1a99c8f837669554c4135291d11040000000008121c262e363b3f40464646464646464646464646464646464646464646464646413f3c362f261d1208000000000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d100300000000000000000000000000000000000613202d394653606c7885929fabb2a9988b7e7165564c4130261c0d040000000000000000000000000000000000000004101d2935404b5565717e8b98aab3ab9e918478685e5246392d20140700000000000000000000030f1c28333f4a54616e7a86929facab9f9285796d60535353535353535353535353535f697683909caaaca095897c6f63564c4135291d1104000000000000000000000000000000000000000c1925323f4c5865727f8b98a5a79b8e8174685b4e4135281b0e0200000000000000000000131f2c3946525f6c7985929faca39992999fa7a79f92867b6e615a50443a3023190c0300000000000916232f3c4956626f7c8995a2ac9f9386796c605346392d20130000000000050f1a26313c44505c666e7b85929992867d716c605c544e464f55575e6165676a6b6c6c6c6b6a6765615e56544e454e545c606c717d86929992857b6e665c50463c3123190f00000000000000000000050f1a26313c44505c666e7b85929992867d716c605c63666c6c6c6c6c6c6c6c6c6c6c6c6c6b6b696764605c55514b4e545c606c717d86929992857b6e665c50463c3123190f0000000000000000000000000000000005121f2b3744505b657885929ea6998c807366564c41362e2e2e3844505b667784909da79a8d8074675a4d4134271a0e01000000000000000000000000000000000007121d27303e46525e69707d87929fa4acaba399938c827b746e696562605c545b5a5a5b5c575e6164686d737a808a9297a1a9afa59d928a7e70695e52463c321f150b010000000000030e1a26313c45515d676f7d87939fa4aea9a19691867e756e68615e575653514a4e4e4d4e4e4b515356575f62696e767f879298a2aaafa49a92867c6f665b50443a301f160c01000000000000000000030d17212c353f48505960686d737a7f83878a8c8e90919192929292908f8d8a86837e79706c605c5c606b70787d82868a8d8f919292929292908f8c8986827d776f6b605c544c433a31271d120800000000000000010d18232d373f464a4c5353535f6c7985929facada093877a6d6054535353535353535353535353535345413a32281e1314202d3a4753606d7986929facaea298887c6f6255493c2f2216090000000000000000000000000000020f1b27323d4754606d7a86929facaa9c908376695f53473845515c6774808d9aa7aca095897c6f63564c4135291d110400000000000000000000000000000a1724313d4a5764707d8a97abb5ab9e918478675d5145392c20130600000000010a141c242b2f33343939393939393939393939393939393939393939393939393433302b241d140b01000000000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d100300000000000000000000000000000000000815222f3b4855626e7b8897a2adada197877b6e6154483b2f21140a0000000000000000000000000000000000000000010d18242f3b4855616e7b8898a2aeada196877a6e6154473b2e21140800000000000000000000000b17222d3846525e6875828e9ba8ada2978a7e7164574d42464646464646463f4a54626e7b88949fabaa9d9084776b6054443a2f24190d01000000000000000000000000000000000000000c1926323f4c5965727f8c98a5a79b8e8174685b4e4135281b0e0200000000000000000000131f2c3946525f6c7985929facaba39fa3ababa0958c7f72695f53483e32281e11070000000000000916232f3c4956626f7c8995a2ac9f9386796c605346392d20130000000000000a152028343f4a545f696f7d87929892877e736d665f58524c484d5254585b5d5e5f5f5f5e5d5b5854524c474b51575f666d737e87929892877d6f695f544a3f342a20110700000000000000000000000a152028343f4a545f696f7d87929892877e736d665f586060606060606060606060605f5f5e5d5a5753514b4b51575f666d737e87929892877d6f695f544a3f342a20110700000000000000000000000000000000030f1b27333f49536a7784909da99c8f8276685e52463f3b3b3b404653606c7985929fac998c7f7266594c3f3326190c000000000000000000000000000000000000000b151e2a36424d56606b717f8b939aa3ababa49f948f86817b76726f6d6668686767686869696e71757a7f858d929ea2a9afa59e938d80746c61574d42342a200d030000000000000009151f2935404b55606b727f8b929da4ada9a198928a817a746e696562605c545b5a5a5a5b545c606266696e747b828b9299a2aaaea39f93887e706a5f544a3f32291e0d040000000000000000000000050f1a232d363f474f565d60686e72767b7d7f82838485858685858482807d7a76716d66615a51515960666c71767a7d80828485858685858382807d7a75706b636059514a423a31281f150b00000000000000000006111b252d343a3e3f4646525f6c7985929facada093877a6d6054474646464646464646464646464639352f282016101d2935404b5563707d8a99a3aeac9f9285796d6053463a2d2013070000000000000000000000000000000a16202c3945515d6774818e9aa7ab9f94887b6e62544a3f4653606d7985929fabaa9d9084776b6054443a3024190d0100000000000000000000000000000916222f3c4955626f7c8899a3aeaca196877a6d6054473a2d2114080000000000020a12191f2326272d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2726231f19120b0200000000000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d100300000000000000000000000000000000000a1724313d4a5764707d8a97a9b3ab9e918578695e53463a2d2114020000000000000000000000000000000000000000000714212d3a46535f697885929fabb2a896897d7063564a3d3023170a000000000000000000000006111c2a36414c5663707d8996a0aca99c8f8276695e5246382d393939393844505c6673808d99a6aea2988b7f7265594f4332281e1308000000000000000000000000000000000003060809192633404c5966737f8c99a6a79b8e8174685b4e4135281b0e0200000000000000000000131f2c3946525f6c7985929facb5afacafafa4999083786d60574d42362c20160c000000000000000916232f3c4956626f7c8995a2ac9f9386796c605346392d2013000000000000030c17232e38424d57606b717e8a9299928b80786f6a605d56524c46474b4e505252535252504e4b47464b51555d606a6e787f889299928a7e716b60574d42382e22180e000000000000000000000000030c17232e38424d57606b717e8a9299928b80786f6a605d56524c5353535353535353535251504d4a474b51555d606a6e787f889299928a7e716b60574d42382e22180e0000000000000000000000000000000000000b17222d414e5a6774818d9aa99f92867a6d6159504a4847484b515b636f7c8998a2a49a8a7e7164574b3e3124180b00000000000000000000000000000000000000030c1925303b444f59626d727f889299a1a8afa69f99928e88837f7c797775747474747576787b7e82868c92979da4adaba39f938e81786d605a50453b3022180e0000000000000000030d18242f3a434f59626d74808d929ca3adaaa29f938e86807b76726f6d6669686767676869666d6f72777b81868f949fa3ababa39f918c7f726c61584e42382d20170d0000000000000000000000000008111b242d353d444c52565e6165696e71737577777879797978777573716e6864605c545044454f545b6064686d717376777879797978777573706d67636059544f44403930281f160d030000000000000000000009131b23292e31323946525f6c7985929facada093877a6d6054473a3939393939393939393939392c29241e160e19222c3945515d6774818e9aabb4a99c908376665c5044382c1f120600000000000000000000000000000004111d2935414c55626f7c88959faba6998d8073665c50444d5764717e8a97a2ada2988b7f7265594f4332281e13080000000000000000000000000000000713202d3a4653606d7986929facb2a896897c6f6356493c3025190e00000000000001080e1317191a20202020202020202020202020252728292622211f1a20201a1a17130e08010000000000000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d100300000000000000000000000000000000000c1926333f4c5966727f8c99a5b2a99c8f827669574d42362a1e120500000000000000000000000000000000000000000005121e2b37424d576a7683909da9b2a5988c7f7265594c3f3226190c0000000000000000000000000d1925303b4854606b7784919daaac9f93877b6e6153493f33272d2d2d3a4653606d7984919eabac9f92867a6d6054473d3221160c01000000000000000000000000000000040a0f1315161a2734404d5a6773808d9aa6a79b8e8174685b4e4135281b0e0200000000000000000000131f2c3946525f6c7985929facb8bbb9b2a89f93877c6f665c50453b31241a0e04000000000003050916232f3c4956626f7c8995a2ac9f9386796c605346392d20130000000000000006111c26303c454f59616c717e879298928d837c736d68605d5653514a4a484847464748484a4a5053555d60676d737b838c939892877e716c61594f453c30261c0f060000000000000000000000000006111c26303c454f59616c717e879298928d837c736d68605d5653514a4a484847464748484a4a5053555d60676d737b838c939892877e716c61594f453c30261c0f06000000000000000000000000000000000000061724313d4a5764707d8a97a2a3988d80736b605c54555455555c606d75828f9caa9f93877a6e6154473b2e211408000000000000000000000000000000000000000009141f29323d47505a626d727e8791969ea5acaba39f9a95908c8885848281818081828385878b8f92989fa2a9ada8a099928d81786d665c50483e33291f100600000000000000000007131d28313d47515b606c77808c919ea1a9aea59e98928d87837f7c79777674747474747677797c7f83888e92999fa6aea8a199928b7f736d635a50463c2f261c0e05000000000000000000000000000009121b232b323a41454c5254565e616466686a6b6b6c6c6c6b6a696764615e5653514a423e3d424a5053565e616467696a6b6c6c6c6b6a686663605d55554f48433d342e271e160d040000000000000000000000010911181e22242c3946525f6c7985929facada093877a6d6054473a2d2d2d2d2d2d2d2d2d2d2d2d201d19130e17202935404b55606d7985929fabb1a7988c7f7265544a3f34281c1003000000000000000000000000000000010d19242f3a47545f6a7783909da9ab9e9184796d605346525e6976828f9ca9ac9f92867a6d6054473d3221160c0200000000000000000000000000000006131f2c3845515c677783909daab2a6998c7f7366564d41362a1c11060000000000000002070b0d0d131313131313131313151e252c31343536322f2e2b26201f1c18120b0300000000000000000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d100300000000000000000000000000000000000e1b2834414e5b6774818e9aa7b3a69a8d8073675a4d4031251a0e02000000000000000000000000000000000000000000020e1a2631414e5b6874818e9ba7b3a79a8d8074675a4d4134271a0e00000000000000000000000008141e2c38444f5965727f8c98a3aea4998c7f73655b5044372b1f2a36414c5663707d8a97a1ada79b8e8174685d5245392c201304000000000000000000000000000000070f151b1f2222262b38434e586875828f9ba8a79a8d8074675a4d4134271a0e0100000000000000000000131f2c3946525f6c7985929facacacacada1968d80746a60544a3f33291f120900010407070c10121316232f3c4956626f7c8995a2ac9f9386796c605346392d201300000000000000000a151e2a333d47505a626c717d869196959087807a736d6863605c54575554545354545557545c6063676d727a7f8690959691867d716c625a50473d332a1e150a0000000000000000000000000000000a151e2a333d47505a626c717d869196959087807a736d6863605c54575554545354545557545c6063676d727a7f8690959691867d716c625a50473d332a1e150a000000000000000000000000000000000000000714202d3a4753606d7a85929ea89f93887d726d666362616263676d737f8b949ea69d908376685e5246392d2014070000000000000000000000000000000000000000020d17202b353f48515b626c717d848e939da0a7abaca79f9d989892908f8e8d8d8e8f909298979c9fa3aaada9a29f96918780786c665c544a3f362c21170d00000000000000000000010c161f2b353f44505b656c747f8a92979ea6acaaa29f9a93908c898684828181808181828486898c90959a9fa3ababa49f9691877e736d635b51473e342a1d140a00000000000000000000000000000000091119202830353b4146474d525457595b5d5e5e5f5f5f5f5d5c5a5754524c46444039302f383f44464c5254575a5c5e5f5f5f5f5f5d5c595653514b48443d383228231c150c040000000000000000000000000000060d12151f2c3946525f6c7985929facada093877a6d6054473a2d212020202020202020201413110d0f182029323b45515d67727e8b97a2adab9f95887b6e6155483b2e23170c000000000000000000000000000000000008131e2b37434e5865717e8b97a2ada1968a7d7063564c54616e7b87939faca79b8e8174685d5245392c2013040000000000000000000000000000000004101c2834404b556774818e9aabb5a99c908376685e5246382e23170c0100000000000000000000010606060606060008111e272f373d4042433f3b3a37312d2c29231d150d04000000000000000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d10030000000000000000000000000000000000101c2936434f5c6976828f9ca9b2a5988c7f7265594c3f322619090000000000000000000000000000000000000000000000091a2733404d5a6673808d99a6b3a89b8e8175685b4f4235281c0f00000000000000000000000002101c27333d4754616d7a86929facab9e9184786c6053463a2f242d3946525e6875828f9ba9aca095897c6f63564c4135291d1104000000000000000000000000000007101920272b2e2f31363e4754606a7885919eabaa998c7f7266594c3f3326190c0000000000000000000000131f2c3946525f6c7985929f9f9f9f9fa59e9184796d60584e42382e21170d02080d111314181c1f201f232f3c4956626f7c89959f9f9f9386796c605346392d20130000000000000000030c18212b353e48505a626b707c848e9399928d85807a75706d666664626160606061626466666d70757a7f858c9298938e847c706b625a50483e352b21180c03000000000000000000000000000000030c18212b353e48505a626b707c848e9399928d85807a75706d666664626160606061626466666d70757a7f858c9298938e847c706b625a50483e352b21180c03000000000000000000000000000000000000000613202c3945515d67727f8c96a1a49a92877f7873706e6e6e7073798088939fa69f948a7e7164564d41362a1e1105000000000000000000000000000000000000000000050e19232d363f49515a626b6f7a818990959c9fa6a9aca9aaa29f9d9b9b9a9a9b9b9c9fa2aaa8acaaa9a19e97928c847c736c665b544a42382e241a0f050000000000000000000000040d192327333f49535b606d737d858f949da0a7acaca49f9c989892918f8e8d8d8d8e8f919298999d9fa7acaca69f99938d847d716c635b51493f352c22180b020000000000000000000000000000000000070e161e24293036393b4246474a4c4f50515252535252514f4d4a4746413b38342e27262d33383a4146474a4d4f515252535252504f4d4a4745403a38332c272118120b03000000000000000000000000000000000106131f2c3946525f6c7985929facada093877a6d6054473a2d21141313131313131313060b0f151a212a323b444e58606d7984919ea9b2a89d908376695f53463a2d1c11060000000000000000000000000000000000010f1b26323c4753606d7985929faba99b8e8275685d525966737f8c99a4aca095897c6f63564c4135291d110400000000000000000000000000000000000c18232e3e4a5764717e8a99a3afac9f93877b6e61544a3f34281d13070000000000000000000000000000000000040e1a232f3941484d4f504c4847433d3a38342f271f160e040000000000000000000001040606111e2a3744515d6a7784909daaa99c8f8376695c504336291d10060000000000000000000000000000000000101d2a3743505d6a7683909da9b1a4978a7e7164574b3e3124180b00000000000000000000000000000000000000000000000c1925323f4c5865727f8b98a5b2a99c908376695d5043362a1d10000000000000000000000000000b16202d3946525d6875818e9ba7aca096897c7063554b4135292e3a4754616d7a86929facaa9d9084776b6054443a2f24190d0100000000000000000000000000040f19222b32373b3c3f4246505a626f7c8997a1ada298897d7063564a3d3023170a0000000000000000000000131f2c3946525f6c798692939393939393938a7d70675d51463d30261c0f080d13191d202125292b2c2c292f3c4956626f7c89939393939386796c605346392d2013000000000000000000060f19232c363f485059616a6f7a818a919697928c86817d797673706f6e6d6c6d6e6f707376797d81858c929796918a817a6f6a615950483f362c23190f060000000000000000000000000000000000060f19232c363f485059616a6f7a818a919697928c86817d797673706f6e6d6c6d6e6f707376797d81858c929796918a817a6f6a615950483f362c23190f06000000000000000000000000000000000000000004111d2935404b55606d79849197a1a399928b84807d7b7a7b7d80858d939aa4a0968f82766c6155443b3025190e020000000000000000000000000000000000000000000008111b242d373f48505960686d757d83898f94989c9fa3aba7a8aaa8a7a7a7a7a8a9a9a7a5a8a09e9a97918c8580796f6b605b544a423830261c110800000000000000000000000000071017222d384149505b636b707b828990959c9fa4acaca9aaa39f9d9c9b9a9a9a9b9c9d9fa3aaaaababa39f9b948f878079706b625a514940372e231a100600000000000000000000000000000000000000040c13191e252a2d30363a3b3e4042444445464646454442403e3b3936302c28231c1c22282b3036393a3e40434445464646454442403d3a39352f2c27211b160c070000000000000000000000000000000000000006131f2c3946525f6c7985929facada093877a6d6054473a2d21140c0c0c0c0d090e1114171b1f262b333b444c56606a73808c96a1adada1968a7e7164574d42362a1e0a000000000000000000000000000000000000000a151f2c3945515d6774808d9aa6ac9f92867a6d6154606b7784919eabaa9d9084776b6054443a3024190d0100000000000000000000000000000000000714212d3a4754606d7a86929facafa4998c7f72665c50443a2f24181007000000000000000000000000000000030c16202c35414b53595b5c5955534e4a47454039312820160c020000000000000004090e111213131e2a3744515d6a7784909daaa99c8f8376695c504336291d13130807050200000000000000000000000000111e2a3744515d6a7783909daab0a3968a7d7063574a3d3024170a00000000000000000000000000000000000000000000000b1825313e4b5864717e8b97a4b1aa9d9083776a5d5044372a1d110000000000000000000000000005111d2935414c56636f7c8995a0aca89b8e8174675d5145392c37434e5865727f8b99a3aea2988b7f7265594f4332281e130800000000000000000000000000000a15202b343c4347494c4d5359616c75818e9ba9aa9f92867a6d6054473a2d2114070000000000000000000000131f2c3946525f6c7986868686868686868681756c61554b40342b1e150c13191e24292c2d323638393836323c4956626f7c86868686868686796c605346392d20130000000000000000000007111a242d363f474f5860686d747d848c929898928e8a8582807d7b7b7a797a7b7b7d8082858a8e929898928c847d746d675f584f473f362d241a11070000000000000000000000000000000000000007111a242d363f474f5860686d747d848c929898928e8a8582807d7b7b7a797a7b7b7d8082858a8e929898928c847d746d675f584f473f362d241a1107000000000000000000000000000000000000000000010d18242f3a45515d676e7c8592979fa39f96918c89888788898d91979fa49d9691847b6e615a504532291f140800000000000000000000000000000000000000000000000009121b252d363f474f565e616b70787d82878b909299989a9c9d9e9f9f9f9e9e9d9c9b999696918d89857f7a736d676059504a42382f261e140a00000000000000000000000000000006111b262f383f44515961696e757d83898f939a9c9fa2aaa7a8aaa9a7a7a7a7a7a9a9a8a6a9a29e9b99928e88827c746d676059504840372e251c110800000000000000000000000000000000000000000002080d14191e20252a2d2e31333537383839393938373634312e2d2a251f1c181211171c1f252a2d2e313436373839393938373533302d2c29241d1c160f0a04000000000000000000000000000000000000000006131f2c3946525f6c7985929facada093877a6d6054473a2d211919191919191a191e2022272b31373e454d565e686f7c87929fa8b1a79e9184786d6053463b31261a0e0000000000000000000000000000000000000004101d2935404b55626f7b88949faba3998b7e726557636f7c8996a0aca2988b7f7265594f4332281e13080000000000000000000000000000000000000713202c3945525d6876838f9ca9b3ab9e9184796d60554b4035292219100903000000000000000000000000040c151e28323d47535d65686965625f585653514b433a32281e1308000000000000080f151a1d1f2020202a3744515d6a7784909d9f9f9c8f8376695c504336292020201514120e09030000000000000000000000121e2b3845515e6b7884919eabafa396897c706356493d3023160a00000000000000000000000000000000000000000000000b1824313e4b5764717e8a97a4b1aa9d9184776a5e5144372b1e1100000000000000000000000000010d1924303a4854606b7783909daaac9f92857a6d6054473c313b4754606a7783909dabac9f92867a6d6054473d3221160c0100000000000000000000000000030f1b27323c464e545559575f616b707e8a939eaaa3988e8174675d5145392c2013060000000000000000000000121f2b3844515d6974797979797979797979756f65594f433a342e261e191e252a3035393a3f43454645433f3a4754606a6f79797979797979766c5f5346392d2013000000000000000000000009121b242d353e464e565d606b70797f858c91969a97928f8d8a888787868787888a8c8f92979a96918c857f79706b605d554e463d352d241b120900000000000000000000000000000000000000000009121b242d353e464e565d606b70797f858c91969a97928f8d8a888787868787888a8c8f92979a96918c857f79706b605d554e463d352d241b1209000000000000000000000000000000000000000000000007131d2935404b555f6a6f7d858f949c9fa09e999695949596999ea19f9b938e847b6e695e52483e3320170d020000000000000000000000000000000000000000000000000009131b242d353d444c525960656c70767b7f8386898b8d8f9091929292929190908e8c8a8784807c79726d67605d554f443f382f261d140c02000000000000000000000000000000000a141d262d3340474f575e616b70777d82878b8f9298989a9b9d9e9e9f9f9f9e9d9d9b999797928e8a86817c766f6a605d554f473e362e251c130a00000000000000000000000000000000000000000000000002080e1114191e20212426282a2b2b2c2c2c2c2a29272421201e1914100c07060b0f13191d20212427292b2c2c2c2c2c2a29262320201d1813100b050000000000000000000000000000000000000000000006131f2c3946525f6c7985929facada093877a6d6054473a2d2525252525262627252a2d2d33373c434750575f686e7a849199a3afaa9f958b7e71665c504438291f140900000000000000000000000000000000000000000c18242f3947535f6a7683909ca9ab9d908376695f6774818e9aa8ac9f92867a6d6054473d3221160c0200000000000000000000000000000000000004111d2935414c5664717e8a97a1adaca0968b7e71675d51453e342b221a140e09060400000101000205060c10161e27303a444f59656f7576726e6a6763605c554c443a3025190d010000000009121920262a2c2c2d2d2d3744515d6a778490939393938f8376695c5043362d2d2d2d22211e1a140e0600000000000000000000121f2c3845525f6b7885929eabafa296897c6f6356493c3023160900000000000000000000000000000000000000000000000a1724313d4a5764707d8a97a3b0aa9e9184776b5e5144382b1e11000000000000000000000000000008131e2c38434f5965727f8b98a2aea2988b7e7165574d4237404b55626f7c8895a0aca79b8e8174685d5245392c201304000000000000000000000000000006131f2b37434e5860626567696e747d86929fa5a49f92867b6e61554c4135291d11040000000000000000000000101c2935414d5862696c6c6c6c6c6c6c6c6c68655d535246443f383026252a30363a4145474b4f525352504c47454e5860626c6c6c6c6c6c6c6c645a4f43372b1e1200000000000000000000000009121b232c343c434c525961676d737a7f84898e91979899979594939393949597999897918e89847f7a736d676159514c433c342c231b1209000000000000000000000000000000000000000000000009121b232c343c434c525961676d737a7f84898e91979899979594939393949597999897918e89847f7a736d676159514c433c342c231b1209000000000000000000000000000000000000000000000000010c18242f39434e58606b6f7b828a8f94979a9d9e9e9f9f9e9d9a99928f89817a6e695e574d42362c220e0500000000000000000000000000000000000000000000000000000109121b232b323a41464f535b6063696e7276797c7f8182848585868685848483817f7d7b7773706d66605d55514b433d332d261d140b020000000000000000000000000000000000020b141b2227353e454d525960636b70757b7e8285888b8d8f9091929292929191908e8c8a8885817e7a746f6a626058514b433d352d241c130a0100000000000000000000000000000000000000000000000000000205090e11141417191c1d1e1f1f201f1f1e1c1a171414110d08040000000003080d111314171a1c1e1f1f201f1f1d1c1a171413110d070100000000000000000000000000000000000000000000000006131f2c3946525f6c7985929facada093877a6d6054473a32323232323232333430363a3b3f44464e535a61696e7a839096a1abaea3989083786c60544a3f34281c1003000000000000000000000000000000000000000007121d2b37434e5864717e8a97a1ab9f95887b6e616d7985929faba79b8e8174685d5245392c20130400000000000000000000000000000000000000010d19242f3a4653606d7985929ea9b2a89e9184796d605a50463d342a251f1a1313100c070e0e080e1114171c1f283039424c56606b7581837f7b7774706d675e564c4135291d110500000008121b242b313638393939393844515d6a77838686868686868276695c504337393939392e2d2b261f180f06000000000000000000121f2b3845525e6b7884919eabafa296897c6f6356493c3023160900000000000000000000000000000000000000000000000b1724313e4a5764717d8a97a4b0aa9d9184776a5e5144372b1e110000000000000000000000000000020f1b27323d4754606d7a86929facaa9c908376695f53473845515c6774808d9aa7aca095897c6f63564c4135291d110400000000000000000000000000000815222e3b4754606a6f7274777b81879298a2a39f928c7f72695f53433a2f24190d0100000000000000000000000d1925303b4650585d5f60606060606060605b5e60605f53504a42382e30363a41464c5254585c5e5f5f5c5853514b4e5456606060606060605f5a52493e33271b0f0000000000000000000000000009111a222b313a41454f555d60686d72787d8185888b8d8f919292939292918f8d8b8885817d78726d68605d554f45413a312a221a11090000000000000000000000000000000000000000000000000009111a222b313a41454f555d60686d72787d8185888b8d8f919292939292918f8d8b8885817d78726d68605d554f45413a312a221a1109000000000000000000000000000000000000000000000000000007121d27313c464f5960696e777d82888b8e909192929291908d8b86827d746d685e574d453b30241a100000000000000000000000000000000000000000000000000000000000091019202830363d41495053575e6165676d6f7274757778787979787877767472706e696763605c54514c45403a3128221c140b0200000000000000000000000000000000000000020a1117232c333b42464f54596063696e7276797c7e808283848585868585848382807d7b7975716d68625f58544e45403a312b231b120a01000000000000000000000000000000000000000000000000000000000000020507080b0d0f11111213131312110f0d0b080705010000000000000000010507070b0d10111213131312110f0d0a07060401000000000000000000000000000000000000000000000000000006131f2c3946525f6c7985929facada093877a6d6054473f3f3f3f3f3f3f3f404042424647495053585f626c717b839095a0a8afa59f92867c6f655b5042382e23170c000000000000000000000000000000000000000000010f1a26313c4653606d7985929eaca7998c7f7366717d8a98a2aca095897c6f63564c4135291d1104000000000000000000000000000000000000000008131f2c3845515c6773808c97a1adada1968d80746c61584e463e36302a26201f1c181b1a1b1b191e2023282c313a424a545d68707d898f8c8884807d796d685e5246392d2013070000040f19242d353d424546464646453d4f5b6771777979797979797670665a4e3b44464646463b3a37312a21180e030000000000000000111e2b3844515e6b7784919eaab0a396897d7063564a3d3023170a00000000000000000000000000000000000000000000000b1825313e4b5864717e8b97a4b1a99d9083766a5d5043372a1d100000000000000000000000000000000a16202c3945515d6774818e9aa7ab9f94887b6e62544a3f4653606d7985929fabaa9d9084776b6054443a3024190d0100000000000000000000000000000916222f3c4955626f7c7f8084888e9299a29f99928c80746d63574d4231281e130800000000000000000000000008141f2a343e464d51525353535353535761686b6c6c6c605c544a3f353a41464c52565d6065696b6c6b6965605c554e474953535353535353534f4940372c21160a00000000000000000000000000000810191f282f353e434b51565d60666c7074787b7e80828485858685858482807e7b7874706c66605d56514b433e352f281f1910080000000000000000000000000000000000000000000000000000000810191f282f353e434b51565d60666c7074787b7e80828485858685858482807e7b7874706c66605d56514b433e352f281f191008000000000000000000000000000000000000000000000000000000010b151f2a343d474f575e656c70767b7e8183848586858483817e7b756f6b605d564d453b33291f1208000000000000000000000000000000000000000000000000000000000000070e161e252a2f383f44464d5354555c60636567696a6b6c6c6c6b6b6a69686663615e575653504a45413a352f281f17110a020000000000000000000000000000000000000000000006111a202930363d44484f54565e6165666d6f7174757778787979787877767573716f6d6664605d56534e47433d352f281f1911090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006131f2c3946525f6c7985929facada093877a6d60544c4c4c4c4c4c4c4c4c4c4d4e4d5254535b60636a6e757e859195a0a7afa59d938b7f726a5f53493f30261c1106000000000000000000000000000000000000000000000a151f2c3845515c6773808d9aa4aa9d9184776a75828e9baaaa9d9084776b6054443a3024190d01000000000000000000000000000000000000000004101c2834404b55606d7a85929ea7b1a89d928a7e706a60585046423b36312d2c282327272728252a2d2e34383e434c545c666d7a84919c9896918d89857a6d6154473a2e21140700000915202b353f474e5253535353514948555f676a6c6c6c6c6c6c69665e54474851535353534846423c332a1f14090000000000000000111e2a3744515d6a7784909daab0a3978a7d7064574a3d3124170a00000000000000000000000000000000000000000000000c1825323f4b5865727e8b98a5b1a99c8f8276695c504336291d1000000000000000000000000000000004111d2935414c55626f7c88959faba6998d8073665c50444d5764717e8a97a2ada2988b7f7265594f4332281e13080000000000000000000000000000000e1a2734414d5a6774808c8d90959b9fa098928e877f746e645b51453c311f160c01000000000000000000000000020d18222c343b4144464646464646505c6873787979796d665c504441454c52565e61686d727678797876726d675f584e464646464646464646433e372e251b1005000000000000000000000000000000070d161e2429313a40454c52545b6063656c6e717476777879797978777674716e6c6563605b54524c4540393129241e160d070000000000000000000000000000000000000000000000000000000000070d161e2429313a40454c52545b6063656c6e717476777879797978777674716e6c6563605b54524c4540393129241e160d070000000000000000000000000000000000000000000000000000000000030d18222b353d454d535b6063696e71747677787978777674716e69636059524c433b332921170d0000000000000000000000000000000000000000000000000000000000000000050c13191d262d33373b4246484b515356585a5c5d5e5f5f5f5f5e5d5d5b595754534d4946443f38352f29241d160d0600000000000000000000000000000000000000000000000000080e171f252a33383d44484d5254545c60626567686a6b6b6c6c6c6b6a6a68666462605c5454524c47433c383229241d160d07000000000000000000000000000000000000000004080a0b1313131313131311110e0b060100000000000000000004090e11121313131313131313070705010000000000000000000000060b0e1011131313131313130a0a0804000000000000000000000000000000000000000006131f2c3946525f6c7985929facada093877a6d6058585858585858585859595a5b565e6164656c70757c828a9297a0a8afa59e938e81746d62584e41382d1e150a000000000000000000000000000000000000000000000004101c2834404b55616e7b87939faca095887b6f7985929faca3988b7f7265594f4332281e1308000000000000000000000000000000000000000000000c18232e3945525d68727f8c959faaaea49f92867c6f6a625a524d46423c3a38342e343434353036393b3f444650565d666d78828f96a0a8a09e988d8074685e5246392d20130700000e1a26313d4751595e5f6060605e56544f555b5d6060606060605c5a544d53555d6060606055534d453c31261a0e0200000000000000101d2a3643505d697683909ca9b1a5988b7e7265584b3f3225180700000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a6b3a89b8f8275685c4f4235291c0f000000000000000000000000000000010d19242f3a47545f6a7783909da9ab9e9184796d605346525e6976828f9ca9ac9f92867a6d6054473d3221160c020000000000000000000000000000000e1a2734414d5a6774808d9a9da0a7a0969186817b726d645c53493f332a1f0d04000000000000000000000000000006101a222a303538393939393945525e6b7885868686786d60534a4c51565e61686d737a7f82858685837f796f6a5f584e42382e393939393937332c251c13090000000000000000000000000000000000040c13191f282f353a41454a5053535b60626567696a6b6c6c6c6b6a69676562605b5353504a45413a352f281f19130c0400000000000000000000000000000000000000000000000000000000000000040c13191f282f353a41454a5053535b60626567696a6b6c6c6c6b6a69676562605b5353504a45413a352f281f19130c0400000000000000000000000000000000000000000000000000000000000000060f19232b333b41495053575f6164676a6b6b6c6c6b6a6764615e57544f45413a312921170f0500000000000000000000000000000000000000000000000000000000000000000002080b141b22272b31363a3b404547494c4e4f5152525353525151504e4c4a4846423d3a38342e29241e18130c04000000000000000000000000000000000000000000000000000000050d141a21272c33383b4246474a505355585a5c5d5e5f5f5f5f5e5e5d5b59575553504a4745413a37312b272018130c0400000000000000000000000000000000000000050c11141717202020202020201e1d1b17120c0400000000000000080f151a1d1f20202020202020201413110d080200000000000000040b11171a1d1e20202020202020171614100b0500000000000000000000000000000000000006131f2c3946525f6c7985929facada093877a6d656565656565656565656566676869696e7074787d81878f939ea1a9aca49f938e81786d605b51463c2f261b0c030000000000000000000000000000000000000000000000000c18232e3946535f6976828f9ca9a7998c7f737d8a98a2ac9f92867a6d6054473d3221160c020000000000000000000000000000000000000000000007121d2935414c56606d78839098a2acaea29892857c716c615e57534d494645404141414141424146474a50535a61686d78818e949fa8b0a69f92857a6d61564c4135291d11050000111d2a36424e59636a6c6c6c6c6b636059514a51535353535353504e50575f626a6c6c6c6c6c5f574d42372b1e1205000000000000000f1b2835424e5b6875818e9ba8b3a6998c807366594d402f24180c00000000000000000000000000000000000000000000020e1b2835414e5b6874818e9ba7b4a79a8e8174675b4e4134281b0e0000000000000000000000000000000008131e2b37434e5865717e8b97a2ada1968a7d7063564c54616e7b87939faca79b8e8174685d5245392c201304000000000000000000000000000000000e1a2734414d5a6774808d9aa5a9aa9e91847d78716c605d554b43392f24180c050000000000000000000000000000000810181f25292b2c2d2d2d3643505d6976839098897c6f635a56555d60686d737a80858b8f9192928f8b847c6f6a5f544a3f34282d2d2d2d2b27211b130a0100000000000000000000000000000000000001080d161d24292f35383f444649505355585a5c5e5f5f605f5f5e5c5a585553504946443f38352f29241d160d080100000000000000000000000000000000000000000000000000000000000000000001080d161d24292f35383f444649505355585a5c5e5f5f605f5f5e5c5a585553504946443f38352f29241d160d080100000000000000000000000000000000000000000000000000000000000000000007111920292f383f44464d5355585b5d5e5f5f5f5e5d5a5854524d48443d352f281f170f05000000000000000000000000000000000000000000000000000000000000000000000000020a11171b1f252a2d2f34383a3c3f4142444545464645454443413f3d3b3a36312d2c28231c19130d0701000000000000000000000000000000000000000000000000000000000002090e161c21272c30363a3b3f4446494b4d4f5051525253525251504f4d4a4846443f3a39352f2b26201b160d0701000000000000000000000000000000000000000810171c2123242d2d2d2d2d2d2d2b2a27231d160e06000000000009121920262a2c2c2d2d2d2d2d2d2d21201d19130c050000000000050e161d22272a2a2d2d2d2d2d2d2d2423201c171008000000000000000000000000000000000006131f2c3946525f6c7985929facada093877a72727272727272727272727273737576787a7d8184898e93999ea6ada8a19a938c81786d665c50493f342a1d140a0000000000000000000000000000000000000000000000000007121d2b37424d5764717d8a97a1aa9d908377818e9baaa79b8e8174685d5245392c2013040000000000000000000000000000000000000000000000000d19242f3a44505c666e7b86929aa4afaaa29792867e756e69615f575653514b4e4e4d4e4e4f4c5254545c60646c717a828e939ea6b0a89f948c7f72685e52443a3025190d010000121f2c3845525e6a757979797978706b605c544d4546464646434b515a61696e777979797976695f53463a2d211407000000000000000d1a2734404d5a6773808d9aa6b3a89b8e817568554b4035291d100400000000000000000000000000000000000000000005121e2b37424d57697683909ca9b2a5988c7f7265594c3f3226190c00000000000000000000000000000000010f1b26323c4753606d7985929faba99b8e8275685d525966737f8c99a4aca095897c6f63564c4135291d1104000000000000000000000000000000000e1a2734414d5a6774808d95999c9fa096918a847e756d675d554b40352921160b00000000000000000000000000000000060d14191c1f1f20202834414e5b6774818e9a8e81756c656364676d737a80868d92989c9e9f9e9c9691857c6f665c5044382b1f2020201e1b16100901000000000000000000000000000000000000000000040c13181e24292d3338393f4446484b4d4f515252535252514f4d4b4846443f3938332d29241e18120c0400000000000000000000000000000000000000000000000000000000000000000000000000040c13181e24292d3338393f4446484b4d4f515252535252514f4d4b4846443f3938332d29241e18120c04000000000000000000000000000000000000000000000000000000000000000000000000070e171d262d33373b4246484b4e505152535251504e4b4746423b383229241e160d05000000000000000000000000000000000000000000000000000000000000000000000000000000060b0f141a1e2123292c2d303234363738393939383837363533302e2d2a25201f1c17110d0801000000000000000000000000000000000000000000000000000000000000000000050b10161c1f252a2d2e34383a3c3e414244454546464545444342403e3c3a38342e2c29241e1b150f0a04000000000000000000000000000000000000000008121a22282d3031393939393939393837332e2820180e0400000008121b242b31363839393939393939392e2d2a251e160e05000000040e1720272e3336373939393939393931302d28221a11080000000000000000000000000000000006131f2c3946525f6c7985929facb2a5988c7f7f7f7f7f7f7f7f7f7f7f7f7f7f80818385878a8d91969b9fa4ababa39f9691887f776d665c544a3f372d22180b0200000000000000000000000000000000000000000000000000000e1a26313c4653606d7984919eaba095887b85929faba095897c6f63564c4135291d110400000000000000000000000000000000000000000000000008131e28343f4a545f69717e88939fa3afa9a298928b827b746e696662605c545b5a5a5a5b5c565e6164666d71767e848f949ea5afaaa1968f82786c60564c4132281e130800000013202c3946535f6c7987868686847d736d665f575146413e454d555c606c717b83868686867b6e6155483b2e221508000000000000000c1825323f4b5865727e8b98abb5aa9d908477675d5145392c1f13060000000000000000000000000000000000000000000714212d3a46535f697885929fabb4aa968a7d7063574a3d3024170a00000000000000000000000000000000000a151f2c3945515d6774808d9aa6ac9f92867a6d6154606b7784919eabaa9d9084776b6054443a3024190d01000000000000000000000000000000000e1a2734414d5a67748087898c90949da09e96918a81796d675d51453d33271c10030000000000000000000000000000000002080d101213131825323f4b5865727e8b98938b7f75717071747a80858d92989fa2aaa4a3a5a8a1979083786d6053463a2f24190d13120f0a0500000000000000000000000000000000000000000000000001070d13191c22282b2d3337393b3e41434445464646454443413e3b3937332d2b28221c19130d070100000000000000000000000000000000000000000000000000000000000000000000000000000001070d13191c22282b2d3337393b3e41434445464646454443413e3b3937332d2b28221c19130d07010000000000000000000000000000000000000000000000000000000000000000000000000000050b141b22272b31363a3b3e4143444546454443413e3b3a36302c272119130c0400000000000000000000000000000000000000000000000000000000000000000000000000000000000003090e1214181c1f20232527292a2b2c2c2c2c2b2a2a28262421211e1a1312100c060000000000000000000000000000000000000000000000000000000000000000000000000000050b1014191e2023282c2d2f3234353738383939393837373533312f2d2b2823201d19130f0a0400000000000000000000000000000000000000000005101a242c33393c3e4646464646464644433f39322a20160c0100040f19242d353d42454646464646464646463936302820160c0200000b16202932393f4344464646464646463d3c39332c231a100500000000000000000000000000000006131f2c3946525f6c7985929facb8a79c918c8b8b8b8b8b8b8b8b8b8b8b8c8c8d8e909297979a9ea1a8acaba39f99928d847d736c655c544a42382e241b100600000000000000000000000000000000000000000000000000000009141f2c3844505c6673808c99a4a79c8f828f97a2aa9d9084776b6054443a3024190d01000000000000000000000000000000000000000000000000010b17232e38424d57616c727f8c919fa3abaaa39f938f86817b76726f6d66696867676768686a686e7174797d838a91969fa6afa9a19891847a6d665b50443a3020160c020000000b1825323e4b5865717e8b9296918780786e69625b524c4550575f676d747e869095948d8074695f53463a2d211407000000000000000916232f3c4956626f7c8999a3afac9f92867a6d6053473a2d22170b0000000000000000000000000000000000000000000815222e3b4855616e7b8898a2aeaea298887b6e6155483b2e221508000000000000000000000000000000000004101d2935404b55626f7b88949faba3998b7e726557636f7c8996a0aca2988b7f7265594f4332281e130800000000000000000000000000000000000713202d3a4653606d787b7c7f838990959fa09d938e82796d60594f44382c1f1409000000000000000000000000000000000000000305060815222f3b4855626e7b88959b918b827e7d7e81858c92989fa2a29f9a9796989c9f9f958a7d7164554c4135291d110405020000000000000000000000000000000000000000000000000000000001080d11171c1f22272b2d2f323436373839393938373634322f2d2b27221f1c17110d08010000000000000000000000000000000000000000000000000000000000000000000000000000000000000001080d11171c1f22272b2d2f323436373839393938373634322f2d2b27221f1c17110d08010000000000000000000000000000000000000000000000000000000000000000000000000000000000020a11171b1f262a2d2e31343738383939383734312e2d2a251f1b160d08010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000205070c10131416191b1c1e1f1f20201f1e1e1d1b19171514120e09060300000000000000000000000000000000000000000000000000000000000000000000000000000000000002090e1114171c1f20222527292a2b2c2c2c2c2b2b2a28262422201f1c1713110d080100000000000000000000000000000000000000000000000c17222c363e45494a53535353535353514f4b443c32281d1206000915202b353f474e5253535353535353535346413a32281e13080006111d27323b444a4f51535353535353534a49443e362c22170b00000000000000000000000000000006131f2c3946525f6c7985929facb8ada39c98989898989898989898989898999a9b9c9ea1a9a7aba9a8a19e99928e87817a706b605b534a423930261c12090000000000000000000000000000000000000000000000000000000003101c28343f4a54616e7b87939fac9e948f949ea9a3988b7f7265594f4332281e1308000000000000000000000000000000000000000000000000000006111c26303c45505a636d737f8b9299a1a8aea59e98928d87837f7c79777674747474747577787a7d81848a90949ea1a9afa8a19792867c6f685e544a3f32281e0e04000000000b1724313d4a56626d73808c9399938d837b726d615e56515a61696e79818a9298958f82786d60574d42372b1e1205000000000000000714202d3a4753606d7a86929facafa399897d7063544a3f33281c0f030000000000000000000000000000000000000004111d2935414c5665727e8b98aab3ab9f9285786c605346392d2013060000000000000000000000000000000000000c18242f3947535f6a7683909ca9ab9d908376695f6774818e9aa8ac9f92867a6d6054473d3221160c02000000000000000000000000000000000006121f2b3844505c666d6e6f72767c838f949fa59e948e81746b6054483b31251a0e020000000000000000000000000000000000000000000814212e3a47535f6a7784919d9b948f8b898a8d92989fa2a29f98928d8a898b90949c9c8f8276675d5145392c201306000000000000000000000000000000000000000000000000000000000000000000060b0f12171b1f20222527292b2c2c2d2c2c2b29272522201f1b17120f0b0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b0f12171b1f20222527292b2c2c2d2c2c2b29272522201f1b17120f0b0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b0f141a1e212225282a2b2c2c2c2b2a272521201e1a140f0b04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040607090c0e0f1112121313121211100e0c0a0807050200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000205060c10121316181a1c1d1e1f1f201f1f1e1d1c1a17151312100b06040100000000000000000000000000000000000000000000000004111c28333e48505557606060606060605e5c564e44392e23170b010e1a26313d4751595e5f606060606060605f524c443a3025190d010b17222e39444d555b5d60606060606060575550483e33281c1004000000000000000000000000000006131f2c3946525f6c7985929facacacada7a5a5a5a5a5a5a5a5a5a5a5a5a5a6a6a8a9a8a6aba39f9c9996918c87817b746d6761595049413930271e140a0000000000000000000000000000000000000000000000000000000000000c17232e3846535e6975828f9ca8a69e9c9ea6ac9f92867a6d6054473d3221160c020000000000000000000000000000000000000000000000000000000a141e2a333e48515b636d737f8791969fa4acaaa29f9a93908c898684828181808181828385878a8e91979c9fa6adaca59d9691857c6f6a60564c42382d20160c00000000000915212e3a45505a636e74818e939f9590867e756d68605c606c717b838e939f969083796d665c50453c31261a0e020000000000000006131f2c3945515d677783909daab5ab9a8d8073665b5044382b1f140a000000000000000000000000000000000000010c13202c3945525d6875828f9ba8b5a89b8f8275665b5044382b1f120600000000000000000000000000000000000007121d2b37434e5864717e8a97a1ab9f95887b6e616d7985929faba79b8e8174685d5245392c20130400000000000000000000000000000000000003101c28343f4a545c606162666b6f79828f97a1a69d93897d7063574d42362a1e120500000000000000000000000000000000000000000006121e2b37424e5765727e8b95a09e9c9896979a9fa2a39f98928c85817e7d7e838c929f92867a6d6054473a2d211407000000000000000000000000000000000000000000000000000000000000000000000003060b0f121315181a1c1e1f1f201f1f1e1c1a181513120f0b0603000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003060b0f121315181a1c1e1f1f201f1f1e1c1a181513120f0b0603000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090e121415181b1d1e1f201f1e1d1b181414110e090200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030607090b0e0f1112121313121211100f0d0b09070603000000000000000000000000000000000000000000000000000000000814212d3945505a61646c6c6c6c6c6c6c6b6760564b3f33271b0e04111d2a36424e59636a6c6c6c6c6c6c6c6c6c5e564c41362a1d11050e1a27333f4a555f676a6c6c6c6c6c6c6c64615a5044392d201408000000000000000000000000000006131f2c3946525f6c7985929f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9fa39f9f9e9d9c9b99979992908c89847f7b746e69605d554f443f382f271e150c0200000000000000000000000000000000000000000000000000000000000006111c2a36424d5763707d8a96a1acaaa8aab0a79b8e8174685d5245392c20130400000000000000000000000000000000000000000000000000000000020c18212c363f49515b636d727d848e939a9fa6acaca49f9d999992918f8e8d8d8d8e8f909298979a9ea1a9abaca7a09d938e847c6f6a60584e443a2f261c0e05000000000005111d29343f48525b606d78818f959f98928b827a706b676d747e8690959d9891847b6e675d544a3f332a1f1409000000000000000004101d2935404b556673808d99a9b3ab9e9184786c6053463d2f261c1106000000000000000000000000000000000008131e28343f4a54606d7a86929facb1a7988b7e7265544a3f33281c0f03000000000000000000000000000000000000010f1a26313c4653606d7985929eaca7998c7f7366717d8a98a2aca095897c6f63564c4135291d1104000000000000000000000000000000000000000b17232e38424a505354565960676d7a85919eaba59c8f8276695e53463a2d211407000000000000000000000000000000000000000000020e1a26313c4653606c78839097a1a8a4a3a4aaa29f98928d86807a74717072767f8c94998a7d7063574a3d3024170a0000000000000000000000000000000000000000000000000000000000000000000000000000030506080b0e1011121313131211100e0b080605030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030506080b0e1011121313131211100e0b0806050300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020507080b0e101112131211100e0b0807050200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001040613131313131313130d0c0a070200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1723303c4955616c71797979797979797772675c4f43372a1d1106121f2c3845525e6a75797979797979797976685e5246392d201307101d2a36434f5b67717779797979797979706c6155493c3023160a000000000000000000000000000006131f2c3946525f6c798592939393939393939393939393939393939398929291918f8e8d8b8886837f7c78736e69615f57514c433e332d261d150c0300000000000000000000000000000000000000000000000000000000000000000e1a25313b4653606c7884919e9f9f9f9f9fa095897c6f63564c4135291d11040000000000000000000000000000000000000000000000000000000000060f1a242d374049515b626b6f7a818790949b9fa3ababa9aba39f9d9c9b9a9a9a9b9b9d9fa2aaa7ababaca49f9c959189817a6e6a60584e463d32281d140a000000000000010c18222d364044505c666d79829095a09f938f857d746f79818a9298a09992867c6f695e554b42382e21180e030000000000000000000c18242f3c4956636f7c8997a1adada196897d7063584e42382d22170f06000000000000000000000000000000081119242f3844505c66727e8b98a3aeaca095877b6e6154483b2d22170b00000000000000000000000000000000000000000a151f2c3845515c6773808d9aa4aa9d9184776a75828e9baaaa9d9084776b6054443a3024190d010000000000000000000000000000000000000006111c2630383f444647494f555e68727f8c99a3ab9f94877b6e6154483b2e2115080000000000000000000000000000000000000000000009151f2b3844505b666f7c8591969c9f9f9e9c98928d86807a736d686463656d76828f998d8073665a4d4033271a0d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070d111320202020202020201a1917130e0700000000000000000000000000000000000000000000000000000000000000000000000000000000000002080c101212131313131313131306040000000000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717e8686868686868684776b5e5144382b1e110613202c3946535f6c7987868686868686867a6d6154473a2e211407111e2a3744515d6a7783868686868686867e7064574a3d3124170a000000000000000000000000000006131f2c3946525f6c798686868686868686868686868686868686868686858585848381807e7c7976736f6c65615e57534d45413a3127221b140b0300000000000000000000000000000000000000000000000000000000000000000009141f2b3844505b66737f8c999393939393939084776b6054443a3024190d0100000000000000000000000000000000000000000000000000000000000008121c252e374048515960686d757c83898e92999b9fa2a9a6a8a9a9a7a7a7a7a7a8aaa9a8a6aaa29f9c9a938f89847d746d685f584e463d342b20160b020000000000000006111b2428343f4a545d676d7a839196a19e979188807b838e929fa29f93877d706a5f574d433a30261c0f06000000000000000000000713202d3a4653606d7985919eabb2a89c8f82766a60544a3f3328211810080200000000000000000000000309111a232935414c56606d7884919eaab3a99d908377695e53463a2d1c1106000000000000000000000000000000000000000004101c2834404b55616e7b87939faca095887b6f7985929faca3988b7f7265594f4332281e13080000000000000000000000000000000000000000000a141e262e34383a3b3d434c56606d7a86929faca6978a7e7164574b3e3124180b00000000000000000000000000000000000000000000030f1c28333f4a545f6a6f7c848c909292918f8b86807b746e68605d56565b64707d8a998f8275685c4f4235291c0f0200000000000000000000000000050a0d0f10101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010100f0d0a05000000000000000000000000000000000000000000000105090b0b131313131309090703000000000000000003070b0d0e1313131311100e0a0600000306080913131313100f0d09040004090e111213131313130a090704000000000000000000000000000000000003080b0d0e13131313070604000000000000000005090d0f1013131312110f0c07010000000000000000000000000000000000000000000000000000000000000000040c13181d202d2d2d2d2d2d2d2d2626231f19120a01000000000000000000000000000000000000000000000000000000000000000000000000000000060d13181c1e1f202020202020202013100c07010000000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a93939393939184776b5e5144382b1e110613202c3946535f6c7986929393939393877a6d6154473a2e211407111e2a3744515d6a77849093939393938a7d7064574a3d3124170a000000000000000000000000000005121f2b3844515d6974797979797979797979797979797979797979797979787877767573716f6d666662605b53534d47423c352f281f17110a0200000000000000000000000000000000000000000000000000000000000000000000030f1c28333f4a54616e7a8786868686868686867f7265594f4332281e130800000000000000000000000000000000000000000000000000000000000000000a131c252e363f474f565d606a6f767c81868b8e929797999b9c9e9e9f9f9f9e9e9d9d9b999798928f8b87827d78706b605d564e463c342b22190e05000000000000000000091217232e38424b555d686e7b849197a2a19a938d8890959da59d928b7f726b61584e453b31281e140a000000000000000000000006121f2b3844505c6673808d99a4afaa9f94897c6f665b50443d332a2219140e09060400000100000406090e151a232b353d45525d68717e8b96a0acada1978b7e7165574d42362a1e0a000000000000000000000000000000000000000000000c18232e3946535f6976828f9ca9a7998c7f737d8a98a2ac9f92867a6d6054473d3221160c02000000000000000000000000000000000000000000020c141c23282b2d2e313a45525d687783909daaa6998d8073665a4d4033271a0d00000000000000000000000000000000000000000000000b17222d38424e585f6a6f797f83858684827f7a736e69615e56524c4a54606d7987868683776a5e5144372b1e11040000000000000000000000030a1016191c1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1c1916100a0300000000000000000000000000000000000000060c1115171820202020201615130f0a040000000001080e13171a1a202020201e1d1a16110b0a0f131516202020201c1b1915100a0f151a1d1f2020202020171614100b050000000000000000000000000001080e14171a1b202020201413100c0701000000020a1015191c1c2020201f1e1b18130c05000000000000000000000000000000000000000000000000000000000000040d161d24292c393939393939393933322f2a241c130a00000000000000000000000000000000000000000000000000000000000000000000000000000710181f24282b2c2d2d2d2d2d2d2d2d1f1c18120b0300000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a979f9f9f9e9184776b5e5144382b1e110613202c3946535f6c7986929f9f9f9f94877a6d6154473a2e211407111e2a3744515d6a7784909d9f9f9f978a7d7064574a3d3124170a000000000000000000000000000003101c2935414d5862696c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6b6a6968666462605c545653504946423b373129241e160d06000000000000000000000000000000000000000000000000000000000000000000000000000b17222d3846525e686e797979797979797979726d6256473d3220160c020000000000000000000000000000000000000000000000000000000000000000010a131c242d353d444c525860626a6f757a7e8285888a8d8e909192929292929191908e8c8a8985827f7b75706c656059524c433c332b22191007000000000000000000000006111c263039434c565e696f7c859299a3a49f9a959da0a79e948d80746d62594f463c33291f160c02000000000000000000000003101c28343f4a54616e7b87939fabb0a69d9083786c60594f453c342a251f1a1312100c070e070c1013131a1f262b353d47505a606d7a84919ea8b2a99e9285796d6053473b31251a0e0000000000000000000000000000000000000000000007121d2b37424d5764717d8a97a1aa9d908377818e9baaa79b8e8174685d5245392c2013040000000000000000000000000000000000000000000000020a11171c1f20212935414c566774818e9aa7a79a8d8174675a4e4134271b0e010000000000000000000000000000000000000000000006111c262f3c464e585f676d727678797876726d68615e56524c454145515d67757979797771675b4f43362a1d100400000000000000000000040d151c21262929292929292929292929292929292929292929292929292929292929292929292929292929292929292929292929292929292929292929292929292929292929292929292929292929292929292929292929292929292926211c150d0400000000000000000000000000000000000911181d2124252d2d2d2d2d23221f1b160f070000020b12191f2326272d2d2d2d2a2927221c15151b1f22232d2d2d2d292825211b141920262a2c2c2d2d2d2d2423201c1610080000000000000000000000020b131a1f2426272d2d2d2c201f1d18120b0300040c141b212528292d2d2d2b2a28231e170f0600000000000000000000000000000000000000000000000000000000010c161f282f35394646464646464646403f3b352e261c120700000000000000000000000000000000000000000000000000000000000000000000000006101922293035383939393939393939392c29231d150d03000000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a97a4acaa9e9184776b5e5144382b1e110613202c3946535f6c7986929facaca094877a6d6154473a2e211407111e2a3744515d6a7784909daaaca3978a7d7064574a3d3124170a0000000000000000000000000000000d1925303b4650585d5f606060606060606060606060606060606060605f5f5e5e5c5b5a585553514b4946443f3836312b261f19130c04000000000000000000000000000000000000000000000000000000000000000000000000000006111c2a36414d565e616c6c6c6c6c6c6c6c6c65625b5146342b210e0400000000000000000000000000000000000000000000000000000000000000000000010a121b232b323a41454e54586062686d7175797b7e80818384858586858584848381807e7c7975726e6963605b534f45413a312a21191007000000000000000000000000000a141e27313a444d575f6a707d879299a49f9f9f9fa9a0958f82786d605b51473e342a21170d04000000000000000000000000000b17232e3846535e6975818e99a3aeab9f958b7f726b60574e463e36302a25201f1c181b1a1b181c1f20262b31373f474f59626c74818e97a1adada1978d8073675c514538291f140900000000000000000000000000000000000000000000000e1a26313c4653606d7984919eaba095887b85929faba095897c6f63564c4135291d110400000000000000000000000000000000000000000000000000060b10121319242f404d5a6673808d99a6a79b8e8174685b4e4135281b0e0200000000000000000000000000000000000000000000000a141d2a343c464e555d6065696c6c6b6965615e56524d46413b35414b555d6b6c6c6c6a675f564b3f33271b0e02000000000000000000030d161f262d3235363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363635322d261f160d0300000000000000000000000000000009121b22292e31323939393939302f2c2721191007010b141d242b303334393939393736332e271f20272b2e2f393939393635312c261e242b3136383939393939302f2c28211a1108000000000000000000010b141d242b303334393939392d2c29241d150d030c161e262d3235363939393837342f2921180f0000000000000000000000000000000000000000000000000000000007131d28313a404553535353535353534d4b4740382e24190e0200000000000000000000000000000000000000000000000000000000000000000000020d18222b343b414445464646464646464638342f271f150b010000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a97a4b0aa9e9184776b5e5144382b1e110613202c3946535f6c7986929facada094877a6d6154473a2e211407111e2a3744515d6a7784909daab0a3978a7d7064574a3d3124170a00000000000000000000000000000008141f2a343e464d51525353535353535353535353535353535353535352525251504e4d4b494645403c3937332d2a251f1a150d0801000000000000000000000000000000000000000000000000000000000000000000000000000000000e1925303b444d52545f6060606060606060585651493f3422190f00000000000000000000000000000000000000000000000000000000000000000000000000091119202830353d43474e54565e6164656c6e717375767778797979787877767573716f6d6665615f57535049413d352f281f180f070000000000000000000000000000020c151f28323b454e58606b717e8793939393939393969083796d665c50493f352c22190f05000000000000000000000000000006111c2a36424d57616e7b86929fa8b1a79f92877d6f6a5f585046413b36312d2c282327272723282c2d31373c42475159606b717e8b939da9b1a79e92857a6d61554b4034291c1004000000000000000000000000000000000000000000000009141f2c3844505c6673808c99a4a79c8f828f97a2aa9d9084776b6054443a3024190d010000000000000000000000000000000000000000000000000000000306081926323f4c5965727f8c98a5a79b8e8174685b4e4135281b0e020000000000000000000000000000000000000000000000020b18222a343c434b5154595d5f5f5e5c5854524c46423b36302f3a434b515e6060605e5b564d44392e22170b000000000000000000000a151f2831383e424343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343423e3831281f150a000000000000000000000000000006111b242d343a3d3e46464646463c3b38322b23190f08121d262f363c3f414646464644423f3931292b32373b3c4646464643413d3830282d353d424546464646463d3c38332c231a1005000000000000000008131d262f363c4041464646463a39352f271f150b141e2830383e41434646464544403a332a210f050000000000000000000000000000000000000000000000000000010d18242f3a434b515f606060606060605957524a40352a1f13070000000000000000000000000000000000000000000000000000000000000000000008131f29343d464c5152535353535353535345403931271d12070000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a97a4acaa9e9184776b5e5144382b1e110613202c3946535f6c7986929facaca094877a6d6154473a2e211407111e2a3744515d6a7784909daaaca3978a7d7064574a3d3124170a000000000000000000000000000000020d18222c343b41444646464646464646464646464646464646464646464545444342403e3c3a38342e2d2b27221b1a140e090300000000000000000000000000000000000000000000000000000000000000000000000000000000000008141f29323b4146475353535353535353534c4a463f372d2310070000000000000000000000000000000000000000000000000000000000000000000000000000070e161e242932373d43484c5254535b6062646668696b6b6c6c6c6b6b6a6a68666462605c5455534d46443f382f29241e160d0600000000000000000000000000000000030d162029333c464f59616c727f8686868686868686847b6e675d544a3f372d231a1007000000000000000000000000000000000e1a25313b46535f6973808d96a0abaea39991857c6f6a615a524d46423c3a38342e3434342e34383a3c42474d535b626b707d86929fa5afaa9f958b7e71685e5243392f23180c00000000000000000000000000000000000000000000000003101c28343f4a54616e7b87939fac9e948f949ea9a3988b7f7265594f4332281e13080000000000000000000000000000000000000000000000000000000000000c1925323f4c5865727f8b98a5a79b8e8174685b4e4135281b0e02000000000000000000000000000000000000000000000000061018222a313a4145474c50525352504c4746413a36302a2528313a414547535353514f4b443b32281d110600000000000000000005101c26313a42494e50505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050504e49423a31261c1005000000000000000000000000010c18222d363f454a4b53535353534948433d352b21160e19242f3840474c4d53535353514f4a433b31343d434749535353534f4e49423a30353f474e5253535353534a48443e352c21160b00000000000000030e1a242f3841474c4e535353534745403931271d121b26303a42494e4f53535352504c453c3321170d030000000000000000000000000000000000000000000000000004111d2935404b555d6c6c6c6c6c6c6c6c66635c52473b2f23170a000000000000000000000000000000000000000000000000000000000000000000000c1824303b464f575d5f606060606060605f514b43392f23180c0000000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a979f9f9f9e9184776b5e5144382b1e110613202c3946535f6c7986929f9f9f9f94877a6d6154473a2e211407111e2a3744515d6a7784909d9f9f9f978a7d7064574a3d3124170a0000000000000000000000000000000006101a222a303538393939393939393939393939393939393939393939393837363533312f2d2c2823201f1b17110e09030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d1720293036393b4646464646464646463f3e3a342d251b1100000000000000000000000000000000000000000000000000000000000000000000000000000000040c131920272b32383a41464749505355575a5b5d5e5f5f5f5f5f5e5e5d5b59575653514a4846423b37332d261d19130c04000000000000000000000000000000000000040e17212a343d47505a626d727979797979797979786e695e554b42382e251b1108000000000000000000000000000000000009141f2a36424d57606d79849199a3afaba19791857c716c615e56534d494644404141414141404546494e53575f616d727d869298a3aeaba2989083776c60564c4131271d1207000000000000000000000000000000000000000000000000000c17232e3846535e6975828f9ca8a69e9c9ea6ac9f92867a6d6054473d3221160c020000000000000000000000000000000000000000000000000000000000000c1925323f4c5865727f8b98a5a79b8e8174685b4e4135281b0e02000000000000000000000000000000000000000000000000000610181f282f35393a3f43454645433f3a3936302a251f191f282f35393a46464644433f39322920160b000000000000000000000a16212d38424c545a5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5a544c42382d21160a00000000000000000000000005111d29343f48505658606060606056544f473d32271b131f2b36404a52585a606060605d5b554d43393d464e5456606060605c5a544c42333d4751595e5f6060606057554f473e33281c100400000000000008141f2b36414a52585a6060605f5e514b43392f2418212d38424c545a5c6060605e5c574f4533291f1409000000000000000000000000000000000000000000000000000613202c3945515d677679797979797979736e63574b3f3226190c00000000000000000000000000000000000000000000000000000000000000000003101c2835414c5761696c6c6c6c6c6c6c6c6c5c554b4034291c100400000000000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a93939393939184776b5e5144382b1e110613202c3946535f6c7986929393939393877a6d6154473a2e211407111e2a3744515d6a77849093939393938a7d7064574a3d3124170a00000000000000000000000000000000000810181f25292b2c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2c2c2b2b2928272522201f1c1813120f0b06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e171f252a2d2e39393939393939393932312e29231b1309000000000000000000000000000000000000000000000000000000000000000000000000000000000002080d151b21272c3035393a3f4446484b4d4e505152525352525151504e4d4b494644403b3a36312b27221b140b08010000000000000000000000000000000000000000050f18222b353e48515b62656c6c6c6c6c6c6c6c6b615e574d433a30261c1309000000000000000000000000000000000000030e1a26313b45515d676f7c87929fa4aea9a19791867e756e68615e575653514a4e4e4d4e4e4b515356575f62696e767f879298a2aaafa39992857c6e655b50443a301f150b010000000000000000000000000000000000000000000000000006111c2a36424d5763707d8a96a1acaaa8aab0a79b8e8174685d5245392c201304000000000000000000000000000000000000000000000000000000000000000c1925323f4c5865727f8b98a5a79b8e8174685b4e4135281b0e020000000000000000000000000000000000000000000000000000060d161d24292c2d323639393836322e2d2a251e19140d161d24292c2d3939393736332e2820170e04000000000000000000000d1926323e49545e666969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969665e54493e3226190d0000000000000000000000000915212e3a45505a62656c6c6c6c6c6360594f43382c1f1723303c47525c64676c6c6c6c6a675f554a3f434e5860626c6c6c6c69655e54453b424e59636a6c6c6c6c6c6361594f44382c2014070000000000000b1724303c47525c64676c6c6c6c6a5d554b4035291d25323e49545e66696c6c6c6b686157453b31251a0e020000000000000000000000000000000000000000000000000714202d3a4753606d7986868686868686807366594d4033261a0d00000000000000000000000000000000000000000000000000000000000000000005121e2b3844515d6973787979797979797976675c5145382c1f130600000000000000000000000000000000000000000000000000000000000b1724313e4a5764717e8686868686868684776b5e5144382b1e110613202c3946535f6c7987868686868686867a6d6154473a2e211407111e2a3744515d6a7783868686868686867e7064574a3d3124170a000000000000000000000000000000000000060d14191c1f1f202020202020202020202020202020202020201f1f1f1e1d1b1a18161313100c070503000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d14191e20212c2d2d2d2d2d2d2d2d2524221e1811090100000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0f161b1e25292d2d3337393b3e40424344454646464545444342403e3c3a38342e2d2a261f1b17110a020000000000000000000000000000000000000000000000061019232c363f4951565860606060606060605e54524d453b31281e140a010000000000000000000000000000000000000009141f2935404b55606a717e8b929ca4afa9a198928a817b746e696562605c545b5a5a5a5b545c6063666a6e747b828b9299a2aaaca49f92877d706a5f53493f32281e0d030000000000000000000000000000000000000000000000000003090e1a25313b4653606c7884919e9f9f9f9f9fa095897c6f63564c4135291d1109030000000000000000000000000000000000000000000000000000000000000c1925323f4c5865727f8b98a5a79b8e8174685b4e4135281b0e02000000000000000000000000000000000000000000000000000000040c13181d2021262a2c2c2b292521201d19130e09040c13181d20212d2d2d2b2a27221d160e0500000000000000000000000f1c2935424e5a6670767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767670665a4e4235291c0f0000000000000000000000000b1724313d4a56626c7179797979796f6b6054483b2f221a26333f4c58646e74797979797771675b4f424754606a6f79797979767065574d4245525e6a757979797979706b6155483c2f2316090000000000000d1a2633404c58646e747979797975675d5145392c1f2835414e5a667076797979787368574d42362a1e12050000000000000000000000000000000000000000000000000714202d3a4753606d7a8693939393938c807366594d4033261a0d00000000000000000000000000000000000000000000000000000000000000000006121f2c3945525f6c788586868686868686796d6053473a2d20140700000000000000000000000000000000000000000000000000000000000a1723303c4955616c71797979797979797772675c4f43372a1d1106121f2c3845525e6a75797979797979797976685e5246392d201307101d2a36434f5b67717779797979797979706c6155493c3023160a0000000000000000000000000000000000000002080d1012131313131313131313131313131313131313131313121211100f0d0b09070604000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080e111414202020202020202020191816120d060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0f13191d2022272b2d2f313335363838393939383837373533312f2d2c2823211e1a140f0b06000000000000000000000000000000000000000000000000000007111a242d373f464a4c5353535353535353524846423b33291f160c020000000000000000000000000000000000000000030c18242f39434e58626d73808d929fa4acaaa29f938e86807b76726f6d6669686767676869666d6f72777b81868f949fa3ababa39a938c7f726b61584e41382d20160c00000000000000000000000000000000000000000000000000050d141a1e212b3844505b66737f8c999393939393939084776b6054443a30241e1a140d0500000000000000000000000000000000000000000000000000000000000c1925323f4c5865727f8b98a5a79b8e8174685b4e4135281b0e020000000000000000000000000000000000000000000000000000000001070d111314191d1f201f1d191413110d0802000001070d1113142020201e1d1b17110b04000000000000000000000000101d293643505c6976828383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838276695c504336291d100000000000000000000000000b1825323e4b5865717e86868686867d6f6356493c30231a2734414d5a6774808686868683776a5d51404b55626f7c868686868276695e534646535f6c7987868686867d7063574a3d3024170a0000000000010e1b2734414e5a67748086868687796d6053473a2d202936434f5c6976828686868578695e53463a2d2114070000000000000000000000000000000000000000000000000714202d3a4753606d7a86939f9f9f998c807366594d4033261a0d00000000000000000000000000000000000000000000000000000000000000000006121f2c3945525f6c7885929393939393867a6d6053473a2d20140700000000000000000000000000000000000000000000000000000000000814212d3945505a61646c6c6c6c6c6c6c6b6760564b3f33271b0e04111d2a36424e59636a6c6c6c6c6c6c6c6c6c5e564c41362a1d11050e1a27333f4a555f676a6c6c6c6c6c6c6c64615a5044392d201408000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020507081313131313131313130c0b090601000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080d1113171b1f20222427282a2b2c2c2c2c2c2b2b2a28262423201f1c1814120e0903000000000000000000000000000000000000000000000000000000000008121b252d343a3e3f4646464646464646453b3a36302921170d040000000000000000000000000000000000000000000007121d27313d46505a636e73808c939aa1a9aea59e98928d87837f7c79777674747474747677797c7f83888e92999fa6afa8a09992887f726d62594f463c2f261b0e04000000000000000000000000000000000000000000000000050f171f252a2d2e333f4a54616e7a8786868686868686867f7265594f43322e2d2a251f170f05000000000000000000000000000000000000000000000000000000000c1925323f4c5865727f8b98a5a79b8e8174685b4e4135281b0e02000000000000000000000000000000000000000000000000000000000000010406070c10121312100c070705010000000000000104060713131311100e0b06000000000000000000000000000013202d394653606c79868f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f86796c605346392d20130000000000000000000000000b1825323e4b5865717e8b939393897c6f6356493c30231a2734414d5a6774808d93939084776a5d5145515d6774818e939393877b6e61544a3f535f6c79869293938a7d7063574a3d3024170a0000000000000b1825313e4b5864717e8b9399897c6f6356493c30232633404d596673808c9397877b6e6154483b2e2115070000000000000000000000000000000000000000000000000714202d3a4753606d7a8693a0aca6998c807366594d4033261a0d00000000000000000000000000000000000000000000000000000000000000000006121f2c3945525f6c7885929f9f9f9f93867a6d6053473a2d201407000000000000000000000000000000000000000000000000000000000004111c28333e48505557606060606060605e5c564e44392e23170b010e1a26313d4751595e5f606060606060605f524c443a3025190d010b17222e39444d555b5d60606060606060575550483e33281c1004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000105060b0f121315181a1b1d1e1f1f201f1f1e1e1d1b1a18161312100c070502000000000000000000000000000000000000000000000000000000000000000009131b23292e31323939393939393939382e2d2a251f170f050000000000000000000000000000000000000000000000010b151f2b343f48525c646e737f8892979ea5acaaa29f9a93908c898684828181808181828486898c90959b9fa3ababa39f9691877e726d635b51473e332a1d140a000000000000000000000000000000000000000000000000030d17212931363a3b464646525e686e797979797979797979726d62564746463b3a36312921170d030000000000000000000000000000000000000000000000000000000c1925323f4c5865727f8b98a5a79b8e8174685b4e4135281b0e02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202d394653606c7986939c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9386796c605346392d20130000000000000000000000000b1825323e4b5865717e8b989f96897c6f6356493c30231a2734414d5a6774808d9a9d9084776a5d514753606d7a85929fa4998c8073665c5044535f6c7986929f968a7d7063574a3d3024170a0000000000000915222f3c4855626f7b8898988c7f7265594c3f302424303d4a5763707d8a96978a7e7164574a3e2e23180c0000000000000000000000000000000000000000000000000714202d3a4753606d7a8693a0ada6998c807366594d4033261a0d00000000000000000000000000000000000000000000000000000000000000000006121f2c3945525f6c7885929fabaca093867a6d6053473a2d2014070000000000000000000000000000000000000000000000000000000000000c17222c363e45494a53535353535353514f4b443c32281d1206000915202b353f474e5253535353535353535346413a32281e13080006111d27323b444a4f51535353535353534a49443e362c22170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003060809131313131312070705010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000105090b0b1313131313130d0d0b07070b0d0d1313131313130b0b09050100000000000000000000000000000000000000000000000000000000000000000000030506080b0d0f101112131313121211100f0d0b09070604000000000000000000000000000000000000000000000000000000000000000000000000010911181e2224252d2d2d2d2d2d2d2d2b21201e1a140d0500000000000000000000000000000000000000000000000000030d19222d36404a525c646d727d858f939da0a7acaca49f9c989892918f8e8d8d8d8e8f919299999da0a7acaca49f99928d847d716c635b51493f352c21180b0200000000000000000000000000000000000000000000000009141f29333b4246485353534d565e616c6c6c6c6c6c6c6c6c65625b515353534846423b33291f14090000000000000000000000000000000000000000000000000000000c1925323f4c5865727f8b98a5a79b8e8174685b4e4135281b0e02000000000000000000000000000000000000000000000000000000000000000003070b0d0e13131313131312100d0a06050300000000000000000000000000000000000000000000000000000013202d394653606c7986939f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9386796c605346392d20130000000000000000000000000b1825323e4b5865717e8b98a296897c6f6356493c30231a2734414d5a6774808d9a9d9084776a5d514e5764717e8b98a2ab9e9184796d605346535f6c7986929f968a7d7063574a3d3024170a0000000000000613202d394653606c7985929b8e817568564c413529212e3a4754616d7a87969a8d807467544b4034281c100400000000000000000000000000000000000000000000000714202d3a4753606d7a8693a0ada6998c807366594d4033261a0d00000000000000000000000000000000000000000000000000000000000000000006121f2c3945525f6c7885929fabada093867a6d6053473a2d20140700000000000000000000000000000000000000000000000000000000000005101a242c33393c3e4646464646464644433f39322a20160c0100040f19242d353d42454646464646464646463936302820160c0200000b16202932393f4344464646464646463d3c39332c231a100500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0f12151520202020201f1413110d0802000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060c111517182020202020201a1917131317191a202020202020181715110c060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060d1216181920202020202020201f1514120e090200000000000000000000000000000000000000000000000000000007101b242e38404a525b636b707a828990959c9fa4abaca9aaa39f9d9c9b9a9a9a9b9c9d9fa3abaaababa39f9a938f8780796f6b615a51493f372d231a0f06000000000000000000000000000000000000000000000000020e1a25313b454d535f6060606060605d5f60606060606060605c6060606060605f534d453b31251a0e0200000000000000000000000000000000000000000000000000000c1925323f4c5865727f8b98a5a79b8e8174685b4e4135281b0e0200000000000000000000000000000000000000000000000000000000000001080e13171a1a20202020201f1e1d1a1613120f0b060000000000000000000000000000000000000000000000000013202d394653606c798693939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939386796c605346392d20130000000000000000000000000b1825323e4b5865717e8b98a296897c6f6356493c30231a2734414d5a6774808d9a9d9084776a5d51535f6a7683909caaa9a1978a7d7064574d535f6c7986929f968a7d7063574a3d3024170a00000000000006121f2b3844505b6676838f9c918477685d5246392d202d3946525e687884919d908376665c5145382c1f130600000000000000000000000000000000000000000000000714202d3a4753606d7a8693a0ada6998c807366594d4033261a0d00000000000000000000000000000000000000000000000000000000000000000006121f2c3945525f6c7885929fabada093867a6d6053473a2d2014070000000000000000000000000000000000000000000000000000000000000008121a22282d3031393939393939393837332e2820180e0400000008121b242b31363839393939393939392e2d2a251e160e05000000040e1720272e3336373939393939393931302d28221a110800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060e151b1f21222c2d2d2d2d2c21201d19130c04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000911181d2124252d2d2d2d2d2d2726231f1f2326272d2d2d2d2d2d2524211d1811090000000000000000000000000000000000000000000000020608080b0e1011121313131312100f0d0a0706040100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000106090b0c1313131313131313120807050200000000000000000000000000000000000000000000000000000000000009121c262e384049515961686e757d83898f93999c9fa2aaa7a8aaa9a7a7a7a7a7a9a9a8a6a9a19e9b99928e87827c736d67605950483f372d251b11080000000000000000000000000000000000000000000000000005121e2a36424d575e6c6c6c6c6c6c6c6a665f55535353545e66696c6c6c6c6c6c6c5e574d42362a1e120500000000000000000000000000000000000000000000000000000c1925323f4c5865727f8b98a5a79b8e8174685b4e4135281b0e020000000000000000000000000000000000000000000000000000000000020b12191f2326272d2d2d2d2d2c2b2a2723201f1b17110a02000000000000000000000000000000000000000000000013202d394653606c798686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686796c605346392d20130000000000000000000000000b1825323e4b5865717e8b98a296897c6f6356493c30231a2734414d5a6774808d9a9d9084776a5d4a54626e7b88949f9f9c9f9c8f8276695e53535f6c7986929f968a7d7063574a3d3024170a000000000000030f1c28333f4a546773808d9a96877a6d6154473a2e212a36414c566875818e9b9286796d6053463a2d20130700000000000000000000000000000000000000000000000714202d3a4753606d7a8693a0ada6998c807366594d4033261a0d00000000000000000000000000000000000000000000000000000000000000000006121f2c3945525f6c7885929fabada093867a6d6053473a2d20140700000000000000000000000000000000000000000000000000000000000000000810171c2123242d2d2d2d2d2d2d2b2a27231d160e06000000000009121920262a2c2c2d2d2d2d2d2d2d21201d19130c050000000000050e161d22272a2a2d2d2d2d2d2d2d2423201c1710080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006101820262b2e2f3939393939382e2d29251e160e04000000000000000000000000000000000000000000000000000000000000000000000000000000000009121b22292e313239393939393934332f2b2b2f333439393939393932312e29221b1209000000000000000000000000000000000000000306090f121415181a1c1e1f1f20201f1e1d1c19171413100d0704000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141c262e373f474f565e616b70777d82878b8f9298989a9b9d9e9e9f9f9f9e9d9d9b999797928e8a86817b756f6a605d554f473e362d251c130900000000000000000000000000000000000000000000000000000714212d3a46535e69767979797979797771665b4f464e5a66707679797979797976695e53463a2d21140700000000000000000000000000000000000000000000000000000c1925323f4c5865727f8b98a5a79b8e8174685b4e4135281b0e0200000000000000000000000000000000000000000000000000000000010b141d242b303334393939393939383734302d2b27221b140b080000000000000000000000000000000000000000000013202d3946535f6c767979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979766c5f5346392d20130000000000000000000000000b1825323e4b5865717e8b98a296897c6f6356493c30231a2734414d5a6774808d9a9d9084776a5d515c6673808d9a9f948f949f93877b6e61544a5f6c7986929f968a7d7063574a3d3024170a000000000000000b17222d3e4a5764717d8a9796897d7063564a3d302325303f4c5965727f8c9898897c6f6256493c2f23160800000000000000000000000000000000000000000000000714202d3a4753606d7a8693a0ada6998c807366594d4033261a0d00000000000000000000000000000000000000000000000000000000000000000006121f2c3945525f6c7885929fabada093867a6d6053473a2d201407000000000000000000000000000000000000000000000000000000000000000000050c11141717202020202020201e1d1b17120c0400000000000000080f151a1d1f20202020202020201413110d080200000000000000040b11171a1d1e20202020202020171614100b0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040e18222a31373a3c4646464646453a3935302820160c0200000000000000000000000000000000000000000000000000000000000000000000000000000006111b242d343a3d3e464646464646403f3b36363b3f404646464646463e3d3a342d241b110600000000000000000000000000000000040a0f13151a1f21222527292a2c2c2d2c2c2b2a28262320201d1813100c0700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000406070a0d0f11121313131212100e0c0906060300000000000000000000000000000000000000000000000000000000000000020a141c252e353d444c525960636b70757b7e8285888b8d8f9091929292929191908e8c8a8885817d7a746e6a626058514b433d352c241c130a0100000000000000000000000000000000000000000000000000000815212e3b4854616e7b86868686868683776a5d50444f5c6976828686868686867b6e6154483b2e21150800000000000000000000000000000000000000000000000000000c1925323f4c5865727f8b98a5a79b8e8174685b4e4135281b0e020000000000000000000000000000000000000000000000000000000008121d262f363c3f414646464646464543403d3937332d261d1a110a010000000000000000000000000000000000000000121e2b37434f5a646c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c645a4f43372b1e120000000000000000000000000b1825323e4b5865717e8b98a296897c6f6356493c30231a2734414d5a6774808d9a9d9084776a5d53606d7985929e978f828f99998c8073665c505f6c7986929f968a7d7063574a3d3024170a000000000000000615212e3b4854616e7b8797998c7f7366594c40302523303c4956636f7c8999988b7f7265584c3f3025190d01060606000000000000000000000000000000000000000714202d3a4753606d7a8693a0ada6998c807366594d4033261a0d00000000000000000000000000000000000000000000000000000000000000000006121f2c3945525f6c7885929fabada093867a6d6053473a2d201407000000000000000000000000000000000000000000000000000000000000000000000004080a0b1313131313131311110e0b060100000000000000000004090e11121313131313131313070705010000000000000000000000060b0e1011131313131313130a0a08040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a15202a343c4347485353535353524746413a32281e13080000000000000000000000000000000000000000000000000000000000000000000000000000010c18222d363f454a4b5353535353534d4c474040474c4d5353535353534b4a453f362d22180c0100000000000000000000000000040a0f151b1f21262b2e2f32343637383939393938373533302d2c29241f1c18120c0700000000000000000000000000000000000000000000000000000000000000000000000000000001070c10131416191c1d1f1f20201f1e1d1b191613120f0b06000000000000000000000000000000000000000000000000000000000000020a131c232c323b41464f54596063686e7276797c7e808283848585868585848382807d7b7974716d68625f58544e454039312b231a120a010000000000000000000000000000000000000000000000000000000815212e3b4854616e7b87939393939083776a5d50444f5c6976828f93939393877b6e6154483b2e21150800000000000000000000000000000000000000000000000000000c1925323f4c5865727f8b98a5a79b8e8174685b4e4135281b0709080603000000000000000000000000000000000000000000000000030e19242f3840474c4d53535353535251504d4946443f382f2b231c130a01000000000000000000000000000000000000000f1b27333e49525a5f60606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060605f5a52493e33271b0f0000000000000000000000000b1825323e4b5865717e8b98a296897c6f6356493c30231a2734414d5a6774808d9a9d9084776a5d5764707d8a979e92857a86929e9184796d60535f6c7986929f968a7d7063574a3d3024170a000000000000030714212d3a46535e697885929b8f827568574d42362a202d3a4753606d7a86929b8e817568564c41362a1d11131313130b0b09050100000000000000000000000000000714202d3a4753606d7a8693a0ada6998c807366594d4033261a0d00000000000000000000000000000000000000000000000000000000000000000006121f2c3945525f6c7885929fabada093867a6d6053473a2d2014070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1b26313c464e53555f606060605f54524c443a3025190c030000000000000000000000000000000000000000000000000000000000000000000000000005111d29343f485056586060606060605a58524a4a52585a606060606060585650483f34291d1105000000000000000000000001070d161b20262b2e31373a3b3e4143444546464646454342403d3a39352f2c28231d18120b030000000000000000000000000000000000000000000000000000000000000000000000040a0f12181c1f202326282a2b2c2c2c2c2b2a282523201f1c17110f0a0300000000000000000000000000000000000000000000000000000000010a111a202930363d44484f54565e6165666d6f7174757778787979787877767573716f6d6664605d56534e47433c352f271f19110800000000000000000000000000000000000000000000000000000000000815212e3b4854616e7b87949f9f9d9083776a5d50444f5c6976828f9c9f9f94877b6e6154483b2e21150800000000000000000000000000000000000000000000000000000c1925323f4c5865727f8b98a5a89b8e8275685b4f422f2418191615130f0a040000000000000000000000000000000000000000000007131f2b36404a52585a60606060605f5e5d5a56535049413d352e251c130a000000000000000000000000000000000000000a16212c3740494f535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353534f4940372c21160a0000000000000000000000000b1825323e4b5865717e8b98a296897c6f6356493c30231a2734414d5a6774808d9a9d9084776a5d5e6975828f9c9a8d8075828f9b978a7d7064575f6c7986929f968a7d7063574a3d3024170a0000000001090f14181e2a36424d576975828f9c918578695e52463a2d202c3845515d677783909d918477685e5246392d202020202020181715110c06000000000000000000000000000714202d3a4753606d7a8693a0ada6998c807366594d4033261a0d00000000000000000000000000000000000000000000000000000000000000000006121f2c3945525f6c7885929fabada093867a6d6053473a2d2014070000000000000000000000000000000000000000000000000000000000000000000000000000000000060b0e1111131313131313131308070502000000000000000000000105090b0c13131313131313130f0e0c08040000000000000000000000000000000000000000000000000004090c0e0f131313131313130c0b09060100000000000000000000000000000004090c0e0f1313131313131310060503000000000000000006121f2b37434e585f626c6c6c6c6c6b615e564c4135291e150b000000000000000000000000000000000000000000000000000000000000000000000000000915212e3a45505a62656c6c6c6c6c6c67645c52525c64676c6c6c6c6c6c65625a50453a2e21150900000000000000000000040c131820272b32373b3c4347484b4d4f51525253535251504f4c4a4745403a38342e28231c150c070000000000000000000000000000000000000000000000000000000000000000040a0f161b1d23292c2d303335373839393939383635322f2d2b28221c1b150e090300000000000000000000000000000000000000000000000000000000080e171e252a32383d44484d5254545c60626567686a6b6b6c6c6c6b6a6a68666462605c5454524c47433c373229241d150d070000000000000000000000000000000000000000000000000000000000000815212e3b4854616e7b8794a1aa9d9083776a5d50444f5c6976828f9ca9a194877b6e6154483b2e21150800000000000000000000000000000000000000000000000000000c1925323f4c5865727f8b98a5a99c8f827669554b403529252522221f1b150e070000000000000000000000000000000000000000000b1723303c47525c64676c6c6c6c6c6c6b6a6763605b534f473f372e251c100700000000000000000000000000000000000005101b252e373e4346464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646433e372e251b10050000000000000000000000000b1825323e4b5865717e8b98a296897c6f6356493c30231a2734414d5a6774808d9a9d9084776a53616e7b87939f95887c707d8a979c8f8276695e5f6c7986929f968a7d7063574a3d3024170a000000030b131a2024272531404c5966737f8c9997877b6e6154483b2e2d2935404b556774818d9a96877a6d6154473a2e2d2d2d2d2d2d2524211d1811090000000000000000000000000714202d3a4753606d7a8693a0ada6998c807366594d4033261a0d00000000000000000000000000000000000000000000000000000000000000000006121f2c3945525f6c7885929fabada093867a6d6053473a2d201407000000000000000000000000000000000000000000000000000000000000000000000000000000040b12171b1d1e20202020202020201514120e090300000000000000060c1115171820202020202020201b1b18140f090100000000000000000000000000000000000000000002091015191b1c20202020202020191816120d0700000000000000000000000002091015191b1c202020202020201c13120f0b060000000000000815212e3a47535f6a6f7979797979786d685e52463d30271c12070000000000000000000000000000000000000000000000000000000000000000000000000b1724313d4a56626c71797979797979736e645858646e73797979797979716c62564a3d3124170b000000000000000000060d161d242932383c4347494e5355585a5c5d5f5f605f5f5e5d5b595653514b46454039342e271e191009010000000000000000000000000000000000000000000000000000000000060b151b21272c2f34383a3d40424445464646454543413f3c3938332d2b26201a150b0600000000000000000000000000000000000000000000000000000000050d141921272c33383b4146474a505355585a5c5d5e5f5f5f5f5e5e5d5b59575553504a4745413a37312b272018120b03000000000000000000000000000000000000000000000000000000000000000815212e3b4854616e7b8794a1a99d9083776a5d50444f5c6976828f9ca9a194877b6e6154483b2e21150800000000000000000000000000000000000000000000000000000b1825323e4b5865717e8b98a4aa9e918477675d5145392f32322f2e2b262019100700000000000000000000000000000000000000000d1a26333f4c58646e74797979797979787673706c656059514940372e22190f0400000000000000000000000000000000000009131c252c33373939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393937332c251c1309000000000000000000000000000b1825323e4b5865717e8b98a296897c6f6356493c30231a2734414d5a6774808d9a9d9084776a5b65737f8c999d9083766d7985919e93877b6e615f6c7986929f968a7d7063574a3d3024170a0000010b151d252b303435393d4a5763707d8a96978a7d7064574a3d2d39392f3e4b5864717e8b97968a7d7063574a3d2d39393939393932312e29221b120900000000000000000000000714202d3a4753606d7a8693a0ada6998c807366594d4033261a0d00000000000000000000000000000000000000000000000000000000000000000006121f2c3945525f6c7885929fabada093867a6d6053473a2d2014070000000000000000000000000000000000000000000000000000000000000000000000000000060e161d23272a2b2d2d2d2d2d2d2d2d22211e1a140e0600000000000911181d2224252d2d2d2d2d2d2d2d282724201a130b0300000000000000000000000000000000000000030c141b212528292d2d2d2d2d2d2d2625221e18110901000000000000000000030c141b212528292d2d2d2d2d2d2d29201f1b17110a02000000000915222f3c4855626f7c8786868686857a6d61594f42392e23180c0300000000000000000000000000000000000000000000000000000000000000000000000b1825323e4b5865717e8686868686868073675a5a6773808686868686867e7165584b3e3225180b0000000000000000060f181f282f353d43474e5355585f626567696a6b6c6c6c6c6b6a686663605d5553514b444039302b221b130b020000000000000000000000000000000000000000000000000000020a111720262b323839404547494c4f50525253535251504e4c4946443f3837312b262017110a0200000000000000000000000000000000000000000000000000000002080e161c21272c3036393b3f4446494b4d4f5051525253525251504f4d4a4846443f3a39352f2b26201b150c070100000000000000000000000000000000000000000000000000000000000000000815212e3b4854616e7b87949c9c9c9083776a5d50444f5c6976828f9c9c9c94877b6e6154483b2e21150800000000000000000000000000000000000000000000000000000b1724313e4a5764717d8a97acac9f93867a6d605347403f3f3f3c3b37322a22190e04000000000000000000000000000000000000000e1a2734414d5a6774808686868686858483807d78706b635b514940342b20160a000000000000000000000000000000000000010a131b21272b2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2b27211b130a01000000000000000000000000000b1825323e4b5865717e8b98a296897c6f6356493c30231a2734414d5a6774808d9a9d9084776a606c7884919e988b7e716673808d9a998c8073665c6c7986929f968a7d7063574a3d3024170a000009131d272f373c404146464754616d7a8796998d80736653493f46464646464855626e7b8898998c807366544a3f464646464646463e3d3a342d241b1106000000000000000000000714202d3a4753606d7a8693a0ada6998c807366594d4033261a0d00000000000000000000000000000000000000000000000000000000000000000006121f2c3945525f6c7885929fabada093867a6d6053473a2d20140700000000000000000000000000000000000000000000000000000000000000000000000000000e1820282e33363839393939393939392e2d2b261f180f0600000009121b23292e313239393939393939393534312c251d150b000000000000000000000000000000000000020c151e252c3134353939393939393932312e29231b13090000000000000000000c151e262c31343539393939393939362d2b27221b140b020000000815212e3a47535f6a73808d9693978e81746b60544a4034281f140900000000000000000000000000000000000000000000000000000000000000000000000b1825323e4b5865717e8b939393938d8073675a5a6773808d939393938b7e7165584b3e3225180b00000000000000061018212a313a40454e54585f62676a6e71747677787979797978767573706d6764605c54514a423d342d251d140b01000000000000000000000000000000000000000000000000040b141c222832373d43484b515356595b5d5e5f5f5f5f5e5d5b585653504a47433c373127221b140b0300000000000000000000000000000000000000000000000000000000050b10161c1f252a2d2e34383a3c3e414244454546464545444342403e3c3a38342e2c29241e1a150f0a04000000000000000000000000000000000000000000000000000000000000000000000815212e3b4854616e7b878f8f8f8f8f83776a5d50444f5c6976828f8f8f8f8f877b6e6154483b2e21150800000000000000000000000000000000000000000000000000000a1623303d495663707c899aa4afa4998a7e71645b514b4c4c4c4947433c342a20150a000000000000000000000000000000000000000e1a2734414d5a6774808d939393989291908d89837d726d635b51463d32271b0f04000000000000000000000000000000000000010910161b1e202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020201e1b1610090100000000000000000000000000000b1825323e4b5865717e8b98a296897c6f6356493c30231a2734414d5a6774808d9a9d9084776a63707d89969f92857a6d626f7b88959e9184796d606c7986929f968a7d7063574a3d3024170a00030f1a252f3941484d4e535353525e687884919c8f8276655b505353535353535353606c7985929c8f8276665b5053535353535353534b4a453f362d22180c010000000000000000000714202d3a4753606d7a8693a0ada6998c807366594d4033261a0d00000000000000000000000000000000000000000000000000000000000000000006121f2c3945525f6c7885929fabada093867a6d6053473a2d20140700000000000000000000000000000000000000000000000000000000000000000000000000060f202a32393f434446464646464646463b3a37312a21180e030006111b242d343a3d3f464646464646464642403d372f271d0b02000000000000000000000000000000000009141e2730373d4142464646464646463f3e3a352d251b0f060000000000000008121e2730373d414246464646464646433937332d261d140a00000006121f2b37434e58606d7984919e9f93887d6f665c51443b31261a0d04000000000000000000000000000000000000000000000000000000000000000000000b1825323e4b5865717e8b989f9f9a8d8073675a5a6773808d9a9f9f988b7e7165584b3e3225180b000000000000050e18222a333c434b515860626a6f74787b7e80828485858686858483827f7d7a76716d66605c544e463f372e261d130a0000000000000000000000000000000000000000000000040d161d262d333c43474f54555c606366686a6b6c6c6c6c6b69686562605b54534e47423c332d261d150d030000000000000000000000000000000000000000000000000000000000050b1014191e2023282c2d2f3234353738383939393837373533312f2d2b2823201d19130f0a030000000000000000000000000000000000000000000000000000000000000000000000000814212e3b4754616e7a8283838383828074675a4e414d5a6673808283838383827a6e6154473b2e21140800000000000000000000000000000000000000000000000000000714212d3a4754606d7a86939facab9c9083766d605d5559585855544e463c32261b0f030000000000000000000000000000000000000e1a2734414d5a6774808d9a9f9fa29f9e9d9a9590887f726d63584e43372b20150a0000000000000000000000000000000000000000050a0f1213131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313120f0a05000000000000000000000000000000000b1825323e4b5865717e8b98a296897c6f6356493c30231a2734414d5a6774808d9a9d9084776a6875818e9b9a8e8174675f6a7683909d978a7d70646c7986929f968a7d7063574a3d3024170a000814202b37414b53595b60606060566875828e9b9285796c606060606060606060605b6576838f9c9285796c60606060606060606060585650483f34291d11050000000000000000000714202d3a4753606d7a8693a0ada6998c807366594d4033261a0d00000000000000000000000000000000000000000000000000000000000000000006121f2c3945525f6c7885929fabada093867a6d6053473a2d201407000000000000000000000000000000000000000000000000000000000000000000000000030d1821323c444b4f5153535353535353534846423c332a1f1409010c18232d363f454a4b53535353535353534e4d4841392f1d140a0000000000000000000000000000000004101b25303942494d4f535353535353534c4a463f372d21180b020000000000050e1a24303942494d4f535353535353534f46443f382f261b11060000030f1b26313c45515d67707d8a939e9a9183786d60574d42362a1f160c010000000000000000000000000000000000000000000000000000000000000000000b1825323e4b5865717e8b98a4a69a8d8073675a5a6773808d9aa6a4988b7e7165584b3e3225180b0000000000020b17202a343c454d555d606a6f767c8084888b8d8f90929293929291908e8c8986827e79726d666058514940382e251c1108000000000000000000000000000000000000000000030c161f282f383f444e54596063676d707375777879797978787674726f6c66625f58534d443f382f271f150d0300000000000000000000000000000000000000000000000000000000000002080e1114171c1f20222527292a2b2c2c2c2c2b2b2a28262422201f1c1713110d080100000000000000000000000000000000000000000000000000000000000000000000000000000714202d3946525e686e767676767676746e64584c404b58636e737676767676766e685e5246392d20140700000000000000000000000000000000000000000000000000000713202c3945525d687784919dabab9f948b7f736d6766656565625f584e43372b1f13060000000000000000000000000000000000000e1a2734414d5a6774808d98989a9c9fa3aba7a09a938c7f726a6054473d32271b0f0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1825323e4b5865717e8b98a296897c6f6356493c30231a2734414d5a6774808d9a9d9084776a6d7a86929f95897c6f635865727e8b989c8f8276696c7986929f968a7d7063574a3d3024170a000c1824303c48535d64686c6c6c6c6c6c727f8c9897887b6e6c6c6c6c6c6c6c6c6c6c6c6c73808d9998887b6f6c6c6c6c6c6c6c6c6c6c65625a50453a2e2115090000000000000000000714202d3a4753606d7a8693a0ada6998c807366594d4033261a0d00000000000000000000000000000000000000000000000000000000000000000006121f2c3945525f6c7885929fabada093867a6d6053473a2d20140700000000000000000000000000000000000000000000000000000000000000000000000009141f2933444e565c5e606060606060606055534d453c31261a0e05111d29343f4851565860606060606060605b59534b412f261b11060000000000000000000000000000000915212c37424b53595c60606060606060595651493f332a1d140a00000000020d17202c36424b54595c606060606060605c53504941382d22170b0000000a15202935404b55616b75818e98a0958c7f72695f53463e31281e13080000000000000000000000000000000000000000000000000000000000000000000b1825323e4b5865717e8b98a4a69a8d8073675a5a6773808d9aa6a4988b7e7165584b3e3225180b00000000000a141d29333c464e575f676d747c82888d9196989a9c9d9e9f9f9f9f9e9d9b9999928f8a847f786f6a625b524a40372e231a0e0500000000000000000000000000000000000000000b151e283139424a50585f626b6f75797d7f828385858686858483817f7c79746f6a625f575049413931271f150b01000000000000000000000000000000000000000000000000000000000000000205060c10121316181a1c1d1e1f1f201f1f1e1d1c1a17151312100b0604010000000000000000000000000000000000000000000000000000000000000000000000000000000005111e2a36414c565e6169696969696967645c52473c47525c6366696969696969615e564c41362a1e1105000000000000000000000000000000000000000000000000000004111d2935414c566673808d99a3afa69f9388807a75737272726f6a5f54473b2e2215080000000000000000000000000000000000000e1a2734414d5a6774808b8b8c8d9092999ea5aca49f92877c6f62584e43372b1f130600000000000000000000000000000000000000000000000000000000000000000000000000000000060b0e101113131313131313110605030000000000000000000000000000000000000000000000000000000000000000000000000001040707131313131313131308070502000000000000000000000000000000000000000000000b1825323e4b5865717e8b98a296897c6f6356493c30231a2734414d5a6774808d9a9d9084776a727f8b989d9184776b6054606d7a86929f93877b6e6c7986929f968a7d7063574a3d3024170a000e1a2734404d59646f74797979797979797d8996978a7e79797979797979797979797979797e8a97988b7e7979797979797979797979716c62564a3d3124170b0000000000000000000714202d3a4753606d7a8693a0ada6998c807366594d4033261a0d00000000000000000000000000000000000000000000000000000000000000000006121f2c3945525f6c7885929fabada093867a6d6053473a2d2014070000000000000000000000000000000000000000000000000000000000000000000000020e1a26313b455660676b6c6c6c6c6c6c6c6c6c5f574d42372b1e120915222e3a45515b62656c6c6c6c6c6c6c6c68655d5341382d22170b0000000000000000000000000000000c1925313d49535d65686c6c6c6c6c6c6c65625b51453c2f261c110600000008141e29323e48545d65686c6c6c6c6c6c6c69605b53493f33271b0f030000040c18242f39434f59616e7b85929f9f92867b6e615a50433a2f24190c0200000000000000000000000000000000000000000000000000000000000000000b1825323e4b5865717e8b98a4a69a8d8073675a5a6773808d9aa6a4988b7e7165584b3e3225180b0000000006111b262f3b454e585f696e7981878f949a9ea1a8a7a9aaaaaaa9a9aaaba9a8aba39f9c97918c847c726d645c524940362c20170c0200000000000000000000000000000000000007121d273039434b545b606a6f767c8185898c8e90919292929291908e8b8985817c756e69605b534b433931271d12070000000000000000000000000000000000000000000000000000000000000000000000030607090b0e0f1112121313121211100f0d0b090706030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d1925303b444c52545c5c5c5c5c5c5a58524a4136404a52585a5c5c5c5c5c5c54524c443b3025190d010000000000000000000000000000000000000000000000000000010d1924303b4854616e7b87929fa7afa49a938d8582807f7f7f7c6f6255493c2f221609000000000000000000000000000000000000091623303c4956636f7d7f7f7f8083868f939ea5afa3999083766a6054473b2e2215070000000000000000000000000000000000000000000000000000000000000000000000000000040b11171b1d1e202020202020201e13120f0b0600000000000000000000000000000000000000000000000000000000000000000002080d11131420202020202020201514120e090300000000000000000000000000000000000000000b1825323e4b5865717e8b98a296897c6f6356493c30231a2734414d5a6774808d9a9d9084776a7783909d998c7f726559515d6774818e9a998c8073667986929f968a7d7063574a3d3024170a000e1b2835414e5b68748186868686868686898f999a908a86868686868686868686868686868a909a9b908b86868686868686868686867e7165584b3e3225180b0000000000000000000714202d3a4753606d7a8693a0ada6998c807366594d4033261a0d00000000000000000000000000000000000000000000000000000000000000000006121f2c3945525f6c7885929fabada093867a6d6053473a2d201407000000000000000000000000000000000000000000000000000000000000000000000005121e2a36424d57677277797979797979797976695f53463a2d21140b1724313d4a56626d727979797979797979756f6553493f33271b0f0300000000000000000000000000020e1b2834414d59656f7579797979797979726d62574d42382d22170b0200050e1925303b44505a656f7579797979797979766c655b5044372b1f120500000007121d27313e46525e69727f8b959f988f82756c61554c4135291e140a00000000000000000000000000000000000000000000000000000000000000000b1825323e4b5865717e8b98a4a69a8d8073675a5a6773808d9aa6a4988b7e7165584b3e3225180b000000000b17222d38414d575f6a6f7b848e939a9fa6abacaaaaa39f9e9d9c9c9d9ea1a9a7acaca9a19e9691877f746e645b52483e32291e13080000000000000000000000000000000000040d18232e39434b555d666c737c83898e9298999b9d9e9f9f9f9f9e9c9b9897918d88827b736c655d554b43392f24180e0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008141e29323b4146475050505050504e4c4741382f3840474b4d5050505050504746413b32291e1408000000000000000000000000000000000000000000000000000000000814212d3a46535e6974808d959fa7aca49f98928f8d8c8b8b7f7266594c3f3326190c0000000000000000000000000000000000000915222f3b4854606b6f72727273767b818e939ea9ab9f95897c6f6256493c2e23180c00000000000000000000000000000000000000000000000000000000000000000000000000050e161d22272a2b2d2d2d2d2d2d2d2b201f1b17110a02000000000000000000000000000000000000000000000000000000000000040c13191d20212d2d2d2d2d2d2d2d22211e1a140e06000000000000000000000000000000000000020b1825323e4b5865717e8b98a296897c6f6356493c30231a2734414d5a6774808d9a9d9084776f7c88959f92867a6d61544b55626f7c89959e9184796d7986929f968a7d7063574a3d3024170a000e1b2835414e5b6874818e9393939393939699a1a29a979393939393939393939393939393979aa2a29b98939393939393939393938b7e7165584b3e3225180b0000000000000000000714202d3a4753606d7a8693a0ada6998c807366594d4033261a0d00000000000000000000000000000000000000000000000000000000000000000006121f2c3945525f6c7885929fabada093867a6d6053473a2d20140700000000000000000000000000000000000000000000000000000000000000000000000714212d3a46535f69778486868686868686867b6e6155483b2e2215091825323f4b5865727f86868686868686868175655b5044372b1f120500000000000000000000000000020f1c2935424f5c687582868686868686867f72695f544a3f33281d140a020c17202a36414c56616c75818686868686868682796c605346392d201306000000010b151f2a36424d56606c788390999e948a7e71675d51453c30261c1106000000000000000000000000000000000000000000000000000000000000000b1825323e4b5865717e8b98a4a69a8d8073675a5a6773808d9aa6a4988b7e7165584b3e3225180b000000030f1b27333f49535e696f7c8591969fa4acaca7a09d98989291908f90909197979b9fa2aaada8a099928c80746e635a50443a3025190d03000000000000000000000000000000010c161f2834404b555d676d78808790949b9fa2a9a29e9c9b9a9a9b9d9fa3a9a19e9a948f877f776d675d554b40352920170d02000000000000000000000000000000000000000000000000000000000000000000030607090b0d0f1111121313121211100f0d0a08070502000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d1720293036393b43434343434341403c362f262e353b3f404343434343433b3936302920170d020000000000000000000000000000000000000000000000000000000005121e2a36424d57606d798390959fa2aaaaa29f9b9998988c7f7266594c3f3326190c00000000000000000000000000000000000007131f2c38434f59606365656567696e78818e97a1ada79a8d807467554b4034281c10040000000000000000000000000000000000000000000000000000000000000000000000000e1720282e33363739393939393939382d2b27221b140b0200000000000000000000000000000000000000000000000000000000040e161e24292c3939393939393939392e2d2b261f180f0600000000000000000000000000010507070f0f1825323e4b5865717e8b98a296897c6f6356493c30231a2734414d5a6774808d9a9d90847774808d9a9b8e8275685e524754606a7783909d978a7d707986929f968a7d7063574a3d3024170a000e1b2835414e5b6874818e9b9f9f9f9f9f9fa0acafa6a49f9f9f9f9f9f9f9f9f9f9f9f9f9f9fa0a3a8a6a49f9f9f9f9f9f9f9f9f988b7e7165584b3e3225180b0000000000000000000714202d3a4753606d7a8693a0ada6998c807366594d4033261a0d00000000000000000000000000000000000000000000000000000000000000000000121f2c3945525f6c7885929fabada093867a6d6053473a2d20140700000000000000000000000000000000000000000000000000000000000000000000000815222e3b4855616e7b88969393939393938b7e7165584b3e31261a121e2a36424d576875818e9393939393939285786c605346392d20130800000000000000000000000000000714212e3a4754616d7a85919393939392867b6e665b50443c2f261c1108131e29323a46525e68717e8a939393939392857a6e655b5044372b1f120500000000030d1925303b44505b666f7c87929f9e91847a6d60584e42382e23170b020000000000000000000000000000000000000000000000000000000000000b1825323e4b5865717e8b98a4a69a8d8073675a5a6773808d9aa6a4988b7e7165584b3e3225180b00000005121f2b3744505b656e7b849197a0a8afa7a09d95908b8885848383838485878a8e92989fa3ababa39f928c80736c61564c41362a1f140900000000000000000000000000000008131e28313a45515c676d79828d92999fa6a39f9a97928f8e8d8e8e9092989b9fa3a69e99928c82796d675d51453f32291e140800000000000000000000000000000000000000000000000000000000000104060b10121315171a1c1d1e1f1f201f1f1e1d1b19171514120e09060300000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e171e252a2d2e3636363636363433302b241d242a2f32333636363636362e2d2a251e170e050000000000000000000000000000000000000000000000000000000000020e1a25313b45515c676d7a838c92989b9d9e9fa39f9f998c7f7266594c3f3326190c000000000000000000000000000000000000030f1b27323d474f5456585859575e666d7a85929eabaa9d908377675c5145382c1f130600000000000000000000000000000000000000000000000000000000000000000000000711202932393f434446464646464646443937332d261d140a000000000000000000000000000000000000000000000000000000020c1620283035394646464646464646463b3a37312a21180e030000000000000000000002080d1113141c1c1c25323e4b5865717e8b98a296897c6f6356493c30231c2734414d5a6774808d9a9d9084777985929e96897d7063564c434e5865727e8b989c8f82767986929f968a7d7063574a3d3024170a000e1b2835414e5b6874818e93939393939393939fa3a59d9b939393939393939393939393939394979ea49d9a9393939393939393938b7e7165584b3e3225180b0000000000000000000714202d3a4753606d7a8693a0ada6998c807366594d4033261a0d000000000000000000000000000000000000000000000000000000000000000000030d152c3945525f6c7885929fabada093867a6d6053473a2d2014070000000000000000000000000000000000000000000000000000000000000000000003101c28343f4a5465727e8b98a89f9f9f9f9b8e817568574d42372b1e14212d3a46535f697884919e9f9f9f9fa197887c6f6255493c2f24190d01000000000000000000000000000713202d3946525e68707d8a929da8a2989083786c60574d42382d22170e1925303a44505a616e7a85929ea5a89d938a7d70685e53493f33271b0f03000000000009141f28333f4a545f6a74808d96a1978d80746a60544a3f34281f14090000000000000000000000000000000000000000000000000000000000000b1825323e4b5865717e8b98a4a69a8d8073675a5a6773808d9aa6a4988b7e7165584b3e3225180b000004101c2834404a54606c77828f96a1a9aea49d959189837f7c797777767677787a7d81868c9299a0a8afa49c928a7e70685e52463b31251a0e0000000000000000000000000000010d19242f3a43505a606d79828f949fa3a7a099928e898583818181828386898e92999fa7a39f948f82796d605b51443b3025190e02000000000000000000000000000000000000000000000000000001070d1113171c1f20222426292a2b2b2c2c2c2b2b2a28262422211e1a1312100c06000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d14191e20212929292929292726241f1a13191f23262729292929292921201e19140d050000000000000000000000000000000000000000000000000000000000000009141f2934404b555e686d7980858b8e909192999393938c7f7266594c3f3326190c000000000000000000000000000000000000000a16212b353d4348494c4c4c4d545d6873808c99abac9f9286796d6053463a2d20130700000000000000000000000000000000000000000000000000000000000000000000050f1923323b444b4f51535353535353535146443f382f261b1106000000000000000000000000000000000000000000000000000008131e28323a41455353535353535353534846423c332a1f1409000000000000000000040c13191d202128282828323e4b5865717e8b98a296897c6f6356493c3028282834414d5a6774808d9a9d9084777d8a979e9184786c6053463d4754606d7a86929f93877b7986929f968a7d7063574a3d3024170a000e1b2835414e5b68748186868686868686868692999d938e8686868686868686868686868686878c979d928d868686868686868686867e7165584b3e3225180b0000000000000000000714202d3a4753606d7a8693a0ada6998c807366594d4033261a0d0000000000000000000000000000000000000000000000000000000000000000010b151f2935414c566c7885929fabada093867a6d6053473a2d20160c0200000000000000000000000000000000000000000000000000000000000000000006121f2c3844505c6675828f9ba8acabacab9e918578695f53473a2e2115222e3b4855616e7b8896a1adacaaaca9998c7f7366564c4135291d11040000000000000000000000000005111d2a36414c56616b74808d96a0aa9f948b7f72695f544a3f33281d16202a36414c56616c75818f97a1aba0968e81746c61564d41382d22170b000000000000020b17222d38424e58606d7984919e9f93877c6f665c50443b30251a0d0300000000000000000000000000000000000000000000000000000000000b1825323e4b5865717e8b98a4a69a8d8073675a5a6773808d9aa6a4988b7e7165584b3e3225180b000006121f2c3844515c66717e8b949fa9afa59d928d837d77726f6d666a69696a696e70747a80879196a0a8aea49e92857a6d61574d42362a1c11060000000000000000000000000004111d2935414c56616c74818e949ea6a69f959087817c79767474747577797d818790959ea5a69e948e81756d62564c41362a1e140800000000000000000000000000000000000000000000000003090e13181d2023282b2d2f3133353737383939393837373533312e2d2a26201f1c17110d08020000000000000000000000000000000000000000000000000000000000000000000000000000000002080d1114141d1d1d1d1d1d1b1a17140e080e1317191a1d1d1d1d1d1d1414110d08020000000000000000000000000000000000000000000000000000000000000000030c18232f39434c565e676d737a7e8184858686868686867f7266594c3f3326190c00000000000000000000000000000000000000040f19232b32383b3c3f3f3f424c56626f7c8899a3aea399877a6e6154473b2e211408000000000000000000000000000000000000000000000000000000000000000000000b16212b35444d565b5e606060606060605e53504941382d22170b00000000000000000000000000000000000000000000000000010d1924303a444c525f606060606060606055534d453c31261a0e0200000000000000040e161e24292d2e35353535353e4b5865717e8b98a296897c6f6356493c3535353535414d5a6774808d9a9d908477828e9b9a8c8073665b50443945515d6774818e9a998d807986929f968a7d7063574a3d3024170a000e1a2734404d59646f7479797979797979797987929b8e8179797979797979797979797979797a87969a8d8079797979797979797979716c62564a3d3124170b0000000000000000000714202d3a4753606d7a8693a0ada6998c807366594d4033261a0d000000000000000000000000000000000000000000000000000000000000000007121d27313945525d687885929fabada093867a6d6053473e32281e13080000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d7985929fa8a19ea1a8a197887b6e6255483b2f221825313e4b5864717e8b97a8a8a09ea0a89c908376685d5245392c20130700000000000000000000000000010d1925303a444f59606d79849199a3a69f92867b6e665b50443c2f261e28323a46525e68717e8a939ea9a3999184796d605a50443b2f261b11060000000000000006111c262f3c45515d67707d8a949e999083786d60574d42362a1f150b01000000000000000000000000000000000000000000000000000000000b1825323e4b5865717e8b98a4a69a8d8073675a5a6773808d9aa6a4988b7e7165584b3e3225180b00000713202d3a4653606d7984919ea6b0a79d938d8079706b6562605c545c5d565e6164686d737c849196a0aaada2978e8174695e5346382e23170b000000000000000000000000000613202c3945525d68717e8a939da6a89f948f837c746f6c6668676768666d70757c838f939ea7a69e938b7f72685e52463b3025190d01000000000000000000000000000000000000000000040a0f151a1d24292c2e34383a3c3e404244444546464545444342403d3b3a36312d2c28231c19130d080200000000000000000000000000000000000000000000000000000000000000000000000000000000010507081010101010100e0d0b08030002070a0c0d10101010101008070501000000000000000000000000000000000000000000000000000000000000000000000007121d27313a444c555d60686d71747778797979797979726d63574b3e3225180c000000000000000000000000000000000000000007101921272c2f3032322f3a4653606d7986929facab95887b6f6255483c2f22150900000000000000000000000000000000000000000000000000000000000000000004101c27323d47565f676a6c6c6c6c6c6c6c6b605b53493f33271b0f0300000000000000000000000000000000000000000000000004111d2935414c565d6c6c6c6c6c6c6c6c6c6c5f574d42372b1e1205000000000000020c1620283035393a4242424242424b5865717e8b98a296897c6f635649424242424242414d5a6774808d9a9d90837a86929f93877b6e61544a3f35414c55626f7c89959e91847886929f968a7d7063574a3d3024170a000c1824303c48535d64686c6c6c6c6c6c6c677783909d918477686c6c6c6c6c6c6c6c6c6c6c687784919d908377676c6c6c6c6c6c6c6c65625a50453a2e2115090000000000000000000714202d3a4753606d7a8693a0ada6998c807366594d4033261a0d00000000000000000000000000000000000000000000000000000000000000030c18242f39434f59606d7a86929facaea194877b6e615a50443a3024190d030000000000000000000000000000000000000000000000000000000000000000091623303c4956636f7c8998a2a1969196a1a9988b7e7265584b3f31261e2a36424d576874818e9ba9a0969196a09f92867a6d6054473a2d21140a000000000000000000000000000008131e28323e45515d676f7c87929fa6a2989083786c60574d42382d25303a44505a616d7a85929ea5a69f92877c6f675d51483e32291d140a0000000000000000000a141d2935414b55616c75828f98a0958b7f72695e52463e31271d1207000000000000000000000000000000000000000000000000000000000b1825323e4b5865717e8b98a4a69a8d8073675a5a6773808d9aa6a4988b7e7165584b3e3225180b00030f1c28333f4a5464717d8a96a1acaca0958e81746d6760595553514a50504d5254565d606a6f7b849198a2aea99f92867b6e61544a3f34281c1003000000000000000000000004111d2935414c55606d7a85929ea5aca0968f82796e6a62605b545a5b545c60636a6e78818f959faba59f92857a6e61564c41362a1e11050000000000000000000000000000000000000000070c151b20262b2f35393a3f4446484a4d4f5051525253525251504e4c4a4846423d3a38342e29251e19140d05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010b151f29323a434b51565d6064686a6b6c6c6c6c6c6c66635b51463a2f22160a000000000000000000000000000000000000000000070f161b1f222325252c3844515c667784919daaa296897c6f6356493c302316090000000000000000000000000000000000000000000000000000000000000000000713202c38444f5967717779797979797979776c655b5044372b1f14090000000000000000000000000000000000000000000000000713202c3945525d6876797979797979797976695f53463a2d21140700000000000008131e28323a4146474f4f4f4f4f4f4f5865717e8b98a296897c6f63564f4f4f4f4f4f4f484d5a6774808d9a9d90837e8b989c8f8276695e5342382f3a4754606a7783909d978a7d86929f968a7d7063574a3d3024170a000814202b37414b53595b606060606060556774818d9a96877a6d61606060606060606060566875818e9b9286796d6060606060606060585650483f34291d11050000000000000000000714202d3a4753606d7a8693a0ada6998c807366594d4033261a0d000000000000000000000000000000000000000000000000000000000000000a151e2935404b55606b74818e98a3aeb5a89c8f82756c61564c4135291f150b0100000000000000000000000000000000000000000000000000000000000005111d2935414c566673808c99aa9e9184919eaa9b8e817568584e43372b202d3a46525e697784919ea1979184919ea3998a7d7164574a3e31261b0f0300000000000000000000000000020c16202935404b55606a737f8c949faa9f948b7f72695f544a3f332935414c56616c75818e97a1aa9f948c7f736a60554b40362c20170b02000000000000000000020b18242f3a43505a616e7b86929f9f92867b6e61594f43392f24180b020000000000000000000000000000000000000000000000000000000b1825323e4b5865717e8b98a4a69a8d8073675a5a6773808d9aa6a4988b7e7165584b3e3225180b0006121f2b3844505b6675828f9ba8b1a89d9083786d605c554f4946444043434246474c52585f696e7b86929fa8afa3998d8073665c5044382b1f120600000000000000000000000613202c3945515d6773808d97a1ada69e91847a6d675f5853504a4e4e4b5153585f666d79839099a3ada2978d8174685e5246392d201409000000000000000000000000000000000000030b121820262b31373a4145474a50535557595c5d5e5e5f5f5f5e5e5d5b595755534d4946443f3835302a251e170e080200000000000000000000000000000000000000000000000000000000000000000000000000000000000002080c1012121313131313131313060400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d172029313940454c5254585b5d5e5f6060606060595751493f352a1e120600000000000000000000000000000000000000000000040a0f131516191c2834404a546a7683909da9a296897c6f6356493c302316090000000000000000000000000000000000000000000000000000000000000000000916222f3b4854606b77838686868686868684776c6053463b30251a0e0000000000000000000000000000000000000000000000000714212d3a4754606d7a86868686868686867b6e6155483b2e2215080000000000010d1924303a444c52545b5b5b5b5b5b5b5b65717e8b98a296897c6f635b5b5b5b5b5b5b5b54535a6774808d9a9d918483909c978a7e7164574d422f2b37434e5865727f8b989b8e8187929f968a7d7063574a3d3024170a00030f1a252f3941484d4e5353535353535864717e8b97968a7d70635753535353535353535865727f8b9899897c6f63565353535353534b4a453f362d22180c010000000000000000000714202d3a4753606d7a8693a0ada6998c807366594d4033261a0d00000000000000000000000000000000000000000000000000000000000006111c26303845515d67707d89939daab4b9aa9e948a7e71685d52463d31271d12070000000000000000000000000000000000000000000000000000000000000713202d3946525d687683909da8988c7f8c98a29e9185786a5f53473a2e212e3b4754616e7b8796a09e9285808c99ab9a8e817467584e43372b1f12060000000000000000000000000000050e18242f39434e58606d78839098a2a69f92867b6e665b50443c323a46525e68707e8a939ea9a2989083786d60584e43392f231a0e05000000000000000000000007131d28313e46535e69727f8c95a0988e81756b61554b4035291d140a0000000000000000000000000000000000000000000000000000000b1825323e4b5865717e8b98a4a69a8d8073675a5a6773808d9aa6a4988b7e7165584b3e3225180b000613202d394653606c7985929fabaca095897d70665c514b433d3a38342e30363a3b41454e565e69727f8b96a0acab9e9185796d6053463a2d20130700000000000000000000000714212d3a4754606d7a85929fa9aa9e94897d70685d554e46443f41414045464e545c676f7c87929faca99f92867a6e6154473c31261a0e0200000000000000000000000000000000070c151d232831373c42474b5154545c60626466686a6a6b6c6c6c6b6a6a686664615f575653504a46413a3630292019130d0500000000000000000000000000000000000000000000000000000000000000000000000000000000060d13181c1e1f202020202020202013100c07010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e171f272f353a4145474b4e51525353535353534c4b463f372e23180d02000000000000000000000000000000000000000000000000030709090c18232e43505c6976838f9ca9a296897c6f6356493c30231609000000000000000000000000000000000000000000000000000000000000000005111e2a36414c5663707d8995939393939396897d7063574d42362a1c110600000000000000000000000000000000000000000000000714202d3a4753606d7a86939393939393877b6e6154483b2e211508000000000005111d2935414c565d61686868686868686868717e8b98a296897c6f686868686868686868615e576774808d9a9f928690949e9285796d6053463b3127323d4754606d7a86929f928588939f968a7d7063574a3d3024170a000009131d272f373c404146464646464855626e7b8897998d807366544a3f46464646464956626f7c8998988c7f7265594c46464646463e3d3a342d241b1106000000000000000000000714202d3a4753606d7a8693a0ada6998c807366594d4033261a0d0000000000000000000000000000000000000000000000000000000000020b17232e38424e58606d7984919ea5afafacafa69e92857a6d61594f43392f24180c0300000000000000000000000000000000000000000000000000000000000714212e3a4754616d7a86939fa096877a85929fa197887b6e6255483b2d22313e4b5764717e8a97a89b8f827d8a96a89e9184786a5f53473a2e21150700000000000000000000000000000007121d27313c44505c666e7b86929fa5a2989083786c60574d423a44505a616d7a85919ea5a59f92867b6e665c50463d31281d1108000000000000000000000000010c161f2a36424d57606d788390999e938a7d70675d51453c2f261b110600000000000000000000000000000000000000000000000000000b1825323e4b5865717e8b98a4a69a8d8073675a5a6773808d9aa6a4988b7e7165584b3e3225180b000815222f3b4855626e7b8897a2adaa9d9184776b60544a4039312d2c2823252a2d30353c444d57606c7884919eaaada197897c6f6356493c302316090000000000000000000005111e2a36424d5765727f8b98a2aea99c8f82756b60564c433c38332d2e34383c424b555f6a74818e9ba8aea3988c7f7266574d42372b1e12050000000000000000000000000000000810191e272e343c43474d53555d6064666d6f7173757777787979787877767573706e696763605c54524c46413b322a251e170e0600000000000000000000000000000000000000000000000000000000000000000000000000000710181f24282b2c2d2d2d2d2d2d2d2d1f1c18120b030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d151d24293035393a3e4144454646464646463f3e3a352e251c12070000000000000000000000000000000000000000000000000000000000071d293643505c6976838f9ca9a296897c6f6356493c3023160900000000000000000000000000000000000000000000000000000000000000000713202d3946525e6875818e9ba89f9f9fa89b8f8275695e5246382e23170b00000000000000000000000000000000000000000000000713202d3a4653606d79869aa49f9f9f94877a6e6154473b2e21140800000000000713202d3946525d686d757575757575757575757e8b98a296897c757575757575757575756e695e6774808d9aa29892989f9a8d8074665c51453829202c3945525d6874818e9b9892939aa4968a7d7063574a3d3024170a0000010b151d252b30343539393939394653606c7985929c8f8376665c5044383939393a4653606d7986929b8e827568574d423639393932312e29221b120900000000000000000000000714202d3a4753606d7a8693a0ada6998c807366594d4033261a0d00000000000000000000000000000000000000000000000000000000000a141d28343f4a54606a73808d96a0acaca49fa4aca1978e81746b60554b4035291e150a00000000000000000000000000000000000000000000000000000000000b1724313e4a5764717e8a99a49e918477828f9ca9988b7e726553493f332a36414c566774818d9aaa988b7f7a8796a0a196887c6f6255483c2f24180d010000000000000000000000000000010b151f28343f4a545f69717e8b939ea99f948b7f72695f544a414c56616c75818e97a1a89e938b7e71695f544a3f342b1f160c0000000000000000000000000000040d1a25313b44505c666f7c87939f9e9184796d60584e41382d22170b02000000000000000000000000000000000000000000000000000b1825323e4b5865717e8b98a4a69a8d8073675a5a6773808d9aa6a4988b7e7165584b3e3225180b000a1724303d4a5763707d8a96a9b3a69a8d807367594f42382f27201f1c18191e202429323b44505b65737f8c99a9a6a9998c807366594d4033261a0d000000000000000000000714202d3a46525e697683909daaada196897d7063594f433a312b282223282c3039434e58626f7c8895a0acaa9d908477695f53463a2d211407000000000000000000000000000009111a222a303940454e53575f62676d7175797b7d8082838485858685858483817f7d7b7874706d66615e56524c443e36302920180f0700000000000000000000000000000000000000000000000000000000000000000000000006101922293035383939393939393939392c29231d150d030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b12181e24292c2d3135373839393939393933322f2a231c130a000000000000000000000000000000000000000000000000000000000003101d293643505c6976838f9ca9a296897c6f6356493c3023160900000000000000000000000000000000000000000000000000000000000000030f1c28333f4a54616d7a86929facacacacac9f92877b6e61544a3f34281c10030000000000000000000000000000000000000000000006121f2c3844515c667986939facaca094877a6d6154473a2e21140700000000000714212e3a4754616d7a8182828282828282828183909da99c8f82828282828282828282817b6e616774808d9aaaa29fa29f95887b6f62544b4034281d2935414c56626f7c8995a09f9fa4ac968a7d7063574a3d3024170a000000030b131a202427282d2d2d2b3744505b6576828f9c9285796d6053463a2d2d2c3844515c667683909c918478695e52463a2d2d2d2524211d1811090000000000000000000000000714202d3a4753606d7a8693a0ada6998c807366594d4033261a0d0707040100000000000000000000000000000000000000000000000006111b262f3844505c666f7c87929fa8a69f9a939aa4a99d93897d70675d51453c30261c110600000000000000000000000000000000000000000000000000000006121f2b37434e586774818e9aab9b8e81757f8c99a99b8e8275655b5044372d3946525e687784919da298887c7784919ea9998c7f7266554b4035291d1104000000000000000000000000000000030d17232e38424d57626c75828f97a1a69f92867b6e665b5045525d68707d8a939ea9a1968e81756c62574d42382e22190d0400000000000000000000000000000009141f28343f4a54606a74808d97a1968d80736a5f53493f33271e1308000000000000000000000000000000000000000000000000000b1825323e4b5865717e8b98a4a69a8d8073675a5a6773808d9aa6a4988b7e7165584b3e3225180b000b1825323e4b5865717e8b98a4b1a4978a7e7164574b3e30261d1512100c0e1114192027333f4953616e7b88979a9998978f8276695c4f4336291c10030000000000000000000814212e3b4754616e7b87959fabab9e9184786c6053463d31281f1c17181c1f27313c47535f6a7784919daaaca095887b6e6155483b2e2215060000000000000000000000000009121b232c343c424b51585f62696e747a7d8185888a8c8f9091919292929191908e8c8a8884807d79736d68615e565046413a322a2119100700000000000000000000000000000000000000000000000000000000000000000000020d18222b343b414445464646464646464638342f271f150b01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070c13191d202125282a2b2c2d2d2d2d2d2625221e18120a01000000000000000000000000000000000000000000000000000000000003101d293643505c6976838f9ca9a296897c6f6356493c302316090000000000000000000000000000000000000000000000000000000000000006121f2b3844505b66727f8c99a3aeaaa8aaafa3998c7f73665c5044382b1f14090000000000000000000000000000000000000000000004101c2834404a5f6c7986929facada093867a6d6053473a2d20140700000000000815212e3b4854616e7b878e8e8e8e8e8e8e8e8e90959fab9f948f8e8e8e8e8e8e8e8e8e887c6f626774808d9aa7aeacaa9d9083766a5f5342392e2319242f3a4754606a7783909daaacafa3968a7d7063574a3d3024170a0000000001090f14181a1b20201b27333f495366737f8c9998887c6f6255493c2f222834404a546773808d9a96877b6e6154473b2e212020201b1a17140e08010000000000000000060c1114202d3a4753606d7a8693a0ada6998c807366594d4033261a1a1413110d0801000000000000000000000000000000000000000000000b17222d38414d57606d78839099a3ab9f948f87939fa8a59e9184796d60584e42382e23170c0300000000000000000000000000000000000000000000000000000814212e3a47535f6a7884919eab988c7f727c8897a29e9285796c605346392e3a4754616d7a8795a09f92857974818e9ba79c8f8376675d5145392c2013060000000000000000000000000000000006111c26303b45505a616d7a85919ea4a2989083786c60574f59606d7a84919ea5a49a91847a6d615a50453b30261c100700000000000000000000000000000000030c17232e38424e58606d7a85919e9f92877c6f655b50443a3025190c030000000000000000000000000000000000000000000000000b1825323e4b5865717e8b98a4a69a8d8073675a5a6773808d9aa6a4988b7e7165584b3e3225180b000c1925323f4c5865727f8b98a5afa396897c706356493d3023140b0604000205080e17222d3846535f6978858e8d8c8c8b8a85786b5e5245382b1f12050000000000000000000b1824313e4b5764717e8a97a7b1a79a8e8174665b5044382b1f160f0b0c10151f2b37434e586773808d9aa6b1a7988b7e7165584b3e2d22170b00000000000000000000000009121b242d353e464e545c606a6f757b81868a8e929797999b9d9d9e9f9f9f9e9d9d9b999796918d8985807a746e68615a524c443c332b2219100700000000000000000000000000000000000000000000000000000000000000000008131f29343d464c5152535353535353535345403931271d12070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080d111314181b1e1f202020202020191816120d070000000000000000000000000000000000000000000000000000000000000003101d293643505c6976838f9ca9a296897c6f6356493c30231609000000000000000000000000000000000000000000000000000000000000000613202d394653606c7884919eaba69e9c9ea6ab9e9184786d6053463b31261a0e00000000000000000000000000000000000000000000000c18232e46525f6c7985929facaca09386796d6053463a2d20130700000000000815212e3b4854616e7b87949b9b9b9b9b9b9b9b9d9fa79fa69f9c9b9b9b9b9b9b9b9b95887c6f626774808d9a9f9f9fa2988b7e7165584e4330271d131e2b38434e5865727f8b98a29f9f9f968a7d7063574a3d3024170a0000000000010911181e2225252d222d3d4a5663707d899a988b7f7265584c3f3025232e3e4a5764717d8a97978a7d7164574a3e2e232d2d2d2726241f1a130b020000000000000910171d21202d3a4753606d7a8693a0ada6998c807366594d403326262621201d19130c040000000000000000000000000000000000000000040f1b27333f49535f69727f8c95a0aba3998f82808c96a0aca0968d80736a5f544a3f34281f140900000000000000000000000000000000000000000000000000000815222f3b4855626e7b8896a1a399897c6f7985929fa197887b6f6255483c2d3e4a5764717d8a97a89c8f8276717e8b98a89f92867a6d6053473a2d20140900000000000000000000000000000000000a141e29333f46525e68707d8a929da89f948b7f72695f56616b74818e97a1a79f93887d70685d52483e33291e140a00000000000000000000000000000000000006111c26303d45525d68717e8a949f999083776c60564c41362a1e150b0000000000000000000000000000000000000000000000000b1825323e4b5865717e8b98a4a69a8d8073675a5a6773808d9aa6a4988b7e7165584b3e3225180b000c1825323f4b5865727e8b98a5afa295897c6f6256493c2f23160600000000000006111b2a36424d576673808180807f7e7d7d706356493d3023160a000000000000000000010e1b2834414e5b6774818e9aa7b4aa978a7e7164544a3f3328190d040000040d1b26323d4a5764707d8a97aab4a79b8e81746853493f33271b0f030000000000000000000007101b242d363e474f585f666d737c82878e92989b9ea2a9a6a8aaa8a7a6a6a6a7a8a9a8a6a8a19e9a97928c86807a716c615e564d453c342b22190e0500000000000000000000000000000000000000000000000000000000000000000c1824303b464f575d5f606060606060605f514b43392f23180c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010407070b0e11121313131313130c0c0a0602000000000000000000000000000000000000000000000000000000000000000003101d293643505c6976838f9ca9a296897c6f6356493c3023160900000000000000000000000000000000000000000000000000000000000005121e2a36424d5763707d8a96a0ab9e948f949eaaa1968a7d7064574d42362a1c120700000000000000000000000000000000000000000000071f2c3845525f6b7885929eabaea3998679665c5145382c1f130600000000000815212e3b4854616e7b8793939393939393939393939393939393939393939393939393887c6f626774808d939393939392857a6d6054473c3121150f1b27323d4754606d7a869293939393938a7d7063574a3d3024170a000000000009131b23292e31323939393a4754606d7a86939b8e817568564d42363939393b4854616e7b87969a8d807367544a3f34393939393433302b241d140b010000000009121b22282d30313a4753606d7a8693a0ada6998c807366594d40333333332d2c29241e160d04000000000000000000000000000000000000040e1a242b3744505b656e7b86929fa7a89f92867c7984919ea5a89f92877c6f665c50443c31261a0e0500000000000000000000000000000000000000000000000004101c2934404b5565727f8c98a89f9286796d75828f9ba9988b7f726553493f35414c566774808d9aaa998c7f726e7b8896a1a3998a7d7064574a3d31261a0e0200000000000000000000000000000000020c18212a36414c56616b74818d96a0a69f92867b6e665d68707d8a939ea9a0958d80736b60564c41362d21180c02000000000000000000000000000000000000000a151e2935414c56616c76828f989f948b7e71685e52463d30271d120700000000000000000000000000000000000000000000000b1825323e4b5865717e8b98a4a69a8d8073675a5a6773808d9aa6a4988b7e7165584b3e3225180b000b1724313e4a5764717d8a97a4b0a396897d7063564a3d2d22170b010000000000000e1a26313b4b58636e73757473727170706b6054483b2f22160900000000000000000005111e2a36414c566a7683909da9aea298887b6e6155483b2d221708000000000a15212e3b4854616e7b8798a2aeaa9d908377655b5044372b1f1205000000000000000000050e19222d363e485059616a6f7980878f93999fa3aaabaaaaa29f9d9b9a9a999a9a9b9d9fa2aaa9aba9a19e98928d857e756d685f574e463c342a20170c0300000000000000000000000000000000000000000000000000000000000003101c2835414c5761696c6c6c6c6c6c6c6c6c5c554b4034291c1004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003101d293643505c6976838f9ca9a296897c6f6356493c302316090000000000000000000000000000000000000000000000000000000000000714202d3a46525e6975828f9ba8a3998f828f98a2a89c8f8276695f5346392e23180c00000000000000000000000000000000000000000005121f2b3845525e6b7885919eabac9f9286796c5f4b4034281c100400000000000815212e3b4854616e7b8686868686868686868686868686868686868686868686868686867c6f62677480868686868686868174675d5145392c20130a16202c3945525d687481868686868686867d7063574a3d3024170a0000000007111b252d343a3e3f4646464645525d687784919d918478695e5246464646464646525e697884919c908376665c50444646464646413f3c362f261d130800000006101b242c34393d3e404753606d7a8693a0ada6998c807366594d40404040403a39352f2820160c0100000000000000000000000000000000020c16202a36424d56606c77828f98a3aca0968c8073707d8a939eaaa3999083786d60574d42372b20170d02000000000000000000000000000000000000000000000006131f2c3845515c6776828f9ca99c90837667727f8b98a99b8f8275655b50443945525d687783909da298897c6f697884919eab9a8d817467574e42372b1e12060000000000000000000000000000000000060f1925303a444f59606d79849199a3a2989083786c606d7a84919ea5a3989083796d60594f443a30241b0f060000000000000000000000000000000000000000030c19242f3a43505a616e7b86929f9e92857a6d61594f42392e23180c03000000000000000000000000000000000000000000000b1825323e4b5865717e8b98a4a69a8d8073675a5a6773808d9aa6a4988b7e7165584b3e3225180b000a1623303d495663707c8996a8b1a4978b7e7164544a3f33281d120700000000000009141f2f3b47525c63666867666564646360594f44382c2013070000000000000000000713202d3946525e687885929fabac9f9285796c605346392d201306000000000714212d3a46535e697985929facac9f9285796c605346392d2013060000000000000000020d17202b343e48505a616b707c838c92999fa4abaca7a09d999892908f8d8d8d8d8d8f909298989c9fa4abaaa29f97928a827a6e6960584e463c32291e150b00000000000000000000000000000000000000000000000000000000000005121e2b3844515d6973787979797979797976675c5145382c1f1306000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003060809131313131313060400000000000000000000000000000000000000000000000000000000000000000000000003101d293643505c6976838f9ca9a296897c6f6356493c30231609000000000000000000000000000000000000000000000000000000000003101c28343f4a54616e7b87929fac9f92877a85929fab9f93877b6e61544a4034281c1004000000000000000000000000000000000000000005121e2b3845515e6b7884919eabac9f9285796c5f52462e23180c0000000000000714202d3a46525e6976797979797979797979797979797979797979797979797979797979766a5f646e7479797979797979746f64554b4135291d1104111d2935414c56646f7479797979797979706b6155483c2f231609000000010d18232d373f464a4c53535353534c566774818e9a96877b6e6154535353535353534d576875828f9b9285796d60535353535353534e4c4741382f241a0e0300000c17222c363e45494b4d4d53606d7a8693a0ada6998c807366594d4d4d4d4d4d4745413a32281e13080000000000000000000000000000000008131e28323a46525e69717e8b949faaa59e9184796d6b75818e98a2aba0958c7f72695f53463f32291e140800000000000000000000000000000000000000000000000714202d3a4753606d7986929fab998d8073666f7b8897a19e9285796c6053463a4754606d7a86939f9f9286796d6875818e9ba89e9184786a5f53473a2e21140700000000000000000000000000000000000008131e28323e45515d676f7c87929fa79f948b7f726b74818e96a1a69f92867c6f675c51473d32281e12090000000000000000000000000000000000000000000008131e28313e46535f69727f8c95a0978e81746b60544b4034281f1409000000000000000000000000000000000000000000000b1825323e4b5865717e8b98a4a69a8d8073675a5a6773808d9aa6a4988b7e7165584b3e3225180b000814212e3b4754616e7a8795a0aca79a8e8174665b5044392f2318110a020000000003131f2a35404a52585a5b5a5959585756544f473d32271b10040000000000000000000714212e3a4754616d7a8798a2aeaa9d918477665b5044382b1f12060000000005121e2a36424d576a7784919daaaea298877a6e6154473b2e211408000000000000000009141f29323d46505a626c717d8690959fa3ababa49f9b95908c898584828180808081828385888b8f93999fa2aaa9a19e938f847b6f6a60584e443b30271d1207000000000000000000000000000000000000000000000000000000000006121f2c3945525f6c788586868686868686796d6053473a2d201407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030a0f12151520202020202013100c070100000000000000000000000000000000000000000000000000000000000000000003101d293643505c6976838f9ca9a296897c6f6356493c30231609000000000000000000000000000000000000000000000000000000000006121f2c3844505c6673808c99a3ab9c8f8276818e9ba9a4998d8073665c5144382c1f1509000000000000000000000000000000000000000005111e2b3844515e6b7784919eaaab9f9285786c5f5245392c1f0700000000000005121e2a36424d575e6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c625f585c64676c6c6c6c6c6c6c67645d53433a2f24180d010d19242f3a43535d64686c6c6c6c6c6c6c6361594f44382c20140700000006121e29343f495156586060606060606065717e8b98978a7d71646060606060606060606065727f8c9898887c6f62606060606060605a58524a41362b1f14080005111d28343e48505557595959606d7a8693a0ada6998c8073665959595959595954524c443a2f24190d010000000000000000000000000000030d1924303a44505a616e7b85929fa6a99e93897d7067616e7b86929fa7a79f92867b6e615a50443b3025190d04000000000000000000000000000000000000000000000a1723303d4a5663707d8998a2a3998a7d70636a7885919ea297887c6f6255483d4a5763707d8a99a49c8f82766665717e8b98a8a196887b6e6255483b2f24180c000000000000000000000000000000000000020c16202935404b55606a737f8c959fa69f92867b707d89939da89f948b7f726a5f554b40352b20160c0000000000000000000000000000000000000000000000010c161f2a36424d57606d7883919a9e93897d70665c51453c31261a0d040000000000000000000000000000000000000000000b1825323e4b5865717e8b98a4a69a8d8073675a5a6773808d9aa6a4988b7e7165584b3e3225180b000714202d3a46525e697784919dacab9e9184786c60554b403429221c140b05000000020e19242e3840474b4d4e4d4d4c4b4a4948443d352b21160b000000000000000000000915222f3c4855626f7b8895aab4a99c8f837669544a3f33281c0f0300000000020e1a2531434f5c6976828f9ca9b4aa95887b6f6255483c2f22150900000000000000030d1925303b444e58626c717e879298a0a7afa79f99938e88837f7c79777574737373747577797c7f83878d92989ea5ada59e9691857c6f6a5f564c42392e23180c030000000000000000000000000000000000000000000000000000000006121f2c3945525f6c7885929393939393867a6d6053473a2d2014070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060e151b1f21222d2d2d2d2d2d1f1c18120b03000000000000000000000000000000000000000000000000000000000000000003101d293643505c6976838f9ca9a296897c6f6356493c3023160900000000000000000000000000000000000000000000000000000000000713202d3a4653606d7984919eaba3998b7e717d8a97a2ab9e9285796d6053463c31261a0e010000000000000000000000000000000000000004111e2b3744515e6a7784919daaab9e9185786b5e5245382b1f12050000000000020e1a25303b454d525f60606060606060606060606060606060606060606060606060606055534e52585a606060606060605b59534b4131281d13070008131e2831414b53595b6060606060606057554f473e33281c10040000000916222e3a46515b62656c6c6c6c6c6c6c6c6f7b88989a8d80736c6c6c6c6c6c6c6c6c6c6c6c6f7c8999988b7e726c6c6c6c6c6c6c6c67645c52473c3024170b000815212d3945505a6164666666666d7a8693a0ada6998c80736666666666666666605d564c4135291d110400000000000000000000000000010b151f2935414c56616c75828f97a2ada2978e81756b605e69727f8c95a0aca2988f82766c62564c41362a1f160c01000000000000000000000000000000000000000005111e2a36414d566773808d9aaa9f92867a6d606875818e9ba9988b7f7265544a404b556773808d9aaa998c7f7366616e7b8896a1a8988b7f7265554b4035291d1004000000000000000000000000000000000000050e18242f39434e58606d78839098a2a29890827a84919ea5a2978f82776c60584e43392e23190e04000000000000000000000000000000000000000000000000040d1a26313b44515c666f7d88939f9d9184796d60574d42372b20160c0100000000000000000000000000000000000000000b1825323e4b5865717e8b98a4a69a8d8073675a5a6773808d9aa6a4988b7e7165584b3e3225180b0005111e2a36424d566774808d9aa4ada1968a7e71675c51453f332d261d170e0600000008121c262e353b3f404241403f3e3d3d3b38322b23190f04000000000000000000000a1723303d4a5663707d8996a3b0a89b8e8275685b4f422d22170b000000000000091c2835424f5b6875828e9ba8b0a396897d7063564a3d3023170a000000000000010b151f2a36424d56606a717e889299a2aaafa49c959087817c77726f6d6668676766676768666c6f72767b80868e939fa3aaa8a09792867c6f685e544b4034282015090000000000000000000000000000000000000000000000000000000006121f2c3945525f6c7885929f9f9f9f93867a6d6053473a2d2014070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006101820262b2e2f3939393939392c29231d150d030000000000000000000000000000000000000000000000000000000000000003101d293643505c6976838f9ca9a296897c6f6356493c302316090000000000000000000000000000000000000000000000000000000005121e2a36424d5764707d8a96a1ac9f92867a6d7985929faba1978a7e7164574d42372b1d12070000000000000000000000000000000000000004111d2a3744505d6a7783909daaab9e9184786b5e5145382b1e120500000000000009141f29333b424648535353535353535353535353535353535353535353535353535353494743474c4d535353535353534e4c4841382f1f160c0100010c161f2f3941484d4e535353535353534a48443e352c21160b000000000b1825313e4a56626d727979797979797979797885929d908379797979797979797979797979797986929b8e81797979797979797979746e64584c3f33261a0d000a1724303d4955616c7173737373737a8693a0ada6998c807373737373737373736d685d5245392c2013070000000000000000000000000007121d27313945525d68717e8a939ea9a69f92857a6d615957606d7883909aa4aa9f948b7e71685e52463e31281e130800000000000000000000000000000000000000000714202d3946525e687784909daa9d908377675d65717e8b98a89b8f8275665b5045515d677683909da298897c6f635f697884919ea99c8f8276675d5145382c1f13060000000000000000000000000000000000000007121d27313d44505c666e7b86929fa69f9490849196a1a59e92857b6e655b50463c30271d1108000000000000000000000000000000000000000000000000000009141f2834404a54606b74818e97a0968c7f73695f53463e32281e130800000000000000000000000000000000000000000b1825323e4b5865717e8b98a4a69a8d8073675a5a6773808d9aa6a4988b7e7165584b3e3225180b00020e1925303b4855626e7b87939faaa99e9184796d605a50443f382f292017110a0300000a141c242a2f3233353433323131302f2c272119110700000000000000000000000a1724313d4a5764707d8a97a3b0a79a8e8174675b4e4134281b060000000000010e1b2834414e5b6774818e9aa7b0a3978a7d7064574a3d3124170a00000000000007121d27313946525e696f7c86929aa3ababa39f928d837c756f6a6662605c545a5a5a5a5a545b606265696e747b818a9298a2a9a9a19891847a6e665c51453c31261a0e0500000000000000000000000000000000000000000000000000000006121f2c3945525f6c7885929fabaca093867a6d6053473a2d201407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e18222a31373a3c46464646464638342f271f150b0100000000000000000000000000000000000000000000000000000000000003101d293643505c6976838f9ca9a296897c6f6356493c30231609000000000000000000000000000000000000000000000000000000000714212d3a46535f6976828f9ca8ab9c8f82766874818e9ba9a99c8f8276695f5347392f23180c0000000000000000000000000000000000000004101d2a3743505d6a7683909da9aa9e9184776b5e5144382b1e1105000000000000020d17212930363a3b4646464646464646464646464646464646464646464646464646463c3b373c3f414646464646464641403c362f261d0d04000000040d1d272f373c4041464646464646463d3c38332c231a1005000000000c1925323f4c5865727f868686868686868686868a989f95908686868686868686868686868686868b999e938e8686868686868686868074675a4e4134271b0e000b1824313e4b5764717e8080808080808d99a6b3a99c90828080808080808080807a6d6054473a2d211407000000000000000000000000030c18242f39434f59606d7a85919ea5ab9f948b7e71685e52505c666f7c87939fa9a69f92857a6e61594f433a2f24190c03000000000000000000000000000000000000000814212e3b4754616e7a8795a0ac9a8d80736755616e7b8796a19f9285796c60534753606d7a86929f9f9285796d60576874818e9ba79f9286796d6053473a2d20140900000000000000000000000000000000000000010b151f28343f4a545f69717e8b939ea69f969196a0a89d938a7e71695e53493f342a1e150b000000000000000000000000000000000000000000000000000000030c18232e39424f59616d7a85929e9f92867b6e615a50443a2f24190c02000000000000000000000000000000000000000b1825323e4b5865717e8b98a4a69a8d8073675a5a6773808d9aa6a4988b7e7165584b3e3225180b00000914212e3a47535f6a75828f98a3aca0968d80746c625a504a423b3228231c150c0500020a12191f2326272827262625242322201b160f070000000000000000000000000b1824313e4b5764717e8a97a4b1a79a8d8174675a4e4134271b0e0100000000010e1b2734414e5a6774818d9aa7b0a4978a7d7164574a3e3124170b0000000000000c18232f3943505a616e7b859198a3acaca399928b80786f6a625f585653504a4e4d4d4d4e4a505355575e61696e757e869297a2aaaaa1969082786d60574e42372b21170b00000000000000000000000000000000000000000000000000000006121f2c3945525f6c7885929fabada093867a6d6053473a2d2014070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a15202a343c43474853535353535345403931271d120700000000000000000000000000000000000000000000000000000000000003101d293643505c6976838f9ca9a296897c6f6356493c3023160900000000000000000000000000000000000000000000000000000004101c2834404b54616e7b87939faca3998b7e7165707d8a97a2ab9f94887b6e62554b4034291c100400000000000000000000000000000000000003101d2a3643505d697683909ca9aa9d9184776a5e5144372b1e110400000000000000050f171f252a2d2e3939393939393939393939393939393939393939393939393939392f2e2b303334393939393939393433302b251d140b00000000000b151d252b30343539393939393939302f2c28211a110800000000000c1925323f4c5865727f8b93939393939393939394a2a79f9d9393939393939393939393939393939fa3a59e9b93939393939393938d8174675a4e4134271b0e00101c2936434f5c6976828c8c8c8c8c8d929ca8b4ab9f94908c8c8c8c8c8c8c8c877b6e6154483b2e2115080000000000000000000000000a151e2935404b55606b74818e97a1ada3999083776c60564c4a54606b74818e97a1ada2978e81756c61554c4135291e150b000000000000000000000000000000000000030f1b27333f495364717e8b97a7a49a8a7d7064575e697884919ea297887c6f62554a5663707d8999a39c8f8276665c5864717e8b97a8a3988a7d7063574a3d31261a0e0200000000000000000000000000000000000000030d17232e38424d57626c75828f97a1a8a09ea0a8a0968e81746c61564d41382d22180c030000000000000000000000000000000000000000000000000000000007121c27303d46525d68717e8b949f988f82766c61564c4135291e140a000000000000000000000000000000000000000b1825323e4b5865717e8b98a4a69a8d8073675a5a6773808d9aa6a4988b7e7165584b3e3225180b000006121f2b37434e58626f7c86929fa6a89d928b7e716c605b544d443d342e261e170e070000080e1317191a1b1a1a191817161613100b04000000000000000000000000000b1825313e4b5864717e8b97a4b1a79a8d8074675a4d4134271a0e0100000000010e1a2734414d5a6774808d9aa7b1a4978b7e7164584b3e3125180b000000000004101c2934404b55616c76828f97a1aaafa49a92877e736d665f58534e4946443f41404040413f4446484d53565e616c717c859298a2aca89f948d80736a5f53473e33281c1004000000000000000000000000000000000000000000000000000006121f2c3945525f6c7885929fabada093867a6d6053473a2d2014070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1b26313c464e535560606060605f514b43392f23180c00000000000000000000000000000000000000000000000000000000000003101d293643505c6976838f9ca9a296897c6f6356493c3023160900000000000000000000000000000000000000000000000000000006131f2c3845515c6673808d9aa4ac9f92867a6d606d7985929faba69a8d8073675c5145382c1f150a00000000000000000000000000000000000003101d293643505c6976838f9ca9aa9d9084776a5d5144372a1e11040000000000000000050d141a1e20212d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d22211f2326272d2d2d2d2d2d2d282724201a130b020000000000030b131a202427282d2d2d2d2d2d2d2423201c1610080000000000000c1925323f4c5865727f8b989f9f9f9f9f9f9f9f9faaacaba99f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9faaacaaa89f9f9f9f9f9f9f9a8d8174675a4e4134271b0e00101c2936434f5c6976828f99999999999ca4aeb9b0a69f9c9999999999999994877b6e6154483b2e211508000000000000000000000006111c26303845515d67707d89939da9a89f92877c6f655b5044424f59616d7a85929ea6a99e938a7d70675d51453d30271d1207000000000000000000000000000000000005121f2b3744505b6575818e9ba89f93867a6d6154576774818e9aa9988b7f7265544b556673808c99aa998c7f72665454616e7b8796a1aa9a8d807467574d42362a1e1205000000000000000000000000000000000000000006111c26303c45505a616d7a85929eabacaaaca3999184796d605a50443b2f261b10060000000000000000000000000000000000000000000000000000000000000b151e2935414c56626c76828f989f948a7e71685d52453d30261c11060000000000000000000000000000000000000b1825323e4b5865717e8b98a4a69a8d8073675a5a6773808d9aa6a4988b7e7165584b3e3225180b0000020f1a26313c47535f6a727f8c949fa7a49f93877e736c665e564f443f38302920191109000002070a0c0d0f0e0d0c0b0a0a0907040000000000000000000000000000000b1824313e4b5764717e8a97a4b1a79a8d8174675a4e4134271b0e0100000000010e1b2734414e5a6774818d9aa7b1a4978a7e7164574b3e3124180b000000000006131f2c3845515c67707d8a949fa9b0a69f93887e716c605c544e47433c3a38342e3433342d3338393c42464d525a616a6f7c86929aa4afa69f92877b6e62594f44392d20150a000000000000000000000000000000000000000000000000000006121f2c3945525f6c7885929fabada093867a6d6053473a2d201407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2b37434e585f626c6c6c6c6c6c5c554b4034291c1004000000000000000000000000000000000000000000000000000000000003101d293643505c6976838f9ca9a396897d7063564a3d302317080806020000000000000000000000000000000000000000000000000713202d3a4653606d7985929eacaa9c8f8275685d6674818e9ba9ab9e9285796d6053473c31261b0f01000000000000000000000000000000000003101c2936434f5c6976828f9ca9a99d9083766a5d5043372a1d100400000000000000000002090e121415202020202020202020202020202020202020202020202020202020161513171a1a202020202020201b1a18140f08010000000000000001090f14181a1b20202020202020171614100b05000000000000000c1925323f4c5865727f8b939393939393939393939da0a7a09393939393939393939393939393939393a0a79f9d939393939393938d8174675a4e4134271b0e00101c2936434f5c6976828f9c9f9f9fa0a2a7afb9b6aea8a69f9f9f9f9f9f9f94877b6e6154483b2e21150800000000000000000000020b17232e38424e58606d7984919ea5aca1968d80736a5f53493f3d46525e68717e8b949faba59e91847a6d60594f43392e23180b02000000000000000000000000000000000613202d394653606c7885929eaa9d908477685d525764717e8a97a79b8f8275665b515c677683909ca298897c6f6356535e697884919eaa9d918477695f53463a2d2114070000000000000000000000000000000000000000000a141e2a333f46525e68707d8a99a3aeb7ac9f92877c6f675d51483e32291d140a00000000000000000000000000000000000000000000000000000000000000030c1924303a44505a626e7b86929f9e91857a6d60584e42382e23170b0300000000000000000000000000000000000b1825323e4b5865717e8b98a4a69a8d8073675a5a6773808d9aa6a4988b7e7165584b3e3225180b0000000a15202b37434e58606c78828f959fa6a499938b80786e686159504a423b322b231b1209000000000000020100000000000000000000000000000000000000000000000a1724313d4a5764707d8a97a3b0a79a8e8174675b4e4134281b0e0100000000010e1b2834414e5b6774818e9aa7b0a3978a7d7064574a3d3124170a0000000003101c28343f4a54606d7984919ea6b0aa9e948c7f736c625a504a423c37322d2c282327272722282b2d31363b42465058606a707e88939fa8aea3998f82766c6155493c31261b0f000000000000000000000000000000000000000000000000000006121f2c3945525f6c7885929fabada093867a6d6053473a2d201407000000000000000000000000000000000000000000000000000000000000000000000000000000000003060b0f15212e3a47535f6a76797979797976675c5145382c1f130e090603000000000000000000000000000000000000000000000000000003101c2936434f5c6976828f9ca9a4978a7d7164574a3e2f24191514120e090300000000000000000000000000000000000000000006121f2b37434e5864717e8a97a1ada3988b7e71645663707d8a97a1ada2978b7e7164584e43372b1d13070000000000000000000000000000000000020f1c2935424f5c6875828f9ba8a99c908376695d5043362a1d10030000000000000000000000020507081313131313131313131313131313131313131313131313131313130908060b0d0e131313131313130e0e0b0803000000000000000000000003080c0e0e131313131313130a0907040000000000000000000c1925323f4c5865727f86868686868686868686868995a0958986868686868686868686868686868689959f958986868686868686868074675a4e4134271b0e00101c2936434f5c6976828f9393939393969da7b2aea49c999393939393939393877b6e6154483b2e211508000000000000000000000a141d28343f4a54606a73808d96a0aca59e9184796d60584e413835414c56606c77829099a3ada1968d80746b60554b4034281d140a000000000000000000000000000000000916222f3c4955626f7c8897a1a79a8d817467564c54616e7a8795a09f9285796c6053606d7986929f9f9285796d60534d576874818e9ba7a096887b6e6155483b2e23180c00000000000000000000000000000000000000000008131e28323a45515c666e7b86929facb7ab9e91847a6d605a50443b2f261b1106000000000000000000000000000000000000000000000000000000000000000008131e28323e47535f6973808c96a0978d80746a60544a3f34281f140900000000000000000000000000000000000b1825323e4b5865717e8b98a4a69a8d8073675a5a6773808d9aa6a4988b7e7165584b3e3225180b000000030f1a26313c44505b666d79838f949da5a49f928d827a706b605c544d443d352d241b12090000000000000000000000000000000000000000000000000000000000000a1723303d4a5663707d8996a3b0a89b8e8175685b4e4235281b090000000000020f1b2835424e5b6875818e9ba8b0a3968a7d7063574a3d3024170a0000000006121f2b3844505c66727f8c96a0acaea2988f82776c605a50443f38302b26201f1c171a1a1a171c1f20252a30363e464e58616c73808d96a1acab9f948a7d7064584e43372b1d12070000000000000000000000000000000000000000000000000006121f2c3945525f6c7885929fabada093867a6d6053473a2d201407000000000000000000000000000000000000000000000000000000000000000000000000000000060b1012171b1f222f3c4855626f7c8686868686796d6053473a2d201e1a15130f0a04000000000000000000000000000000000000000000000000020f1c2935424f5c6875828f9ba8a6998c7f7366554b4135292422211e1a150e0600000000000000000000000000000000000000000814212e3a47535f6a7683909ca9ac9f92867a6d6054606d7985929eaba99d9083766a5f53473a2f24180d0100000000000000000000000000000000020f1c2835424f5b6875828e9ba8a99c8f8376695c504336291d10030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1825313e4a56626d72797979797979797979797983909d918479797979797979797979797979797983909d90837979797979797979746e64584c3f33261a0d00101c2936434f5c6976828686868686868b96a2aea89c928c8686868686868686867b6e6154483b2e21150800000000000000000006111b262f3844505c666f7c87929fa8aa9e938a7d70675d51463c2f303a44505b656f7c87929fa8a89f93887d6f675c51453c2f261c1106000000000000000000000000000004111d2935404b5566727f8c99a9a8978a7d7164574a525e687784919da297887c6f625663707c8998a39c8f8276665c514b5864717e8b97a8a8988b7e7265544b4034281c100400000000000000000000000000000000000000050f19242f3a444f59606d79839099a3acaaaca1968e81746c61564d41382d22170c0300000000000000000000000000000000000000000000000000000000000000020c16202b37424d57606d7984919e9f93877c6f665c50443b30251a0d04000000000000000000000000000000000b1825323e4b5865717e8b98a4a69a8d8073675a5a6773808d9aa6a4988b7e7165584b3e3225180b000000000a152028333f4a545d676d79828e939fa3a49c948f857d736d665e564f473e362d241b110800000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8895aab4a99c8f8276695c4f4330251a0e0200000000030f1c2936424f5c6975828f9ca8b5ab95897c6f6256493c2f231609000000000713202d3a4653606d7884919ea8b2a99f92867b6e655b50483e342e261e1b1312100c060d060b0f12131a1f252a343d46505a606d7984919ea8b0a69c8f83766a5f5347392e23180c0000000000000000000000000000000000000000000000000006121f2c3945525f6c7885929fabada093867a6d6053473a2d20140700000000000000000000000000000000000000000000000000000000000000000000000001080d11171c1f22272b2d2f3c4855626f7b88939393867a6d6053473a2e2d2a25211f1b15100b0500000000000000000000000000000000000000000000010e1b2734414e5a6774818d9aa7a89b8f8275675d51453c352f2f2e2b2620180f0600000000000000000000000000000000000004101d2935404b55626e7b88949faba89b8e8175685d525c6674808d9aa7ab9f95887c6f62554b4035291d110400000000000000000000000000000000020f1b2835424e5b6875818e9ba8a99c8f8276695c4f4336291c100300000000000000060b0e10111313131313130f0e0c0904000000000000000000000003070b0d0e13131313131312110f0c0701000000000000000000000004080a0b1313131313131308070502000000000000000000000000000000000000000916222e3a46515b62656c6c6c6c6c6c6c6c6c6c74818d9a93867a6d6c6c6c6c6c6c6c6c6c6c6c6c74818e9a9286796d6c6c6c6c6c6c67645c52473c3024170b000f1c2835414e5a6670767979797979798693a0ada6998c8079797979797979797976695e53463a2d2114070000000000000000000b17222d38414d57606d78839099a3aea2988e81756b61554b40342a27333f49535f6a73808d96a1ada49a9184796d60584e42382d22170b03000000000000000000000000000613202c3945515d6776838f9ca9a096877a6e6154474c566774808d9aa9988b7f72655466737f8c99aa998c7f7266544a4854616e7b8796a0a89c8f8275665c5145382c1f1306000000000000000000000000000000000000020b17212935414c56606b73808d95a0a7a09da0a79d938a7e70685e53493f33271e150b0000000000000000000000000000000000000000000000000000000000000000040e1a26313c45515c67707d89939e999083786d60574d42362a1f160c010000000000000000000000000000000b1825323e4b5865717e8b98a4a69a8d8073675a5a6773808d9aa6a4988b7e7165584b3e3225180b00000000030b17222d38424b555d676d78818b9298a0a69f97928880786e69605950483f362d231a0e04000000000000000000000000000000000000000000000000000000000814212e3b4754616e7b8798a3aeaa9d9084776a574d42362a1e12050000000005111d2935414c566a7783909daaafa399877b6e6154483b2e21150800000005111e2a36414c5664707d8a96a1adada1978c7f72695e53493f3628231c140c0a060300000000000306090e1419222b343e45515d67717e8a96a0acab9f94887c6f62544b4034281c100400000000000000000000000000000000000000000000000006121f2c3945525f6c7885929fabada093867a6d6053473a2d2014070000000000000000000000000000000000000000000000000000000000000000000000060b13191c23282b2d3337393b3e4855626f7b88959f93867a6d6053473e3b3a36312e2b26201c170e09030000000000000000000000000000000000000000000c1825323f4b5865727e8b98a6ac9f92857a6d60574d45413f3b3a37312a21180e03000000000000000000000000000000000006131f2c3945515d6774808d9aa6aca096897d7063564c54626f7b88959faba79a8d8174675d5145392c20150a00000000000000000000000000000000020e1b2835414e5b6874818e9ba7a89c8f8275695c4f4236291c0f030000000000040b12171b1d1e2020202020201c1b19150f09020000000000000001080e13171a1a2020202020201f1e1b18130c050000000000000000050c11141717202020202020201514120e0903000000000000000000000000000000000006121e29343f4951565860606060606060606064717e8b979a897d70636060606060606060606065717e8b9899897c6f6360606060605a58524a41362b1f1408000d1925323d49545e66696c6c6c6c6d7a8693a0ada6998c80736c6c6c6c6c6c6c6c6c5e574d42362a1e12050000000000000000040f1b27333f49535f69727f8c95a0aba79f92857b6e61594f43392f22222d38414e58606d7984919ea6aca0958c80736a5f544a3f33281f1409000000000000000000000000000714202d3a4753606d7a86929faa9d918477685e52464a5764707d8a99a49b8f8275655c6676828f9ca298897c6f62564946525e697784919eaa9f9285796d6053463a2d2013090000000000000000000000000000000000000a141d29333b45525d68707d87939fa69f959095a0a59e92857a6e655b50443c30271d120700000000000000000000000000000000000000000000000000000000000000000915202834404b55606b75818e97a0958c7f72695e52463e31281d12070000000000000000000000000000000b1825323e4b5865717e8b98a4a69a8d8073675a5a6773808d9aa6a4988b7e7165584b3e3225180b000000000006111c262f3a434b555d666d747f8691969ea5a19a938d827b706b615a50483f352b20160c020000000000000000000000000000000000000000000000000000000713202d3a4653606d7986929facab9f928578695e52463a2d201407000000000713202d3946525d687885929eabac9f9286796d6053463a2d2013070000000714202d3946525e6876828f9ca8b2ab9e9185796d60574d41382d2417110a02000000000000000000000002091019222935404b55606c7884919dabb0a69a8e8174665c5145382c1f130600000000000000000000000000000000000000000000000006121f2c3945525f6c7885929fabada093867a6d6053473a2d201407000000000000000000000000000000000000000000000000000000000000000000020a11171e24292e34383a3f4446484b4d55626f7b8895a093867a6d60534d4a4846423c3b37322d28221a150e0600000000000000000000000000000000000000000815222f3b4855626e7b88949faba2988b7f72695f57514c4c4847423c332a20150900000000000000000000000000000000000714202d3a4753606d7985929fabab9e9184786c605346535f6a7683909daaab9f92857a6d6053473d32271b0f01000000000000000000000000000000010e1b2834414e5b6774818e9aa7a89b8e8275685b4f4235281c0f0200000000050e161d23272a2b2d2d2d2d2d2d282825201b140c030000000000020b12191f2326272d2d2d2d2d2d2b2b28241e170f060000000000000810171c2123242d2d2d2d2d2d2d22211e1a140e0600000000000000000000000000000000010d18232d373f464a4c535353535353535355626e7b8897998c7f736659535353535353535355626f7b8898988c7f726559535353534e4c4741382f241a0e03000915212c38424c545a5c606060606d7a8693a0ada6998c807366606060606060605f534d453b31251a0e0200000000000000040e1a242b3744505b656e7b86929fa7ab9f958b7f72695e52473e31271d1b262f3c45515d67707d8a949eaaa89f92877c6f665b50443b31251a0e040000000000000000000000000a1724303d4a5763707d8a99a3a79a8e817467564c414754606d7a86939f9e9285796c606d7985929f9f9285796d605346424d576774818e9aa7a298897d706356493d30251a0e020000000000000000000000000000000006111c262f3b45505a606d7a849199a49f9490849096a1a1978f82776c60584e43392e23180e0400000000000000000000000000000000000000000000000000000000000000030c18232e39434f59616d7a85929f9f92867b6e61594f43392f24180b0200000000000000000000000000000b1825323e4b5865717e8b98a4a69a8d8073675a5a6773808d9aa6a4988b7e7165584b3e3225180b0000000000000a141d28313a434b545c606d727c848e939fa2a49f9490857d716c625a50473d32281e130800000000000000000000000000000000000000000000000000000006121f2b3844505c667784909daaaea298877b6e6154483b2e21150a000000000714212e3a4754616d7a8797a1adaa9e918477665c5145382c1f13060000000814212e3b4754616e7a87939facafa3998c7f72675d51453b2f261b1206000000000000000000000000000000071018242f3944505b66727e8b99a3aeac9f9285796d6053463a2d20130800000000000000000000000000000000000000000000000006121f2c3945525f6c7885929fabada093867a6d6053473a2d2014070000000000000000000000000000000000000000000000000000000000000000040b141b22272f35383f444649505355585a5c626f7b8895a093867a6d605b5a5754534d4947433c39332b261f180f09000000000000000000000000000000000000000814212e3a47535f697683909ca5aa9f92857b6e69605d555855534d453c31261a0e0200000000000000000000000000000006131f2b37434e5865717e8b97a2ada3998c7f72655b50444e5865717e8b98a2aea2988b7e7165584e43372b1e1308000000000000000000000000000000010e1a2734414d5a6774808d9aa7a89b8e8175685b4e4235281b0f02000000040e1720282e3336373939393939393534312c251e150c02000000010b141d242b3033343939393939393837342f2921180f050000000008121a22282d3031393939393939392e2d2b261f180f060000000000000000000000000000000007111b252d343a3e3f4646464646464647535f697885929c8f827569574d4246464646464653606c7985929b8e827568564d424646413f3c362f261d1308000005101b26303a42494e4f535353606d7a8693a0ada6998c807366595353535353534846423b33291f140900000000000000020c16202a36424d57606c77829098a3aea3999083786c60564d42352c1f15141d2935404b55616c75828f98a2aea3999083786c60574d42362a20160c020000000000000000000005121e2a36424d576774808d9aaba8978a7e7164574b3e45525d687783909da297887c6f626f7c8998a29c8f8276665c50443e4b5764717e8a97a8aa9a8d807367574d42362a1e1205000000000000000000000000000000030d17222d38424d57616c75818e96a1a39890827a84919ea59f948b7f726a5f554b40342820160c020000000000000000000000000000000000000000000000000000000000000007121d27303d46525e68717e8b949f988f82756c61554b4035291d140a00000000000000000000000000000b1825323e4b5865717e8b98a4a69a8d8073675a5a6773808d9aa6a4988b7e7165584b3e3225180b000000000000020b161f28313a424a515b626a6f7a818b9298a0a69f9792877e716c62594f443a3025190d03000000000000000000000000000000000000000000000000000003101c28343f4a546875818e9ba8b3aa978a7d7064574a3d32271b0d04000001081623303d495663707c8996a9b3a89c8f827569544b4034281c10040000030f1b27333f495364717e8b9aa4afac9f92867a6e61554b4033291d140a000000000000000000000000000000000007121d28333f4a54616d7a86929facaea298897d706356493d2f24190d01000000000000000000000000000000000000000000000006121f2c3945525f6c7885929fabada093867a6d6053473a2d20140700000000000000000000000000000000000000000000000000000000000000050d161d262d333a41454a5053535b60626467686a6f7b8895a093867a6d6a686664615e5755534e49443e37312a211a120a01000000000000000000000000000000000006121e2b37424d5763707d89939ea6a29891847b736d676665625f574d42372b1e12060000000000000000000000000000000815212e3b47535f6a7683909da9ac9f92867b6e6153493f4753606d7a85929facaa9d9083776a6054473a2f24190d010000000000000000000000000000010d1a2734404d5a6773808d9aa6a79b8e8174685b4e4135281b0e020000000b16202932393f434446464646464642413d3730271e140900000008121d262f363c3f414646464646464544403a332b21170c01000005101a242c33393c3e464646464646463b3a37312a21180e030000000000000000000000000000000009131b23292e313239393939393937424d576975828f9c928578695f53473a3939393844505b6676838f9c918478695e52463a393433302b241d140b010000000a141e2830383d4143464753606d7a8693aab4a6998d8073665a4d46464646463b3a36312921170d030000000000000008131e28323a46525e69727e8b949faaa89f92877c6f665b50443b30231a0d0b18242f3943505a616e7b86929fa8ab9f958b7f72695e53463e32281e1308000000000000000000000714212d3a46535e697784919eaaa196877b6e6154483b414c566673808d99a9988b7f7266727f8c99aa998c7f7266544a3f3b4754616e7b8796a0aa9d908477695e52463a2d2014060000000000000000000000000000010b151f28333f4a545e69717e8a939ea79f92867b707d89939ea69f92867c6f675c51453d32281e130800000000000000000000000000000000000000000000000000000000000000000b151e2a36414c56606c778390999e938a7d70675d51453c2f261b1106000000000000000000000000000b1825323e4b5865717e8b98a4a69a8d8073675a5a6773808d9aa6a4988b7e7165584b3e3225180b00000000000000040d161f2830394044515860676d757e8691969fa7a19992887e716b60564c4135291f15090000000000000000000000000000000000000000000000000000000b17232e3f4b5865727e8b98a8b2a69a8d807367584e43372b1f15100c090e131e2a36414c5666727f8c99a5b3aa998c7f7366594c402e23180c00000005121f2b3744505b6575818e9bacb6a99c8f8276685e5243392f21170b020000000000000000000000000000000000010b17222d3846525d6875828f9ca8b4aa9a8d807367564c4135291d1104000000000000000000000000000000000000000000000006121f2c3945525f6c7885929fabada093867a6d6053473a2d201407000000000000000000000000000000000000000000000000000000000000050e171f282f383f444c51545c6063656c6e71747576787c8895a093867978777573716e6967625f58555047423c332c241c130a0000000000000000000000000000000000020e1a26313c4854606b74818e949da5a09691857f7a7673726e695f53473a2e211408000000000000000000000000000004111d2935414c55626f7c88959faba99b8f8275685e52413845515d6774818e9ba7aca095897c6f62564c4135291d11040000000000000000000000000000000d1a2733404d5a6673808d99a6a79a8e8174675b4e4134281b0e01000006121d28323b444b4f515353535353534f4d48423930251b0f0400030e19242f3840474c4d53535353535352504c453d33291e130700000c17222c363e45494a535353535353534846423c332a1f140900000000000000000000000000000000010911181e2225252d2d2d2d2d2631404c5966737f8c9997887b6e6255483b2f2d28333f4a546673808d9996877a6e6154473b2e2726241f1a130b0200000000020c161e262c3235363a4653606d798698a3aea79a8d81746753493f36393a3c3a38342f271f150b01000000000000030d1924303a44505a616e7b85929fa6ada1968d80746a5f544a3f32291f110807121d28313e46535f69737f8c95a0aca79f92867b6e615a50443a3025190d040000000000000000000815212e3b4854616e7b8796a0ab9e918478695e53463a3d4a5663707d8999a39b8e82756675828f9ca298897c6f6256493c3a46525e697784919daaa095877b6e6154483b2e23170c000000000000000000000000000007121d27313944505b666e7b85929fa5a0958c7f726b75818e97a1a3989083796d60594f443a3025190f0600000000000000000000000000000000000000000000000000000000000000030c1925303a44505b656f7c87929f9e9184796d60584e41382d22170b020000000000000000000000000b1825323e4b5865717e8b98a4a69a8d8073675a5a6773808d9aa6a4988b7e7165584b3e3225180b0000000000000000040d161e272e343f464e555d606c717c8490959fa7a39a92877d70685e52463c31261a0e0000000000000000000000000000000000000000000000000000000615222f3c4855626f7b8896a0acaa9d9184776a6054473c31271f1c181b1a1e242d3946525e6876838f9ca9aea298897c706356493d302316070000000613202d394653606c7885929eabb3a9988b7f7265564c4131271d0f050000000000000000000000000000000000000006111c2935414c5665727f8b98aab4aa9d918477685d5245392c201306000000000000000000000000000000000000000000000006121f2c3945525f6c7885929fabada093867a6d6053473a2d2014070000000000000000000000000000000000000000000000000000000000040e172029313a414950555d60666d7075797b7e8082838486929fac9f9286858382807d7b77736f6a64615a534d453e362d251c120900000000000000000000000000000000000915202c38444f59606d79828e939c9fa097928c8683807f7b6e6255483b2f22150800000000000000000000000000000613202c3945515d6774818e9aa7ada1968a7d7063564d4135404b55636f7c8995a0aca79b8e8174685d5245392c20160a0000000000000000000000000000000d1a2633404d596673808c99a6a79a8d8074675a4d4134271a0e0100000b17232e39444d565b5e6060606060605b59534b42372c2015090007131f2b36404a52585a6060606060605e5c574f453a2f24180c0004111c28333e485055576060606060606055534d453c31261a0e020000000000000000000000000000000000070d12161819202020202023303d4a5663707d8999978b7e7164584b3e2f24222d3d4a5764707d8a97978a7d7064574a3d2e231717140e0801000000000000040c141b2125282c3845515c667986929faca89b8f8275655b5046424547484745403931271d12070000000000010b151f2935414c56616c75828f98a2aea69e9184796d60584e42382d20170d00010c161f2a36424d57606d7984919da5aea2988f82756c61564c4135291f160c010000000000000003101c28343f4a5465727e8b98a8a79b8e817468574d42363a4753606d7a86929f9e9285786c7985929f9f9285796d6053463a36424d566774818e9aa7a7988b7e7165544a3f34281c1003000000000000000000000000050e18242f39434e58606c78829097a2a3999083786d616d7a85929ea6a0958d80736b60564c41352921180c030000000000000000000000000000000000000000000000000000000000000008131e27333f49535f6a73808d96a0968d80736a5f53493f33271e14080000000000000000000000000b1825323e4b5865717e8b98a4a69a8d8073675a5a6773808d9aa6a4988b7e7165584b3e3225180b000000000000000000040c151c2328343c434c515a626a6f7a839095a0a9a39992857a6d61574d42372b1b110600000000000000000000000000000000000000000000000000000815212e3a47535f6a7784919eabaca095887c6f62584e4339312c282327262b2f35414c56616d7a86929facab9f9285796d6053463a2d2013070000000815222e3b4855616e7b8897a1adada197887b6e6255483b3022150b0000000000000000000000000000000000000000000d1924303c4855626f7b8898a2aeaca095877a6d6054473a2d211407000000000000000000000000000000000000000000000006121f2c3945525f6c7885929fabada093867a6d6053473a2d20140700000000000000000000000000000000000000000000000000000000020b162029323b434b535b60676d73797d8285888b8d8f90919298a3aea3989291908e8d8a8784807c76706c625f5750483f372d241b10060000000000000000000000000000000003101c27333d45515c676d7981898f939aa29f9992908d8b7f7265584c3f3225190c00000000000000000000000000000714212d3a4754606d7a85929facac9e9184796d6053463b303a4854606b7784919dabac9f92867a6d6054473d32271b0f0200000000000000000000000000000c1926333f4c5966727f8c99a5a69a8d8073675a4d4034271a0d0100020e1b27333f4b565f676a6c6c6c6c6c6c68655d53483d3125190c000b1723303c47525c64676c6c6c6c6c6c6b6861574c4034281b0f030814212d3945505a61646c6c6c6c6c6c6c6c5f574d42372b1e12050000000000000000000000000000000000000106090b0c1313131314212d3a4754606d7a86939a8d817467554b403529212e3a4754616d7a8796998d807366544a3f34281c100303000000000000000000020a1015191c2834404b546b7885929eabab9e9184786c6056534d51545553514b43392f23180c000000000007121d27313945525d68717e8a939eaaaa9e948a7d70675d51463c2f261c0e050000040d1a26313b45515c66707d89939ea9aa9e948a7e71685e52463d31281d12070000000000000006121f2c3844505c6675828f9ba8a9988b7e7165584b3e313945515d677683909ca197887b6f7b8897a29c8f8276665c504438303e4b5764717e8a97a8a89b8e8275665c5044382c1f12060000000000000000000000020c17202935404b555f6a727f8c949fa89f92877c6f665e68717e8a949ea79f93887d70685e52463f332a1e150a00000000000000000000000000000000000000000000000000000000000000020b17222d38414e58606d7984919e9f92877c6f655b50443b3025190c0300000000000000000000000b1825323e4b5865717e8b98a4a69a8d8073675a5a6773808d9aa6a4988b7e7165584b3e3225180b00000000000000000000030b1218222b313a414550585f686d79839097a1aba1978e8174695f5347382d22170b000000000000000000000000000000000000000000000000000006121f2b37434e586673808d99a3afa89b8e81756a5f554b433c38342e3431373a4145525d68737f8c99a3afa79b8e8175675c5145382c1f13060000000a1724303d4a5763707d8a96a9b3ab9e928578695f53473a2e2114030000000000000000000000000000000000000000000813202d394653606c7985929facb1a795897c6f6256493c2f231609000000000000000000000000000000000000000000000006121f2c3945525f6c7885929fabada093867a6d6053473a2d201407000000000000000000000000000000000000000000000000000000000a141d28323b444d555d656c717a80858a8e9297979a9b9d9e9fa3aab4aaa39f9e9d9b999796918d88837d766e69615a51493f362d22180b02000000000000000000000000000000000b16212834404b555d676d747d82889297a2a39f9c988b7f7265584c3f3225190c0000000000000000000000000007131f2c38434f5965727e8b98a2aea49a8d8073665c5044382c38434f5965727f8c99a3aea2988b7f7265594f44382c1e130800000000000000000000000000000c1926323f4c5965727f8c98a5a6998d8073665a4d4033271a0d000004101d2a36434f5b677177797979797979756f65594d4134281b0e020d1a26333f4c58646e747979797979797873685c5044372b1e11050a1723303c4955616c717979797979797976695f53463a2d21140700000000000000000000000000000000000000000000000606060613202c3945515d677784909d908377675d5145382c202d3946525e687884919c908376665c5044382c1f120600000000000000000000000005090c18232e43505d6a7683909da9ada196897d7068615f575d6062605c554b4034291c1004000000030c18242f39434f59606d7a85919ea6aea2988f82756c61554b40342a1d140a0000000009141f2834404b54606b75818e97a2ada69e92857a6d61594f43392f24180c030000000000000713202d3a4653606d7985929faba197887b6e6155483b2e35404b556673808c99a9978b7e717e8b97a9998c7f7266544a3f342e3b4754616e7a8795a0ab9f9285796d6053463a2d201308000000000000000000000008131e29323a45515d676f7c87929fa6a0968d80736a5f56616c75828f98a2a49a91857a6d615a50453c30261c11060000000000000000000000000000000000000000000000000000000000000006111b262f3c45515d67707d8a939e999083776c60564c41362a1e150b00000000000000000000000b1825323e4b5865717e8b98a4a69a8d8073675a5a6773808d9aa6a4988b7e7165584b3e3225180b0000000000000000000000000710191f282f353f464e565d676e7a85929ea6a99f93877b6e6253493f33271b0f0300000000000000000000000000000000000000000000000000030f1a26313c4854616e7b87929faaac9f92877c6f675d554e46454041414142474c515b606d7a85929eabaca095897d7063554b4034281c10040000000c1926323f4c5965727f8c98a5b2a99c8f837669574d42372b1e120600000000000000000000000000000000000000000006121f2b3844505b667783909daab1a4978b7e7164584b3e3125180b000000000000000000000000000000000000000000000006121f2c3945525f6c7885929fabada093867a6d6053473a2d20140700000000000000000000000000000000000000000000000000000006111b262f3a444d565e676d777e858d91979b9ea2a9a7a8a5a4a4a6acb3aba5a3a4a5a7a6a8a09d9a95908a827b716c635b51483f342a1d140a0000000000000000000000000000000006111c262f3b444d575e666d72797e85929faba8a5988b7f7265584c3f3225190c000000000000000000000000000a15222f3b4854606b7783909daaac9f93877b6e61544a3f3428323d4754616d7a86929facaa9d9184776b6054483a3025190d00000000000000000000000000000c1925323f4c5865727f8b98a5a6998c807366594d4033261a0d000004111e2b3744515e6a77848686868686868175685b4f4235281c0f020e1a2734414d5a67748086868686868685786b5e5245382b1f12050b1724313e4a5764717e868686868686867b6e6155483b2e221508000000000000000000000000000000000000000000000000000004111d2935414c556774818e9a92867a6d6053473a2d202a36414c566875818e9b9285796d6053463a2d2013070000000000000000000000000000071a2734414d5a6774808d9aa9b2a89d91837a726e696c676d6f6d675c5145382c1f13060000000b151e2935404b55606b74818e97a1ada79f92867b6e615a50433a2f22190b0200000000030c18232e39424f59616e7a85929fa7ada1978e81746b60554b4035291e150a000000000000091623303c4956636f7c8997a2ab9e918578695f53463a2d2f3c4956636f7c8998a29a8e8174818d9aa298897c6f6256493c2e2d3946525e687784919daaa297897c6f6356493c3025190d01000000000000000000060f1925303a444f59606d79839199a3a49a9184796d6058505a616e7b86929fa7a1978f81756c62574d42382e23170d04000000000000000000000000000000000000000000000000000000000000000a141d2935404b55616b75818e989f958b7e72685e52463d30271d1207000000000000000000000b1825323e4b5865717e8b98a4a69a8d8073675a5a6773808d9aa6a4988b7e7165584b3e3225180b00000000000000000000000000070d161e2429343c444c555e68707d8a949faba49a8d8174655b5044372b1f120500000000000000000000000000000000000000000000000000000a15212d3a46535e6975818e98a3aea3999083796d675f5853514b4e4e4e4d53555d606d74818e97a1ada69d9083776b605443392e23180c000000000e1b2834414e5b6774818e9aa7b3a79a8d8074675a4d4131261a0e02000000000000000000000000000000000000000000030f1c28333f4a546875818e9ba8b3a6998d8073665a4d4033271a0d000000000000000000000000000000000000000000000006121f2c3945525f6c7885929fabada093867a6d6053473a2d2014070000000000000000000000000000000000000000000000000000000b17222d38414c565e696e79828b91979ea1a9aba8a19e9b9997989ba2aba1999697989b9ea0a8aaa79f9d948f867e726d635a50463c2f261b11060000000000000000000000000000000b17222d38424d565e696e787f858b9297a29f9c98958b7f7265584c3f3225190c00000000000000000000000006111b2935414c56636f7c8995a0aca99c8f8276695f5342382e232d3946525e6875828e9ba8aca095897c6f63564c41362a1b1106000000000000000000000000000c1825323f4b5865727e8b98a5a6998c7f7366594c403326190d000004111e2b3744515e6a778491939393938e8275685b4f4235281c0f020e1a2734414d5a6774808d939393939185786b5e5245382b1f12050b1724313e4a5764717d8a9393939393887b6e6155483b2e2215080000000000000000000000000000000000000000000000000000010d19242f3e4b5865717e8b9899897c6f6356493c302325303f4c5865727f8b9898887c6f6255493c2f22160800000000000000000000000000000b1724313e4a5764717d8a97a1adaca09591847f7b7978797a7c796d6053473a2d201407000007121c27303945515d67707d89939da9aba0958c7f72695e53483e31281d100700000000000007121d27303d46525e68727f8b959faba99e93897d70675d51453d30261c11060000000005111d2935414c566673808c99a9a89b8e817568574d42372b2d3a4653606d7985929f9d90847783909d9f9285796d6053463a2d2a36414c566774818d9aa7a9998d807366564c41362a1e11050000000000000000030c18212a36414c56616b74808d95a0a89f93887d6f675c5146535e69727f8b959fa99e938b7e71695f544a3f34281f160c01000000000000000000000000000000000000000000000000000000000000020b18242f39434f59616e7b85929f9f92857a6e61594f43392e23180c030000000000000000000b1825323e4b5865717e8b98a4a69a8d8073675a5a6773808d9aa6a4988b7e7165584b3e3225180b0000000000000000000000000000040c1319222a323a434d56616c7683909cabac9e9285786c605346392d201306000000000000000000000000000000000000000000000000000005121e2a36424d57616e7b86929fa6aba0958f82796f6a63605c555b5a5b575f62676d747f8c939ea9a99f948a7d7064594f4430271d120700000000101c2936434f5c6976828f9ca9b2a5998c7f7266594c3f3326190900000000000000000000000000000000000000000000000b17222d404d5a6773808d9aa6b3a89b8e8175685b4f4235281c0f000000000000000000000000000000000000000000000000121f2c3945525f6c7885929fabada093867a6d6053473a2d2014070000000000000000000000000000000000000000000000000000030f1b27333f49535d686e7b838f949ea1a9a9a19e9996918e8c8b8b909ba5998f898a8c8e9196999ea1a9a69f98928a7f726c62584e41382d22170b0000000000000000000000000000030f1c28333f4a545e696e7b838c92979f9f99938f8b88877f7265584c3f3225190c0000000000000000000000000b17222d3946525d6875818e9ba7ada1978a7e7164574d4230261c2a36414c5663707d8996a1ada79b8e8175685e5246382d22170b000000000000000000000000000b1825323e4b5865717e8b98a4a5988c7f7265594c3f3226190c000004111e2b3744515e6a7784919d9f9f9b8e8275685b4f4235281c0f020e1a2734414d5a6774808d9a9f9f9e9185786b5e5245382b1f12050b1724313e4a5764717d8a979f9f9f94887b6e6155483b2e2215080000000000000000000000000000000000000000000000000000000815222f3b4855626e7b8897988c7f7265594c3f3025232f3c4956626f7c8998988b7e7265584b3f3024190d01000000000000000000000000000713202d3a4653606d7985929ea6b0a7a096918b8886858687877b6e6154483b2e21150800000c18232e39424e58606d7984919ea5afa4999083786d60574d42362c1f160c00000000000000000b151e2a36414c56606c78839099a4afa59e9184796d60584e42382e23170c000000000713202d3946525d687683909da9a9988b7e7265584b3f31262c3844515c6676828f9c9f93867a86929f9c8f8275665c5044382b25303e4a5764717d8a97a7aa9d908377685e5246392d20140600000000000000000b151e2a333c46525e68707d8a929da8a1968d80746b60554b424d57606c78839099a3a59f92867b6e665c50443d31281e13080000000000000000000000000000000000000000000000000000000000000007121d27313e46525e68727f8b959f978e81756b60554b4034281f15090000000000000000000b1825323e4b5865717e8b98a4a69a8d8073675a5a6773808d9aa6a4988b7e7165584b3e3225180b000000000000000000000000000000010810182028313b44505a64717e8a99a3ada197887c6f6255493c2f2216090000000000000000000000000000000000000000000000000000020e1a25313b46535f69737f8c949fa7a79f948f837c75706d676867676869696e737a818c919ca5aaa1978f82766c6155473d331e150b0000000000101d2a3643505d697683909ca9b1a4978a7e7164574b3e3124180b0000000000000000000000000000000000000000000000061926323f4c5965727f8c98a5b2a89c8f8275695c4f4236291c0f0000000000000000000000000000000000000000000000030d152c3945525f6c7885929fabada093867a6d6053473a2d20140700000000000000000000000000000000000000000000000000010c161f2b3744505b656d7a8490959fa6aaa29f96918c8884817f7e7e8b98a396897d7d7f8184888c91979fa3aaa29f918b7e716a5f53493f33271b0f030000000000000000000000000006121f2b3844505b666e7b8490959ea19d948f87827e7c7a786c605346392d2013060000000000000000000000030f1b27333f4953616d7a86929facab9e9285796d6053463b31201925303a4653606c7884919eabac9f92867a6d6153493f33271b0f030000000000000000000000000b1824313e4b5764717e8a97a4a5988b7f7265584c3f3225190c000004111e2b3744515e6a7784919daaa89b8e8275685b4f4235281c0f020e1a2734414d5a6774808d9aa7ab9e9185786b5e5245382b1f12050b1724313e4a5764717d8a97a4aca194887b6e6155483b2e2215080000000000000000000000000000000000000000000000000000000613202d394653606c7985929b8e827568574d42362a202d3a4653606d7986929b8e817468564c4135291d11040000000000000000000000000006131f2c3845515c67737f8c949fa6ada8a19e989992929299877b6e6154483b2e2115080004101c2834404a54606a73808d96a09fa99f93877c6f665c50453b31241a0d040000000000000000030c1925303b44505b666f7c87939fa99fa1968d80736a60544a3f34281c10030000000714212e3a4754616d7a86939faca197887b6f6255483c2f222834404a5466727f8c99a4998c7f8c99a3998c7f7266544a3f3428212e3a4754616d7a8795a0ac9f93877a6e6154473b2d22170b0000000000000007121c27303c45515b616d7a85919ea4a59e9184796d60594f433b44505b666f7c86929fa7a2989083786d60594f433a2f24190f05000000000000000000000000000000000000000000000000000000000000010b151f2a36414d56606c788390999e93897d70675c51453c31261a0e0400000000000000000b1825323e4b5865717e8b98a4a69a8d8073675a5a6773808d9aa6a4988b7e7165584b3e3225180b0000000000000000000000000000000000060e161f29323e4753606d7a86929f9fa9988b7e7265584b3f3225180c00000000000000000000000000000000000000000000000000000009141f2a36424d57606d78828f959fa7a69f959087817d79777574747476787b80858e939ca3aaa29892857b6e615a5044352b210c030000000000111e2a3744515d6a7783909daab0a3968a7d7063574a3d3024170a00000000000000000000000000000000000000000000000b1825323e4b5865717e8b98a4b1a99c908376695d5043362a1d1000000000000000000000000000000000000000000000010b151f2935414c566c7885929fabada093867a6d6053473a2d20160c0200000000000000000000000000000000000000000000000008131e2935414c56606c77828f96a0a7a8a198928c84807b787572717b8895a0938679717274777b80848d9299a2aaa39f92867c6f655b5044372b1f130800000000000000000000000003101c28343f4a54606c788390969fa79d938e827b75726f6e6c665b5044382b1f1206000000000000000000000005121f2b3744505b65727f8c98a3aea79a8d8074675c5145382c1f131f2b3844505b6673808c99a4aea3988c7f72655b5044372b1f14080000000000000000000000000b1724313e4a5764717d8a97a4a5988b7e7265584b3f3225180c000004111e2b3744515e6a7784919daaa89b8e8275685b4f4235281c0f020e1a2734414d5a6774808d9aa7ab9e9185786b5e5245382b1f12050b1724313e4a5764717d8a97a4aea194887b6e6155483b2e22150800000000000000000000000000000000000000000000000000000005121f2b3744505b6576828f9c918478695e52463a2d202c3845515c667683909d918477685d5245392c2013070000000000000000000000000004101c2834404b55606d78828f949ea1a8a9aaaba39f9f9f94877b6e6154483b2e2115080006121f2c3844515c666f7c879293939393978d80746a60544a3f33291f11080000000000000000000008141e28333f4a54606a74808d979393939392877c6f665c5044382c1f12060000000b1724313e4a5764717d8a99a4ab9e9285796c605346392d20232e3c4955626f7c8897a29e9184919ea298897c6f6256493c2e23202d3946525e687784909daaa49a8b7e7164544a3f33281c0f030000000000040d18232e39424d57626d75828f97a1a99e938a7d70675d51473d333f4a545f6a73808c95a0aa9f958c80736b60554c41352921170b02000000000000000000000000000000000000000000000000000000000000030d1925303b44505b666f7c87929f9e9184796d60574d42372b20160c02000000000000000b1825323e4b5865717e8b98a4a69a8d8073675a5a6773808d9aa6a4988b7e7165584b3e3225180b000000000000000000000000000000000000040d17202c3945515d67778490939393938c807366594d4033261a0d000000000000000000000000000000000000000000000000000000030e1a26313b44505c666d7a8390959da5a7a099938e898683828181818385888c92979da5a7a09892867d70695e52483e3323190f000000000000111e2b3844515e6b7784919eaaafa396897c706356493d3023160a00000000000000000000000000000000000000000000000b1824313e4b5764717e8a97a4b1aa9d9083776a5d5044372a1d110000000000000000000000000000000000000000000007121d27313945525d687885929fabada093867a6d6053473e32281e13080000000000000000000000000000000000000000000000010d19242f3946525e68727f8c949ea8a8a19691867f79736e6968666f7b8895a093867a6d6568696e737980879298a2aea3999083786c6053463a2f24190d01000000000000000000000006121f2b3844505c66727f8b959fa89f958e81786e69656261605b544a3f33281c0f0300000000000000000000000613202d394653606c7884919daaab9f95887c6f62554b4034281c101c28333f4a54616e7b87939facaa9e9184786c6053463b3025190e0000000000000000000000000a1724313d4a5764707d8a97a3a4988b7e7165584b3e3225180b000004111e2b3744515e6a7784919daaa89b8e8275685b4f4235281c0f020e1a2734414d5a6774808d9aa7ab9e9185786b5e5245382b1f12050b1724313e4a5764717d8a97a4aea194887b6e6155483b2e221508000000000000000000000000000000000000000000000000000000030f1b27333f49536673808c9396877b6e6154483b2e212834404b546774808d9393867a6d6054473a2d21140700000000000000000000000000000c18232e3944505c666d7a828c91969a9c9e9f9f9f9f9e94877b6e6154483b2e211508000713202d3a4653606d798386868686868686857a6d60584e42382e21170d0000000000000000000000020b17222d38424e58606d7a858686868686868683796d6053463a2d201307000006121f2b37434e586774818e9aaba89b8f8275655b5044372b1f202d394653606c7985929fa1969196a19f9285796d6053463a2d201e2a36414c566774818d9aacac9b8e8175665b5044382b1f120600000000010c161f2834404a545f69727e8b949ea9a1978e81756b61554b41352d38424e58606d79839199a4a79f92877d6f675d51453e33291d140a0000000000000000000000000000000000000000000000000000000000000008141f28333f4a545f6a73808d96a0968c8073695f53473e32281e1308000000000000000b1825323e4b5865717e8b98a4a69a8d8073675a5a6773808d9aa6a4988b7e7165584b3e3225180b0000000000000000000000000000000000000005111d2935404b556976828686868686868174675b4e4134281b0e0100000000000000000000000000000000000000000000000000000009141f28343f4a545e686d7a838e929d9fa7a49f9b9892908e8e8d8e8f9197999ea1a9a29e9590867d706b60574d42362c221108000000000000121f2b3845525e6b7885919eabafa296897c6f6356493c3023160900000000000000000000000000000000000000000000000a1724313d4a5764707d8a97a3b0aa9e9184776b5e5144382b1e11000000000000000000000000000000000000000000030c18242f39434f59606d7a86929facaea194877b6e615a50443a3024190d030000000000000000000000000000000000000000000004111d2935414c55616d7a86929fa6aba19691847c726d66615f57626f7b8895a093867a6d60575f61676d737d86929fa5ab9f958a7d7064554c4135291d110400000000000000000000000713202d3a4653606d7884919ea7a89d9083786d665f57555453504a42382d22170b000000000000000000000005111e2a36414c5663707d8996a0acaa9d9083766a5f5343392e23180c17222d3846535e6976828f9ca9aca096897d7063564d41362a1c110600000000000000000000000a1724303d4a5763707d8a96a3a4978b7e7164584b3e3125180b000004111e2b3744515e6a7784919daaa89b8e8275685b4f4235281c0f020e1a2734414d5a6774808d9aa7ab9e9185786b5e5245382b1f12050b1724313e4a5764717d8a97a4aea194887b6e6155483b2e221508000000000000000000000000000000000000000000000000000000000b17222d3d4a5763707d868686867d7164574a3e3124232e3e4b5764717e868686867d7063564a3d3023170a000000000000000000000000000007121d28343f4a545e686d787f848a8d9091929292929190877b6e6154483b2e2115080006121f2c3844515c666d7779797979797979786d685d52463d30261c0f0500000000000000000000000006111c262f3c45525d686d7879797979797979776d665c5044382c1f120600000814212e3a47535f6a7884919eaba9988b7f726553493f33271b1f2b3844505b6675828f9ba8a19ea1a89c8f8275665c5044382b1f1925303e4a5764717d8a9aa4ab9e9285796c605346392d2013080000000008131e28313a44515c666e7b86929fa6a69e92857a6d61594f433a2f262f3c45515c666f7c87939fa8a39991847a6d605a50453b2f261c1106000000000000000000000000000000000000000000000000000000000000020b17222d38424e58606d7984919e9f92867b6e625a50443a3024190c030000000000000b1825323e4b5865717e8b98a4a69a8d8073675a5a6773808d9aa6a4988b7e7165584b3e3225180b00000000000000000000000000000000000000010d18242f3a4e5a667076797979797979746f64584c4033271a0d01000000000000000000000000000000000000000000000000000000030b17232e38424c565e686d79818990959b9fa2aaa39f9d9b9a9a9b9c9ea1a9a49f9c97928c837b706b60594f453b30241a1000000000000000121f2b3845525e6b7884919eabafa296897c6f6356493c3023160900000000000000000000000000000000000000000000000b1724313e4a5764717d8a97a4b0aa9d9184776a5e5144372b1e110000000000000000000000000000000000000000000a151e2935404b55606b74818e98a3aeb5a89c8f82756c61564c4135291f150b010000000000000000000000000000000000000000000613202c3945515d6773808d98a2aea49991847b6e6a605c545355626f7b8895a093867a6d605353555d606b707d8a939ea9a79c8f8276675d5145392c20130600000000000000000000000a1623303d495663707c8996a1aca096897d70665c544d494746443f382f261c110600000000000000000000000714202d3946525e6875828e9ba8aea2988b7e7165584e4330271d1207111c2a36424d5764717e8a97a1ada89b8f8275685e5246382e23170b00000000000000000000000a1723303d4a5663707d8996a3a4978a7d7164574a3e3124170b000004111e2b3744515e6a7784919daaa89b8e8275685b4f4235281c0f020e1a2734414d5a6774808d9aa7ab9e9185786b5e5245382b1f12050b1724313e4a5764717d8a97a4aea194887b6e6155483b2e221508000000000000000000000000000000000000000000000000000000000616232f3c4855616b7079797979716c6155493c302323303d4955616c7179797979706b6055483c2f2316090000000000000000000000000000000c17232e38424c565e666c72797d808384858686858483817a6d6054473a2d2114070004101c2834404a545c606a6c6c6c6c6c6c6c6b605d564c41342b1e150a00000000000000000000000000000a141d2935414c565d606b6c6c6c6c6c6c6c6a605c544a3f34281c100300000815222f3b4855626e7b8896a1ada297887c6f6255493c2d22171c28333f4a5465727f8b98a9acabaca9988c7f7265544a3f34281c14212e3a4754616d7a86939faca197897c6f6256493c3024190d010000010d19242f3a434f59606d78839098a2a99e948a7e71685e52473e31281d2834404b54606b74808d96a1aba0968e81746c61574d42382d22170b0000000000000000000000000000000000000000000000000000000000000006111c262f3c45515d67707d8a939e988f82766c61564c4135291e150a0000000000000b1825323e4b5865717e8b98a4a69a8d8073675a5a6773808d9aa6a4988b7e7165584b3e3225180b000000000000000000000000000000000000000007131d323e49545e66696c6c6c6c6c6c67645c53483c3024180b000000000000000000000000000000000000000000000000000000000006111c26303a444c565e676d747c83898e9298999b9d9e9f9f9f9f9e9d9b999993908b857f786e6960594f473d33291f120800000000000000111e2b3844515e6b7784919eaab0a396897d7063564a3d3023170a00000000000000000000000000000000000000000000000b1825313e4b5864717e8b97a4b1a99d9083766a5d5043372a1d10000000000000000000000000000000000000000006111c26303845515d67707d89939daab4b9aa9e948a7e71685d52463d31271d12070000000000000000000000000000000000000000000714212d3a4754606d7a85929faaab9f93877d6f695f58514b4855626f7b8895a093867a6d6053474b5159616b74818e9ba8ac9f92867a6d6054473a2d21140700000000000000000000000d192633404c5966737f8c99a8aa9d9184776b60544a423c3b3938332d261d140a0000000000000000000000030f1c28333f4a54616e7a86929facac9f92857a6d6053473c3120150b000e1a25313b4653606d7985929eabac9f92867b6e61544a3f34281c100300000000000000000000091623303c4956636f7c8996a2a3978a7d7064574a3d3124170a000004111e2b3744515e6a7784919daaa89b8e8275685b4f4235281c0f020e1a2734414d5a6774808d9aa7ab9e9185786b5e5245382b1f12050b1724313e4a5764717d8a97a4aea194887b6e6155483b2e221508000000000000000000000000000000000000000000000000000000000714202c38444f5961636c6c6c6c64615a5044392d21212d3945505a61646c6c6c6c6360594f44382c20140700000000000000000000000000000006111c26303a444c545b60666d70737677787979787876746d685d5245392c20130700000c18232e39424a51535d606060606060605e54524c433a2f22190c030000000000000000000000000000020b19242f3a434c52545e606060606060605d53504a42382e23170c000004101c2834404b5565727f8b98a89f9f9285796c605346392d201317222d3b4855626e7b8897a19f9f9fa297887c6f6255493c2e231713202d3946525e687784909d9fa9998c7f7366564c4135291d1105000004111d2935414c55606b73808d959f9fa2978f82756c61564c41352c1f18232e39424f59606d7984919ea5a89e938a7e71695e544a3f33281c0f03000000000000000000000000000000000000000000000000000000000000000a141d2935404b55616c75828f989f948a7e71685d52453d30261c110600000000000b1825323e4b5865717e8b98a4a69a8d8073675a5a6773808d9aa6a4988b7e7165584b3e3225180b00000000000000000000000000000000000000000115212d38424c545a5c6060606060605b58534a41362b2014080000000000000000000000000000000000000000000000000000000000000a141e28323a444c555c606b6f777d8185898c8e90919292929291908f8d8a86837e79726d665f574f473d352b20170d0000000000000000111e2a3744515d6a7784909daab0a3978a7d7064574a3d3124170a00000000000000000000000000000000000000000000000c1825323f4b5865727e8b98a5b1a99c8f8276695c504336291d1000000000000000000000000000000000000000020b17232e38424e58606d7984919ea5afafacafa69e92857a6d61594f43392f24180c0300000000000000000000000000000000000000030f1b27333f495364717e8a98a2aca3998d80746b60574e45404855626f7b8895a093867a6d60534740454f59626f7c8896a0aca3998a7d7063574a3d3024170a00000000000000000000020f1b2835424e5b6875818e9ba8a79a8e817467594f4239302e2d2b28221c140b02000000000000000000000006121f2b3844505b66737f8c99a3aea79a8e8174675d5145392c2013030009141f2c3845515c6674808d9aa7afa3998c7f73665c5044382b1f1409000000000000000000000916232f3c4956626f7c8995a2a3968a7d7063574a3d3024170a000004111e2b3744515e6a7784919daaa89b8e8275685b4f4235281c0f020e1a2734414d5a6774808d9aa7ab9e9185786b5e5245382b1f12050b1724313e4a5764717d8a97a4aea194887b6e6155483b2e2215080000000000000000000000000000000000000000000000000000000004101c28333e474f555760606060575550483e33281c1d28333e485055576060606056554f473d33271c1004000000000000000000000000000000000a151e29323a424a50545c606467696b6c6c6c6c6b6967605d564c4135291d1104000007121c2730394044465153535353535353524745413a31281e10070000000000000000000000000000000008131e28313a41454752535353535353535146443f3830261c1106000006131f2c3845515c6775828f939393938f8275665b5044382b1f1214212e3a47535f6a78859193939393939285796d6053463a2d2013111d2935414c566774808d93939393908376685d5246392d20130700000613202c3945515d676f7d87939393939392857b6e615a50443a30231a121d27303d45515d67707d8a939393939392857b6e665b5044382b1f120600000000000000000000000000000000000000000000000000000000000000020b18242f3a43505a616e7b86929f9e92857a6d60594f42382e23170c03000000000b1825323e4b5865717e8b98a4a69a8d8073675a5a6773808d9aa6a4988b7e7165584b3e3225180b00000000000000000000000000000000000000000a15202a343c4347495353535353535353534f4940372c21160a000000000000000000000000000000000000000000000000000000000000020c162029323a434b515960636b7075797c7f82838485868685858382807d7a76726d67605c544d453d352b23190e050000000000000000101d2a3643505d697683909ca9b1a5988b7e7265584b3f3225180700000000000000000000000000000000000000000000000d1a2633404d596673808c99a6b3a89b8f8275685c4f4235291c0f000000000000000000000000000000000000000a141d28343f4a54606a73808d96a0acaca49fa4aca1978e81746b60554b4035291e150a0000000000000000000000000000000000000005121f2b3744505b6574818e9b9ea09f92867b6e61594f453c3c4855626f7b8895a093867a6d6053473a3e47535f6a7784919eaaab988c7f7265594c3f3226190c00000000000000000000030f1c2936424f5c6975828f9ca8a4988b7e7165584b3e302721201f1c17110a020000000000000000000000000613202d394653606c7884919eabaca095897c6f62554b4035291d11040004101c2834404b54626f7c88959fabab9e9184786d6053463b31251a0e000000000000000000000916222f3c4955626f7c8895a2a396897d7063564a3d3023170a000004111e2b3744515e6a7784919daaa89b8e8275685b4f4235281c0f020e1a2734414d5a6774808d9aa7ab9e9185786b5e5245382b1f12050b1724313e4a5764717d8a97a4aea194887b6e6155483b2e22150800000000000000000000000000000000000000000000000000000000000b16212c353e44484a535353534a49443e362c221717222c363e45494b535353534a48443d352c21160b0000000000000000000000000000000000030c1720292f383f444a5053575a5d5e5f5f5f5f5e5d5b54524c443a2f24190d010000000b151e272e34383a4446464646464646453a39352f281f160c0000000000000000000000000000000000010c161f282f35393a4546464646464646443a38342e261e150a0000000713202d3a4653606d79868686868686867f7266544a3f33281c0f121f2b37434e58687581868686868686868275665c5044382b1f120d1925303d4a5764707e868686868686877a6d6154473a2e21140700000714212d3a4754606d7a84868686868686867f71695e52483e32281e110b151e2935414b55616b75818686868686868682796c605346392d201306000000000000000000000000000000000000000000000000000000000000000007131d28313e46525e69727f8c95a0978e81746b60544a3f34281f1409000000000b1825323e4b5865717e8b98a4a69a8d8073675a5a6773808d9aa6a4988b7e7165584b3e3225180b00000000000000000000000000000000000000030f1b26323c464e535560606060606060605f5a52493e33271b0f02000000000000000000000000000000000000000000000000000000000000050e172029313940454f54596063676d70727576787879797878777573706d6865605d55504a423c332b231911070000000000000000000f1c2835424f5b6875818e9ba8b3a6998c807366594d402f23180c00000000000000000000000000000000000000000000010e1b2834414e5b6774818e9aa7b4a79a8e8174675b4e4134281b0e00000000000000000000000000000000000006111b262f3844505c666f7c87929fa8a69f9a939aa4a99d93897d70675d51453c30261c11060000000000000000000000000000000000000613202d394653606c78858b8e9196968f8275695e53473d333c4855626f7b8895a093867a6d6053473a37434e586976828f9ca9a69a8d8073675a4d4034271a0d0000000000000000000003101d293643505c6976838f9ca9a3978a7d7064574a3d31241513120f0b060000000000000000000000000005121e2a36424d5763707d8a96a1acaa9d9083776a6054433a2f24180d0100000c18232e3947535f6a7683909daaada1968a7d7063574d42362a1c12070000000000000000000915222f3c4855626f7b8895a2a396897c706356493d3023160a000004111e2b3744515e6a7784919daaa89b8e8275685b4f4235281c0f020e1a2734414d5a6774808d9aa7ab9e9185786b5e5245382b1f12050b1724313e4a5764717d8a97a4aea194887b6e6155483b2e221508000000000000000000000000000000000000000000000000000000000005101a232c33383c3d464646463e3c39332c241a10101a242c33393d3e464646463d3c38332c231a0f05000000000000000000000000000000000000050e171d262d33383f44464a4d50515253535251504e4745413a32281e130800000000030c151c23282c2d3739393939393939382d2c29241e160d04000000000000000000000000000000000000040d161e24292c2d3839393939393939372d2c28231c150c0300000006131f2c3845515c676d79797979797979726d635742382d22170b0f1a26313c4d59656f7579797979797979757065544a3f34281c10081623303c4955616c707979797979797975685d5246392d20130700000613202c3945515d676d7879797979797979716d62574d42362c20160c030c18242f3a434f59656f7579797979797979766c665b5044382b1f12060000000000000000000000000000000000000000000000000000000000000000010c161f2a36424d57606d788390999f93887c6f665c50443b31251a0d040000000b1825323e4b5865717e8b98a4a69a8d8073675a5a6773808d9aa6a4988b7e7165584b3e3225180b0000000000000000000000000000000000000006131f2b37434e585f626c6c6c6c6c6c6c6c6c645a4f43372b1e120500000000000000000000000000000000000000000000000000000000000000050e171f272f343d43484f54555c606366686a6b6c6c6c6c6b6a686664615e5653514b4c4841382f21191108000000000000000000000d1a2734404d5a6773808d9aa6b3a89b8e817568554b4034291c100400000000000000000000000000000000000000000005121e2a36424d576976838f9ca9b2a5988c7f7265594c3f3226190c0000000000000000000000000000000000000b17222d38414d57606d78839099a3ab9f948f87939fa8a59e9184796d60584e42382e23170c0300000000000000000000000000000000000613202d394653606c777c7e8184878a8b7e7165574d42352f3c4855626f7b8895a093867a6d6053473a32414e5b6874818e9ba7a79a8d8174675a4e4134271b0e0000000000000000000003101d293643505c6976838f9ca9a396897c706356493d3023160a06030000000000000000000000000000000714202d3a46525e6975828f9ca8aea3988b7f7265584e4331281d130700000007121d2b37434e5865717e8b98a2aea89c8f8275695e5346392e23180c0000000000000000000815222f3b4855626e7b8895a1a295897c6f6256493c2f231609000004111e2b3744515e6a7784919daaa89b8e8275685b4f4235281c0f020e1a2734414d5a6774808d9aa7ab9e9185786b5e5245382b1f12050b1724313e4a5764717d8a97a4aea194887b6e6155483b2e22150800000000000000000000000000000000000000000000000000000000000008111a21282c2f303939393931302d28221a120808121a22282d303139393939302f2c27211a11080000000000000000000000000000000000000000050b141c22282e34383a3d404344454646454543413a39352f2820160c010000000000030b12181c1f202a2d2d2d2d2d2d2d2b21201d19130c040000000000000000000000000000000000000000040c13191d20212b2d2d2d2d2d2d2d2a201f1c17110a030000000004101c2834404b555c606c6c6c6c6c6c6c66635b51462f261c11060a1520313d48535d65686c6c6c6c6c6c6c69655d5442382e23170b0814202d3944505a61646c6c6c6c6c6c6c6b5d564c4135291d1105000004111d2935414c555d606b6c6c6c6c6c6c6c65625a50453b30241a0e040007131d28313e47535d65686c6c6c6c6c6c6c69605b544a3f33281c0f03000000000000000000000000000000000000000000000000000000000000000000040d1a25303b44505c666f7c87939f9a9083786d60574d42362a1f160c0100000b1825323e4b5865717e8b98a4a69a8d8073675a5a6773808d9aa6a4988b7e7165584b3e3225180b000000000000000000000000000000000000000815212e3b47535f6a767979797979797979766c5f5346392d2013060000000000000000000000000000000000000000000000000000000000000000050d1925303b444c525f6060606060605d5d5e5f5f5f5f5e5d5c5a6060606060605a58534a41362b201408000000000000000000000c1925323f4c5865727f8b98abb5aa9d908477675c5145382c1f13060000000000000000000000000000000000000000000714212d3a46535f697885929fabb4aa968a7d7063574a3d3024170a0000000000000000000000000000000000040f1b27333f49535f69727f8c95a0aba3998f82808c96a0aca0968d80736a5f544a3f34281f1409000000000000000000000000000000000005121f2b3744505b656c6f7274777a7d807a6e6154473b312f3c4855626f7b8895a093867a6d6053473a35414b556875828e9ba8a69a8d8073675a4d4034271a0d0000000000000000000003101d293643505c6976838f9ca9a296897c6f6356493c302316090000000000000000000000000000000003101c28343f4a54616e7b87929facac9f92867a6d6154473d3221160c01000000000f1b26313c4754606d7a85929facac9f93877b6e61544a4034281c100400000000000000000815212e3b4854616e7b87949f9f95887c6f6255493c2f221609000004111e2b3744515e6a7784919daaa89b8e8275685b4f4235281c0f020e1a2734414d5a6774808d9aa7ab9e9185786b5e5245382b1f12050b1724313e4a5764717d8a97a4aea194887b6e6155483b2e221508000000000000000000000000000000000000000000000000000000000000000810161c2023242d2d2d2d2423211c17100800000810171d2123242d2d2d2d2323201c160f0800000000000000000000000000000000000000000000020a11171c23282c2d31343638393939393836342d2c29241e160d040000000000000000070c1012131e202020202020201f1413110d08010000000000000000000000000000000000000000000001080d1113141f202020202020201e1312100c06000000000000000c18232e39434b51535f606060606060595751493f351d140a000314202c37414b53595b606060606060605c5a544b4230261c110604101c28333e485055576060606060606054524c443a3024190d010000010d19242f3a434c51545e60606060606060585650483f33291f12080000010c161f2c35414b53595b606060606060605c53504a42382d22170b000000000000000000000000000000000000000000000000000000000000000000000009141f28343f4a54606a74808d97a0958c7f72695e53463e31281d130700000b1825323e4b5865717e8b98a4a69a8d8073675a5a6773808d9aa6a4988b7e7165584b3e3225180b000000000000000000000000000000000000000916222f3c4955626f7c8686868686868686796c605346392d201306000000000000000000000000000000000000000000000000000000000000000005111e2a36414c565e6c6c6c6c6c6c6c6a675f555353524f5960636c6c6c6c6c6c67645c53483c3024180b00000000000000000000091623303c4956636f7c8999a4afac9f9286796d6053473a2d22170b0000000000000000000000000000000000000000000815222e3b4855616e7b8897a2adaea298887b6e6155483b2e22150800000000000000000000000000000000040e1a242b3744505b656e7b86929fa7a89f92867c7984919ea5a89f92877c6f665c50443c31261a0e0500000000000000000000000000000000030f1b27333f49535b60626568686d70736e685e524639292f3c4855626f7b8895a093867a6d6053473a3a45515d677683909da9a5998c7f7266594c3f3326190c0000000000000000000003101d293643505c6976838f9ca9a296897c6f6356493c302316090000000000000000000000000000000006121f2c3844505c6673808c99a3afa89b8e8175685e5246392d20130400000000000a15202c3945515d6774818e9ba7afa4998d8073665c5144382c1f150900000000000000000814212e3b4754616e7a8793939393887b6f6255483c2f221509000004111e2b3744515e6a7784919daaa89b8e8275685b4f4235281c0f020e1a2734414d5a6774808d9aa7ab9e9185786b5e5245382b1f12050b1724313e4a5764717d8a97a4aea194887b6e6155483b2e2215080000000000000000000000000000000000000000000000000000000000000000050b1014161720202020171614100b0500000000060c1114171820202020171614100b0500000000000000000000000000000000000000000000000000060b11171c1f2024272a2b2c2c2c2c2b2a2821201d19130c0400000000000000000000000406071113131313131313120706040100000000000000000000000000000000000000000000000000000104060712131313131313131107060300000000000000000007121d273039404546525353535353534c4a463f372d230b0200040f1a252f3941484d4e535353535353534f4d494239301e140a00000b17222c363e44494a535353535353534746413a32281e13080000000008131e28313a41454751535353535353534b4a453f362d20170d00000000040d1a232f3941484d4e535353535353535046443f382f261c11060000000000000000000000000000000000000000000000000000000000000000000000030b17232e38424e58606d7a84919e9f92867b6e615a50433a2f24180d01000b1825323e4b5865717e8b98a4a69a8d8073675a5a6773808d9aa6a4988b7e7165584b3e3225180b000000000000000000000000000000000000000916222f3c4955626f7c8893939393939386796c605346392d20130600000000000000000000000000000000000000000000000000000000000000000714202d3946525e68767979797979797771675b4f464854606b70797979797979746e64584c4033271a0d010000000000000000000714202d3a4753606d7a86939facaea399897d706353493f33271b0f030000000000000000000000000000000000000004111d2935414c5565717e8b98a9b3ac9f9285786d6053463a2d201307000000000000000000000000000000020c16202a36424d56606c77828f98a3aca0968c8073707d8a939eaaa3999083786d60574d42372b20170d02000000000000000000000000000000000b17222d38414950535558565d616366615e564c41362a2f3c4855626f7b8895a093867a6d6053473e444d57606d7a86929faca9988b7e7165584b3e3225180b0000000000000000000003101d293643505c6976838f9ca9a296897c6f6356493c30231609000000000000000000000000000000000713202d3a4653606d7984919eabaca096897d7063564c4135291d1105000000000004111d2935414b55636f7c8995a0acab9e9185796d6053463c31261a0e00000000000000000714212e3a4754616d7a8686868686867b6e6255483b2f221508000004111e2b3744515e6a7784919daaa89b8e8275685b4f4235281c0f020e1a2734414d5a6774808d9aa7ab9e9185786b5e5245382b1f12050b1724313e4a5764717d8a97a4aea194887b6e6155483b2e221508000000000000000000000000000000000000000000000000000000000000000000000407090a131313130b0a0804000000000000000005080a0b131313130a0907040000000000000000000000000000000000000000000000000000000000060c101213171a1d1e1f20201f1e1d1b1413110d080100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b151e272e34383a464646464646463f3e3a352d251c1100000009131d272f373d40424646464646464642413d3730271e0c02000005101a242c33393c3d464646464646463a3935302820160c0200000000010c161f282f35393a45464646464646463e3d3a342d241b0e05000000000008111d272f373d404246464646464646433938332d261d140a0000000000000000000000000000000000000000000000000000000000000000000000000006111c26303d45515d67717e8a949e988f82756c61554b4035291d1104000b1825323e4b5865717e8b98a4a69a8d8073675a5a6773808d9aa6a4988b7e7165584b3e3225180b000000000000000000000000000000000000000916222f3c4955626f7c88959f9f9f9f9386796c605346392d20130600000000000000000000000000000000000000000000000000000000000000000814212e3b4754616e7a86868686868683776a5d5144495663707d8686868686868074675a4e4134271b0e010000000000000000000613202c3945515d677784909daab4ab9a8d8073655b5044372b1f140a000000000000000000000000000000000000010c13202c3945515d6775828e9ba8b5a89c8f8275665c5044382b1f120600000000000000000000000000000008131e28323a46525e69717e8b949faaa59e9184796d6b75818e98a2aba0958c7f72695f53463f32291e14080000000000000000000000000000000006111b262f383f4446494b4c5254575954524c443b30252f3c4855626f7b8895a093867a6d605347464f565f69727f8b98a3ada197887c6f6255493c2f2216090000000000000000000003101d293643505c6976838f9ca9a296897c6f6356493c3023160900000000000000000000000000000005121e2b37424d5764717d8a97a1adab9e9184786c6053463a3025190d010000000000010d18242f3a4854606b7784919dabada1978a7d7164574d42372b1d1207000000000000000713202d3946525e687679797979797976695f53473a2e211408000004111e2b3744515e6a7784919daaa89b8e8275685b4f4235281c0f020e1a2734414d5a6774808d9aa7ab9e9185786b5e5245382b1f12050b1724313e4a5764717d8a97a4aea194887b6e6155483b2e221508000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000306070a0d10111213131212100e0707040100000000000000000000000000000000000000000000000001040707131313131313130d0c0a0702000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c151d23282c2d3939393939393933312e2a231c130a000000020b151d252c313435393939393939393634312c261e150c0000000008111a22282d3031393939393939392e2d29241e160e04000000000000040d161e24292c2d383939393939393932312e29221b1209000000000000000b151d252c31343539393939393939362d2b28221c140b0200000000000000000000000000000000000000000000000000000000000000000000000000000a141e2935414c55616c75828f9893948a7d70675d5145392c201306000b1825323e4b5865717e8b98a4a69a8d8073675a5a6773808d9aa6a4988b7e7165584b3e3225180b000000000000000000000000000000000000000916222f3c4955626f7c8895a2acac9f9386796c605346392d20130600000000000000000000000000000000000000000000000000000000000000000814212e3b4754616e7a87939393939084776a5d5144495663707c89939393938d8174675a4e4134271b0e0100000000000000000004101d2935404b556773808d9aa9b3ab9e9184786c6053463c2f261b1106000000000000000000000000000000000007131d28333f4a54606d7a86929facb1a7988b7f7265544a3f34281c10030000000000000000000000000000030d1924303a44505a616e7b85929fa6a99e93897d7067616e7b86929fa7a79f92867b6e615a50443b3025190d04000000000000000000000000000000000a141d262d3337393c3f4146474a4d4746413b3229222f3c4855626f7b8895a093867a6d605350535961686e7b85929eaaac9e9285786c605346392d2013060000000000000000000003101d293643505c6976838f9ca9a296897c6f6356493c302316090000000000000000000000000000000714212d3a46535f6976828f9ca9afa3998c7f73655b504437281e13080000000000000007131d2c38434f5965727f8c99a3aea99c8f8276695f5347392e23180c0000000000000005111d2a36414c565e6c6c6c6c6c6c6c6c5f574d42372b1e1206000004111e2b3744515e6a7784919daaa89b8e8275685b4f4235281c0f020e1a2734414d5a6774808d9aa7ab9e9185786b5e5245382b1f12050b1724313e4a5764717d8a97a4aea194887b6e6155483b2e221508000000000002080d10121313131313131313070704010000000000000000000000000000000000000000000000000002070b0d0d13131313131313130f0e0c090400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001080d111314202020202020201a1916130d07000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b12181c1f202c2d2d2d2d2d2d2625221e18110a0100000000030b131a202527282d2d2d2d2d2d2d292825211b140c0300000000000810171c2023242d2d2d2d2d2d2d21201d19130c040000000000000000040c13191d20212b2d2d2d2d2d2d2d2524211d1811090000000000000000030b131a202527282d2d2d2d2d2d2d29201f1c17110a02000000000000000000000000000000000000000000000000000000000000000000000000000000020c19242f3a43505a616e7b8686868686847a6d6053473a2d201407000b1825323e4b5865717e8b98a4a69a8d8073675a5a6773808d9aa6a4988b7e7165584b3e3225180b000000000000000000000000000000000000000916222f3c4955626f7c8895a2acac9f9386796c605346392d20130600000000000000000000000000000000000000000000000000000000000000000814212e3b4754616e7a87949f9f9d9084776a5d5144495663707c89969f9f9a8d8174675a4e4134271b0e01000000000000000000010d18242f3d495663707c8997a1adaca196897d7063584e41382d22170f06000000000000000000000000000000071118242f3844505b66717e8b98a2aeaca095887b6e6155483b2e23170b0000000000000000000000000000010b151f2935414c56616c75828f97a2ada2978e81756b605e69727f8c95a0aca2988f82766c62564c41362a1f160c01000000000000000000000000000000020b141b22272b2d2f3035393a3d403b3936302920232f3c4855626f7b8895a093867a6d60545c60636b707a839197a1ada49a8e8175655b5044372b1f12050000000000000000000003101d293643505c6976838f9ca9a296897c6f6356493c30231609000000000000000000000000000004101c2834404b55616e7b87939facac9f92867b6e6153493f3327160c0200000000000000010f1b27323d4754616d7a86929facac9f93877b6e61554b4034281c1004000000000000010d1925303a444c525f60606060606055534d453c31261a0e02000004111e2b3744515e6a7784919daaa89b8e8275685b4f4235281c0f020e1a2734414d5a6774808d9aa7ab9e9185786b5e5245382b1f12050b1724313e4a5764717d8a97a4aea194887b6e6155483b2e22150800000000060d14191c1f1f202020202020201413110d080100000000000000000000000000000000000000000001080e1317191a20202020202020201c1b191510090200000000000000000000000000000000000000000000000000010507070b0e101212131312110f0d0a07060400000000000000000000000000000000000000000000000000040c13191d202d2d2d2d2d2d2d2d2625231e19120a01000000000000000000000000000000000000000000000000000000000000000000000000000000000000070c1013131f202020202020191816120d070000000000000002090f14181b1b202020202020201c1b191510090200000000000000050b10141617202020202020201413110d08020000000000000000000001080d1113141e20202020202020181715110c060000000000000000000002090f14181b1b202020202020201d13120f0b0600000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e28313e46535f696e7979797979786d675d5145392c201306000b1825323e4b5865717e8b989f9f9a8d8073675a5a6773808d9a9f9f988b7e7165584b3e3225180b000000000000000000000000000000000000000916222f3c4955626f7c88959f9f9f9f9386796c605346392d20130600000000000000000000000000000000000000000000000000000000000000000814212e3b4754616e7a8794a1aa9d9084776a5d5144495663707c8996a3a79a8d8174675a4e4134271b0e01000000000000000000000713202d3a4653606d7985929eacb2a89c8f82756a5f53493f332721180f0802000000000000000000000003091119232935404b55606c7884919daab3a99d908477695f53463a2d1c1106000000000000000000000000000007121d27313945525d68717e8a939ea9a69f92857a6d615957606d7883909aa4aa9f948b7e71685e52463e31281e130800000000000000000000000000000000020a11171b1f202224292d2e30332e2d2a25292c2e343c4855626f7b8895a093867a6d6063666d70767d859195a0a9a89f93877c6f6253493f33271b0f030000000000000000000003101d293643505c6976838f9ca9a296897c6f6356493c30231609000000000000000000000000000006131f2c3845515c6773808d9aa4afa99c8f8275695e5241382d2217040000000000000000000a16202d3946525e6875828e9ba8afa49a8d8073675c5145382c1f150a0000000000000008131e28323a4146535353535353534847423c332b23190f04000004111e2b3744515e6a7784919daaa89b8e8275685b4f4235281c0f020e1a2734414d5a6774808d9aa7ab9e9185786b5e5245382b1f12050b1724313e4a5764717d8a97a4aea194887b6e6155483b2e2215080000000810181f25292b2c2d2d2d2d2d2d2d2d201d19130c0400000000000000000000000000000000000000020a12191f2326272d2d2d2d2d2d2d2d292825211b140c030000000000000000000000000000000000000000000003080d111314181b1d1e1f20201f1e1c1a171413100c0701000000000000000000000000000000000000000000040d161e24292c393939393939393933322f2a241c130a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040607131313131313130c0c0906010000000000000000000004080c0e0f131313131313130f0f0c0904000000000000000000000004080a0a131313131313130707050100000000000000000000000000000104060712131313131313130b0b0905010000000000000000000000000004080c0e0f13131313131313100606030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c161f2a36424d575f616c6c6c6c6c6b605d554b4035291d1104000b1825323e4b5865717e8b939393938d8073675a5a6773808d939393938b7e7165584b3e3225180b000000000000000000000000000000000000000916222f3c4955626f7c8893939393939386796c605346392d20130600000000000000000000000000000000000000000000000000000000000000000814212e3b4754616e7a8794a1a99d9084776a5d5144495663707c8996a3a79a8d8174675a4e4134271b0e010000000000000000000006121f2c3844505c6673808d9aa4afaa9e94887c6f655b50443d332a2219140e09060400000100000406090e141a232b353d45515d67717e8a95a0acada2978b7e7265574d42362a1e0a0000000000000000000000000000030c18242f39434f59606d7a85919ea5ab9f948b7e71685e52505c666f7c87939fa9a69f92857a6e61594f433a2f24190c030000000000000000000000000000000000060b0f121316191d2021242621272c2f35393a3f444855626f7b8895a093867a6d6d7074797d828a9297a0a7aaa1968e81756a5f5341382d22170b000000000000000000000003101d293643505c6976838f9ca9a296897c6f6356493c3023160900000000000000000000000000000713202d3a4653606d7985929eacada1978a7d7064564d422f261b110600000000000000000005111d2a36414c5663707d8a96a1adac9e9285796d6053463c31261b0f01000000000007131e29333d454c5052535353535353534948443d352b21160b000004111e2b3744515e6a7784919daaa89b8e8275685b4f4235281c0f020e1a2734414d5a6774808d9aa7ab9e9185786b5e5245382b1f12050b1724313e4a5764717d8a97a4aea194887b6e6155483b2e221508000006101a222a3035383939393939393939392c29241e160d040000000000000000000000000000000000000a141c242b2f333439393939393939393534312c261e150c0200000000000000000000000000000000000000060b0f13191d20212427292b2c2c2c2c2b292724201f1d18120f0a04000000000000000000000000000000000000010c1620282f35394646464646464646403f3b352e251c1207000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d1a26313b454d53555f606060605e53514b433a2f24180d01000b1825323e4b5865717e8686868686868073675a5a6773808686868686867e7165584b3e3225180b000000000000000000000000000000000000000916222f3c4955626f7c8686868686868686796c605346392d20130600000000000000000000000000000000000000000000000000000000000000000814212e3b4754616e7a87949c9c9c9084776a5d5144495663707c89969c9c9a8d8174675a4e4134271b0e010000000000000000000003101c28343f4a54616e7b87939fabb0a69c9083776c60584e453c342a251e1a1312100c070e070c1013131a1f262a353d47505a606d7984919ea7b1a99f9285796d6053473b31261a0e00000000000000000000000000000a151e2935404b55606b74818e97a1ada3999083776c60564c4a54606b74818e97a1ada2978e81756c61554c4135291e150b00000000000000000000000000000000000000030506080d11131821272c33383a4145474a505356626f7b8895a093867976797d81858a8f949ea1a9a9a29891847a6e61584e432f261b1106000000000000000000000003101d293643505c6976838f9ca9a296897c6f6356493c302316090000000000000000000000000006121f2b37434e5864717e8a97a1adac9e9184796d6053463b3020140a00000000000000000000010d1925303a4653606c7884919eacada1978a7e7164584e43372b1d120700000000000c18242f3a454f575c5e6060606060606056544f473d32271b10040004111e2b3744515e6a7784919daaa89b8e8275685b4f4235281c0f020e1a2734414d5a6774808d9aa7ab9e9185786b5e5245382b1f12050b1724313e4a5764717d8a97a4aea194887b6e6155483b2e22150800020d18222c343b414446464646464646464639352f2820160c010000000000000000000000000000000006101c262e363b3f40464646464646464642413d3730271e14090000000000000000000000000000000000020a11171b1f252a2d2e3134363839393938383633302d2c29241d1b150e09030000000000000000000000000000000008131e28323a414553535353535353534d4b4740372e24190d0200000000000000000000000000000000000000000000000000000000000000000000000000000002080d10121313131313131313131313131313131313131313131313121211100e0b090706040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000306131313131313131308070502000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141f29333b4246485253535353514745403a31281d130700000b1724313d4a56626c71797979797979736e645858646e73797979797979716c62564a3d3124170b000000000000000000000000000000000000000815212e3b47535f6a767979797979797979766c5f5346392d20130600000000000000000000000000000000000000000000000000000000000000000814212e3b4754616e7a878f8f8f8f8f84776a5d5144495663707c898f8f8f8f8d8174675a4e4134271b0e0100000000000000000000000c17232e3846535f6975828e99a3afab9f948b7f726a60574e463e36302a25201f1c181b1a1b181c1f20262b31363f474f59616c74808d96a1adada2978d8073675d5145392a1f14090000000000000000000000000006111c26303845515d67707d89939da9a89f92877c6f655b5044424f59616d7a85929ea6a99e938a7d70675d51453d30271d1207000000000000000000000000000000000000000000050d161d242932383d44484c5154545c6063666f7b8895a2998c7f8285898d91979c9fa6aca69f9792867c6f685e52463c311d140a00000000000000000000000003101d293643505c6976838f9ca9a296897c6f6356493c30231609000000000000000000000000000815212e3a47535f6a7683909ca9afa49a8d8073665c5044382c1f1202000000000000000000000008131f2b3844505b6673808c9aa4afa99c9083766a5f5347392f24180d01000000030f1b2834404c5761686b6c6c6c6c6c6c6c6360594f44382c2013070004111e2b3744515e6a7784919daaa89b8e8275685b4f4235281c0f020e1a2734414d5a6774808d9aa7ab9e9185786b5e5245382b1f12050b1724313e4a5764717d8a97a4aea194887b6e6155483b2e2215080008141f2a343e464d5152535353535353535345413a32281e1308000000000000000000000000000000020b18222e3840474c4d53535353535353534f4d49423930261b1004000000000000000000000000000000060b141b22272b3036393a3e414345454646454442403d3a38352f2b27201a140d050000000000000000000000000000010d19242f3a444c525f606060606060605957524940352a1e13070000000000000000000000000000000000000000000000000000000000000000000000000000060d14191c1f1f202020202020202020202020202020202020202020201f1e1e1c1a18161413100c070501000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060c101220202020202020201514120e0903000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d17212931363a3b4646464646453a39352f281f160c0100000915212e3a45505a62656c6c6c6c6c6c67645c52525c64676c6c6c6c6c6c65625a50453a2e2115090000000000000000000000000000000000000006131f2b37434e585f626c6c6c6c6c6c6c6c6c645a4f43372b1e120500000000000000000000000000000000000000000000000000000000000000000714212d3a4754606d7a8283838383838174675b4e414855626f7c8283838383827f7265584c3f3225190c00000000000000000000000006111c2a36424d57626e7b87929fa8b0a69f92877c6f695f585046413b36312d2c282327272723282c2d31373b42465159606b717e8a929da8b1a79f92857a6d61554b4035291d1004000000000000000000000000020b17232e38424e58606d7984919ea5aca1968d80736a5f53493f3d46525e68717e8b949faba59e91847a6d60594f43392e23180b0200000000000000000000000000000000000000050f171f282f353d43484f54555d6064666d6f73767c8895a29c918c8f92989a9ea1a9aca8a09d948f857d6f6a60564c41342a200b0200000000000000000000000003101d293643505c6976838f9ca9a296897c6f6356493c3023160900000000000000000000000004101d2935404b55626f7c88949fabac9f93877b6e61544a3f34281c10030000000000000000000000030f1c28333f4a54616e7b87939facab9f94887c6f62554b4035291d100400000005111e2b3744505c68737879797979797979706b6054483b2f2216090004111e2b3744515e6a7784919daaa89b8e8275685b4f4235281c0f020e1a2734414d5a6774808d9aa7ab9e9185786b5e5245382b1f12050b1724313e4a5764717d8a97a4aea194887b6e6155483b2e221508000d1925303b4650585d5f606060606060605f524c443a2f24190d0100000000000000000000000000000a141d2a34404a52585a60606060606060605c59544b42372c21150900000000000000000000000000020a11171d262d33373a4146474b4e505152535352514f4d4a4745403937322a251f170f080000000000000000000000000004111d2935414c565d6c6c6c6c6c6c6c6c66635b52473b2f23160a000000000000000000000000000000000000000000000000000000000000000000000000000810181f25292b2c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2c2c2b2a29272523201f1c1813110d08020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030a11171c1f2d2d2d2d2d2d2d2d21211e1a140d05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f171f262a2d2e3939393939382d2c29241d160d0400000005111d29343f485056586060606060605a58524a4a52585a606060606060585650483f34291d110500000000000000000000000000000000000000030f1b26323c464e535560606060606060605f5a52493e33271b0f0200000000000000000000000000000000000000000000000000000000000000000713202c3945525d686d767676767676746f64584c4047535f6a6f767676767676726d62564a3e3125180b000000000000000000000000000e1a26313b47535f6974808d96a0abaea39991857b6e6a615a524c46423c3a38342e3434342e34383a3c42474d535b626b707d86929fa4aeaaa0958b7f72685e5243392f24180d010000000000000000000000000a141d28343f4a54606a73808d96a0aca59e9184796d60584e413835414c56606c77829099a3ada1968d80746b60554b4034281d140a000000000000000000000000000000000000050e172129313940454f54596063676d7175797c808387929faca39c999c9fa2aaabaca49f9c96918a827b6f6b60584e443b3022180e0000000000000000000000000003101d293643505c6976838f9ca9a296897c6f6356493c302316090000000000000000000000000613202c3945515d6774808d9aa6b0a99c8f8276695f5342382e23170c000000000000000000000000000b17222d3846535e6976828f9ca9b0a69a8d8074675d5145392c20150a00000005121f2b3845525e6b7885868686868686867d706356493d3023160a0004111e2b3744515e6a7784919daaa89b8e8275685b4f4235281c0f020e1a2734414d5a6774808d9aa7ab9e9185786b5e5245382b1f07000b1724313e4a5764717d8a97a4aea194887b6e6155483b2e22150800101c2935414d5862696c6c6c6c6c6c6c6c6c5d564c4135291d11040000000000000000000000000006111c262f3c46525c64676c6c6c6c6c6c6c6c68655d54493d3125190c000000000000000000000000030b141b22272f383f44464c5254575a5c5e5f5f5f5f5e5c5a5753514b47433d363129211a120a0100000000000000000000000713202c3945525d687679797979797979736d63574b3f3225190c00000000000000000000000000000000000000000000000000000000000000000000000006101a222a30353839393939393939393939393939393939393939393939393838373634322f2d2c2923201d19130f0a030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c151c23282c39393939393939392e2d2a251f170f05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060d141a1e21222c2d2d2d2d2b20201d18130c0400000000010c18222d363f454a4b5353535353534d4c474040474c4d5353535353534b4a453f362d22180c0100000000000000000000000000000000000000000a15202a343c4347495353535353535353534f4940372c21160a00000000000000000000000000000000000000000000000000000000000000000004111d2935414c565d6069696969696967645c53483c434e585f6269696969696965625b51463a2e2216090000000000000000000000000009141f2b37424d57606d79849199a4afaba19791847c706c615e56534d494644404141414141404546494d53575f616d727d869298a2aeaca2989083786c60564c4131281d120700000000000000000000000006111b262f3844505c666f7c87929fa8aa9e938a7d70675d51463c2f303a44505b656f7c87929fa8a89f93887d6f675c51453c2f261c110600000000000000000000000000000000030c172029333b434b515960636b70757a7e8285898c909299a3afada7a5a9aaaba39f9c9a93908a847e766e6960594f463c32291e10060000000000000000000003070909101d293643505c6976838f9ca9a296897c6f6356493c302316090000000000000000000000000714202d3a4753606d7985929fabada2978a7e7164574d4230261c11060000000000000000000000000006111c2a36424d5764717e8a97a1adab9f9285796d6053473c32271b0f01000005121f2b3845525e6b7885919393939393897c706356493d3023160a0004111e2b3744515e6a7784919daaa89b8e8275685b4f4235281c0f020e1a2734414d5a6774808d9aa7ab9e9185786b5e52452f24180c000b1724313e4a5764717d8a97a4aea194887b6e6155483b2e22150800121f2b3844515d6974797979797979797976685d5245392c201307000000000000000000000000000b17222d38424e58646e737979797979797979756f65594d4134281b0e0200000000000000000000030c151d262d333d41495053565e616467696b6c6c6c6b6b696663605d55544e46423b332c241c130a01000000000000000000000714212d3a4754606d7a86868686868686807366594d4033261a0d0000000000000000000000000000000000000000000000000000000000000000000000020d18222c343b4144464646464646464646464646464646464646464646464645454443413e3c3a38342f2d29241e1a150f0a040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a151e262e343846464646464646463b3a36312921170d0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090e1214151f202020201e1413110d070100000000000006111b242d343a3d3e464646464646403f3b36363b3f404646464646463e3d3a342d241b1106000000000000000000000000000000000000000000040e18222a32373b3c464646464646464646433e372e251b1005000000000000000000000000000000000000000000000000000000000000000000010d1924303a444c52545c5c5c5c5c5c5b58534a41363c464e53555c5c5c5c5c5c585651493f34291e120600000000000000000000000000030e1a26313c45515d676f7d87939fa4aea9a19691867e756e68615e575653514a4e4e4d4e4e4b515356575f62696e767f879298a2aaafa49a92867c6f665b50443a301f160c010000000000000000000000000b17222d38414d57606d78839099a3aea2988e81756b61554b40342a27333f49535f6a73808d96a1ada49a9184796d60584e42382d22170b030000000000000000000000000000000b151e29333b454d555d606b6f767d81868a8e9298999d9fa3abb5aca6a8a09e9a9992908c87837e78716c615e574f473d342b20170d000000000000000000040a0f131516191c28333f4a546a7683909da9a296897c6f6356493c30231609000000000000000000000006131f2b37434e5865717e8b97a2adab9f9285796d6053473b3120150a0000000000000000000000000000000e1a25313b4653606d7985929eabaea2988b7e7165584e43372b1e1308000005121f2b3845525e6b7885919e9f9f9f96897c706356493d3023160a0004111e2b3744515e6a7784919daaa89b8f8275685c4f4235291c08000e1a2734414d5a6774808d9aa7ab9e9285786b554b4035291d10040b1724313e4a5764717d8a97a4aea194887b6e6155483b2e22150800131f2c3946525f6c7986868686868686867a6d6054473a2d211407000000000000000000000000030f1c28333f4a545f6a738086868686868686868275685c4f4235291c0f02000000000000000000020c151e272f383f444e535b6063686d7174767878797978777573706d67626058534d453e362e251c130a000000000000000000000714212d3a4754606d7a8793939393938c807366594d4033261a0d000000000000000000000000000000000000000000000000000000000000000000000008141f2a343e464d5152535353535353535353535353535353535353535353535251514f4d4b494745403a3935302b26201b150c070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c2630383f4453535353535353534846423b33291f14090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020507081313131313120706040100000000000000000009121b22292e313239393939393934332f2b2b2f333439393939393932312e29221b1209000000000000000000000000000000000000000000000006101820262b2e2f39393939393939393937332c251c1309000000000000000000000000000000000000000000000000000000000000000000000008131e28323a4145475050505050504e4c4841382f343c4347485050505050504c4a463f372d23180d01000000000000000000000000000009151f2935404b55606b727f8b929da4ada9a198928a817a746e696562605c545b5a5a5a5b545c606266696e747b828b9299a2aaaea39f93887e706a5f544a3f32291e0d04000000000000000000000000040f1b27333f49535f69727f8c95a0aba79f92857b6e61594f43392f22222d38414e58606d7984919ea6aca0958c80736a5f544a3f33281f1409000000000000000000000000000007121c27303b454d575e676d747c83898e92989b9fa2aaa9a8aab0aca29a9796918e8a86837f7b76716d66615a524d453d352b22190e050000000000000000070f161b1f222325252b3844505b667784909daaa296897c6f6356493c3023160900000000000000000000000815222e3b4754606a7783909da9b1a79a8d8074675c5145382c1f130300000000000000000000000000000009141f2c3845515c6774808d9aa7b1aa9d9083776a6054473a2f24190d010005121f2b3845525e6b7885919eabaca396897c706356493d3023160a0004111e2b3744515e6a7784919daaa99c8f8376695c50433025190e020e1a2734414d5a6774808d9aa7ac9f928679675d5145392c1f13060b1724313e4a5764717d8a97a4aea194887b6e6155483b2e22150800131f2c3946525f6c7985929393939393877a6d6054473a2d2114070000000000000000000000030d1a232b3844505b666f7c8792939393939392857b6e6154473b2e211408000000000000000000000a141e2730394149505860656c70767a7e818384858686858482807d79746f6a615e57504840372e251c12090000000000000000000714212d3a4754606d7a87939f9f9f998c807366594d4033261a0d00000000000000000000000000000000000000000000000000000000000000000000000d1925303b4650585d5f6060606060606060606060606060606060606060605f5f5e5d5c5a585653514b4746413a37312b262018120b0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232e38424a505f606060606060605f534d453b31251a0e02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000911181d2124252d2d2d2d2d2d2726231f1f2326272d2d2d2d2d2d2524211d18110900000000000000000000000000000000000000000000000000060e151b1f21222d2d2d2d2d2d2d2d2d2b27211b130a010000000000000000000000000000000000000000000000000000000000000000000000020c1620283035393a43434343434341403c362f262a32373b3c4343434343433f3e3a342d251b1107000000000000000000000000000000030d18242f3a434f59626d74808d929ca3adaaa29f938e86807b76726f6d6669686767676869666d6f72777b81868f949fa3ababa39f918c7f726c61584e42382d20170d000000000000000000000000040e1a242b3744505b656e7b86929fa7ab9f958b7f72695e52473e31271d1b262f3c45515d67707d8a949eaaa89f92877c6f665b50443b31251a0e04000000000000000000000000000c18232e39424d575e696e79818990959b9fa3aaaaa8a19e9c9ea6a69a908a8784817d7a76726e6964605c545046423b332b23191007000000000000000007101921272c2f30323230394653606c7985929faca295887c6f6255493c2f2216090000000000000000000004111d2935414c56626f7c88959fabab9f95887c6f62554b4034291c100400000000000000000000000000000004101c2834404b55626f7c88959fabab9f95887c6f62564c4135291d11040005121f2b3845525e6b7885919eabaca396897c706356493d3023160a0004111e2b3744515e6a7784919daaaa9d9083776a564c41362a1e11050e1a2734414d5a6774808d9aa7afa399867a6d6053473a2d2014070b1724313e4a5764717d8a97a4aea194887b6e6155483b2e22150800131f2c3946525f6c7985929f9f9f9f93877a6d6054473a2d21140700000000000000000000010b151f2a36414c56606c78839099a39faa9e948b7e71685e5246392d20140700000000000000000006111c263039424a535b606a6f787d82868a8d8f9192929292918f8d8a86817c756e69615a524a40372e241b0f0600000000000000000714212d3a4754606d7a8793a0aca6998c807366594d4033261a0d0000000000000000000000000000000000000000000000000000000000000000000000101c2935414d5862696c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6b6b6a69676562605c5554524c47433c373228231d150c0700000000000000000000000000000000000000000000000000000000000000000000000000000000000003101c28343f4a545c6c6c6c6c6c6c6c6c6c5e574d42362a1e12050000000000000000000000000001070b0f111213131313131313080705020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060c111517182020202020201a1917131317191a202020202020181715110c06000000000000000000000000000000000000000000000000000000040a0f1315162020202020202020201e1b1610090100000000000000000000000000000000000000000000000000000000000000000000000000040e161e24292c2d3636363636363433302b251d20262b2e2f36363636363632312e29231b1309000000000000000000000000000000000007131d28313d47515b606c77808c919ea1a9aea59e98928d87837f7c79777674747474747677797c7f83888e92999fa6aea8a199928b7f736d635a50463c2f261c0e050000000000000000000000020c16202a36424d57606c77829098a3aea3999083786c60564d42352c1f15141d2935404b55616c75828f98a2aea3999083786c60574d42362a20160c02000000000000000000000004101c2834404a545e696e7b838e939d9fa7aca7a09d9996918f949ea4978a7e7b7774716d6865615e5753504a423e363029211911070000000000000000040f19232b32383b3c3f3f3f424b55626e7b8898a2aea894877b6e6154483b2e211508000000000000000000000613202c3945525d6874818e9aa79faa9d9083766a5f5343392f23180c00000000000000000000000000000000000c18232e3947535f6a7683909daa9fa79a8e8174685d5245392c2013060005121f2b3845525e6b7885919e9f9f9f96897c706356493d3023160a0004111e2b3744515e6a7784919daaab9e918578685e5246392d2014070e1b2834414e5b6774818e9aa7b5ab94887b6e6155483b2e2215090b1825313e4b5864717e8b97a4aea194887b6e6155483b2e22150800131f2c3946525f6c7985929facaca093877a6d6054473a2d2114070000000000000000000007121d27313946525e68727f8b959fabaea2988f82766c62564d41362a1e11050000000000000000030d17232e38424a545c656c737c838a8f93999a9c9e9f9f9f9e9e9c9998928e89827b716c635c524940362d22180b02000000000000000714212d3a4754606d7a8793a0ada6998c807366594d4033261a0d0000000000000000000000000000000000000000000000000000000000000000000000121f2b3844515d697479797979797979797979797979797979797979797979797878777674716f6d6764615d56534e47433c342e271e191008000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2c3844505c66767979797979797976695e53463a2d211407000000000000000000000000050c12171b1d1e202020202020201514120e0903000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000105090b0b1313131313130d0d0b07070b0d0d1313131313130b0b09050100000000000000000000000000000000000000000000000000000000000003060809131313131313131313120f0a0500000000000000000000000000000000000000000000000000000000000000000000000000000000040c13191d2021292929292929282724201a13151b1f21222929292929292525221e181109010000000000000000000000000000000000010c161f2b353f44505b656c747f8a92979ea6acaaa29f9a93908c898684828181808181828486898c90959a9fa3ababa49f9691877e736d635b51473e342a1d140a00000000000000000000000008131e28323a46525e69727e8b949faaa89f92877c6f665b50443b30231a0d0b18242f3943505a616e7b86929fa8ab9f958b7f72695e53463e32281e1308000000000000000000000006121f2c3844515c666e7b8490959da5aba49f9b95908c8884828f9ca09386796e696764605d5654534d46443f38302a251f170f070000000000000000000a16212b353d4348494c4c4c4d525d67727f8c99aaaca096867a6d6053473a2d201407000000000000000000000714212d3a4754606d7a869293939393988b7e7165584e4331271d1207000000000000000000000000000000000007121d2b37434e5865717e8b989393939392867a6d6054473a2d2114070005121f2b3845525e6b7885919393939393897c706356493d3023160a0004111e2b3744515e6a7784919daaada197877a6e6154473b2e23180b0f1b2835424e5b6875818e9ba8b0a3978a7d7064574a3d31261a0d0c1825323f4b5865727e8b98a5aea194887b6e6155483b2e22150800131f2c3946525f6c7985929facada093877a6d6054473a2d211407000000000000000000020b18242f39434f59616e7a85929fa7b0a69f92867b6e615a50443b3025190e0200000000000000010b151f28343f4a545c666d77808890959c9fa4aba8a5a3a2a2a3a5a8aaa39f9b938f867e736e635b52483e342a1d140a000000000000000714212d3a4754606d7a8793a0ada6998c807366594d4033261a0d0000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c79868686868686868686868686868686868686868686868685848482807e7c7975716d68625f58534e454039302a221a1109000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d78868686868686867b6e6154483b2e2115080000000000000000000000060f161d23272a2b2d2d2d2d2d2d2d22211e1a140e060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080d1113141d1d1d1d1d1d1b1a18140f080a0f1215151d1d1d1d1d1d191816120d070000000000000000000000000000000000000000040d192327333f49535b606d737d858f949da0a7acaca49f9c989892918f8e8d8d8d8e8f919298999d9fa7acaca69f99938d847d716c635b51493f352c22180b020000000000000000000000030d1924303a44505a616e7b85929fa6ada1968d80746a5f544a3f32291f110807121d28313e46535f69737f8c95a0aca79f92867b6e615a50443a3025190d0400000000000000000005111e2a36414c56606d78829096a0a7a8a099938e88837f7b787c8895a093867a6d60565754524c4846423b38342e261e1a140d05020000000000000000030f1b27323d474f5456585859575e616d7984919eabaa9e918477675d5145392c201306000000000000000000000c1925323f4c5865727f8686868686868686796d6054473c3121150b010000000000000000000000000000000000000f1b26313c4754606d7986868686868686867f7265584b3f3225180c0005121f2b3845525e6b7885868686868686867d706356493d3023160a0004111e2b3744515e6a7784919daab3a9968a7d7063554b4034281d14111c2935424f5c6875828f9ba8b3a6998c807366584e43372b1f16111926323f4c5965727f8c98a5b5ab94877a6e6154473b2e21140800131f2c3946525f6c7985929facada093877a6d6054473a2d2114070000000000000000000a141d2935404b55606b75818e97a2adaa9f948b7e72695e52483e32291f1408000000000000000007121d27313944505c666d78818c939a9fa7a9a29f9b9896959596989b9fa2aaa59e98928a80736e635a50463c2f261b11060000000000000714212d3a4754606d7a8793a0ada6998c807366594d4033261a0d0000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929393939393939393939393939393939393939399929291908f8d8b8985827e7a756f6a625f58514b433c342c231b12090000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d79869393939393877b6e6154483b2e21150800000000000000000000050f1820282f333738393939393939392e2d2b261f180f06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020608080b0e1011121313121211100d0b0807050200000000000000000000000000000000000000000000000000000000000000000000000000000000010406070a0e10111213131212100e0b080806020000000000000000000000000000000000000000000000000000000000000000000000010407071010101010100e0d0b08030000030608091010101010100c0b09060100000000000000000000000000000000000000000000071017222d384149505b636b707b828990959c9fa4acaca9aaa39f9d9c9b9a9a9a9b9c9d9fa3aaaaababa39f9b948f878079706b625a514940372e231a10060000000000000000000000010b151f2935414c56616c75828f98a2aea69e9184796d60584e42382d20170d00010c161f2a36424d57606d7984919da5aea2988f82756c61564c4135291f160c0100000000000000000713202d3946525e6873808d949fa8a7a0969187817c77726e6f7b8895a093867a6d60534a4745413b3a36312b2823201f1b1714110e090200000000000007131f2c38434f59606365656667696e75808d96a1aca89b8e817568554b4035291d1104000000000000000000000b1824313e4a56626d7279797979797979796d675d5145392c201303000000000000000000000000000000000000000a15202c3945515d676d7979797979797979726d62564a3d3124180b0005111e2b3744505c68737879797979797979706b6054483b2f2216090004111e2b3744515e6a7784919daab4a79a8d8074675c51453a2f26201d1e2b37424d576a7783909daab6a99d9083766a5f53473c3128201e1d27333f49536774808d9aa7aea399877a6d6054473a2d21140700131f2c3946525f6c7985929facada093877a6d6054473a2d211407000000000000000006111b262f3845515d67707d89939ea9aea2988f82776c60574d42362d20170d0200000000000000000c18232f39434f59606d78818e939fa4aaa29f97928e8b898888898b8e92989fa3aaa29f928c80736c61584e41382d22170b0000000000000714212d3a4754606d7a8793a0ada6998c807366594d4033261a0d0604020000000000000000000000000000020506060503000000000000000000000000131f2c3946525f6c7985929f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9fa39f9e9e9d9c9a9898928f8b86817c756f6a605c554e463e352d241b120900000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d7986939f9f9f94877b6e6154483b2e211508000000000000000000010c16202a323a3f4345464646464646463b3a37312a21180e0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000205090e121415181b1d1e1f20201f1f1e1c1a181514120e090502000000000000000000000000000000000000000000000000000000000000000000000001080d111314171a1c1e1f20201f1e1d1b181514120e09040100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111b262f383f44515961696e757d83898f939a9c9fa2aaa7a8aaa9a7a7a7a7a7a9a9a8a6a9a29e9b99928e88827c746d676059504840372e251c110800000000000000000000000007121d27313945525d68717e8a939eaaaa9e948a7d70675d51463c2f261c0e050000040d1a26313b45515c66707d89939ea9aa9e948a7e71685e52463d31281d120700000000000000000714212e3a4754616d7a86929fa6aaa09590847c756f6a66626f7b8895a093867a6d6053473a3935302d2e3633312e2d2b2722201e19140d0500000000000915222f3b4854606b6f72727273767b818d929da8aca1968a7d7064574a3d2f24180d01000000000000000000000915222e3a46515b62656c6c6c6c6c6c6c6c605d554b4135291d11040000000000000000000000000000000000000004111d2935414b555d606c6c6c6c6c6c6c6c65625b51463a2e22150900030f1b2834404c5761686b6c6c6c6c6c6c6c6360594f44382c2013070004111e2b3744515e6a7784919daab7ab9f9285796d60564c42382f2c292a2d3a47535f697885929fabb8ab9f95887b6e62584e4339312d2a2a2d3744505b6576828f9ca9ac9f928679685d5245392c20130600131f2c3946525f6c7985929facada093877a6d6054473a2d21140700000000000000000b17222d38414e58606d7984919ea5afa79f92867b6e655b50453b30241b0e05000000000000000004101c2934404b55606b73808d939ea5a7a098928c85817e7c7c7c7d7f82868d9299a1a8a49c928b7e716a5f53493f33271c110600000000000714212d3a4754606d7a8793a0ada6998c807366594d4033261a1312110f0b0706040100000000000306070b0f11131312100d0a09070400000000000000131f2c3946525f6c7985929facacacada7a5a5a5a5a5a5a5a5a5a5a5a5a5a5a6a6a7aaa9a7aaa29f9b99928e87827c736d675f584f473f362d241b1007000000000000000000000000000000000000000606060606060606060606060606060606060713202d3a4653606d798693a0aca194877b6e6154483b2e21150800000000000000000007121d28323c444b5051535353535353534846423c332a1f140900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080e11151a1e21222528292b2c2c2c2c2b2b29272522211e1a14120e090200000000000000000000000000000000000000000000000000000000000000050b1013191d20212427292b2c2c2c2c2b2a282522211e1a15110d070100000000000000000000000000000000000000000000000000000000000000000000000406070a0d0f11121313131212100e0c09060603000000000000000000000000000000000000000000000000000000000000000a141d262d3340474f575e616b70777d82878b8f9298989a9b9d9e9e9f9f9f9e9d9d9b999797928e8a86817c766f6a605d554f473e362e251c130a000000000000000000000000030c18242f39434f59606d7a85919ea6aea2988f82756c61554b40342a1d140a0000000009141f2834404b54606b75818e97a2ada69e92857a6d61594f43392f24180c0300000000000004111d2935414c566673808c98a2aea29890837a6f6a625f58626f7b8895a093867a6d6053473a2d30363a3b43403e3b3937332d2d2a251f170e0500000000091623303c4956636f7d7f7f7f8083868e939da4aea59e9184786d6053463a2d201307000000000000000000000006121e29343f49515658606060606060605f54514b433a2f24180d0100000000000000000000000000000000000000010d18242f3a434b51545f60606060606060585651493f34291d120600000c18242f3a454f575c5e6060606060606056544f473d32271b10040004111e2b3744515e6a7784919daab7ada2978b7e71685e544a423c3935363a3f4a54616e7b8898a2aeb5afa79a8d80746a5f554b433d393636393d4653606c7985919eabaa9e9184776b564c4135291d110400131f2c3946525f6c7985929facada093877a6d6054473a2d21140700000000000000030f1b27333f49535f6a73808d96a0acaa9f958c7f72695f53493f33291f120900000000000000000006131f2c3845515c67707d88939fa5a7a09590857f797572706f6f7072757a80869196a1a9a49f92867c6e655b5044382e23170c00000000000714212d3a4754606d7a8793a0ada6998c807366594d4033261f201f1e1b181413110d080100060b101213171c1e1f201e1d1a171613100b050000000000131f2c3946525f6c7985929facb8ada39c9898989898989898989898989898999a9b9d9fa3aaaaacaba39f9a938f8780796f6a615950483f362d22190f050000000000000000000000000000000306071313131313131313131313131313131313131313202d3a4653606d798693a0aca194877b6e6154483b2e2115080906010000000000000b17232f3a444e565c5e6060606060606055534d453c31261a0e0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080d14191e20262b2e2f323436383939393938373634322e2d2b26201e1a140e0902000000000000000000000000000000000000000000000000000000040a0f161c1e24292c2d3134363839393939383634322e2d2b26201d18130c060000000000000000000000000000000000000000000000000000000000000001070c10131416191c1d1f1f20201f1e1d1b191613120f0b060000000000000000000000000000000000000000000000000000000000020b141b2227353e454d525960636b70757b7e8285888b8d8f9091929292929191908e8c8a8885817e7a746f6a626058514b433d352d241c130a010000000000000000000000000b151e2935404b55606b74818e97a1ada79f92867b6e615a50433a2f22190b0200000000030c18232e39424f59616e7a85929fa7ada1978e81746b60554b4035291e150a0000000000000713202c3945525d687783909daaab9f92857b6e6860585355626f7b8895a093867a6d6053473a333b4246474f4d4a4846443f3b3a36302920170d020000000e1a2734414d5a6774808b8b8c8d8f92999ea5aca59e938a7e71665c5044382b1f12060000000000000000000000010d18232d373f464a4c53535353535353524745413a31281d130700000000000000000000000000000000000000000007131d28313a41454752535353535353534b4a463f372d23180d01000007131e29333d454c5052535353535353534948443d352b21160b000004111e2b3744515e6a7784919daab1a7a09d92857a6d665b544e474541424648505b66727f8c98aab4aba49f9d92877c6f675d554f4746414146474e58626f7c8997a1ada99c8f8276695c4f432f24190d0100131f2c3946525f6c7985929facada093877a6d6054473a2d211407000000000000030c19232b3744505b656e7c87929fa8aea3989083786c60574d41382d21170d00000000000000000004111d2935414c55606d7984919aa4a9a09590837b726d67656362626365686d737c849197a1aba2989083786c60544a3f34281c1003000000000714212d3a4754606d7a8793a0ada6998c807366594d40332b2c2c2c2b282521201d19130d0a11171c1f2024282b2c2c2b2a272322201c160f0800000000131f2c3946525f6c7985929facb8a79c918c8b8b8b8b8b8b8b8b8b8b8b8b8b8c8d8e909298999da0a7aaaca49f99928d837c706b625a50483e342b21170d03000000000000000000000000060b1012132020202020202020202020202020202020202020202d3a4653606d798693a0aca194877b6e6154483b2e21191815120d0600000000000f1b27333f4b5660686b6c6c6c6c6c6c6c6c5f574d42372b1e12050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c13191f252a2d31373a3b3e41434445464645454443403e3b3a37312d2a251f1a140d0500000000000000000000000000000000000000000000000000060b151b21272c2f35393a3d414344454646454543413e3b3a37312c29241d17110a03000000000000000000000000000000000000000000000000000000040a0f12181c1f202326282a2b2c2c2c2c2b2a282523201f1c17110f0a03000000000000000000000000000000000000000000000000000000020a1117232c333b42464f54596063696e7276797c7e808283848585868585848382807d7b7975716d68625f58544e45403a312b231b120a0100000000000000000000000007121c27303945515d67707d89939da9aba0958c7f72695e53483e31281d100700060000000007121d27303d46525e68727f8b959faba99e93897d70675d51453d30261c110600000000000714212d3a4754606d7a86939facaa998c8073695e564e4855626f7b8895a093867a6d6053473a3b454d52545c5a57555350494746423b32291f14090000000e1a2734414d5a6774808d98999a9c9fa3aba8a19e938e81756c61544a3f34281c100300000000000000000000000006111b252d343a3e3f46464646464646463a39352f281f160c01000000000000000000000000000000000000000000010c161f282f35393a46464646464646463f3d3a342d251b1106000000010c17212b333a404445464646464646463d3b38322b23190f04000004111e2b3744515e6a7784919daaaca09590958e81786c665f5854524c4d53555a606c7883909daaafa4999390959083796d67605954524c4c525458606a74818e9aa9b3aa998d8073665a4d4033271a080000131f2c3946525f6c7985929facada093877a6d6054473a2d2114070000000000000b151e2a36414c56606c77829099a3aea79f92867b6e665b50453b2f261b0f050000000000000000000613202c3945515d67737f8c96a1aca29790837a6e69605d5556555556565d606a6f7b859199a3aa9f948b7e71665c5044382c1f1509000000000714212d3a4754606d7a8793a0ada6998c807366594d4036383939393735322d2c29241e19141c23282b2d3135383939383633302f2c2721191108000000131f2c3946525f6c7985929facb2a5988c7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f80818386888c91959c9ea6acaba39f9591867d716c625a50463d33291f140900000000000000000000020a11171c1f202c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2d3a4653606d798693a0aca194877b6e6154483b2e2c2524221e18110901000000111d2a3743505c6872787979797979797976695f53463a2d21140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080e161e25293036393c4247484b4e50515253535252514f4d4b4846423c3a36302a251f170f0800000000000000000000000000000000000000000000020a111720262b33383a4145474a4d4f515253535251504e4b4847423c39352f28231c150c05000000000000000000000000000000000000000000000000040a0f161b1d23292c2d303335373839393939383635322f2d2b28221c1b150e090300000000000000000000000000000000000000000000000000000006111a202930363d44484f54565e6165666d6f7174757778787979787877767573716f6d6664605d56534e47433d352f281f19110900000000000000000000000000000c18232e39424e58606d7984919ea5afa4999083786d60574d42362c1f160c1313130c060603000b151e2a36414c56606c78839099a4afa59e9184796d60584e42382e23170c00000000000916232f3c4956626f7c8999a4aea298887b6e62574d444855626f7b8895a093867a6d6053473a424d575e6169666461605b5354524d443b3025190e0200000e1a2734414d5a6774808d9a9f9fa29f9e9d9a96918b81786d605a5042382e23170b000000000000000000000000000009131b23292e313239393939393939392d2c29241d160d040000000000000000000000000000000000000000000000040d161d24292c2d393939393939393932312e29231b13090000000000050f1821292f34373839393939393939302f2c272119110700000004111e2b3744515e6a7784919daaaa9d908490938e81786e6a64605d56575f61646c727f8b95a0acac9f93878390958f82796f6b64615e56565e61646a6f7c87929facaea298897d7063564a3d3023170a0000131f2c3946525f6c7985929facada093877a6d6054473a2d211407000000000007121d27303946525e68717e8b949fababa0958c7f726a5f544a3f332a1d140a000000000000000000000714212d3a4754606d7a85929fa8a89f92857b6e685e57514b4949494a4c52585f696f7d87929faaa69e9184786d6053463c31261a0e020000000714212d3a4754606d7a8793a0ada6998c807366594d40434445464544423e3a39352f2a251e262e34383a3e424446464543403d3c38332b23190f050000131f2c3946525f6c7985929facada093877a7272727272727272727272727273737477797c8084898f949da0a7afa7a09892877e716c61584e453b30251a0d040000000000000000020c141c23282b2d393939393939393939393939393939393939393939393a4653606d798693a0aca194877b6e6154483b393932312e29231b1309000000121e2b3845515e6b7884868686868686867b6e6155483b2e2215080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a121a202830353b4146474e5355585b5c5e5f5f5f5f5e5e5c5a5855534d4846423b363029211a120a0200000000000000000000000000000000000000030b141b222732373d44484c5254575a5c5e5f5f5f5f5e5d5b5855534d4745413a342e261e170f0700000000000000000000000000000000000000000000060b151b21272c2f34383a3d40424445464646454543413f3c3938332d2b26201a150b06000000000000000000000000000000000000000000000000000000080e171f252a33384851595e6060605c60626567686a6b6b6c6c6c6b6a6a68666462605c6060605f5c574f453a29241d160d07000000000000000000000000000004101c2834404a54606a73808d96a09fa99f93877c6f665c50453b31241a20202020201913120f0b060c1925303b44505b666f7c87939fa99fa1968d80736a60544a3f34281c1003000000000a1724303d4a5763707d8a96abab9f9285796c6053463c4855626f7b8895a093867a6d6053473a46525e696e7673716e6c6567615e564d42362a1e110500000e1a2734414d5a6774808d939393989291908d8a847e746d665c51483e30261c11060000000000000000000000000000010911181e2224252d2d2d2d2d2d2d2c21201d18130c0400000000000000000000000000000000000000000000000000040c13181d20212c2d2d2d2d2d2d2d2524221d18110901000000000000060f171e24282b2b2d2d2d2d2d2d2d2322201b160f070000000005111e2b3844515e6b7784919eaaa4978b7e8491938e827c75716d686b6b696e71767e87929fa7b1a79c8f827b8692948f837c75716e686b6b686d70757c859299a3afaa9f9285796d6053463a2d2013070000131f2c3946525f6c7985929facada093877a6d6054473a2d21140700000000000c18232e39424f59616d7a85929ea6aea3999083786d60574e42382d21180b0200000000000000000007131f2c38434f5965727f8c98a2aca0968b7f72695f564d45403d3c3c3d41454e57606b74808d98a2aca1968a7e7164574d42372b1e12060000000714212d3a4754606d7a8793a0ada6998c807366594d4c5051525352514e4b4745413a36302a30383f44464a4f51525351504d4a48443d352b21160b0000131f2c3946525f6c7985929facada093877a6d656565656565656565656565666768666d6f73777c828990959fa4acaaa299928b7e716a60574d42362a1f160c01000000000000000a141e262e34383a46464646464646464646464646464646464646464646464653606d798693a0aca194877b6e6154484646463f3e3a342d251b11060000121e2b3845515e6b7884919393939393887b6e6155483b2e22150800000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b141c242c323a41464d5254575f626567696b6c6c6c6c6b6a696765615f5754524d46423b332c241c140a020000000000000000000000000000000000030c151d262d333c43474f54565d606467696b6c6c6c6c6b696765615f5754514b443f3830292119100700000000000000000000000000000000000000020a111720262b323839404547494c4f50525253535251504e4c4946443f3837312b262017110a020000000000000000000000000000000000000000000000000000050d141a2136424e59636b6c6c6c6c6b64615a5c5d5e5f5f5f5f5e5e5d5b535b60656c6c6c6c6b6861574c403428130c0400000000000000000000000000000006121f2c3844515c666f7c879293939393978d80746a60544a3f33291f202c2d2d2d2c26201f1c17110a141e28333f4a54606a74808d979393939392877c6f665c5044382c1f1206000000000b1824313e4b5764717e8a97a4aa9e918477655b50443c4855626f7b8895a093867a6d6053473b4754616e7b82807d7b7976746e695e52463a2d20140700000e1a2734414d5a6774808686868686858483807d79716c605c544a40362c1e140a0000000000000000000000000000000000060d12151819202020202020201f1413110d070100000000000000000000000000000000000000000000000000000001070d1113141f20202020202020181815120d06000000000000000000050c13181b1e1f20202020202020161613100b04000000000005111e2b3844515e6b7784919eaaa3978a7d7d8992948f86817d7a797778797b7e838b9299a3afaba0958a7e737f8c94959087827e7a797878797a7d82889297a1abaea3988d8074665c5145382c1f13060000131f2c3946525f6c7985929facada093877a6d6054473a2d2114070000000004101c2834404b54606b74818e97a1ada79f92877c6f665c50453c2f261c0f06000000000000000000000915222f3b4854606b7784919eaaab9e9184786d60574d443b352f2f2f30353c454f59616d7a86929faca89d908376695f53473a2d2114080000000714212d3a4754606d7a8793a0ada6998c8073665956595c5e5f5f5f5e5b5854524c46413a333c424a5053575b5e5f5f5e5d5a56544f473d33271c100400131f2c3946525f6c7985929facada093877a6d605858585858585858585858595a545c6062666b6f767c838d939aa3ababa39f92867c6f695e52463e31281d130700000000000006111c2630383f444653535353535353535353535353535353535353535353535353606d798693a0aca194877b6e6154535353534c4a463f372d23180d0100121e2b3845515e6b7884919e9f9f9f94887b6e6155483b2e221508000000000000000000000000000000000000000000000000000000000000000000000000000000000000010b141d262e363e444c52565e61666a6e717476777879797878777673716e6966615e57524d453e362e261c140a00000000000000000000000000000000030c151e272f383f444e54596063686d7074767778797978787674716e6965605d55504a423b332b221910070000000000000000000000000000000000040b141c222832373d43484b515356595b5d5e5f5f5f5f5e5d5b585653504a47433c373127221b140b03000000000000000000000000000000000000000000000000000002091f2c3945525e6b757979797978706c615f57514b525352524b51575f656c71787979797873685c5044372b1e11000000000000000000000000000000000713202d3a4653606d798386868686868686857a6d60584e42382e282b383939393939332d2b28221c140b17222d38424e58606d7a858686868686868683796d6053463a2d201307000000000b1824313e4b5764717e8a97a4ab9e918578665c50443c4855626f7b8895a093867a6d605347424e5865717e8b8d8a888583807b6e6154473b2e21140800000d1a26333f4c58646e74797979797979787774706d66625a514a42392e241a0c020000000000000000000000000000000000000106090b0c131313131313131307060401000000000000000000000000000000000000000000000000000000000000000104060713131313131313130c0b090601000000000000000000000001070c0f1112131313131313130a0907040000000000000005121e2b3845515e6b7884919eaba3968a7d73808d9499928e8a8785848585888b90959fa3abaea3999183786d78828f959a938f8b8786848485878a8e939aa1a9afa59f92867b6e61544b4034281c10040000131f2c3946525f6c7985929facada093877a6d6054473a2d211407000000040e1a242c3845515c66707d89939ea9aba0958c80736a5f544a3f332a1d140a0000000000000000000000091623303c4956636f7c8996a0aca3998b7f72665c50453b32292422222429333d46525d6874808d9aa8ab9f95887b6e6155483b3025190d0100000714212d3a4754606d7a8793a0ada6998c807366606366696b6c6c6c6a6865605d56524c443e454d545c6064686b6c6c6b69666360594f44382c20130700131f2c3946525f6c7985929facada093877a6d60544c4c4c4c4c4c4c4c4c4c4c4d4a5053555960636a6f7980889299a3abaea39891857b6e615a50433a2f24180d0000000000000b17232e38424a50535f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f606d798693a0aca194877b6e615f5f5f5f5f585651493f34291e120600121e2b3845515e6b7884919eabaca194887b6e6155483b2e22150800000000000000000000000000000000000000000000000000000000000000000000000000000000000009131d262f38404850565e61686e73777b7e81838485868685858482807e7b77736e69615e57504840382e261c13090000000000000000000000000000000a151e273039414950585f626b70757a7d808284858686858483817e7b77726d67605c544d453d342b22190f05000000000000000000000000000000040d161d262d333c43474f54555c606366686a6b6c6c6c6c6b69686562605b54534e47423c332d261d150d03000000000000000000000000000000000000000000000000000613202d394653606c7987868686847d756e69605c554f46454f545c60696e777e8586868685786b5f5245382c1f120500000000000000000000000000000006121f2c3844515c666d7779797979797979786d685d52463d302e34384546464646463f3938332d261d18111c262f3c45525d686d7879797979797979776d665c5044382c1f1206000000000a1723303d4a5663707d8996a9ac9f9286796d6053463e4855626f7b8895a093867a6d6053474b54606a76838f9997989290857a6d6053473a2d20140700000b1723303c47525c64676c6c6c6c6c6c6b6a6764605c545044403930271c1208000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121f2b3845525e6b7885919eaba396897c7078828f949f9b97989291919298979d9fa7aeaaa29f92877d70666d7a8390959f9c97999291919298979b9fa4acaca49f938c7f72695e5342392e23180c000000131f2c3946525f6c7985929facada093877a6d6054473a2d21140b0b0b0b0c16202b37424d57606d7984919da5afa3999083796d60584e42382e21180b020000000000000000000005121e2a36424d576774808d9aa8ac9f92867a6d61544a3f33292018161619212935414c56626f7c8895a0aca7998c807366564c4135291d110500000714212d3a4754606d7a8793a0ada6998c8073656c6f7376777879787775716d68615e5650484d575f666d7175777979787673706b6054483c2f22160900131f2c3946525f6c7985929facada093877a6d6054473f3f3f3f3f3f3f3f3f40403f4446494f545860676d737e879299a3aeaaa1978f82766c61554b4135291d12070000000003101c28343f4a545c6a6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6d798693a0aca194877b6e6c6c6c6c6c6c65625b51463a2e22150900121e2b3845515e6b7884919eabaea194887b6e6155483b2e221508000000000000000000000000000000000000000000000000000000000000000000000000000000000007101b252f38404a525a61686d747b8084888b8e8f919292929291918f8d8b8884807b746e69615a524a40382e251b0f060000000000000000000000000006111c263039424a535b606a6f767d82868a8d8f919292929291908e8b88847f7a726d665e574e463d342b21170b0200000000000000000000000000030c161f282f383f444e54596063676d707375777879797978787674726f6c66625f58534d443f382f271f150d03000000000000000000000000000000000000000000000000000b1825313e4b5864717e889396918a827b736d67615953525960666d737b828b929792877e7064574a3d3124170a0000000000000000000000000000000004101c2834404a545c606a6c6c6c6c6c6c6c6b605d564c413430383f445253535353534c46443f382f2a2119141d2935414c565d606b6c6c6c6c6c6c6c6a605c544a3f34281c1003000000000815222e3b4855616e7b8897a1ada399897d70635a50474855626f7b8895a093867a6d60534c535c666f7c89949faaa29b8e8175675d5145382c1f1306000007131f2b36404a52585a60606060605f5e5d5a5753514b423f342e271e150b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020507080a0d0e10111212131313131211100f0d0b090706040000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101d2935404b556c7885929f9f9f95887c6f6d79828d939a9fa29f9e9e9fa3aaa9a9aba39f98928a7f726b60686d7a838d939a9fa39f9e9e9fa2aaa8a9aba49f9a938c81776c60574d4230271d1207000000131f2c3946525f6c7985929facada093877a6d6054473a2d211818181818181e28323a47535f69737f8c96a0aca89f92877c6f665c51463c30261c0f0600000000000000000000000714212d3a46535e697784919eaaa99c8f8276685e5242382e21170d07080f1924303a47535f6a7784919daaaa9d908377685e5246392d20130700000714212d3a4754606d7a8793a0ada6998c807370787c7f838485868584817e7a746d68615a51575f696e787e828485868483807d7063564a3d3023170a00131f2c3946525f6c7985929facada093877a6d6054473a3232323232323232332e34383a3d43484e555c606c717e87929fa5afa99f948a7e71675d5145392e23180c0000000006121f2b3844505c6674797979797979797979797979797979797979797979797979797979788693a0aca194877b79797979797979726d62564a3e3124180b00121e2b3845515e6b7884919eabaea194887b6e6155483b2e22150800000000000000000000000000000000000000000000000000000000000000000000000000000000030c19222d37404a525c636c717a81868c9196989a9c9e9f9f9f9f9e9d9c9a9895918d86817b716c645c524a40372d21180e030000000000000000000000040e17232e38424a545c656c727c82898f92999a9c9e9f9f9f9f9e9c9a9895908b857f786e6960584e463d33291d140a000000000000000000000000000b151e283139424a50585f626b6f75797d7f828385858686858483817f7c79746f6a625f575049413931271f150b010000000000000000000000000000000000000000000000000a1724303d4956626c717f8b919e948f868079706b615f5d606b6f797f868f949f93887e716c6155493c3023160a00000000000000000000000000000000000c18232e39424a51535d606060606060605e54524c433a2f38424a505e5f6060605f5953504a423b332a251f19242f3a434c52545e606060606060605d53504a42382e23170c00000000000613202d394653606c7985929eabab9b8f82756c615a544e55626f7b8895a093867a6d6053565d656d7983909da6aca0958a7d7064554b4035291d10040000030e19242f3840474c4d53535353535251504d4a464540393028231c150c03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000406090e12141517191b1d1e1f1f2020201f1f1e1d1c1a18161312100c0705020000000000000000000000000000000000000000000000000000000000000000000000000000000613202c3945515d6779869293939393887b6e676d7880878f93999b9d9e9f9f9f9e9c9a99928e867e726d62595e686d7980878e92999a9c9e9f9f9f9e9d9a99938e877f746c655b50453b311e150b00000000131f2c3946525f6c7985929facada093877a6d6054473a2d2424242424242424303a44505a616e7b86929fa8aca0968d80736a60544b40342a1e150a0000000000000000000000000815212e3b4854616e7b8796a0acab988c7f7265564c4130261c0f06000008131e2b37434e586774808d9aa7ac9f93867a6d6154473a2e21140700000714212d3a4754606d7a8793a0ada6998c80747d83898c8f91929292918e8b86807a706c635b5e696e7b838a8e91929291908d86796c5f5346392c201300131f2c3946525f6c7985929facada093877a6d6054473a2d252525252525252623282c2d32383d434b515a616c727f8b939ea9b0a69e91847a6d60544b4034281c10040000000713202d3a4653606d78868686868686868686868686868686868686868686868686868686868a95a1b9ac9f9286868686868686867f7265584c3f3225190c00121e2b3845515e6b7884919eabaea194887b6e6155483b2e221508000000000000000000000000000000000000000000000000000000000000000000000000000000000a151e2b343f49525c646e737e858d92999da0a8a9a29f9d9c9b9c9d9fa2aaa7a09d99928e857e736e645c52493f332a1f140900000000000000000000020c162028343f4a545c666d777f8790949b9fa3aba7a3a2a1a1a2a4a8a7a7a09d97928b837b6f6a60584e453b2f261b1106000000000000000000000007121d273039434b545b606a6f767c8185898c8e90919292929291908e8b8985817c756e69605b534b433931271d12070000000000000000000000000000000000000000000000000815212d3945505a626d727f8b919c98928c847d756e69686d747c838c92989c918b7f726c625a5044392d201408000000000000000000000000000000000007121c2730394044465153535353535353524745413a31343f4a545c6a6c6c6c6c6c66605b544d453f363029201e28313a41454752535353535353535146443f3830261c1106000000000005121f2b3744505b6574818e9ba6aa9e938a7e716c62605857626f7b8895a093867a6d605c60686d77818e95a0aca79d9184786c605346392f24180c0000000008121d262f363c3f414646464646464544413d3a38342e271e18120b03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070c1013141a1e2121242628292a2b2c2c2d2c2c2c2b2a29272522201f1c1814120e0903000000000000000000000000000000000000000000000000000000000000000000000000000714202d3a4753606d79868686868686867a6d61666d737c82878b8e909192929291908d8a86817b716c625b51565e676d737c81868a8d909192929291908e8a87817c736d605b53493f33291f0c0300000000131f2c3946525f6c7985929facada093877a6d6054473a31313131313131313135414c56616c76828f98a3aea49a9184796d60584e42392e22180c030000000000000000000000000b1825313e4b5864717e8b97a8aea399887c6f6255493c3022140a000000020f1b26323d4a5763707d8a96a8afa4998a7d7064574a3d3124170700000714212d3a4754606d7a8793a0ada6998c80808a9095999c9e9f9f9f9d9b98928d857e736d63616e7b8590959b9e9f9f9e9c9286796c5f5346392c201300131f2c3946525f6c7985929facada093877a6d6054473a2d2119191919191919171c1f20272c30394045505a626d74818e97a1adada1968c7f73665c5145382c1f14090000000713202d3a4653606d798692929292929292929292929292929292929292929292929292929298a3aebaaea399929292929292928b7f7265584c3f3225190c00121e2b3845515e6b7884919eabaea194887b6e6155483b2e22150800000000000000000000000000000000000000000000000000000000000000000000000000000006111c26303d46515b646e74808a92979fa3a9a19e999792908f8f8f909298989d9fa7a39f97928a80736e635b51453b31261a0e0400000000000000000008131e28323a44505c666d78818c92999fa6a9a19e9a9795949596979b9fa2a9a9a29f9590857c6f6a60574d41382d22170b01000000000000000000040d18232e39434b555d666c737c83898e9298999b9d9e9f9f9f9f9e9c9b9897918d88827b736c655d554b43392f24180e05000000000000000000000000000000000000000000000005111d29343e48505a626d727f8c929c9f96918a827b73717a818891959f9d928c7f736d625a50483e33281c10040000000000000000000000000000000000000b151e272e34383a4446464646464646453a39352f2b3844505c66757979797979726c665f575146423b3229251f282f35393a4546464646464646443a38342e261e150a000000000000030f1b27333f4953626f7c89949ea9a59f92877e756f6a6764626f7b8895a093867a6d65676d717a818e939da7a99f958a7e71665b5044382b1d120700000000010b141d242b303334393939393939383734312d2c28231d150c07000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090e12181d1f20252a2d2e31333536373839393939393838373534322f2d2c2823211e1a140f0b0600000000000000000000000000000000000000000000000000000000000000000000000613202c3945515d67767979797979797976685e5c606a6f757a7e8183858586858483817e7a746e69615a51494c555c606a6f757a7e8183848586858483817e7b756f6a635b504941382d21170d0000000000131f2c3946525f6c7985929facada093877a6d6054473e3e3e3e3e3e3e3e3e3e3e45525d68717e8a949faaa89f93887d6f675d51463d30271d1006000000000000000000000000010e1a2734414d5a6774808d9aa7ac9f9286796d6053463a2d201307000000000a14212e3b4754616e7a8796a1adab998d8073665a4d402f24180c00000714212d3a4754606d7a8793a0adab9f92858d929da0a7aaa39f9e9e9fa2a39f97928a7f736d6975828e97a0a7aaacaaa29f9286796c5f5346392c201300131f2c3946525f6c7985929facada093877a6d6054473a2d21140c0c0c0c0c060c1012131b1e272e343e47515b606d7985919ea7b1a99e9185796d6053463b31251a0e0200000713202d3a4653606d7986939f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9fa3aab4bfb4aba39f9f9f9f9f9f988b7f7265584c3f3225190c00121e2b3845515e6b7884919eabaea194887b6e6155483b2e2215080000000000000000000000000000000000000000000000000000000000000000000000000000000c17232e38424f59626d74808d929ea1a9a39f97918c8885838282838385888b90959ea1a8a29f928d80736d62574d42362a20160a0000000000000000010d1924303a44505a606d78818e939fa3a9a29f97918d8a888788898b8e92979fa2aaa79f9792867c6f695e53493f33271d12070000000000000000010c161f2834404b555d676d78808790949b9fa2a9a29e9c9b9a9a9b9d9fa3a9a19e9a948f877f776d675d554b40352920170d0200000000000000000000000000000000000000000000000c17222d363f48515b636d737f8c929ca09e948f867f7d848d939aa09d938d80736d635b51483e362c22170b00000000000000000000000000000000000000030c151c23282c2d3739393939393939382d2c29242d3a4653606d7987868686867f786e69625b524d443e3530282024292c2d3839393939393939372d2c28231c150c03000000000000000b17222d384854606a75828f97a2aaa399928b827c7773716e6f7b8895a093867a6f7175797e848e939da5aba2979083786c60544a3f33281c0b010000000000020b12191f2326272d2d2d2d2d2c2b2a2724201f1c18120b030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080e151a1d24292c2d31363a3b3d4041434445454646464645444342403e3c3a38342e2d2a261f1b17110a0200000000000000000000000000000000000000000000000000000000000000000004101d2935404b555d6c6c6c6c6c6c6c6c6c5e5651586062686d71747678797978787674716d67615e5750483f434b51585f62686d71747678787978777674716e69625f5851443f382f261b0f050000000000131f2c3946525f6c7985929facada093877a6d60544b4b4b4b4b4b4b4b4b4b4b4b4f59606d7a85929ea6aca1968d80746b60554b40342b1e150b0000000000000000000000000004111d2935414c55697683909ca9aa9d908377665c5144382c1f1206000000000714202d3946525e687884919eaba99c8f827669554b4035291d1004000714212d3a4754606d7a8793a0adada29792979da49f9c97989291919298969a9f9f918c7f726e7b87939fa9b1a7a09d98929286796c5f5346392c201300131f2c3946525f6c7985929facada093877a6d6054473a2d21140700000000000003060a0c151d2328353f45515d67717e8b95a0acada1978b7e7164574d42362a1e120500000713202d3a4653606d798693a0acacacaca49f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9fa0a1a6aeb8b1a9a3a19f9f9f9f9f988b7f7265584c3f3225190c00121e2b3845515e6b7884919eabaea194887b6e6155483b2e221508000000000000000000000000000000000000000000000000000000000000000000000000000003101c28343f4a54606b727f8c929ca4aaa299928c84807b787675757677797b7f838a91969fa6a49c928b7f72695f53463d32271b0f030000000000000005111d2935414c56616c74808d939ea5a7a097928b85807d7b7b7b7c7e81858c9298a0a7a9a29891857b6e655b5044392f24180c000000000000000008131e28313a45515c676d79828d92999fa6a39f9a97928f8e8d8e8e9092989b9fa3a69e99928c82796d675d51453f32291e1408000000000000000000000000000000000000000000000006101b242d363f49515b636d73808d929da49e98928c8a91969fa49e938e81746e645b51493f362d241a10050000000000000000000000000000000000000000030b12181c1f202a2d2d2d2d2d2d2d2b21201d1f2b3844505c66717e879399928c827b726d615e565046413a3229241d20212b2d2d2d2d2d2d2d2a201f1c17110a03000000000000000006111b2c38434e58616e7b859298a2a9a39f948f8984807e7b7a7c8895a194877a7c7e82858b91969ea5aaa29992857b6e665b5042382d22170b0000000000000001080e13171a1a20202020201f1e1d1a171313100c070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d14191f262b2f35383a3e4246484a4c4e50515252535353525251504f4d4b494644403b3a36312b27221b140b070100000000000000000000000000000000000000000000000000000000000000010d18242f39434b515f606060606060605f524c454e54565e6165686a6b6c6c6c6b696764605d55534d453e363940454e53565d606467696b6c6c6c6b6a6764615e57534e4640332d261d140a000000000000131f2c3946525f6c7985929facada093877a6d605757575757575757575757575754606b74818e97a1ada59e9184796d60594f43392f22190c04000000000000000000000000000613202c3945515d677885929eaba89b8e827568544a4034281c10040000000005111e2a36414c566976838f9ca9ab9e918578675d5145382c1f1306000714212d3a4754606d7a8793a0adb3a9a29fa2a19e948f8b8786858485878a8d92979f93887e727e8b99a4afaba0959088858686796c5f5346392c201300131f2c3946525f6c7985929facada093877a6d6054473a2d211407000000000000000000030b1218232935414b55606c7883909da9b3a99d908377695e53463a2d21140600000713202d3a4653606d798693a5afaca29a979393939393939393939393939393939393939393959ca6b1a99f97949393939393938b7f7265584c3f3225190c00121e2b3845515e6b7884919eabaea194887b6e6155483b2e221508000000000000000000000000000000000000000000000000000000000000000000000000000006121f2c3844505c666f7c87929fa4aba29892878079736f6a6a696869656c6e72777d848f949fa6a49f92867b6e61584e43382b1f1306000000000000000713202d3946525d68717e8a929da5a79f9590857f7974706f6e6e6f7175797f869195a0a7aaa1978f82776c60554b4035291d1004000000000000010d19242f3a43505a606d79828f949fa3a7a099928e898583818181828386898e92999fa7a39f948f82796d605b51443b3025190e02000000000000000000000000000000000000000000000009121b242d373f49525b636e74808d929da5a39f99979ea1a69e948e81786c605c524940372d241b11080000000000000000000000000000000000000000000000070c1012131e202020202020201f1413111c28343f4a54616c717e87939a9490867f766e69615a524c443e352f281f191f202020202020201e1312100c0600000000000000000000000f1b27323d46525e69707d8692979ea5a69e9c95918d8a888786929fac978d87898b8e92979ea1a8a8a09892877e70695f544a3f2f261c110600000000000000000003070b0d0e13131313131312110e0a070604000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060e171e252a3137394045474a4d535457595b5c5d5e5f5f605f5f5f5e5d5c5a585553514a4846423b37332d261d18120c040000000000000000000000000000000000000000000000000000000000000007121d283139404553535353535353535346413c43474c5254585b5d5e5f5f5f5e5d5a5754514c46423b332c2e343c43474c5254575a5d5e5f5f5f5e5d5b5754524d47433c3427221b140b02000000000000131f2c3946525f6c7985929facada093877a6d646464646464646464646464646464666f7c88939fa9a89d93897d70675d51473d3129241e160e060000000000000000000000000714212d3a4754606d7a8797a2ada6998c807366594d402e23180c0000000000010d192530414e5a6774818d9aa7ada197867a6d6053473a2d201407000714212d3a4754606d7a8793a0adbcb3ada9a1979289827e7b797878797a7d81858d929992857b818e9babafa49990837c79797b6e6255483b2f22150800131f2c3946525f6c7985929facada093877a6d6054473a2d2114070000000000000000000000071118242f3a44505b65717e8b97a2adab9f95877b6e6154483b2e23170c00000713202d3a4653606d7986939ea8a69a908a86868686868686868686868686868686868686868a95a1ada3978d87868686868686867f7265584c3f3225190c00121e2b3845515e6b7884919eabaea194887b6e6155483b2e2215080000000000000000000000000000000000000000000000000000000000000000000000000003101c28343f4a54606d78839099a3afa39992867d736d67625f585c5c535b6061656c707a828f949fa9a2988f82766a6054473b2e22150800000000000005121e2a36424d57616d7a85929ea4a99f9590837b726d66646261626364676d727b839095a0aaa99f948b7e71675d5145382c1f140900000000000004111d2935414c56616c74818e949ea6a69f959087817c79767474747577797d818790959ea5a69e948e81756d62564c41362a1e140800000000000000000000000000000000000000000000000009121b252d374049525c646e74808d939da59f9f9f9fa79f948f82786d665b504a40372e251b1209000000000000000000000000000000000000000000000000000004060711131313131313131207060b17232e3842505a616c717e88939a98928b827b716c615e564f45413a312b22190f13131313131311070603000000000000000000000000000a16212a36424d57606b707d858e939d9fa7a7a09d9a9795989298a3ae9f979495989b9fa2a9aaa29f9691867d706c61574d42382d1d140a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a1117202930363c42474b515357575e61646668696a6b6c6c6c6c6c6b6b6a68676562605c5455534d46443f382f29241d160d05000000000000000000000000000000000000000000000000000000000000010c161f282f3539464646464646464646393632373a4146474b4e505252535251504e4b4745413a36312921232831373a4145474b4e505152535251504e4b4746423b37312a2217110a0200000000000000131f2c3946525f6c7985929facada093877a71717171717171717171717171717171717883909aa4ada1968e81746b60554e48443d35302820180f0600000000000000000000000915222f3c4855626f7c8895a9b3a4988b7e7165584b3e32251807000000000000081926333f4c5966727f8c99a5b2a995887b6e6255483b2f221508000714212d3a4754606d7a8793a0adbab9ada19792857d76716e696b6b676d70747a808792978e81828f9ca9ac9f93877b6f6a6c6e695f53473a2e21140800131f2c3946525f6c7985929facada093877a6d6054473a2d21140700000000000000000000000007131d27333f4953606d7985929fabb1a7988b7e7265544a3f34281c10030006121f2b3844505c6675818e96a1a4978a7e79797979797979797979797979797979797979788693a0aca194877b79797979797979726d62564a3e3125180b00121e2b3845515e6b7884919eabaea194887b6e6155483b2e2215080000000000000000000000000000000000000000000000000000000000000000000000000006121f2c3844505c66727f8b95a0aba89f92877d706b605d55534e4f4f495053555a61686d79829097a1a49f94897c6f6256493c2f2316090000000000000714212d3a46535e6974818d97a1ada19790837a6e69605c5455545556555c60696e7a839098a2aea69e9184796d6053473b31261a0e0200000000000613202c3945525d68717e8a939da6a89f948f837c746f6c6668676768666d70757c838f939ea7a69e938b7f72685e52463b3025190d0100000000000000000000000000000000000000000000000009131c252e37404a525c606c77818e93939393939393959082796d665c544a3f382e251c1309000000000000000000000000000000000000000000000000000000000000040606060606060605000006111c26303e48505a626c717f88939f9f948f857e756d686159514b433d342b21160a00060606060400000000000000000000000000000000040e1a25303b454f59606b707b818a90959a9ea1a8a6a4aaa39fa3aab4a8a3a1a2a4a8aba49f9c98928c847c706b615a50453b2f261c0b0200000000000000000000000306080909090909090909090909090909090909090909090909090909090909090909090909090909090909090806030000000000000000000000000000020b141c2228323b41464d53555d606468696e70737476777878797979797877767573716f6d6665615f57535049413d352f281f170f06000000000000000000000000000000000000000000000000000000000000040d161d24292c39393939393939392e2d2a272b3036393a3e4143454646454543413e3a39352f2a251f171820262b2f35393a3e4143454546454443413e3b3a36302b2620181006000000000000000000131f2c3946525f6c7985929facb1a4988b7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e808d95a0acab9e91847a6d67625f58544f45413a322a21181006000000000000000000000a1724303d4a5763707d8a96a3b0a3978a7d7064574a3d3124170a0000000000000b1825313e4b5864717e8b97a4b0a3968a7d7063574a3d3024170a000714212d3a4754606d7a8793a0adbcb1a79e92857c706b64615e57555d6063686d747e8692938e86929faca99d908376695f60625f574d42372b1e120600131f2c3946525f6c7985929facada093877a6d6054473a2d211407000000000000000000000000010b17222d3845515d6774818e9aabb5a89c8f8275665c5044382c1f12060003101c28343f4a54606d7a84919ea59f92867b6e666c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6d798693a0aca194877b6e6c6c6c6c6c6c65625b51463a2e22160900121e2b3845515e6b7884919eabaea194887b6e6155483b2e221508000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d7984919ea7ada1968d80736b6059514b474342423f44464850565d676d7a85929b9993908c8275685c4f4235291c0f020000000004101d2935404b55616e7b86929fa9a69e92857a6e685e57514b484848494b51575e686e7b86929fa9ada1968b7e7165574d42362a1e12050000000004111d2935414c55606d7a85929ea5aca0968f82796e6a62605b545a5b545c60636a6e78818f959faba59f92857a6e61564c41362a1e1105000000000000000000000000000000000000000000000000010a131c252e384044505b656c7881868686868686868683796d675d544a42382d261c130a010000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141e2c363e48505a626d727f8b919b9e97928a817a706b605d554e463d32271b0f030000000000000000000000000000000000000000000009141f29333d474f5960696e757d83888d9196979a9b9d9e9fa3aab4aaa29f9e9c9b9999938f8b857f796f6a615950483e33291d140a00000000000000000000040a0f121515161616161616161616161616161616161616161616161616161616161616161616161616161616161515120f0a030000000000000000000000020b141d262d333e444c52575f62676d7174787b7d7f81838485858686868585848382807e7c7976726e6964605b534f454039312921170f06000000000000000000000000000000000000000000000000000000000000040c12181d202d2d2d2d2d2d2d2d21201d1b1e252a2d2e32353738393939383634312d2c29241e1a140d0c151a1e24292c2d31343638393939383734312e2d2a251f1b150e0600000000000000000000131f2c3946525f6c7985929facb8a69b908b8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8d929da7b1a79a8e817b77746f6a636059524c443c332a22180f050000000000000000000b1825313e4b5864717e8b97a4afa295897c6f6256493c2f2316090000000000000a1723303d4a5663707d8996a3b0a4978b7e7164584b3e3125180b000714212d3a4754606d7a8793a0adb8ab9f958a7e716a605954524d4b5154565d616c707d8793989298a3aea79a8d817467575355534d453c31261a0e0200131f2c3946525f6c7985929facada093877a6d6054473a2d2114070000000000000000000000000006111b2935404b5564717d8a99a3afac9f9285796d6053463a2d20130700000b17232e3845525d68707d89939da2989083796d6059606060606060606060606060606d798693a0aca194877b6e616060606060585651493f34291e120600121e2b3845515e6b7884919eabaea194887b6e6155483b2e22150802020202020202020202020202020202020202020202020000000000000000000000000004101d2935404b5564717d8a96a1acaa9e9184796d60594f45403937312d3337393e444c555e68717e8b8e8a86837f7c6f6255483c2f221509000000000006131f2c3945515d6774818d99a3ab9f948a7e71685e564d45403c3b3b3c40454d565f69727f8b97a1ada99d908377695f53463a2d211407000000000613202c3945515d6773808d97a1ada69e91847a6d675f5853504a4e4e4b5153585f666d79839099a3ada2978d8174685e5246392d20140900000000000000000000000000000000000000000000000000010a131c2627333f49535b666c757979797979797979776d675d554b42392f261c140a0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c1a242d363f48505a626d727f8b919ba29f938e857d746d6760584e43382c1f130700000000000000000000000000000000000000000000030d17212b353d474f575e616b70767c8084878a8d8f90919298a3aea2989291908e8c8986837e79726d6660584f473e362c21170b02000000000000000000060e151b1f21222323232323232323232323232323232323232323232323232323232323232323232323232323232322211f1a150e06000000000000000000000a141d262f383f4450565e61696e74797d8184878a8c8e8f909192929392929291908f8d8b8886837f7b76706c656059514b433b332921170d0400000000000000000000000000000000000000000000000000000000000001070d101320202020202020201413110f13191e202125282a2b2c2c2c2b2a272421201d19130e0903030a0f13191d202124272a2b2c2c2c2b2a282421201e1a140f0a030000000000000000000000131f2c3946525f6c7985929facb8aca29b9897979797979797979797979797979797979a9da4aeb5a99d938e8784817c76706b605d564e463c342a21170b0200000000000000000c1926323f4c5965727f8c98a5aea195887b6e6255483b2f2215080000000000000916232f3c4956626f7c8995a2afa5988b7f7265584c3f3225190c000714212d3a4754606d7a8793a0adb6aa9d9083776c61584f4846424145474c525a616b73808d969fa3aab4a5998c7f7266594c4847423c332a2015090000131f2c3946525f6c7985929facada093877a6d6054473a2d21140700000000000000000000000000000c18242f3a4754606d7a86929facaea298887b6e6255483b2f221508000006111c2935414c56606b74818e96a1a0958d80746b60564c53535353535353535353606d798693a0aca194877b6e6154535353534c4a463f372d23180d0100121e2b3845515e6b7884919eabaea194887b6e6155483b2e22150f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0b0a08040000000000000000000613202c3945515d6775828f9ba8aea3988b7e71675d51473d352f2b2622272b2d323a434c56606d7883817e7a76736f6a5f53473b2e21150800000000000714202d3a4753606d7985929faba89c8f82766c61564c433b342e2e2f2f343b444d57606d7985919eababa095887b6e6155483b2e221508000000000714212d3a4754606d7a85929fa9aa9e94897d70685d554e46443f41414045464e545c676f7c87929faca99f92867a6e6154473c31261a0e0200000000000000000000000000000000000000000000000000010a1417222d38414a545b60686c6c6c6c6c6c6c6c6a605d554c433930271d140a0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121b242d363f48515b626d727f8c919ca39e97918a81796f6a6054483b2e2215090000000000000000000000000000000000000000000000050f19232b353d454d525961636a6f74787b7d8082838486929fac9f92868483827f7c7a76716d67605c544e463e352c231a0f0600000000000000000006101820262b2e2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2e2b2620181006000000000000000006111b262f38424a505a61686e747b81858a8e919697999b9c9d9e9f9f9f9f9f9e9e9d9b9a9898928f8c87827d78706b605d554d453b33291f160c0100000000000000000000000000000000000000000000000000000000000000010406131313131313131307070502080d111314181b1d1f1f201f1e1d1b181413110d08010000000001080d111314181b1d1e1f201f1e1d1b181414110e090200000000000000000000000000131f2c3946525f6c7985929facb8b4aca6a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a7a9aeaeafafa59d9a96918d88837d746d685f584e463c33291d140a00000000000000000d1a2733404d5a6673808d99a6ada194877a6e6154473b2e2114080000000000000815222f3b4855626e7b8895a1aea6998c807366594d4033261a0d000714212d3a4754606d7a8793a0adb3a9988b7f72655a50463d3a3635393a41465059606d7984919eabb4b2a5988b7f7265584c3f3a37312a21180e030000131f2c3946525f6c7985929facada093877a6d6054473a2d21140700000000000000000000000000000713202c3945525d687783909daab4aa978a7d7064574a3d3124170a0000000d19242f3a444f59606d7984919aa49f93887d70685d5245464646464646464653606d798693a0aca194877b6e6154484646463f3e3a342d251b11070000121e2b3845515e6b7884919eabaea194887b6e6155483b2e221b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b171714110c05000000000000000714202d3a4753606d7a86929facac9f92867a6d60554b403529241d1a171b1f2028313a44515c666d7775716d6866625f584e43372b1f12060000000004101c2834404b5564717e8b98a2aca096897d70635a50443b31282321222329323c44515c6673808c99aab1a7988b7e7265584b3f3225180800000005111e2a36424d5765727f8b98a2aea99c8f82756b60564c433c38332d2e34383c424b555f6a74818e9ba8aea3988c7f7266574d42372b1e120500000000000000000000000000000000000000000000000000000006111b262f38424a50535b60606060606060605d54514c433a31271e150b02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009121b242d363f49515b626d727f8c9193939393938e847c6f6256493c2f231609000000000000000000000000000000000000000000000000071119232b333b42464f55585f6267696e71737576787c8895a093867977767572706d6764605d55514b423d342c231a1108000000000000000000040e18222a31373a3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3a37312a22180e03000000000000040d17222d38414a545b606c717a81878d92989b9ea1a8a6a7a8a7a5a4a3a3a3a3a4a5a6a8a6aaa39f9c9a938f8a837d746d675e574d453b31281d13070000000000000000000000000000000000000000000000000000000000000000000006060606060606060000000000010507070b0e101213131212100e0b070604010000000000000000010406070b0e101212131211100e0b08070502000000000000000000000000000000131f2c3946525f6c7985929facb8b0a8a2a09f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9fa0a1a2a5a7aba8a09e9a949089817a6e6a5f584e453b2f261c1106000000000000000e1a2734414d5a6774808d9aa7ada093877a6d6054473a2d2114070000000000000815212e3b4854616e7b8794a1aea69a8d8073675a4d4034271a0d000714212d3a4754606d7a8793a0adada197877a6e6154473e342d2a292c30353e45515c67727f8c99a3aeb2a5988b7f7265584c3f322b2620180f06000000131f2c3946525f6c7985929facada093877a6d6054473a2d211407000000000000000000000000000004111d2935414c566875818e9ba8b2a5998c7f7266594c3f3326190c00000008131e28323d45515d67707d88939fa49a91847a6d60594f443a303939393a4653606d798693a0aca194877b6e6154483b393932312e29231b1309000000121e2b3845515e6b7884919eabaea194887b6e6155483b2e28282828282828282828282828282828282828282828282828282423211c1710080000000000000a1723303d4a5663707d8998a3aea89b8e8275675d51433a2f23181d1d1d1d1d161f2834404a545c606a6864615e5655534e463c32261b0f030000000006131f2c3845515c6775828f9caaaa9d9184776b6054483e32291f18151518202834404a54626f7b8898a2aea89b8e8175685b4e423025190d0100000714202d3a46525e697683909daaada196897d7063594f433a312b282223282c3039434e58626f7c8895a0acaa9d908477695f53463a2d211407000000000000000000000000000000000000000000000000000000000a141d262f383f44464e5353535353535353504745413a31281f150c030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009121b242d373f49515b636d737f86868686868686868174675a4e4134271b0e01000000000000000000000000000000000000000000000000071119202930363e44484e5355575e616467686a6f7b8895a093867a6d69686663605d5553514b454039302b221a1108000000000000000000000a15202a343c434748494949494949494949494949494949494949494949494949494949494949494949494949494949494847433c342a20150a0000000000010c161f27333f49535b666c747e858e92999fa2aaaba9a8a19e9c9a9897979696979798999c9e9fa4acaca49f9c95908981796e695f574d433a2f24180d040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929facb8a89e969393939393939393939393939393939393939393939495989b9ea1a9aaa69f9c938e847c6f6a5f574d42382d22170b000000000000000e1b2734414e5a6774818d9aa7ada093867a6d6053473a2d2014070000000000000814212e3b4754616e7a8794a1ada79a8d8174675a4e4134271b0e000714212d3a4754606d7a8793a0adab9e918578685e5246392c221e1d20242934404b55616e7a86929facb2a5988b7f7265584c3f32251a150e0600000000131f2c3946525f6c7985929facada093877a6d6054473a2d2114070000000000000000000000000000010d19242f404d596673808c99a6b3a79b8e8174685b4e4135281b0e000000010c16202935404b55606b74808d96a0a1968e81746b61564c4135292d2d3a4653606d798693a0aca194877b6e6154483b2e2d2525221e18110901000000121e2b3845515e6b7884919eabaea194887b6e6155483b35353535353535353535353535353535353535353535353535353531302d28221a120800000000000d1a2733404d5a6673808d99aab4aa978b7e7164554c4131282a2a2a2a2a2a2a2a2a232e39424a51535d5b5754524c4847433c342a20150a00000000000713202d3a4653606d7985929facab998c7f7366594f44362c20170d07070e18232e394653606c7985929fabaa9d9184776a564c41362a1d110500000814212e3b4754616e7b87959fabab9e9184786c6053463d31281f1c17181c1f27313c47535f6a7784919daaaca095887b6e6155483b2e22150600000000000000000000000000000000000000000000000000000000020b141d262d333839424646464646464646443a39352f281f160d0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009121b252d373f49515b636d737979797979797979746e64584c4033271a0d0100000000000000000000000000000000000000000000000000070e171f252a33383c4347484d5254575a5c626f7b8895a093867a6d605b595653514b47454039342e271e19100800000000000000000000030f1b26313c464e53555656565656565656565656565656565656565656565656565656565656565656565656565656565655534e463c31261a0f030000000007131d28313a44505b656c78808a92979fa3abaaa69f9c9896918f8d8b8a8a89898a8a8b8d8f91939a9c9fa4aca7a09d938e837b6e695f554b41352921160a000000000000000000050a0d0f101313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313100f0d0a050000000000000000000000000104060712131313130908060300000000000000000000000000131f2c3946525f6c7985929facb8a2968c87868686868686868686868686868686868686868787898b8e92979da0a7aba59d9691857c6f695e544a3f33281d12070000000000000e1b2834414e5b6774818e9aa7aca09386796d6053463a2d2013070000000000000714212e3a4754616d7a8794a0ada79a8e8174675b4e4134281b0e000714212d3a4754606d7a8793a0ada99c8f827669564d41362a1a12111319232f3946525e687683909da9b2a5988b7f7265584c3f32251909030000000000131f2c3946525f6c7985929facada093877a6d6054473a2d211407000000000000000000000000000000081824313e4b5764717e8a97a4b1a89c8f8275695c4f4236291c0f00000000040d18242f3a434f59606d79849199a39d938a7d70685e52463e32292d3a4653606d798693a0aca194877b6e6154483b2e21191816120d070000000000121e2b3845515e6b7884919eabaea194887b6e615548424242424242424242424242424242424242424242424242424242423e3c39332c241a100500000004101c2834404b546976828f9ca9aea398887b6f6255483c2f3737373737373737373737373039404446514e4b4746413c3b37322a261f180f06000000000a1723303d4a5663707d8998a2aea399897c706356493d32231a0e05000007121f2b3844505b6676838f9ca9ac9f928579685e5246392d20130700000b1824313e4b5764717e8a97a7b1a79a8e8174665b5044382b1f160f0b0c10151f2b37434e586773808d9aa6b1a7988b7e7165584b3e2d22170b0000000000000000000000000000000000000000000000000000000000020b141c22282b2d353939393939393939372d2c29241e160d04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009131b252d373f49515b63666c6c6c6c6c6c6c6c67645c53483c3024180b000000000000000000000000000000000000000000000000000000050d141a21282c31373a3c4246484a4d55626f7b88959f93867a6d60534c494745403a39352f28231d150c07000000000000000000000006121f2b37434e585f6262626262626262626262626262626262626262626262626262626262626262626262626262626262625f584e43372b1f1206000000010d18242f3a434f59606c77818d929fa2a9ada59e9b948f8b888482807f7e7d7d7d7d7e7e808284878b8f939a9ea6aca59d9590847b6e675d51453d32271b0f03000000000000030a1016191c1d20202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020201d1c1916100a03000000000000000001070d1113141f202020201515120f0a040000000000000000000000131f2c3946525f6c7985929facada093877a797979797979797979797979797979797979797a7b7c7e81858a90959fa3aba8a19792857b6e665b5044392e23180c0000000000000e1b2835414e5b6874818e9ba7aca09386796d6053463a2d2013070000000000000714212d3a4754606d7a8793a0ada79b8e8174685b4e4135281b0e000714212d3a4754606d7a8793a0ada89b8e8175685b4e423025190f0408121d2a36414c566774818d9aa7b2a5988b7f7265584c3f3225190c000000000000131f2c3946525f6c7985929facada093877a6d6054473a2d2114070000000000000000000000000000000a1724303d4a5763707d8a96a3b0a99c908276695d5043362a1d10000000000007131d28313d45515d676f7c87929fa59e91857a6d615a50443b302d3a4653606d798693a0aca194877b6e6154483b2e211508090601000000000000121e2b3845515e6b7884919eabaea194887b6e61554e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4e4a49453e362c22170c00000006131f2c3845515c667884919eabac9f9286796d6053464444444444444444444444444444444444444444444444444444443b3a36312a21180e030000000d192633404c5966737f8c99aaac9f92867a6d6053473a2d201407000000030f1c28333f4a546874818e9ba7aea298877a6d6154473a2e21140700010e1b2834414e5b6774818e9aa7b4aa978a7e7164544a3f3328190d040000040d1b26323d4a5764707d8a97aab4a79b8e81746853493f33271b0f030000000000000000000000000000000000000000000000000000000000020a11171c1f20282d2d2d2d2d2d2d2d2a21201d19130c040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000109131b252e37404951575960606060606060605a58534a41362b2014080000000000000000000000000000000000000000000000000000000002090e161c20262b2e30363a3b3e4855626f7b88939393867a6d6053473d3a39352f2c29241d18120b030000000000000000000000000815212e3a47535f6a6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6a5f53473a2e21150800000004111d2935414b55616b73808d939da4ada9a29f938e88827e7b78757472717070707071727375777b7e82878f939fa2aaa7a0969183796d60594f43382c1f14090000000000040d151c212629292d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d292926211c150d04000000000000040c13181d20202b2d2d2d2d22211f1b150e0600000000000000000000131f2c3946525f6c7985929facada093877a6d6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c666c6d6e6f7274797e838c9299a3aba9a1978f82786c60554b4034281c100400000000000e1b2834414e5b6774818e9aa7aca09386796d6053463a2d2013070000000000000714212e3a4754616d7a8794a0ada79a8e8174675b4e4134281b0e000714212d3a4754606d7a8793a0ada79a8d8174675a4e4134271b0801010d1925303e4b5864717e8b97a4b1a5988b7f7265584c3f3225190c000000000000131f2c3946525f6c7985929facada093877a6d6054473a2d2114070000000000000000000000000000000a1623303d495663707c8996a3afaa9d9083776a5d5044372a1d110000000000010c161f2935404b55606a73808d95a0a1978e81756c61564c41362d3a4653606d798693a0aca194877b6e6154483b2e211508000000000000000000121e2b3845515e6b7884919eabaea194887b6e615b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b575550483e33281c110400000713202d3a4653606d7986939facaa9d908477665c50505050505050505050505050505050505050505050505050505050504846423b332a1f1409000004101d2935404b556975828f9ca8aa9d918477675d5145392c201306000000000b17222d414d5a6774808d9aa7b4aa94887b6e6155483b2e2215080005111e2a36414c566a7683909da9aea298887b6e6155483b2d221708000000000a15212e3b4854616e7b8798a2aeaa9d908377655b5044372b1f120500000000000000000000000000000000000000000000000000000000000000060b0f12131b20202020202020201d1413110d08010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010a131c252e3740464b4c53535353535353534e4c4841382f251a0f03000000000000000000000000000000000000000000000000000000000000050b10151b1f21252a2d2f3c4855626f7c8686868686796d6053473a2d2c2924201d18120c0700000000000000000000000000000915222f3c4855626f7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c6f6255483c2f2215090000000613202c3945515d67707d8a929ca5aea9a197928a817c76726e69696765646463636464656669696e72767c828a9298a2aaa8a0958e81746b6054483c31261a0e02000000030d161f262d32353639393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393635322d261f160d0300000000040d161d24292c2d38393939392f2e2b2620181006000000000000000000131f2c3946525f6c7985929facada093877a6d606060606060606060606060606060605b6060616265666d71787f879299a3afa99f948b7f72675c5145382c1f130700000000000e1b2734414e5a6774818d9aa7ada093867a6d6053473a2d2014070000000000000814212e3b4754616e7a8794a1ada79a8d8174675a4e4134271b0e000714212d3a4754606d7a8793a0ada69a8d8073675a4d4034271a0d0100081724303d4a5763707d8a96a3b0a5988b7f7265584c3f3225190c000000000000131f2c3946525f6c7985929facada093877a6d6054473a2d2114070000000000000000000000000000000916222f3c4955626f7c8895a2afaa9e9184776b5e5144382b1e11000000000000040d18242f39434e58606d79839099a39e938a7e71685e52463e333a4653606d798693a0aca194877b6e6154483b2e211508000000000000000000121e2b3845515e6b7884919eabaea194887b6e6868686868686868686868686868686868686868686868686868686868686864615a5045392d21140800000815212e3b4854616e7b879aa4afa99c90837669545d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d55534d453b31261a0e020006131f2c3845515d677884919eaba99d9083766a554b4035291d110400000000061a2633404d596673808c99a6aea295887b6f6255483c2f221509000713202d3946525e687885929fabac9f9285796c605346392d201306000000000714212d3a46535e697985929facac9f9285796c605346392d2013060000000000000000000000000000000000000000000000000000000000000000000306060f131313131313131311070604010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010a131c252e353b3e40464646464646464641403c362f261d1308000000000000000000000000000000000000000000000000000000000000000000040a0f12151a1e212e3a47535f6a76797979797976675c5145382c201d1813100d0701000000000000000000000000000000111e2a3744515d6a77848989898989898989898989898989898989898989898989898989898989898989898989898989898983766a5d5043372a1d10000004101d2935404b55606d7984919ea4aeaaa19791857e756f6a65615f575a58575756565757585a565e61656a6f757e869298a2aea89e93897c6f63574d42372b1e12050000000a151f2831383e4243464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464643423e3831281f150a000000010c161f282f35393a45464646463c3b37322a22180e040000000000000000131f2c3946525f6c7985929facada093877a6d6054535353535353535353535353534a5053545456545c60666d737e87929fa7b0a69e9185796d6053463a2f24180d01000000000e1a2734414d5a6774808d9aa7ada093877a6d6054473a2d2114070000000000000815212e3b4854616e7b8794a1aea79a8d8074675a4d4134271a0e000714212d3a4754606d7a8793a0ada69a8d8073675a4d4034271a0d0100091623303c4956636f7c8996a2afa5988b7f7265584c3f3225190c000000000000131f2c3946525f6c7985929facada093877a6d6054473a2d2114070000000000000000000000000000000916222f3c4955626f7c8895a2afab9e9184786b5e5145382b1e120000000000000007121d27313d45515c666f7c87929fa59e92857a6e615a50453b3a4653606d798693a0aca194877b6e6154483b2e211508000000000000000000121e2b3845515e6b7884919eabaea194887b7575757575757575757575757575757575757575757575757575757575757575716c6155493c3023170a00000916232f3c4956626f7c8995acb6a89c8f82756a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a615f574d42362a1e1205000714202d3a4753606d7a86939faca89c8f8275695c4f422f24180d01000000000d1a2733404d5a6673808d99a6afa295887c6f6255493c2f221609000714212e3a4754616d7a8798a2aeaa9d918477665b5044382b1f12060000000005121e2a36424d576a7784919daaaea298877a6e6154473b2e2114080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010a131c232a2f323339393939393939393433302b251d140b0100000000000000000000000000000000000000000000000000000000000000000000000306090e121f2b37434e585f626c6c6c6c6c6c5c554b4034291c110d0704010000000000000000000000000000000000111e2a3744515d6a77849095959595959595959595959595959595959595959595959595959595959595959595959595959083766a5d5043372a1d10000006131f2c3945515d67737f8c96a1adaea29891857b716c625f5855534d4d4c4b4a4a4a4a4b4b4d4d5254585f626c707c86929fa7afa59c8f8276695f53463a2d211407000005101c26313a42494e505353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353504e49423a31261c1005000007131d28313a40454752535353534847433c342a20150a0000000000000000131f2c3946525f6c7985929facada093877a6d6054474646464646464646464646463f44464748494b51545c606c727e8b959fabada1978b7e7165554b4135291d1104000000000d1a2733404d5a6673808d99a6ada194877a6e6154473b2e2114080000000000000815222f3b4855626e7b8895a1aea6998d8073665a4d4033271a0d000714212d3a4754606d7a8793a0ada69a8d8073675a4d4034271a0d01000815222f3b4855626e7b8895a1aea5988b7f7265584c3f3225190c000000000000131f2c3946525f6c7985929facada093877a6d6054473a2d2114070000000000000000000000000000000916232f3c4956626f7c8995a2afaa9d9183776a5e5144372b1e1100000000000000010b151f2834404b545f6a737f8c959fa1978f82756c62574d423a4653606d798693a0aca194877b6e6154483b2e211508000000000000000000121e2b3845515e6b7884919eabb5a89b8f8281818181818181818181818181818181818181818181818181818181818181817e7164574a3e3124170b00000a1623303d495663707c8996a3afa89b8e8177777777777777777777777777777777777777777777777777777777777777776e695f53463a2d211407000915222f3c4855626f7b889aa4afa89b8e8275685b4f422d22170b00000000000e1b2834414e5b6774818e9aa7b4ab95887b6e6255483b2f221508000915222f3c4855626f7b8895aab4a99c8f837669544a3f33281c0f0300000000020e1a2531434f5c6976828f9ca9b4aa95887b6f6255483c2f2215090000000000000000000000000000000000000000000000000000000000030607090b0d0f1111121313121211100f0d0a080705020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010a12191e2325262d2d2d2d2d2d2d2d272724201a130b02000000000000000000000000000000000000000000000000000000000000000000000000000000030f1b26313c464e535560606060605f514b43392f23180c010000000000000000000000000000000000000000111e2a3744515d6a7784909da2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a29d9083766a5d5043372a1d1000000714202d3a4753606d7985929ea8b1a79f92867c6f69615a534e484642413f3e3d3d3d3d3e3f404246474e535a616a717e8b959fabac9f93877b6e6155483b2e22150800000a16212d38424c545a5c60606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060605c5a544c42382d21160a00010d18242f3a434b51535e6060606055534e463c32261b0f0400000000000000131f2c3946525f6c7985929facada093877a6d6054473a393939393939393939392d3338393a3b3c40454a505a606c7883909da9b3a99d908376675d5145392c201306000000000c1926333f4c5966727f8c99a5aea195887b6e6255483b2f2215080000000000000916222f3c4955626f7c8895a2afa5988c7f7265594c3f3226190c000714212d3a4754606d7a8793a0ada69a8d8073675a4d4034271a0d01000815222e3b4855616e7b8894a1aea5988b7f7265584c3f3225190c000000000000131f2c3946525f6c7985929facada093877a6d6054473a2d2114070000000000000000000000000000000a1623303d495663707c8996a3afaa9d9083776a5d5044372a1d110000000000000000030d18232e39424e58606d78839098a39e948b7e71695e52463f4653606d798693a0aca194877b6e6154483b2e211508000000000000000000121e2b3845515e6b7884919eabb7aa9e938f8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8e8c807366594d4033261a0d00000a1724303d4a5763707d8a96a3b0ab9e928583838383838383838383838383838383838383838383838383838383838383837b6e6155483b2e221508000a1724303d4a5763707d8a96acb6a89c8f827569544a3f33281c0f0300000004111d2935414c566875828e9ba8aea399877a6e6154473b2e211408000a1723303d4a5663707d8996a3b0a89b8e8275685b4f422d22170b000000000000091c2835424f5b6875828e9ba8b0a396897d7063564a3d3023170a000000000000000000000000000000000000000000000000000104060b10121315171a1c1d1e1f1f201f1f1e1d1b19171514120e09060300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070d1216191920202020202020201b1a18140f080100000000000000000000000000000000000000000000000000000000000000000000000000000000000a15202a343c43474853535353535345403931271d1207000000000000000000000000000000000000000000111e2a3744515d6a7784909d9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9d9083766a5d5043372a1d100004101c2834404b5464717e8a97a2acaca0958b7e726a5f575047433c3a3631323131303031313230363a3c43475058616c7683909da9afa49a8c7f7265594c3f3226190700000d1926323e49545e66696c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c69665e54493e3226190d0004111d2935404b555d606b6c6c6c6c625f584e43372b20150a00000000000000131f2c3946525f6c7985929facada093877a6d6054473a2d2d2d2d2d2d2d2d2d2d22282b2d2d2e2e34383f44505b65707d8997a2adac9f92867a6d6054473a2d211407000000000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f2316090000000000000a1623303d495663707c8996a3afa4988b7e7165584b3e3225180b000714212d3a4754606d7a8793a0ada69a8d8073675a4d4034271a0d01000815222e3b4855616e7b8894a1aea5988b7f7265584c3f3225190c000000000000131f2c3946525f6c7985929facada093877a6d6054473a2d2114070000000000000000000000000000000b1824313e4b5764717e8a97a4b1a99c8f8276695c504336291d1000000000000000000007121d27303c44505c666f7c86929fa69f92857b6e615b51454653606d798693a0aca194877b6e6154483b2e211508000000000000000000121e2b3845515e6b7884919eabb7afa59e9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b9b998c807366594d4033261a0d00000a1724313d4a5764707d8a97a3b0ada1979290909090909090909090909090909090909090909090909090909090909090887b6e6255483b2f221508000b1825313e4b5864717e8b97a4b1a99d908376665b5044382b1f130a0603060a13202c3945525d687784919daaac9f9286796c605346392d201306000a1724313d4a5764707d8a97a3b0a79a8e8174675b4e4134281b060000000000010e1b2834414e5b6774818e9aa7b0a3978a7d7064574a3d3124170a000000000000000000000000000000000000000000000001070d1113171c1f20222426292a2b2b2c2c2c2b2b2a28262422211e1a1312100c0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002060a0c0d13131313131313130e0d0b080300000000000000000000000000000000000000000000000000000000000000000000000000000000000000030e18222a31373a3c46464646464638342f271f150b01000000000000000000000000000000000000000000111e2a3744515d6a77839093939393939393939393939393939393939393939393939393939393939393939393939393939083766a5d5043372a1d100006131f2c3845515c6675828f9a9c9fa29d9083786d60584e453e37322d2a262524242323242425252a2d32373e46505a64717e8b97aab3ac9c8f8275695c4f422f24180c00000f1c2935424e5a66707679797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797670665a4e4235291c0f000613202c3945515d676d78797979796f6a5f53473d32271b0f00000000000000131f2c3946525f6c7985929facada093877a6d6054473a2d212020202020202020171c1f20212123282e343f4953606d7985929eabafa3998a7d7063574a3d3024170a000000000b1724313e4a5764717d8a97a4b0a3968a7d7063574a3d3024170a0000000000000b1724313e4a5764717d8a97a4b0a3978a7d7064574a3d3124170a000714212d3a4754606d7a8793a0ada69a8d8073675a4d4034271a0d01000815222e3b4855616e7b8894a1aea5988b7f7265584c3f3225190c000000000000131f2c3946525f6c7985929facada093877a6d6054473a2d2114070000000000000000000000000000000c1926333f4c5966727f8c99a5b2a79b8e8174685b4e4135281b0e000000000000000000000b151e28343f4a545f6a727f8c949fa2978f82766d62574d4653606d798693a0aca194877b6e6154483b2e211508000000000000000000121e2b3845515e6b7884919eabb7b8afaaa8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a6998c807366594d4033261a0d00000a1724313d4a5764707d8a97a3b0b3a9a19e9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d94887b6e6155483b2e221508000c1926323f4c5965727f8c98a5b2ab9e9285796c6053463a30241b14121012141c26303a4754606d7a86939facaa9d918477655b5044372b1f1205000b1824313e4b5764717e8a97a4b1a79a8d8174675a4e4134271b0e0100000000010e1b2734414e5a6774818d9aa7b0a4978a7d7164574a3e3124170b00000000000000000000000000000000000000000003090e13181d2023282b2d2f3133353737383939393837373533312e2d2a26201f1c17110d0802000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006101820262b2e2f3939393939392c29231d150d0300000000000000000000000000000000000000000000111e2a3744515d6a77838686868686868686868686868686868686868686868686868686868686868686868686868686868683766a5d5043372a1d10000713202d3a4653606d79868b8d909298988a7e71665c50463c332b26211e1a1918171717171818191e20262b343e4754616e7b8798a2aeaa9e9184776b554b4035291d100400101d293643505c69768386868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868276695c504336291d10000714202d3a4753606d7a85868686877c6f62584e43372b1d1207000000000000131f2c3946525f6c7985929facada093877a6d6054473a2d2114131313131313130b0f12131415181c232d3844505c6675828e9ba8b5ab998c7f7266594c3f3326190c000000000916232f3c4956626f7c8995aab4a4978b7e7164584b3e3125180b0000000000000c1925323f4c5865727f8b98a5b4aa95887c6f6255493c2f221609000714212d3a4754606d7a8793a0ada69a8d8073675a4d4034271a0d01000815222e3b4855616e7b8894a1aea5988b7f7265584c3f3225190c000000000000131f2c3946525f6c7985929facada093877a6d6054473a2d211407000000000000000000000000000004101c2934404b556774818e9aa7b3a6998c807366594d4033261a0d00000000000000000000030c17232e38424e58606c78839098a29f948b7f72695f544a53606d798693a0aca194877b6e6154483b2e211508000000000000000000121e2b3845515e6b7884919eabb7b1a9a3a19f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f998c807366594d4033261a0d00000a1723303d4a5663707d8996a3b0b8b0aba99f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9fa9aaaaaaaaaa94877a6e6154473b2e211408000d1a2733404d5a6673808d99a6b3ada297887c6f62564c41352d26201f1c1f20262e38424e5864707d8a9aa4afa89b8e81756853493f33271b0f03000b1825313e4b5864717e8b97a4b1a79a8d8074675a4d4134271a0e0100000000010e1a2734414d5a6774808d9aa7b1a4978b7e7164584b3e3125180b00000000000000000000000000000000000000040a0f151a1d24292c2e34383a3c3e404244444546464545444342403d3b3a36312d2c28231c19130d08020000000000000000000000000000000000000000000000000000000000000000000000000000000000040607090c0e1011121313131211100f0d0b0807050200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060e151b1f21222d2d2d2d2d2d1f1c18120b030000000000000000000000000000000000000000000000101d2936424f5b677177797979797979797979797979797979797979797979797979797979797979797979797979797979797671665b4e4236291c10000613202d394653606c777c7e808385888b867a6d60544a3f342a211b15120e090b0a0a0a0a0b090e11151b222d3a46525e697885929fabac9f928679675d5145392c1f130600101d293643505c6976838f9393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393938f8276695c504336291d10000613202c3945515d67717e8b959a8f82756a605447392e23180c000000000000131f2c3946525f6c7985929facada093877a6d6054473a2d2114070606060606000003060607070c111b28343f4a546673808d99a6b3a69a8d8073675a4d4034271a0d010000000814212e3b4754616e7a8798a3aea6998c7f7366594c40332619090000000000000d1a2733404d5a6673808d99a6aea298877a6d6154473a2e211407000714212d3a4754606d7a8793a0ada69a8d8073675a4d4034271a0d01000815222e3b4855616e7b8894a1aea5988b7f7265584c3f3225190c000000000000131f2c3946525f6c7985929facada093877a6d6054473a2d211407000000000000000000000000000006131f2c3845515c677783909daab4aa988b7e7165584b3e3225180b000000000000000000000006111c26303c44505b666e7b86929fa69f92867b6e665b5053606d798693a0aca194877b6e6154483b2e211508000000000000000000121e2b3845515e6b7884919eabb7a99f9894939393939393939393939393939393939393939393939393939393939393938c807366594d4033261a0d0000091623303c4956636f7c8996a2afb0a69f9c9393939393939393939393939393939393939393939393939c9ea6b0aea398877a6d6054473a2d211407000e1a2734414d5a6774808d9aa7b3b3a9998c8073685d52463f382f2d2b282b2d30383f4a545f6a76828f9cacb0a6988b7e7265584b3f2d22170b00000b1824313e4b5764717e8a97a4b1a79a8d8174675a4e4134271b0e0100000000010e1b2734414e5a6774818d9aa7b1a4978a7e7164574b3e3124180b000000000000000000000000000000000000070c151b20262b2f35393a3f4446484a4d4f5051525253525251504e4c4a4846423d3a38342e29251e19140d050000000000000000000000000000000000000000000000000000000000000000000000000004070c10121316191b1d1e1f1f201f1f1e1d1b19171414110e0806030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030a0f12151520202020202013100c07010000000000000000000000000000000000000000000000000e1a27333f4a555f676a6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6a665f554a3e32261a0d0005121f2b3744505b656c6f717476797b7e7e71675d5142382e22180f0a0502000000000000000002050b111e2a36424d566b7884919eabafa399867a6d6053473a2d20140700101d293643505c6976838f918b86868686868686868686868686868686868686868686868686868686868686868686868686868686868686868b918f8376695c504336291d100004111d2935404b55606d7883909d94897c6f62544b4034281c10040000000000131f2c3946525f6c7985929facada093877a6d6054473a2d211407000000000000000000000000000b17232e3f4c5965727f8c98a5b2a79a8e8174675b4e4134281b0e010000000613202d394653606c7985929faca79b8e8174685b4e4131261a0e020000000003101c28343f4a546875828e9ba8ac9f928579685e5246392d201307000714212d3a4754606d7a8793a0ada69a8d8073675a4d4034271a0d01000815222e3b4855616e7b8894a1aea5988b7f7265584c3f3225190c000000000000131f2c3946525f6c7985929facada093877a6d6054473a2d21140700000000000000000000000000000714202d3a4753606d7986929facaea298887c6f6255493c2f2216090000000000000000000000000a151e28333f4a545f69727f8b949fa2989082786c605753606d798693a0aca194877b6e6154483b2e211508000000000000000000121e2b3845515e6b7884919eabb7a3988d888686868686868686868686868686868686868686868686868686868686868686807366594d4033261a0d00000815222f3b4855626e7b8895a9b3ab9f948f8686868686868686868686868686868686868686868686868f949eaaac9f928579675d5145392c201306000e1b2734414e5a6774818d9aa7b4b8ab9f92857a6d615b5049413c393834383a3d424a505c666e7c87939facab9f94877b6e6154483b2e21150600000a1724313d4a5764707d8a97a3b0a79a8e8174675b4e4134281b0e0100000000010e1b2834414e5b6774818e9aa7b0a3978a7d7064574a3d3124170a00000000000000000000000000000000030b121820262b31373a4145474a50535557595c5d5e5e5f5f5f5e5e5d5b595755534d4946443f3835302a251e170e0802000000000000000000000000000000000000000000000000000000000000000001070c1013181c1f20232527292b2b2c2d2c2c2b2a28262421201e1915120f0a0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000306080913131313131306040000000000000000000000000000000000000000000000000000000a16222e39434d555b5d606060606060606060606060606060606060606060606060606060606060606060606060606060605d5b554d43382d22160a00030f1b27333f49535b60626467666c6e71716c62554b4030261c100600000000000000010507090e12161c222c3845515c677885919eabaea399877a6d6054473a2d21140700101d293643505c6976838f8b7f79797979797979797979797979797979797979797979797979797979797979797979797979797979797979797f8b8f8376695c504336291d1000010d18242f3a44505c66717e8a979a8e8174665c5145382c1f13060000000000131f2c3946525f6c7985929facada093877a6d6054473a2d21140700000000000000000000000104091925323f4c5865727f8b98a5b2a89b8e8175685b4e4235281b0f0200000005121f2b3744505b657783909daaa99c90837669574d42362a1e12050000000006121f2c3844505c667783909daaa99d9083766a564c4135291d1105000714212d3a4754606d7a8793a0ada69a8d8073675a4d4034271a0d01000815222e3b4855616e7b8894a1aea5988b7f7265584c3f3225190c000000000000131f2c3946525f6c7985929facada093877a6d6054473a2d2114070000000000000000000000000007101d2935404b5563707d8a99a3aeac9f9285796d6053463a2d201307000000000000000000000000030c17222d38424d57606c77828f98a29f948c7f726a5f54606d798693a0aca194877b6e6154483b2e211508000000000000000000121e2b3845515e6b7884919eabaea194887b7979797979797979797979797979797979797979797979797979797979797979736e63574b3f3226190c00000714212d3a4754606d7a8797a2ada99c8f82797979797979797979797979797979797979797979797979828f9ca9ab9e9184786b554b4135291d1104000e1b2834414e5b6774818e9aa7b4b3ada2988d81746d605b534e4846443f4446484e545c606d7883909aa4afa79c8f8376695e52463a2d20140700000a1723303d4a5663707d8996a3b0a89b8e8175685b4e4235281b090000000000020f1b2835424e5b6875818e9ba8b0a3968a7d7063574a3d3024170a000000000000000000000000000000070c151d232831373c42474b5154545c60626466686a6a6b6c6c6c6b6a6a686664615f575653504a46413a3630292019130d05000000000000000000000000000000000000000000000000000000000003090e12181d1f23282c2d3032343638383939393838373533312e2d2a25211f1b150f0b0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c27313b434a4f5153535353535353535353535353535353535353535353535353535353535353535353535353535353504e4a433a31271c110500000b17222d38414950535558545b60626465625a50433a2f1e140a00000000020507080d1113141a1e21272c343c4653606d7986929facac9f928679675d5145392c20130600101d293643505c6976838f8b7f726c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c727f8b8f8376695c504336291d10000007131d28343f4a54606d7985929e9285796d6053463a2d2013070000000000131f2c3946525f6c7985929facada093877a6d6054473a2d21140c0c0c0c0c0c0c0c0c0c0c070d10151c28333f4a546673808c99a6b3a79a8e8174675b4e4134281b0e01000000030f1b27333f49536874818e9ba7ab9f928578695f53463a2d211407000000000713202d3a4653606d7986929faca79a8e8174675b4e413025190d01000714212d3a4754606d7a8793a0ada69a8d8073675a4d4034271a0d01000815222e3b4855616e7b8894a1aea5988b7f7265584c3f3225190c000000000000131f2c3946525f6c7985929facada093877a6d6054473a2d211407000000000000000000000000050e19222c3945515d6774818e9aabb4a99c908376665c5044382c1f12060000000000000000000000000006111c262f3c44505b656e7b86929fa69f92867b6e665c606d798693a0aca194877b6e6154483b2e211508000000000000000000121e2b3845515e6b7884919eabaea194887b6e6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c66635c52473b2f23170a00000613202c3945515d677885929eabaa9d9184776c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c667784919eaaa99c8f8376695c50432f24180d01000e1b2834414e5b6774818e9aa7b3a9a19e9e928b7f726c655f585553504a5053555860666d74808d959facaba0958a7d7164574d42362a1e120500000916222f3c4955626f7c8895aab4a99c8f8276695c4f4330251a0e0200000000030f1c2936424f5c6975828f9ca8b5ab95897c6f6256493c2f23160900000000000000000000000000000810191e272e343c43474d53555d6064666d6f7173757777787979787877767573706e696763605c54524c46413b322a251e170e06000000000000000000000000000000000000000000000000000001070c141a1d24292c2e34383a3c3f4143444546464645444342403e3b3936302e2b261f1c17110a020000000000000000000000000000000000000000000000000000000000000000000000000000040607090c0e1011121313131211100f0d0b0807050200000000000000000000000000000000000000000000000000000b151f2931393f42444646464646464646464646464646464646464646464646464646464646464646464646464646464643423e3831281f150a00000006111b262f383f4446484b4a50535558585650483f31281d0c02030506090e121415191d2021262b2d33383e464e58636f7c8999a3afab9e9185786b554b4135291d110400101d293643505c6976838f8b7f72656060606060606060606060606060606060606060606060606060606060606060606060606060606065727f8b8f8376695c504336291d100000010b17232e3845515c6673808d99978a7d7063574a3d302417070000000000131f2c3946525f6c7985929facada093877a6d6054473a2d211919191919191919191919191a181d20262b3844505b6674818e9ba7b3a6998d8073665a4d4033271a0d00000000000b17222d3f4c5965727f8c98aaada297887b6e6155483b2e23180c000000000915222f3c4855626f7b8898a3aea9988b7e7265584b3f3225180800000714212d3a4754606d7a8793a0ada69a8d8073675a4d4034271a0d01000815222e3b4855616e7b8894a1aea5988b7f7265584c3f3225190c000000000000131f2c3946525f6c7985929facada093877a6d6054473a2d2114070000000000000000000000060e17202935404b55606d7985929fabb1a7988c7f7265544a3f34281c100300000000000000000000000000000a141d27333f49535e69717e8b949ea3989083786d60606d798693a0aca194877b6e6154483b2e211508000000000000000000121e2b3845515e6b7884919eabaea194887b6e616060606060606060606060606060606060606060606060606060606060605957524a40352a1f1307000004111d2935414c55697683909ca9ab9f928578695f606060606060606060606060606060606060606d7986929faca79a8d8174675a4e4134271b0700000e1b2734414e5a6774818d9aa7ada19792919692877f776f6a6562605b545c6062656a6f78808d929ca7afa4999083786c6053463b30251a0e0200000814212e3b4754616e7b8798a3aeaa9d9084776a574d42362a1e12050000000005111d2935414c566a7783909daaafa399877b6e6154483b2e2115080000000000000000000000000009111a222a303940454e53575f62676d7175797b7d8082838485858685858483817f7d7b7874706d66615e56524c443e36302920180f07000000000000000000000000000000000000000000000000030b12181f252a2f35393a404446494c4e5051525253525251504e4c4a4746413c3a37312b28221c140b070000000000000000000000000000000000000000000000000000000000000000000004070c10121316191b1d1e1f1f201f1f1e1d1b19171414110e0806030000000000000000000000000000000000000000000000040d171f272e333637393939393939393939393939393939393939393939393939393939393939393939393939393939393736322d271f160d03000000000a141d262d3337393c3e3f4446484b4b4a453f362d1f160c0b0f1213151a1e2121252a2d2e31373a3d44485058606a74818e9babb5a99d9083766a5d50432f24180d0100101d293643505c6976838f8b7f72655853535353535353535353535353535353535353535353535353535353535353535353535353535865727f8b8f8376695c504336291d1000000006111c2834404b54626f7c88979a8d8073675a4d402e23180c0000000000131f2c3946525f6c7985929facada093877a6d6054473a2d252525252525252525252525262624292c31373f4a54606c7985919eabb3a9988b7e7165584b3e3225180b00000000000616232f3c4956626f7c8998a2aea9978b7e7164544b4034281c1004000004101d2935404b5565727e8b98aaada197887c6f6255483c2f22150900000714212d3a4754606d7a8793a0ada69a8d8073675a4d4034271a0d01000815222e3b4855616e7b8894a1aea5988b7f7265584c3f3225190c000000000000131f2c3946525f6c7985929facada093877a6d6054473a2d211407000000000000000000030a0f182029323b45515d67727e8b97a2adab9f95887b6e6155483b2e23170c000000000000000000000000000000020b17222d38414d57626c75828f97a29f958c7f736a606d798693a0aca194877b6e6154483b2e211508000000000000000000121e2b3845515e6b7884919eabaea194887b6e615553535353535353535353535353535353535353535353535353535353534d4b4740382e24190e020000010d19242f414d5a6774808d9aabaea298887b6e61555353535353535353535353535353535355626f7c8899a3afa9988b7e7265584b3f3225180c00000e1a2734414d5a6774808d9aa7ab9e9285849199928c827c76726e6c666b666d6e72767c828d929ca4aea69f93877c6f655b504437291f14090000000713202d3a4653606d7986929facab9f928578695e52463a2d201407000000000713202d3946525d687885929eabac9f9286796d6053463a2d20130700000000000000000000000009121b232c343c424b51585f62696e747a7d8185888a8c8f9091919292929191908e8c8a8884807d79736d68615e565046413a322a2119100700000000000000000000000000000000000000000000060d151d24293136394045474a515356585a5c5e5e5f605f5f5e5d5b595754524c4847433c38332d261d18120b03000000000000000000000000000000000000000000000000000000000001070c1013181c1f20232527292b2b2c2d2c2c2b2a28262421201e1915120f0a0300000000000000000000000000000000000000000000050d151c2227292a2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2a2926221c150d040000000000020b141b22272b2d2f2d3338393b3e3e3d3a342d241b1114171b1f2022252a2d2e3036393a3d4246484f545a616a6f7c87939facb2a8998d8073665a4d4033271a070000101d293643505c6976838f8b7f7265584c4646464646464646464646464646464646464646464646464646464646464646464646464c5865727f8b8f8376695c504336291d10000000000c18232e394653606c7985929c90837669544b4034281c100400000000131f2c3946525f6c7985929facada093877a6d6054473a3232323232323232323232323232332f35393c4347505b66707d8997a1adada297887c6f6255493c2f22160900000000000713202d3a4653606d7985929faba79b8e8174665c5145382c1f160c06060c141f2c3845515d6775828e9ba8ab9e9285786c605346392d20130600000714212d3a4754606d7a8793a0ada69a8d8073675a4d4034271a0d01000815222e3b4855616e7b8894a1aea5988b7f7265584c3f3225190c000000000000131f2c3946525f6c7985929facada093877a6d6054473a2d21140700000000000205060b0f151a212a323b444e58606d7984919ea9b2a89d908376695f53463a2d1c11060000000000000000000000000000000006111b262f3b45505a616e7b85929fa59f92877c6f666d798693a0aca194877b6e6154483b2e211508000000000000000000121e2b3845515e6b7884919eabaea194887b6e61554846464646464646464646464646464646464646464646464646464646403f3b352e261c120700000000081724313e4a5764717d8a99a3afaa988b7e7165574d42464646464646464646464646424d5765727f8c98abada297887b6f6255483c2f22150900000d1a2734404d5a6773808d9aa6ab9e92857d89929f948f88827e7b79787778797b7f828990949da4aea69e938d80736b6053493f3327170d0300000006121f2b3844505c667784909daaaea298877b6e6154483b2e21150a000000000714212e3a4754616d7a8797a1adaa9e918477665c5145382c1f1306000000000000000000000009121b242d353e464e545c606a6f757b81868a8e929797999b9d9d9e9f9f9f9e9d9d9b999796918d8985807a746e68615a524c443c332b2219100700000000000000000000000000000000000000000910181f272f353b42464b5153545c60636567696b6b6c6c6c6b6b6a686664615e5655534e46443f382f28231d150c05000000000000000000000000000000000000000000000000000003090e12181d1f23282c2d3032343638383939393838373533312e2d2a25211f1b150f0b06000000000000000000000000000000000000000000040b11161a1d1e202020202020202020202020202020202020202020202020202020202020202020202020202020201d1c1a16110a0300000000000000020a11171b1f202222282b2d2f3132312e29221b191e2022272b2d2f31363a3b3e4146474a4d53555960636c717c859199a4afaca096897d706356493d3023160a0000101d293643505c6976838f8b7f7265584c3f393939393939393939393939393939393939393939393939393939393939393939393f4c5865727f8b8f8376695c504336291d1000000915202b353f4744505b6575828f9b918578665c5145382c1f130600000000131f2c3946525f6c7985929facada093877a6d6054473f3f3f3f3f3f3f3f3f3f3f3f3f3f3f40414045474e535b606c7883909da9b3ac9e9285796c605346392d201306000000000006121f2b3844505c6675828f9caaab9e9285796d6053463d31281e171515171e28313a4753606d7985929facaa9b8e8175655b5044372b1f120500000714212d3a4754606d7a8793a0ada69a8d8073675a4d4034271a0d01000815222e3b4855616e7b8894a1aea5988b7f7265584c3f3225190c000000000000131f2c3946525f6c7985929facada093877a6d6054473a2d21140c0c0c0c0d090e1114171b1f262b333b444c56606a73808c96a1adada1968a7e7164574d42362a1e0a0000000000000000000000000000000000000a141d29333f46525e69717e8a939ea3999083796d6d798693a0aca194877b6e6154483b2e211508000000000000000000121e2b3845515e6b7884919eabaea194887b6e6155483b39393939393939393939393939393939393939393939393939393933322f2a241c130a00000000000714212e3a4754616d7a86929faca89b8e8275695e53463d313939393939393939303946525e6976828f9ca9ab9e9285786c605346392d20130600000d192633404c5966737f8c99a6ab9f928578808d939f9c948f8b888685848586888b8f949c9fa6aca49d948f81786c60594f41382d2217050000000003101c28343f4a546875818e9ba8b3aa978a7d7064574a3d32271b0d04000001081623303d495663707c8996a9b3a89c8f827569544b4034281c10040000000000000000000007101b242d363e474f585f666d737c82878e92989b9ea2a9a6a8aaa8a7a6a6a6a7a8a9a8a6a8a19e9a97928c86807a716c615e564d453c342b22190e0500000000000000000000000000000000000009121b222a313940454d53555d6065666d6f72747677787979797877767573716e6867625f5853504a423d342e271e170e05000000000000000000000000000000000000000000000001070c141a1d24292c2e34383a3c3f4143444546464645444342403e3b3936302e2b261f1c17110a0200000000000000000000000000000000000000060e151b1f21222323232323232323232323232323232323232323232323232323232323232323232323232323232322211f1a150e06000000000000000000060b0f121315171c1f2022252524211d1d20252a2d2d3337393c3f4246484b4c525457575f61656b70767e859197a1abb1a79d9184786c605346392d2013060000101d293643505c6976838f8b7f7265584c3f322d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d323f4c5865727f8b8f8376695c504336291d1000010e1a26313d4751595e5f6673808c999786796d6053463a2d20130700000000131f2c3946525f6c7985929facada093877a6d60544c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4d4d4b5153585f626d737f8c959fabafa49a8d8174665b5044382b1f1206000000000003101c28343f4a5464717e8b98a3ada2978a7d7064594f433a30282322222227303a434f5964717e8a98a2aea2988a7d706453493f33271b0f0300000714212d3a4754606d7a8793a0ada69a8d8073675a4d4034271a0d01000815222e3b4855616e7b8894a1aea5988b7f7265584c3f3225190c000000000000131f2c3946525f6c7985929facada093877a6d6054473a2d211919191919191a191e2022272b31373e454d565e686f7c87929fa8b1a79e9184786d6053463b31261a0e000000000000000000000000000000000000020b17212a36424d56616c75818f97a1a0958c80736d798693a0aca194877b6e6154483b2e211508000000000000000000121e2b3845515e6b7884919eabaea194887b6e6155483b2e2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2626231f19120a0100000000000713202d3946525d6876828f9ca9ac9f92867b6e61584e433b322c292424292c3139424d57616e7b86929faca89b8e8174655b5044372b1f120500000c1825323f4b5865727e8b98a5ac9f92867977818c939a9f9c989993929192939a989c9fa6aba8a09d928d82796d665b50463d2f261b110600000000000b17232e3f4b5865727e8b98a8b2a69a8d807367584e43372b1f15100c090e131e2a36414c5666727f8c99a5b3aa998c7f7366594c402e23180c00000000000000000000050e19222d363e485059616a6f7980878f93999fa3aaabaaaaa29f9d9b9a9a999a9a9b9d9fa2aaa9aba9a19e98928d857e756d685f574e463c342a20170c030000000000000000000000000000000009121b242c343c434b51575e61676d7175797c7f81838485858685858483817f7d7a77736f6a64605b544f454039302920170f05000000000000000000000000000000000000000000030b12181f252a2f35393a404446494c4e5051525253525251504e4c4a4746413c3a37312b28221c140b07000000000000000000000000000000000006101820262b2e2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2e2b262018100600000000000000000000030506060b0f12131518181b1e25292d3036393b3f4446484b4d535457565e616467696e72777d828a9297a1a9b3aa9f958b7e71665b5044382b1f12060000101d293643505c6976838f8b7f7265584c3f322520202020202020202020202020202020202020202020202020202020202025323f4c5865727f8b8f8376695c504336291d100004111d2a36424e59636a6c6c727f8b9894877a6e6154473b2e21140800000000131f2c3946525f6c7985929facada093877a6d605858585858585858585858585858585859595a555d60646a6e767f8c919ca7b1a99f93877c6f62544a3f33281c0f030000000000000b17232e3a4754606d7a86929faca99c9083766b60554b423a342e2f2e2d333a424b55616b7683909daaab9f9285796d6053473a2d22170b0000000714212d3a4754606d7a8793a0ada69a8d8073675a4d4034271a0d01000815222e3b4855616e7b8894a1aea5988b7f7265584c3f3225190c000000000000131f2c3946525f6c7985929facada093877a6d6054473a2d2525252525262627252a2d2d33373c434750575f686e7a849199a3afaa9f958b7e71665c504438291f140900000000000000000000000000000000000000050f1925303b44505a616d7a85929ea59f92877c6f798693a0aca194877b6e6154483b2e211508000000000000000000121e2b3845515e6b7884919eabaea194887b6e6155483b2e22202020202020202020202020202020202020202020202020201a1917130e070000000000000005111d2935414c5664717e8b96a1ada3998d80746a60564d443e39352f2f35383c434b545e6973808d99a3aca096897d706353493f33271b0f0300000b1824313e4b5764717e8a97a4aea399867a6d74808891969d9fa49f9e9e9e9fa4aca9a7a79f9d95918980786d675c544a3f342b1d140a0000000000000615222f3c4855626f7b8896a0acaa9d9184776a6054473c31271f1c181b1a1e242d3946525e6876838f9ca9aea298897c706356493d30231607000000000000000000020d17202b343e48505a616b707c838c92999fa4abaca7a09d999892908f8d8d8d8d8d8f909298989c9fa4abaaa29f97928a827a6e6960584e463c32291e150b00000000000000000000000000000008121b242d363e464e555d60696e74797e8285898b8d8f91919293929291908e8c8a8784807c76716c666059514b433b332921170e0500000000000000000000000000000000000000060d151d24293136394045474a515356585a5c5e5e5f605f5f5e5d5b595754524c4847433c38332d261d18120b030000000000000000000000000000040e18222a31373a3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3c3a37312a22180e03000000000000000000000000000003060b141a20262b3035393b4146474950535558575e616467686d7074777b7f84898f949fa2a9b2aaa2989083786d60544a3f33281c0f030000101d293643505c6976838f8b7f7265584c3f322519131313131313131313131313131313131313131313131313131313131925323f4c5865727f8b8f8376695c504336291d100006121f2c3845525e6a757979797e8a9795887b6e6255483b2f22150800000000131f2c3946525f6c7985929facada093877a6d656565656565656565656565656565656565666768676d71757b828c919ca4adaba2978e81756a5f5342382d22170b000000000000000613202c3945515d6775818e9ba6ab9f94897d70675d544c443f3c3b3b3c3f444b545d67707d89959faba4998d8174675c5145382c1b11060000000714212d3a4754606d7a8793a0ada69a8d8073675a4d4034271a0d01000815222e3b4855616e7b8894a1aea5988b7f7265584c3f3225190c000000000000131f2c3946525f6c7985929facada093877a6d6054473a32323232323232333430363a3b3f44464e535a61696e7a839096a1abaea3989083786c60544a3f34281c1003000000000000000000000000000000000000000009141f29323e46525e68707e8a939ea399908378798693a0aca194877b6e6154483b2e211508000000000000000000121e2b3845515e6b7884919eabaea194887b6e6155483b2e22151313131313131313131313131313131313131313131313130d0c0a07020000000000000000010d1924303a4653606d7984919ea7ab9f92877c6f685e564f47454141414045474e555c666e7b86929faba89e9184786c605346392d22170b0000000a1623303d495663707c8996abb5ab94877b6e6e737d848a9095989b9d9e9f9f9f9e9c9a9895908a847d736d665c554b42382d22190b020000000000000815212e3a47535f6a7784919eabaca095887c6f62584e4339312c282327262b2f35414c56616d7a86929facab9f9285796d6053463a2d20130700000000000000000009141f29323d46505a626c717d8690959fa3ababa49f9b95908c898584828180808081828385888b8f93999fa2aaa9a19e938f847b6f6a60584e443b30271d12070000000000000000000000000006101a242d363f4850585f676d737b80858b8f9298989a9c9e9e9f9f9f9e9e9d9b999795908d88837e786f6b605c554d453b332920170c0300000000000000000000000000000000000910181f272f353b42464b5153545c60636567696b6b6c6c6c6b6b6a686664615e5655534e46443f382f28231d150c05000000000000000000000000000a15202a343c434748494949494949494949494949494949494949494949494949494949494949494949494949494949494847433c342a20150a00000000000000000000000000020a11171f262a32373a4146474c5254535b60626568696e7174777a7d8084888c91959c9fa6adafa9a19892867b6e665c5142382d22170b000000101d293643505c6976838f8b7f7265584c3f3225190c06060606060606060606060606060606060606060606060606060c1925323f4c5865727f8b8f8376695c504336291d10000613202c3946535f6c798786868a909a95887b6f6255483c2f22150900000000131f2c3946525f6c7985929facada093877a72727272727272727272727272727272727272737475777a7d82878f949ca3adaba39992857b6e61584e432f261c11060000000000000004111d2935414c55626f7c88949faba69e9184796d665d56504a494848494950555d666d7984919ea7aa9f93877b6e61554b4034291c0a000000000714212d3a4754606d7a8793a0ada69a8d8073675a4d4034271a0d01000815222e3b4855616e7b8894a1aea5988b7f7265584c3f3225190c000000000000131f2c3946525f6c7985929facada093877a6d6054473f3f3f3f3f3f3f3f404042424647495053585f626c717b839095a0a8afa59f92867c6f655b5042382e23170c000000000000000000000000000000000000000000020d17202a36414c56616c75818e96a1a0958b7e788693a0aca194877b6e6154483b2e211508000000000000000000121e2b3845515e6b7884919eabaea194887b6e6155483b2e2215080606060606060606060606060606060606060606060606000000000000000000000000000008131f2c3845515c67727f8b95a0aba39991847a6e68615954514c4e4e4b5153575f676d78839098a2aca0968b7f72665b5044382b1b11060000000815222e3b4855616e7b8899a3afa295897c6f626b6f797e83888b8e909192929291908e8b87837e78706b605c544b43392f261c10070000000000000006121f2b37434e586673808d99a3afa89b8e81756a5f554b433c38342e3431373a4145525d68737f8c99a3afa79b8e8175675c5145382c1f13060000000000000000030d1925303b444e58626c717e879298a0a7afa79f99938e88837f7c79777574737373747577797c7f83878d92989ea5ada59e9691857c6f6a5f564c42392e23180c030000000000000000000000030c18222c363f48505a616a6f7980868d92979c9fa2aaa7a9a8a7a6a6a6a7a8a9a8a6a7a09d9a94908a837c746d675e574d453b32291e150a0000000000000000000000000000000009121b222a313940454d53555d6065666d6f72747677787979797877767573716e6867625f5853504a423d342e271e170e050000000000000000000000030f1b26313c464e53555656565656565656565656565656565656565656565656565656565656565656565656565656565655534e463c31261a0f030000000000000000000000040b141c222831363c43474c5254565e6164656c6f7275787b7e8184868a8d9196989da0a8abb0aba59e9791867d6f695f544a402f261c1106000000101d293643505c6976838f8b7f7265584c3f3225190c00000000000000000000000000000000000000000000000000000c1925323f4c5865727f8b8f8376695c504336291d10000613202c3946535f6c79869293979aa295887c6f6255493c2f22160900000000131f2c3946525f6c7985929facb2a5988c7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f80808284868a8f92999fa6adaaa29992877d70695e52463c321d140a0000000000000000010d19242f3a47535f6a76828f99a3aca0968f82786d68605c5456555555535b60676d78818f96a0aca2988e8175695f5343392f23180c000000000714212d3a4754606d7a8793a0ada69a8d8073675a4d4034271a0d01000815222e3b4855616e7b8894a1aea5988b7f7265584c3f3225190c000000000000131f2c3946525f6c7985929facada093877a6d60544c4c4c4c4c4c4c4c4c4c4d4e4d5254535b60636a6e757e859195a0a7afa59d938b7f726a5f53493f30261c110600000000000000000000000000000000000000000000050e1925303a44505a606d7a84919ea59e91847a8793a0ada194877b6e6154483b2e211508000000000000000000121e2b3845515e6b7884919eabaea194887b6e6155483b2e2215080000000000000000000000000000000000000000000000000000000000000000000000000004101c2834404b55606d78839099a3aba09690837a706b64605d555b5b555d60636a6e79818e959faaa49a9184796d60544a3f33281c0a000000000713202d3a4653606d7986929faca4978a7d716460666d71777b7f8183858586858483817e7b76716d666059504a423930271d140a0000000000000000030f1a26313c4854616e7b87929faaac9f92877c6f675d554e46454041414142474c515b606d7a85929eabaca095897d7063554b4034281c100400000000000000010b151f2a36424d56606a717e889299a2aaafa49c959087817c77726f6d6668676766676768666c6f72767b80868e939fa3aaa8a09792867c6f685e544b40342820150900000000000000000000000b151e2a343e48505a626c717c848c92989fa2a9aca8a8a09e9c9a9a999a9a9b9d9fa3ababaaa69f9c95908781796e695e574d443b30261c1106000000000000000000000000000009121b242c343c434b51575e61676d7175797c7f81838485858685858483817f7d7a77736f6a64605b544f454039302920170f050000000000000000000006121f2b37434e585f6262626262626262626262626262626262626262626262626262626262626262626262626262626262625f584e43372b1f120600000000000000000000040d161d262d333b42464e53565e6165686e7175787c7e8184878a8e91939a9a9da0a8aaacaeaca69f9c938e857c6f6b60574d42392e1d140a00000000101d293643505c6976838f8b7f7265584c3f3225190c00000000000000000000000000000000000000000000000000000c1925323f4c5865727f8b8f8376695c504336291d10000613202c3946535f6c7986929fa4a6a295887c6f6255493c2f22160900000000131f2c3946525f6c7985929facb8a79c918c8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8c8c8d8e9193999c9fa3abaca69f9892877e716b61564d42342a200b0200000000000000000008131e2b37434e58626e7c87929fa7a89e948f827a716d66646262616264656c7079818f939ea8a69f92867b6e61574d4231271d1207000000000714212d3a4754606d7a8793a0ada69a8d8073675a4d4034271a0d01000815222e3b4855616e7b8894a1aea5988b7f7265584c3f3225190c000000000000131f2c3946525f6c7985929facada093877a6d6058585858585858585859595a5b565e6164656c70757c828a9297a0a8afa59e938e81746d62584e41382d1e150a00000000000000000000000000000000000000000000000008131e29323e45525d68707d8a939da1978c808c99a6aea194877b6e6154483b2e211508000000000000000000121e2b3845515e6b7884919eabaea194887b6e6155483b2e22150801010101010101010101010101010101010101010101010100000000000000000000000000000c18232e3944515c666f7c87929fa4a8a09590847d76716d6769676869676d70757b838e939ea7a59f93887d70665c5142382d22170b0000000006121f2c3844505c667784919eaaa5998c7f7266545c6064696e72747778797979787674716e6964605c544f443f3830271e150b020000000000000000000a15212d3a46535e6975818e98a3aea3999083796d675f5853514b4e4e4e4d53555d606d74818e97a1ada69d9083776b605443392e23180c000000000000000007121d27313946525e696f7c86929aa3ababa39f928d837c756f6a6662605c545a5a5a5a5a545b606265696e747b818a9298a2a9a9a19891847a6e665c51453c31261a0e0500000000000000000007121d27303c46505a626c717e8691969fa2aaaba39f9b9796918f8e8d8d8d8d8f9092999a9ea1a9aba79f9a938d837b6e695e564c42382e23170c0400000000000000000000000008121b242d363e464e555d60696e74797e8285898b8d8f91919293929291908e8c8a8784807c76716c666059514b433b332921170e050000000000000000000815212e3a47535f6a6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6a5f53473a2e211508000000000000000000030c161f282f383f444d53585f62686d72767a7e8185888b8e9196979a9d9fa4acaaacafacaba39f9b948f89817a6f6a60594f453b30271c0b0200000000101d293643505c6976838f8b7f7265584c3f3225190c00000000000000000000000000000000000000000000000000000c1925323f4c5865727f8b8f8376695c504336291d10000613202c3946535f6c7986929facafa295887c6f6255493c2f22160900000000131f2c3946525f6c7985929facb8ada39c9898989898989898989898989898989898989898999a9b9d9fa4abacaba7a09d9490867e716c62594f443b3022180e00000000000000000000010f1b26323c47535f6a73808d959fa8a69e948f847e7974716f6e6e6f7173787d848f939ea5a79f948c7f72695e53453c311f150b01000000000714212d3a4754606d7a8793a0ada69a8d8073675a4d4034271a0d01000815222e3b4855616e7b8894a1aea5988b7f7265584c3f3225190c000000000000131f2c3946525f6c7985929facada093877a6d656565656565656565656566676869696e7074787d81878f939ea1a9aca49f938e81786d605b51463c2f261b0c03000000000000000000000000000000000000000000000000020c17202935414c56616b74818e96a19f9285929fabaea194877b6e6154483b2e211508000000000000000000121e2b3845515e6b7884919eabaea194887b6e6155483b2e22150d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0a0907040000000000000000000007121d2834404a54606a727f8c929ca4a7a096918a827d7a7775747475767a7d818790959ea5a59e938d80736b60544b402f261c11060000000003101c28343f4a546875828f9ba8a89b8e817568565153575f6165686a6b6c6c6c6b696765615e5753504a423d342e261e150c070100000000000000000005121e2a36424d57616e7b86929fa6aba0958f82796f6a63605c555b5a5b575f62676d747f8c939ea9a99f948a7d7064594f4430271d120700000000000000000c18232f3943505a616e7b859198a3acaca399928b80786f6a625f585653504a4e4d4d4d4e4a505355575e61696e757e869297a2aaaaa1969082786d60574e42372b21170b0000000000000000000c18232e39424e58616c717f8a9298a0a8aba49f99928e8a8784828180808081828486898d92979ea1a8aca49f9590847b6e685e544a3f342820150a000000000000000000000006101a242d363f4850585f676d737b80858b8f9298989a9c9e9e9f9f9f9e9e9d9b999795908d88837e786f6b605c554d453b332920170c0300000000000000000915222f3c4855626f7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c6f6255483c2f2215090000000000000000000a151e283139424a50575f616a6f757a7f83868b8e9297989b9ea1a8a7aaacafacaaaba39f9c99928e89827c756d6860584f473d33291e150b0000000000101d293643505c6976838f8b7f7265584c3f3225190c00000000000000000000000000000000000000000000000000000c1925323f4c5865727f8b8f8376695c504336291d10000613202c3946535f6c7986929facaca295887c6f6255493c2f22160900000000131f2c3946525f6c7985929facacacada7a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a6a7a8aaa9a7a9a19e9a95908a837b706c625a50473e32291f100600000000000000000000000a15202b37434e58606d78839096a0a8a69e96918b85817e7c7b7b7c7e80848a91969ea5a7a0958f82776c60574d42332a1f0d0300000000000714212d3a4754606d7a8793a0ada69a8d8073675a4d4034271a0d01000815222e3b4855616e7b8894a1aea5988b7f7265584c3f3225190c000000000000131f2c3946525f6c7985929facada093877a72727272727272727272727273737576787a7d8184898e93999ea6ada8a19a938c81786d665c50493f342a1d140a0000000000000000000000000000000000000000000000000000050e1924303a444f59606d7984919aa2989298a2aeaea194877b6e6154483b2e211508000000000000000000121e2b3845515e6b7884919eabaea194887b6e6155483b2e221a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a171614100b050000000000000000000c18232e39424e58626d73808c929ea1a8a19e948f8a8683828181828386898e93999fa7a39f938f81786d60594f42392e1d140a0000000000000c17232e404c5966737f8c99abaa9d908477685d52464d5355585b5d5e5f5f5f5e5d5b5854534d46443f3830282321201d18130c040000000000000000020e1a25313b46535f69737f8c949fa7a79f948f837c75706d676867676869696e737a818c919ca5aaa1978f82766c6155473d331e150b000000000000000004101c2934404b55616c76828f97a1aaafa49a92877e736d665f58534e4946443f41404040413f4446484d53565e616c717c859298a2aca89f948d80736a5f53473e33281c10040000000000000004101c2834404b545f6a717e87939fa2aaa9a199938e86827e7a777574737373747577797c80858b91969da5afa79f9691847a6e665c50443c32261b0f04000000000000000000030c18222c363f48505a616a6f7980868d92979c9fa2aaa7a9a8a7a6a6a6a7a8a9a8a6a7a09d9a94908a837c746d675e574d453b32291e150a0000000000000000111e2a3744515d6a77848989898989898989898989898989898989898989898989898989898989898989898989898989898983766a5d5043372a1d10000000000000000006111c263039434b545b60696e757c81868b9093999b9ea1a9a8abadafaca9a6a8a09d9a99928f8b86817c766f6b605d564e463d352b21180c030000000000101d293643505c6976838f8b7f7265584c3f3225190c00000000000000000000000000000000000000000000000000000c1925323f4c5865727f8b8f8376695c504336291d10000613202c3946535f6c7986929f9f9f9f95887c6f6255493c2f22160900000000131f2c3946525f6c7985929f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9fa39f9f9e9d9c9a9897928e89837e766e69615a50483f352c20170d000000000000000000000000040f1a26313c44505c666e7b8491969ea6a9a19e97918e8b898888888a8d91969ea0a8a59e9590837a6d655b50453b3121180e0000000000000714212d3a4754606d7a8793a0ada69a8d8073675a4d4034271a0d01000815222e3b4855616e7b8894a1aea5988b7f7265584c3f3225190c000000000000131f2c3946525f6c7985929facb2a5988c7f7f7f7f7f7f7f7f7f7f7f7f7f7f80818385878a8d91969b9fa4ababa39f9691887f776d665c544a3f372d22180b0200000000000000000000000000000000000000000000000000000008131e28323e45515d67707d88939fa29fa2aab4aea194877b6e6154483b2e211508000000000000000000121e2b3845515e6b7884919eabaea194887b6e6155483b2e2727272727272727272727272727272727272727272727272727272423201c161008000000000000000007121c27303d46515b646e73808a92979fa3a69f9c9992908f8e8e8f9092989b9fa4a69f99928c81786d665c50473d30271d0b02000000000000061724303d4a5763707d8a99a3ac9f93867a6d6054474246484c4e505252535251504e4b4846423c3b3937332d302d2c29241d160d04000000000000000009141f2a36424d57606d78828f959fa7a69f959087817d79777574747476787b80858e939ca3aaa29892857b6e615a5044352b210c03000000000000000006131f2c3845515c67707d8a949fa9b0a69f93887e716c605c544e47433c3a38342e3433342d3338393c42464d525a616a6f7c86929aa4afa69f92877b6e62594f44392d20150a0000000000000006131f2c3845515c666f7c869299a4aea8a0979187817b75716d6869676766676768676d7073797e848e939fa4aca8a0969083786d60584e43372b20150a0000000000000000000b151e2a343e48505a626c717c848c92989fa2a9aca8a8a09e9c9a9a999a9a9b9d9fa3ababaaa69f9c95908781796e695e574d443b30261c110600000000000000111e2a3744515d6a77849095959595959595959595959595959595959595959595959595959595959595959595959595959083766a5d5043372a1d1000000000000000020c17232e38424b555d666c727b82888e92999c9fa4ababadaeaca9aba39f9d9a9795918d8a86837e7a756f6b636059524c443c342b23190f06000000000000101d293643505c6976838f8b7f7265584c3f3225190c00000000000000000000000000000000000000000000000000000c1925323f4c5865727f8b8f8376695c504336291d10000613202c3946535f6c7986929393939393887c6f6255493c2f22160900000000131f2c3946525f6c7985929393939393939393939393939393939393939393939393939399929291908f8d8b8885817d77716c615f5750483f362d231a0e05000000000000000000000000000a152028343f4a545e696e7b848f939ea1a8a9a19e9a9795959495979a9ea0a8a8a19e938e837a6e685e53493f33291f0f060000000000000714212d3a4754606d7a8793a0ada69a8d8073675a4d4034271a0d01000815222e3b4855616e7b8894a1aea5988b7f7265584c3f3225190c000000000000131f2c3946525f6c7985929facb8a79c918c8b8b8b8b8b8b8b8b8b8b8b8c8c8d8e909297979a9ea1a8acaba39f99928d847d736c655c544a42382e241b100600000000000000000000000000000000000000000000000000000000020c16202935414b55606b74808d96a0abaeb4bcaea194877b6e6154483b2e211508000000000000000000121e2b3845515e6b7884919eabaea194887b6e6155483b34343434343434343434343434343434343434343434343434343434302f2c28211a110800000000000000000b151e2b343f49525c646e737e858e92999ea1a8a39f9d9c9a9b9c9d9fa3a9a29f9b948f877f776d665c544a3f352c1e150b000000000000000714212d3a4754606d7a86929faca4998a7d7063544b403a3b3f4144454646464543413e3d4347494846443f3f3c3a39352f281f160c0100000000000000030e1a26313b44505c666d7a8390959da5a7a099938e898683828181818385888c92979da5a7a09892867d70695e52483e3323190f000000000000000003101c28343f4a54606d7984919ea6b0aa9e948c7f736c625a504a423c37322d2c282327272722282b2d31363b42465058606a707e88939fa8aea3998f82766c6155493c31261b0f00000000000004111d2935414b55606d79839098a3aba9a09691857d746e6964615d565b5a5a5a5a555c6063666d7179818b939aa4afa89f958c80736a5f54473d32271b0f010000000000000007121d27303c46505a626c717e8691969fa2aaaba39f9b9796918f8e8d8d8d8d8f9092999a9ea1a9aba79f9a938d837b6e695e564c42382e23170c04000000000000111e2a3744515d6a7784909da2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a29d9083766a5d5043372a1d10000000000000000a141e28343f4a545d676d787f868f939b9fa3abacafaca9aaa29f9c999992908d8a8784817d7a76726d68636059544f45413a322b2219110700000000000000101d293643505c6976838f8b7f7265584c3f3225190c00000000000000000000000000000000000000000000000000000c1925323f4c5865727f8b8f8376695c504336291d10000613202c3946535f6c7987868686868686867c6f6255493c2f22160900000000131f2c3946525f6c79868686868686868686868686868686868686868686868686868686868685858482807e7b7874706b64615a534d453e362d241b11080000000000000000000000000000030c17232e38424d565e696e7a828a91969d9fa7a7a7a4a2a1a1a2a4a6a7a7a09d96918a81796e685e564c41382d21170d000000000000000714212d3a4754606d7a8793a0aca69a8d8073675a4d4034271a0d01000815222e3b4855616e7b8894a1aca5988b7f7265584c3f3225190c000000000000131f2c3946525f6c7985929facb8ada39c98989898989898989898989898999a9b9c9ea1a9a7aba9a8a19e99928e87817a706b605b534a423930261c1209000000000000000000000000000000000000000000000000000000000000040e18242f3a434f59606d79849199a4afbbb9aea194877b6e6154483b2e211508000000000000000000121e2b3845515e6b7884919eabaea194887b6e61554840404040404040404040404040404040404040404040404040404040403d3c38332c231a100500000000000000030c19222d37404a525c636c717a81868d9196989b9c9e9f9f9f9f9e9d9b9997928e89827c736c655c544b42382e231a0c03000000000000000613202c3945515d677683909ca9ab9a8e8174665c5145382e323537383939393836313d464e5456555350494b494745413a31281d1307000000000000000009141f28343f4a545e686d7a838e929d9fa7a49f9b9892908e8e8d8e8f9197999ea1a9a29e9590867d706b60574d42362c221108000000000000000006121f2b3844505c66727f8c96a0acaea2988f82776c605a50443f38302b26201f1c171a1a1a171c1f20252a30363e464e58616c73808d96a1acab9f948a7d7064584e43372b1d120700000000000613202c3945515d67737f8c95a0aaada19791847b706b615e5754524c4e4d4d4d4e4b5153545c60676d747f88939fa5afa79f92877c6f62584e43372b1d1207000000000000000c18232e39424e58616c717f8a9298a0a8aba49f99928e8a8784828180808081828486898d92979ea1a8aca49f9590847b6e685e544a3f342820150a000000000000111e2a3744515d6a7784909d9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9d9083766a5d5043372a1d1000000000000006111c26303844505c666d79828c92989ea5acaeabaca49f9d9998928f8c898683807d7a7774716d6865615e56544f48443d353028201910070000000000000000101d293643505c6976838f8b7f7265584c3f3225190c00000000000000000000000000000000000000000000000000000c1925323f4c5865727f8b8f8376695c504336291d100006121f2c3845525e6a757979797979797979766a6054473b2e22150800000000121f2b3844515d697479797979797979797979797979797979797979797979797979797979797978777674716f6c65636059555046423c332c241b12090000000000000000000000000000000006111c26303b444d575e686d757e848b9095979a9c9e9e9f9f9f9e9c9a9895908b847e756d675e564c443a2f261b0f05000000000000000714212d3a4754606d7a87939f9f9f9a8d8073675a4d4034271a0d01000815222e3b4855616e7b88949f9f9f988b7f7265584c3f3225190c000000000000131f2c3946525f6c7985929facacacada7a5a5a5a5a5a5a5a5a5a5a5a5a5a6a6a8a9a8a6aba39f9c9996918c87817b746d6761595049413930271e140a000000000000000000000000000000000000000000000000000000000000000007131d28313d45515d676f7c87939fa7b1acaca194877b6e6154483b2e211508000000000000000000121e2b3845515e6b7884919eabaea194887b6e61554d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4a48443e352c21160b000000000000000007101b252e38404a525a61686d747b8084888b8e90919292929291908e8c8985817c766f6a605b534b423930261c1108000000000000000004111d2935414b5566737f8c99a7ab9e9285796d6053463e3128282a2b2c2c2c242f39434e58606261605b53585654514b433a2f24180d0100000000000000030b17232e38424c565e686d79818990959b9fa2aaa39f9d9b9a9a9b9c9ea1a9a49f9c97928c837b706b60594f453b30241a100000000000000000000713202d3a4653606d7884919ea8b2a99f92867b6e655b50483e342e261e1b1312100c060d060b0f12131a1f252a343d46505a606d7984919ea8b0a69c8f83766a5f5347392e23180c00000000000714212d3a4754606d7a85929fa7b0a69e92857b6e696059524d47464141404040414045464b51555d606d727f8b939ea9afa3998f82766a605447392f24180c00000000000004101c2834404b545f6a717e87939fa2aaa9a199938e86827e7a777574737373747577797c80858b91969da5afa79f9691847a6e665c50443c32261b0f040000000000111e2a3744515d6a77839093939393939393939393939393939393939393939393939393939393939393939393939393939083766a5d5043372a1d100000000000000b17232e38424f59606d78828f949fa3aaafaca7a09d9a93908c8985827f7c7a7673706d686764605d5654524c48433d383229241e160e07000000000000000000101d293643505c6976838f8b7f7265584c3f3225190c00000000000000000000000000000000000000000000000000000c1925323f4c5865727f8b8f8376695c504336291d100004111d2a36424e59636a6c6c6c6c6c6c6c6c6260584e43372b1f130600000000101c2935414d5862696c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6b6a69676562605b53544f49453e37312a211a12090000000000000000000000000000000000000a151e29323b454d565d606c71797e83878a8d8f9192929292918f8d8b87837e79716c605d554c443b32281d140a00000000000000000714212d3a4754606d7a8793939393938d8073675a4d4034271a0d01000815222e3b4855616e7b8893939393938b7f7265584c3f3225190c000000000000131f2c3946525f6c7985929f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9fa39f9f9e9d9c9b99979992908c89847f7b746e69605d554f443f382f271e150c020000000000000000000000000000000000000000000000000000000000000000010c161f2935404b55606b73808d95a09f9f9f9f94877b6e6154483b2e211508000000000000000000121e2b3845515e6b7884919eabaea194887b6e615a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a57554f473e33281c1004000000000000000009131c262e38404850565e61696e73787c7e818384858686858583817f7c79746f6a625f585049413930271e150a000000000000000000010d18242f3b4855616e7b88959faba1978a7e71645a50433a2f241d151f141c2935404b55606a6f6e6c65676563605d554b4135291d1104000000000000000006111c26303a444c565e676d747c83898e9298999b9d9e9f9f9f9f9e9d9b999993908b857f786e6960594f473d33291f1208000000000000000005111e2a36414c5664707d8a96a1adada1978c7f72695e53493f3628231c140c0a060300000000000306090e1419222b343e45515d67717e8a96a0acab9f94887c6f62544b4034281c100400000006131f2b37434e5866727f8c97a2adaa9e948a7d70695f574f46423b3935303433342e34383a40454b515b626d74818e97a1adab9e94897c6f62554b4035291d1004000000000006131f2c3845515c666f7c869299a4aea8a0979187817b75716d6869676766676768676d7073797e848e939fa4aca8a0969083786d60584e43372b20150a0000000000111e2a3744515d6a77838686868686868686868686868686868686868686868686868686868686868686868686868686868683766a5d5043372a1d10000000000003101c28343f4a54616b74818e949ea6aeafa7a09d95908b8783807c797673706d676764615e565754524c4746413a38322c272119130c0400000000000000000000101d293643505c6976838f8b7f7265584c3f3225190c00000000000000000000000000000000000000000000000000000c1925323f4c5865727f8b8f8376695c504336291d1000010e1a26313d4751595e5f6060606060606055544e463c32271b0f03000000000d1925303b4650585d5f6060606060606060606060606060606060606060606060606060605f5f5e5d5c5a585553504948443d39342b261f180f0800000000000000000000000000000000000000030c172029333b444c525a61676d71767a7e818284858686858483817e7b77716d67615a514b433b322920160b0200000000000000000714212d3a4754606d7a868686868686868073675a4d4034271a0d01000815222e3b4855616e7b868686868686867f7265584c3f3225190c000000000000131f2c3946525f6c798592939393939393939393939393939393939398929291918f8e8d8b8886837f7c78736e69615f57514c433e332d261d150c0300000000000000000000000000000000000000000000000000000000000000000000040d18242f39434f59606d798390999393939393877b6e6154483b2e211508000000000000000000121e2b3845515e6b7884919eabaea194887b6e67676767676767676767676767676767676767676767676767676767676767676361594f44382c2014070000000000000000010a141c262e363e444c52575e61666a6f7274767878797978787675726f6d66626058534e443f382f271e150c03000000000000000000000714212d3a46535f697683909da8a99d9083766c61554b40352e27222222262d3845515d676f7c7b797674726f6d675d5145392c2013060000000000000000000a141e28323a444c555c606b6f777d8185898c8e90919292929291908f8d8a86837e79726d665f574f473d352b20170d0000000000000000000714202d3946525e6876828f9ca8b2ab9e9185796d60574d41382d2417110a02000000000000000000000002091019222935404b55606c7884919dabb0a69a8e8174665c5145382c1f13060000000815222e3b4754606a7884919ea9b1a79c8f82756c61574d453d36302d292427272723282c2e343a4145515b606d7a85929eaab0a69b8e8275675d5145392c1f13060000000004111d2935414b55606d79839098a3aba9a09691857d746e6964615d565b5a5a5a5a555c6063666d7179818b939aa4afa89f958c80736a5f54473d32271b0f0100000000101d2936424f5b677177797979797979797979797979797979797979797979797979797979797979797979797979797979797671665b4e4236291c10000000000006121f2b3844505c66707d89939da6b0aca49f959089837f7b76736f6d666663605d555754524c4a4745413a3936302c27211b160d08020000000000000000000000101d293643505c6976838f8b7f7265584c3f3225190c00000000000000000000000000000000000000000000000000000c1925323f4c5865727f8b8f8376695c504336291d1000000915202b353f474e5253535353535353534947433c342b20150a000000000008141f2a343e464d5152535353535353535353535353535353535353535353535353535353535252514f4d4b4846443f3838332d28221a140e06000000000000000000000000000000000000000000050e172129323a414550555c6064686e7174767778797978787674716e6965605d555045403a312920170e040000000000000000000713202c3945525d687679797979797979736e64584c3f3326190d00000714212d3a46535f697679797979797979726d62564a3e3124180b000000000000131f2c3946525f6c798686868686868686868686868686868686868686858585848381807e7c7976736f6c65615e57534d45413a3127221b140b0300000000000000000000000000000000000000000000000000000000000000000000000007121d27313d45515c676f7c86868686868686867b6e6154483b2e211508000000000000000000121e2b3845515e6b7884919eabaea194887b737373737373737373737373737373737373737373737373737373737373737373706b6155483c2f231609000000000000000000020a131c242c323b41464d5254585f626568696b6c6c6c6c6b6a686663605c54544e4e4c4841382f1d150c03000000000000000000000005121e2a36424d5764717e8b96a1ab9f958a7d70675d51454039302f2e2f2f38404b55606d7986888583817e7c796d6054473a2d211407000000000000000000020c162029323a434b515960636b7075797c7f82838485868685858382807d7a76726d67605c544d453d352b23190e050000000000000000000814212e3b4754616e7a87939facafa3998c7f72675d51453b2f261b1206000000000000000000000000000000071018242f3944505b66727e8b99a3aeac9f9285796d6053463a2d2013080000000916222f3c4955626f7c8896a1acaca095897c6f625a50453b332a25201d191a1a1a181c1f23282f353f45515d67727f8b98a2aeac9f9286796d6053473a2d201406000000000613202c3945515d67737f8c95a0aaada19791847b706b615e5754524c4e4d4d4d4e4b5153545c60676d747f88939fa5afa79f92877c6f62584e43372b1d1207000000000e1a27333f4a555f676a6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6a665f554a3e32261a0d00000000000713202d3a4653606d7883909da5afafa49a938c837d77726e686663605c545653514b4a4746413e3a3935302d2a251e1b17151312100b0600010000000000000000101d293643505c6976838f8b7f7265584c3f3225190c00000000000000000000000000000000000000000000000000000c1925323f4c5865727f8b8f8376695c504336291d100000040f19242d353d424546464646464646463c3b37322b22190f040000000000020d18222c343b4144464646464646464646464646464646464646464646464646464646464646454443413e3c3937332d2c27211d170e09030000000000000000000000000000000000000000000000050f1720282f353e434b5153565e616467696b6b6c6c6c6b696765615e5753514b433e352f281f170e050000000000000000000004111d2935414c565d6c6c6c6c6c6c6c6c67645c52473b2f23170b000005121e2b37424d575f6c6c6c6c6c6c6c6c65625b51463a2e221509000000000000121f2b3844515d6974797979797979797979797979797979797979797979787877767573716f6d666662605b53534d47423c352f281f17110a0200000000000000000000000000000000000000000000000000000000000000000000000000010b151f2834404b55606a6f797979797979797976695e53463a2d211407000000000000000000121e2b3845515e6b7884919eabb4a79a8e818080808080808080808080808080808080808080808080808080808080808080807d7063574a3d3024170a00000000000000000000020e1925303b444c525f6060606060605d5d5e5f5f5f5f5e5d5b596060606060605a58534a41362b2014080000000000000000000000020e1a26313b4653606d7984919ea7a79e9184796d605b514b423d3c3b3c3d424a515d67717e8b9892908e8b897e7164574b3e3124180b00000000000000000000050e172029313940454f54596063676d70727576787879797878777573706d6865605d55504a423c332b23191107000000000000000000030f1b27333f495364717e8b9aa4afac9f92867a6e61554b4033291d140a000000000000000000000000000000000007121d28333f4a54616d7a86929facaea298897d706356493d2f24190d0100000d1a2633404d596673808c99a8b2aa9d9083776a6054483e332a211a14110d080d070c1013181d242935414c55606d7985929fabaea2988a7d7164574a3e2e23170b000000000714212d3a4754606d7a85929fa7b0a69e92857b6e696059524d47464141404040414045464b51555d606d727f8b939ea9afa3998f82766a605447392f24180c000000000a16222e39434d555b5d606060606060606060606060606060606060606060606060606060606060606060606060606060605d5b554d43382d22160a0000000003101c28343f4a5464717e8a95a0acaea49f93888078706b65615e565653514a494745403d3a3936302d2c292424242b29262422201f1c1711110c0600000000000000101d293643505c6976838f8b7f7265584c3f3225190c00000000000000000000000000000000000000000000000000000c1925323f4c5865727f8b8f8376695c504336291d1000000008121b242b31363839393939393939392f2e2b27201910070000000000000006101a222a30353839393939393939393939393939393939393939393939393939393939393938373634322f2d2b27221b1c16110c060000000000000000000000000000000000000000000000000000050d161e242931394045474c5254575a5c5e5f5f5f5f5e5c5a5854524d474540393129241d160d050000000000000000000000010d19242f3a444c525f606060606060605a58524a40362b1f13070000020e1a26313c454d535560606060606060585651493f34291e1206000000000000101c2935414d5862696c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6b6a6968666462605c545653504946423b373129241e160d0600000000000000000000000000000000000000000000000000000000000000000000000000000000030d18232e39434e5860626c6c6c6c6c6c6c6c6c5e574d42362a1e1205000000000000000000121e2b3845515e6b7884919eabb7a99d938e8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8073665a4d4033271a0d0000000000000000000005111e2a36414c565e6c6c6c6c6c6c6c6a675f555353524f5960636c6c6c6c6c6c67645c53483c3024180b00000000000000000000000009141f2c3844515c66727f8b95a0aca1968e81756e605c544f4a4948494a4e545b606d7984919e9f9d9a92857a6d6053473a2d2014070000000000000000000000050e171f272f343d43484f54555c606366686a6b6c6c6c6c6b6a686664615e5653514b443f38302a211911080000000000000000000005121f2b3744505b6575818e9bacb6a99c8f8276685e5243392f21170b020000000000000000000000000000000000010b17222d3846525d6875828f9ca8b4aa9a8d807367564c4135291d11040005111e2a36424d576976838f9ca9b5ab998c7f7366584e43362c21180f0905010000000004070c1319242f3a45515d6774818e9aa7b4aa9b8e817468544a3f34281c1003000006131f2b37434e5866727f8c97a2adaa9e948a7d70695f574f46423b3935303433342e34383a40454b515b626d74818e97a1adab9e94897c6f62554b4035291d100400000006111c27313b434a4f5153535353535353535353535353535353535353535353535353535353535353535353535353535353504e4a433a31271c11050000000006121f2b3844505c6675828f9ca7b1aa9d928b7e736d66605954524d494644403d3a39352f2e2d2a252120282d3031383533312f2d2b28231c1d181109000000000000101d293643505c6976838f8b7f7265584c3f3225190c00000000000000000000000000000000000000000000000000000c1925323f4c5865727f8b8f8376695c504336291d100000000009121920262a2c2c2d2d2d2d2d2d2d22221f1b150f070000000000000000000810181f25292b2c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2c2c2b2a29272522201f1b1711100b050000000000000000000000000000000000000000000000000000000000040c13191f272f34383b4146474b4e4f515253535251504e4b4846423b38352f271f18130c040000000000000000000000000008131e28323a414553535353535353534d4c4740382e24190e0200000009141f2a333c424648535353535353534c4a463f372d23180d010000000000000d1925303b4650585d5f606060606060606060606060606060606060605f5f5e5e5c5b5a585553514b4946443f3836312b261f19130c0400000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d27303c464e54555f606060606060605f534d453b31251a0e02000000000000000000121e2b3845515e6b7884919eabb7afa59d9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a998d8073665a4d4033271a0d000000000000000000000714202d3946525e68767979797979797771675b4f464854606b70797979797979746e64584c4033271a0d01000000000000000000000004101c2834404a54606d7883919aa4a89e938c80746d6660595755555556585f666c75818e96a1aca3998e8174675d5145392c201306000000000000000000000000050d151d232932383d44484b515356595b5d5e5f5f5f5f5e5d5c5a5754524c47454039342e261e180f0800000000000000000000000613202d394653606c7885929eabb3a9988b7f7265564c4131271d0f050000000000000000000000000000000000000006111c2935414c5665727f8b98aab4aa9d918477685d5245392c201306000714202d3a46525e697885929eabafa399897c6f6256493d32231a0f060000000000000000000108131e2935404b5564707d8a97a9b3aa9d908377665c5044382b1f120600000815222e3b4754606a7884919ea9b1a79c8f82756c61574d453d36302d292427272723282c2e343a4145515b606d7a85929eaab0a69b8e8275675d5145392c1f1306000000000b151f2931393f42444646464646464646464646464646464646464646464646464646464646464646464646464646464643423e3831281f150a00000000000713202d3a4653606d7985929facaea3988d80746c605c544f4746413c3a38342e2d2c292421201d19242c34393d3e4442403e3b3a38342e2e29231b12090000000000101d293643505c6976838f8b7f7265584c3f3225190c00000000000000000000000000000000000000000000000000000c1925323f4c5865727f8b8f8376695c504336291d100000000000080f151a1d1f20202020202020201615130f0a040000000000000000000000060d14191c1f1f202020202020202020202020202020202020202020202020202020201f1f1e1c1a181513120f0b0600000000000000000000000000000000000000000000000000000000000000000001080d151d23292c3036393b3e414344454646454543413e3b3a36302c29241d150d07010000000000000000000000000000010c1620282f35394646464646464646403f3b362e261c120800000000030e18212a31373a3b464646464646463f3e3a342d251b11060000000000000008141f2a343e464d51525353535353535353535353535353535353535352525251504e4d4b494645403c3937332d2a251f1a150d080100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b151e2b343c43474953535353535353534846423b33291f140900000000000000000000121e2b3845515e6b7884919eabacacafa9a7a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6998d8073665a4d4033271a0d000000000000000000000814212e3b4754616e7a86868686868683776a5d5144495663707d8686868686868074675a4e4134271b0e010000000000000000000000000c18232e3944515c66707d88939fa6a59c928c8079706b666462616263666a6f78808d939ea9a89f92877b6e62554b4035291d100400000000000000000000000000030b121821272c323839404546494c4f50515253535252504f4d4a4746413a39352f28231c150c060000000000000000000000000815222e3b4855616e7b8897a1adada197887b6e6255483b3022150b0000000000000000000000000000000000000000000d1924303c4855626f7b8898a2aeaca095877a6d6054473a2d211407000814212e3b4754616e7b8797a2adac9f92867a6d6053473a2d2014070000000000000000000000010d18242f3b4754616e7a8797a1adac9f9286796d6053463a2d20130700000916222f3c4955626f7c8896a1acaca095897c6f625a50453b332a25201d191a1a1a181c1f23282f353f45515d67727f8b98a2aeac9f9286796d6053473a2d20140600000000040d171f272e333637393939393939393939393939393939393939393939393939393939393939393939393939393939393736322d271f160d0300000000000815222f3b4855626e7b8898a2aeac9f92867a6d615a504a423d3936302d2c282320201d18141317222c363e45494b514f4d4a4846443f383a342d241b110600000000101d293643505c6976838f8b7f7265584c3f3225190c00000000000000000000000000000000000000000000000000000c1925323f4c5865727f8b8f8376695c504336291d1000000000000004090e1112131313131313131309080603000000000000000000000000000002080d10121313131313131313131313131313131313131313131313131313131313131211100e0b0906050300000000000000000000000000000000000000000000000000000000000000000000000000030b12181c1f252a2d2e3134363838393939383634322e2d2a251f1d18120b030000000000000000000000000000000000040d161e24292c393939393939393934332f2b241c140a010000000000060f181f262b2d2e3939393939393932312e29231b13090000000000000000020d18222c343b41444646464646464646464646464646464646464646464545444342403e3c3a38342e2d2b27221b1a140e090300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c19222b32373b3c46464646464646463b3a36312921170d0300000000000000000000121e2b3845515e6b7884919e9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f998d8073665a4d4033271a0d000000000000000000000814212e3b4754616e7a87939393939084776a5d5144495663707c89939393938d8174675a4e4134271b0e0100000000000000000000000007121c2834404a54606b73808d949fa7a49c928d837d7773706f6e6f7072767c828d929da5aaa1968d8174695f5343392f24180d01000000000000000000000000000001070c161b21272c2e34383a3d3f42434545464645454442403d3a3936302c29241d17110a03000000000000000000000000000a1724303d4a5763707d8a96a9b3ab9e928578695f53473a2e2114030000000000000000000000000000000000000000000813202d394653606c7985929facb1a795897c6f6256493c2f231609000916232f3c4956626f7c8995a9b3aa9e918477675d5145382c1f13060000000000000000000000000714202d3946525e687885919eabaea398887b6e6255483b2f22150800000d1a2633404d596673808c99a8b2aa9d9083776a6054483e332a211a14110d080d070c1013181d242935414c55606d7985929fabaea2988a7d7164574a3e2e23170b0000000000050d151c2227292a2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2a2926221c150d040000000000000a1723303d4a5663707d8996aab4a89c8f8275685e52443f38302d2a25201f1c181413100d07111d28343e485055575e5c59575553504a4a453f362d23180c01000000101d293643505c6976838f8b7f7265584c3f3225190c00000000000000000000000000000000000000000000000000000c1925323f4c5865727f8b8f8376695c504336291d10000000000000000001040606060606060606060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070c1014191e20212427292b2c2c2c2c2b29272521201e1a14100c070100000000000000000000000000000000000000040c13191d202d2d2d2d2d2d2d2d2726231f19120a0200000000000000060e141a1e21222d2d2d2d2d2d2d2524221e1811090100000000000000000006101a222a303538393939393939393939393939393939393939393939393837363533312f2d2c2823201f1b17110e09030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007101920272b2e2f39393939393939392e2d2a251f170f050000000000000000000000121e2b3845515e6b7884919393939393939393939393939393939393939393939393939393939393939393939393939393938d8073665a4d4033271a0d000000000000000000000814212e3b4754616e7a87949f9f9d9084776a5d5144495663707c89969f9f9a8d8174675a4e4134271b0e01000000000000000000000000000c18232e39424f59606d788290959fa7a49d95908984807d7c7b7c7d7f838890949da4aaa39891847a6d61574d4231281d12070000000000000000000000000000000000040a0f161b1d23282c2d30333537383939393938373533312e2d2a251f1d18120c060000000000000000000000000000000c1926323f4c5965727f8c98a5b2a99c8f837669574d42372b1e120600000000000000000000000000000000000000000006121f2b3844505b667783909daab1a4978b7e7164584b3e3125180b000a1723303d4a5663707d8996a3b0a99c90837669554b4035291d100400000000000000000000000005111e2a36414c566a7683909da9b4aa96897c6f6356493c302316090005111e2a36424d576976838f9ca9b5ab998c7f7366584e43362c21180f0905010000000004070c1319242f3a45515d6774818e9aa7b4aa9b8e817468544a3f34281c10030000000000040b11161a1d1e202020202020202020202020202020202020202020202020202020202020202020202020202020201d1c1a16110a03000000000000000b1724313e4a5764717d8a97a4b0a6998d807366564c41342e26201e191312100c070604010815212d3945505a61646b68666462605c545651483f34291d1105000000101d293643505c6976838f8b7f7265584c3f3225190c00000000000000000000000000000000000000000000000000000c1925323f4c5865727f8b8f8376695c504336291d100000000000000000000000000000000000000000000000000000000000000000000004090e1112131313131313131313060400000000000000000000000000000000000000000000000004080a0a1313131313131313130e0e0b080300000000000000000000000000000000000000000000000000000000000004080e111414181b1c1e1f20201f1e1d1b181514120e0904000000000000000000000000000000000000000000000001080d111314202020202020201a1917130e080100000000000000000003090e12141520202020202020191815120d060000000000000000000000000810181f25292b2c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2c2c2b2b2928272522201f1c1813120f0b060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070e151b1f22222c2d2d2d2d2d2d2d21211e1a140d05000000000000000000000000121e2b3845515e6b788486868686868686868686868686868686868686868686868686868686868686868686868686868686868073665a4d4033271a0d000000000000000000000814212e3b4754616e7a8794a1aa9d9084776a5d5144495663707c8996a3a79a8d8174675a4e4134271b0e010000000000000000000000000007121c27303d44505c666d7a8390959da5a7a09d95918d8a888888898c90959c9fa6a9a19892867c6f685e52453c311f160c0100000000000000000000000000000000000000040b1012181c1f202326282a2b2c2c2c2c2b2a29272421201d1913100c0701000000000000000000000000000000000e1b2834414e5b6774818e9aa7b3a79a8d8074675a4d4131261a0e02000000000000000000000000000000000000000000030f1c28333f4a546875818e9ba8b3a6998d8073665a4d4033271a0d000b1724313e4a5764717d8a97a4b0a89b8f8275685c4f422f24180c00000000000000000000000000010d192530424f5c6875828f9ba8b0a3968a7d7063574a3d3024170a000714202d3a46525e697885929eabafa399897c6f6256493d32231a0f060000000000000000000108131e2935404b5564707d8a97a9b3aa9d908377665c5044382b1f120600000000000000060a0e10111313131313131313131313131313131313131313131313131313131313131313131313131313131310100d0a050000000000000000000b1724313e4a5764717d8a97a4b0a5998c7f7266594c3f30231c15110e080807070808090e131925303d4955616c71777573716e6d6665625b51453a2e221509000000101d293643505c6976838f8b7f7265584c3f3225190c00000000000000000000000000000000000000000000000000000c1925323f4c5865727f8b8f8376695c504336291d10000000000000000000000000000000000000000000000000000000000000000000080f151a1d1f20202020202020202013100c070100000000000000000000000000000000000000050b101416172020202020202020201b1a18140f0901000000000000000000000000000000000000000000000000000000000000020507080b0e10111213131212100e0b0807050200000000000000000000000000000000000000000000000000000001040707131313131313130d0d0b07020000000000000000000000000002050708131313131313130c0b0906010000000000000000000000000000060d14191c1f1f202020202020202020202020202020202020201f1f1f1e1d1b1a18161313100c0705030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0f13151620202020202020201514120e090300000000000000000000000000111d2a3743505c6872787979797979797979797979797979797979797979797979797979797979797979797979797979797979736e63584b3f3226190c000000000000000000000814212e3b4754616e7a8794a1a99d9084776a5d5144495663707c8996a3a79a8d8174675a4e4134271b0e0100000000000000000000000000000b151e28343f4a545d686d7a838e939ea0a8a8a09d999795949596999d9fa7aba49f9792867e706a60564c41332a1f0d040000000000000000000000000000000000000000000000070c10131316191c1d1e1f20201f1f1d1c1a171413110d080400000000000000000000000000000000000000101c2936434f5c6976828f9ca9b2a5998c7f7266594c3f3326190900000000000000000000000000000000000000000000000b17222d404d5a6773808d9aa6b3a89b8e8175685b4f4235281c0f000b1825313e4b5864717e8b97a4b1a89b8e8275685b4f4235281c070000000000000000000000000000081b2835414e5b6874818e9ba7b0a4978a7d7164574a3e3124170b000814212e3b4754616e7b8797a2adac9f92867a6d6053473a2d2014070000000000000000000000010d18242f3b4754616e7a8797a1adac9f9286796d6053463a2d2013070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1724303d4a5763707d8a96abb5a69a8d807367544b403428201c1816151514141515171a1e242b37434e5864717e8482807d7b7977726d62564a3d3124170b000000101d293643505c6976838f8b7f7265584c3f3225190c00000000000000000000000000000000000000000000000000000c1925323f4c5865727f8b8f8376695c504336291d10000000000000000000000000000000000000000000000000000000000000000009121920262a2c2c2d2d2d2d2d2d2d2d1f1c18120b0300000000000000000000000000000000000810171c2023242d2d2d2d2d2d2d2d2d282724201a130b020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080d1012131313131313131313131313131313131313131313121211100f0d0b090706040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030608091313131313131313080705020000000000000000000000000000000f1b27333f4b5660686b6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c66635c52473b2f23170a000000000000000000000814212e3b4754616e7a87949c9c9c9084776a5d5144495663707c89969c9c9a8d8174675a4e4134271b0e010000000000000000000000000000030c17232e38424c565e686d79818991969d9fa4aca6a3a2a1a2a3a5a8a9a29f99938e857c706c61584e443a3021180e00000000000000000000000000000000000000000000000000000406070a0c0f10121213131212110f0d0a07070501000000000000000000000000000000000000000000101d2a3643505d697683909ca9b1a4978a7e7164574b3e3124180b0000000000000000000000000000000000000000000000061926323f4c5965727f8c98a5b2a89c8f8275695c4f4236291c0f000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2834414e5b6774818e9aa7b1a4978b7e7164584b3e3125180b000916232f3c4956626f7c8995a9b3aa9e918477675d5145382c1f13060000000000000000000000000714202d3946525e687885919eabaea398887b6e6255483b2f221508000000000000000000000000000000000000000000000105090b0b1313131313131313120706030000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8899a4afa89b8e8275665c51453a322c29232322212121212223252a2f353f47535f6a76828f8f8c8a8886837e7265584b3f3225180c000000101d293643505c6976838f8b7f7265584c3f3225190c00000000000000000000000000000000000000000000000000000c1925323f4c5865727f8b8f8376695c504336291d100000000000000000000000000000000000000000000000000000000000000008121b242b3136383939393939393939392c29231d150d0300000000000000000000000000000008121a22282d30313939393939393939393533302b251d140b010000000000000000000000000000000000000000000000000000000003090d1012131313131313131313060300000000000000000000000000000000000000000000000000000000000000000004080c0e0f13131313131313131313131313131313131313131313131313131313131313131313131313130f0e0c080400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17232f3a444e565c5e60606060606060606060606060606060606060606060606060606060606060606060606060606060605a58524a40362a1f1307000000000000000000000814212e3b4754616e7a878f8f8f8f8f84776a5d5144495663707c898f8f8f8f8d8174675a4e4134271b0e0100000000000000000000000000000006111c26303a444c565e676d747d848a90939a9a9c9e9f9f9f9e9d9b9997928d87817a6f6a615a50463c32281e0f060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111e2a3744515d6a7783909daab0a3968a7d7063574a3d3024170a00000000000000000000000000000000000000000000000b1825323e4b5865717e8b98a4b1a99c908376695d5043362a1d10000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b000a1723303d4a5663707d8996a3b0a99c90837669554b4035291d100400000000000000000000000005111e2a36414c566a7683909da9b4aa96897c6f6356493c30231609000000000000000000000000000000000000000000060c1115171820202020202020201f1312100c06000000000000000000000000000000000000000000000000000714202d3a4753606d7a86939facab9f9285796d60564c443d38342f2f2f2e2d2e2e2f3031363a4145515b626f7c87939b999798928a7e7164574b3e3124180b000000101d293643505c6976838f8b7f7265584c3f3225190c00000000000000000000000000000000000000000000000000000c1925323f4c5865727f8b8f8376695c504336291d10000000000000000000000000000000000000000000000000000000000000040f19242d353d424546464646464646464638342f271f150b010000000000000000000000000006101a242c33393c3d46464646464646464641403c362f261d1309000000000000000000000000000000000000000000000000000000070e14191d1f20202020202020202012100c06000000000000000000000000000000000000000000000000000000000002090f14181b1c20202020202020202020202020202020202020202020202020202020202020202020202020201c1b18140f0902000000000000000000000000000000000000000000000000000000040607090c0e1011121313131211100f0d0b0807050200000000000000000000000000000000000000000000000000000000000000000000000000000000000000040607090c0e1011121313131211100e0b080705020000000000000000000000000000000000000000000000000007121d28323c444b505153535353535353535353535353535353535353535353535353535353535353535353535353535353534d4b4740382e24190e02000000000000000000000714212d3a4754606d7a8283838383838174675b4e414855626f7c8283838383827f7265584c3f3225190c00000000000000000000000000000000000a151e28323a444c555c606b70787e83878b8d909192929291908f8c8985817c746d68605850483e342b20160c000000000000000000000000000000000000000000000000000000000000000306060808080808080605030000000000000000000000000000000000000000000000000000111e2b3844515e6b7784919eaaafa396897c706356493d3023160a00000000000000000000000000000000000000000000000b1824313e4b5764717e8a97a4b1aa9d9083776a5d5044372a1d11000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b000b1724313e4a5764717d8a97a4b0a89b8f8275685c4f422f24180c00000000000000000000000000010d192530424f5c6875828f9ba8b0a3968a7d7063574a3d3024170a00000000000000000000000000000000000000000911171d2124252d2d2d2d2d2d2d2d2b201f1c17110a03000000000000000000000000000000000000000000000006131f2c3945515d677683909dabada2978a7e71685e564f4745403e3c3b3b3a3a3b3b3d3f42464c515a626d76828f99a4a6aa9f92857a6d6053473a2d201407000000101d293643505c6976838f8b7f7265584c3f3225190c00000000000000000000000000000000000000000000000000000c1925323f4c5865727f8b8f8376695c504336291d100000000000000000000000000000000000000000000000000000000000000915202b353f474e5253535353535353535345403931271d1207000000000000000000000000050e18222c363e44494a5353535353535353534e4c4841392f251a0f03000000000000000000000000000000000000000000000000000811191f25292b2c2d2d2d2d2d2d2d2d1f1c17110a030000000000000000000000000000000000000000000000000000030c131a202527282d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d282725201a130c03000000000000000000000000000000000000000000000004070c10121316191b1d1e1f1f201f1f1e1d1b19171414110e0806030000000000000000000000000000000000000000000000000000000000000000000000000003070c10131416191b1d1e1f1f201f1f1e1c1a181514120e09050200000000000000000000000000000000000000000000010c16202a323a3f43454646464646464646464646464646464646464646464646464646464646464646464646464646464646403f3b362e261c120800000000000000000000000713202c3945525d686d767676767676746f64584c4047535f6a6f767676767676726d62564a3e3125180b0000000000000000000000000000000000030c162029323a434b515960666d71767b7e8183848586858484827f7d79746f6a615e564e463e362c22190e050000000000000000000000000000000000000000000000000000000000060b0f121314141414141413120f0b06000000000000000000000000000000000000000000000000121f2b3845525e6b7885919eabafa296897c6f6356493c3023160900000000000000000000000000000000000000000000000a1724313d4a5764707d8a97a3b0aa9e9184776b5e5144382b1e11000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b000b1825313e4b5864717e8b97a4b1a89b8e8275685b4f4235281c070000000000000000000000000000081b2835414e5b6874818e9ba7b0a4978a7d7164574a3e3124170b0000000000000000000000000000000000000009121b22292e31323939393939393939382d2c28231c150c030000000000000000000000000000000000000000000004101d2935404b5566737f8c99a3aea99e91857a6d68605953514b4b494848474748484a4b4d53555d606c727f8c949fabaea3998d8074675d5145392c201306000000101d293643505c6976838f8b7f7265584c3f3225190c00000000000000000000000000000000000000000000000000000c1925323f4c5865727f8b8f8376695c504336291d100000000000000000000000000000000000000000000000000000000000000e1a26313d4751595e5f606060606060605f514b43392f23180c0000000000000000000000030c17202a343e485055576060606060606060605b59534b41362b20140800000000000000000000000000000000000000000000000007111a232a3135383939393939393939392c28231c150c03000000000000000000000000000000000000000000000000020c151e252c31343539393939393939393939393939393939393939393939393939393939393939393939393939393534312c251e150c020000000000000000000000000000000000000001070c1013181c1f20232527292b2b2c2d2c2c2b2a28262421201e1915120f0a03000000000000000000000000000000000000000000000000000000000000000000060b1012181d1f202325282a2b2b2c2d2c2c2a29272521211e1a14110e0902000000000000000000000000000000000000000000050f1820282f333738393939393939393939393939393939393939393939393939393939393939393939393939393939393933322f2a241c140a00000000000000000000000004111d2935414c565d6069696969696967645c53483c434e585f6269696969696965625b51463a2e221609000000000000000000000000000000000000040d172029303940454f545c6064686e7174767878797878777573706d67625f58524c443d342c241a100700000000000000000000000000000000000000000000000000000000020a11171c1f20212121212121201f1b17110a0200000000000000000000000000000000000000000000121f2b3845525e6b7884919eabafa296897c6f6356493c3023160900000000000000000000000000000000000000000000000b1724313e4a5764717d8a97a4b0aa9d9184776a5e5144372b1e11000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2834414e5b6774818e9aa7b1a4978b7e7164584b3e3125180b00000000000000000000000000000000000006111b242d343a3d3e4646464646464646453a38342e261e150a00000000000000000000000000000000000000000000000c18242f3b4754616e7a86929fa8ada19790827a6f6b63605c5557565554545454555658575e61676d747e88939fa6b0a89f92867b6e61554b4035291d1004000000101d293643505c6976838f8b7f7265584c3f3225190c00000000000000000000000000000000000000000000000000000c1925323f4c5865727f8b8f8376695c504336291d10000000000000000000000000000000000000000000000000000000000000111d2a36424e59636a6c6c6c6c6c6c6c6c6c5c554b4034291c1004000000000000000000000b151e29323c46505a61646c6c6c6c6c6c6c6c6c68645d53483c3024180b0000000000000000000000000000000000000000000000030e19232c353c414546464646464646464638342e261e150a00000000000000000000000000000000000000000000000009131e272f373d4042464646464646464646464646464646464646464646464646464646464646464646464646464642403d372f271e1309000000000000000000000000000000000003090e12181d1f23282c2d3032343638383939393838373533312e2d2a25211f1b150f0b060000000000000000000000000000000000000000000000000000000000020a11171c1f24292c2d30323437373839393938373634312e2d2a25201e19140e09020000000000000000000000000000000000000000060f161d23272a2b2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2726231f19120a02000000000000000000000000010d1924303a444c52545c5c5c5c5c5c5b58534a41363c464e53555c5c5c5c5c5c585651493f34291e120600000000000000000000000000000000000000050e171e272e343d424a5053565e616567696b6c6c6c6b6a686663605c55534e46413a322b221a110800000000000000000000000000000000000000000000000000000000020b141c22282b2d2e2e2e2e2e2e2d2b27221b140b02000000000000000000000000000000000000000000111e2b3844515e6b7784919eaab0a396897d7063564a3d3023170a00000000000000000000000000000000000000000000000b1825313e4b5864717e8b97a4b1a99d9083766a5d5043372a1d10000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b0000000000000000000000000000000000010c17222d363f454a4b53535353535353535246443f3830261c1106000000000000000000000000000000000000000000000714202d3946525e6874808d96a1aaa99f9490847c76706d67666462626160616162636567696e737a818b939aa4afaaa1968d8074695e5343392f24180d01000000101d293643505c6976838f8b7f7265584c3f3225190c06060606060606060606060606060606060606060606060606060c1925323f4c5865727f8b8f8376695c504336291d10000000000000000000000000000000000000000000000000000000000000121f2c3845525e6a75797979797979797976675c5145382c1f130600000000000000000007121c27303a444e58616c70797979797979797979746f64594c4033271a0e010000000000000000000000000000000000000000000009141f2a353e474d51535353535353535353443f3830261c110600000000000000000000000000000000000000000000040f1a252f3941484d4f53535353535353535353535353535353535353535353535353535353535353535353535353534f4d4841392f251a0f04000000000000000000000000000001070c141a1d24292c2e34383a3c3f4143444546464645444342403e3b3936302e2b261f1c17110a020000000000000000000000000000000000000000000000000003090c141c23282b2f35383a3c3f41434445464646454443413e3b3a36312d2a251f1a140d050000000000000000000000000000000000000000050c12171b1d1e20202020202020202020202020202020202020202020202020202020202020202020202020202020201a1917130e0800000000000000000000000000000008131e28323a4145475050505050504e4c4841382f343c4347485050505050504c4a463f372d23180d010000000000000000000000000000000000000000050c151d232830383f44464d5254585a5d5e5f5f5f5e5d5c595653514b47433c3630292019100800000000000000000000000000000000000000000000000000000000000a141d262d3338393b3b3b3b3b3b3937332d261d140a000000000000000000000000000000000000000000111e2a3744515d6a7784909daab0a3978a7d7064574a3d3124170a00000000000000000000000000000000000000000000000c1825323f4b5865727e8b98a5b1a99c8f8276695c504336291d10000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b000000000000000000000000000000000005111d29343f4850565860606060606060605e53504a42382e23170c0000000000000000000000000000000000000000000005111e2a36414c56606d7a849198a2aaa69f969189827d797573716f6e6e6d6d6e6e707274777b80858e939fa4acaba3989184796d60574d4231281d120700000000101d293643505c6976838f8b7f7265584c3f322519131313131313131313131313131313131313131313131313131313131925323f4c5865727f8b8f8376695c504336291d1000000000000000000104060606060606060606000000000000000000000013202c3946535f6c798786868686868686796d6053473a2d2014070000000000000000081118232e39424c565f6a707e8786868686868686868174685b4e4135281b0e02000000000000000000000000000000000000000000010d1925313c4750585e5f606060606060605f504a42382e23170c000000000000000000000000000000000000000000000814202c37414b53595b60606060606060606060606060606060606060606060606060606060606060606060606060605b59534b41372c20140800000000000000000000000000030b12181f252a2f35393a404446494c4e5051525253525251504e4c4a4746413c3a37312b28221c140b070000000000000000000000000000000000000000000000060d141a1e262e34383a404547494c4e50515252535252514f4d4b4846423b3a36302a251f170e07010000000000000000000000000000000000000001070b0f111213131313131313131313131313131313131313131313131313131313131313131313131313131313130d0c0a070200000000000000000000000000000000020c1620283035393a43434343434341403c362f262a32373b3c4343434343433f3e3a342d251b110700000000000000000000000000000000000000000000030b12181e262e34383b4146474b4e505152535251514f4c4a4645403937322a251e170e07000000000000000000000000000000000000000000000000000000000006111c262f383f444647474747474746443f382f261b11060000000000000000000000000000000000000000101d2a3643505d697683909ca9b1a5988b7e7265584b3f3225180700000000000000000000000000000000000000000000000d1a2633404d596673808c99a6b3a89b8f8275685c4f4235291c0f000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b00000000000000000000000000000000000915212e3a45505a62656c6c6c6c6c6c6c6c6b605c544a3f34281c1003000000000000000000000000000000000000000000020e1925303b45525d686f7c869298a0a8a8a09e948f8a8582807e7c7b7b7a7a7b7b7d7e8084878d92979da5afaaa29992867c6f675d51453b311f160c0100000000101d293643505c6976838f8b7f7265584c3f322520202020202020202020202020202020202020202020202020202020202025323f4c5865727f8b8f8376695c504336291d1000000000000004090e11121313131313131313090806030000000000000013202c3946535f6c7986929393939393867a6d6053473a2d20140700000000000000060f19232834404a545e686f7c86929a93939393968f82786d6053463a2d2013070000000000000000000000000000000000000000000004101d2935414d58626a6c6c6c6c6c6c6c6c6c5c544a3f34281c10030000000000000000000000000000000000000000000c1825313d48535d65686c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c68655d53483d3125180c000000000000000000000000060d151d24293136394045474a515356585a5c5e5e5f605f5f5e5d5b595754524c4847433c38332d261d18120b030000000000000000000000000000000000000000070f181f262a30383f44464b515356585b5d5e5e5f605f5f5d5c5a5854534d4746423b3630292018120b03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040e161e24292c2d3636363636363433302b251d20262b2e2f36363636363632312e29231b130900000000000000000000000000000000000000000000000000070c151c23282c3036393b3e414345454645454442403d3a38342e2b262019130d050000000000000000000000000000000000000000000000000000000000000b17222d38424a505354545454545453504941382d22170b00000000000000000000000000000000000000000f1c2835424f5b6875818e9ba8b3a6998c807366594d402f23180c00000000000000000000000000000000000000000000010e1b2834414e5b6774818e9aa7b4a79a8e8174675b4e4134281b0e000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b00000000000000000000000000000000000b1724313d4a56626c717979797979797979786d665c5044382c1f13080000000000000000000000000000000000000000000008141e2935414c56606a707d8691969fa3aba69f9c98928f8c8a89888787878788898b8d9195999fa2a9aba69f9892877e706a60554b4133291f0d040000000000101d293643505c6976838f8b7f7265584c3f322d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d323f4c5865727f8b8f8376695c504336291d100000000000080f151a1d1f20202020202020201615130f0a04000000000013202c3946535f6c7986929f9f9f9f93867a6d6053473a2d201407000000000000040d18212b353d44515c666d7a849198a29f9fa19791847a6d665c5144382c1f12060000000000000000000000000000000000000000000005121f2b3845515e6a74797979797979797976665c5044382c1f12060000000000000000000000000000000000000000000e1b2734404d59656f757979797979797979797979797979797979797979797979797979797979797979797979797979756f65594d4034271b0e00000000000000000000000910181f272f353b42464b5153545c60636567696b6b6c6c6c6b6b6a686664615e5655534e46443f382f28231d150c05000000000000000000000000000000000000081019212931363e424a5053555d606365676a6a6b6c6c6c6b6a696764615e5754524d46423b3329241d150d040000000000000000000000000000000000000000000000000000000000020608080b0e1011121313121211100d0b0807050200000000000000000000000000000000000000000000000000000000000000000000000000040c13191d2021292929292929282724201a13151b1f21222929292929292525221e181109010000000000000000000000000000000000000000000000000000030a11171c1f252a2d2e3234363839393938373533302d2c28231d1b150d0802000000000000000000000000000000000000000000000000000000000000030f1c28333f4a545b60616161616161605b53493f33271b0f03000000000000000000000000000000000000000d1a2734404d5a6773808d9aa6b3a89b8e817568554b4034291c100400000000000000000000000000000000000000000005121e2a36424d576976838f9ca9b2a5988c7f7265594c3f3226190c000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b0000000000000000000000000000000005121e2a36424d5765717e868686868686868685786d6053463a3025190d01000000000000000000000000000000000000000000020d19242f3a434e58606b707c848d92999fa2aaaaa29f9c99979595949394949596989a9da0a8abaaa79f9d948f857d706c61584e433a2f21170d000000000000101d293643505c6976838f8b7f7265584c3f393939393939393939393939393939393939393939393939393939393939393939393f4c5865727f8b8f8376695c504336291d100000000009121920262a2c2c2d2d2d2d2d2d2d22221f1b150f070000000013202c3946535f6c7986929facaca093867a6d6053473a2d2014070000000000020b161f2a333d47515b606d78829096a1aaaea39992857b6e685d544a4034281c1004000000000000000000000000000000000000000000000613202c3946535f6c798686868686868686786d6053463a2d2013070000000000000000000000000000000000000000000f1c2835424f5b68758286868686868686868686868686868686868686868686868686868686868686868686868686868175685b4f4235281c0f0000000000000000000009121b222a313940454d53555d6065666d6f72747677787979797877767573716e6867625f5853504a423d342e271e170e050000000000000000000000000000000008111a222b333b424650545c6063676d6f727476777879797978777674716e6966615e56524d453f352f271f160d04000000000000000000000000000000000000000000000000000205090e121415181b1d1e1f20201f1f1e1c1a181514120e090502000000000000000000000000000000000000000000000000000000000000000000000002080d1113141d1d1d1d1d1d1b1a18140f080a0f1215151d1d1d1d1d1d191816120d07000000000000000000000000000000000000000000000000000000000000060c1014191e202125272a2b2c2c2c2b2a292623201f1c18120f0a04000000000000000000000000000000000000000000000000000000000000000006121f2b3844505b666c6e6e6e6e6e6e6c655b5044372b1f1205000000000000000000000000000000000000000c1925323f4c5865727f8b98abb5aa9d908477675c5145382c1f13060000000000000000000000000000000000000000000714212d3a46535f697885929fabb4aa968a7d7063574a3d3024170a000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b000000000000000000000000000000000714212d3a46535e69768390939393939393978a7d7063564c4135291d11050000000000000000000000000000000000000000000008131e28313c464f59606a6f7980878e92989b9fa2aaa6a6a4a2a1a1a0a0a1a1a3a5a7a7aca49f9d9995908a827b706b615a50463d31281d0f05000000000000101d293643505c6976838f8b7f7265584c4646464646464646464646464646464646464646464646464646464646464646464646464c5865727f8b8f8376695c504336291d1000000008121b242b31363839393939393939392f2e2b272019100700000013202c3946535f6c7986929facada093867a6d6053473a2d20140700000000000a141d28313c454f59626d74818e949fa8aea49f92877d6f695f564c42392e23180c00000000000000000000000000000000000000000000000613202c3946535f6c798692939393939386796d6053463a2d2013070000000000000000000000000000000000000000000f1c2835424f5b6875828e9393939393939393939393939393939393939393939393939393939393939393939393938e8175685b4f4235281c0f00000000000000000009121b242c343c434b51575e61676d7175797c7f81838485858685858483817f7d7a77736f6a64605b544f454039302920170f050000000000000000000000000000060f1a232c343d454d535a61666d7075797c7f81838485858685858482807e7b77736e69615e575145403931281f160c030000000000000000000000000000000000000000000002080e11151a1e21222528292b2c2c2c2c2b2b29272522211e1a14120e09020000000000000000000000000000000000000000000000000000000000000000000000010407071010101010100e0d0b08030000030608091010101010100c0b09060100000000000000000000000000000000000000000000000000000000000000000003080e111414181b1d1e1f201f1e1e1c19171313100c0700000000000000000000000000000000000000000000000000000000000000000000000613202d394653606c787a7a7a7a7a7a776c605346392d20130600000000000000000000000000000000000000091623303c4956636f7c8999a4afac9f9286796d6053473a2d22170b0000000000000000000000000000000000000000000815222e3b4855616e7b8897a2adaea298887b6e6155483b2e221508000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b000000000000000000000000000000000815212e3b4854616e7b87939f9f9f9f9fa99b8f8275685e5246392d20150a00000000000000000000000000000000000000000000010c161f2b343d474f585f676d737b81868b8f9298989a9b9d9e9f9f9f9f9f9f9e9d9c9a989a93908d88837d766e69615950483e342b1f160c00000000000000101d293643505c6976838f8b7f72655853535353535353535353535353535353535353535353535353535353535353535353535353535865727f8b8f8376695c504336291d100000040f19242d353d424546464646464646463c3b37322b22190f04000013202c3946535f6c7986929facada093867a6d6053473a2d2014070000000006111c262f3a434d57606b727f8b939da6afa59c928b7e716b60574d443a30271c120700000000000000000000000000000000000000000000000613202c3946535f6c7986929f9f9f9f9386796d6053463a2d2013070000000000000000000000000000000000000000000f1c2835424f5b6875828e9b9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9b8e8275685b4f4235281c0f000000000000000008121b242d363e464e555d60696e74797e8285898b8d8f91919293929291908e8c8a8784807c76716c666059514b433b332921170e05000000000000000000000000030d18212c353e464e575f616c70787d8185898b8e90919192939292908f8d8b87847f7b746e69625b514b433a31281e150b000000000000000000000000000000000000000002080d14191e20262b2e2f323436383939393938373634322e2d2b26201e1a140e090200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020507080b0e101212131212110f0d0a070604000000000000000000000000000000000000000000000000000000000000000000000000000814212e3b4754616e7a8787878787877a6d6154473a2e211407000000000000000000000000000000000000000714202d3a4753606d7a86939facaea399897d706353493f33271b0f030000000000000000000000000000000000000004111d2935414c5565717e8b98a9b3ac9f9285786d6053463a2d201307000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b00000000000000000000000000000007131f2c38434e5866737f8c9aa4afaca8aaac9f92867a6d6154473c32261b0f0000000000000000000000000000000000000000000000040d19222b353d464e555d60696e747a7e8285888b8d8f909192929292929291908f8d8c898683807c76706c615f574f473e362c22190d0400000000000000101d293643505c6976838f8b7f72656060606060606060606060606060606060606060606060606060606060606060606060606060606065727f8b8f8376695c504336291d1000000915202b353f474e5253535353535353534947433c342b20150a000013202c3946535f6c7986929facada093867a6d6053473a2d201407000000071017222d38424c555f69707d87929fa5afa79e938d80736c61594f453c32281e150b0000000000000000000000000000000000000000000000000613202c3946535f6c7986929facaca09386796d6053463a2d2013070000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8acacb2adaba5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a59b8e8275685b4f4235281c0f0000000000000006101a242d363f4850585f676d737b80858b8f9298989a9c9e9e9f9f9f9e9e9d9b999795908d88837e786f6b605c554d453b332920170c0300000000000000000000010b151f2a333e474f5860696e767d84898e9298989a9d9d9e9f9f9f9e9d9c9a9795918c86817b726d605d554b433a30271d1207000000000000000000000000000000000000040c13191f252a2d31373a3b3e41434445464645454443403e3b3a37312d2a251f1a140d05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010507070c0f0e0c0904000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814212e3b4754616e7a8794949494877a6d6154473a2e211407000000000000000000000000000000000000000613202c3945515d677784909daab4ab9a8d8073655b5044372b1f140a000000000000000000000000000000000000010c13202c3945515d6775828e9ba8b5a89c8f8275665c5044382b1f1206000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b0000000000000000000000000000000915222e3b4854606a7784919eaca49f9b9ea5a3998b7f7265584e43372b1c12070000000000000000000000000000000000000000000000071019232b343c434b51575f61676d7175797c7e80828384858586868585848482817f7d7a77736f6a64615a534d453e352c241a10070000000000000000101d293643505c6976838f8b7f726c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c727f8b8f8376695c504336291d1000010e1a26313d4751595e5f6060606060606055544e463c32271b0f030013202c3946535f6c7986929facada093867a6d6053473a2d2014070000050e192228333f4a545d676e7b859299a3afa89f958e81776c605a50473d332a20160c030000000000000000000000000000000000000000000000000613202c3946535f6c7986929facaca09386796d6053463a2d2013070000000000000000000000000000000000000000000f1c2835424f5b6875818e9babb5b2a8a19e98989898989898989898989898989898989898989898989898989898988e8275685b4f4235281c0f000000000000030c18222c363f48505a616a6f7980868d92979c9fa2aaa7a9a8a7a6a6a6a7a8a9a8a6a7a09d9a94908a837c746d675e574d453b32291e150a0000000000000000000007121d27313c454f59616a6f7b828a91969b9fa2aaa7a7a5a3a2a2a3a4a5a8a7a7a09d99928e867f756d675d554b42392e23180c0300000000000000000000000000000000080e161e25293036393c4247484b4e50515253535252514f4d4b4846423c3a36302a251f170f0800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080d111314191c1b19150f090200000000000000000000000000000000000000030613131313131313130d0c0a07020000000000000000000000000003060809131313131313130b0b09050100000000000000000000000000000000000000000000000814212e3b4754616e7a8794a1a094877a6d6154473a2e2114070000000000000000000000000000000000000004101d2935404b556773808d9aa9b3ab9e9184786c6053463c2f261b1106000000000000000000000000000000000007131d28333f4a54606d7a86929facb1a7988b7f7265544a3f34281c1003000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b000000000000000000000000000004101c2834404b54626f7c8996a0a49a938e939eab9d9083776a5f5347392e23180c000000000000000000000000000000000000000000000000071119222a313940454d53555d6065666d6f71737576777879797979787877757472706d6866625f58555046423b332c231a1208000000000000000000101d293643505c6976838f8b7f79797979797979797979797979797979797979797979797979797979797979797979797979797979797979797f8b8f8376695c504336291d100004111d2a36424e59636a6c6c6c6c6c6c6c6c6260584e43372b1f13060013202c3946535f6c7986929facada093867a6d6053473a2d20140700030d17202b343d44505b666d79839197a2abaaa1969083796d655b50483e352b21180e04000000000000000000000000000000000000000000000000000613202c3946535f6c7986929facaca09386796d6053463a2d2013070000000000000000000000000000000000000000000d1a2734404d5a6773808d99a3aeada196918b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8175685b4f4235281c0f0000000000000b151e2a343e48505a626c717c848c92989fa2a9aca8a8a09e9c9a9a999a9a9b9d9fa3ababaaa69f9c95908781796e695e574d443b30261c11060000000000000000000c18242f39434d57616b707c858f949ea0a8aca8a19e9a989695959697989c9fa2aaaba39f98928b81796d675d544b4034281e150b0000000000000000000000000000020a121a202830353b4146474e5355585b5c5e5f5f5f5f5e5e5c5a5855534d4846423b363029211a120a020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0f13191d202126292825201b140c0300000000000000000000000000000000060c101220202020202020201a1917130e0800000000000000000000040a0f13151620202020202020181715110c06000000000000000000000000000000000000000000000814212e3b4754616e7a8794a1a094877a6d6154473a2e21140700000000000000000000000000000000000000010d18242f3d495663707c8997a1adaca196897d7063584e41382d22170f06000000000000000000000000000000071118242f3844505b66717e8b98a2aeaca095887b6e6155483b2e23170b00000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b000000000000000000000000000006131f2c3845515c6674818d9aa89f9388828e9baaa095887c6f62544a4034281c10040000000000000000000000000000000000000000000000000710181f282f353b42464c5154545c60626567686a6b6c6c6c6c6c6c6b6a69676563605d5655534e49443e36312a211a110800000000000000000000101d293643505c6976838f918b86868686868686868686868686868686868686868686868686868686868686868686868686868686868686868b918f8376695c504336291d100006121f2c3845525e6a757979797979797979766a6054473b2e2215080013202c3946535f6c7986929facada093867a6d6053473a2d201407010b151f29333d46505a606c78828f95a0a9aba29891847a6e675c53493f362d23190f0600000000000000000000000000000000000000000000000000000613202c3946535f6c7986929facaca09386796d6053463a2d2013070000000000000000000000000000000000000000000815212e3b4854616e7b86929faaab9e91847f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7d7063564a3d3023170a000000000007121d27303c46505a626c717e8691969fa2aaaba39f9b9796918f8e8d8d8d8d8f9092999a9ea1a9aba79f9a938d837b6e695e564c42382e23170c040000000000000004101d2935404b555f69707d8692979fa6aca69f9c96918e8b898988898a8c8f92989ea1a8aaa29f938f83796d665c51453d30271c1207000000000000000000000000020b141c242c323a41464d5254575f626567696b6c6c6c6c6b6a696765615f5754524d46423b332c241c140a020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070c10161b1e25292d2e333534312c251e150c0200000000000000000000000000030a11171c1f2d2d2d2d2d2d2d2d2726231f19120a0200000000000000070f161b1f22232d2d2d2d2d2d2d2524211d1811090000000000000000000000000000000000000000000814212e3b4754616e7a8794a1a094877a6d6154473a2e21140700000000000000000000000000000000000000000713202d3a4653606d7985929eacb2a89c8f82756a5f53493f332721180f0802000000000000000000000003091119232935404b55606c7884919daab3a99d908477695f53463a2d1c110600000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b00000000000000000000000000000713202d3a4653606d7985929eaa9d90837d8998a2a79a8d8074665c5144382c1f130800000000000000000000000000000000000000000000000000060d161d242931363a4145474a505355585a5c5d5e5f5f5f5f5f5f5e5d5c5a595654524c4847433c39332a261f180f080000000000000000000000101d293643505c6976828f9393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393938f8376695c504336291d10000613202c3946535f6c7987868686868686867c6f6255493c2f2216090013202c3946535f6c7986929facada093867a6d6053473a2d20140707121d27313b454e58616c73808d949ea7afa39992867c6f685e554b41382d241b11070000000000000000000000000000000000000000000000000000000613202c3946535f6c7986929facaca09386796d6053463a2d2013070000000000000000000000000000000000000000000714212d3a46535e6974818e98a2ada196887c7272727272727272727272727272727272727272727272727272727272706b6054483c2f22160900000000000c18232e39424e58616c717f8a9298a0a8aba49f99928e8a8784828180808081828486898d92979ea1a8aca49f9590847b6e685e544a3f342820150a0000000000000006131f2c3845515d676e7b869298a1a9aaa29f948f8984817e7d7c7c7c7d7f82868b91969da4aea59e958f82786d60594f42392e23180c0000000000000000000000010b141d262e363e444c52565e61666a6e717476777879797878777673716e6966615e57524d453e362e261c140a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090e12181d1f272b3035393a3f42413d3730271e1409000000000000000000000000030c151c23282c393939393939393933322f2a241c140a00000000000007101920272b2e2f3939393939393932312e29221b120900000000000000000000000000000000000000000814212e3b4754616e7a8794a1a094877a6d6154473a2e211407000000000000000000000000000000000000000006121f2c3844505c6673808d9aa4afaa9e94887c6f655b50443d332a2219140e09060400000100000406090e141a232b353d45515d67717e8a95a0acada2978b7e7265574d42362a1e0a0000000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b0000000000000000000000000005111d2935414c5664707d8a97a2a9998c807885929fab9e9285796d6053463a3025190d0100000000000000000000000000000000000000000000000000040c12181f262a2f35393a3f4446494b4d4f505152525353525251514f4e4c4a4745413c3b37322d28221a140e06000000000000000000000000101d293643505c69768286868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868376695c504336291d10000613202c3946535f6c7986929393939393887c6f6255493c2f2216090013202c3946535f6c7986929facada093867a6d6053473a2d2014071118242f39434d57606a717e8b929ca6aea49f92877d706a5f564c43392f261b1209000000000000000000000000000000000000000000000000000000000613202c3946535f6c7986929facaca09386796d6053463a2d20130700000000000000000000000000000000000000000005121e2a36424d57616e7b86929fa8a89c8f82766c6565656565656565656565656565656565656565656565656565656360594f44382c2014070000000004101c2834404b545f6a717e87939fa2aaa9a199938e86827e7a777574737373747577797c80858b91969da5afa79f9691847a6e665c50443c32261b0f04000000000004111d2935414b55606d79839098a2aaa9a198928a827c787472706f6f70717275797e848d929fa4aba79f948d80746b60544a4034281c10040000000000000000000009131d262f38404850565e61686e73777b7e81838485868685858482807e7b77736e69615e57504840382e261c13090000000000000000000000000000000000000000000000000000000000000000000000000000000000060c10151a1d24292c32383a4146474c4f4d49423930251b0f0400000000000000000000000a151e262e34384646464646464646403f3b362e261c120800000000040f19222b32383b3c464646464646463e3d3a342d241b1106000000000000000000000000000000000000000814212e3b4754616e7a8794a1a094877a6d6154473a2e211407000000000000000000000000000000000000000003101c28343f4a54616e7b87939fabb0a69c9083776c60584e453c342a251e1a1312100c070e070c1013131a1f262a353d47505a606d7984919ea7b1a99f9285796d6053473b31261a0e0000000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b000000000000000000000000000713202d3946525e6875828f9ba9a197897c75828e9baba1978a7d7064564c41362a1e1105000000000000000000000000000000000000000000000000000001070d141a1e24292c2e34383a3c3e40424344454646464645454442413f3d3a3935302e2b26201c170e0903000000000000000000000000000f1c2935424e5a66707679797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797670665a4e4235291c0f000613202c3946535f6c7986929f9f9f9f95887c6f6255493c2f2216090013202c3946535f6c7986929facada093867a6d6053473a2d2014101a232935404b555e696f7c86929fa4aea69d928b7f726b61584e443b31271d140a00000000000000000000000000000000000000000000000000000000000613202c3946535f6c7986929facaca09386796d6053463a2d201307000000000000000000000000000000000000000000020e1a25313b46525e6973808c96a0ac9f948b7e716a5f5658585858585858585858585858585858585858585858585856544f473d33271c10040000000006131f2c3845515c666f7c869299a4aea8a0979187817b75716d6869676766676768676d7073797e848e939fa4aca8a0969083786d60584e43372b20150a00000000000613202c3945515d67737f8c95a0aaaba19792867e766f6c6565636262636465676d7279808b9399a4afa69d92897d70665c5144382c1f150a00000000000000000007101b252f38404a525a61686d747b8084888b8e8f919292929291918f8d8b8884807b746e69615a524a40382e251b0f060000000000000000000000000000000000000000000000000000000000000000000000000002090e11171c1f262b2f35393d43474c5254595c59534b42372c2015090000000000000000000006111c2630383f4453535353535353534d4b4740382e24190e020000000a16202b343d434749535353535353534b4a453f362d22180c010000000000000000000000000000000000000814212e3b4754616e7a8794a1a094877a6d6154473a2e2114070000000000000000000000000000000000000000000c17232e3846535f6975828e99a3afab9f948b7f726a60574e463e36302a25201f1c181b1a1b181c1f20262b31363f474f59616c74808d96a1adada2978d8073675d5145392a1f14090000000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b000000000000000000000000000714212e3a4754616d7a86929fab9e928579717e8b99a3a99b8f8275685e5246392d20150a0000000000000000000000000000000000000000000000000000000003090e13191d2023282c2d2f32343537383939393939393837363432302d2c2924211f1b15100b050000000000000000000000000000000d1926323e49545e66696c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c69665e54493e3226190d000613202c3946535f6c7986929facaca295887c6f6255493c2f2216090013202c3946535f6c7986929facada093867a6d6053473a2d201418222c353e45515d676e7b859198a3aea79e948d80746d62594f463c32291f150b0200000000000000000000000000000000000000000000000000000000000613202c3946535f6c7986929facaca09386796d6053463a2d2013070000000000000000000000000000000000000000000009141f2a36424d57606d7984919aa4a69f92867c6e685d554b4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4a48443d352b21160b0000000004111d2935414b55606d79839098a3aba9a09691857d746e6964615d565b5a5a5a5a555c6063666d7179818b939aa4afa89f958c80736a5f54473d32271b0f01000000000714212d3a4754606d7a85929fa7afa49992857c716c63605b535656555657555c60676d747f87939fa6aea49d9184796d6053463c31261b0f0300000000000000030c19222d37404a525c636c717a81868c9196989a9c9e9f9f9f9f9e9d9c9a9895918d86817b716c645c524a40372d21180e0300000000000000000000000000000000000000000000000000000000000000000001040b1014191c23282c3137394045474e54565e616668655d53493d3125190c000000000000000000000c17232e38424a505f606060606060605a58524a40362a1f13070000030f1b27323d464e545660606060606060585650483f34291d11050000000000000002050708080808080808080814212e3b4754616e7a8794a1a094877a6d6154473a2e21140808080808080808080705020000000000000000000006111c2a36424d57626e7b87929fa8b0a69f92877c6f695f585046413b36312d2c282327272723282c2d31373b42465159606b717e8a929da8b1a79f92857a6d61554b4035291d10040000000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b00000000000000000000000006121e2b37424d5765727f8b99a3ab9b8e81756d7a86929fac9f92867a6d6154473c32271b0f00000000000000000000000000000000000000000000000000000000000001080d1113171c1f20222527292a2b2c2c2c2c2c2c2b2a2927262321201d1915120f0a0400000000000000000000000000000000000a16212d38424c545a5c60606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060605c5a544c42382d21160a000613202c3946535f6c7986929facaca295887c6f6255493c2f2216090013202c3946535f6c7986929facada093867a6d6053473a2d2016202a343e47515b606d79839097a1aaa9a0958f82786d605b51473d342a20170d030000000000000000000000000000000000000000000000000000000000000613202c3946535f6c7986929facaca09386796d6053463a2d20130700000000000000000000000000000000000000000000030e1a25303b45515d67707d88939fa6a29891847a6d675c544b423f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3d3c38332b231a0f05000000000613202c3945515d67737f8c95a0aaada19791847b706b615e5754524c4e4d4d4d4e4b5153545c60676d747f88939fa5afa79f92877c6f62584e43372b1d120700000005111e2a36424d5766727f8c97a2adaa9f93877d706a615a5350494a4949494a4b51555c606d73808c949fabaca0958b7e7164584e43372b1f1206000000000000000a151e2b343f49525c646e737e858d92999da0a8a9a29f9d9c9b9c9d9fa2aaa7a09d99928e857e736e645c52493f332a1f14090000000000000000000000000000000000000000000000000000000000000001080d11161c1f252a2e34383c42474b5153586062686d72756f65594d4134281b0e00000000000000000003101c28343f4a545c6c6c6c6c6c6c6c6c66635c52473b2f23170a000006131f2b38434e5860626c6c6c6c6c6c6c65625a50453a2e211509000000000002090e121415151515151515151515212e3b4754616e7a8794a1a094877a6d6154473a2e211515151515151515151514120e09020000000000000000000e1a26313b47535f6974808d96a0abaea39991857b6e6a615a524c46423c3a38342e3434342e34383a3c42474d535b626b707d86929fa4aeaaa0958b7f72685e5243392f24180d010000000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b0000000000000000000000000814212e3a47535f697683909daba3998a7e716875828f9caba3998c7f7265584e43372b1d1207000000000000000000000000000000000000000000000000000000000000000104060c10121316181a1c1d1e1f1f20201f1f1e1e1c1b19171413110d0806030000000000000000000000000000000000000005101c26313a42494e505353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353504e49423a31261c1005000613202c3946535f6c7986929f9f9f9f95887c6f6255493c2f2216090013202c3946535f6c7986929facada093867a6d6053473a2d201e28323c464f59636d75818e959fa9aaa1979083796d665c50493f352c22180e05000000000000000000000000000000000000000000000000000000000000000613202c3946535f6c7986929facaca09386796d6053463a2d201307000000000000000000000000000000000000000000000009141f2935404b55606b73808d949fa8a0968f82796d665c544b433a323232323232323232323232323232323232302f2c27211a110800000000000714212d3a4754606d7a85929fa7b0a69e92857b6e696059524d47464141404040414045464b51555d606d727f8b939ea9afa3998f82766a605447392f24180c0000000714202d3a46525e697784909da9a8a2988d80746b60585046443f3d3c3c3d3e40454b515b606d7882909ca6b0a89d9083776a5f53473a2e21150600000000000006111c26303d46515b646e74808a92979fa3a9a19e999792908f8f8f909298989d9fa7a39f97928a80736e635b51453b31261a0e0400000000000000000000000000000000000000000000000000000000040a0f13191d20272c3036383f44464e53555d60656a6f747a7f8175685c4f4235291c0f00000000000000000006121f2c3844505c667679797979797979736e63584b3f3226190c00000815222e3b4754606a6f79797979797979716c62564a3d3124170b00000000050d141a1e2021212121212121212121212e3b4754616e7a8794a1a094877a6d6154473a2e2121212121212121212121201e1a140d05000000000000000009141f2b37424d57606d79849199a4afaba19791847c706c615e56534d494644404141414141404546494d53575f616d727d869298a2aeaca2989083786c60564c4131281d1207000000000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b0000000000000000000000030f1b27333f4953626e7b88959fac9f92867a6d64717e8b99a3ab9d9083776a605447392e23180c0000000000000000000000000000000000000000000000000000000000000000000000030607090b0d0f101112131313131212110f0e0c0a0707040100000000000000000000000000000000000000000000000a151f2831383e4243464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464643423e3831281f150a00000613202c3946535f6c7986929393939393887c6f6255493c2f2216090013202c3946535f6c7986929facada093867a6d6053473a2d2026303a444e58616b727f8c939ea7aca29891857b6e675d544a3f372d231a100600000000000000000000000000000000000000000000000000000000000000000613202c3946535f6c7986929facaca09386796d6053463a2d2013070000000000000000000000000000000000000000000000020c18242f39434f59606d78829096a0a89f948f82786d665d554c443b332b2525252525252525252525252525252322201c160f08000000000006131f2b37434e5866727f8c97a2adaa9e948a7d70695f574f46423b3935303433342e34383a40454b515b626d74818e97a1adab9e94897c6f62554b4035291d100400000814212e3b4754616e7b8795989a9b9c92857a6d61594f463e37332d2f2f302e34394045505c666f7c88949fabaca095887b6f6255483c2d22170b0000000000000c17232e38424f59626d74808d929ea1a9a39f97918c8885838282838385888b90959ea1a8a29f928d80736d62574d42362a20160a0000000000000000000000000000000000000000000000000001070c10151b1e24292c33383b42464a5053575f62676d71777c81868c83776a5d5144372a1e110000000000000000000713202d3a4653606d78868686868686868073665a4d4033271a0d00000916232f3c4956626f7c868686868686867e7165584b3e3225180b000000050f171f252a2d2e2e2e2e2e2e2e2e2e2e2e2e3b4754616e7a8794a1a094877a6d6154473a2e2e2e2e2e2e2e2e2e2e2e2e2d2a251f170f0500000000000000030e1a26313c45515d676f7d87939fa4aea9a19691867e756e68615e575653514a4e4e4d4e4e4b515356575f62696e767f879298a2aaafa49a92867c6f665b50443a301f160c01000000000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b000000000000000000000005121f2b3744505b6573808d99a7ac9c8f837668606d7a86929faca095887c6f62554b4034281c100400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d161f262d32353639393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393635322d261f160d0300000613202c3946535f6c7987868686868686867c6f6255493c2f2216090013202c3946535f6c7986929facada093867a6d6053473a2d232e38424c565f6a707d87939fa5afa49a92867c6f695e554b42382e251b11080000000000000000000000000000000000000000000000000000000000000000000613202c3946535f6c7986929facaca09386796d6053463a2d20130700000000000000000000000000000000000000000000000007121d27313d44505c666d7a849197a1a69e948f81786d675d564d453d3528231c141919191919191919191919171614100b050000000000000815222e3b4754606a7884919ea9b1a79c8f82756c61574d453d36302d292427272723282c2e343a4145515b606d7a85929eaab0a69b8e8275675d5145392c1f130600000b1825323e4b5865717e888a8b8d8e908e8174685e52473d342b272223222323282f343f4a545f6a76828f9cacb1a7998c7f736653493f33271b0f030000000003101c28343f4a54606b727f8c929ca4aaa299928c84807b787675757677797b7f838a91969fa6a49c928b7f72695f53463d32271b0f030000000000000000000000000000000000000000000003090e12181c1f262b2f35393d44484d52545c60646a6e74797e83898e929084776a5d5144372a1e110000000000000000000713202d3a4653606d798693939393938d8073665a4d4033271a0d00000916232f3c4956626f7c8993939393938b7e7165584b3e3225180b0000020d17212930363a3b3b3b3b3b3b3b3b3b3b3b3b3b4754616e7a8794a1a094877a6d6154473b3b3b3b3b3b3b3b3b3b3b3b3b3a36302921170d020000000000000009151f2935404b55606b727f8b929da4ada9a198928a817a746e696562605c545b5a5a5a5b545c606266696e747b828b9299a2aaaea39f93887e706a5f544a3f32291e0d0400000000000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b00000000000000000000000613202d394653606c7884919eaba49a8b7f72655d6875828f9caaa79a8d8074675c5145382c1f14080000000000000000000000000000000000020507080c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0b0906010000000000000000040d151c212629292d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d292926211c150d0400000006121f2c3845525e6a757979797979797979766a6054473b2e2215080013202c3946535f6c7986929facada093867a6d6053473a2d28343f4a545e686f7c869299a4afa59f93887e706a60574d433a30261c1309000000000000000000000000000000000000000000000000000000000000000000000613202c3946535f6c7986929facaca09386796d6053463a2d201307000000000000000000000000000000000000000000000000010b151f28343f4a545e686e7b859298a2a69e938f82796d685f574f473e342e261e160d0c0c0c0c0c0c0c0c0c0a09070400000000000000000916222f3c4955626f7c8896a1acaca095897c6f625a50453b332a25201d191a1a1a181c1f23282f353f45515d67727f8b98a2aeac9f9286796d6053473a2d20140600000714212d3a4754606d797c7d7f808183847d7063564c41352b221b17161616181d232e38424e5864717d8a9aa4afa99c8f8276655b5044372b1f12050000000006121f2c3844505c666f7c87929fa4aba29892878079736f6a6a696869656c6e72777d848f949fa6a49f92867b6e61584e43382b1f13060000000000000000000000000000000000000000060b0f141a1d23292c32373a4145474f54565e61666d71767b80858b90959b9d9084776a5d5144372a1e110000000000000000000713202d3a4653606d7986939f9f9f998d8073665a4d4033271a0d00000916232f3c4956626f7c89959f9f9f988b7e7165584b3e3225180b000009141f29333b4246484848484848484848484848484854616e7a8794a1a094877a6d6154484848484848484848484848484846423b33291f140900000000000000030d18242f3a434f59626d74808d929ca3adaaa29f938e86807b76726f6d6669686767676869666d6f72777b81868f949fa3ababa39f918c7f726c61584e42382d20170d0000000000000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b0000000000000000000004101d2935404b5563707d8996a1ac9f93877b6e615664717e8a98a2ab9e9285796d6053463b3025190e02000000000000000000000000000003090e12141519191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191816120d070000000000000000030a1016191c1d20202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020201d1c1916100a030000000004111d2a36424e59636a6c6c6c6c6c6c6c6c6260584e43372b1f13060013202c3946535f6c7986929facada093867a6d6053473a2d353d44505c666d7a849198a2aba69d938c7f726c61584e453b31281e140a01000000000000000000000000000000000000000000000000000000000000000000000613202c3946535f6c7986929facaca09386796d6053463a2d20130700000000000000000000000000000000000000000000000000030d17232e38424c565f696f7c869299a3a59e948f827a6e69605950443f38302820180f07000000000000000000000000000000000000000d1a2633404d596673808c99a8b2aa9d9083776a6054483e332a211a14110d080d070c1013181d242935414c55606d7985929fabaea2988a7d7164574a3e2e23170b00000613202c3945515d676d6f707273757678706b6054443a30231a0f0b0609070c121c26303c4754616d7a86939facab9f9285796c605346392d20130600000003101c28343f4a54606d78839099a3afa39992867d736d67625f585c5c535b6061656c707a828f949fa9a2988f82766a6054473b2e221508000000000000000000000000000000000002080d11171c1f262a2f34383c43474c5254596063696e73797d82888d92979da0a79d9084776a5d5144372a1e110000000000000000000713202d3a4653606d798693a0aca6998d8073665a4d4033271a0d00000916232f3c4956626f7c8995a2aca4988b7e7165584b3e3225180b00020e1a25303b454d52545454545454545454545454545454616e7a8794a1a094877a6d61545454545454545454545454545454524d453b30251a0e020000000000000007131d28313d47515b606c77808c919ea1a9aea59e98928d87837f7c79777674747474747677797c7f83888e92999fa6aea8a199928b7f736d635a50463c2f261c0e050000000000000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b0000000000000000000006131f2c3945515d6774818e9ba8ab9c908376695e53606d7a86929faca2978a7d7164564d41362a1e110500000000000000000000000000060d141a1e2122262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262525221e181109010000000000000000050a0d0f101313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313100f0d0a05000000000000010e1a26313d4751595e5f6060606060606055544e463c32271b0f030013202c3946535f6c7986929facada093867a6d6053473f383d47515b606d78828f96a0aaa89f948e81746d635a50463c33291f160c0200000000000000000000000000000000000000000000000000000000000000000000000613202c3946535f6c7986929facaca09386796d6053463a2d201307000000000000000000000000000000000000000000000000000006111c26303a444d57606a707d879298a2a69e9490847b6f6b625a504a423a322a21191106000000000000000000000000000000000005111e2a36424d576976838f9ca9b5ab998c7f7366584e43362c21180f0905010000000004070c1319242f3a45515d6774818e9aa7b4aa9b8e817468544a3f34281c10030004111d2935414c555d606264656768696b6360594f4432291e110800000000010a14202d3946525e687784919daaaea298877a6e6154473b2e21140800000006121f2c3844505c66727f8b95a0aba89f92877d706b605d55534e4f4f495053555a61686d79829097a1a49f94897c6f6256493c2f231609000000000000000000000000000001040a0f13191c22282b3136394045474e53565d60656b70757b80848a8f949a9fa2a7a09d979083776a5d5144372a1e110000000000000000000713202d3a4653606d798693a0aca6998d8073665a4d4033271a0d00000916232f3c4956626f7c8995a2afa4988b7e7165584b3e3225180b0005121e2a36424d575e616161616161616161616161616161616e7a8794a1a094877a6d616161616161616161616161616161615e574d42362a1e120500000000000000010c161f2b353f44505b656c747f8a92979ea6acaaa29f9a93908c898684828181808181828486898c90959a9fa3ababa49f9691877e736d635b51473e342a1d140a000000000000000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b000000000000000000000714202d3a4753606d7985929faba3998b7f726557515d6775818e9ba9a99c8f8275685e5246392d20160a000000000000000000000000060f181f262a2d2e3232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232312e29231b13090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915202b353f474e5253535353535353534947433c342b20150a000013202c3946535f6c7986929facada093867a6d6059504a42454f59626d74808d949fa8a9a0968f82786d605b51483e342b21170d040000000000000000000000000000000000000000000000000000000000000000000000000613202c3946535f6c7986929facaca09386796d6053463a2d2013070000000000000000000000000000000000000000000000000000000a151e29323c454e58616b707d869298a2a69f9691857d716c605c544c443c332b2317110a020000000000000000000000000000000714202d3a46525e697885929eabafa399897c6f6256493d32231a0f060000000000000000000108131e2935404b5564707d8a97a9b3aa9d908377665c5044382b1f120600010d19242f3a434c51545557585a5b5d5e56544f473d3320170d00000000000005111d2a36414c566875828e9ba8b3aa95897c6f6256493c2f2316090000000713202d3a4653606d7984919ea7ada1968d80736b6059514b474342423f44464850565d676d7a85929b9993908c8275685c4f4235291c0f02000000000000000000000001070d11161b1e252a2d33383b42464b5153585f62686d72777d82868c91969c9fa6a39f9b95908b857f7366594c403326190d0000000000000000000713202d3a4653606d798693a0aca6998d8073665a4d4033271a0d00000916232f3c4956626f7c8995a2afa4988b7e7165584b3e3225180b000714202d3a46525e696e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e7a8794a1a094877a6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e695e52463a2d2014070000000000000000040d192327333f49535b606d737d858f949da0a7acaca49f9c989892918f8e8d8d8d8e8f919298999d9fa7acaca69f99938d847d716c635b51493f352c22180b02000000000000000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b00000000000000000005111e2a36414d5664717e8a98a2ac9f92867a6e61544b5563707d8a97a1ac9f92867b6e6154473d32271b0f0100000000000000000000030d18212931363a3b3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3e3a342d251b110700000000000000000000000000000000000000000000000000000000050a0d0f101313131313130f0f0d0904000000000000000000000000000000000000000000000000000000000000040f19242d353d424546464646464646463c3b37322b22190f04000013202c3946535f6c7986929facaea194887b706b605b544c4d57606b727f8b929da6aba19791847a6d665c51493f362c22190f05000000000000000000000000000000000000000000000000000000000000000000000000000613202c3946535f6c7986929facaca09386796d6053463a2d201307000000000000000000000000000000000000000000000000000000030c17202a333d464f59616b707d869298a1a8a09792877e746d665d564d453d3527221b140b0300000000000000000000000000000814212e3b4754616e7b8797a2adac9f92867a6d6053473a2d2014070000000000000000000000010d18242f3b4754616e7a8797a1adac9f9286796d6053463a2d201307000008131e28313a414547494a4c4d4e50514948443d352b210e05000000000000010d192530414e5b6774818e9aa7b0a3968a7d7063574a3d3024170a000004101d2935404b5564717d8a96a1acaa9e9184796d60594f45403937312d3337393e444c555e68717e8b8e8a86837f7c6f6255483c2f22150900000000000000000000040a0f13181d20272c3036383f44464d53555c60646a6f747a7f84898f92999ea1a9a19e99928e89837e79736d63574b3e3225180c0000000000000000000713202d3a4653606d798693a0aca6998d8073665a4d4033271a0d00000916232f3c4956626f7c8995a2afa4988b7e7165584b3e3225180b000815212e3b4854616e7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7c8995a2a295887c7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b6e6154483b2e211508000000000000000000071017222d384149505b636b707b828990959c9fa4acaca9aaa39f9d9c9b9a9a9a9b9c9d9fa3aaaaababa39f9b948f878079706b625a514940372e231a100600000000000000000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b0000000000000000000714202d3946525e6876828f9caaab9c8f8276685e524653606d7985929eaba3998c7f7266584e43372b1d12070000000000000000000009141f29333b4246484c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4a463f372d23180d0100000000000000000000000000000000000000000000000000030a11161a1c1d2020202020201c1b1915100902000000000000000000000000000000000000000000000000000000000008121b242b31363839393939393939392f2e2b272019100700000013202c3946535f6c7986929facb8ab9e92857d736c665e56555f69707d87929fa4aea39992857b6e685d544a40372e241a100700000000000000000000000000000000000000000000000000000000000000000000000000000613202c3946535f6c7986929facaca09386796d6053463a2d20130700000000000000000000000000000000000000000000000000000000050e18212b343e474f59616b707d8691969fa7a199928b80786d685f574f473f332d261d150c03000000000000000000000000000916232f3c4956626f7c8995a9b3aa9e918477675d5145382c1f13060000000000000000000000000714202d3946525e687885919eabaea398887b6e6255483b2f2215080000010c161f282f35393a3c3d3f404243453d3b38332b23190f0000000000000000081a2733404d5a6673808d99a6b0a4978a7d7164574a3e3124170b00000613202c3945515d6775828f9ba8aea3988b7e71675d51473d352f2b2622272b2d323a434c56606d7883817e7a76736f6a5f53473b2e2115080000000000000000070c10151b1d24292c32383a41464a5053575f61676d71767c81868b91959b9fa3a69f9c96918c86817c77716d67635b51463b2f22160a0000000000000000000713202d3a4653606d798693a0aca6998d8073665a4d4033271a0d00000916232f3c4956626f7c8995a2afa4988b7e7165584b3e3225180b00121f2b3845525e6b788487878787878787878787878787878787898e99a4a4988e888787878787878787878787878787878784786b5e5245382b1f120000000000000000000006111b262f383f44515961696e757d83898f939a9c9fa2aaa7a8aaa9a7a7a7a7a7a9a9a8a6a9a29e9b99928e88827c746d676059504840372e251c11080000000000000000000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b0000000000000000000814212e3b4754616e7b86929faca3998b7e7165564c44515c6674818d9aa8ab9d9184776a605447392f23180c000000000000000000020e1a26313b454d535559595959595959595959595959595959595959595959595959595959595959595959595959595959595959595959595959585651493f34291e1206000000000000000000000000000000000000000000000000040d151c2226292a2d2d2d2d2d2d292825211b140c03000000000000000000000000000000000000000000000000000000000009121920262a2c2c2d2d2d2d2d2d2d22221f1b150f070000000013202c3946535f6c7986929facb9ada197928780786d68605d676e7b859299a3aea49f92877d6f695f564c42392e251c12080000000000000000000000000000000000000000000000000000000000000000000000000000000613202c3946535f6c7986929facaca09386796d6053463a2d2013070000000000000000000000000000000000000000000000000000000000060f19222c353e474f59606b6f7c8490959ea5a39f928d827a6e69605950443f382f271e150d040000000000000000000000000a1723303d4a5663707d8996a3b0a99c90837669554b4035291d100400000000000000000000000005111e2a36414c566a7683909da9b4aa96897c6f6356493c30231609000000040d161e24292c2d2f313234353638302f2c272119110700000000000000000d1a2633404d596673808c99a6b1a4978a7e7164574b3e3124180b00000714202d3a4753606d7a86929facac9f92867a6d60554b403529241d1a171b1f2028313a44515c666d7775716d6866625f584e43372b1f1206000000000000030b12181c1f262b2f35393d43484c52545b6063696e73797e83888e92989da0a8a29f9a94908a847f7a756f6b65605d55514940352a1e12060000000000000000000713202d3a4653606d798693a0aca6998d8073665a4d4033271a0d00000916232f3c4956626f7c8995a2afa4988b7e7165584b3e3225180b00121f2b3845525e6b7885919494949494949494949494949494949599a0aaaaa098959494949494949494949494949494949184786b5e5245382b1f1200000000000000000000000a141d262d3340474f575e616b70777d82878b8f9298989a9b9d9e9e9f9f9f9e9d9d9b999797928e8a86817c766f6a605d554f473e362e251c130a000000000000000000000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b000000000000000006131f2b37434e5865727f8c99a3ac9f92867a6d615447404a54636f7c8996a1aca095897c6f62554b4034291c1004000000000000000005121e2a36424d575f616565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565625b51463a2e2216090000000000000000000000000000000000000000000000030d161f272d3235363939393939393635312c261e150c020000000000000000000000000000000000000000000000000000000000080f151a1d1f20202020202020201615130f0a04000000000013202c3946535f6c7986929facb9b3a9a199938c827a6f6a656d79839097a1aba59c928b7e716b60574d443a30271c130a000000000000000000000000000000000000000000000000000000000000000000000000000000000613202c3946535f6c7986929facaca09386796d6053463a2d20130700000000000000000000000000000000000000000000000000000000000007101a232c353e474f59606a6f7a838f939fa4a49d948f847b706b625a5049413930271f160d0400000000000000000000000b1724313e4a5764717d8a97a4b0a89b8f8275685c4f422f24180c00000000000000000000000000010d192530424f5c6875828f9ba8b0a3968a7d7063574a3d3024170a00000000040c13191d202122242527282a2b252423211c170d0801000000000000000e1b2734414e5a6774818d9aa7b0a4978a7d7164574a3e3124170b00000a1723303d4a5663707d8998a3aea89b8e8275675d51433a2f23181d1d1d1d1d161f2834404a545c606a6864615e5655534e463c32261b0f030000000000030c151c23282c31373a4045474f54565e61666c70767b80858b90959a9fa2a8a09e98928e88837e79736e6863605953514b4340372e23190d020000000000000000000713202d3a4653606d798693a0aca6998d8073665a4d4033271a0d00000916232f3c4956626f7c8995a2afa4988b7e7165584b3e3225180b00121f2b3845525e6b7885919ea1a1a1a1a1a1a1a1a1a1a1a1a1a1a2a4aab2b2aaa4a2a1a1a1a1a1a1a1a1a1a1a1a1a1a19e9185786b5e5245382b1f120000000000000000000000020b141b2227353e454d525960636b70757b7e8285888b8d8f9091929292929191908e8c8a8885817e7a746f6a626058514b433d352d241c130a01000000000000000000000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b00000000000000000815212e3b47535f6a7783909dabaa9c8f8275685e5246394653606c7884919eaba89a8d8174675c5145382c1f140900000000000000000714212d3a46535f696e72727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272726d62564a3e3125180b00000000000000000000000000000000000000000000000a151f2831383e424346464646464642413d3730271e140900000000000000000000000000000000000000000000000000000000000004090e11121313131313131313090806030000000000000013202c3946535f6c7986929facb9bab2aba49f948f847c726c77818f95a0a9a79e938c80736c61594f453c32281e150b01000000000000000000000000000000000000000000000000000000000000000000000000000000000613202c3946535f6c7986929facaca09386796d6053463a2d2013070000000000000000000000000000000000000000000000000000000000000008111a232c353d474f585f686e79818c939aa2a69f9691857d716c605b534a423931281f160d04000000000000000000000b1825313e4b5864717e8b97a4b1a89b8e8275685b4f4235281c070000000000000000000000000000081b2835414e5b6874818e9ba7b0a4978a7d7164574a3e3124170b000000000008121a22282d303132323232323231302d282219130c04000000000006121e2b37424d576875828f9ba8b4aa96897d7063564a3d3023170a00000d1a2733404d5a6673808d99aab4aa978b7e7164554c4131282a2a2a2a2a2a2a2a2a232e39424a51535d5b5754524c4847433c342a20150a0000000000000b151e272e34383c43474b5153596063686d72787d82878d92979d9fa7a49f9c96918b86817c76716d66615e56544f47454039312e251c1207000000000000000000000713202d3a4653606d798693a0aca6998d8073665a4d4033271a0d00000916232f3c4956626f7c8995a2afa4988b7e7165584b3e3225180b00121f2b3845525e6b7885919e9f9f9f9f9f9f9f9f9f9f9f9f9f9fa1a3a8b0b0a8a3a09f9f9f9f9f9f9f9f9f9f9f9f9f9f9e9185786b5e5245382b1f12000000000000000000000000020a1117232c333b42464f54596063696e7276797c7e808283848585868585848382807d7b7975716d68625f58544e45403a312b231b120a0100000000000000000000000b1825313e4b5864717e8b97a4aca89b8e8175685b4e4235281b0f08040000000000000000000003050e1b2734414e5a6774818d9aa7aca4978b7e7164584b3e3125180b000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b0000000000000003101c28343f4a54626f7c8895a0aca3988b7e7164564c413744505b6573808d9aa7ab9f9285796d6053473b30251a0e02000000000000000815222e3b4855616e7b7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7265584c3f3225190c0000000000000000000000000000000000000000000005111c27313a434a4e505353535353534f4d49423930261b1004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9b2a8a09da09f9691877f76808c939ea7a89f958e81776c605a50473d332a20160c0300000000000000000000000000000000000000000000000000000000000000000000000000000000000613202c3946535f6c7986929facaca09386796d6053463a2d201307000000000000000000000000000000000000000000000000000000000000000008111a232b353d464e565e676d7780889298a0a8a09792877e736c655c544b433a31281f160c030000000000000000000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2834414e5b6774818e9aa7b1a4978b7e7164584b3e3125180b0000000005101a242c33393c3e3f3f3f3f3f3f3e3c393329241e16100c0709060b1117232d3a47535f697884919eabaea398887b6e6155483b2e2215080004101c2834404b546976828f9ca9aea398887b6f6255483c2f3737373737373737373737373039404446514e4b4746413c3b37322a261f180f060000000007121c2730394044464e53555d60656b6f757a7f848a8f939a9ea1a9a29e99938f89847f7a746f6a64605c54524c48433d39352f271f1c130a00000000000000000000000713202d3a4653606d798693a0aca6998d8073665a4d4033271a0d00000916232f3c4956626f7c8995a2afa4988b7e7165584b3e3225180b00121f2b3845525e6b78849193939393939393939393939393939394979ea8a89e97949393939393939393939393939393939185786b5e5245382b1f12000000000000000000000000000006111a202930363d44484f54565e6165666d6f7174757778787979787877767573716f6d6664605d56534e47433d352f281f191109000000000000000000000000000b1825313e4b5864717e8b979f9f9f9b8e8175685b4e4235281b1614100b05000000000000060b0f12131b2734414e5a6774818d9a9f9f9f978b7e7164584b3e3125180b000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b0000000000000006121f2b3844505c6673808d9aa7ac9f92867a6d6054473a333f4953626f7c8895a0aca2978a7e7164574d42362a1e1205000000000000000a1724303d4a5763707d8a8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c86796c5f5346392c2013000000000000000000000000000000000000000000000a16222d38434c545a5d6060606060605c5a544c42372c2115090000000000000000000000000000000000000000000000000000000105090b0b13131313070604000000000000000000000000000013202c3946535f6c7986929facb9aca0969196a0a199928c838c929ca5aaa1969083796d655b50483e352b21180e040000000000000000000000000000000000000000000000000000000000000000000000000000000000000613202c3946535f6c7986929facaca09386796d6053463a2d201307000000000000000000000000000000000000000000000000000000000000000000081119232b343c444d555d656c737e8691969fa6a299928b80776d665d554b433a31281e150a0000000000000000000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b000000000b17222c363e44494a4b4b4b4b4b4b4a49453e352f281f1c18171616171b222935404b55616e7b8896a1acac9f9286796d6053463a2d2013070006131f2c3845515c667884919eabac9f9286796d6053464444444444444444444444444444444444444444444444444444443b3a36312a21180e030000000c18232e39424a5153585f62676d72777c81868c91969c9fa4a7a09d97928d87827d78726d68625f5853504a46413b38322c29241d150d0a0100000000000000000000000713202d3a4653606d798693a0aca6998d8073665a4d4033271a0d00000916232f3c4956626f7c8995a2afa4988b7e7165584b3e3225180b00121f2b3845525e6b788486868686868686868686868686868686878c97a3a3978c878686868686868686868686868686868684786b5e5245382b1f12000000000000000000000000000000080e171f2f3a454f575c5e60605f545c60626567686a6b6b6c6c6c6b6a6a68666462605c5454524c47433c383229241d160d0700000000000000000000000000000b1825313e4b5864717e8b93939393938e8175685b4e42352b2423201c170e09030000020a11171b1f20252c34414e5a6774818d93939393938b7e7164584b3e3125180b000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b000000000000000713202d3a4653606d7985919eabaa9b8f8275675d5145392d3847535f6a7784909daaa99c8f8276695e52463a2d20160a000000000000000a1724303d4a5763707d8a96989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989286796c5f5346392c2013000000000000000000000000000000000000000000010d1a26323e4a545e66696c6c6c6c6c6c69655e54493d3125190d0000000000000000000000000000000000000000000000000000060c111517182020201f1413100c0701000000000000000000000013202c3946535f6c7986929facb7aa9d91849196a0a39f9490949ca4aba29891847a6d675c53493f362d23190f06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000613202c3946535f6c7986929facaca09386796d6053463a2d20130700000000000000000000000000000000000000000000000000000000000000000000071019222a323b434b535b606c707c848f949da4a39f928d81786d675d554b433a30261c110600000000000000000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b00000004101c28333e4850555758585858585857555045413a312c282323222322282d333d45515d67727f8c99a8b2a99d908376665c5144382c1f1206000713202d3a4653606d7986939facaa9d908477665c50505050505050505050505050505050505050505050505050505050504846423b332a1f1409000004101c2834404a545c60646a6f747a7e83898e92999ea1a8a39f9b95908b85807b75706c65605d56534e46443f3836302c271f1d18120b03000000000000000000000000000713202d3a4653606d798693a0aca6998d8073665a4d4033271a0d00000916232f3c4956626f7c8995a2afa4988b7e7165584b3e3225180b00111e2a3743505c687278797979797979797979797979797979797a8794a1a094877a797979797979797979797979797979797872685c5043372a1e11000000000000000000000000000000000f1b2834404c5761686b6c6c6c605c5455585a5c5d5e5f5f565d6065696b6c6b6965605c554e463c37312b272018130c040000000000000000000000000000000b1825313e4b5864717e868686868686868175685b4e42393831302d28221a140c07070b141b22272b2d323939414e5a677480868686868686867e7164584b3e3125180b000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f06060403010000000000000203060e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b00000000000004111d2935414c5563707d8a97a1ada2988a7e7164554c41352b37434e5866737f8c99a7ac9f93877b6e6154483d32271b0f010000000000000a1724303d4a5763707d8a969f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9286796c5f5346392c2013000000000000000000000000000000000000000000030f1c2935424e5a6670767979797979797570655a4d4135281b0f020000000000000000000000000000000000000000000000000911181d2124252d2d2d2c201f1c18120b030000000000000000000013202c3946535f6c7986929facaea194877b849196a1a69f9c9fa6afa39992867c6f685e554b41382d241b110700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000613202c3946535f6c7986929facaca09386796d6053463a2d2013070000000000000000000000000000000000000000000000000000000000000000000000071018202931394149505a616a6f7a828d929fa4a49c938e82796d675d554b42382e23171006000000000000000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b0000000814212d3944505a616465656565656564615a514c433e38342e302f302d33383f44505a606d7985929eabb1a7998c807366544a4034281c1004000815212e3b4854616e7b879aa4afa99c90837669545d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d55534d453b31261a0e020006121f2c3844515c666d71767c81858b90959b9fa3a8a19e99928e89837e79736e6963605b53524c47433c38342e2a251e1b16100c070100000000000000000000000000000713202d3a4653606d798693a0aca6998d8073665a4d4033271a0d00000916232f3c4956626f7c8995a2afa4988b7e7165584b3e3225180b000f1b2834404b5660686b6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6e7a8794a1a094877a6d6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6b6860564b4034281b0f00000000000000000000000000000005111e2a3744505c6873787979796d665c504b4d4f4c52565e61686d727678797876726d675f584e463c30261c160d0701000000000000000000000000000000000a1724303d4956626c7179797979797979756f65594d4646453d3c39332a261f181212181d262d3337393e4546464c58646e7479797979797979716c6256493d3024170a000b1825313e4b5864717e8b97a4aca89b8e8175685b4e4235281b13131311100e0a050005090d0f1013131b2734414e5a6774818d9aa7aca4978b7e7164584b3e3125180b0000000000000613202c3945515d6775818e9ba9ac9f92867a6d6053473a2f26323c4855616e7b88959faba4998c7f7266594f43382c1d12070000000000000a1724303d4a5763707d8a93939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939286796c5f5346392c201300000000000000000000000000000000000000000003101d2a3643505d6976828686868686868275695c4f4236291c0f03000000000000000000000000000000000000000000000009121b22292e3132393939392d2c29231d150d0300000000000000000013202c3946535f6c7986929facada09386797b849197a1a9a9abb0a89f92877d706a5f564c43392f261b12090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000613202c3946535f6c7986929facaca09386796d6053463a2d201307000000000000000000000000000000000000000000000000000000000000000000000000060e171f282f383f4450585f686d78808b9399a3a59e948f82796d675d544a3f342822180b020000000000000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b0000000a1623303c4955616c71727272727272716c605d554f4645403e3d3c3c3d3f44495059616c73808d97a1adab9f95887c6f6255483c2e23180c00000916232f3c4956626f7c8995acb6a89c8f82756a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a615f574d42362a1e1205000713202d3a4653606d787e83888d92989da0a7a69f9c96918c86817c77716d67615f5753504945413a37312c28231c19140f0a0400000000000000000000000000000000000713202d3a4653606d798693a0aca6998d8073665a4d4033271a0d00000916232f3c4956626f7c8995a2afa4988b7e7165584b3e3225180b000b17232f3a454e565c5e6060606060606060606060606060616e7a8794a1a094877a6d6160606060606060606060606060605e5c564e453a2f23170b00000000000000000000000000000005121f2b3845525e6b7885868686786d60534a4c51565e61686d737a7f82858685837f796f6a5f584e42382e23170b0000000000000000000000000000000000000815212d3945505a62646c6c6c6c6c6c6c68655d53535353514a49443e363129231d1d23282f383f44464b52535353535c64676c6c6c6c6c6c6c64625a5045392d211508000b1825313e4b5864717e8b979f9f9f9b8e8175685b4e423528202020201d1d1a16110b1015191c1c2020202734414e5a6774818d9a9f9f9f978b7e7164584b3e3125180b0000000000000714212d3a4754606d7a86929facaa9b8e8175675d5145392c212d3a46535f697683909dabab9e9184776b605448392f24180c0000000000000a1724303d4a5763707d8686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686796c5f5346392c201300000000000000000000000000000000000000000003101d2a3643505d69768390939393938f8275695c4f4236291c0f030000000000000000000000000000000000000000000006111b242d343a3d3e464646463a38342f271f150b01000000000000000013202c3946535f6c7986929facada093867a6e7b859197a1a9b3aca1968b7f726b60584e443a31271d140a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000613202c3946535f6c7986929facaca09386796d6053463a2d20130700000000000000000000000000000000000000000000000000000000000000000000000000050d161d262d333e464e565d666d747f879298a2a69e949082796d665c50443f342a1d140a0000000000000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b0000000b1724313e4a5764717e7e7e7e7e7e7e7d756d67615953514b4b4a49494a4a50535b606b707e88939fa9b0a69d9083766a5f53473b2e1c120700000a1623303d495663707c8996a3afa89b8e8177777777777777777777777777777777777777777777777777777777777777776e695f53463a2d21140700101d293643505c6976828a90949a9fa2aaa29f9a948f8a847f7a756f6a64605d55534d46443f38352f2b261f1c17110e0802000000000000000000000000000000000000000713202d3a4653606d798693a0aca6998d8073665a4d4033271a0d00000916232f3c4956626f7c8995a2afa4988b7e7165584b3e3225180b0007121e28333c454b50525353535353535353535353535354616e7a8794a1a094877a6d61545353535353535353535353535352504b453c33281e120700000000000000000000000000000003101d2a3643505d6976839098897c6f635a56555d60686d737a80858b8f9192928f8b847c6f6a5f544a3f34281c1003000000000000000000000000000000000005111d29343e48505658606060606060605b595e606060605e57555046423b342f27272e343c41495053585f6060605f5c585a60606060606060585650483e34291d1105000b1825313e4b5864717e8b93939393938e8175685b4e42352d2d2d2d2d2a2926221c151b212528292d2d2d2d34414e5a6774818d93939393938b7e7164584b3e3125180b000000000005121e2a36424d5765717e8b98a2aea2988a7d7064554b4035291e2a36424d5765727f8b99a3aca096897c6f63554b4035291d100400000000000916232f3c4855616b707979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979746a5e5145382b1f1200000000000000000000000000000000000000000003101d2a3643505d697683909c9f9f9c8f8275695c4f4236291c0f03000000000000000000000000000000000000000000010c18222d363f454a4b535353524745403931271d1207000000000000000013202c3946535f6c7986929facada093867a6d6f7c859297a2aaab9e91847a6d675c554b423930261e140b020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000613202c3946535f6c7986929facaca09386796d6053463a2d2013070000000000000000000000000000000000000000000000000000000000000000000000000000040b141b2227343c444c545c606d727e869298a2a69f958f82786d605a50463c2f261c110600000000000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b000003101d2a3643505d6976838b8b8b8b8b8b8a817a706b64605c545756555657545b60656c727d86929aa4afaa9f948a7d7064584e43372b1f0b0000000a1724303d4a5763707d8a96a3b0ab9e928583838383838383838383838383838383838383838383838383838383838383837b6e6155483b2e22150800101d2a3743505d6a7683909c9fa6a8a09d98928d88837d78736d6862605853514b46423b37332d29241e1b15100c06000000000000000000000000000000000000000000000713202d3a4653606d798693a0aca6998d8073665a4d4033271a0d00000916232f3c4956626f7c8995a2afa4988b7e7165584b3e3225180b00010c17212a333a4043454646464646464646464646464754616e7a8794a1a094877a6d6154474646464646464646464646464543403a332a21170c01000000000000000000000000000000010e1b2834414e5b6774818e9a8e81756c656364676d737a80868d92989c9e9f9e9c9691857c6f665c5044382b1f13080000000000000000000000000000000000000c17222d363e45494b5353535353535359636b6c6c6c6c6b64615a534d45403931303940454d535b60656c6c6c6c6b686157535353535353534b49453e362d22170c00000b1825313e4b5864717e868686868686868175685b4e423939393939393736322d271f262c3235363939393939414e5a677480868686868686867e7164584b3e3125180b00000000000714212d3a46535e697683909caaab9f9285796d6053463a2f241a26313b4754616d7a86929faca89a8e8174675d5145392c1f140900000000000714202c38444f5961636c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6a62584d4135291d100000000000000000000000000407090a0b0b0b0b0b0b101d2a3643505d697683909ca9a89c8f8275695c4f4236291c0f0b0b0b0b0b0b0a09070400000000000000000000000005111d29343f485056586060605f53514b43392f23180c000000000000000013202c3946535f6c7986929facada093867a6d6a6f7c859298a2aaa1968f82796d675c544a423830261d140b0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000613202c3946535f6c7986929facaca09386796d6053463a2d201307000000000000000000000000000000000000000000000000000000000000000000000000000000020a1117222a323a424a505b626c717d869298a2a79f948e81746d62584e42382d22170b00000000000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b0000030f1c2936424f5c6975828f9898989898938e847d76706d6666646362636465666c71787f879298a2acaca2988f82766c6155463c32261b0f0000000a1724313d4a5764707d8a97a3b0ada1979290909090909090909090909090909090909090909090909090909090909090887b6e6255483b2f22150800101d2a3743505d6a7683909da9a49c96918b85817c76716d66615e56544e4745403936312b27221b19130f0a030000000000000000000000000000000000000000000000000713202d3a4653606d798693a0aca6998d8073665a4d4033271a0d00000916232f3c4956626f7c8995a2afa4988b7e7165584b3e3225180b0000050f1821282f34373839393939393939393939393b4754616e7a8794a1a094877a6d6154473a39393939393939393939393837342f2821180f0500000000000000000000000000000000000c1825323f4b5865727e8b98938b7f75717071747a80858d92989fa2aaa4a3a5a8a1979083786d6053463a2f24190d01000000000000000000000000000000000006111b242d34393d3e464646464646525e6b757979797978706c615f57514b433e3d424b51575f656c71787979797873685c504646464646463e3d39342d241b110600000a1724303d4956626c7179797979797979756f65594d3b46464646464644423e39312930383d41434646464646464c58646e7479797979797979716c6256493d3024170a00000000000815212e3b4854616e7b87939faca99b8e8174675c5145382c1d14202d3946525e6876828f9caaab9f9285796d6053473b31251a0e00000000000714212d3a46535f696e72727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272726d62564a3e3125180b00000000000000000000040b10131616171717171717171d2a3643505d697683909ca9a89c8f8275695c4f4236291c17171717171717161613100b05000000000000000000000915212e3a45505a62656c6c6c6c605c554b4034291c10040000000000000013202c3946535f6c7986929facada093867a6d606a6f7d869298a3a89f948f82796d665c544a42382f261d140b02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000613202c3946535f6c7986929facaca09386796d6053463a2d2013070000000000000000000000000000000000000000000000000000000000000000000000000000000000061018202830383f44515a616b707d869299a4a69d938b7e716a5f544a3f33281d1207000000000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b0000020e1b2835414e5b6874818e9ba5a5a5a59e96918a837d79767271706f6f707275787d838b9299a2aaafa49a92867b6e61594f44342a20150a0000000a1724313d4a5764707d8a97a3b0b3a9a19e9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d94887b6e6155483b2e22150800101d2a3743505d6a7683909da99c928d847f7a746f6a64605c54524c48433d38352f2a261f1b17110d080100000000000000000000000000000000000000000000000000000713202d3a4653606d798693a0aca6998d8073665a4d4033271a0d00000916232f3c4956626f7c8995a2afa4988b7e7165584b3e3225180b000000060f171e23282a2b2d2d2d2d2d2d2d2d2d2d2e3b4754616e7a8794a1a094877a6d6154473a2e2d2d2d2d2d2d2d2d2d2d2b2a28231e170f060000000000000000000000000000000000000815222f3b4855626e7b88959b918b827e7d7e81858c92989fa2a29f9a9796989c9f9f958a7d7164554c4135291d110400000000000000000000000000000000000009121b22292d303139393939394653606c7987868686847d756e69605c554f46454f545c60696e777e8586868685786b5f5245393939393931302d29221b12090000000815212d3945505a62646c6c6c6c6c6c6c68655d534648535353535353504f4a433b313a42494e4f53535353535348535c64676c6c6c6c6c6c6c64625a5045392d2115080000000007131f2c38434e5866737f8c9aa4ada2978a7d7063554b4034281c111d2a36414c5664717e8b98a2aea2988b7e7164574d42362a1b1106000000000815222e3b4855616e7b7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7265584c3f3225190c000000000000000000070f161b20222324242424242424242a3643505d697683909ca9a89c8f8275695c4f42362924242424242424242322201c160f070000000000000000000b1724313d4a56626c71797979796d675c5145382c1f13060000000000000013202c3946535f6c7986929facada093867a6d60606a707d869299a3a69f948f82786d665c544a42382f261d140a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000613202c3946535f6c7986929facaca09386796d6053463a2d201307000000000000000000000000000000000000000000000000000000000000000000000000000000000000060e161e262e343f485059606b707e87939fa6a59f92867c6f665b5044392e23180c000000000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b0000010e1a2734414d5a6774808d9aa7b1b4aea8a19e94908a85827f7e7d7c7c7d7f82858a90959fa3ababa39f93887e71695f53473e3322180e040000000a1723303d4a5663707d8996a3b0b8b0aba99f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9fa9aaaaaaaaaa94877a6e6154473b2e21140800101d2a3743505d6a7683909da69a8d8079726d68625f5853504a46413b38322c29241d1a150f0b0600000000000000000000000000000000000000000000000000000000000713202d3a4653606d798693a0aca6998d8073665a4d4033271a0d00000916232f3c4956626f7c8995a2afa4988b7e7165584b3e3225180b00000000050c12171b1e1f202020202020202020212e3b4754616e7a8794a1a094877a6d6154473a2e212020202020202020201f1e1b17120c05000000000000000000000000000000000000000814212e3a47535f6a7784919d9b948f8b898a8d92989fa2a29f98928d8a898b90949c9c8f8276675d5145392c201306000000000000000000000000000000000000000911171d2124252d2d2d2d313e4b5864717e889396918a827b736d67615953525960666d737b828b929792877e7064574a3d312d2d2d2d2524211d1711090000000005111d29343e48505658606060606060605b59534d535f6060606060605d5b554d4339424c545a5c6060606060605f5353585a60606060606060585650483e34291d1105000000000915222e3b4854606a7784919eacab9e9285796d6053463a2e23180d1925303a4754606d7a86929facaa9c8f8276695e5346382d22170b000000000a1724303d4a5763707d8a8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c86796c5f5346392c2013000000000000000007111921272c2f303131313131313131313643505d697683909ca9a89c8f8275695c4f4236313131313131313131302f2c272119110700000000000000000b1825323e4b5865717e86868686796d6053473a2d20140a0000000000000013202c3946535f6c7986929facada093867a6d6058606b707d879299a3a69e948f81786d665c544a41382f261b11060000000000000000000000000000000000000000000000000000000000000000000000000000000000000613202c3946535f6c7986929facaca09386796d6053463a2d20130700000000000000000000000000000000000000000000000000000000000000010000040607080707050100040c141c2328363e474f59616c727f8c949faaa3989083786c60554b4034281c10040000000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b0000000d1a2633404d596673808c99a6b4aaa29f9a9f9f9c98928f8c8a8988898a8b8e92979da0a7aea8a199928b7f726c61574d42352c21100600000000091623303c4956636f7c8996a2afb0a69f9c9393939393939393939393939393939393939393939393939c9ea6b0aea398877a6d6054473a2d21140700101d2a3743505d6a7683909da99c928d847f7a746f6a64605c54524d48443d39352f2b261f1c17110d080200000000000000000000000000000000000000000000000000000713202d3a4653606d798693a0aca6998d8073665a4d4033271a0d00000916232f3c4956626f7c8995a2afa4988b7e7165584b3e3225180b000000000001070b0f1112131313131313131314212e3b4754616e7a8794a1a094877a6d6154473a2e2114131313131313131312110f0b0701000000000000000000000000000000000000000006121e2b37424e5765727e8b95a09e9c9896979a9fa2a39f98928c85817e7d7e838c929f92867a6d6054473a2d2114070000000000000000000000000000000000000000060c1115171820202024303d4956626c717f8b919e948f868079706b615f5d606b6f797f868f949f93887e716c6155493c3023202020181715110c060000000000000c17222d363e45494b535353535353534e4d4d575e6c6c6c6c6c6c6c6a665f554a3e49545e66696c6c6c6c6c6c6c5e574d4e535353535353534b49453e362d22170c0000000004101c2834404b54626f7c8996a0aca99a8e8174665c5144382c1d120813202c3945515d6775818e9ba9ac9f93877b6e6153493f33271b0f030000000a1724303d4a5763707d8a96989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989286796c5f5346392c201300000000000000040f19232b32383b3d3e3e3e3e3e3e3e3e3e3e43505d697683909ca9a89c8f8275695c4f423e3e3e3e3e3e3e3e3e3e3d3b38332b23190f05000000000000000a1723303d4a5663707d8993988a7d7063574a3d31261b0f0300000000000013202c3946535f6c7986929facada093867a6d605359616b717e87929aa4a69e938e81786d665b534941382d2217140a01000000000000000000000000000000000000000000000000000000000000000000000000000000000613202c3946535f6c7986929facaca09386796d6053463a2d201307000000000000000000000000000000000000000000000000000000020608080e070c101313151413110d0802020a1117242c353d47505a606c77828f98a2aa9f958b7e71675c5145382c1f14080000000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b0000000c1926323f4c5965727f8c98a5aea298928d939aa0a29f9c999796959697989b9ea1a9acaba39f9691877f726d625a50453c31231a1000000000000815222f3b4855626e7b8895a9b3ab9f948f8686868686868686868686868686868686868686868686868f949eaaac9f928579675d5145392c20130600101d2a3743505d6a7683909da9a49c96918b86817c76716d66615e56544f4745403937312b28221c19130f0a040000000000000000000000000000000000000000000000000713202d3a4653606d798693a0aca6998d8073665a4d4033271a0d00000916232f3c4956626f7c8995a2afa4988b7e7165584b3e3225180b0000000000000000020405060606060606060814212e3b4754616e7a8794a1a094877a6d6154473a2e211407060606060606060504020000000000000000000000000000000000000000000000020e1a26313c4653606c78839097a1a8a4a3a4aaa29f98928d86807a74717072767f8c94998a7d7063574a3d3024170a0000000000000000000000000000000000000000000005080a0b131315212d3945505a626d727f8b919c98928c847d756e69686d747c838c92989c918b7f726c625a5044392d201413130b0a0805000000000000000006111b242d34393d3e464646464646464246535e69767979797979797771665b4f424e5a66707679797979797976695e5346464646464646463e3d39342d241b11060000000006131f2c3845515c6674818d9aa8ada197897d7063544a4034281c0b04111d2935414b5564707d8a97a2ada49a8c7f73655b5044372b1f13070000000a1724303d4a5763707d8a969f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9286796c5f5346392c2013000000000000000b16212b353d4448494a4a4a4a4a4a4a4a4a4a4a505d697683909ca9a89c8f8275695c4f4a4a4a4a4a4a4a4a4a4a4a4948443d352b21160b000000000000000815222f3b4855626e7b88959a8d817467584e43372b1f120600000000000013202c3946535f6c7986929facada093867a6d60534f59616c717e88939fa3a59e938e81786c655b53493f3327261c130a010000000000000000000000000000000000000000000000000000000000000000000000000000000613202c3946535f6c7986929facaca09386796d6053463a2d2013070000000000000000000000000000000000000000000000000003090e1214151a1c181c1f202121201d19130c050006121a232b353e44505b656e7b86929faaa79e9184796d6053463b3025190d0100000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b0000000b1825313e4b5864717e8b97a4ab9f9286818890959b9fa3aba4a3a2a2a3a5a8a9a7a8a19e99928d847d716d625b51483e332a1f110800000000000714212d3a4754606d7a8797a2ada99c8f82797979797979797979797979797979797979797979797979828f9ca9ab9e9184786b554b4135291d110400101d2a3743505d6a7683909c9fa6a8a09d98928d88837e79736e6863605953514b47423c38332d2a251e1b15100c07010000000000000000000000000000000000000000000713202d3a4653606d798693a0aca6998d8073665a4d4033271a0d00000916232f3c4956626f7c8995a2afa4988b7e7165584b3e3225180b0000000000000000000000000000000000000814212e3b4754616e7a8794a1a094877a6d6154473a2e2114070000000000000000000000000000000000000000000000000000000000000000000009151f2b3844505b666f7c8591969c9f9f9e9c98928d86807a736d686463656d76828f998d8073665a4d4033271a0d00000000000000000000000000000000000000000000000000000605111d29343e48505a626d727f8c929c9f96918a827b73717a818891959f9d928c7f736d625a50483e33281c1004060000000000000000000000000009121b22292d3031393939393939393b4854616e7b86868686868683776a5d50444f5c6976828686868686867b6e6154483b39393939393931302d29221b120900000000000713202d3a4653606d7985929eabab9e9185796d6053463a2e23180c010d18242f3a4653606d7985929fabac9e9184786c6053463a2f24180d0100000a1724303d4a5763707d8a93939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939286796c5f5346392c201300000000000004101b27323d474f54565757575757575757575757575d697683909ca9a89c8f8275695c57575757575757575757575756544f473d33271c10040000000000000714202d3a4753606d7a86979e9184786a5f53473a2e21150800000000000013202c3946535f6c7986929facada093867a6d605347505a616c727f8b919ba4a59e938e81776c655b504440382e261c130a0100000000000000000000000000000000000000000000000000000000000000000000000000000613202c3946535f6c7986929facaca09386796d6053463a2d201307000000000000000000000000000000000000000000000000060e151a1e2122272823282c2d2e2e2d2a251e160e05000811192327333f49535e69737f8c98a2ada1968b7e7164564c41362a1e110500000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b0000000a1724313d4a5764707d8a97a3ac9f9286797c83898e9299999c9d9e9f9f9f9e9d9b9896918c86807a706b625a51493f362c21180e0000000000000613202c3945515d677885929eabaa9d9184776c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c667784919eaaa99c8f8376695c50432f24180d0100101c2936434f5c6976828a8f949a9fa2a9a29f9a94908a84807b756f6b65605d55534d46443f3836302b271f1c18120e0903000000000000000000000000000000000000000713202d3a4653606d798693a0aca6998d8073665a4d4033271a0d00000916232f3c4956626f7c8995a2afa4988b7e7165584b3e3225180b0000000000000000000000000000000000000814212e3b4754616e7a8794a1a094877a6d6154473a2e21140700000000000000000000000000000000000000000000000000000000000000000000030f1c28333f4a545f6a6f7c848c909292918f8b86807b746e68605d56565b64707d8a998f8275685c4f4235291c0f020000000000000000000000000000000000000000000000000000000c17222d363f48515b636d737f8c929ca09e948f867f7d848d939aa09d938d80736d635b51483e362c22170b000000000000000000000000000000000911171d2124252d2d2d2d2d2d2e3b4854616e7b87939393939083776a5d50444f5c6976828f93939393877b6e6154483b2e2d2d2d2d2d2524211d171109000000000005111d2935414c5664707d8a97a2ada89a8d8074665c5044382b1c12070007131f2c3845515c6674818e9aa8aca096897c7063554b4035291d110400000a1724303d4a5763707d8686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686796c5f5346392c20130000000000000713202c38444f59606364646464646464646464646464697683909ca9a89c8f827569646464646464646464646464646360594f44382c20130700000000000006131f2c3945515d677885929e96887b6f6255483c3025190d01000000000013202c3946535f6c7986929facada093867a6d60534748505a626d727f8c929ca4a59d938e80776c605c524a40382e251c130a01000000000000000000000000000000000000000000000000000000000000000000000000000613202c3946535f6c7986929facaca09386796d6053463a2d2013070000000000000000000000000000000000000000000000060f181f262b2d2e34352e34383a3b3a3936302820160c0200071117222d38414d57606d7a86929faca89c908376685e5246392d20140700000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b0000000a1623303d495663707c8996a3afa399867a6f787d82868a8c8f909192929291908e8b8884807b736d68605950483f372d241a0f0600000000000004111d2935414c55697683909ca9ab9f928578695f606060606060606060606060606060606060606d7986929faca79a8d8174675a4e4134271b0700000713202d3a4653606d787d82888d92979da0a7a69f9c97918c86817c77726d67625f5753504a46413a37322c29231d1a140f0b0600000000000000000000000000000000000713202d3a4653606d798693a0aca6998d8073665a4d4033271a0d00000916232f3c4956626f7c8995a2afa4988b7e7165584b3e3225180b0000000000000000000000000000000000000814212e3b4754616e7a8794a1a094877a6d6154473a2e21140700000000000000000000000000000000000000000000000000000000000000000000000b17222d38424e585f6a6f797f83858684827f7a736e69615e56524c4a54606d7987868683776a5e5144372b1e110400000000000000000000000000000000000000000000000000000006101b242d363f49515b636d73808d929da49e98928c8a91969fa49e938e81746e645b51493f362d241a10050000000000000000000000000000000000060c111517182020202020212e3b4854616e7b87949f9f9d9083776a5d50444f5c6976828f9c9f9f94877b6e6154483b2e2120202020181715110c060000000000000713202d3946525e6875828f9ba9ada196897c6f63544a3f34281c0b000004101c2834404b5463707c8996a1ada89b8e8174675d5145392c20140900000916232f3c4855616b707979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979746a5e5145382b1f120000000000000916222f3b4854606b7071717171717171717171717171717683909ca9a89c8f82757171717171717171717171717171706b6054483b2f22160900000000000004101d2935404b556a7783909d998c7f7266564c41362a1d1105000000000013202c3946535f6c7986929facada093867a6d6053473e48515b626d737f8c929ca4a59d938d80746e645c524a40372e251c1309010000000000000000000000000000000000000000000000000000000000000000000000000613202c3946535f6c7986929facaca09386796d6053463a2d20130700000000000000000000000000000000000000000000030e18212a31373a3b414243404546484746413a32281e1308000006111b262f3b45525d6875828e9ba8ac9f93877a6e6154473b2e21140800000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b0000000916222f3c4955626f7c8895a2b5ab94877b6e6c70757a7d808284848586858583817f7c78736e68605d564f473f362d251b120800000000000000010d19242f414d5a6774808d9aabaea298887b6e61555353535353535353535353535353535355626f7c8899a3afa9988b7e7265584b3f3225180c000006121f2c3844505c666d71767b80858b90959b9fa3a9a19e99928e89837e79746e6964605b54524c47433d38342f2a251f1b17110d080100000000000000000000000000000713202d3a4653606d798693a0aca69a8d8073675a4d4034271a0700000916232f3c4956626f7c8995a2afa4988b7e7165584b3e3225180b0000000000000000000000000000000000000814212e3b4754616e7a8794a1a094877a6d6154473a2e211407000000000000000000000000000000000000000000000000000000000000000000000006111c262f3c464e585f676d727678797876726d68615e56524c454145515d67757979797771675b4f43362a1d10040000000000000000000000000000000000000000000000000000000009121b242d373f49525b636e74808d929da5a39f99979ea1a69e948e81786c605c524940372d241b1108000000000000000000000000000000000000000005080a0b1313131315212e3b4854616e7b8794a1aa9d9083776a5d50444f5c6976828f9ca9a194877b6e6154483b2e21151313130b0a080500000000000000000714212e3a4754616d7a86929facab9e9184786c605346392e23170b0000000c18232e394653606c7884919eabac9f92857a6d6053473b31261a0e02000714202c38444f5961636c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6a62584d4135291d100000000000000a1623303d495663707d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7e83919daaaa9d90837e7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d706356493d3023160a000000000000000c18242f424f5c6875828f9b9c908376685e5246392d201307000000000013202c3946535f6c7986929facada093867a6d6053473a3f49515b636d73808d929da5a59d928d80746e635c524940372e251b13090000000000000000000000000000000000000000000000000000000000000000000000000613202c3946535f6c7986929facaca09386796d6053463a2d2013070000000000000000000000000000000000000000000009151f2a333c4247484d4f504b51535454524c443a3025190d0100000a141d2935414c5664717e8b97a4afa49a8a7e7164574b3e3124180b00000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b0000000815212e3b4854616e7b8794abb5a295887b6f6263686d7073767778797978787674726f6a66615e56524c433d352d241b1309000000000000000000081724313e4a5764717d8a99a3afaa988b7e7165574d42464646464646464646464646424d5765727f8c98abada297887b6f6255483c2f221509000003101c28343f4a545c60646a6e74797e83898e92989ea0a8a39f9b95908b85807b76706c66615e56544e4745403936312b27221b19130c04000000000000000000000000000713202d3a4653606d798693a0aca79a8e8174675b4e412e23180c00000916232f3c4956626f7c8995a2afa4988b7e7165584b3e3225180b0000000000000000000000000000000000000814212e3b4754616e7a8794a1a094877a6d6154473a2e2114070000000000000000000000000000000000000000000000000000000000000000000000000a141d2a343c464e555d6065696c6c6b6965615e56524d46413b35414b555d6b6c6c6c6a675f564b3f33271b0e02000000000000000000000000000000000000000000000000000000000009121b252d374049525c646e74808d939da59f9f9f9fa79f948f82786d665b504a40372e251b1209000000000000000000000000000000000000000000000000000606060815212e3b4854616e7b8794a1a99d9083776a5d50444f5c6976828f9ca9a194877b6e6154483b2e2115080606000000000000000000000006121e2b37424d5765727f8b99a3aea89a8d8073655b5044372b1c110600000007121f2b3844505b6673808d9aa8aea2988b7e7164574d42362a1e12050004101c28333e474f5557606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060605f5e5850473c3125190d000000000003101d2a3643505d6976838a8a8a8a8a8a8a8a8a8a8a8a8a8a8a9195a0acab9f95908a8a8a8a8a8a8a8a8a8a8a8a8a8a8a83776a5d5044372a1d1104000000000000071a2734414d5a6774808d9a9f93867a6d6154473a2e23180c000000000013202c3946535f6c7986929facada093867a6d6053473a373f49525b636e74808d939da5a49d928d80736e635b51493f372d251b120900000000000000000000000000000000000000000000000000000000000000000000000613202c3946535f6c7986929facaca09386796d6053463a2d201307000000000000000000000000000000000000000000020e1a26313c454d53555a5b5c555c6061615e564c41362a1d11050000020b19242f3c4955626f7c8895a2b6ac998d8073665a4d4033271a0d00000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b0000000714212d3a4754606d7a8799a4afa296897c6f63565d606366696a6b6c6c6c6b6a6865625f5854524d45413a312b231b1209010000000000000000000714212e3a4754616d7a86929faca89b8e8275695e53463d313939393939393939303946525e6976828f9ca9ab9e9285786c605346392d2013060000000c17232e38424a5053575f62676d71777c81868c91969c9fa4a7a09d97928d87827d78726d6862605853514b46423b37332d29241e160d0a0100000000000000000000000713202d3a4653606d798693a0aca89b8f827568544b4034281c1004000916232f3c4956626f7c8995a2afa4988b7e7165584b3e3225180b0000000000000000000000000000000000000814212e3b4754616e7a87949f9f94877a6d6154473a2e211407000000000000000000000000000000000000000000000000000000000000000000000000020b18222a343c434b5154595d5f5f5e5c5854524c46423b36302f3a434b515e6060605e5b564d44392e22170b0000000000000000000000000000000000000000000000000000000000000009131c252e37404a525c606c77818e93939393939393959082796d665c544a3f382e251c130900000000000000000000000000000000000000000000000000000000000815212e3b4854616e7b87949c9c9c9083776a5d50444f5c6976828f9c9c9c94877b6e6154483b2e211508000000000000000000000000000814212e3a47535f697683909d9f9fa096897c6f6253493f33271b0a00000000030f1c28333f4a54626f7c8895a09faa9c908376695f53463a2d21140700000b16212c353e44484a5353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353514d473e352a1f1409000000000003101d2a3643505d6976839097979797979797979797979797979da0a8b1b1a79f9d97979797979797979797979797979083776a5d5044372a1d11040000000000000c1926323f4c5965727f8c98a4998b7e7164544a4034281c10040000000013202c3946535f6c7986929facada093867a6d6053473a2d374049525c606c77818e939ea6a49c928c80736d635b51493f372d241b1209000000000000000000000000000000000000000000000000010101010101010101010613202c3946535f6c7986929facaca09386796d6053463a2d20130701010101010101010101000000000000000000000006121e2b37424d575f616768696a676d6e6d685e5246392d2013080000000814212e3b4754616e7a8794a1ada89b8e8175685b4e4235281b0f02000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b0000000613202d394653606c7986939faca3968a7d706357525457595c5d5e5f5f5f5e5d5b5855534e4746413b352f281f19110900000000000000000000000713202d3946525d6876828f9ca9ac9f92867b6e61584e433b322c292424292c3139424d57616e7b86929faca89b8e8174655b5044372b1f120500000006111c2630383f44464e53555d60656a6f747a7f848a8f93999ea1a9a29f9a938f8a847f7a746f6a64605c55534d46443f38352f28201c140a00000000000000000000000713202d3a4653606d798693a0aca99d908376665c5145382c1f130700091623303c4956636f7c8996a2afa4988b7e7165584b3e3225180b0000000000000000000000000000000000000814212e3b4754616e7a8792929292877a6d6154473a2e21140700000000000000000000000000000000000000000000000000000000000000000000000000061018222a313a4145474c50525352504c4746413a36302a2528313a414547535353514f4b443b32281d110600000000000000000000000000000000000000000000000000000000000000010a131c252e384044505b656c7881868686868686868683796d675d544a42382d261c130a0100000000000000000000000000000000000000000000000000000000000815212e3b4854616e7b878f8f8f8f8f83776a5d50444f5c6976828f8f8f8f8f877b6e6154483b2e211508000000000000000000000000000815222f3b4855626e7b8895939393939184776a605441382d22170b00000000000b17222d3847545f6a7784919393939394887b6e6155483b2e221508000005101a232c33383c3d464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464645413c352c23190e03000000000003101d2a3643505d697683909c9f9f9f9f9f9f9f9f9f9f9f9f9fa9abb0b8b8b0aaa89f9f9f9f9f9f9f9f9f9f9f9f9f9d9083776a5d5044372a1d11040000000000000b1724313e4a5764717d8a97ab9b8e8275665c5144382c1f12060000000013202c3946535f6c7986929facada093867a6d6053473a2d2e374044505b656d78818e949ea6a49c928c7f736d635b51493f362d241b120900000000000000000000000000000000000000010406070d0d0d0d0d0d0d0d0d0d0d13202c3946535f6c7986929facaca09386796d6053463a2d20130d0d0d0d0d0d0d0d0d0d0d07060400000000000000000814212d3a47535f696e7475767778797b7a6d6154473a2f24190d0100000714202d3a4753606d7a8693a0ada89c8f8275695c4f4236291c0f03000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b00000005121f2b3744505b657885929faba4978b7e7164584b474a4d4f515152535252504e4c4947433c39363029241e160d0700000000000000000000000005111d2935414c5664717e8b96a1ada3998d80746a60564d443e39352f2f35383c434b545e6973808d99a3aca096897d706353493f33271b0f03000000000a151e262e34383c42474b5153586062686d72787d82878d92979c9fa6a49f9c96918c86817c76716d67615e5753504945413a322e261c1207000000000000000000000713202d3a4653606d798693a0acac9f9286796d6053463a2e23180d060a1723303d4a5663707d8996a3b0a4978b7e7164584b3e3125180b0000000000000000000000000000000000000814212e3b4754616e7a8786868686877a6d6154473a2e21140700000000000000000000000000000000000000000000000000000000000000000000000000000610181f282f35393a3f43454645433f3a3936302a251f191f282f35393a46464644433f39322920160b000000000000000000000000000000000000000000000000000000000000000000010a131c2627333f49535b666c757979797979797979776d675d554b42392f261c140a010000000000000000000000000000000000000000000000000000000000000814212e3b4754616e7a8283838383828074675a4e414d5a6673808283838383827a6e6154473b2e211408000000000000000000000000000d1a2733404d5a66738086868686868686807366584e432f261b1106000000000006111c2b37434e5866737f86868686868686807366594d4033261a0d00000008111a21282c2f3039393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393835312a231a110700000000000003101d2a3643505d6976839093939393939393939393939393939c9fa6b0b0a69e9c93939393939393939393939393939083776a5d5044372a1d11040000000000000916232f3c4956626f7c8995ab9f9285796d6053463a2d2013090000000013202c3946535f6c7986929facada093867a6d6053473a2d2027333f49535c666d78828f949fa6a49c918c7f726d625b51483f362d241b12080000000000000000000000000000000001070d1113141a1a1a1a1a1a1a1a1a1a1a1a202c3946535f6c7986929facaca09386796d6053463a2d201a1a1a1a1a1a1a1a1a1a1a1a1313100c070000000000000815222e3b4855616e7b80828384858687807367554c4135291d120c070a0a15212e3b4854616e7b8794a1aea89c8f8275695c4f4236291c0f03000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b000000030f1b27333f495e6b7884919eaba5988b7f7265584c3f3d404344454646454543413f3c3b37322d2a251f19130c0400000000000000000000000000010d1924303a4653606d7984919ea7ab9f92877c6f685e564f47454141414045474e555c666e7b86929faba89e9184786c605346392d22170b0000000000030c151c23282c3137394045474e54565e61666c70757b80858a90949a9fa2a8a19e98928e89837e79736e6963605b53524c4440382e24190e020000000000000000000713202d3a4653606d798693a0acaea398897c6f62544b4034281f1612101824313e4b5764717e8a97a4b1a4978a7e7164574b3e3124180b0000000000000000000000000000000000000714202d3946525e687579797979797975685e5246392d201307000000000000000000000000000000000000000000000000000000000000000000000000000000060d161d24292c2d323639393836322e2d2a251e19140d161d24292c2d3939393736332e2820170e0400000000000000000000000000000000000000000000000000000000000000000000010a1417222d38414a545b60686c6c6c6c6c6c6c6c6a605d554c433930271d140a02000000000000000000000000000000000000000000000000000000000000000714202d3946525e686e767676767676746e64584c404b58636e737676767676766e685e5246392d201407000000000000000000000000000c1926323f4b57636e7379797979797979736e6358463d321d140a000000000000000f1b26323c4b57636d7379797979797979736e63574b3f3226190c000000000810161c2023242d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2c2b29251f1911080000000000000003101d2a3643505d69768286868686868686868686868686868690949fabaa9e948f86868686868686868686868686868683776a5d5044372a1d11040000000000000814212e3b4754616e7a8799a3a297897c706356493d31261a0e0200000013202c3946535f6c7986929facada093867a6d6053473a2d20222d38414a545c666d79828f949fa7a49c918c7f726d625b51483f362c241a12080000000000000000000000000000040c13181d2021272727272727272727272727272c3946535f6c7986929facaca09386796d6053463a2d27272727272727272727272727201f1c18120b03000000000915222f3c4855626f7b888e8f9192978f8276675d5145392f241d181616141b222f3c4955626f7c8895a2afa89b8e8275685b4f4235281c0f02000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b000000000b17222d44505d6a7783909daaa6998c7f7366594c403333363738393939383735322f2e2b26201e19140d080b09050100000000000000000000000008131f2c3845515c67727f8b95a0aba39991847a6e68615954514c4e4e4b5153575f676d78839098a2aca0968b7f72665b5044382b1b1106000000000000030a11171c1f262b2f35393d43474c52545b6063696e73797e83888e92989da0a7a39f9b95908b85807b75706c65605d56524a40352a1f13070000000000000000000713202d3a4653606d798693a0acb4aa998d8073665c51453b3128201f1c1e26323f4c5965727f8c98a5b0a3968a7d7063574a3d3024170a00000000000000000000000000000000000005111e2a36414c565e616c6c6c6c6c6c615e564c4135291d110500000000000000000000000000000000000000000000000000000000000000000000000000000000040c13181d2021262a2c2c2b292521201d19130e09040c13181d20212d2d2d2b2a27221d160e050000000000000000000000000000000000000000000000000000000000000000000000000006111b262f38424a50535b60606060606060605d54514c433a31271e150b02000000000000000000000000000000000000000000000000000000000000000005111e2a36414c565e6169696969696967645c52473c47525c6366696969696969615e564c41362a1e1105000000000000000000000000000a17232f3b47525c63666c6c6c6c6c6c6c66635c5247342b200b02000000000000000a15202f3b46515b63666c6c6c6c6c6c6c66635c52473b2f23170a0000000000050b1014161720202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020201f1d19140e070000000000000000030f1c2935424e5a66707679797979797979797979797979797982909ca9a89c8f827979797979797979797979797979797771665b4f4236291d10030000000000000613202d394653606c7986929fa99a8d807367574d42372b1e120600000013202c3946535f6c7986929facada093867a6d6053473a2d201b262f38424a545c676d798290959fa7a39b918b7f726d625a50483e362c241a1108000000000000000000000000040d161d24292c2d34343434343434343434343434343946535f6c7986929facaca09386796d6053463a34343434343434343434343434342d2c28231d150c030000000713202d3a4653606d7985929c9d9f9f92867a6d60554b40352f2923232324262d36424d5765717e8b98a4b1a69a8d8073675a4d4034271a0d01000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b00000000061d293643505c6976838f9ca9a69a8d8073675a4d403427292a2b2c2c2c2b2a282522211f1b1919191919181715110c06000000000000000000000004101c2834404b55606d78839099a3aba09690837a706b64605d555b5b555d60636a6e79818e959faaa49a9184796d60544a3f33281c0a000000000000000000060c10151a1d24292c32383a41464a5053575e61666d71767c81868b91959b9fa3a79f9d97928d87827d78726d68635c52473b2f23170a0000000000000000000713202d3a4653606d798693a0acb8ab9e9285796d60574d433a322d2c282a2d36424d576774818e9aa7b3a995897c6f6256493c2f231609000000000000000000000000000000000000010d1925303b444c52545f5f5f5f5f5f54524c443a3025190d01000000000000000000000000000000000000000000000000000000000000000000000000000000000001070d111314191d1f201f1d191413110d0802000001070d1113142020201e1d1b17110b040000000000000000000000000000000000000000000000000000000000000000000000000000000a141d262f383f44464e5353535353535353504745413a31281f150c03000000000000000000000000000000000000000000000000000000000000000000010d1925303b444c52545c5c5c5c5c5c5a58524a4136404a52585a5c5c5c5c5c5c54524c443b3025190d010000000000000000000000000007131f2a35404a52575a606060606060605a58524a403522190f000000000000000004121e2a354049515759606060606060605957524a40352a1f1307000000000000000407090a131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131312100d0903000000000000000000010d1a26323e4a545e66696c6c6c6c6c6c6c6c6c6c6c6c6c6c76838f9ca9a89c8f82756c6c6c6c6c6c6c6c6c6c6c6c6c6c6a665f554a3e32261a0e0100000000000005121f2b3744505b657784919eaa9d918477695f53473a2d21140800000013202c3946535f6c7986929facada093867a6d6053473a2d20141d263039424b555d676d79839095a0a8a39f93887f726c625a50483e362c231a110800000000000000000000010c161f282f35393a40404040404040404040404040404046535f6c7986929facaca09386796d6053464040404040404040404040404040403a38342e271e150b00000006121f2c3844515c6676828f9caaaba2988b7e72675d51454039342f3030312f383f46525e6975818e9ba8b3a9988b7e7265584b3f3225180c00000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b000000020f1c2935424f5c6875828f9ba8a79a8e8174675b4e413428252525252525252525252525252525252525252524211d17110900000000000000000000000c18232e3944515c666f7c87929fa4a8a09590847d76716d6769676869676d70757b838e939ea7a59f93887d70665c5142382d22170b000000000000000000000003090e12181d1f272b3036383f44464d53545c60646a6f747a7f84898e92999ea1a8a19e99938f89847f7a736e63574b3f3226190c0000000000000000000713202d3a4653606d798693a0acb9ada1978b7e71695e554c443e3a3834363a3d46535e697784909daaada297877a6e6154473b2e2114080000000000000000000000000000000000000008141e29323b4146475353535353534746413a32281e13080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010406070c10121312100c070705010000000000000104060713131311100e0b060000000000000000000000000000000000000000000000000000000000000000000000000000000000020b141d262d333839424646464646464646443a39352f281f160d03000000000000000000000000000000000000000000000000000000000000000000000008141e29323b4146475050505050504e4c4741382f3840474b4d5050505050504746413b32291e14080000000000000000000000000000020e19242e3840474b4d535353535353534d4b4740382e2410070000000000000000020d19232e3740464b4c535353535353534d4b4740372e24190e02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16222d38434c545a5d606060606060606060606060606976838f9ca9a89c8f827569606060606060606060606060605d5b554d43392d22160a00000000000000030f1b27333f49536976838f9ca9a096887b6e6155483b2f24190d01000013202c3946535f6c7986929facada093867a6d6053473a2d2014141e273039434b555d676d7a839096a0a8a49a93887e716c615a50483e352c231a110800000000000000000007131d28313a4145474d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d535f6c7986929facaca09386796d60534d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4645403930271d1207000004101c2834404a5465727e8b98a2aeaa9e9184796d605b514b45403e3d3d3d3f4149505b616e7b86929facada197887c6f6255493c2f22160900000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b000000020e1b2835414e5b6874818e9ba7a89b8f8275685c4f4235323232323232323232323232323232323232323232312e29221b12090000000000000000000007121d2834404a54606a727f8c929ca4a7a096918a827d7a7775747475767a7d818790959ea5a59e938d80736b60544b402f261c11060000000000000000000000000001070c10161b1e252a2d33383b42464b5153585f62676d72777c82868c91969c9fa4a49f9c96918b868073665a4d4033271a0d0000000000000000000713202d3a4653606d798693a0acb1a7a09d92857b6e675d56504846443f4246474f58616e7b8795a0acab9f928578685e5246392d20140700000000000000000000000000000000000000020d1720293036393b4646464646463a3935302820160c020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b141c22282b2d353939393939393939372d2c29241e160d04000000000000000000000000000000000000000000000000000000000000000000000000020d1720293036393b43434343434341403c362f262e353b3f404343434343433b3936302920170d0200000000000000000000000000000007121c262e353b3f4046464646464646403f3b352e261c120000000000000000000007121c252e353b3e4046464646464646403f3b352e251c12070000000000000000000000000000000000000000000000000000000000000000000004090d0f101313131313130e0d0b0803000000000000000000000000000000000000000000000000000000030f1b26323c464e53555656565656565656565656565c6976828f9ca9a89c8f8275695c56565656565656565656565655544e463c32271b0f0300000000000000000b17222d414e5b6874818e9ba7a8988c7f7265554c4135291d1104000013202c3946535f6c7986929facada093867a6d6053473a2d20140c151e273039434c555d686e7a849196a1a9a49a93877e716c615a50473e352c231a110700000000000000010d18242f3a434b51545a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5f6c7986929facaca09386796d605a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a53514b42392e23180c0000000c18232e3a4754616d7a86929fa9aca1968d80746d605d55514b4a49494a4b4f535b606d74818e98a3aeab9e9285796d6053463a2d20130700000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b000000010d1a2734404d5a6773808d9aa6a99c8f8376695c50433f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3e3d3a342d241b1106000000000000000000000c18232e39424e58626d73808c929ea1a8a19e948f8a8683828181828386898e93999fa7a39f938f81786d60594f42392e1d140a0000000000000000000000000000000000040a0f13191c22282b3136394045464e53555d60656b70757b7f848a8f939a9fa2a8a09e989083776a5d5144372a1e110000000000000000000713202d3a4653606d798693a0acaca09590959082796d68615a5553504a4d525459606a74808d9aa7b1a99c8f827669564d41362a1e11050000000000000000000000000000000000000000050e171e252a2d2e3939393939392e2d29251e160e04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030607090b0d0f1111121313121211100f0d0a080705020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a11171c1f20282d2d2d2d2d2d2d2d2a21201d19130c040000000000000000000000000000000000000000000000000000000000000000000000000000050e171e252a2d2e3636363636363433302b241d242a2f32333636363636362e2d2a251e170e0500000000000000000000000000000000000a141c242a2f32333939393939393933322f2a241c140a00000000000000000000000a131c232a2f32333939393939393933322f2a241c130a000000000000000000000000000000000000000000000000000000000000000000020a1015191b1c2020202020201b1a17140e08010000000000000000000000000000000000000000000000000006131f2b37434e585f62636363636363636363636363636976828f9ca9a89c8f827569636363636363636363636363636260584e43372b1f13060000000000000000061a2633404d596673808c99a6a99c8f8276675d5145392c201306000013202c3946535f6c7986929facada093867a6d6053473a2d2014070c151e27313a434c565e686e7b849196a1a9a49992877e716c61594f473e352b23190f0400000000000004111d2935414b555d606767676767676767676767676767676767676c7986929facaca09386796d676767676767676767676767676767676767605c544b4034281c100400000713202d3946525e6874808d97a2ada89d928c7f746d67605c5557565657585960656c727f8b939daaafa4998d8074665c5044382b1f120600000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b000000000d192633404c5966737f8c99a6aa9d9083776a5d504c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4b4a453f362d22170c0100000000000000000007121c27303d46515b646e73808a92979fa3a69f9c9992908f8e8e8f9092989b9fa4a69f99928c81786d665c50473d30271d0b020000000000000000000000000000000000000002080d11171c1f252a2e34383c43474c5154596063686e73797d82878d92979da0a79d9084776a5d5144372a1e110000000000000000000713202d3a4653606d798693a0acaa9d9084909490827a716c6562605c54565e61646b707c87929facb0a6998c7f7266594c3f3025190e02000000000000000000000000000000000000000000050d14191e20212c2c2c2c2c2c21201d19130c040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000104060b10121315171a1c1d1e1f1f201f1f1e1d1b19171514120e09060300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b0f12131b20202020202020201d1413110d080100000000000000000000000000000000000000000000000000000000000000000000000000000000050d14191e20212929292929292726241f1a13191f23262729292929292921201e19140d05000000000000000000000000000000000000020a12191f2326272d2d2d2d2d2d2d2726231f19120a020000000000000000000000010a12191e2325262d2d2d2d2d2d2d2626231f19120a010000000000000000000000000000000000000000000000000000000000000000040c141b212528292d2d2d2d2d2d2726241f1a130b020000000000000000000000000000000000000000000000000815212e3b47535f6a6f707070707070707070707070707075828f9ca8a89c8f827570707070707070707070707070706f6a6054473b2e22150800000000000000000b1825323e4b5865717e8b98a4ac9f92867a6d6054473a2d22170b000013202c3946535f6c7986929facada093867a6d6053473a2d201407030c151f28313a444c565e696e7b849197a1a9a39992877e706c61594f473d352b21160b0000000000000613202c3945515d676d737373737373737373737373737373737373737986929facaca0938678737373737373737373737373737373737373736d665c5145382c1f1306000005111d2935414c56616d7a85929fa5aea49b918c8079716d67656463636465686b70787f87929fa5afa89f93877b6e61544a3f34281c100300000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b000000000c1925323f4c5865727f8b98a5aa9e9184776b5e5858585858585858585858585858585858585858585858585650483f34291d1105000000000000000000000b151e2b343f49525c646e737e858e92999ea1a8a39f9d9c9a9b9c9d9fa3a9a29f9b948f877f776d665c544a3f352c1e150b0000000000000000000000000000000000000000000000060b0f141a1d23282c32373a4145474f54565e61666d70767b80858b90959b9d9084776a5d5144372a1e110000000000000000000713202d3a4653606d798693a0aca396897d85929490847d76726e6d666b6b696e71757d859299a3afab9f94887b6e6155483b2e221508000000000000000000000000000000000000000000000002080d1114142020202020201413110d0802000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070d1113171c1f20222426292a2b2b2c2c2c2b2b2a28262422211e1a1312100c06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000306060f131313131313131311070604010000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080d1114141d1d1d1d1d1d1b1a17140e080e1317191a1d1d1d1d1d1d1414110d0802000000000000000000000000000000000000000000070e1317191a202020202020201a1917130e08000000000000000000000000000000070d12161919202020202020201a1917130e07000000000000000000000000000000000000000000000000000000000000000000020c161e262c3135363939393939393433302b241d140b0100000000000000000000000000000000000000000000000916222f3c4955626f7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7d82909ca9a99d90837d7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c6f6255493c2f22160900000000000000000a1723303d4a5663707d8996a3aea3998a7d7164544a3f33281c0f030013202c3946535f6c7986929facaca093867a6d6053473a2d20140700030d161f28323b444d575f696e7c859297a2aaa39992877e706b61594f473d32271b100400000000000714212d3a4754606d79808080808080808080808080808080808080808087929facb3a69a8d8080808080808080808080808080808080808080796d6053463a2d2013070000010d1925303a46525e68717e8b939da5ada39b928d847e797572717070707274777d828c9299a3afaaa1968e8174695f5342382e23170b0000000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b000000000b1825313e4b5864717e8b97a4ab9f9285786565656565656565656565656565656565656565656565656565625a50453a2e21150900000000000000000000030c19222d37404a525c636c717a81868d9196989b9c9e9f9f9f9f9e9d9b9997928e89827c736c655c544b42382e231a0c030000000000000000000000000000000000000000000000000003090e12181c1f262b2f35393d44484d52545c6064696e74797e83898e929084776a5d5144372a1e110000000000000000000714202d3a4753606d7a8693a0ada194887b7e8b9296918a837f7b79787778797a7d82889297a1abafa4998f8276695f53473a2d211408000000000000000000000000000000000000000000000000000105070813131313131307070501000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090e13181d2023282b2d2f3133353737383939393837373533312e2d2a26201f1c17110d0802000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010507081010101010100e0d0b08030002070a0c0d1010101010100807050100000000000000000000000000000000000000000000000002070a0c0d131313131313130d0c0a0702000000000000000000000000000000000002060a0c0d131313131313130d0c0a0702000000000000000000000000000000000000000000000000000000000000000000000a141e2830383d414346464646464641403c362f261d13080000000000000000000000000000000000000000000003101d2a3643505d69768289898989898989898989898989898990949fabab9f959089898989898989898989898989898983776a5d5044372a1d1104000000000000000815222f3b4855626e7b8895a99f9f9b8e8174665b5044382b1f12060013202c3946535f6c7986929f9f9f9f93867a6d6053473a2d2014070000040d162029323b454d575f6a6f7c859298a29fa39992877d706b60594f44382c20130700000000000814212e3b4754616e7a878d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d9299a3afb5a89d928d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d867a6d6053473a2d20140700000008131e2a36414c56626c74818e939da4aea49d96918b85827f7d7c7c7d7e8184898f949fa3abaaa29891847a6d60574d4230261c11060000000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b000000000a1724313d4a5764707d8a97a3ac9f93867872727272727272727272727272727272727272727272727272716c62564a3d3124170b000000000000000000000007101b252e38404a525a61686d747b8084888b8e90919292929291908e8c8985817c766f6a605b534b423930261c11080000000000000000000000000000000000000000000000000000000000070c10151b1e24292c32383b41464a5053575f62676d71777c81868c83776a5d5144372a1e110000000000000000000714212d3a4754606d7a8793a0ada194877b74818e949e95908c888685848585878a8f939aa1a9afa59f93877c6f62574d42372b1e1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0f151a1d24292c2e34383a3c3e404244444546464545444342403d3b3a36312d2c28231c19130d08020000000000000000000000000000000000000000000000000000000000000000000000000000000000040607090c0e1011121313131211100f0d0b08070502000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101b26303a42494e4f5353535353534e4c4741382f241a0e0300000000000000000000000000000000000000000003101d2a3643505d6976839096969696969696969696969696969c9fa6b0b1a79f9d96969696969696969696969696969083776a5d5044372a1d1104000000000000000714202d3a4753606d7a8697939393939285796c605346392d2013060013202c3946535f6c7986929393939393867a6d6053473a2d201407000000040e172029333b454e585f6a6f7c8692989393939992867d706b6054483b2f22160900000000000814212e3b4754616e7a87949a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9fa3abb5b9aea49d9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a93867a6d6053473a2d201407000000020d1925303a44505a606d78818d929fa2aaa8a09e97928f8c8a89898a8b8e91969c9fa6ada7a09892867c6f685d52453c311e140a000000000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b00000000091623303c4956636f7c8996a2afa4998c7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e7165584b3e3225180b00000000000000000000000009131c262e38404850565e61696e73787c7e818384858686858583817f7c79746f6a625f585049413930271e150a0000000000000000000000000000000000000000000000000000000000000000040a0f13191d20272c3036383f44464d53555d60656a6f747a7f8175685b4f4235281c0f0000000000000000000714212e3a4754616d7a8794a0b4ab94877a6d78828f939f9d989a939291919298979b9fa4acaba39f938d80736a6054453c31261a0e020000000000000004080c0e0f0c07070501000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070c151b20262b2f35393a3f4446484a4d4f5051525253525251504e4c4a4846423d3a38342e29251e19140d050000000000000000000000000000000000000000000000000000000000000000000000000004070c10121316191b1d1e1f1f201f1f1e1d1b19171414110e0806030000000000000000000000000000000000000000000000000004090e1112131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313130b0a08040000000000000000000000000004080a0b1313131313131313131313131313131311100e0b06000000000000000000000005090d0f101313100f0d090500000000000000000000000000000000000000000000000000000000000000000000000000000915212c38424c545a5c6060606060605a58524a41362b1f140800000000000000000000000000000000000000000003101d2a3643505d697683909c9f9f9f9f9f9f9f9f9f9fa3a3a3a9abb0b9b9b1aba9a3a3a39f9f9f9f9f9f9f9f9f9f9d9083776a5d5044372a1d11040000000000000006131f2c3945515d677885868686868686867c6f6256493c2f2316090013202c3946535f6c798786868686868686796d6053473a2d20140700000000050e172129333c464e58606a707d8686868686868686867c706356493d3023160a00000000000814212e3b4754616e7a8794a1a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6acafb5acacacaea8a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a093867a6d6053473a2d2014070000000008131e29323f44505c666d78808b92989fa3aba9a29e9b9897969697989b9ea0a8aca9a19e9590867d6f6a60564c41332a1f0c02000000000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b000000000915222f3c4855626f7b8895a2b5ab9b918c8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b85786b5f5245382c1f12050000000000000000000000010a141c262e363e444c52575e61666a6f7274767878797978787675726f6d66626058534e443f382f271e150c030000000000000000000000000000000000000000000000000000000000000000000001080d11161b1f252a2e34383c42474b5153586062686d72756f65594d4134281b0e0000000000000000000814212e3b4754616e7a87949f9fa39986796d6d79818c92989fa29f9e9e9e9fa2aaa8a9aaa29f99928b81786d60584e43332a1f150900000000000002090f14181b1b191413110d08020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b121820262b31373a4145474a50535557595c5d5e5e5f5f5f5e5e5d5b595755534d4946443f3835302a251e170e0802000000000000000000000000000000000000000000000000000000000000000001070c1013181c1f20232527292b2b2c2d2c2c2b2a28262421201e1915120f0a0300000000000000000000000000000000000000000000080f151a1d1f20202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020171714110c05000000000000000000050c11141717202020202020202020202020202020201e1d1b17120b0400000000000000020a1015191c1c20201c1c1915100a020000000000000000000000000000000000000000000000000000000000000000000000000d1925313d49545e65696c6c6c6c6c6c67645c52473c3024170b00000000000000000000000000000000000000000003101d2a3643505d6976839093939393939393939393939b9ea5afb7b7b6b7b9b8afa59d9b93939393939393939393939083776a5d5044372a1d11040000000000000004101d2935404b55687378797979797979796f6a6054483b2e22150900121f2c3845525e6a75797979797979797976675c5145382c1f13060000000000050f18212a333c464e58606b70797979797979797979706b6054483b2f22160900000000000814212e3b4754616e7a87949f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f93867a6d6053473a2d20140700000000020d172028343f4a545c666d747e858e92999ea1a8a7a8a5a4a3a3a3a5a7a8aca49f9d97928c837b6f6b60584e443a3021180e00000000000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b000000000815212e3b4854616e7b8794abb5ada39b989898989898989898989898989898989898989898989898989285786b5f5245382c1f1205000000000000000000000000020a131c242c323a41464d5254585f626568696b6c6c6c6c6b6a686663605c54544e47433c332d261d150c030000000000000000000000000000000000000000000000000000000000000000000000000001040b1014191c23282c3137394045474e54565e616568655d53483d3125190c0000000000000000000815222e3b4855616e7b889393939392867966676d787f868d92989a9c9e9e9f9f9e9d9c9998928d877f746d665c50463d3221180e030000000000030b131a202527282621201d19130f0a040100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070c151d232831373c42474b5154545c60626466686a6a6b6c6c6c6b6a6a686664615f575653504a46413a3630292019130d05000000000000000000000000000000000000000000000000000000000003090e12181d1f23282c2d3032343638383939393838373533312e2d2a25211f1b150f0b060000000000000000000000000000000000000009121920262a2c2c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2423211c171008000000000000000810171c2123242d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2b2a27231d160e050000000000040c141b212528292d2d292825211b140c0400000000000000000000000000000000000000000000000000000000000000000000020f1b2835414e5a657076797979797979746e64584c4033261a0d00000000000000000000000000000000000000000003101d2a3643505d6976828686868686868686868686868e939ea9b0aba9abacb2a99d938e86868686868686868686868683776a5d5044372a1d110400000000000000000c18242f39435761686b6c6c6c6c6c6c6c6260584e43382c1f130700111d2a36424e59636a6c6c6c6c6c6c6c6c6c5c554b4034291c1004000000000000060f18212a343d464f5960636c6c6c6c6c6c6c6c6c6360594f44382c20130700000000000814212e3b4754616e7a8793939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393867a6d6053473a2d2014070000000000050e17232e38424a545c606c717a81868d9196989a9c9e9f9f9f9f9e9d9c999a93908b857f786e6960594f463c32281e0f0600000000000b1825313e4b5864717e8b97a4aca89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7aca4978b7e7164584b3e3125180b000000000714212d3a4754606d7a8799a3afacada7a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a59e9285786b5f5245382c1f120500000000000000000000000000010a121a202830363b4246484e5355585b5d5e5f5f5f5f5e5d5b595653514a47433d373127221b140b03000000000000000000000000000000000000000000000000000000000000000000000000000000000002080e11171c1f262b2f35393d43474c5254595b59534b42372c2015090000000000000000000916232f3c4956626f7c86868686868685786b5c666c727b80858a8d8f9192929291908f8c8a86807b726d605c544a3f342b200f060000000000020b151d252c313435332e2d2a251e1b16110d0701000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000810191e272e343c43474d53555d6064666d6f7173757777787979787877767573706e696763605c54524c46413b322a251e170e06000000000000000000000000000000000000000000000000000001070c141a1d24292c2e34383a3c3f4143444546464645444342403e3b3936302e2b261f1c17110a020000000000000000000000000000000008121b242b3136383939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393931302d28221a1208000000000008121a22282d3031393939393939393939393939393939393736332e2820170e04000000020c161e262c32353639393635322c261e160c0200000000000000000000000000000000000000000000000000000000000000000003101c2936434f5c6976828686868686868074675a4e4134271b0e010000000000000000000000000000000000000000030f1c2935424e5a667076797979797979797979797979818e9ba7a69f9c9ea1a8a79b8e817979797979797979797979797771665b4f4236291d1003000000000000000007121d2731454f575d5f6060606060606056544e463d32271b0f03000e1a26313d4751595e5f606060606060605f514b43392f23180c0000000000000000060f18222b343d474f54565f606060606060605f56544f473d32271b100400000000000814212e3b4754616e7a868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686796d6053473a2d20140700000000000006111c263038424a505a61686e747b8084888b8e90919292929291908f8d8a87837e79726d665f574f473d342b20160c0000000000000b1825313e4b5864717e8b979f9f9f9b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9a9f9f9f978b7e7164584b3e3125180b000000000613202c3945515d677986929f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9e9285786b5f5245382c1f1205000000000000000000000000000000080e161e252a30363a3c4347484b4e50515253535252504e4c494644403937322b262017110a02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060c10151a1d24292c32373a4146474c4f4d48423930251b0f040000000000000000000815222e3b4754606a6f797979797979787368545b60696e74797d808284858685858482807d7a746e69625b504a42382e22190f00000000000009131d272f373d40423f3a3936302c27201d18130f0a040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009111a222a303940454e53575f62676d7175797b7d8082838485858685858483817f7d7b7874706d66615e56524c443e36302920180f07000000000000000000000000000000000000000000000000030b12181f252a2f35393a404446494c4e5051525253525251504e4c4a4746413c3a37312b28221c140b070000000000000000000000000000040f19242d353d4245464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646463e3c39332c241a100500000005101a242c33393c3e4646464646464646464646464646464644433f39322920160b0000000a141e2830383d4143464643413d3830281e140a000000000000000000000000000000000000000000000000000000000000000000020f1c2835424f5b6875828e939393938d8073675a4d4034271a0d010000000000000000000000000000000000000000010d1a26323e4a545e66696c6c6c6c6c6c6c6c6c66707d89939eab9f94909196a1ac9f93887c6f666c6c6c6c6c6c6c6c6c6a665f554a3e32261a0e010000000000000000010b151f333d454c5052535353535353534948433d342b21160a00000915202b353f474e5253535353535353535345403931271d1207000000000000000000061019222b353d4448495253535353535353524948443d352b21160b0000000000000714202d3946525e687679797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797976675d5145392c201306000000000000000a141e2630383f4450565e61696e73787b7e81838485868685858482807d7a76726d67605c544d453d352b22190e040000000000000b1825313e4b5864717e8b93939393938e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d93939393938b7e7164584b3e3125180b0000000004111d2935414b556b7885929393939393939393939393939393939393939393939393939393939393939285786b5f5245382c1f120500000000000000000000000000000000050c13191f252a2d32373b3c3f414345454646454543423f3c3a38342e2b27201b150b060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090e12181d1f272b3035393a3f42413d3730271e14090000000000000000000006131f2b37434e5860626c6c6c6c6c6c6b68615750575e61676d7073767778797978777673706d67615e5751443f3830261c10070000000000040f1a252f3941484d4e4c4746413a38322c29241d1a15100c070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009121b232c343c424b51585f62696e747a7d8185888a8c8f9091919292929191908e8c8a8884807d79736d68615e565046413a322a2119100700000000000000000000000000000000000000000000060d151d24293136394045474a515356585a5c5e5e5f605f5f5e5d5b595754524c4847433c38332d261d18120b030000000000000000000000000915202b353f474e52535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353534a49453e362c22170c0000000c17222c363e45494a53535353535353535353535353535353514f4b443b32281d12060005101b26303a42494e4f53534f4e49423a30261b10050000000000000000000000000000000000000000000000000000000000000000020e1b2835414e5b6874818e9b9f9f998c807366594d4033261a0d000000000000000000000000000000000000000000000a16222d38434c545a5d6060606060606057606d7883919da5a499908384919ea6a49a9083786d6057606060606060605d5b554d43392d22160a00000000000000000000030d212b333b404445464646464646463c3b38322b22190f040000040f19242d353d424546464646464646464638342f271f150b0100000000000000000000071019232b32383b3d4646464646464646463d3b38322b23190f0400000000000005111e2a36414c565e6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c5d554b4035291d110400000000000000020c141e262e343e444c52575e61666a6f727476777879797978777573716d6865605d55504a423c332b23191007000000000000000b1825313e4b5864717e868686868686868175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a677480868686868686867e7164584b3e3125180b00000000010d18242f44515e6b7784868686868686868686868686868686868686868686868686868686868686868685786b5f5245382c1f1205000000000000000000000000000000000002080d141a1e20262b2e2f323536383939393938373533302d2c28231c1b150f0a030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070c10161b1e25292d2e323534312c251e150c0200000000000000000000030f1b27323d464e545660606060606060595751444d53555c606367696b6b6c6c6b6a696663605d55534d453f342e261e140a0000000000000814202c37414b53595b5954524c48433d39352f2b261f1c18120e090300000000000000000000000000000000000000000000000000000000000000000000000000000000000009121b242d353e464e545c606a6f757b81868a8e929797999b9d9d9e9f9f9f9e9d9d9b999796918d8985807a746e68615a524c443c332b2219100700000000000000000000000000000000000000000910181f272f353b42464b5153545c60636567696b6b6c6c6c6b6b6a686664615e5655534e46443f382f28231d150c0500000000000000000000000e1a26313d4751595e5f606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060575550483e33281c11040004111c28333e48505557606060606060606060606060606060605e5b564d44392e23170b000915212c38424c545a5c60605c5a544c42382c2115090000000000000000000000000000000000000000000000000000000000000000010e1b2734414e5a6774818d9aa7a5998c7f7266594c3f3326190c0000000000000000000000000000000000000000000005111c27313a434a4e50535353535353535e69727f8c95a0a99f93877c7e8a949faba0958c7f72695e53535353535353504f4a433b31271c110500000000000000000000000f1921292f343738393939393939392f2e2c27211910070000000008121b242b3136383939393939393939392c29231d150d0300000000000000000000000007111921272c2f30393939393939393939302f2c272119110700000000000000020e1925303b444c525f6060606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060605f514b433a2f24180d010000000000000000020c141c2328323b41464d5354585f626567696b6c6c6c6c6b6a696664615e5653514b443f38302a2119110700000000000000000a1724303d4956626c7179797979797979756f65594d4034271b0e01000000000000000000000000010d1a2733404c58646e7479797979797979716c6256493d3024170a0000000000071d2a37434f5c67727779797979797979797979797979797979797979797979797979797979797979797873685d5044372b1e11050000000000000000000000000000000000000003090e12151b1f212225282a2b2c2c2c2c2b2a282623201f1c18120f0a04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0f13191d202126282825201b140c030000000000000000000000000a16202b343d434749535761686b6c6c66635b5146464b515357565e61666a6c6c6a66605d56514c46423b3328231c140c020000000000000c1825313d48535d656866615e56544f4745403a37312c28231c1a140f0b0600000000000000000000000000000000000000000000000000000000000000000000000000000007101b242d363e474f585f666d737c82878e92989b9ea2a9a6a8aaa8a7a6a6a6a7a8a9a8a6a8a19e9a97928c86807a716c615e564d453c342b22190e0500000000000000000000000000000000000009121b222a313940454d53555d6065666d6f72747677787979797877767573716e6867625f5853504a423d342e271e170e0500000000000000000000111d2a36424e59636a6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c64615a5045392d211408000814212d3945505a61646c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6a675f564b3f33271b0e000d1925323d49545e66696c6c69665e54493d3225190d0000000000000000000000000000000000000000000000000000000000000000010d1a2734404d5a6773808d9aa6a5988b7e7265584b3f3225180c00000000000000000000000000000000000000000000000a151f2831383e42434646464643505a616e7b86929fa7a2978d817476828f99a3a79f92867b6e61594f434646464644423e3931291f150b000000000000000000000000070f171e24282b2c2d2d2d2d2d2d2d23221f1b160f0700000000000009121920262a2c2c2d2d2d2d2d2d2d2d1f1c18120b030000000000000000000000000000070f161b2022232c2d2d2d2d2d2d2d2c2322201b160f0700000000000000000008141e29323b4146535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535345403a31281d130700000000000000000000020a1117202930363b4246484e5355585b5d5e5f5f5f5f5e5d5c5a5754524c47454039342e261e180f070000000000000000000815212d3945505a62646c6c6c6c6c6c6c68655d53483d3124180c00000000000000000000000000000b1824303c48535c64676c6c6c6c6c6c6c64625a5045392d21150800000000020f1b27333f4b5660676b6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6b6861574c4034281c0f0300000000000000000000000000000000000000000002050a0f121515181b1d1e1f20201f1f1d1b19161312100c07000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080d111314191c1b19150f090200000000000000000000000000040f19222b32373b3c505c6873787979736d63574b434750555d60686d7276787977736d685f584e443b31292117110a02000000000000000e1b2734404d59656f75726d6863605953514b47433c38342e2a251f1b17110d08020000000000000000000000000000000000000000000000000000000000000000000000050e19222d363e485059616a6f7980878f93999fa3aaabaaaaa29f9d9b9a9a999a9a9b9d9fa2aaa9aba9a19e98928d857e756d685f574e463c342a20170c030000000000000000000000000000000009121b242c343c434b51575e61676d7175797c7f81838485858685858483817f7d7a77736f6a64605b544f454039302920170f05000000000000000000121f2c3845525e6a7579797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979716c6155493c3023170a000a1723303c4955616c71797979797979797979797979797979797771675b4f43362a1d10000f1c2835414e5a66707679797670665a4e4135281c0f0200000000000000000000000000000000000000000000000000000006050403020d1a2633404d596673808c99a6a4978b7e7164584b3e3125180b0203040506000000000000000000000000000000000000030d161f272d323536393935404b55616c75828f98a2a79f92857a6d6e7c87929fa9a2988f82756c61554b403539393736322d271f170d0300000000000000000000000000060d13181c1e1f202020202020201615130f0a040000000000000000080f151a1d1f20202020202020202013100c070100000000000000000000000000000000040b101316161f202020202020201f161613100b0400000000000000000000020d1720293036393b4646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464639352f281f160c01000000000000000000000000060e171e252a31363a3c4347484b4e50515253535252514f4d4a4746413a39352f28231c150c060000000000000000000005111d29343e48505658606060606060605b59534b41372c20140800000000000000000000000000000814202b36414a53585a60606060606060585650483e34291d110500000000000b17232e3a444e565c5e60606060606060606060606060606060606060606060606060606060606060605f5d574f453b2f24180c00000000000000000000000000000000000000000000000000030608090c0e10121213131212100f0c09070604000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010507070c0f0e0c09040000000000000000000000000000000007101920272b3845525f6b788586867f7366574d4e535a61676d727a7f83858584807a6f6a5f564d42362a1f14080000000000000000000f1b2835424e5b6875817f7a756f6b65605d55534e4644403936302b27221b19130f0a040000000000000000000000000000000000000000000000000000000000000000020d17202b343e48505a616b707c838c92999fa4abaca7a09d999892908f8d8d8d8d8d8f909298989c9fa4abaaa29f97928a827a6e6960584e463c32291e150b00000000000000000000000000000008121b242d363e464e555d60696e74797e8285898b8d8f91919293929291908e8c8a8784807c76716c666059514b433b332921170e05000000000000000013202c3946535f6c79878686868686868686868686868686868686868686868686868686868686868686868686868686868686868686867e7164574a3e3124170b000b1724313e4a5764717d8686868686868686868686868686868684776a5e5144372b1e1100101c2936434f5c69768286868276695c4f4336291c10030000000000000000000000000000000000000000000000030608091211100f0e0d1926333f4c5966727f8c99a5a4978a7d7164574a3e3124170d0e1011121307060401000000000000000000000000000000040d151c2226292a2d2c3945515d67707d8a949eaaa0958b7f72686a73808d97a1aa9e938a7d70675d51453c31262a2926221c150d0500000000000000000000000000000002070c0f11121313131313131309090703000000000000000000000004090e111213131313131313131306040000000000000000000000000000000000000000000307090a1313131313131313130a09070400000000000000000000000000050e171e252a2d2e393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939392c29241d160d040000000000000000000000000000050d14191f252a2d31373a3c3f41434445464646454442403e3a3936302c29241d17110a030000000000000000000000000c17222d363e45494b535353535353534e4d4841392f251a0f040000000000000000000000000000030f1a252f3841484c4e535353535353534b49453e362d22170c00000000000006121d28323c444b4f51535353535353535353535353535353535353535353535353535353535353535352504c453d33291e1307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070f161b2a3743505d6a7683908f8276695e54585f626c71797f858c909292908c857c6f695e52463b3025190e020000000000000000101d2a3743505d6a76838c86817c77726d67625f5853514a46423b37332d29241e1b15100c0701000000000000000000000000000000000000000000000000000000000009141f29323d46505a626c717d8690959fa3ababa49f9b95908c898584828180808081828385888b8f93999fa2aaa9a19e938f847b6f6a60584e443b30271d12070000000000000000000000000006101a242d363f4850585f676d737b80858b8f9298989a9c9e9e9f9f9f9e9e9d9b999795908d88837e786f6b605c554d453b332920170c030000000000000013202c3946535f6c798692939393939393939393939393939393939393939393939393939393939393939393939393939393939393938a7e7164574a3e3124170b000b1724313e4a5764717d8a93939393939393939393939393939184776a5e5144372b1e1100101c2936434f5c6976828f8f8276695c4f4336291c1003000000000000000000000000000000000000000000040a0f1315161f1e1d1c1b1a1925323f4c5865727f8b98a5a3968a7d7063574a3d3024191a1b1c1d1e1f1413110d08010000000000000000000000000000030a11161a16202b37434e58606d7984919ea6a59d9083786d60606d7a85919ea6a59e9184796d60584e43372b20161a16110b0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d14191e20212d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d201d18130c040000000000000000000000000000000002080d141a1e21262b2e2f323436383939393938373633312e2d2a25201d18120c06000000000000000000000000000006111b242d34393d3e4646464646464642403d372f271d13090000000000000000000000000000000008131d262f363c4041464646464646463e3d39342d241b1106000000000000010c16202a323a3f434446464646464646464646464646464646464646464646464646464646464646464544403b332b21170d0200000000000000000000000000000000000000000000000000000000000000000000020608080c0f111213131312100e0c08070502000000020404060606060606000000000000000000000000000000000001040707131313131313130d0c0a07020000000000000000000000000002060808131313131313131310060603000000000000000000000000040a1b2835424e5b6875818e92877b6e6663646a6f767e848c92989d9f9f9d9791857b6e61564d41362a1e11050000000000000000101d2a3743505d6a768390928e89837e7a746f6a64605c54524d46443f3835302b271f1d18120e09030000000000000000000000000000000000000000000000000000030d1925303b444e58626c717e879298a0a7afa79f99938e88837f7c79777574737373747577797c7f83878d92989ea5ada59e9691857c6f6a5f564c42392e23180c030000000000000000000000030c18222c363f48505a616a6f7980868d92979c9fa2aaa7a9a8a7a6a6a6a7a8a9a8a6a7a09d9a94908a837c746d675e574d453b32291e150a0000000000000013202c3946535f6c7986929f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f978a7d7164574a3e3124170b000b1724313e4a5764717d8a979f9f9f9f9f9f9f9f9f9f9f9f9d9184776a5e5144372b1e1100101c2936434f5c6976828f8f8276695c4f4336291c10030000000000000000000000000000000000000000070f161b1f22232c2b2a2928272625323e4b5865717e8b98a4a396897c706356493d3025262728292a2b2c21201d19130c040000000000000000000000000000000508131e28323a47535f6a73808d96a1aa9e93897d70665c5d67717e8b949faba1968d80736a5f53473e32281e13080500000000000000000000000000000000000407090a13131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313130a0907040000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080e1114142020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202013110d07010000000000000000000000000000000000000003090e12151a1f212225282a2b2c2c2c2c2b2a29272421201e1913100d07010000000000000000000000000000000009121b22292d3031393939393939393534312c251d150b0100000000000000000000000000000000010b141d252b3033343939393939393931302d29221b12090000000000000000040e1820282e33373839393939393939393939393939393939393939393939393939393939393939393837342f2921190f0600000000000000000000000000000000000000000000000000000000000000000003090e121415191b1d1f1f201f1f1d1b191514120e09030b0e10111313131313130b0b0905010000000000000000000001080d111314202020202020201a1916130d0700000000000000000000030a0f1214151f202020202020201c13120f0b0600000000000000000000000c1926333f4c5966727f8c998f8279727071757c838a91969fa2aaa3a3a9a1978e8174685e5246392d2014060000000000000000101d2a3743505d6a7683909d9b95908b85807b76716d66615e5753504945413a37322c29241d1a15100b060000000000000000000000000000000000000000000000010b151f2a36424d56606a717e889299a2aaafa49c959087817c77726f6d6668676766676768666c6f72767b80868e939fa3aaa8a09792867c6f685e544b40342820150900000000000000000000000b151e2a343e48505a626c717c848c92989fa2a9aca8a8a09e9c9a9a999a9a9b9d9fa3ababaaa69f9c95908781796e695e574d443b30261c110600000000000013202c3946535f6c7986929facacacaea9a7a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a4978a7d7164574a3e3124170b000b1724313e4a5764717d8a97989898989898989b9ea6b0aa9d9184776a5e5144372b1e1100101c2936434f5c6976828f8f8276695c4f4336291c10030000000000000000000000000000000000000007101920272b2e2f3938373635343331313e4a5764717d8a97a4a295897c6f6256493c3132333435363738392d2c29241e160d040000000000000000000000000000020c1924303a44505a626e7c87929fa8a2988e81756b605455606c78839099a4a89f92877c6f625a50443a3024190c03000000000000000000000000000000040b101316162020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020171614100b05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000205070813131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313060401000000000000000000000000000000000000000000000002050a0f121515181b1d1e1f20201f1f1e1c1a171413110d080401000000000000000000000000000000000000000911171d2124252d2d2d2d2d2d2d282724201a130b03000000000000000000000000000000000000020b131a202427272d2d2d2d2d2d2d2524211d17110900000000000000000000060e161d23272a2b2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2c2b28241e170f070000000000000000000000000000000000000000000000000000000000000000060b0f151a1e212225282a2c2c2d2c2b2a282522211e1a1410171b1d1e202020202020181715110c060000000000000000040c13191d202d2d2d2d2d2d2d2d2625231e19120a0100000000000000060e151a1f21222c2d2d2d2d2d2d2d29201f1c17110a020000000000000000000a1623303d495663707c8998948f837e7d7e828790949ea1a19e9996979a9f9f92877b6e6154473b2d22170b0000000000000000101d2a3743505d6a7683909da7a09d98928d88837e79736e6963605b53524c47433c38352f2b261f1c17110e0802000000000000000000000000000000000000000007121d27313946525e696f7c86929aa3ababa39f928d837c756f6a6662605c545a5a5a5a5a545b606265696e747b818a9298a2a9a9a19891847a6e665c51453c31261a0e0500000000000000000007121d27303c46505a626c717e8691969fa2aaaba39f9b9796918f8e8d8d8d8d8f9092999a9ea1a9aba79f9a938d837b6e695e564c42382e23170c04000000000013202c3946535f6c7986929facb9aea49d9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a978a7d7164574a3e3124170b000b1724313e4a5764717d8a8b8b8b8b8b8b8b8b8f939eaaaa9d9184776a5e5144372b1e1100101c2936434f5c6976828f8f8276695c4f4336291c1003000000000000000000000000000000000000040f19222b32373b3c4544434241403f3e3d3d4a5763707d8a96a3a295887b6f6255483c3d3e3f4041434445463a39352f281f160c01000000000000000000000000000a141e2935414c56616c76828f99a3a89f92867b6e61594f505b656f7c87939fa9a3999082766c62564c4135291e150a0000000000000000000000000000070f161b2022232d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2323201c16100800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030608090c0e10111213131312110f0d0b070705010000000000000000000000000000000000000000000000060c11151718202020202020201b1b18140f0901000000000000000000000000000000000000000001080f14181a1b20202020202020181715110c06000000000000000000000000040c12171b1d1e20202020202020202020202020202020202020202020202020202020202020201f1e1c18130d0600000000000000000000000000000000000000000000000000000000000000020a11171b1f262b2e2f32353738393939383735322e2d2b261f1c23272a2b2d2d2d2d2d2d2524211d181109000000000000040d161e24292c393939393939393933322f2a241c130a000000000000060f1820262b2e2f3939393939393939362d2b28221c140b0200000000000000000713202d3a4653606d7985929f95908b898b8f93999fa39f97918c8a8a8e9299998c7f7265544a3f33281c0f0300000000000000101d2a3743505d6a768390979d9fa7a29f9a94908a85807b75706c65605d56544e4745403937312b28231c1914100b040100000000000000000000000000000000000c18232f3943505a616e7b859198a3acaca399928b80786f6a625f585653504a4e4d4d4d4e4a505355575e61696e757e869297a2aaaaa1969082786d60574e42372b21170b0000000000000000000c18232e39424e58616c717f8a9298a0a8aba49f99928e8a8784828180808081828486898d92979ea1a8aca49f9590847b6e685e544a3f342820150a000000000013202c3946535f6c7986929facb9a99d928d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8a7e7164574a3e3124170b000815222e3b4855616e7b7f7f7f7f7f7f7f7f7f818f9ba8aa9d9184776a5e5144372b1e1100101c2936434f5c6976828f8f8276695c4f4336291c10030000000000000000000000000000000000000a16202b343d4347495251504f4e4d4c4b4a49495663707c8996a3a194887b6e615548494a4b4c4d4e4f5051524745413a31281e130800000000000000000000000006111c26303845525d68717e8b949faba1968c8073695e534749535f6a74818d97a2ab9f948b7e71685d52463d30261c110600000000000000000000000007111921272c2f303939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939302f2c27211a11080000000000000002080d101213131313131313130707040100000000000000000000000000000000000000000000000000030613131313131313131313120f0a05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005080a0b131313131313130f0e0c080400000000000000000000000000000000000000000000000003080b0d0e131313131313130b0a080500000000000000000000000000000001060b0f1111131313131313131313131313131313131313131313131313131313131313131312110f0c070200000000000000000000000000000000000000000000000000000000000000060b141b22272b31373a3b3f4244454646464543413f3b3a37312c282e33363739393939393932312e29221b120900000000010c1620282f35394646464646464646403f3b352e251c120700000000040d18222a31373a3b4646464646464646433938332d261d140a000000000000000006131f2c3845515c6774818d98a09d9896979b9fa49f99928d85807d7d818792998f8276665b5044382b1f1206000000000000000c1926323f4c5965727f858b90959b9fa3a69f9c97918c87827d78726d6862605853514b47423c38342e2a251e1b16110d0801000000000000000000000000000004101c2934404b55616c76828f97a1aaafa49a92877e736d665f58534e4946443f41404040413f4446484d53565e616c717c859298a2aca89f948d80736a5f53473e33281c10040000000000000004101c2834404b545f6a717e87939fa2aaa9a199938e86827e7a777574737373747577797c80858b91969da5afa79f9691847a6e665c50443c32261b0f040000000013202c3946535f6c7986929facb3a79a8d80808080808080808080808080808080808080808080808080808080808080808080808080807c6f6255483c2f221509000714212d3a46535f696e7272727272727272727f8c99a5aa9d9184776a5e5144372b1e1100101c2936434f5c6976828f8f8276695c4f4336291c10030000000000000000000000000000000000030f1b27323d464e54565f5e5d5c5b5a595857565556626f7c8995a2a194877a6e615455565758595a5b5c5d5e5f54524c433a2f24190d0100000000000000000000000b17232e38424e58606d7a85929ea6a69e9184796d60574d42414e58616d7a85929ea7a69e92857a6d61584e42382e23170c0200000000000000000000040f19232b32383b3d46464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646463d3c38332c231a10050000000000060d14191c1f1f202020202020201413110d0801000000000000000000000000000000000000000000060c1012202020202020202020201e1b161009010000000000000002080d101213131313131313090806030000000000000000000000000000000000000000000000010407071213131313131313131313120f0a050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080f181d262d33373c4247484c4e505252535252504e4c4846423c3834393f43444646464646463e3d3a342d241b110600000008131e28323a414553535353535353534d4b4740372e24190d020000010c161f2a343c43474852535353535353534f46443f382f261c11060000000000000004101c2834404b55616e7b86929fa4a5a3a4a7a09d948f868079737070747d87939285796c605346392d201306000000000000000b1825313e4a57626d72797e83898e92999ea1a8a19e99928f89847f7a746f6a65605d55534d46443f3836302c27201d19130f0a0400000000000000000000000006131f2c3845515c67707d8a949fa9b0a69f93887e716c605c544e47433c3a38342e3433342d3338393c42464d525a616a6f7c86929aa4afa69f92877b6e62594f44392d20150a0000000000000006131f2c3845515c666f7c869299a4aea8a0979187817b75716d6869676766676768676d7073797e848e939fa4aca8a0969083786d60584e43372b20150a0000000013202c3946535f6c7986929facada0938679737373737373737373737373737373737373737373737373737373737373737373737373736f6a5f53473a2e2115080005121e2a36424d575f616565656565656566727f8c99a5aa9d9184776a5e5144372b1e1100101c2936434f5c6976828f8f8276695c4f4336291c1003000000000000000000000000000000000006131f2b37434e5860626c6b6a696867666463626160626f7b8895a2aa93867a6d606162636465666768696a6b6c605d564c4135291d11040000000000000000000003101c28343f4a54606a74818d97a1ab9f948a7e71675d51453b3c46525e68727e8b95a0aca1978e81746a60544a3f34281f1409000000000000000000000b16212b353d44484953535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353534a48443d352c21160b000000000810181f25292b2c2d2d2d2d2d2d2d2d201d19130c04000000000000000000000000000000000000030a11171c1f2d2d2d2d2d2d2d2d2d2d2b27211b130a010000000000060d14191c1f1f2020202020201515120f0a030000000000000000000000000000000000000001080d1113141f202020202020202020201e1b161009010000000000000004090e1112131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313130b0a0804000000000000000000000001060b0f111113131313131207060300000000000000000000000000000000000000000000000000000000000000000000060606060606060503000000020608080c0f111213131312100e0b08070502000000000000000000000000000000000000000000000000000008111a212a2f383f44464d5355585b5d5f5f605f5e5d5b5855534d46443f444b4f515353535353534b4a453f362d22180c0100010d19242f3a444c525f606060606060605957524940352a1e1307000007131d28313c464e53555f606060606060605c53504a42382d22170b00000000000000000c18232e3946525e69727f8b929b9e9f9e9b959089827b736d6763646b74818e98887b6e6255483b2f221508000000000000000916222e3a46515b62676d71777c81868c91969c9fa6a39f9b96918c86817c77716d67615f5753504a46413b38322c29241e1b15100c0700000000000000000003101c28343f4a54606d7984919ea6b0aa9e948c7f736c625a504a423c37322d2c282327272722282b2d31363b42465058606a707e88939fa8aea3998f82766c6155493c31261b0f00000000000004111d2935414b55606d79839098a3aba9a09691857d746e6964615d565b5a5a5a5a555c6063666d7179818b939aa4afa89f958c80736a5f54473d32271b0f0100000013202c3946535f6c7986929facada093867a6d676767676767676767676767676767676767676767676767676767676767676767676767625f584e43372b1f120600020e1a26313b454d53555858585858585966727f8c99a5aa9d9184776a5e5144372b1e1100101c2936434f5c6976828f8f8276695c4f4336291c100300000000000000000000000000000000000815222e3b4754606a6f7877767574737271706f6e6d686e7b8894a1a39886796c6c6d6e6f7071727374767778796d685d5245392c201306000000000000000000030c19232b3844505c666f7c87939fa9a3998f82766c61554b403335414c56606c7883909aa4a99f93887c6f665c50443b30251a0d03000000000000000004101b27323d474f5456606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060606056554f473d33271c1004000006101a222a3035383939393939393939392c29241e160d0400000000000000000000000000000000030c151c23282c3939393939393939393937332c251c1309000000000810181f25292b2c2d2d2d2d2d2d22211f1b150e060000000000000000000000000000000000040c13191d20212b2d2d2d2d2d2d2d2d2d2d2b27211b130a010000000000080f151a1d1f20202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020171714110c050000000000000000040c12171b1d1e20202020201f1312100c060000000000000000000000000000000000000000000000000000000105090b0b13131313131312120f0c04090e121415191b1d1f1f201f1f1d1b181414110e0802000000000000000000000000000000000000000000000008111a232c333c41495053575f6265686a6b6c6c6c6b6a6865615f5753504a4e565b5e606060606060585650483f34291d11050004111d2935414c565d6c6c6c6c6c6c6c6c66635b52473b2f23160a00071018242f3a434e585f626c6c6c6c6c6c6c6c69605b544a3f33281c0f030000000000000007121d2a36424d56626d7380898f9292918f8a837d766e69605d5559626f7c89988a7d7063574a3d3024170a0000000000000006121e29353f4951555c60646a6f757a7f848a8f949a9fa2a8a09e98928e88837e79736e6964605c54524c48443d39352f2b261f1c18120b030000000000000006121f2b3844505c66727f8c96a0acaea2988f82776c605a50443f38302b26201f1c171a1a1a171c1f20252a30363e464e58616c73808d96a1acab9f948a7d7064584e43372b1d120700000000000613202c3945515d67737f8c95a0aaada19791847b706b615e5754524c4e4d4d4d4e4b5153545c60676d747f88939fa5afa79f92877c6f62584e43372b1d120700000013202c3946535f6c7986929facada093867a6d605a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a55534e463c31261b0f03000009141f2a333b4246484c4c4c4c4c4c5966727f8c99a5aa9d9184776a5e5144372b1e1100101c2936434f5c6976828f8f8276695c4f4336291c100300000000000000000000000000000000000916232f3c4956626f7c8584838281807f7e7d7c7b7a79787a8794a19f92867978797a7b7c7d7e7f8081828384867a6d6054473a2d2114070000000000000000000b151e2a36414d56606d78839099a4a99f92877c6f625a5043392f303a44505b666f7c87939faaa49a9083786d60574d42362a1f150b01000000000000000713202c38444f5960636c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6361594f44382c20140700020d18222c343b414446464646464646464639352f2820160c010000000000000000000000000000000a151e262e343846464646464646464646433e372e251b1005000006101a222a303538393939393939392f2e2b2620181006000000000000000000000000000000040d161e24292c2d383939393939393939393937332c251c13090000000009121920262a2c2c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2423211c171008000000000000060e161d23272a2b2d2d2d2d2d2c201f1c17110a03000000000000000000000000000000000000000000000000060c111517182020202020201f1e1c1810151a1e212225282a2b2c2d2c2b2a282521201e19140f0a040000000000000000000000000000000000000000060f1a232c353e454d535b6064696e72757778797979787674726e6964605c545660676a6c6c6c6c6c6c65625a50453a2e211509000713202c3945525d687679797979797979736d63574b3f3225190c050e19222935404b555f6a6e7979797979797979766c665b5044382b1f120600000000000000000e1925303b44515b636e737d82858684827d78706b625f57514b53606d788686867f7265584c3f3225190c00000000000000010d18232d373f434b5153586062686d73787d82888d92989da0a8a29f9b95908b85807b76706d66615e56544f4745413a37312c28231d150c030000000000000713202d3a4653606d7884919ea8b2a99f92867b6e655b50483e342e261e1b1312100c060d060b0f12131a1f252a343d46505a606d7984919ea8b0a69c8f83766a5f5347392e23180c00000000000714212d3a4754606d7a85929fa7b0a69e92857b6e696059524d47464141404040414045464b51555d606d727f8b939ea9afa3998f82766a605447392f24180c00000013202c3946535f6c7986929facada093867a6d60534d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4847433c342a20150a000000030e18212a31363a3b3f3f3f3f3f4c5966727f8c99a5aa9d9184776a5e5144372b1e1100101c2936434f5c6976828f8f8276695c4f4336291c100300000000000000000000000000000000000916232f3c4956626f7c8991908f8e8d8c8b8a898887868583919daa9f92878385868788898a8b8c8d8e8f9091877a6d6054473a2d211407000000000000000007121d27303946525e68727f8b95a0aba1978d80746a5f53483e312728333f4a54606b74818e98a2aca0958c7f72695e52463e31271d1207000000000000000916222f3b4854606b707979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979706b6155483c2f2316090008141f2a343e464d5152535353535353535345413a32281e1308000000000000000000000000000006111c2630383f44535353535353535353534f4940372c21160a00020d18222c343b4144464646464646463c3a37312a22180e0300000000000000000000000000010c1620282f35393a4546464646464646464646433e372e251b1005000008121b242b3136383939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393931302d28221a120800000000040e1820282e3337383939393939392d2c28231c150c03000000000000000000000000000000000000000000000911181d2124252d2d2d2d2d2d2c2b28241c1f262b2e2f32353738393939383735312e2d2a251f1b150d07010000000000000000000000000000000000020b18212c353e474f575f656c71767b7f8183858586858583817f7b77716d665f58677277797979797979716c62564a3d3124170b000714212d3a4754606d7a86868686868686807366594d4033261a0d0b16202b343d45515d676e7c868686868686868682796c605346392d201306000000000000000009141f29323f49525c636b707578797875706c656059534d4544505c6674797979726d62564a3e3124180b000000000000000007111b252d31394045474e54565e61666d70767b81858b91959b9fa3a79f9d97928d87827d78736e6863605954514c47433c38342e271e150b000000000005111e2a36414c5664707d8a96a1adada1978c7f72695e53493f3628231c140c0a060300000000000306090e1419222b343e45515d67717e8a96a0acab9f94887c6f62544b4034281c100400000006131f2b37434e5866727f8c97a2adaa9e948a7d70695f574f46423b3935303433342e34383a40454b515b626d74818e97a1adab9e94897c6f62554b4035291d1004000013202c3946535f6c7986929facada093867a6d6053474040404040404040404040404040404040404040404040404040404040404040403c3a37312a22180e0400000000060f181f262a2d2e323232333f4c5966727f8c99a5aa9d9184776a5e5144372b1e1100101c2936434f5c6976828f8f8276695c4f4336291c100300000000000000000000000000000000000916232f3c4956626f7c89959d9c9b9a99979695949992919195a0aca399929091929995969798999a9b9c9d93877a6d6054473a2d21140700000000000000000c18232e39424f59616e7b85929fa7a79e92857a6d60584e43362c1f222d38424f59616e7a86929fa7a79f92867b6e61594f43392f24180c030000000000000a1623303d495663707d86868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686867d7063564a3d3023170a000d1925303b4650585d5f606060606060605f524c443a2f24190d01000000000000000000000000000c17232e38424a505f60606060606060605f5a52493e33271b0f0008141f2a343e464d51525353535353534847433c342a20150a0000000000000000000000000008131e28323a41454752535353535353535353534f4940372c21160a00040f19242d353d4245464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646463e3c39332c241a10050000010c16202a323a3f43444646464646453a38342e261e150a00000000000000000000000000000000000000000009121b22292e313239393939393939373430282c31373a3b3f4244454646464543413e3b3936302b272018130c04000000000000000000000000000000000a141d2a333e474f5961696e787e83888b8e909292939291908e8b88837e786f6a606a77848686868686867e7165584b3e3225180b000714212d3a4754606d7a8793939393938c807366594d4033261a0a141d28323d46515b606d798391989393939991847a6d665b5044382b1f12060000000000000000020d17202d37404952596063686b6c6b6864605b534f47423c3f4a545c6a6c6c6c65625b51463a2e2215090000000000000000000a131b1f272f34383d43474c52545c60646a6e747a7f84898f92999ea1a9a29f9a938f8a847f7a75706b65605d55534e4645403930271d1207000000000714202d3946525e6876828f9ca8b2ab9e9185796d60574d41382d2417110a02000000000000000000000002091019222935404b55606c7884919dabb0a69a8e8174665c5145382c1f13060000000815222e3b4754606a7884919ea9b1a79c8f82756c61574d453d36302d292427272723282c2e343a4145515b606d7a85929eaab0a69b8e8275675d5145392c1f1306000013202c3946535f6c7986929facada093867a6d6053473a34343434343434343434343434343434343434343434343434343434343434342f2e2b2620181006000000000000060e141a1e2122252526333f4c5966727f8c99a5aa9d9184776a5e5144372b1e1100101c2936434f5c6976828f8f8276695c4f4336291c100300000000000000000000000000000000000916232f3c4956626f7c8995a2a7a6a5a4a3a2a1aaa29f9e9da0a7b1aba39f9d9e9fa2aaa2a3a4a4a5a6a7a093877a6d6054473a2d2114070000000000000004101c2834404b54606b75818e98a2aca0958b7e72685d52463c31241a1c262f3d46525e68727f8c95a0aca2988e81756b61554b4035292015090000000000000a1623303d495663707c89939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393897d7063564a3d3023170a00101c2935414d5862696c6c6c6c6c6c6c6c6c5d564c4135291d110400000000000000000000000003101c28343f4a545c6c6c6c6c6c6c6c6c6c6c645a4f43372b1e12000d1925303b4650585d5f60606060606055534e463c31261b0f030000000000000000000000030c19242f3a444c52545e6060606060606060605f5a52493e33271b0f000915202b353f474e52535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353534a49453e362c22170c000006121d28323c444b4f5153535353535246443f3830261c11060000000000000000000000000000000000000006111b242d343a3d3e4646464646464544403b34383c4247484c4e505252535252504e4b4746413b373229241d160d05000000000000000000000000000006111b262f3c454f59616b707b838a9095989b9d9e9f9f9f9e9d9b9895908b837c706b67798592939393938a7d7164574a3e3124170b000714212d3a4754606d7a87939f9f9f998c807366594d4033261a111c262f3a444e58626d75818e95a0aaa59f92877c6f685e544a3f33281c0f03000000000000000000050e1b252e3740474f54565c5f5f5e5c57535049413d373138424a50535f6060585651493f34291e1206000000000000000000010a0d151d23292c32383a41464a5053585f62676d72777d82878d92979d9fa7a49f9c96918c86827c77726d67625f5853514b42392e23180c000000000814212e3b4754616e7a87939facafa3998c7f72675d51453b2f261b1206000000000000000000000000000000071018242f3944505b66727e8b99a3aeac9f9285796d6053463a2d2013080000000916222f3c4955626f7c8896a1acaca095897c6f625a50453b332a25201d191a1a1a181c1f23282f353f45515d67727f8b98a2aeac9f9286796d6053473a2d201406000013202c3946535f6c7986929facada093867a6d6053473a2d2727272727272727272727272727272727272727272727272727272727272722211f1b150e06000000000000000003090e121415191926333f4c5966727f8c99a5aa9d9184776a5e5144372b1e1100101c2936434f5c6976828f8f8276695c4f4336291c100300000000000000000000000000000000000916232f3c4956626f7c89959b9a999998979695949892919095a0aba39992909192989495969798999a9b9c93877a6d6054473a2d211407000000000000040d1a242c3845515c66707d89939eaaa59d9083786c60564c41342a2012141d2a36414c56606d7883919da5aa9e938a7d70675d51453c31261a0d0400000000000a1623303d495663707c89969f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f96897d7063564a3d3023170a00121f2b3844515d6974797979797979797976685d5245392c20130700000000000000000000000006121f2c3844505c66767979797979797979766c5f5346392d201300101c2935414d5862696c6c6c6c6c6c6c625f584e43372b1f120600000000000000000000000b151e2935414c565d606b6c6c6c6c6c6c6c6c6c6c645a4f43372b1e12000e1a26313d4751595e5f606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060575550483e33281c1104000b17232e3a444e565c5e60606060605f53504a42382e23170c000000000000000000000000000000000000010c18222d363f454a4b53535353535352504c454044464e5355585b5d5e5f605f5e5d5b5854524d47433d352f281f170f05000000000000000000000000000b17222d38414d57616b707d8690959d9fa7a8aaaaa39f9e9e9e9fa3a09d9590867d706d798698a29f9f96897d7063564a3d3023170a000714212d3a4754606d7a8793a0aca6998c807366594d4033261a17222d38424c56606a727f8b939ea8a79e938b7f726a60564c42382d22170b000000000000000000000009131c252e353d4448494f5253514f4a46443f382f2b2630383f44465353534c4a463f372d23180d010000000000000000000000030b12181c1f272b3036383f44464e53555d60656b70757b80858b90959b9fa3a8a19e99928e89847f7a746f6a64605c544b4034281c10040000030f1b27333f495364717e8b9aa4afac9f92867a6e61554b4033291d140a000000000000000000000000000000000007121d28333f4a54616d7a86929facaea298897d706356493d2f24190d0100000d1a2633404d596673808c99a8b2aa9d9083776a6054483e332a211a14110d080d070c1013181d242935414c55606d7985929fabaea2988a7d7164574a3e2e23170b000013202c3946535f6c7986929facada093867a6d6053473a2d201a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1515120f0a040000000000000000000000020507080c1926333f4c5966727f8c99a5aa9d9184776a5e5144372b1e1100101c2936434f5c6976828f8f8276695c4f4336291c100300000000000000000000000000000000000916232f3c4956626f7c89908f8e8d8c8b8a898887868584839099a49f9287838485868788898a8b8c8d8e8f90877a6d6054473a2d2114070000000000010c161f2a36424d57606d7984919da5aa9e93897c6f665b50443a3022180e0b1925303b44515c66707d89939eaaa59e9184796d60574e42372b20160c01000000000a1623303d495663707c8996a3acacacb5afaca7a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a396897d7063564a3d3023170a00131f2c3946525f6c7986868686868686867a6d6054473a2d2114070000000000000000000000000713202d3a4653606d788686868686868686796c605346392d201300121f2b3844515d697479797979797979766a5f53473a2e2115080000000000000000000007121d27303945525d686d78797979797979797979766c5f5346392d201300111d2a36424e59636a6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c64615a5045392d211408000f1b27333f4b5660676b6c6c6c6c6c6c605c544a3f34281c1003000000000000000000000000000000000005111d29343f485056586060606060605f5d574f4a5153575f6265686a6b6c6c6c6b6a6864615e56544e45413a312921170f050000000000000000000000030f1b27333f49535f69707d8792989fa7aba7a09d9898929191919299989d9f9892877d707a8794aab4a396897c706356493d3023160a000714212d3a4754606d7a8793a0ada6998c807366594d403326172128333f4a545e686f7c87929fa5aaa0958e81756d62584e443a2f261c11060000000000000000000000010a131c232b33383c3d42454645423d3937332d261d1e262e34383a4646463f3e3a342d251b11060000000000000000000000000001070c10161b1e252a2e34383c43474b5154596063696e73797e83888e92989ea1a8a39f9b95918b85817c76716d665c5145382c1f1306000005121f2b3744505b6575818e9bacb6a99c8f8276685e5243392f21170b020000000000000000000000000000000000010b17222d3846525d6875828f9ca8b4aa9a8d807367564c4135291d11040005111e2a36424d576976838f9ca9b5ab998c7f7366584e43362c21180f0905010000000004070c1319242f3a45515d6774818e9aa7b4aa9b8e817468544a3f34281c10030013202c3946535f6c7986929facada093867a6d6053473a2d20140d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0908060300000000000000000000000000000000000c1926333f4c5966727f8c99a5aa9d9184776a5e5144372b1e1100101c2936434f5c6976828f8f8276695c4f4336291c100300000000000000000000000000000000000916222f3c4955626f7c83838281807f7e7d7c7b7a7978777887939f9e9184787879797a7b7c7d7e7f80818283847a6d6054473a2d211407000000000007131d28313a46535f69737f8c96a0aca2988e81756b60544a3f32281e100608141e2834404a54606b75828f98a2aca0968c80736a5f53473e32281e1308000000000a1623303d495663707c8996a7b1bbb5aba39f9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a96897d7063564a3d3023170a00131f2c3946525f6c7985929393939393877a6d6054473a2d2114070000000000000000000000000713202d3a4653606d798693939393939386796c605346392d201300131f2c3946525f6c79868686868686867c6f6255483c2f221509000000000000000000000c18232e39424f59606d7a85868686868686868686796c605346392d201300121f2c3845525e6a7579797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979716c6155493c3023170a00111d2a37434f5c6772777979797979786d665c5044382c1f120600000000000000000000000000000000000915212e3a45505a62656c6c6c6c6c6c6c696157545c60646a6e72757778797979787674716e68626058514b433b332921170d030000000000000000000005121f2b3744505b656e7b859299a2aaaaa39f95918b888584848586888b90959e9992857b7b8894a1aea295897c6f6256493c2f231609000714212d3a4754606d7a8793a0ada6998c807366594d4033261e29333b44505b666d7a849199a3aea2989083796d605b51463d32281d140a00000000000000000000000000010a111921272c2f303538393835312d2b27221b14151c23282c2d39393932312e29231b13090000000000000000000000000000000000040a0f13191c23282b31373a4145474f54575e61676d71767c81868c91969c9fa4a7a09d98928e88837e796d6053463a2d20130700000613202d394653606c7885929eabb3a9988b7f7265564c4131271d0f050000000000000000000000000000000000000006111c2935414c5665727f8b98aab4aa9d918477685d5245392c201306000714202d3a46525e697885929eabafa399897c6f6256493d32231a0f060000000000000000000108131e2935404b5564707d8a97a9b3aa9d908377665c5044382b1f12060013202c3946535f6c7986929facada093867a6d6053473a2d201407010101010101010101010101010101010101010101010101010101010000000000000000000000000000000000000000000c1926333f4c5966727f8c99a5aa9d9184776a5e5144372b1e1100101c2936434f5c6976828f8f8276695c4f4336291c100300000000000000000000000000000000000815212e3b47535f6a6f77767574737271706f6e6e6d66667885929e9d9083766b676d6e6f7071717273747576776d675d5145392c20130600000000020b18242f3a43505a616e7b86929fa8a89f92867b6e61594f42382d20160c00020c18232e39424f59616e7b86929fa8a89f92867b6e625a50443a2f24190c020000000a1623303d495663707c8995a0a9b3afa399928d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d897d7063564a3d3023170a00131f2c3946525f6c7985929f9f9f9f93877a6d6054473a2d2114070000000000000000000000000713202d3a4653606d7986939f9f9f9f9386796c605346392d201300131f2c3946525f6c79859293939393887b6f6255483c2f22150900000000000000000005101c2834404b54606b74818e979393939393939386796c605346392d20130013202c3946535f6c79878686868686868686868686868686868686868686868686868686868686868686868686868686868686868686867e7164574a3e3124170b00111e2b3844515e6b7784868686868686786d6053463a2d20130800000000000000000000000000000000000b1724313d4a56626c71797979797979787369585f666d71777b7f8183858586858583817e7b756f6a605d554d453b33291f150b010000000000000000030f1b27333f4953606c77829097a2abaaa398928b837f7b79787778797b7f83899196978f827c8895a2aea295897c6f6256493c2f231609000714212d3a4754606d7a8793a0ada6998c807366594d40332627303b454f59606c78828f96a1aba49f92857b6e675d51493f342b20160b02000000000000000000000000000000070f161c202223292c2c2b2924201f1b17110a0a11171c1f202c2d2d2524221e181109010000000000000000000000000000000000000002080d11171c1f262b2f35393d44484d53555c60646a6f747a7f848a8f939a9fa2aaa29f9a94908a8376695d5043362a1d1000000815222e3b4855616e7b8897a1adada197887b6e6255483b3022150b0000000000000000000000000000000000000000000d1924303c4855626f7b8898a2aeaca095877a6d6054473a2d211407000814212e3b4754616e7b8797a2adac9f92867a6d6053473a2d2014070000000000000000000000010d18242f3b4754616e7a8797a1adac9f9286796d6053463a2d2013070013202c3946535f6c7986929facada093867a6d6053473a2d201407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1926333f4c5966727f8c99a5aa9d9184776a5e5144372b1e1100101c2936434f5c6976828f8f8276695c4f4336291c1003000000000000000000000000000000000006131f2b37434e585f626a69686766666564636261605c6a7784919d9c8f8275695c60616263646566676869696a605d554c4135291d1104000000000a141d2935404b55616c75828f98a3aca0968c7f73695e52473d2f261c0e04000007121c27303d46535e69737f8c96a0aca3998f82766c61564c4135291e140a0000000714202d3a4753606d79839097a2acac9f928780808080808080808080808080808080808080808080808080808080808080808080808080807b6e6255483b2f22150800131f2c3946525f6c7985929facaca093877a6d6054473a2d2114070000000000000000000000000713202d3a4653606d798693a0acac9f9386796c605346392d201300131f2c3946525f6c7985929f9f9f95887b6f6255483c2f2215090000000000000000050e1b242c3845515c666f7c88939fa99f9f9f9f9f9386796c605346392d20130013202c3946535f6c798692939393939393939393939393939393939393939393939393939393939393939393939393939393939393938a7e7164574a3e3124170b000e1b2734414e5a6774818d93939398897c6f6356493c2f24190d01000000000000000000000000000000000b1825323e4b5865717e868686868686857866616a6f787e83888b8e909192939291908e8b86827c746d675e574d453b31271d1207000000000000000005121f2b3744505b65717e8a949fa9aea39892867f78726e6c656b666d6e72767d849094948c7f8c99a5afa295887c6f6255493c2f221609000714212d3a4754606d7a8793a0ada6998c807366594d4033232e39424d57616b73808c949fa8a69d928a7e71695f554b40372d22190e050000000000000000000000000000000000050b101316161c1f201e1c1713120f0b060000060c101213202020191815120d06000000000000000000000000000000000000000000000000060b10151a1d24292c33383b42464b5153586062686d72787d82878d92989da0a7a69f9c9084776a5d5144372a1e1100000a1724303d4a5763707d8a96a9b3ab9e928578695f53473a2e2114030000000000000000000000000000000000000000000813202d394653606c7985929facb1a795897c6f6256493c2f231609000916232f3c4956626f7c8995a9b3aa9e918477675d5145382c1f13060000000000000000000000000714202d3946525e687885919eabaea398887b6e6255483b2f2215080013202c3946535f6c7986929facada093867a6d6053473a2d20140c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c070604010000000000000000000000000000000000000000000c1926333f4c5966727f8c99a5aa9d9184776a5e5144372b1e1100101c2936434f5c6976828f8f8276695c4f4336291c10030000000000000000000000000000000000030f1b26323c464e53555e5d5c5b5a595857565554535d697683909c9b8e8174685b535455565758595a5b5c5d5e54514c433a2f24190d0100000006111b262f3845515d67717e8a949eaaa69e9184796d60574d42352b1d140a000000000b151e2a36424d57606d7984919ea6ab9f948a7e71685d52453d30261c1106000006131f2c3945515d676e7b85929aa4afa3998e81747373737373737373737373737373737373737373737373737373737373737373737373736e695f53473a2e21140800131f2c3946525f6c7985929facada093877a6d6054473a2d2114070000000000000000000000000713202d3a4653606d798693a0acac9f9386796c605346392d201300131f2c3946525f6c7985929faca295887b6f6255483c2f22150900000000000000020c16202b37424d57606d7983919aa4afacacacac9f9386796c605346392d20130013202c3946535f6c7986929f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f978a7d7164574a3e3124170b000a1724313d4a5764707d8a99a3aa998c807366564c4135291d1104000000000000000000000000000000000b1724313e4a5764717d8a939393939786796d6c707c838b9095989b9d9e9f9f9f9e9d9b99928f8781796e695e574d43392f24180c03000000000000000613202d394653606c7883909da6b0a79f92867d726c6662605b545c6062656b707a8290959286929facafa295887c6f6255493c2f221609000714212d3a4754606d7a8793a0ada6998c807366594d40332834404b545e69707d88939fa6a99f948d80736c61574d43392f251b100700000000000000000000000000000000000000000407090a0f1213120f0a0605030000000000000306071313130c0b090601000000000000000000000000000000000000000000000000000000030a0f13181d20272c3136394045464e54565e61666c70767b80858b90959ca4aa9d9084776a5d5144372a1e1100000c1926323f4c5965727f8c98a5b2a99c8f837669574d42372b1e120600000000000000000000000000000000000000000006121f2b3844505b667783909daab1a4978b7e7164584b3e3125180b000a1723303d4a5663707d8996a3b0a99c90837669554b4035291d100400000000000000000000000005111e2a36414c566a7683909da9b4aa96897c6f6356493c302316090013202c3946535f6c7986929facada093867a6d6053473a2d2019191919191919191919191919191919191919191919191919191413110d0701000000000000000000000000000000000000000c1926333f4c5966727f8c99a5aa9d9184776a5e5144372b1e1100101c2936434f5c6976828f8f8276695c4f4336291c10030000000000000000000000000000000000000a15202a343c43474951504f4e4d4c4b4a4948474f5b6875828e9b9a8d8073675a4d4748494a4b4c4d4e4f50514745413a31281e1308000000000b17222d38414e58606d7984919ea6ab9f948a7d70675c51453b3023190b0200000000030c1a25313b45515c67707d8a949eaba69e91857a6d60584e42382e23170b000004101d2935404b555f69707d88939fa6ab9d938b7e716a67676767676767676767676767676767676767676767676767676767676767676767625f574d42372b1e120600131f2c3946525f6c7985929facada093877a6d6054473a2d2114070000000000000000000000000713202d3a4653606d798693a0acac9f9386796c605346392d201300131f2c3946525f6c7985929faca295887b6f6255483c2f2215090000000000000008131e28323a47535f69737f8c95a0acb6b8b9beac9f9386796c605346392d20130013202c3946535f6c7986929facacacaea9a7a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a4978a7d7164574a3e3124170b000714212d3a4754606d7a86929fa99d908376685d5245392c201307000000000000000000000000000000000a1723303d4a5663707d89969f9fa994877a6d707e8690959da09e9c9b9a9b9c9ea1a9aba39f9a938e847b6e695e554b403529201509000000000000030f1c28333f4a5463707d8995a0acab9f958b7e716b605b5453504a5053555961686d798391999299a3aeafa295887c6f6255493c2f221609000714212d3a4754606d7a8793a0ada6998c807366594d4033343c45515c666e7b85929aa4aba1979082786d605a50453c31271d1309000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070d11161c1f252a2e34383c43474c52545b6064696e747a7e838c929caa9d9084776a5d5144372a1e1100000e1b2834414e5b6774818e9aa7b3a79a8d8074675a4d4131261a0e02000000000000000000000000000000000000000000030f1c28333f4a546875818e9ba8b3a6998d8073665a4d4033271a0d000b1724313e4a5764717d8a97a4b0a89b8f8275685c4f422f24180c00000000000000000000000000010d192530424f5c6875828f9ba8b0a3968a7d7063574a3d3024170a0013202c3946535f6c7986929facada093867a6d6053473a2d26262626262626262626262626262626262626262626262626262621201d18130c040000000000000000000000000000000000000c1926333f4c5966727f8c99a5aa9d9184776a5e5144372b1e1100101c2936434f5c6976828f8f8276695c4f4336291c1003000000000000000000000000000000000000040e18222a32373b3c44434241403f3e3d3c3b414e5a6774818d9a988c7f7265594c3f3c3d3e3e3f40414243443a39352f281f160c01000000030f1b27333f49535f6a73808d96a19fa3998f82766c61554b4033291f100700000000000009141f2934404b55616c76828f99a39fa1978d80746a60544a3f34281c100300000c18242f39434d57616b73808c949ea8a59f92867c6f685d545a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a55534d453c31261a0e0200131f2c3946525f6c7985929facada093877a6d6054473a2d2114070000000000000000000000000713202d3a4653606d798693a0acac9f9386796c605346392d201300131f2c3946525f6c7985929faca295887b6f6255483c2f221509000000000000030d1925303a44505a616e7b86929fa7afacabadb3ac9f9386796c605346392d20130013202c3946535f6c7986929facb9aea49d9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a978a7d7164574a3e3124170b000613202c3945515d677683909ca99f92867a6d6054473a2d211409000000000000000000000000000000000a1623303d495663707c8996a3aca195887b707e8792989e9896918f8e8d8e8f91979b9fa4aca49f9691847b6e675d51453c31261a0f02000000000006121f2b3844505b6674818e9ba7b1a99d9083766d6259504a46443f4446484f565d676f7c87929fa3abb4afa295887c6f6255493c2f221609000714212d3a4754606d7a8793a0ada6998c807366594d40313c46505a606d78839097a2aca39991857a6e665c50483e332a1f150b00000000000000000000000000000000000000000000000000000000000004080a0a1313131312110f0b070100000000000000000000000000000000000000000000000000000000000000000000000000000000060b0f141a1d24292c32383a41464a5053585f62676d7279808c99a69d9084776a5d5144372a1e110000101c2936434f5c6976828f9ca9b2a5998c7f7266594c3f3326190900000000000000000000000000000000000000000000000b17222d404d5a6773808d9aa6b3a89b8e8175685b4f4235281c0f000b1825313e4b5864717e8b97a4b1a89b8e8275685b4f4235281c070000000000000000000000000000081b2835414e5b6874818e9ba7b0a4978a7d7164574a3e3124170b0013202c3946535f6c7986929facada093867a6d6053473a333333333333333333333333333333333333333333333333333333332d2c29241d160d0400000000000000000000000000000000000c1926333f4c5966727f8c99a5aa9d9184776a5e5144372b1e1100101c2936434f5c6976828f8f8276695c4f4336291c10030000000000000000000000000000000000000007101820262b2e2f37363534333332313033404d596673808c99978b7e7164584b3e313031323334353636372d2c29241e160d040000000005121f2b3744505b656f7c87929393939392877c6e625a5043392e21170d00000000000000030c18232f3943505a616e7b86929393939393877c6f665c5044382b1f1206000007121d27313b454f59606c78828f96a0aaa39891847a6d665b504d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4847423c332a2015090000131f2c3946525f6c7985929facada093877a6d6054473a2d2114070000000000000000000000000713202d3a4653606d798693a0acac9f9386796c605346392d201300131f2c3946525f6c7985929faca295887b6f6255483c2f2215090000000000010b151f2a36414c56626c76828f98a3aca49f9ea1a9b39f9386796c605346392d20130013202c3946535f6c7986929facb9a99d928d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8a7e7164574a3e3124170b0004111d2935414c5566737f8c99a9a3998a7d7164574a3e31261a0e02000000000000000000000000000000091623303c4956636f7c8996a2afa295897c7c86929996918c8784828181818285888e939aa1a9a8a0969083796d60584e43372b1f140900000000000613202d394653606c7985929eabada1978a7d70645a50443f393734383a3d444c555f6a74818e9aa7b1bdafa295887c6f6255493c2f221609000714212d3a4754606d7a8793a0ada6998c807366594d403a434e58616c74808d959fa9a59f92877d6f685e544a3f362c21180d0300000000000000000000000000000000000000000000000000000000050b10141617202020201f1e1b17120c0500000000000000000000000000000000000000000000000000000000000000000000000002080d11171c1f262a2f35383d43484c52545c60646a6e747a7e838c929caa9d9084776a5d5144372a1e110000101d2a3643505d697683909ca9b1a4978a7e7164574b3e3124180b0000000000000000000000000000000000000000000000061926323f4c5965727f8c98a5b2a89c8f8275695c4f4236291c0f000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2834414e5b6774818e9aa7b1a4978b7e7164584b3e3125180b0013202c3946535f6c7986929facada093867a6d6053473f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3a39352f281f160c01000000000000000000000000000000000c1926333f4c5966727f8c99a5aa9d9184776a5e5144372b1e1100101c2936434f5c6976828f8f8276695c4f4336291c10030000000000000000000000000000000000000000070e151b1f21222b2a29282726252425323f4c5865727f8b98968a7d7063574a3d30242425262728292a2b21201d19130c0400000000000613202d394653606c79838686868686868680736a5f53473e30271d0f05000000000000000007121d27313e47535f6973808686868686868683796d6053463a2d2013070000010b151f2a333e44505b666d7a849198a2aaa1968f82786c60594f45404040404040404040404040404040404040404040404040404040403b3a37312a21180e030000131f2c3946525f6c7985929facada093877a6d6054473a2d2114070000000000000000000000000713202d3a4653606d798693a0acac9f9386796c605346392d201300131f2c3946525f6c7985929faca295887b6f6255483c2f221509000000000007121d27313946525e68717e8b949faaa49a939297a1ad9f9386796c605346392d20130013202c3946535f6c7986929facb3a79a8d80808080808080808080808080808080808080808080808080808080808080808080808080807c6f6255483c2f22150900010d19242f3c4956626f7c8997a2ab9a8e817467574d42372b1e12050000000000000000000000000000000916232f3c4956626f7c8995a2afa396897d839098938d847f7b777574747476787c81889197a1a9a8a0958d80736a5f53473b30251a0e02000000000916232f3c4956626f7c8997a2adab9e9285796d6053463f332d2b282c2d323a434e58626e7b88959fabb8afa295887c6f6255493c2f221609000714212d3a4754606d7a8793a0ada6998c807366594d40414b555f6a717e8a929da7a89e938c7f726b60564c42382e241a0f06000000000000000000000000000000000000000000000000000000000810171c2023242d2d2d2d2b2a28231e170f06000000000000000000000000000000000000000000000000000000000000000000040a0f13191c22282b3136394045474e54565e61666d70767b80858b90959ca4aa9d9084776a5d5144372a1e110000111e2a3744515d6a7783909daab0a3968a7d7063574a3d3024170a00000000000000000000000000000000000000000000000b1825323e4b5865717e8b98a4b1a99c908376695d5043362a1d10000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b0013202c3946535f6c7986929facada093867a6d60534c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4745413a31281d1307000000000000000000000000000000000c1926333f4c5966727f8c99a5aa9d9184776a5e5144372b1e1100101c2936434f5c6976828f8f8276695c4f4336291c1003000000000000000000000000000000000000000000040a0f1315161e1d1c1b1a19181724313e4a5764717d8a9795897c6f6256493c2f231718191a1b1c1d1e1413110d080100000000000005121f2b3744505b656c7679797979797979736e64584e43352c1e150b000000000000000000010b151f2b37424d57636e7379797979797979776d665c5044382b1f1206000000030d182128333f4a545d686f7c86929fa4a89f948c80736b61574d43392f343434343434343434343434343434343434343434343434342f2e2b2620180f06000000131f2c3946525f6c7985929facada093877a6d6054473a2d2114070000000000000000000000000713202d3a4653606d798693a0acac9f9386796c605346392d201300131f2c3946525f6c7985929faca295887b6f6255483c2f22150900000000020b18232f39434f59616d7a85929ea6a99f938785929eab9f9386796c605346392d20130013202c3946535f6c7986929facada0938679737373737373737373737373737373737373737373737373737373737373737373737373736f6a5f53473a2e21150800000813202d394653606c7985929eab9e918478695f53463a2d2114060000000000000000000000000000000916222f3c4955626f7c8895a2afa89c8f828f9593888079726e6969686768696a6f747d859197a2ada79f92877c6e62574d42362a1e1205000000000c1926323f4c5965727f8c98a9b3a79b8e8174665c50443828221f1c1f2028313c47535f6a7683909da9b6afa295887c6f6255493c2f221609000714212d3a4754606d7a8793a0ada6998c807366594d3f45515d676f7c86929fa4aaa0968f81756d62594f443b30261c12080000000000000000000000000000000000000000000000000000000008111a22282d3031393939393837342f2821180f05000000000000000000000000000000000000000000000000000000000000070c10151b1e24292d33383b42464b5153586062686d73787d82888d92989da0a7a69f9c9084776a5d5144372a1e110000111e2b3844515e6b7784919eaaafa396897c706356493d3023160a00000000000000000000000000000000000000000000000b1824313e4b5764717e8a97a4b1aa9d9083776a5d5044372a1d11000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b0013202c3946535f6c7986929facada093867a6d605959595959595959595959595959595959595959595959595959595959595954514b433a2f24180d010000000000000000000000000000000c1926333f4c5966727f8c99a5aa9d9184776a5e5144372b1e1100101c2936434f5c6976828f8f8276695c4f4336291c100300000000000000000000000000000000000000000000000306080911100f0e0d0c0b1623303d495663707c899694877b6e6154483b2e21150b0c0d0e0f1011070604010000000000000000030f1b27333f49535b60696c6c6c6c6c6c6c67645c52463c31231a0c0300000000000000000000030d1a26313c45525c63666c6c6c6c6c6c6c6a605c544a3f34281c100300000000060f17222d38424c565f6a717e8b929da7a69f93887d70695f554b40352927272727272727272727272727272727272727272727272722211e1a150e0600000000131f2c3946525f6c7985929facada093877a6d6054473a2d2114070000000000000000000000000713202d3a4653606d798693a0acac9f9386796c605346392d201300131f2c3946525f6c7985929faca295887b6f6255483c2f221509000000000a141d2934404b55606b74818e97a1ada1978e8183909da99f9386796c605346392d20130013202c3946535f6c7986929facada093867a6d676767676767676767676767676767676767676767676767676767676767676767676767625f584e43372b1f1206000006121f2b3844505b6675828e9ba8a196887b6e6155483b2e23170c0000000000000000000000000000000916222f3c4955626f7c8895a2afaa9e948f9493887e736d67615e575b5a5b5860626b6f7c85929ea6afa3998e8175695e52463a2d201408000000020f1b2835424e5b6875818e9ba8b5ab988b7e7165544a3f342817121012161f2b37434e5866727f8c99abb5afa295887c6f6255493c2f221609000714212d3a4754606d7a8793a0ada6998c807366595049515b606d79849198a2aea29891847a6d605b51473d32291e150a0000000000000000000000000000000000000000000000000000000005101a232c33393c3d464646464543403a332a21170c01000000000000000000000000000000000000000000000000000003090e12181c1f262b3035383f44464d53555d60656a6f757a7f848a8f949a9fa2aaa29f9a948f8a8276695d5043362a1d100000121f2b3845525e6b7885919eabafa296897c6f6356493c3023160900000000000000000000000000000000000000000000000a1724313d4a5764707d8a97a3b0aa9e9184776b5e5144382b1e11000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b0013202c3946535f6c7986929facada093867a6d6666666666666666666666666666666666666666666666666666666666666666605d554b4135291d11040000000000000000000000000000000c1926333f4c5966727f8c99a5aa9d9184776a5e5144372b1e1100101c2936434f5c6976828f8f8276695c4f4336291c10030000000000000000000000000000000000000000000000000000000403020100000915222f3c4855626f7b889598867a6d6053473a2d201407000102030304000000000000000000000000000b17222d38414950535d606060606060605a58524a40332a20110800000000000000000000000009151f2a33404a52585a606060606060605d53504a42382e23170b00000000000006111c262f3a444e58616c74808d959fa9a49a92857b6e675d51453f342b20171a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1514120e09030000000000131f2c3946525f6c7985929facada093877a6d6054473a2d2114070000000000000000000000000713202d3a4653606d798693a0acac9f9386796c605346392d201300131f2c3946525f6c7985929faca295887b6f6255483c2f22150900000006111b262f3845515c67707d89939ea9a69e91857a84919daa9f9386796c605346392d20130013202c3946535f6c7986929facada093867a6d605a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a55534e463c31261b0f030000030f1c28333f4a5465717e8b98a8a8988b7e7265544a3f34281c100300000000000000000000000000000916222f3c4955626f7c8895a2afb0a69e9c958c80736c605c55524d4e4e4e4e5459606a717e8a949fabab9f92877b6e6154483b3025190e02000005111d2a36414c566a7784909daaafa499887b6f6255483c2e23170603060d1a26313c4956626f7c8999a3afafa295887c6f6255493c2f221609000714212d3a4754606d7a8793a0ada6998c80736b605b5358626d75818e96a0aaa49f92867c6f675d51493f352b20170c03000000000000000000000000000000000000000000000000000000000b17222c363e44494a5353535352504b453c33281e1207000000000000000000000000000000000000000000000001040b10141a1d23282c32373a41464a5053575f61676d71777c81868c91969c9fa6a7a09d98928d88837e786d6053463a2d2013070000121f2b3845525e6b7884919eabafa296897c6f6356493c3023160900000000000000000000000000000000000000000000000b1724313e4a5764717d8a97a4b0aa9d9184776a5e5144372b1e11000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b0013202c3946535f6c7986929facada09386797272727272727272727272727272727272727272727272727272727272727272726d675d5145392c2013060000000000000000000000000000000c1926333f4c5966727f8c99a5aa9d9184776a5e5144372b1e1100101c2936434f5c6976828f8f8276695c4f4336291c10030000000000000000000000000000000000000000000000000000000000000000000814212e3b4754616e7a879a928579675d5145392c2013060000000000000000000000000000000000000006111b262f383f444650535353535353534d4c4740382e21180e00000000000000000000000000030e18212e3840474b4d535353535353535046443f3830261c1106000000000000000a141d28323c46505a606d78839097a1aba2979083796d605b51463d32291e140a0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0808060200000000000000131f2c3946525f6c7985929facada093877a6d6054473a2d2114070000000000000000000000000713202d3a4653606d798693a0acac9f9386796c605346392d201300131f2c3946525f6c7985929faca295887b6f6255483c2f2215090000000b17222d38414e58606d7984919ea5aa9e948a7e7885919eab9f9386796c605346392d20130013202c3946535f6c7986929facada093867a6d60534d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4847433c342a20150a000000000b17222d3b4854616e7b8795a0a89b8f8275665c5044382c1f120600000000000000000000000000000916222f3c4955626f7c8895a2afb8b0a89d9083786d605a514b464241414143474f58616c76828f9ca9afa3998c7f7266564c41362a1e110500000713202d3946525e687985929facac9f9386796d6053463a2d20130600000913202d3a4653606d7986929facafa295887c6f6255493c2f221609000714212d3a4754606d7a8793a0adab9e91847d726c655d606a727f8b939ea8a79d928a7e716a5f554c41372d23190e050000000000000000000000000000000000000000000000000000000004101c28333e48505557606060605e5c564e453a2f23170b00000000000000000000000000000000000000000001080d11161c1f252a2e34383c43474c52545b6063696e73797e83898e92999ea1a8a39f9b95908b85807b76716d665c5144382c1f12060000111e2b3844515e6b7784919eaab0a396897d7063564a3d3023170a00000000000000000000000000000000000000000000000b1825313e4b5864717e8b97a4b1a99d9083766a5d5043372a1d10000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b0013202c3946535f6c7986929facb2a6998c7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f796d6054473a2d2114070000000000000000000000000000000c1926333f4c5966727f8c99a5aa9d9184776a5e5144372b1e1100101c2936434f5c6976828f8f8276695c4f4336291c10030000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d7986939184786b554b4035291d100400000000000000000000000000000000000000000a141d262d3337394346464646464646403f3c362e261c0f060000000000000000000000000000060f1c262e363b3f4046464646464646443a38342e261e140a0000000000000000020b16202a343e44515c666e7b859199a3a9a0958e81756d62584e443a30261c11060001010101010101010101010101010101010000000000000000000000131f2c3946525f6c7985929facada093877a6d6054473a2d2114070000000000000000000000000713202d3a4653606d798693a0acac9f9386796c605346392d201300131f2c3946525f6c7985929faca295887b6f6255483c2f2215090000040f1b27333f49535f6a73808c96a0aca2988f82757985929fac9f9386796c605346392d20130013202c3946535f6c7986929facada093867a6d6053474040404040404040404040404040404040404040404040404040404040404040403c3a37312a22180e04000000000614202d3a46525e697784919daa9f9285796d6053463a2d20130800000000000000000000000000000916222f3c4955626f7c8895a2afb9ada1968a7d71665c5045403936303432373d46505a63707d8a97a1adab9d908377685e5246392d20140700000714212e3a4754616d7a8798a2aeab9e918478675c5145382c1f1306000006131f2c3845515c667784919daaafa295887c6f6255493c2f221609000714212d3a4754606d7a8793a0adada19691877f776d68686f7c87929fa5a99f958d80746c61584e433a2f251b110700000000000000000000000000000000000000000000000000000000000814202d3944505a61646c6c6c6c6b6860564b4034281b0f0200000000000000000000000000000000000000040c13191d20272c3036394045464e54565d61666c70757b80858b90959b9fa3a8a19e99928e89837e7a746e6a64605c544a4034281c10040000111e2a3744515d6a7784909daab0a3978a7d7064574a3d3124170a00000000000000000000000000000000000000000000000c1825323f4b5865727e8b98a5b1a99c8f8276695c504336291d10000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b0013202c3946535f6c7986929facb9a89c918c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c877b6e6154483b2e2115080000000000000000000000000000000c1926333f4c5966727f8c99a5aa9d9184776a5e5144372b1e1100101c2936434f5c6976828f8f8276695c4f4336291c10030000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d79869a9184786b554b4135291d11040000000000000000000000000000000000000000020b141b22272b2d36393939393939393433302b241c140b000000000000000000000000000000000a141c242a2f323339393939393939372d2b28231c140c02000000000000000000040e18222834404a545e69707d87929fa5a79e938b7f726a60564c42382e23170f0600000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929facada093877a6d6054473a2d2114070000000000000000000000000713202d3a4653606d798693a0acac9f9386796c605346392d201300131f2c3946525f6c7985929faca295887b6f6255483c2f22150900040d1a232b3744505b656f7c87929fa8a79f92867b6e7986939fac9f9386796c605346392d20130013202c3946535f6c7986929facada093867a6d6053473a34343434343434343434343434343434343434343434343434343434343434342f2e2b2620181006000000000005121e2a36424d576774808d9aaaa298897c6f6356493c2f24190d01000000000000000000000000000916222f3c4955626f7c8895a2afb8ab9e9184786c60544a3f342f2a2527272b333e4653606c7885929eabaca095877a6e6154473b2e21140800000915222f3c4855626f7b8895aab4a99d9083766a554b4034281c1004000004101c2834404b546975828f9ca8afa295887c6f6255493c2f221609000714212d3a4754606d7a8793a0adb2a9a199928c827a6f6d7a849199a3aba1979083786d605a50463c31281e130a000000000000000000000000000000000000000000000000000000000000061623303c4955616c70797979797872685c5043372a1e07000000000000000000000000000000000000010a0d161e24292c33383b42464b5153585f62686d72787d82878d92979da0a7a49f9c96918c86817c77726d67625f5853514a42392e23180c000000101d2a3643505d697683909ca9b1a5988b7e7265584b3f3225180700000000000000000000000000000000000000000000000d1a2633404d596673808c99a6b3a89b8f8275685c4f4235291c0f000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b0013202c3946535f6c7986929facb9ada39c999999999999999999999999999999999999999999999999999999999999999994877b6e6154483b2e2115080000000000000000000000000000000c1926333f4c5966727f8c99a5aa9d9184776a5e5144372b1e1100101c2936434f5c6976828f8f8276695c4f4336291c10030000000000000000000000000000000000000000000000000000000000000000000814212e3b4754616e7a8794928679675d5145392c201306000000000000000000000000000000000000000000020a11171b1f202a2d2d2d2d2d2d2d2726231f19120b0200000000000000000000000000000000020a12191f2326272d2d2d2d2d2d2d2a201f1c17110a020000000000000000000000061018232e39424d57606b727f8c939ea7a59f92877c6f685e544a3f342821180d04000000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929facada093877a6d6054473a2d2114070000000000000000000000000713202d3a4653606d798693a0acac9f9386796c605346392d201300131f2c3946525f6c7985929faca295887b6f6255483c2f221509010c161f2a36414c56606c77839099a3aba0958c7f726d7a879aa4af9f9386796c605346392d20130013202c3946535f6c7986929facada093867a6d6053473a2d2727272727272727272727272727272727272727272727272727272727272722211f1b150e06000000000000020e1a25303d4a5763707d8a98a3aa998c807366564c4135291d1104000000000000000000000000000916222f3c4955626f7c8895a2afb6ac9a8d8074665b5042382e231d1a1b1b212b3844505b6674818e9ba7b1a7978a7e7164574b3e3124180700000a1623303d495663707c8996a3afa89c8f8275695c4f422e23180c000000000c18232e414e5a6774818d9aa7afa295887c6f6255493c2f221609000714212d3a4754606d7a8793a0adbbb2aba39f948f847c78828f96a1aba49992857b6e665c51483e342a1f160c0100000000000000000000000000000000000000000000000000000002080e111724313d4a5764707d8686868684786b5e5245382b18120e09030000000000000000000000000000000a131c1f282f35393d44484d52545c60646a6f747a7f848a8f939a9fa2a9a19e9a938f8a847f7a756f6b65605d55534e4644403930271c12070000000f1c2835424f5b6875818e9ba8b3a6998c807366594d402f23180c00000000000000000000000000000000000000000000010e1b2834414e5b6774818e9aa7b4a79a8e8174675b4e4134281b0e000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b0013202c3946535f6c7986929facb9b5ada8a6a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a194877b6e6154483b2e2115080000000000000000000000000000000c1926333f4c5966727f8c99a5aa9d9184776a5e5144372b1e1100101c2936434f5c6976828f8f8276695c4f4336291c10030000000000000000000000000000000000000000000000000000000403020101000915222f3c4855626f7b889598877a6d6054473a2d2114070001020303040000000000000000000000000000000000060b0f12131d202020202020201a1917130e080100000000000000000000000000000000000000080e1317191a202020202020201d1312100b06000000000000000000000000000007121c27303b454f59626d75818e95a0aaa39991847a6d665c50443e332a1f160c010000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929facada093877a6d6054473a2d2114070000000000000000000000000713202d3a4653606d798693a0acac9f9386796c605346392d201300131f2c3946525f6c7985929faca295887b6f6255483c2f22150907121d28313946525e68727e8b949faba3999083786d6e7a8794a1b69f9386796c605346392d20130013202c3946535f6c7986929facada093867a6d6053473a2d201a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1515120f0a0400000000000000000914202d3a4753606d7a86929fa99d908376685d5245392c201307000000000000000000000000000916222f3c4955626f7c8895a2afafa49a897d7063544a3f30261c120e0a0f1c28333f4a5465717e8b98abb5a69a8d8073675a4d402e23180c00000a1724313d4a5764707d8a97a3b0a89b8e8175685b4e4235281b0700000000071a2633404d596673808c99a6afa295887c6f6255493c2f221609000714212d3a4754606d7a8793a0adb8b0aaa9a69e969186828f949fa8a69f93877d70695e544b40362c22180d04000000000000000000000000000000000000000000000000000001070c14191b2227313d4a5764707d8a93939185786b5e52453828231c1a140d070100000000000000000000000007121c252e313a4145474f54575e61666d71767c81868c91969c9fa4a79f9d97928d87827d78726d6863605953514b47433c38342e271e150b000000000d1a2734404d5a6773808d9aa6b3a89b8e817568554b4034291c100400000000000000000000000000000000000000000005121e2a36424d576976838f9ca9b2a5988c7f7265594c3f3226190c000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b0013202c3946535f6c7986929facb9afa7a2a09f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f94877b6e6154483b2e2115080000000000000000000000000000000c1926333f4c5966727f8c99a5aa9d9184776a5e5144372b1e1100101c2936434f5c6976828f8f8276695c4f4336291c100300000000000000000000000000000000000000000000000206080811100f0e0d0c0b1623303d495663707c899694887b6e6155483b2e22150b0c0d0e0f10110707050100000000000000000000000000000003050610131313131313130d0d0b07030000000000000000000000000000000000000000000002070a0c0d131313131313131107060300000000000000000000000000000000000b151e29333d47515b606d79839098a2aba1968f82786d605a50453c31281d13070000000000000000000000000000000000000000000000000000131f2c3946525f6c7985929facada093877a6d6054473a2d2114070303030303030303030303030713202d3a4653606d798693a0acac9f9386796c605346392d201300131f2c3946525f6c7985929faca295887b6f6255483c2f2215090b18242f39434f59616e7a85929fa6a89f92877c6f666e7b8894a1ac9f9386796c605346392d20130013202c3946535f6c7986929facada093867a6d6053473a2d20140d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d090806030000000000000000000006131f2c3945515d6776838f9ca99f92867a6d6054473a2d211409000000000000000000000000000916222f3c4955626f7c8895a2afac9f93867a6d6054473a2d21150a01000b17222d3c4855626f7b8899a4afa99c8f837669554b4034281c1004000b1724313e4a5764717d8a97a4b0a79a8d8174675a4e4134271b0e010000000c1926323f4c5965727f8c98a5afa295887c6f6255493c2f221609000714212d3a4754606d7a8793a0adb0a69e9c9fa2a199928f949ea6a89e948c7f736b60574d42392e241b10060000000000000000000000000000000000000000000000000000030b12181e252a2d33373d4a5764707d8a979e9185786b5e524538342e2a251f18120c0400000000000000000000020d19232e3740434c5154596063696e73797e83888e92989ea0a8a29f9a95908b85807b76706c66615e56544f4745403a37312c28231c150c03000000000c1925323f4c5865727f8b98abb5aa9d908477675c5145382c1f13060000000000000000000000000000000000000000000714212d3a46535f697885929fabb4aa968a7d7063574a3d3024170a000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b0013202c3946535f6c7986929facb9a79d95939393939393939393939393939393939393939393939393939393939393939393877b6e6154483b2e2115080000000000000000000000000000000c1926333f4c5966727f8c99a5aa9d9184776a5e5144372b1e1100101c2936434f5c6976828f8f8276695c4f4336291c1003000000000000000000000000000000000000000000030a0f1214151e1d1c1b1a19181824313e4b5764717e8a9795897c6f6256493c2f231718191a1b1c1d1e1413110d0802000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c17202b353f45515d676e7b86929aa4a89f948d80736c61574e433a2f2418110700000000000000000000000000000000000000000000000000131f2c3946525f6c7985929facada093877a6d6054473a2d2114101010101010101010101010101013202d3a4653606d798693a0acac9f9386796c605346392d201300131f2c3946525f6c7985929faca295887b6f6255483c2f22150a141d2935404b55616b75818e97a2aca1968d80746a626f7b8895a2ac9f9386796c605346392d20130013202c3946535f6c7986929facada093867a6d6053473a2d20140701010101010101010101010101010101010101010101010101010101000000000000000000000000000004101d2935404b5566727f8c99a9a3998a7d7164574a3e31261a0e020000000000000000000000000916222f3c4955626f7c8895a2afaa9e918477675d5145392c20130300000613202d3a4653606d7986939facab9e918478675c5145382c1f1306000b1824313e4b5764717e8a97a4b1a79a8d8174675a4e4134271b0e010000000c1825323f4b5865727e8b98a5afa295887c6f6255493c2f221609000714212d3a4754606d7a8793a0adaa9e948f9298a2a39f9c9ea6aaa1968f82776c60594f453b30271d12090000000000000000000000000000000000000000000000000000060d151d23293036383f44464a5764707d8a979e9185786b5e5246444039363029241d160d0600000000000000000006121e2a35404951555d60656b70757b80858a90959a9fa2a8a09d98928e88837e79736e6963605b54524c48433d39352f2b261f1c18120b030000000000091623303c4956636f7c8999a4afac9f9286796d6053473a2d22170b0000000000000000000000000000000000000000000815222e3b4855616e7b8897a2adaea298887b6e6155483b2e221508000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b0013202c3946535f6c7986929facb9a2958b868686868686868686868686868686868686868686868686868686868686868686867b6e6154483b2e2115080000000000000000000000000000000c1926333f4c5966727f8c99a5aa9d9184776a5e5144372b1e1100101c2936434f5c6976828f8f8276695c4f4336291c10030000000000000000000000000000000000000000060e151a1f21222b2a29282726252425323f4c5865727f8b98968a7d7063574a3d30242425262728292a2b21201d19130c0500000000000000000000000305060e101010101010090806030000000000000000010304060606060504030100000000000000000000000000000000000000000000000000000000000000000000000000000000050e19232935404b555f69707e88939fa6a69d928a7e716a5f554b40352923190e05000000000000000000000000000000000000000000000000131f2c3946525f6c7985929facada093877a6d6054473a2d211c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c202d3a4653606d798693a0acac9f9386796c605346392d201300131f2c3946525f6c7985929faca295887b6f6255483c2f2215111c262f3845515d67707d8a939ea9a59e9184796d60626f7c8895a2ac9f9386796c605346392d20130013202c3946535f6c7986929facada093867a6d6053473a2d201407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18242f3c4955626f7c8897a1ab9a8d817467574d42372b1e12050000000000000000000000000916222f3c4955626f7c8895a2afa89c8f827569554b4135291d1104000006131f2c3845515c677884919eabac9f9386796d6053463a2d201307000b1825313e4b5864717e8b97a4b1a79a8d8074675a4d4134271a0e010000000b1825323e4b5865717e8b98a4afa295887c6f6255493c2f221609000714212d3a4754606d7a8793a0ada99c8f82869298a3aba9aaaea39891847a6d655b50473d33291e150b0000000000000000000000000000000000000000000000000000070f181f272f343b4146495053565964707d8a979e9185786b5e5753514a46423b352f281f180f0700000000000000000a16232f3b46515b63676d72777d82878d92979d9fa7a39f9b96918b86817c76716d67615f5753504a46413a38322c29241d1a15100c07000000000000000714202d3a4753606d7a86939facaea399897d706353493f33271b0f030000000000000000000000000000000000000004111d2935414c5565717e8b98a9b3ac9f9285786d6053463a2d201307000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b0013202c3946535f6c7986929facada093867979797979797979797979797979797979797979797979797979797979797979797976695e52463a2d2014070000000000000000000000000000000c1926333f4c5966727f8c99a5aa9d9184776a5e5144372b1e1100101c2936434f5c6976828f8f8276695c4f4336291c100300000000000000000000000000000000000000060f1820262b2e2f37363534343332313033404d596673808c99978b7e7164584b3e313031323334353636372e2d2a251e170e050000000000000000060b0f12131b1d1d1d1d1d1d1615130f0a0400020507080b0e1011121313131211100e0b08070502000000000000000000000000000000000000000000000000000000000000000000000000071118242f39434d57616c73808d949fa8a49f92867c6e675d51453f352b20170c030000000000000000000000000000000000000000000000131f2c3946525f6c7985929facada093877a6d6054473a2d2929292929292929292929292929292929292d3a4653606d798693a0acac9f9386796c605346392d201300131f2c3946525f6c7985929faca295887b6f6255483c2f221517222d38424e58606d7984919ea5a99e938a7d70675d626f7c8995a2ac9f9386796c605346392d20130013202c3946535f6c7986929facada093867a6d6053473a2d20140c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c070604010000000000000000000000000000000713202d394653606c7885919eaa9e918477695f53463a2d2114060000000000000000000000000916222f3c4955626f7c8895a2afa79a8d8174675a4e412f24180d01000004101c2834404b556a7683909da9afa49a887b6e6155483b2e221508000b1824313e4b5764717e8a97a4b1a79a8d8074675a4d4134271a0e010000000b1825323e4b5865717e8b98a4afa295887c6f6255493c2f221609000714212d3a4754606d7a8793a0ada6998c807d869299a3abb5ac9f92867c6f685d53493f352b21170c0300000000000000000000000000000000000000000000000000071019212a313940454c52535b60636669707d8a979e9185786b6763605c54524d454039312921191007000000000000000c1925323e4b57636d737a7f84898f92999ea1a9a19e99928f89847f7a746f6a64605c55534d46443f3836302c27201d18130f0a040000000000000000000613202c3945515d677784909daab4ab9a8d8073655b5044372b1f140a000000000000000000000000000000000000010c13202c3945515d6775828e9ba8b5a89c8f8275665c5044382b1f1206000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b0013202c3946535f6c7986929facada093867a6d6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c5e574d42362a1e12050000000000000000000000000000000c1926333f4c5966727f8c99a5aa9d9184776a5e5144372b1e1100101c2936434f5c6976828f8f8276695c4f4336291c1003000000000000000000000000000000000000030e18222a31373a3b44434241403f3e3d3c3b414e5a6774818d9a998c7f7266594c3f3c3d3d3e3f40414243443a3936302920170c020000000000020a11171b1f202729292929292922221f1b150e090e111414181a1c1e1f20201f1f1e1c1a181514120e0904010000000000000000000000000000000000000000000000000000000000000000000007121d28313c45505a606c78828f96a1aaa2989183796d605b51473d33291e150b0000000000000000000000000000000000000000000000131f2c3946525f6c7985929facada093877a6d6054473a36363636363636363636363636363636363636363a4653606d798693a0acac9f9386796c605346392d201300131f2c3946525f6c7985929faca295887b6f6255483c2f22151c28333f4a545f6a73808d96a1aca2978e81756b6155626f7c8995a2ac9f9386796c605346392d20130013202c3946535f6c7986929facada093867a6d6053473a2d2019191919191919191919191919191919191919191919191919191413110d07010000000000000000000000000005121f2b3744505b6575818e9baca096887b6e6155483b2e23170c0000000000000000000000000916222f3c4955626f7c8895a2afa6998c807366594d4033261a07000000000c18232e424f5c6975828f9ca8b6ac95897c6f6256493c2f231609000b1724313e4a5764717d8a97a4b0a79a8d8174675a4e4134271b0e010000000c1825323f4b5865727e8b98a5afa295887c6f6255493c2f221609000714212d3a4754606d7a8793a0ada6998c80737d879299a4aca6998c80736a60584e453c332a21170f05000000000000000000000000000000000000000000000000060f19222b333c434b51565e61656c6f7375777e8a979e9184787674706d66615e57514b433b332b22190f060000000000000d192633404c5966737f868b91959b9fa3a69f9c97918c86827d78726d68625f5853514b46423b38332d2a251e1b16110d0701000000000000000000000004101d2935404b556773808d9aa9b3ab9e9184786c6053463c2f261b1106000000000000000000000000000000000007131d28333f4a54606d7a86929facb1a7988b7f7265544a3f34281c1003000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b0013202c3946535f6c7986929facada093867a6d60606060606060606060606060606060606060606060606060606060606060605f524d453b30251a0e020000000000000000000000000000000c1926333f4c5966727f8c99a5aa9d9184776a5e5144372b1e1100101c2936434f5c6976828f8f8276695c4f4336291c10030000000000000000000000000000000000000a15202a343c43474851504f4e4d4c4b4a4948474f5b6875828e9b9a8d8073675a4d4748494a4b4c4d4e4f50514746413a32291e130800000000020b141b22272b2d343636363636362f2e2b262019141a1e20212527292b2c2c2d2c2c2b29272421211e1a14110d08020000000000000000000000000000000000000000000000000000000000000000010c161f2a333e44505b666d7a849198a3aaa0958e81756d62594f453b30271c120700000000000000000000000000000000000000000000131f2c3946525f6c7985929facada093877a6d605447434343434343434343434343434343434343434343434653606d798693a0acac9f9386796c605346392d201300131f2c3946525f6c7985929faca295887b6f6255483c2f221a242b3844505b666f7c87929fa8a69f92857a6e615956626f7c8995a2ac9f9386796c605346392d20130013202c3946535f6c7986929facada093867a6d6053473a2d26262626262626262626262626262626262626262626262626262621201d18130c04000000000000000000000000030f1b27333f495364717e8b9aa4a8988b7e7265544a3f34281c100300000000000000000000000916222f3c4955626f7c8895a2afa5988b7f7265584c3f3225190c00000000071b2835424e5b6875818e9ba8b0a396897d7063564a3d3023170a000a1724303d4a5763707d8a96a3b0a89b8e8175685b4e4235281b07000000000c1926323f4c5965727f8c98a5afa295887c6f6255493c2f221609000714212d3a4754606d7a8793a0ada6998c8073717e87939aa4ab9e92857c6f6a5f574d453b332921170e0500000000000000000000000000000000000000000000040d18212b343c454d555c60686e73787c7f828486929fa196898482807d79746e69605d554d453d342b21180d030000000000101d2a3743505d6a768390989da0a8a29f9a948f8a84807b75706c65605d56544e4745403936312b28221c19130f0a040100000000000000000000000000010d18242f3d495663707c8997a1adaca196897d7063584e41382d22170f06000000000000000000000000000000071118242f3844505b66717e8b98a2aeaca095887b6e6155483b2e23170b00000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b0013202c3946535f6c7986929facada093867a6d60535353535353535353535353535353535353535353535353535353535353534846423b33291f1409000000000000000000000000000000000c1926333f4c5966727f8c99a5aa9d9184776a5e5144372b1e1100101c2936434f5c6976828f8f8276695c4f4336291c10030000000000000000000000000000000000020f1a26313c464e53555e5d5c5b5a595857565554535d697683909c9b8e8174685b535455565758595a5b5c5d5e54524c443a3025190d010000000a141d262d333739414343434343433c3b37322a2220252a2d2e313436373939393938373634312e2d2a25201d19130d070100000000000000000000000000000000000000000000000000000000000000040d182128333f4a545e686f7c86929fa5a79e938c7f726b60574d42392e23181006000000000000000000000000000000000000000000131f2c3946525f6c7985929facada093877a6d60544f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f53606d798693a0acac9f9386796c605346392d201300131f2c3946525f6c7985929faca295887b6f6255483c2f221f2a36424d57606c78839099a3ab9f948b7e71685e5256626f7c8995a2ac9f9386796c605346392d20130013202c3946535f6c7986929facada093867a6d6053473a333333333333333333333333333333333333333333333333333333332d2c29241d160d040000000000000000000000000b17222d3b4754616e7a87939fa89b8f8275665c5044382c1f120600000000000000000000000916222f3c4955626f7c8895a2afa5988b7e7265584b3f3225180c000000010e1b2834414e5b6774818e9aa7b0a3978a7d7064574a3d3124170a000916232f3c4956626f7c8995acb6a89b8f8275685c4f422e23180c000000000d1a2633404d596673808c99a6afa295887c6f6255493c2f221609000714212d3a4754606d7a8793a0ada6998c80736c717e88939fa3a19792857c6e695f574d453b332920170e050000000000000000000000000000000000000000010c161f2a333c464e575f676d737a8084898c8f919298a3a8a197918f8d8a85817b736d675f574e463d332a1f150b0100000000101d2a3743505d6a7683909da7a09d98928d88837d79736e6963605b53524c47433c38342f2a261f1c17110d080200000000000000000000000000000000000713202d3a4653606d7985929eacb2a89c8f82756a5f53493f332721180f0802000000000000000000000003091119232935404b55606c7884919daab3a99d908477695f53463a2d1c110600000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b0013202c3946535f6c7986929facada093867a6d60534746464646464646464646464646464646464646464646464646464646463b3a36302921170d02000000000000000000000000000000000c1926333f4c5966727f8c99a5aa9d9184776a5e5144372b1e1100101c2936434f5c6976828f8f8276695c4f4336291c1003000000000000000000000000000000000006121f2b37434e585f626a69686767666564636261605c6a7784919d9c8f8275695c60616263646566676869696a615e564c41362a1d1105000006111b262f383f44464e5050505050504947433c34292c30363a3b3e41434445464646454443413e3b3a36312c29241e18130c0400000000000000000000000000000000000000000000000000000000000000060f17222d38424c56606a717e8b939da7a59f92877d70695e544a40342822180d040000000000000000000000000000000000000000131f2c3946525f6c7985929facada093877a6d605c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c606d798693a0acac9f9386796c605346392d201300131f2c3946525f6c7985929faca295887b6f6255483c2f2228313a46525e69727f8b959faba3999082776c60564c56626f7c8995a2ac9f9386796c605346392d20130013202c3946535f6c7986929facada093867a6d6053473f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3a39352f281f160c0100000000000000000000000614202d3946525e687783909daa9f9285796d6053463a2d20130800000000000000000000000916222f3c4955626f7c8895a2afa4988b7e7165584b3e3225180b000000010e1b2734414e5a6774818d9aa7b1a4978a7e7164574b3e3124180b000815222e3b4855616e7b889aa4afa99d9083766a544b4034281c10040000010e1b2734414e5a6774818d9aa7afa295887c6f6255493c2f221609000714212d3a4754606d7a8793a0ada6998c8073666c727f8b919ca4a19791857b6e695f574d453b322920170e050000000000000000000000000000000000000008131e28313c464e5860696e7980868d9196999c9d9fa3aaaba9a19e9c9a97928d8680796e6960584e453b31271d120700000000101d2a3743505d6a7683909d9b95908b85807b76716d66615e5753504945413a37322c29231d1a140f0b06000000000000000000000000000000000000000006121f2c3844505c6673808d9aa4afaa9e94887c6f655b50443d332a2219140e09060400000100000406090e141a232b353d45515d67717e8a95a0acada2978b7e7265574d42362a1e0a0000000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b0013202c3946535f6c7986929facada093867a6d6053473a393939393939393939393939393939393939393939393939393939392e2d2a251f170f0500000000000000000000000000000000000c1926333f4c5966727f8c99a5aa9d9184776a5e5144372b1e1100101c2936434f5c6976828f8f8276695c4f4336291c100300000000000000000000000000000000000814212e3a47535f6a6e77767574737271706f6e6d6d66667885929e9d9083766b666d6e6f7070717273747576776d685e5246392d20130700000b17222d38414950535a5c5c5c5c5c5c55544e463c35393b4246474b4d4f515253535252514f4d4b4846423b39353029241d160d070000000000000000000000000000000000000000000000000000000000000006111c262f3a444e58626c74818e959fa9a39991857b6e665c51443e342a20160b0200000000000000000000000000000000000000131f2c3946525f6c7985929facada093877a6d696969696969696969696969696969696969696969696969696969696d798693a0acac9f9386796c605346392d201300131f2c3946525f6c7985929faca295887b6f6255483c2f242f3a43505a616e7b86929fa7a89f92867c6e655b504956626f7c8995a2ac9f9386796c605346392d20130013202c3946535f6c7986929facada093867a6d60534c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4745413a31281d1307000000000000000000000005111e2a36414c566773808d9aaaa298897c6f6356493c2f24190d01000000000000000000000916222f3c4955626f7c8895a2afa4988b7e7165584b3e3225180b000000010e1a2734414d5a6774808d9aa7b1a4978b7e7164584b3e3125180b000714202d3a4753606d7a86939facab9e918478665c5145382c1f1306000004111d2935404b556976828f9ca9afa295887c6f6255493c2f221609000714212d3a4754606d7a8793a0ada6998c807366626d727f8c929ca4a19791847b6e695e574d443b322920160e040000000000000000000000000000000000010d19242f3a434e58606a6f7b838c92989ea1a9a8aaa39f9e9e9fa3aaa8a9a29f98928d837b6f6a60574d43392f24180c03000000101d2a3743505d6a768390928e89837e79746e6a64605c54524d46443f38352f2b261f1c18120e09030000000000000000000000000000000000000000000003101c28343f4a54616e7b87939fabb0a69c9083776c60584e453c342a251e1a1312100c070e070c1013131a1f262a353d47505a606d7984919ea7b1a99f9285796d6053473b31261a0e0000000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b0013202c3946535f6c7986929facada093867a6d6053473a2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d21201e1a140d050000000000000000000000000000000000000c1926333f4c5966727f8c99a5aa9d9184776a5e5144372b1e1100101c2936434f5c6976828f8f8276695c4f4336291c100300000000000000000000000000000000000815222f3b4855626e7c83838281807f7e7d7c7b7a7978777887939f9e9184787778797a7b7c7d7e7f80818283847a6d6154473a2e21140700030f1b27333f49535b6067696969696969625f584e454045474d5254585a5c5e5f5f605f5f5e5c5a5754534d4745413a352f281f191109010000000000000000000000000000000000000000000000000000000000000a141d28323c46505a606d79839097a1aba1979083786d605a50463c32281d140a00000000000000000000000000000000000000131f2c3946525f6c7985929facada093877a767676767676767676767676767676767676767676767676767676767676788693a0acac9f9386796c605346392d201300131f2c3946525f6c7985929faca295887b6f6255483c2f2935414c55616c75828f98a2aca0968c80736a5f53494956626f7c8995a2ac9f9386796c605346392d20130013202c3946535f6c7986929facada093867a6d605959595959595959595959595959595959595959595959595959595959595954514b433a2f24180d0100000000000000000000010d1925303d495663707d8998a2aa998c807366564c4135291d1104000000000000000000000916222f3c4955626f7c8895a2afa4988b7e7165584b3e3225180b000000010e1b2734414e5a6774818d9aa7b1a4978a7e7164574b3e3124180b0006131f2c3845515c677885919eabac9f9286796d6053463a2d20130600000613202c3945515d677784919eaaafa295887c6f6255493c2f221609000714212d3a4754606d7a8793a0ada6998c8073665b636d73808d929da5a19691847b6e695e564d443a322820160d040000000000000000000000000000000004111d2935414c555f6a6f7c8590959fa2aaa69f9c98989291919298979c9fa4aaa39f9590857c6f695f554b4035291f1509000000101d2a3743505d6a76838c86817c77716d67625f5853504a46423b37332d29241e1b15100c0701000000000000000000000000000000000000000000000000000c17232e3846535f6975828e99a3afab9f948b7f726a60574e463e36302a25201f1c181b1a1b181c1f20262b31363f474f59616c74808d96a1adada2978d8073675d5145392a1f14090000000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b0013202c3946535f6c7986929facada093867a6d6053473a2d2020202020202020202020202020202020202020202020202020201514120e0902000000000000000000000000000000000000000c1926333f4c5966727f8c99a5aa9d9184776a5e5144372b1e1100101c2936434f5c6976828f8f8276695c4f4336291c100300000000000000000000000000000000000916222f3c4955626f7c88908f8e8d8c8b8a898887868584839099a49f9287838485868788898a8b8c8d8e8f90877a6e6154473b2e2114080005121f2b3744505b656c747676767676766f6a5f574d4b5153575e616467696a6c6c6c6c6b6a696764615e5754524c45403a312b231b130a010000000000000000000000000000000000000000000000000000000000020b16202b343f45515c676e7b859299a3a99f958d80746c61584e443a2f261b1106000000000000000000000000000000000000131f2c3946525f6c7985929facb6a99c8f82828282828282828282828282828282828282828282828282828282828282828f9ca9b5ac9f9386796c605346392d201300131f2c3946525f6c7985929faca295887b6f6255483c2f303845515d67707d8a939eaaa49a9184796d60584e414956626f7c8995a2ac9f9386796c605346392d20130013202c3946535f6c7986929facada093867a6d6666666666666666666666666666666666666666666666666666666666666666605d554b4135291d110400000000000000000000000813202d3a4653606d7985929fa99d908376685d5245392c201307000000000000000000000916222f3c4955626f7c8895a2afa5988b7f7265584c3f3225190c000000010e1b2834414e5b6774818e9aa7b0a4978a7d7164574a3e3124170b0004101c2934404b55697683909ca9afa399887b6f6255483c2d22170b00010714202d3a4753606d7a86939facafa295887c6f6255493c2f221609000714212d3a4754606d7a8793a0ada6998c807366595b636e74808d939da5a19691847b6e685e564c443a32281f160d040000000000000000000000000000030e18222c3945515d676e7c859297a0a7a8a09e94908b8886858586878a8f93999fa7a7a09792857b6e675d51453c31261a0e0000000f1b2835424e5b6875817f7a756f6b65605d55534e46443f3836302b27221b19130f0a040000000000000000000000000000000000000000000000000000000006111c2a36424d57626e7b87929fa8b0a69f92877c6f695f585046413b36312d2c282327272723282c2d31373b42465159606b717e8a929da8b1a79f92857a6d61554b4035291d10040000000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b0013202c3946535f6c7986929facada093867a6d6053473a2d201413131313131313131313131313131313131313131313131313080705020000000000000000000000000000000000000000000c1926333f4c5966727f8c99a5aa9d9184776a5e5144372b1e1100101c2936434f5c6976828f8f8276695c4f4336291c100704000000000000000000000000000000000916222f3c4955626f7c88959b9a9a99989796959a93929190959faba39992909192989495969798999a9b9c94877a6e6154473b2e211408000613202d394653606c79808283838383837c6f695e56555d6065696e717476777879797978777674716e6966605d56514b433d352d251c130a000000000000000000000000000000000000000000000000000000000000040e19222834404b555e69707d87929fa5a79d928a7e716a5f564c41382d22170f050000000000000000000000000000000000131f2c3946525f6c7985929facb8ab9f948f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f949fabb7ac9f9386796c605346392d201300131f2c3946525f6c7985929faca295887b6f6255483c2e38424e58606d7a84919ea6a99f93887d70675c51463c4956626f7c8995a2ac9f9386796c605346392d20130013202c3946535f6c7986929facada09386797272727272727272727272727272727272727272727272727272727272727272726d675d5145392c201306000000000000000000000006131f2c3845515c6775828f9ca89f92867a6d6054473a2d211409000000000000000000000916222f3c4955626f7c8895a2afa6998c7f7366594c4033261906000000020f1b2835424e5b6875818e9ba8b0a3968a7d7063574a3d3024170a00000c18232f414d5a6774808d9aa7b5ab978b7e716453493f33271b0f0b0e121c28333f4a5463707d899aa4afafa295887c6f6255493c2f221609000714212d3a4754606d7a8793a0ada6998c80736659525c606c77818e939ea6a09691847a6e685e564c443a31281f160d04000000000000000000000000000a15202b37434e58606d7a849197a2a9a79f969189837e7b797878797b7e828790959ea5a9a1979184796d60574d42372b1d120700000e1b2734404d59656f75726d6863605953514b47433c38342e2a251f1b17110d0801000000000000000000000000000000000000000000000000000000000000000e1a26313b47535f6974808d96a0abaea39991857b6e6a615a524c46423c3a38342e3434342e34383a3c42474d535b626b707d86929fa4aeaaa0958b7f72685e5243392f24180d010000000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b0013202c3946535f6c7986929facada093867a6d6053473a2d20140d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0b0a0805000000000000000000000000000000000000000c1926333f4c5966727f8c99a5aa9d9184776a5e5144372b1e1100101c2936434f5c6976828f8f8276695c4f4336291c1614100b0500000000000000000000000000000916222f3c4955626f7c8895a2a7a6a5a4a3a2aca49f9f9e9d9fa7b1aba39f9d9e9fa2aaa2a3a3a4a5a6a7a194877a6e6154473b2e2114080005121f2b3744505b656e7b858f8f8f8f8f857b6e685d60676d72777b7e80828485868685858482807e7b77726d68605d554f473f372e251c1209000000000000000000000000000000000000000000000000000000000000071018232e39434d57606b727f8c939ea8a49f92867c6f685d53493f332721170c0300000000000000000000000000000000131f2c3946525f6c7985929facb8b0a69f9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9fa6b0bbac9f9386796c605346392d201300131f2c3946525f6c7985929faca295887b6f6255483c343f4a54606a74808d96a1ada1978e81746b60554b403c4956626f7c8995a2ac9f9386796c605346392d20130013202c3946535f6c7986929facb2a6998c7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f796d6054473a2d211407000000000000000000000004101c2834404b5565727f8b98a8a3998a7d7064574a3d31261a0e020000000000000000000916222f3c4955626f7c8895a2afa79a8d8074675a4d412e23170c000000030f1c2936424f5c6975828f9ca8afa296897c6f6356493c302316090000071824313e4b5764717e8a97a7b1a79a8e8174655b5044372b211b171a1d242b3844505b6673808d9aacb6afa295887c6f6255493c2f221609000714212d3a4754606d7a8793a0ada6998c807366594d505b656c78818e949ea6a09691837a6d685e564c433a31281f160d030000000000000000000000020f1a26313b4754606a74818e96a0a9a89f9590847d76716e6c656b696e71757c838e939ea6a9a0968d8073695f5347392e23180c00000c1825313d48535d656866615e56544f4745403937312c28231c1a140f0b060000000000000000000000000000000000000000000000000000000000000000000009141f2b37424d57606d79849199a4afaba19791847c706c615e56534d494644404141414141404546494d53575f616d727d869298a2aeaca2989083786c60564c4131281d1207000000000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b0013202c3946535f6c7986929facada093867a6d6053473a2d201a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a171714110c0500000000000000000000000000000000000c1926333f4c5966727f8c99a5aa9d9184776a5e5144372b1e1100101c2936434f5c6976828f8f8276695c4f4336292423201c171008000000000000000000000000000916222f3c4955626f7c88959d9c9b9a98979695949992919095a0aca399929091929994969798999a9b9c9d94877a6e6154473b2e21140800030f1b27333f49535e696f7c8692999c9790837a6d666d72797f83878b8d8f919292939292918f8d8a87837f7a736d676059514940372e241b0f0600000000000000000000000000000000000000000000000000000000000007121d27303b454f59636d75818f95a0aaa29891847a6d655b50443d33291e150b00000000000000000000000000000000131f2c3946525f6c7985929facb8b8b0aba9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9abb0b8b9ac9f9386796c605346392d201300131f2c3946525f6c7985929faca295887b6f6255483c3844505c666f7c87939fa9a69e92857a6d60594f43393c4956626f7c8995a2ac9f9386796c605346392d20130013202c3946535f6c7986929facb9a89c918c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c877b6e6154483b2e2115080000000000000000000000000c18232e3b4855626e7b8896a1ab9a8d817467574d42372b1e12050000000000000000000916222f3c4955626f7c8895a2afa89b8f827568544a3f34281c1003000004101d2935404b556a7683909da9b4aa95887b6e6255483b2f22150800000814212e3b4754616e7b8795a0acab9e9184786c6053463e332b2722252a2f35404a54606c7884919eabb8afa295887c6f6255493c2f221609000714212d3a4754606d7a8793a0ada6998c807366594d49535b666d78828f949fa6a09590837a6d685d564c433a31281f150c030000000000000000000006121f2b37434e58626f7c89939da8aca09690837a706b6561605b575e61646a6f78818e949faaa89f92867b6e62554b4034281c1004000814202c37414b53595b5954524c48433d39352f2b261f1c17110e0903000000000000000000000000000000000000000000000000000000000000000000000000030e1a26313c45515d676f7d87939fa4aea9a19691867e756e68615e575653514a4e4e4d4e4e4b515356575f62696e767f879298a2aaafa49a92867c6f665b50443a301f160c01000000000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b0013202c3946535f6c7986929facada093867a6d6053473a2d27272727272727272727272727272727272727272727272727272727272423211c171008000000000000000000000000000000000c1926333f4c5966727f8c99a5aa9d9184776a5e5144372b1e1100101c2936434f5c6976828f8f8276695c4f433633302f2c28211a11080000000000000000000000000916222f3c4955626f7c8891908f8e8d8c8b8a898887868583909daa9f92878385868788898a8b8c8d8e8f9091877a6e6154473b2e21140800000b17222d38414d57606a707e87939fa0958f82786e787f858b9095979a9c9d9f9f9f9f9e9d9c9a9795908c868079706b625b514940362c21180e030000000000000000000000000000000000000000000000000000000000000b151e29333d47515b606d79839198a2aaa0968f82776c60594f453b30271d1207000000000000000000000000000000131f2c3946525f6c7985929facb8b0a8a2a09f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9fa0a1a6aeb8ac9f9386796c605346392d201300131f2c3946525f6c7985929faca295887b6f6255483c424d57606d78839099a4aa9e948a7e71685d52473d303c4956626f7c8995a2ac9f9386796c605346392d20130013202c3946535f6c7986929facb9ada39c999999999999999999999999999999999999999999999999999999999999999994877b6e6154483b2e2115080000000000000000000000000714212e3a47535f6a7884919eaa9e918477695f53463a2d2114060000000000000000000916222f3c4955626f7c8895a2afaa9d908377665c5044382c1f1206000006131f2c3845515d677885919eabaea298877a6d6154473a2e21140700000714202d3a46525e697784909dabada197897d70635a50453d37332d3136394045515c66717d8a96a1adb9afa295887c6f6255493c2f221609000714212d3a4754606d7a8793a0ada6998c807366594d414a545c666d79828f949fa7a09590837a6d685d554b433931271e150c030000000000000000000814212e3a47535f6a76828f9ca5afa49a91847a6d6860595553504d5254585f666d78828f98a3aea3998d8074675c5145382c1f130600040f1a252f3941484d4e4c4746413a38322c29241d1a15100c060000000000000000000000000000000000000000000000000000000000000000000000000000000009151f2935404b55606b727f8b929da4ada9a198928a817a746e696562605c545b5a5a5a5b545c606266696e747b828b9299a2aaaea39f93887e706a5f544a3f32291e0d0400000000000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b0013202c3946535f6c7986929facada093867a6d6053473a34343434343434343434343434343434343434343434343434343434343431302d28221a12080000000000000000000000000000000c1926333f4c5966727f8c99a5aa9d9184776a5e5144372b1e1100101c2936434f5c6976828f8f8276695c4f433e3f3d3c38332c231a110800000000000000000000000915222f3c4855626f7c8584838281807f7e7d7c7b7a79787a8794a19f92867978797a7b7c7d7e7f8081828384867a6e6154473b2e211408000006111b262f3b454e58616c727f8b929d9f948e817b838c92979d9fa7a8a09e9c9b9a9b9c9d9fa4a7a09d98928d847d726d635b51483e332a201509000000000000000000000000000000000000000000000000000000000000030c17212b353f45515d676e7c86929fa4a89e948c7f736b60574d43392e231810070000000000000000000000000000131f2c3946525f6c7985929facb8a89e969393939393939393939393939393939393939393939393939393939393939393959ca6b1ac9f9386796c605346392d201300131f2c3946525f6c7985929faca295887b6f6255483c46535f69727f8c95a0aba2988f82766c61564c41352f3c4956626f7c8995a2ac9f9386796c605346392d20130013202c3946535f6c7986929facb9b5ada8a6a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a194877b6e6154483b2e21150800000000000000000000000006121f2b37434e586774818e9aaba096887b6e6155483b2e23170c0000000000000000000916222f3c4955626f7c8895a2afac9f9286796d6053463a2d20130900000714202d3a4753606d7a86939facab9f928578685e5246392d201307000005111e2a36424d5666737f8c99a3afa99c8f82766c61574f46443f414142464b515a606d7883919da8b0b8afa295887c6f6255493c2f221609000714212d3a4754606d7a8793a0ada6998c807366594d40424a545c676d79829095a0a7a09590837a6d675d554b433930271e150c0300000000000000000815222f3b4855626e7b88949fabac9f93877d6f685d564f4846444246484e545c666e7b86929facab9f9285796d6053463a2d201307000009131d272f373d40423f3a3936302c27201d18120f0903000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d18242f3a434f59626d74808d929ca3adaaa29f938e86807b76726f6d6669686767676869666d6f72777b81868f949fa3ababa39f918c7f726c61584e42382d20170d0000000000000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b0013202c3946535f6c7986929facada093867a6d605347404040404040404040404040404040404040404040404040404040404040403e3c39332c241a100500000000000000000000000000000c1926333f4c5966727f8c99a5aa9d9184776a5e5144372b1e1100101c2936434f5c6976828f8f8276695c4f464a4c4a48443e352c231a1108000000000000000000000815212e3b47535f6a6f7877767574737271706f6e6d676e7b8894a1a39886796c6c6d6e6f7071727374757677796e685e5246392d2014070000000a141d29333c464f59626d74808d939e9d938e8690959ea2a8a19e9896918f8e8d8e8f91939a9d9fa7a29f9691877f736d635a50453c31261a0e05000000000000000000000000000000000000000000000000000000000000050f19232935414b555f6a717e8a929da6a69f93877d70695e554b40342822190e0400000000000000000000000000131f2c3946525f6c7985929facb8a2968c87868686868686868686868686868686868686868686868686868686868686868a95a1adac9f9386796c605346392d201300131f2c3946525f6c7985929faca295887b6f62554844505a616e7b86929fa7a79f92867b6e615a50443a302f3c4956626f7c8995a2ac9f9386796c605346392d20130013202c3946535f6c7986929facb9afa7a2a09f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f94877b6e6154483b2e211508000000000000000000000000020f1a26313e4a5764717d8a99a4a8988b7e7265544a3f34281c100300000000000000000916222f3c4955626f7c8895a2afaea398887c6f6255493c31251a0d06030615222f3c4855626f7c889aa4afaa9d9083776a564c4135291d11050000020e1925303b4854616e7b87929fabab9f948a7d706a60595350494e4e4d53555d606c73808c959c9ea6b0afa295887c6f6255493c2f221609000714212d3a4754606d7a8793a0ada6998c807366594d4038424b555d676d7a839095a0a79f959082796d675d554b433930271e150c0200000000000006121f2b37434e586774808d9aa6b0a89b8e82756b60564c443d3937363a3c424a545f6975818e9baba7a2978a7d7064574a3d3124170a0000020b151d252c313435332e2d2a251e1b16100d070100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131d28313d47515b606c77808c919ea1a9aea59e98928d87837f7c79777674747474747677797c7f83888e92999fa6aea8a199928b7f736d635a50463c2f261c0e050000000000000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b0013202c3946535f6c7986929facada093867a6d60534d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4a49453e362c22170c00000000000000000000000000000c1926333f4c5966727f8c99a5aa9d9184776a5e5144372b1e1100101c2936434f5c6976828f8f8276695c4f51575957554f473e352c231a110800000000000000000006121f2b37434e585f626c6b6a696867656463626160626f7b8895a2aa93867a6d606061636465666768696a6b6c615e564c41362a1e1105000000020b17212b343e47515b606c78818f959f9d999299a0a7a49f96918b8884828181818284878b90959ea2a8a199928c7f736c61574e42372b22170b00000000000000000000000000000000000000000000000000000000000000071118242f3a434e58616c73808d949fa8a49992857b6e675c51453f342b20160b02000000000000000000000000131f2c3946525f6c7985929facada093877a797979797979797979797979797979797979797979797979797979797979788693a0acac9f9386796c605346392d201300131f2c3946525f6c7985929faca295887b6f6255484c56616c76828f98a2aba0958c7f72695e53483e32282f3c4956626f7c8995a2ac9f9386796c605346392d20130013202c3946535f6c7986929facb9a79d95939393939393939393939393939393939393939393939393939393939393939393877b6e6154483b2e211508000000000000000000000000000a14212e3a4754616d7a86939fa89b8f8275665c5044382c1f120600000000000000000916222f3c4955626f7c8895a2afb4aa988b7f7265574d42362a1f161210121c2834404a5465717e8b98acb6a79b8e8174685b4e413025190d010000000914202d3a46525e6975818e99a3afa69e92857c6f6b62605b535a5b575e61676d737e8893948f949eaaafa295887c6f6255493c2f221609000714212d3a4754606d7a8793a0ada6998c807366594d403039434b555d686d7a839096a0a79f959082796d675d554b423930261e140b0200000000000815212e3b47535f6a7884919eabaca096897c6f62594f443a322d2b2a2d3038424d5763707d89999b9a99988d8073665a4d4033271a0d000000030b131a202527282621201d19130f0a04010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c161f2b353f44505b656c747f8a92979ea6acaaa29f9a93908c898684828181808181828486898c90959a9fa3ababa49f9691877e736d635b51473e342a1d140a000000000000000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b0013202c3946535f6c7986929facada093867a6d605a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a575550483e33281c1105000000000000000000000000000c1926333f4c5966727f8c99a5aa9d9184776a5e5144372b1e1100101c2936434f5c6976828f8f8276695c515b63666361594f473e352c231a11080000000000000000030f1b26323c464e53555f5e5d5c5b5a595857565556626f7c8995a2a194877a6e615455565758595a5b5c5d5e5f54524c443b3025190d0100000000050f19222c353f44505b666d79839096a1a39fa3aba49a938c847f7b777675747475777a7e838a9297a1a8a39f918a7e716a5f53473e33281c10040000000000000000000000000000000000000000000000000000000000000007131d28313c46505a606d78828f96a1aba1979083796d605a50463c32281d140a000000000000000000000000131f2c3946525f6c7985929facada093877a6d6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6d798693a0acac9f9386796c605346392d201300131f2c3946525f6c7985929faca295887b6f625548525d68717e8a949faaa4999083786d60574d42362c232f3c4956626f7c8995a2ac9f9386796c605346392d20130013202c3946535f6c7986929facb9a2958b868686868686868686868686868686868686868686868686868686868686868686867b6e6154483b2e211508000000000000000000000000000713202d3946525d687683909da99f9285796d6053463a2d20130800000000000000000916222f3c4955626f7c8895a2afb6a99c8f8376695e53463c3128201f1c1f232c3844515c6675818e9ba8b3a9988b7f7265584c3f322519080000000005121e2a36424d57626e7c87929fa7ada19791857d746f6c6568676869696e7279808893958f828f9ca8afa295887c6f6255493c2f221609000714212d3a4754606d7a8793a0ada6998c807366594d40333039434c565e686e7a849196a1a79f948f82796d675c544b423830261d140a00000000000915222f3c4855626f7c8896a1adaa9e9184776a6054473d3228201f1e2026303c4753606d79868f8e8d8c8b8b8276695c504336291d100000000002090f14181b1b191413110d0802000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d192327333f49535b606d737d858f949da0a7acaca49f9c989892918f8e8d8d8d8e8f919298999d9fa7acaca69f99938d847d716c635b51493f352c22180b02000000000000000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b0013202c3946535f6c7986929facada093867a6d6767676767676767676767676767676767676767676767676767676767676767676764615a5045392d211408000000000000000000000000000c1926333f4c5966727f8c99a5aa9d9184776a5e5144372b1e1100101c2936434f5c6976828f8f8276695c5b636d72706b61594f473e352c231a110800000000000000000a15202a343c4347485251504f4e4d4c4b4a49495663707c8996a3a194887b6e615548494a4b4c4d4e4f5051524746413b32291e140800000000000007101a2328333f4a545d676e7a84919eabacafa49a93888079726e696968676869686d71767e859196a1aaa39f92867c6e625a5044392d20150a00000000000000000000000000000000000000000000000000000000000000010c161f2a333e44505c666d7a849199a3a99f958e81746c62584e443a2f261c11060000000000000000000000131f2c3946525f6c7985929facada093877a6d606060606060606060606060606060606060606060606060606060606d798693a0acac9f9386796c605346392d201300131f2c3946525f6c7985929faca295887b6f62554f59606d7a85929ea6a89f93877c6f665c50453b3124232f3c4956626f7c8995a2ac9f9386796c605346392d20130013202c3946535f6c7986929facada093867979797979797979797979797979797979797979797979797979797979797979797976695e52463a2d2014070000000000000000000000000005111d2935414c566673808c99aaa298897c6f6356493c2f24190d01000000000000000916222f3c4955626f7c8895a2afb9ac9f93877b6e61584e433a312d2c282b2e343f4953606d7985929eabada197887c6f6255493c2f22160900000000020e1a25303b47535f6a73808d95a0a8a9a1979188817c797674747476787b7f848d939890837e8a97a3afa295887c6f6255493c2f221609000714212d3a4754606d7a8793a0ada6998c807366594d403328313a434c565e686e7b849197a1a69f948f82796d665c544a42382f261c1106000000000c1925323f4c5865727f8b98a8b2a79a8d807467584e43352b20161212151f2c3845515c677481828180807f7e7d7063564a3d3023170a00000000000004080c0e0f0c07070501000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000071017222d384149505b636b707b828990959c9fa4acaca9aaa39f9d9c9b9a9a9a9b9c9d9fa3aaaaababa39f9b948f878079706b625a514940372e231a100600000000000000000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b0013202c3946535f6c7986929facada09386797373737373737373737373737373737373737373737373737373737373737373737373716c6155493c3023170a000000000000000000000000000c1926333f4c5966727f8c99a5aa9d9184776a5e5144372b1e1100101c2936434f5c6976828f8f82766958636d727f7d706b61594f473e352c231a110800000000000000040e18222a32373b3c4544434241403f3e3d3d4a5763707d8a96a3a295887b6f6255483c3d3e3f4041424344463b3936302920170d0200000000000000081117222d38424b555e6873808c99a6b3ac9f93887e736d67615f575b5a5b565e61656c717b849198a2aea2988f82766c6155493c32271b0f0300000000000000000000000000000000000000000000000000000000000000040d182128343f4a545e686f7c87929fa5a79d938b7e716a60564c42382d22170f0600000000000000000000131f2c3946525f6c7985929facada093877a6d605453535353535353535353535353535353535353535353535353606d798693a0acac9f9386796c605346392d201300131f2c3946525f6c7985929faca295887b6f625554606b74818e97a1ada1968d80746a60544a3f33291f232f3c4956626f7c8995a2ac9f9386796c605346392d20130013202c3946535f6c7986929facada093867a6d6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c5e574d42362a1e120500000000000000000000000000010d1924303c4956636f7c8998a2aa998c807366564c4135291d1104000000000000000916222f3c4955626f7c8895a2afbbafa4998d80746a5f554c433d3a383438393f44505b65717d8a97a2adab9e9285786c605346392d201306000000000009141f2b37434e58606d79839096a0a8a9a19a938e8985828181818284878c91969992867c7d8a97a4afa295887c6f6255493c2f221609000714212d3a4754606d7a8793a0ada6998c807366594d40332628313a444c565e696e7b859197a1a69f948f82786d665c544a42382d22170b000000030f1b27333f49536875818e9ba8b4aa978a7d7064574a3d3224190d0505101c2934404b55646f74757474737271706b6054483c2f221609000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111b262f383f44515961696e757d83898f939a9c9fa2aaa7a8aaa9a7a7a7a7a7a9a9a8a6a9a29e9b99928e88827c746d676059504840372e251c11080000000000000000000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b0013202c3946535f6c7986929facb3a79a8d8080808080808080808080808080808080808080808080808080808080808080808080807e7164574a3e3124170b000000000000000000000000000c1926333f4c5966727f8c99a5aa9d9184776a5e5144372b1e1100101c2936434f5c6976828f8f8276695f6a727f8c867d706b61594f473e352c231a11080000000000000006101820262b2e2f3938373635343231313e4a5764717d8a97a4a295897c6f6256493c3132333435363738392e2d2a251e170e0500000000000000000006111c28343f4a54606d7a85929eabb7aa9d91847a6d665d55534d4e4e4e4c52545a61696f7c86929fa8aa9f948a7d7064584e43372b1f13060000000000000000000000000000000000000000000000000000000000000000060f17232e38424c56606a727f8b939da7a59f92867c6f685e544a3f332821180d03000000000000000000131f2c3946525f6c7985929facada093877a6d605447464646464646464646464646464646464646464646464653606d798693a0acac9f9386796c605346392d201300131f2c3946525f6c7985929faca295887b6f62555c666f7d88939fa9a59e9184796d60584e42382e2117232f3c4956626f7c8995a2ac9f9386796c605346392d20130013202c3946535f6c7986929facada093867a6d60606060606060606060606060606060606060606060606060606060606060605f524d453b30251a0e0200000000000000000000000000000813202d3a4653606d7985929fa99d908376685d5245392c201307000000000000000916222f3c4955626f7c8895a2afb4aba39f92877c6e675d554f4846443f44464a5059606c7883909da9b1a79a8e8174655b5044372b1f12050000000000030f1a26313c45515c676e7b8491969fa4aca49f9b97928f8e8d8e8f9196999e9892877e717e8a97a4afa295887c6f6255493c2f221609000714212d3a4754606d7a8793a0ada6998c807366594d4033261f28323b444d575f696f7c859298a2a69e948f81786d665c544a3f33281c0f03000005121f2b3744505b657784909daaaea298877b6e6154483b2e21150800000c18232f3943535d64686968676665646360594f44382c2014070000000000000000000000000000000000000000000406071013131313131310100d0a050000000003060809121313131313130d0c0a0702000000000000000000000000000000000a141d262d3340474f575e616b70777d82878b8f9298989a9b9d9e9e9f9f9f9e9d9d9b999797928e8a86817c766f6a605d554f473e362e251c130a000000000000000000000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b0013202c3946535f6c7986929facb9a99d928d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8174675b4e4134281b0e010000000000000000000000000c1926333f4c5966727f8c99a5aa9d9184776a5e5144372b1e1100101c2936434f5c6976828f8f827669626e7b869292877d706b61594f473e352c231a110800000000000000060e151b1f21222c2b2a2928272625323e4b5865717e8b98a4a396897c706356493d3025262728292a2b2c21201e19140d050000000000000000000006121f2b3844505c66727f8c97a1adb8aca0968f81786c605b514842414141464750575f6a727f8c96a1ada69d9083766a6054473b2e22150900000000000000000000000000000000000000000101010101010101010101010006111c26303a444e58626d74818e95a0a9a39891847a6d665b50443e332a1f150b010000000000000000131f2c3946525f6c7985929facada093877a6d6054473a39393939393939393939393939393939393939393a4653606d798693a0acac9f9386796c605346392d201300131f2c3946525f6c7985929faca295887b6f6257606d7984919aa4a99e938a7d70675d51463c30261c16232f3c4956626f7c8995a2ac9f9386796c605346392d20130013202c3946535f6c7986929facada093867a6d60535353535353535353535353535353535353535353535353535353535353534846423b33291f140900000000000000000000000000000006121f2c3844505c6675828f9ba89f92867a6d6054473a2d211409000000000000000916222f3c4955626f7c8895a2afaea39992999083796d6760595553504a5053545c606b727f8b959fabaca095897c6f6353493f33271b0f030000000000000a15202934404b555e696e7b848e939a9fa3aba9a19e9c9b9a9b9c9e9f9d9590867e70717e8b97a4afa295887c6f6255493c2f221609000714212d3a4754606d7a8793a0ada6998c807366594d403326162029323b454d575f6a6f7c869298939393938e81786d665b5044382b1f120600000613202d394653606c7985929facab9f928578695e52463a2d201407000007121d2731414b53595b5c5b5a59585856544f473d33271c100400000000000000000000000000000000000001070c1013141d2020202020201d1c1a16110a03040a0f1215151f2020202020201a1916130d07000000000000000000000000000000020b141b2227353e454d525960636b70757b7e8285888b8d8f9091929292929191908e8c8a8885817e7a746f6a626058514b433d352d241c130a01000000000000000000000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000060606060e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b0013202c3946535f6c7986929facb9aea49d9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a8e8174675b4e4134281b0e010000000000000000000000000c1926333f4c5966727f8c99a5aa9d9184776a5e5144372b1e1100101c2936434f5c6976828f8f8276695f6a707e869292877d706b61594f473e352c231a0e0400000000000000040a0f1215151f1e1d1c1b1a1925323f4c5865727f8b98a5a3968a7d7063574a3d3024191a1b1c1d1e1f1414110d080200000000000000000000000713202d3a4653606d7985919ea9b3b2aca89e938d80746d625a50463d3336393e454e58606d7984919eabab9f95887c6f6255493c31251a0e02000000000000000000000000000000010507070d0d0d0d0d0d0d0d0d0d0d0d0d0d0a141e29323d46515b606d79839097a1aaa1968f82786c60594f453c31271d12070000000000000000131f2c3946525f6c7985929facada093877a6d6054473a2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d3a4653606d798693a0acac9f9386796c605346392d201300131f2c3946525f6c7985929faca195887b6e625f69737f8c95a0aca2978e81756b61554b40342b1e1516232f3c4956626f7c8995a2ac9f9386796c605346392d20130013202c3946535f6c7986929facada093867a6d60534746464646464646464646464646464646464646464646464646464646463b3a36302921170d0200000000000000000000000000000003101c28343f4a5465727e8b98a8a3998a7d7064574a3d31261a0e020000000000000916222f3c4955626f7c8895a2afac9f928692958f827a706b6562605c545b6062666d727d86929fa7b0a69d9083776b605441382d22170b00000000000000030c18232f39434d575e696e7981878f92999b9d9e9f9f9f9e9d9b9895908a837c706c717e8b97a4afa295887c6f6255493c2f221609000714212d3a4754606d7a8793a0ada6998c807366594d4033261a172029333c454e58606a6f7d868686868686868681796c605346392d20130600000714212e3a4754616d7a8798a2aeaa9d9084776a574d42362a1e12050000010b151f2f3941484c4e4f4e4d4d4c4b4a48443d352b21160b000000000000000000000000000000000000030b12181d1f202a2d2d2d2d2d2d2a2926221c150d0e151b1f21222c2d2d2d2d2d2d2625231e19120a010000000000000000000000000000020a1117232c333b42464f54596063696e7276797c7e808283848585868585848382807d7b7975716d68625f58544e45403a312b231b120a0100000000000000000000000b1825313e4b5864717e8b97a4aca89b8e8175685b4e4235281b0f0200000000000306060c13131313131b2734414e5a6774818d9aa7aca4978b7e7164584b3e3125180b0013202c3946535f6c7986929facacacaea9a7a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a69a8e8174675b4e4134281b0e010000000000000000000000000c1926333f4c5966727f8c99a5aa9d9184776a5e5144372b1e1100101c2936434f5c6976828f8f82766958616c707d869292877d706b61594f473e352c20160c020000000000000000030608091211100f0e0d1926333f4c5966727f8c99a5a4978a7d7164574a3e3124170d0e0f1011130807050100000000000000000000000000091623303c4956636f7c8997a1adb2a8a19ea19d928b7f726c61584e453c322d333c44515c66727f8c99a7b1a79a8d807367574d42362a1e12050000000000000000000000000002080d1113141a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a17202b343f45515c676e7b859299a4a89f948d80736c61574d43392f2418100700000000000000131f2c3946525f6c7985929facada093877a6d6054473a2d2120202020202020202020202020202020202d3a4653606d798693a0acac9f9386796c605346392d201300131f2c3946525f6c7985929faca194887b6e61626e7b86929fa8a69f92857b6e61594f433a2f22190c16232f3c4956626f7c8995a2ac9f9386796c605346392d20130013202c3946535f6c7986929facada093867a6d6053473a393939393939393939393939393939393939393939393939393939392e2d2a251f170f0500000000000000000000000000000000000c17232e3b4855616e7b8896a0ab9a8d817467574d42362a1e12050000000000000916222f3c4955626f7c8895a2afa6998c7f8c94948f847d76726f6d666b666c6e72787f879298a3aea99f948a7e7164594f442f261b1106000000000000000007121d27313b454d575e676d747c82868b8e909192929291908e8b88837e786f6a64717e8b97a4afa295887c6f6255493c2f221609000714212d3a4754606d7a8793a0ada6998c807366594d4033261a0e17212a333c464e58606b6f7979797979797979756c665b5044382b1f120600000815222f3b4855626e7b8895aab4a99c8f8276695c4f4330251a0e02000000030d1d262f363c4041424141403f3e3d3c38332b231a0f050000000000000000000000000000000000030d151d24292c2d363939393939393736322d271f161820262b2e2f3939393939393933322f2a241c130a0000000000000000000000000000000006111a202930363d44484f54565e6165666d6f7174757778787979787877767573716f6d6664605d56534e47433d352f281f191109000000000000000000000000000b1825313e4b5864717e8b979f9f9f9b8e8175685b4e4235281b0f02000000060b0f12131920202020201b2734414e5a6774818d9a9f9f9f978b7e7164584b3e3125180b0013202c3946535f6c7986929f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9a8e8174675b4e4134281b0e010000000000000000000000000c1926333f4c5966727f8c99a5aa9d9184776a5e5144372b1e1100101c2936434f5c6976828f8f8276696464646b707d859292867d706b61594f473d32281e130800000000000000000000000006050403020d1a2633404d596673808c99a6a4978b7e7164584b3e3125180b02030405060000000000000000000000000000000005111d2935414c566773808d9aa9b2a8a0969196a19f93877e706a60574d443a312834404a54616e7b8795a0acaa9e918477695e53463a2d211407000000000000000000000000050c13191d2021272727272727272727272727272727272727272934404b555e69707d87939fa6a69f93887d70695f554b40352922190e05000000000000131f2c3946525f6c7985929facada093877a6d6054473a2d2114131313131313131313131313131313202d3a4653606d798693a0acac9f9386796c605346392d201300131f2c3946525f6c7985929faca194877a6e616c76828f98a3ab9f948b7e72685e52473e31281d100916232f3c4956626f7c8995a2ac9f9386796c605346392d20130013202c3946535f6c7986929facada093867a6d6053473a2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d21201e1a140d050000000000000000000000000000000000000614212d3a46535f697784919eaa9e918477695f53463a2d2114060000000000000916222f3c4955626f7c8895a2afa396897d828f97969189837f7b79787778797b7f848b9299a3aaaaa2978f82766c6155473d321d140a000000000000000000010b151f29333b454d555d606a6f757a7e8183858586858583817f7b77716d665f64717e8b97a4afa295887c6f6255493c2f221609000714212d3a4754606d7a8793a0ada6998c807366594d4033261a0d0f18212a343c464f5960636c6c6c6c6c6c6c6c68605b544a3f33281c0f030000091623303c4956636f7c8996a2afa89b8e8275685b4f4235281c0900000000000b141d252b303335363534333231302f2c27211a11080000000000000000000000000000000000020c151f272f35383a4346464646464643423e3831281f222a31373a3c45464646464646403f3b352e251c120700000000000000000000000000000000080e171f252a33383d44484d5254545c60626567686a6b6b6c6c6c6b6a6a68666462605c5454524c47433c383229241d160d0700000000000000000000000000000b1825313e4b5864717e8b93939393938e8175685b4e4235281b0f0200020a11171c1f20262c2d2d2d2c202734414e5a6774818d93939393938b7e7164584b3e3125180b0013202c3946535f6c79869293939393939393939393939393939393939393939393939393939393939393939393939393939393938e8174675b4e4134281b0e010000000000000000000000000c1926333f4c5966727f8c99a5aa9d9184776a5e5144372b1e1100101c2936434f5c6976828f8f8276717171717171717c859292867d706b61594f443a3024190d01000000000000000000000000000000010d1a2734404d5a6773808d9aa6a5988b7e7265584b3f3225180c0000000000000000000000000000000000000000000713202d3946525d687784919daaaca09691849197a19992867c6f695f564c43392f2e3946535e697784919daaaca096877b6e6154483b2e2115080000000000000000000000050e171e252a2d2e34343434343434343434343434343434343434342f39434d57606b737f8c939ea8a49a92857b6e675d51453f342b20170c030000000000131f2c3946525f6c7985929facada093877a6d6054473a2d2114070606060606060606060606060713202d3a4653606d798693a0acac9f9386796c605346392d201300131f2c3946525f6c7985929faca094877a6d68717e8b949faaa3999083776c60564d41352c1f160c0916232f3c4956626f7c8995a2ac9f9386796c605346392d20130013202c3946535f6c7986929facada093867a6d6053473a2d2020202020202020202020202020202020202020202020202020201514120e09020000000000000000000000000000000000000005121e2a36424d576774818d9aaba096887b6e6155483b2e23170b0000000000000916222f3c4955626f7c8895a2afa3968a7d7b8592999e95908b888685848486888c91959fa3abaaa29892857b6e615a5045352b210b0200000000000000000000030d172129333b434b51586062686e71747678797978787674726e6964605c5464717e8b97a4afa295887c6f6255493c2f221609000714212d3a4754606d7a8793a0ada6998c807366594d4033261a0d060f18222b343d474f54565f606060606060605b53504a42382d22170b0000000a1723303d4a5663707d8996a3b0a79a8e8174675b4e4134281b0e0100000000020b131a202427282928272625252322201c160f080000000000000000000000000000000000000a141e27313940454750535353535353504e4a433a31212a343c434748525353535353534d4b4740372e24190d0200000000000000000000000000000000050d141a21272c33383b4246474a505355585a5c5d5e5f5f5b60666c6c6c6c6c6a5c544a4745413a37312b272018130c040000000000000000000000000000000b1825313e4b5864717e868686868686868175685b4e4235281b0f00060b141c22282b2d333939393939382b34414e5a677480868686868686867e7164584b3e3125180b0013202c3946535f6c7987868686868686868686868686868686868686868686868686868686868686868686868686868686868686868174675b4e4134281b0e010000000000000000000000000c1926333f4c5966727f8c99a5aa9d9184776a5e5144372b1e1100101c2936434f5c6976828f90837e7d7d7d7d7d7d7d7e7f869392867d706b61564c4135291d1105000000000000000000000000000000010e1b2734414e5a6774818d9aa7a5998c7f7266594c3f3326190c0000000000000000000000000000000000000000000714212e3a4754616d7a8796a0acaa9e91847b859298a29892857b6e685e554b42382d36424d576774818d9aa7b2a8978a7e7164574b3e3124180b00000000000000000000020c1720293036393a4040404040404040404040404040404040404040404040454f59606c77828f96a0aaa2979083796d605b51463d32291e150a0000000000131f2c3946525f6c7985929facada093877a6d6054473a2d2114070000000000000000000000000713202d3a4653606d798693a0acac9f9386796c605346392d201300131f2c3946525f6c7985929faca093867a6d6d7a85929ea6a89f92867c6e655b50443b30231a0d040916232f3c4956626f7c8995a2ac9f9386796c605346392d20130013202c3946535f6c7986929facada093867a6d6053473a2d20141313131313131313131313131313131313131313131313131308070502000000000000000000000000000000000000000000020e1a26313d4a5764707d8a99a3a8988b7e7265544a3f34281c100300000000000916222f3c4955626f7c8895a2afa4978a7d717d8792989f9d9899929191919298989da0a8aba79f9892867d70695f53483e3323190f000000000000000000000000050f172129313a40454e54565e6164686a6b6c6c6c6b6a6865615f5753505864717e8b97a4afa295887c6f6255493c2f221609000714212d3a4754606d7a8793a0ada6998c807366594d4033261a0d00061019222b353d43484952535353535353534e46443f382f261c11060000000a1724303d4a5763707d8a96a3b0a79a8d8174675a4e4134271b0e01000000000001090f14181a1b1c1b1a1a1918171614100b0500000000000000000000000000000000000006111c263039434b51535d6060606060605d5b554d433829333c464e53555f6060606060605957524940352a1e1307000000000000000000000000000000000002090e161c21272c30363a3b3f4446494b4d4f5051575f666c72797979797975665c504439352f2b26201b160d0701000000000000000000000000000000000a1724303d4956626c7179797979797979756f65594d4034271b0e090f181d262d3338393f4646464646453834404c58646e7479797979797979716c6256493d3024170a00121f2c3845525e6a757979797979797979797979797979797979797979797979797979797979797979797979797979797979797979746f64594c4033271a0d010000000000000000000000000c1926333f4c5966727f8c99a5aa9d9184776a5e5144372b1e1100101c2936434f5c6976828f95908a8a8a8a8a8a8a8a8a8c93999892867d70685d5246392d201307000000000000000000000000000000020e1b2835414e5b6874818e9b9f9f998c807366594d4033261a0d000000000000000000000000000000000000000000091623303c4956636f7c8996a8b2a89b8e81757c869299a19791847a6d675c544a3f33313e4b5865717e8b98a4b1a6998d8073665a4d4033271a060000000000000000000008131e29323a4146474d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d505b656d7a849198a2a9a0958e81756d62594f443b30261c110600000000131f2c3946525f6c7985929facada093877a6d6054473a2d2114070000000000000000000000000713202d3a4653606d798693a0acac9f9386796c605346392d201300131f2c3946525f6c7985929faca39986796d75818e97a2aca0968c80736a5f53493f32291f1108000916232f3c4956626f7c8995a2ac9f9386796c605346392d20130013202c3946535f6c7986929facada093867a6d6053473a2d20140d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0b0a080500000000000000000000000000000000000000000914212d3a4754606d7a86929fa89b8f8275665c5044382b1f120600000000000916222f3c4955626f7c8895a2afa4978a7e71707d8690959d9fa39f9e9e9e9fa3aaa9a8a79f9d9590867d706b60574d42362c22110700000000000000000000000000050f171f282f353d43474c5254585b5d5e5f5f5f5e5d5b5855534d464b5864717e8b97a4afa295887c6f6255493c2f221609000714212d3a4754606d7a8793a0ada6998c807366594d4033261a0d0000071019232b32383b3c4646464646464646423938332d261d140a000000000a1724303d4a5763707d8a96a3b0a79a8d8174675a4e4134271b0e010000000000000003070909131211100f0e0d0a09070400000000000000000000000000000000000000091317232e38424b555d60696c6c6c6c6c6c6a665f554a3e323b454e585f626c6c6c6c6c6c6c66635b52473b2f23160a00000000000000000000000000000000000000050b10161c1f252a2d2e34383a3c3e444d525b62696e787f8686868687796d6053463a2d241e1b150f0a040000000000000000000000000000000000000815212d3945505a62646c6c6c6c6c6c6c68655d53483d3124180d1419212a2f383f44464c535353535352443f3848535c64676c6c6c6c6c6c6c64625a5045392d21150800111d2a36424e59636a6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c67645d53483c3024180b000000000000000000000000000c1926333f4c5966727f8c99a5aa9d9184776a5e5144372b1e1100101c2936434f5c6976828f9393939393939393939393979fa4a39892857a6d6154473a2e211407000000000000000000000000000000020f1c2835424f5b6875828e939393938d8073675a4d4034271a0d0100000000000000000000000000000000000000000b1825323e4b5865717e8b98a4b1a6998c7f73707e87939fa0969083796d665b50443f363c4956636f7c8996abb5a89c8f8275695c4f422e23170b000000000000000000010d1925303a444c52545a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a535d686f7c86929fa4a79e938b7f726b60564c42382e23170c00000000131f2c3946525f6c7985929facada093877a6d6054473a2d2114070000000000000000000000000713202d3a4653606d798693a0acac9f9386796c605346392d201300131f2c3946525f6c7985929fac9f928679707d89939ea9a59d9184796d60584e41382d20170d00000916232f3c4956626f7c8995a2ac9f9386796c605346392d20130013202c3946535f6c7986929facada093867a6d6053473a2d201a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a171714110c050000000000000000000000000000000000000613202c3945515d677683909ca99f9285796d6053463a2d20130800000000000916222f3c4955626f7c8895a2afa4978a7e716b707c838a9095989b9d9e9f9f9f9e9d9b9895908a837b706b60594f453b31241a10000000000000000000000000000000050d161d242932373b4146474b4e505252535252504e4c4846423e4b5864717e8b97a4afa295887c6f6255493c2f221609000714212d3a4754606d7a8793a0ada6998c807366594d4033261a0d00000007101921272c2f303939393939393939352d2b28221c140b02000000000a1723303d4a5663707d8996a3b0a79a8e8174675b4e4134281b0e010000000000040a0f131516201f1e1d1c1b1a171614100b050000000000000000000000000000000009121b2528343f4a545d676d767979797979797671665b4e423b444d575f6a6f78797979797979736d63574b3f3225190c000000000000000000000000000000000000000000050b1014191e202429323a414650565e616d727b828c929992877e71665c5044382b1f130f0a04000000000000000000000000000000000000000005111d29343e48505658606060606060605b59534b41372c200e171f252a333b424a5053595f6060605f5e504a42414a53585a60606060606060585650483e34291d1105000e1a26313d4751595e5f606060606060606060606060606060606060606060606060606060606060606060606060606060606060605b59534a41362b201408000000000000000000000000000c1926333f4c5966727f8c99a5aa9d9184776a5e5144372b1e1100101c2936434f5c6976828686868686868686868686868b93999992877e70685d5246392d20130700000000000000000000000000000003101c2936434f5c6976828686868686868074675a4e4134271b0e0100000000000000000000000000000000000000010e1a2734414d5a6774808d9aa7b1a4978a7e716c727f8b929d9f958f81786c605b51483e3b4754616e7a8799a4afaa9d9084776a544a3f34281c1003000000000000000005111d2a36414c565e6167676767676767676767676767676767676767676767676767676767676a717e8a929daba59f92877d6f685e544a3f34281c1003000000131f2c3946525f6c7985929facada093877a6d6054473a2d2114070000000000000000000000000713202d3a4653606d798693a0acac9f9386796c605346392d201300131f2c3946525f6c7985929fac9f9285797984919ea5a99d93897d70675c51463c2f261b0e0500000916232f3c4956626f7c8995a2ac9f9386796c605346392d20130013202c3946535f6c7986929facada093867a6d6053473a2d27272727272727272727272727272727272727272727272727272727272423211c171008000000000000000000000000000000000004111d2935414c5566737f8c99a9a297897c6f6356493c2f24190d01000000000916222f3c4955626f7c8895a2afa4978b7e71646a6f787e83888b8e909192929291908e8b88837e766e6960594f473d33291f120800000000000000000000000000000000040c131820272b3036393b3e4143454646454543413f3b3a363e4b5864717e8b97a4afa295887c6f6255493c2f221609000714212d3a4754606d7a8793a0ada6998c807366594d4033261a0d00000000070f161b1f22232c2d2d2d2d2d2d2d28201f1c17110a020000000000091623303c4956636f7c8996a2afa79b8e8174685b4e4135281b060000000000070f161b1f22232c2b2a292827262322201c160f08000000000000000000000000000008111b242d373f44505c666d798286868686868683766a5d5043434c565f696f7c85868686868686807366594d4033261a0d00000000000000000000000000000000000000000000000710191f282f353e444c525a61696e767f8690949a93877e716c61544a3f34281c100100000000000000000000000000000000000000000000000c17222d363e45494b535353535353534e4d4841392f251a19202930363f454d545b60666c6c6c6c6c6a5c544a3f41484c4e535353535353534b49453e362d22170c00000915202b353f474e5253535353535359636b6c6c6c6c6b64615a534d53535353535353534d535b60656c6c6c6c6b686157535353534e4c4841382f251a0f03000000000000000000000000000c1926333f4c5966727f8c99a5aa9d9184776a5e5144372b1e11000f1c2835414e5a6670767979797979797979797979797e869392877e706c61564c4135291d1105000000000000000000000000000000020f1b2835414e5a657076797979797979746e64584c4033261a0d0000000000000000000000000000000000000000020f1c2835424f5b6875828e9ba8afa396897c70636d74808d939e9e938d80746d625a50463d4653606c7986939facab9e928578665c5044382b1f120600000000000000000713202d3946525e686d7373737373737373737373737373737373737373737373737373737373737374808d99a3aea39991847a6e665c5044382c1f1206000000131f2c3946525f6c7985929facada093877a6d6054473a2d2114070000000000000000000000000713202d3a4653606d798693a0acac9f9386796c605346392d201300131f2c3946525f6c7985929fab9e918578808d96a0aca1978e81746b60554b40342a1d140a0000000916232f3c4956626f7c8995a2ac9f9386796c605346392d20130013202c3946535f6c7986929facada093867a6d6053473a34343434343434343434343434343434343434343434343434343434343431302d28221a120800000000000000000000000000000000010d19242f3c4956626f7c8997a2a9998c807366564c4135291d1104000000000916222f3c4955626f7c8895a2afa4978b7e71645f666d71777b7e8183858586858583817e7b76716c615f574f473d352b21180d00000000000000000000000000000000000001070d151b1e252a2d2e31353738393939383735322e2d313e4b5864717e8b97a4afa295887c6f6255493c2f221609000714212d3a4754606d7a8793a0ada6998c807366594d4033261a0d0000000000040a0f1315161f202020202020201b13120f0b06000000000000000915222f3c4855626f7b8895aab4a89b8f8275685c4f422d22170b0000000007101921272c2f3039383736353433302f2c27211a110800000000000000000000000007101a232d363f49525c606d78828f94939393938c807366594d434c565e686e7b85919793939992877d706356493d3023160a00000000000000000000000000000000000000000000040f19222b313a41454f565e616c717b828b92989a93887e716c615a5042382e23170b00000000000000000000000000000000000000000000000006111b242d34393d3e4646464646464642403d372f271d1e2529323b424651575f666c72797979797975665c5044383c4041464646464646463e3d39342d241b11060000040f19242d353d42454646464646525e6b757979797978706c615f57514b434646424b51575f656c71787979797873685c5046464641403c362f261d130800000000000000000000000000000c1926333f4c5966727f8c99a5aa9d9184776a5e5144372b1e11000d1925323d49545e66696c6c6c6c6c6c6c6c6c6c717e879392877e716c615a50443a3024190d01000000000000000000000000000000000d1925313d49545e65696c6c6c6c6c6c67645c52473c3024170b000000000000000000000000000000000000000003101c2936434f5c6976828f9ca9aea295887b6f62606c78818f959f9d928b7f726c61584e4544505b667885929fabac9f9386796d6053463a2d20130700000000000000000714212e3a4754616d7a80808080808080808080808080808080808080808080808080808080808080808086929facaba1969082786d6053463a2d201307000000131f2c3946525f6c7985929facada093877a6d6054473a2d2114070000000000000000000000000713202d3a4653606d798693a0acac9f9386796c605346392d201300131f2c3946525f6c7985929faa9d91847b87929fa8a69e92857a6d61594f43392e22180b020000000916232f3c4956626f7c8995a2ac9f9386796c605346392d20130013202c3946535f6c7986929facada093867a6d605347404040404040404040404040404040404040404040404040404040404040403e3c39332c241a1005000000000000000000000000000000000813202d394653606c7985929ea99d908376685d5245392c201306000000000916222f3c4955626f7c8895a2afa4978b7e7164545c6064696e72747678787979787675726e6964615a534d453d352b23190f060000000000000000000000000000000000000000040a0f14191e202125282a2b2c2c2c2b2a28252225313e4b5864717e8b97a4afa295887c6f6255493c2f221609000714212d3a4754606d7a8793a0ada6998c807366594d4033261a0d000000000000000307090913131313131313130f0606030000000000000000000714212e3a4754616d7a8798a2aea99c8f837669544a3f33281c0f030000040f19222b32383b3c464544434241403d3c38332b231a0f0500000000000000000000060f19222c353e48515b636e74818e949ea69e948e81746e63574b4b555d686e7a849197a1a49f93877e716b6054483b2f221609000000000000000000000000000000000000000000000a16212b343d434b515961686d757e858f949f9f93887f716c625a50483e30261c11060000000000000000000000000000000000000000000000000009121b22292d3031393939393939393534312c2518202830353e444d525b62696e787f8686868687796d6053463a2d33343939393939393931302d29221b12090000000008121b242b313638393939394653606c7987868686847d756e69605c554f46454f545c60696e777e8586868685786b5f524539393433302b251d140b0100000000000000000000000000000c1926333f4c5966727f8c99a5aa9d9184776a5e5144372b1e11000915212c38424c545a5c6060606060605a626c717e879392877e716c615a50483e32281e130800000000000000000000000000000000000915212c38424c545a5c6060606060605a58524a41362b1f1408000000000000000000000000000000000000000003101d2a3643505d697683909ca9aea194877b6e615b666d79839096a09f93877e706a60574d444a546b7884919eabafa49a867a6d6053473a2d20140700000000000000000815222f3b4855626e7b888d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d9299a3aeb2a99f94897d7063564a3d3023170a000000131f2c3946525f6c7985929facada093877a6d6054473a2d2114070000000000000000000000000713202d3a4653606d798693a0acac9f9386796c605346392d201300131f2c3946525f6c7985929faa9d9083839099a3aa9f948a7e71685d52473d30271d0f06000000000916232f3c4956626f7c8995a2ac9f9386796c605346392d20130013202c3946535f6c7986929facada093867a6d60534d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4a49453e362c22170c0000000000000000000000000000000006121f2b3844505b6675828e9ba89f92867a6d6054473a2d211409000000000916222f3c4955626f7c8895a2afa4978b7e7164585053575f6165686a6b6c6c6c6b6a6865615f57555046423b332b231a1108000000000000000000000000000000000000000000000002080e111414181b1d1f1f201f1f1d1b191825313e4b5864717e8b97a4afa295887c6f6255493c2f221609000714212d3a4754606d7a8793a0ada6998c807366594d4033261a0d00000000000000000000000606060606060606020000000000000000000000000613202d394653606c7985929facaa9e918477665b5044382b1f120600000a16212b343d434849535251504f4e4d4a48443d352b21160b000000000000000000050f18222b343e47505a626d73808d939da69f948f82786d605c524a545c676d7a839096a0a49c918b7f726c61594f44382c201307000000000000000000000000000000000000000000030f1b27323d464e555d606b707a818a92979f9b918b7f726d625a50483e362c1e140a0000000000000000000000000000000000000000000000000000000911171d2124252d2d2d2d2d2d2d282724201d2429323a414650565e616d727b828c929992877e71665c5044382b27272d2d2d2d2d2d2d2524211d17110900000000000009121920262a2c2c2d2d313e4b5864717e889396918a827b736d67615953525960666d737b828b929792877e7064574a3d312d282724201a130b020000000000000000000000020507080c1926333f4c5966727f8c99a5aa9d9184776a5e5144372b1e110005101b26303a42494e4f535353534e58626c717e879393877e716c615a50483e362c20160c02000000000000000000000000000000000004101b26303a42494e4f5353535353534e4c4741382f241a0e03000000000000000000000000000000000000000004111d2a3744505d6a7783909daaada194877a6e61545d676d7a849197a19992867c6f695f564c515e6b7784919eaab6a094877a6d6154473a2e21140700000000000000000815222f3b4855626e7b88959a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9fa3abb5bbb0a6968a7d7063574a3d3024170a000000131f2c3946525f6c7985929facada093877a6d6054473a2d2114070000000000000000000000000713202d3a4653606d798693a0acac9f9386796c605346392d201300131f2c3946525f6c7985929fac9f928790959faba2988f82766c61564c41352b1e150b00000000000916232f3c4956626f7c8995a2ac9f9386796c605346392d20130013202c3946535f6c7986929facada093867a6d605a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a575550483e33281c1105000000000000000000000000000000030f1c28333f4a5465717e8b98a7a3998a7d7064574a3d31261a0e020000000916222f3c4955626f7c8895a2afa4978b7e7164584b464d5355585b5d5e5f5f5f5e5d5b5855534d49453e36312a211a11080000000000000000000000000000000000000000000000000000020507080b0e101213131212100e0c1825313e4b5864717e8b97a4afa295887c6f6255493c2f221609000714212d3a4754606d7a8793a0ada6998c807366594d4033261a0d000000000000000000000000000000000000000000000000000000000000000005121f2b3744505b657784909daaac9f9285796c605346392d20130600030f1b27323d464f54565f5e5d5c5b5a5956544f473d33271c100400000000000000040e17212a343d464f59616c727f8c929ca5a0959082796d665c5044505c666d79829095a0a59d928c7f736d625a50473d32271b100400000000000000000000000000000000000000000007131f2c38434e5860676d747d858e939fa29b918b7f726d625a50483f362d241a0c0200000000000000000000000000000000000000000000000000000000060c11151718202020202020201b1b191f282f353e444c525a61696e767f8690949a93877e716c61544a3f34281c1b20202020202020181715110c060000000000000000080f151a1d1f202024303d4956626c717f8b919e948f868079706b615f5d606b6f797f868f949f93887e716c6155493c30231b1a18140f08010000000000000000000003090e121415191926333f4c5966727f8c99a5aa9d9184776a5e5144372b1e1100000a141e2830383d414346464647535f6a717e879393877e716c615a50483e362c231a0e04000000000000000000000000000000000000000a141e2830383d414346464646464641403c362f261d130800000000000000000000000000000000000000000004111e2b3744515e6a7784919daaada094877a6d6154555e686e7b859298a29892857b6e685e554b5e6a7784919daaada194877a6e6154473b2e21140800000000000000000815222f3b4855626e7b8895a1a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a7acaeb5acacaca3968a7d7063574a3d3024170a000000131f2c3946525f6c7985929facada093877a6d6054473a2d2114070000000000000000000000000713202d3a4653606d798693a0acac9f9386796c605346392d201300131f2c3946525f6c7985929faca39992999fa7a79f92867b6e615a50443a3023190c0300000000000916232f3c4956626f7c8995a2ac9f9386796c605346392d20130013202c3946535f6c7986929facada093867a6d6767676767676767676767676767676767676767676767676767676767676767676764615a5045392d211408000000000000000000000000000000000b17222d3b4854616e7b8795a0ab9a8d817467574d42362a1e12050000000916222f3c4955626f7c8895a2afa4978b7e7164584b3e4246484b4e505252535252504e4b4847423c39332a261f180f0800000000000000000000000000000000000000000000000000000000000000000204050606060504020b1825313e4b5864717e8b97a4afa295887c6f6255493c2f221609000714212d3a4754606d7a8793a0ada6998c807366594d4033261a0d0000000000000000000000000000000000000000000000000000000000000000030f1b27333f49536875818e9ba8aea398887b6e6255483b2d22170b0407131f2c38434f5960636c6b6a696867666360594f44382c201407000000000000040d162029333c464e58616b717e88939fa4a19690837a6d675d544a525c606d78818f949fa69e938d80746d635b51483e352b21160b000000000000000000000000000000000000000000000915222e3b4854606a6f79818a91979ea39c918c7f726d625b51483f362d241b12080000000000000000000000000000000000000000000000000000000000000005080a0b131313131313130f19222b313a41454f565e616c717b828b92989a93887e716c615a5042382e23170b131313131313130b0a0805000000000000000000000004090e11121315212d3945505a626d727f8b919c98928c847d756e69686d747c838c92989c918b7f726c625a5044392d20140d0b08030000000000000000000000060e141a1e2122252526333f4c5966727f8c99a5aa9d9184776a5e5144372b1e110000020c161e262c32353639393c4855626f7b869393887e716c615a50483e362c241a11080000000000000000000000000000000000000000020c161e262c3135363939393939393433302b241d140b0100000000000000000000000000000000000000000004111e2b3744515e6a7784919daaada194877a6e61544c565f696f7c869299a19791847a6d675c545e6b7784919eaaada094877a6d6154473a2e21140700000000000000000815222f3b4855626e7b88959f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f968a7d7063574a3d3024170a000000131f2c3946525f6c7985929facada093877a6d6054473a2d2114070000000000000000000000000713202d3a4653606d798693a0acac9f9386796c605346392d201300131f2c3946525f6c7985929facaba39fa3ababa0958c7f72695f53483e32281e11070000000000000916232f3c4956626f7c8995a2ac9f9386796c605346392d20130013202c3946535f6c7986929facada09386797373737373737373737373737373737373737373737373737373737373737373737373716c6155493c3023170a000000000000000000000000000000000614202d3a46525e697784919daa9e918477695f53463a2d2114060000000916222f3c4955626f7c8895a2afa4978b7e7164584b3e363a3b3f4143454546464543423f3b3a37312d28221a140e060000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1825313e4b5864717e8b97a4afa295887c6f6255493c2f221609000714212d3a4754606d7a8793a0ada6998c807366594d4033261a0d0000000000000000000000000000000000000000000000000000000000000000000b17222d3f4c5865727f8b98a8b2aa978a7e7164544a3f33281b13101014222f3b4854606b6f79787776757473706b6054483c2f2216090000000000030c161f28323b454e58606a707d87929aa4a19791847b6e685d554b515b636e74818e939ea69e948e81776c605b51493f362c23190f04000000000000000000000000000000000000000000000916232f3c4956626f7c848e9393939393918c7f726d625b51493f362d241b12090000000000000000000000000000000000000000000000000000000000000000000000000606060606000a16212b343d434b515961686d757e858f949f9f93887f716c625a50483e30261c110600060606060606000000000000000000000000000000000001040605111d29343e48505a626d727f8c929c9f96918a827b73717a818891959f9d928c7f736d625a50483e33281c100400000000000000000000000000060f181f262a2d2e323232333f4c5966727f8c99a5aa9d9184776a5e5144372b1e11000000040c141b212528292d2e3a47535f6a73808c887e716c625a50483e362c241a120800000000000000000000000000000000000000000000040c141b212528292d2d2d2d2d2d2726241f1a130b020000000000000000000000000000000000000000000004111d2a3744505d6a7783909daaaea194877b6e6154484d57606a707e87939fa0969082796d665b5e6b7884919eabb4aa93877a6d6054473a2d21140700000000000000000815222f3b4855626e7b88939393939393939393939393939393939393939393939393939393939393939393939393939393938a7d7063574a3d3024170a000000131f2c3946525f6c7985929facada093877a6d6054473a2d2114070000000000000000000000000713202d3a4653606d798693a0acac9f9386796c605346392d201300131f2c3946525f6c7985929facb5afacafafa4999083786d60574d42362c20160c000000000000000916232f3c4956626f7c8995a2ac9f9386796c605346392d20130013202c3946535f6c7986929facb3a79a8d8080808080808080808080808080808080808080808080808080808080808080808080807e7164574a3e3124170b0000000000000000000000000000000005121e2a36424d576774808d9aaaa096887b6e6155483b2e23170b0000000916222f3c4955626f7c8895a2afa4978b7e7164584b3e312d2e32353738393939383735322e2d2b261f1c170e0903000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1825313e4b5864717e8b97a4afa295887c6f6255493c2f221609000714212d3a4754606d7a8793a0aca6998c807366594d4033261a0d0000000000000000000000000000000000000000000000000000000000000000000616222f3c4955626f7c8896a1ada79a8e8174665b5044382d241f1c1d1f27303c4956636f7d868584838281807d7063564a3d3023170a00000000020b151e28313a444d575f6a6f7c869299a3a29892857b6e695e564c505a626d73808d939da59f948f82786d655b504940372d241a110700000000000000000000000000000000000000000000010e1b2734414e5a67748186868686868686867f736d635b51493f372d241b1209000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1b27323d464e555d606b707a818a92979f9b918b7f726d625a50483e362c1e140a00000000000000000000000000000000000000000000000000000000000c17222d363f48515b636d737f8c929ca09e948f867f7d848d939aa09d938d80736d635b51483e362c22170b00000000000000000000000000030e18212a31363a3b3f3f3f3f3f4c5966727f8c99a5aa9d9184776a5e5144372b1e1100000000020a1015191c1c1f2b37434e58636d73807e716c625a50483e362c241a1208000000000000000000000000000000000000000000000000020a1015191b1c2020202020201b1a17140e0801000000000000000000000000000000000000000000000003101d2a3643505d697683909ca9aea295887b6f625548454e58616c727f8c929d9f948e81786c605b657885929eabaea29886796d6053463a2d20130700000000000000000815222f3b4855626e7b8686868686868686868686868686868686868686868686868686868686868686868686868686868686867d7063574a3d3024170a000000131f2c3946525f6c7985929facaca093877a6d6054473a2d2114070000000000000000000000000713202d3a4653606d798693a0acac9f9386796c605346392d201300131f2c3946525f6c7985929facb8bbb9b2a89f93877c6f665c50453b31241a0e04000000000000000916232f3c4956626f7c8995a2ac9f9386796c605346392d20130013202c3946535f6c7986929facb9a99d928d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8174675b4e4134281b0e01000000000000000000000000000000020e1a25303d4a5763707d8a98a3a8988b7e7265544a3f34281c100300000916222f3c4955626f7c8895a2afa4978b7e7164584b3e31252225282a2b2c2c2c2b2a282522211e1a15110c050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1825313e4b5864717e8b97a4aca295887c6f6255493c2f221609000714212d3a4754606d7a87939f9f9f998c807366594d4033261a0d0000000000000000000000000000000000000000000000000000000000000000000815212e3b47535f6a7884919eabab9e9185786c6053493f352f2c28292c2f39424f5966727f8c91908f8e8d8b7e7265584b3f3225180c000000000a141d273039434c565e696e7c859298a2a39992867c6f695f564d4f59626c727f8c929ca5a0959082796d665c53493f372e251b12080000000000000000000000000000000000000000000000010d1a2733404c58646e747979797979797979736d635b51493f372d251b12090000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131f2c38434e5860676d747d858e939fa29b918b7f726d625a50483f362d241a0c02000000000000000000000000000000000000000000000000000000000006101b242d363f49515b636d73808d929da49e98928c8a91969fa49e938e81746e645b51493f362d241a10050000000000000000000000000009141f2a333b4246484c4c4c4c4c4c5966727f8c99a5aa9d9184776a5e5144372b1e1100000000000005090d0f0f1a26313c46525b646e73716d625a50483e362d241a120800000000000000000000000000000000000000000000000000000004090d0f101313131313130e0d0b080300000000000000000000000000000000000000000000000000020f1c2935424f5c6875828f9ba8afa296897c6f6356493d46505a626d74808d939e9e938d80736d606c7986929facab9f928578665c5044382c1f120600000000000000000814212e3a47535f6a76797979797979797979797979797979797979797979797979797979797979797979797979797979797979706b6155483c2f231609000000131f2c3946525f6c7985929f9f9f9f93877a6d6054473a2d2114070000000000000000000000000713202d3a4653606d7986939f9f9f9f9386796c605346392d201300131f2c3946525f6c7985929facacacacada1968d80746a60544a3f33291f120900000000000000000916232f3c4956626f7c8995a2ac9f9386796c605346392d20130013202c3946535f6c7986929facb9aea49d9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a8e8174675b4e4134281b0e01000000000000000000000000000000000914202d3a4753606d7a86929fa89b8f8275665c5044382b1f120600000916222f3c4955626f7c8895a2afa4978b7e7164584b3e312518181b1d1f1f201f1f1d1b181514120e090300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1825313e4b5864717e8b979f9f9f95887c6f6255493c2f221609000714212d3a4754606d7a8793939393938c807366594d4033261a0d00000000000000000000000000000000000000000000000000000000000000000006131f2b37434e586774808d9aa6ada1978a7d70655b5045413a383435393b424b54606b7783909d9d9c9b95887b6e6155483b2e22150800000006111b262f39424b555e686e7b849197a2a49a92877d706a60574d4f59616c717e88939fa4a19690837a6d675d544a41382d251c1309000000000000000000000000000000000000000000000000000b1824303c48535c64676c6c6c6c6c6c6c6c66635b51493f372d251b130900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915222e3b4854606a6f79818a91979ea39c918c7f726d625b51483f362d241b12080000000000000000000000000000000000000000000000000000000000000009121b242d373f49525b636e74808d929da5a39f99979ea1a69e948e81786c605c524940372d241b110800000000000000000000000000020e1a26313b454d53555858585858585966727f8c99a5aa9d9184776a5e5144372b1e11000000000000000000000a15202a344049525c646765625a50483f362d241b1209000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978a7e7164574b3e3e48515b606c78818f959f9d928b7f726c6d7a8799a3afaa9e9184776b544a3f34281c1003000000000000000006121e2b37424e575f6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6361594f44382c201407000000131f2c3946525f6c7986929393939393877a6d6054473a2d2114070000000000000000000000000713202d3a4653606d798693939393939386796c605346392d201300131f2c3946525f6c7985929f9f9f9f9fa59e9184796d60584e42382e21170d0000000000000000000916232f3c4956626f7c89959f9f9f9386796c605346392d20130013202c3946535f6c7986929facacacaea9a7a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a69a8e8174675b4e4134281b0e010000000000000000000000000000000006131f2c3945515d6776828f9ca99f9285796d6053463a2d20130800000916222f3c4955626f7c8895a2afa4978b7e7164584b3e3125180c0e101212131312100f0c08080602000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1825313e4b5864717e8b9393939393887c6f6255493c2f221609000714212d3a4754606d7a86868686868686807366594d4033261a0d000000000000000000000000000000000000000000000000000000000000000000030f1b26323c4855626e7b88949eaca99d9083786c605a524c4645404045474c545c66707d8995a0aaa99d918477695f53463a2d2114070000000b17222d38414a545d676d7a839196a1a49f93887e716b60584e4e58606b707e87929aa4a19791847b6e685d554b42392f261b130a00000000000000000000000000000000000000000000000000000814202b36414a53585a60606060606060605957514940372e251b13090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916232f3c4956626f7c848e9393939393918c7f726d625b51493f362d241b120900000000000000000000000000000000000000000000000000000000000000000009121b252d374049525c646e74808d939da59f9f9f9fa79f948f82786d665b504a40372e251b1209000000000000000000000000000005121e2a36424d575f616565656565656566727f8c99a5aa9d9184776a5e5144372b1e1100000000000000000000030e18222e37404a52585a585650483f362d241b120900000000000000000000000000000000000000000000000000000000000000000000000000010507071313131313131313080705020000000000000000000000000000000000000c1926333f4c5966727f8c99a5b2a5998c7f7266594c3f363f44505b666d79839096a09f93877e706f7c8995abb5a99c8f8376695c50432e23170c000000000000000000020e1a26313c454e535560606060606060606060606060606060606060606060606060606060606060606060606060606060606057554f473e33281c1004000000131f2c3946525f6c7986868686868686867a6d6054473a2d2114070000000000000000000000000713202d3a4653606d788686868686868686796c605346392d201300131f2c3946525f6c798692939393939393938a7d70675d51463d30261c0f060000000000000000000916232f3c4956626f7c89939393939386796c605346392d20130013202c3946535f6c7986929f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9a8e8174675b4e4134281b0e010000000000000000000000000000000004101d2935404b5566727f8c99a9a297897c6f6356493c2f24190d01000916222f3c4955626f7c8895a2afa4978b7e7164584b3e3125180b0204050606060504020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1825313e4b5864717e868686868686867c6f6255493c2f221609000713202c3945525d687679797979797979736d63574b3f3225190c000000000000000000000000000000000000000000000000000000000000000000000a15212e3a47535f6a76828f9aa4ab9f958c7f726c605d5653514b4b5153565e666d7983909da7ada2978b7f7265574d42372b1e12050000030f1b27333f49535c666d79839095a0a59c928b7f726c61594f4d575f6a6f7d869299a3a29892857b6e695e564c433930271d140a010000000000000000000000000000000000000000000000000000030f1a252f3841484c4e53535353535353534c4b4640372e251c1309010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010e1b2734414e5a67748186868686868686867f736d635b51493f372d241b1209000000000000000000000000000000000000000000000000000000000000000000000009131c252e37404a525c606c77818e93939393939393959082796d665c544a3f382e251c13090000000000000000000000000000000714212d3a46535f696e7272727272727272727f8c99a5aa9d9184776a5e5144372b1e11000000000000000000000006101c252e3840474c4d4b4a453f362d241b120900000000000000000000000000000000000000000000000000000000000000000000000002080d11131420202020202020201514120e0902000000000000000000000000000000000a1724313d4a5764707d8a97a9b2a89b8e817568564c4136333f4a545d676d7a849197a19992867c717e8a97a4b1a79a8e8174675b4e4134281b06000000000000000000000915202a333c4247485353535353535353535353535353535353535353535353535353535353535353535353535353535353534a48443e352c21160b00000000121f2b3844515d6974797979797979797976685d5245392c20130700000000000000000000000006121f2c3844505c66767979797979797979766c5f5346392d201300131f2c3946525f6c7986868686868686868681756c61554b40342b1e150a000000000000000000000916232f3c4956626f7c86868686868686796c605346392d20130013202c3946535f6c79869293939393939393939393939393939393939393939393939393939393939393939393939393939393938e8174675b4e4134281b0e0100000000000000000000000000000000000c18242f3c4955626f7c8897a1a9998c807366564c4135291d1104000916222f3c4955626f7c8895a2afa4978b7e7164584b3e3125180b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1724303d4956626c7179797979797979766a5f53473b2e2115080004111d2935414c565d6c6c6c6c6c6c6c6c66635b52473b2f23160a0000000000000000000000000000000000000000000000000000000000000000000006121f2b37434e58626f7c87939fa8a79f93887e746d6863605c54555d6063686e78818e95a0aca69f9285796d6053473c31261a0e02000005121f2b3744505b656d78828f959fa59d938c80736d625a504c565f696f7c859298a3a39892867c6f695f564d443a31271e150b020000000000000000000000000000000000000000000000000000000008131d262f363c40414646464646464646403e3b352e251c130a01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d1a2733404c58646e747979797979797979736d635b51493f372d251b1209000000000000000000000000000000000000000000000000000000000000000000000000010a131c252e384044505b656c7881868686868686868683796d675d544a42382d261c130a010000000000000000000000000000000815222e3b4855616e7b7f7f7f7f7f7f7f7f7f818f9ba8aa9d9184776a5e5144372b1e110000000000000000000000000a131c262e363c3f403e3d3a342d241b1209000000000000000000000000000000000000000000000000000000000000000000000000050c13191d20212d2d2d2d2d2d2d2d21201e1a140d050000000000000000000000000000000815222e3b4855616e7b8896a1adaa9d908477685e5246392d38424b555e686e7b859298a29892857b808d9aa6b4aa988b7f7265584c3f3225190c00000000000000000000030e18212a31373a3b4646464646464646464646464646464646464646464646464646464646464646464646464646464646463d3c38332c231a100500000000101c2935414d5862696c6c6c6c6c6c6c6c6c5d564c4135291d110400000000000000000000000003101c28343f4a545c6c6c6c6c6c6c6c6c6c6c645a4f43372b1e1200121f2b3844515d6974797979797979797979756f65594f433a2f22190c03000000000000000000000815222e3b4754606a6f79797979797979766c5f5346392d20130013202c3946535f6c7987868686868686868686868686868686868686868686868686868686868686868686868686868686868686868174675b4e4134281b0e0100000000000000000000000000000000000713202d394653606c7885919ea99c908376685d5245392c201306000916222f3c4955626f7c8895a2afa4978b7e7164584b3e3125180b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815212d3945505a62646c6c6c6c6c6c6c625f584e43372b1f130600010d19242f3a444c525f606060606060605957524940352a1e130700000000000000000000000000000000000000000000000000000000000000000000020f1a26313c4754606a74818e96a0a9a49a9387807a74706d666a6a676d70747a828e939ea7a89f948b7e72675d5145392a1f140900000815212d3945505a606c77818e949fa69e938e81746e635b5146525e686e7b859197a2a39992867d706a5f574d443b32281f150c030000000000000000000000000000000000000000000000000000000000010b141d252b303334393939393939393933322f2a231c130a0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1824303c48535c64676c6c6c6c6c6c6c6c66635b51493f372d251b13090000000000000000000000000000000000000000000000000000000000000000000000000000010a131c2627333f49535b666c757979797979797979776d675d554b42392f261c140a01000000000000000000000000000000000b1724313e4a5764717d8a8b8b8b8b8b8b8b8b8f939eaaaa9d9184776a5e5144372b1e11000000000000000000000000010b141c242b30333432312e29221b1209000000000000000000000000000000000000000000000000000000000000000000000000050e161e252a2d2e39393939393939392e2d2a251f170f0500000000000000000000000000000714212d3a46535f697884919eabac9f93877a6d6154473c322f39434c565f696f7d86929aa197918483909daaaea298897c6f6356493c302316090000000000000000000000060f1820262b2e2f393939393939393939393939393939393939393939393939393939393939393939393939393939393939302f2c28211a110800000000000d1925303b4650585d5f606060606060605f524c443a2f24190d01000000000000000000000000000c17232e38424a505f60606060606060605f5a52493e33271b0f00101c2935414d5862696c6c6c6c6c6c6c6c6c68655d53473e31281d1007000000000000000000000006131f2b38434e5860626c6c6c6c6c6c6c6c645a4f43372b1e1200121f2c3845525e6a757979797979797979797979797979797979797979797979797979797979797979797979797979797979797979746f64594c4033271a0d01000000000000000000000000000000000005121f2b3744505b6575818e9bac9f92867a6d6054473a2d211407000916222f3c4955626f7c8895a2aca4978b7e7164584b3e3125180b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111d29343e485056586060606060606055534e463c32261b0f03000008131e28323a414553535353535353534d4b4740372e24190d0200000000000000000000000000000000000000000000000000000000000000000000000a15202b37434e58606d7a849197a2a9a499938d85807d79787777787a7c81868f949ea5a9a1969082776c60554b403529180e0300000a1724303d4956626c74808d939ea69f948f81786d605c52494754616e7a849197a1a49a92877e706b60584e453c322920160d0300000000000000000000000000000000000000000000000000000000000000020b131a202427272d2d2d2d2d2d2d2d2625231e19120a010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202b36414a53585a60606060606060605957514940372e251b130900000000000000000000000000000000000000000000000000000000000000000000000000000000010a1417222d38414a545b60686c6c6c6c6c6c6c6c6a605d554c433930271d140a0200000000000000000000000000000000000b1724313e4a5764717d8a97989898989898989b9ea6b0aa9d9184776a5e5144372b1e1100000000000000000000000000020b12191f2326272524211d181109000000000000000000000000000000000000000000000000000000000000000000000000020c1620283036394646464646464646463b3a36302921170d020000000000000000000000000005121e2a36424d576875818e9baaafa49a8b7e7164584e43372b313a444d57606b717e88939fa096919095a0abac9f9285796d6053463a2d201307000000000000000000000000060e151a1e21222d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2423201c16100800000000000008141f2a343e464d5152535353535353535345413a32281e1308000000000000000000000000000006111c2630383f44535353535353535353534f4940372c21160a000d1925303b4650585d5f60606060606060605b59534b42352c1f160c000000000000000000000000030f1b27323d464e5456606060606060605f5a52493e33271b0f00111d2a36424e59636a6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c67645d53483c3024180b000000000000000000000000000000000000030f1b27333f495364717e8a9aa4a3998a7d7064574a3d3124170a000916222f3c4955626f7c88959f9f9f978b7e7164584b3e3125180b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17222d363e45494b535353535353534947433c342a20150a000000010c1620282f35394646464646464646403f3b352e251c1207000000000000000000000000000000000000000000000000000000000000000000000000030f1b27323c45515d676e7c859297a0a7a49f97928d89868584848586898d92989fa6a79f9791847b6e655b50433a2f2418060000000b1825313e4b5864717e8b929da5a0958f82796d665c504a43505d6a76839096a0a99f93887e716c61594f463c332a20170e0400000000000000000000000000000000000000000000000000000000000000000001080f14181a1b2020202020202020191916120d070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1a252f3841484c4e53535353535353534c4b4640372e251c13090100000000000000000000000000000000000000000000000000000000000000000000000000000000000006111b262f38424a50535b60606060606060605d54514c433a31271e150b020000000000000000000000000000000000000b1724313e4a5764717d8a979f9f9f9f9f9f9f9f9f9f9f9f9d9184776a5e5144372b1e11000000000000000000000000000001080e1317191a181715110c060000000000000000000000000000000000000000000000000000000000000000000000000008131e28323a41465353535353535353534846423b33291f140900000000000000000000000000020e1a26313e4a5764717e8a98a2aeac9c8f82766a5f53473f352f323c454f59616c727f8c929da09d9da0a7b1aa9c8f8275665c5145382c1f13060000000000000000000000000003090e121415202020202020202020202020202020202020202020202020202020202020202020202020202020202020171614100b0500000000000000020d18222c343b414446464646464646464639352f2820160c010000000000000000000000000000000a151e262e343846464646464646464646433e372e251b10050008141f2a343e464d515253535353535353534f4d48423930231a0d04000000000000000000000000000a16202b343d43474953535353535353534f4940372c21160a000e1a26313d4751595e5f606060606060606060606060606060606060606060606060606060606060606060606060606060606060605b59534a41362b201408000000000000000000000000000000000000000b17222d3a4754616d7a87939393938d8174675a4e4134271b0e000916222f3c4955626f7c8893939393938b7e7164584b3e3125180b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111b242d34393d3e464646464646463c3b37322a22180e0400000000040d161e24292c393939393939393933322f2a241c130a00000000000000000000000000000000000000000000000000000000000000000000000000000a15202935414c555f6a6f7c8590959fa3a9a19e9a96979291909192999a9fa2aaa29f9590857b6e695e53493f31281d13070000000d1a2633404d596673808c99a4aa9d91847a6d675c544a3f45525e6b7885919ea8a5998c7f726c625a50473d342a21180e0500000000000000000000000000000000000000000000000000000000000000000000000003080b0d0e13131313131313130d0c0a06020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131d262f363c40414646464646464646403e3b352e251c130a0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141d262f383f44464e5353535353535353504745413a31281f150c03000000000000000000000000000000000000000b1724313e4a5764717e8a93939393939393939393939393939184776a5e5144372b1e110000000000000000000000000000000003070b0d0d0b0b09050100000000000000000000000000000000000000000000000000000000000000000000000000010d1925303a444c525f60606060606060605f524d453b30251a0e02000000000000000000000000000914202d3a4753606d7985929fabab9f94887c6f625b5145403937333d46505a626d74808d939ea7aaabb1aea2988b7e7164544b4034281c1004000000000000000000000000000000020608081313131313131313131313131313131313131313131313131313131313131313131313131313131313130a0907040000000000000000000006101a222a3035383939393939393939392c29241e160d0400000000000000000000000000000000030c151c23282c3939393939393939393937332c251c13090000020d18222c343b414446464646464646464642413d3730271e11080000000000000000000000000000040f19222b32383b3c4646464646464646433e372e251b1005000915202b353f474e5253535353535353535353535353535353535353535353535353535353535353535353535353535353535353534e4c4841382f251a0f03000000000000000000000000000000000000000613202d3946525e687783868686868684776b5e5144382b1e11000916222f3c4955626f7c868686868686867e7164584b3e3125180b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009121b22292d3031393939393939392f2e2b2620181006000000000000040c13191d202d2d2d2d2d2d2d2d2625231e19120a010000000000000000000000000000000000000000000000000000000000000000000000000000040d19242f3a434e58606a6f7b838c92989ea1a9a7a9a29f9d9d9e9fa3aba9a19e98928d837b6e695f574d41382d1f160c010000000d1a2633404d596673808c99a3ac9f92867c6f695f564c4345525e6b7885919ea6a89c8f82786d605c52493f362c2319100700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010b141d252b303334393939393939393933322f2a231c130a01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b141d262d333839424646464646464646443a39352f281f160d0300000000000000000000000000000000000000000b1724313e4a5764717e8686868686868686868686868686868684776a5e5144372b1e1100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111d2a36414c565e6c6c6c6c6c6c6c6c6c6c5e574d42362a1e12050000000000000000000000000006131f2c3945515d6774818d99a3afa69c8f82766d625a514b474242414148515b606c78818f959fabb8b4aa9f92857a6d6054473a2e23180c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000810181f25292b2c2d2d2d2d2d2d2d2d201d19130c04000000000000000000000000000000000000030a11171c1f2d2d2d2d2d2d2d2d2d2d2b27211b130a0100000006101a222a3035383939393939393939393534312c251e150c0000000000000000000000000000000007101920272b2e2f393939393939393937332c251c13090000040f19242d353d4245464646464646464646464646464646464646464646464646464646464646464646464646464646464646464641403c362f261d1308000000000000000000000000000000000000000005111e2a36414c5667717779797979797772675c4f43372a1d11000815212e3b47535f6a7679797979797979716c6256493d3024170a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000911171d2124252d2d2d2d2d2d2d22211f1b150e06000000000000000001080d111314202020202020201a1916130d07000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e28313c464e5860696e7980868d9197999c9d9fa3aaaaa9a19e9c9a97928d8680796e695f574d453b2f261b0d04000000000a1623303d495663707d87929aa4a29891857b6e685e554b424e5b6874818e949fa79e948e81746e635b51483e352b22180f060000000000000000000000000000000000000000000000000000000000000000000000000000030607090b0d0f1111121313121211100f0d0a08070502000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b131a202427272d2d2d2d2d2d2d2d2625231e19120a010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b141c22282b2d353939393939393939372d2c29241e160d040000000000000000000000000000000000000000000a1723303c4955616c71797979797979797979797979797979797771675b4f43362a1d10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050a0d0f1013130f0e0c09040000000000000713202d3946525e6876797979797979797976695e52463a2d2014070000000000000000000000000004101d2935404b55616e7b87929fa9ab9f948b7f726c605d55534d4e4e4e4b51535b666d7983909da9b6aea2988d8073675d5145392c1d1207000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060d14191c1f1f202020202020201413110d0801000000000000000000000000000000000000000000060c1012202020202020202020201e1b1610090100000000000810181f25292b2c2d2d2d2d2d2d2d2d282825201b140c030000000000000000000000000000000000070f161b1f22232d2d2d2d2d2d2d2d2b27211b130a0100000008121b242b31363839393939393939393939393939393939393939393939393939393939393939393939393939393939393939393433302b251d140b010000000000000000000000000000000000000000010d1925303a44555f676a6c6c6c6c6c6b6760564b3f33271b0e0006131f2b37434e585f626c6c6c6c6c6c6c64625a5045392d21150800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060c11151718202020202020201615130f0a04000000000000000000000001040707131313131313130d0c0a0702000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c161f2a333d464e575f676d737b8085898c8f919298a3a8a196918f8d8985807b736d675e574d453c33291d140a00000000000916222f3b4854606b717e88939fa4a19791847a6d675d544a4653606d78828f959fa69d938d80736d625a50473d342a21180e050000000000000000000000000000000000000000000000000000000000000000000104060b10121315171a1c1d1e1f1f201f1f1e1d1b19171514120e0906030000000000000000000000000000000000000000000000000000000000000000000000000000000000000001080f14181a1b2020202020202020191916120d070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a11171c1f20282d2d2d2d2d2d2d2d2a21201d19130c04000000000000000000000000000000000000000000000814212d3945505a61646c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6a675f564b3f33271b0e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000030a11161a1c1d20201c1b1915100902000000000714212e3a4754616d7a86868686868686867b6e6154483b2e21150800000000000000000000000000000c18242f3946535f6974808d96a1aba69f92877e736d67615f575b5a5b555d60636a6f7a83909daab6ab9f92857a6d61554b42382d2217110800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080d101213131313131313130707040100000000000000000000000000000000000000000000000000030613131313131313131313120f0a050000000000000000060d14191c1f1f20202020202020201c1b19150f090200000000000000000000000000000000000000040a0f13151620202020202020201e1b16100901000000000009121920262a2c2c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d282724201a130b020000000000000000000000000000000000000000000008131e2932434d555b5d60606060605e5c564e44392e23170b00030f1b26323c464e535560606060606060585650483e34291d110500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005080a0b1313131313131309080603000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d18212b343d454d555d60696e73787c7f828486929fa196898482807d79746e69605c554d453c332a21170b0200000000000713202c38444f59616c727f8c929da5a0969083796d665c5044515c666d79839096a0a59c928b7f726c61594f463c332920170d0400000000000000000000000000000000000000000000000000000000000001070d1113171c1f20222426292a2b2b2c2c2c2b2b2a28262422211e1a1312100c060000000000000000000000000000000000000000000000000000000000000000000000000000000000000003080b0d0e13131313131313130d0c0a06020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b0f12131b20202020202020201d1413110d0801000000000000000000000000000000000000000000000004111c28333e48505557606060606060606060606060606060605e5b564d44392e23170b000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d151c2226292a2d2d292825211b140c030000000714212e3a4754616d7a87939393939393877b6e6154483b2e211508000000000000000000000000000007121d2a36424d57606d7a849199a3aba39992878079736e696968676869676d70757c8490959fabb3ab9e91847a6e675d544a3f3328231a100700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080d10121313131313131313130f0e0c09040000000000000000000000000000000000000000000000030608091313131313131313120f0a050000000000000000080f151a1d1f20202020202020202020202020202020202020202020202020202020202020202020202020202020202020201b1a18140f08010000000000000000000000000000000000000000000000020d1720313b434a4f515353535353514f4b443c32281d120600000a15202a343c434749535353535353534b49453e362d22170c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010407070b0d0f111213131212100e0c080705020000000000000000000000000000000000000000000000000000000000060f19222b333c434b51565e61666c6f7375777e8a979e9184787673706d66615e56514b433b332a21180f0500000000000003101b27323d47505a626d73808d939ea69f958f82786d605b524a545d676d7a849197a1a49f93887e716b60584e453b32291f160c0300000000000000000000000000000000000000000000000000000003090e13181d2023282b2d2f3133353737383939393837373533312e2d2a26201f1c17110d080200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000306060f1313131313131313110706040100000000000000000000000000000000000000000000000000000c17222c363e45494a53535353535353535353535353535353514f4b443b32281d12060000000000000000000000000000000000000000000000000000000000000000000000000000000000030d161f272d32353639393534312c261e150c0200000714212e3a4754616d7a87949f9f9f9f94877b6e6154483b2e2115080000000000000000000000000000010e1a26313b45525d686f7d879299a3aaa399938d847f7b787675747475777a7d828991969fa7aca6a8a1969083796d665b50443f362c22190f05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020507080b0e111112131312110f0c0908060300000000000000000406070b0f1213131211100e0c0b0906010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004090e111213131313131313131313131313131313131313131313131313131313131313131313131313131313131313130e0d0b08030000000000000000000000000000000000000000000000000000050e1f2931393f4244464646464644433f39322a20160c010000040e18222a32373b3c464646464646463e3d39342d241b110600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010406070a0d10111213131211100d0a07060400000000030505060606060606000000000000000000000000000000000000000000000000000002080d111314171a1c1e1f1f201f1f1d1b181514120e090400000000000000000000000000000000000000000000000000000000071019212a313940454d52545b60636669707d8a979e9185786b6763605c54524d454039302921180f0600000000000000000b16212b353e48515b606c77818e949fa79e948e81746d635a504b555e686e7b859198a2a49a92877d706a5f574d443a31281e150b02000000000000000000000000000000000000000000000000040a0f151a1d24292c2e34383a3c3e404244444546464545444342403d3b3a36312d2c28231c19130d08020000000000000000000000000000000000000000000000000000000000000000000000000000000000040607090c0e1011121313131211100f0d0b080705020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101a242c33393c3e4646464646464646464646464646464644433f39322920160b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000a151f2831383e4243464642413d3730271e140900000714212e3a4754616d7a8794a0acaca194877b6e6154483b2e21150800000000000000000000000000000009141f2935414c56606b717e879298a0a8a49f97918c8885838181818283868a8f939da0a8a39f999b9e9f958f81786c605b51483e342b21170d0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090e121415181b1d1e1f201f1f1d1b191515120f0a0401000000070c101313181c1e1f201f1e1d1b181815120d0600000000000000000004090e111213131313131313131313131313131313131313131313131313131211100e0c0a07060400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d171f272e33363739393939393837332e2820180e040000000006101820262b2e2f3939393939393931302d29221b120900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001080d111314171a1d1e1f1f201f1e1c1a171413100c07010c0f1112131313131313090907030000000000000000000000000000000000000000050b1013191d20212427292b2b2c2c2c2b2a282522211e1a14100c07010000000000000000000000000000000000000000000000000000070f181f272f353b42464a5053565964707d8a979e9185786b5e5653504a46423b342e271e170f06000000000000000000040f19232c363f44505b656d78828f95a0a69d938c80736c62594f4c565f696f7c869299a3a39992867c6f695f564c433a30271d140a0000000000000000000000000000000000000000000000070c151b20262b2f35393a3f4446484a4d4f5051525253525251504e4c4a4846423d3a38342e29251e19140d050000000000000000000000000000000000000000000000000000000000000000000000000004070c10121316191b1d1e1f1f201f1f1e1d1b19171414110e0806030000000000000000000000000000000000000000000000000004090e1112131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313130b0a080400000000000000000008121a22282d3031393939393939393939393939393939393736332e2820170e04000000000000000000000000000000000000000000000000000000000000000000000000000000000005111c27313a434a4e5053534f4d49423930261b1004000714212e3a4754616d7a8794a0adaea194877b6e6154483b2e211508000000000000000000000000000000030d19242f3a444f59616c717e8691969fa2a9a19e9997918f8e8d8e8f9092999b9ea5a69f99928d8e939e9e938d80746d625a50463d33291f140900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0f141a1e212125282a2b2c2c2c2b2a282622211f1b15110d08030b12181c1f2025292b2c2c2c2b2a272524221d18110901000000000000080f151a1d1f202020202020202020202020202020202020202020202020201f1f1e1d1b19161413100c07040100000000000000000000000000000000000000000000000407090a13131313131313131313131313131313131313131313131313131313131313131313131313131313130b0a080400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d151c2227292a2d2d2d2d2d2b2a27231d160e06000000000000060e151b1f21222d2d2d2d2d2d2d2524211d171109000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090e13191d20212427292b2b2c2c2c2b292724201f1c18120e181c1e1f2020202020201615130f0a0400000000000000000000000000000000040a0f171c1e24292c2d3133363738393939383735322e2d2a261f1d18120b060000000000000000000000000000000000000000000000000000060d151d24293036383f44464a5764707d8a979e9185786b5e5246443f38363028231d150c05000000000000000000000007111a2427333f49535c666d79839096a1a59c928b7e716b61584e4d575f6a707d879299a4a29891857b6e685e554b42392f261b11060000000000000000000000000000000000000000030b121820262b31373a4145474a50535557595c5d5e5e5f5f5f5e5e5d5b595755534d4946443f3835302a251e170e0802000000000000000000000000000000000000000000000000000000000000000001070c1013181c1f20232527292b2b2c2d2c2c2b2a28262421201e1915120f0a0300000000000000000000000000000000000000000000080f151a1d1f20202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020171714110c0500000000000000000810171c2123242d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2b2a27231d160e050000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16222d38434c545a5d60605c59544b42372c211509000714212e3a4754616d7a8794a0adaea194877b6e6154483b2e2115080000000000000000000000000000000008131e28323d47505a616c717c848c92989d9fa4a9a19e9c9b9a9b9c9d9fa3a9a29f9a94908780818e949f9d928b7f726c61584e453b31251a0e020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060c161b1f252a2d2e31343738393939383735322f2e2b26201d19130c151d23282c2d32353839393838363432312e29231b1309000000000009121920262a2c2c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2c2c2c2b29282623201f1d1813110d080100000000000000000000000000000000000000050b101416172020202020202020202020202020202020202020202020202020202020202020202020202020202020171714110c05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040b11161a1d1e20202020201e1d1b17120c040000000000000000040a0f13151620202020202020181715110c060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060e141a1e24292c2d3033363738393939383634302d2c29231d1a24282b2c2d2d2d2d2d2d23221f1b160f070000000000000000000000000000070f151b22282d3035393a3e404244454646454543413f3b3a36312c29241d17110a0200000000000000000000000000000000000000000000000000030b12181f252a2d33383d4a5764707d8a979e9185786b5e524538342e2a251f18120b0300000000000000000000000000091217222d38414b545d676e7a849197a1a49f92877d706a60574d4e58606b717e87939fa4a19791847a6d675d544a41382d22171209000000000000000000000000000000000000070c151d232831373c42474b5154545c60626466686a6a6b6c6c6c6b6a6a686664615f575653504a46413a3630292019130d05000000000000000000000000000000000000000000000000000000000003090e12181d1f23282c2d3032343638383939393838373533312e2d2a25211f1b150f0b060000000000000000000000000000000000000009121920262a2c2c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2423211c1710080000000000000000050c11141717202020202020202020202020202020201e1d1b17120b04000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d1a26323e4a545e66696c6c68655d54493d3125190c000714212e3a4754616d7a8794a0a2a2a194877b6e6154483b2e21150800000000000000000000000000000000010c16202b343e48505a616a6f797f858b90939a9a9c9d9e9f9f9f9e9d9c9a9897928d88837c7378828f95a09f93877e706a60574d42362a1e1205000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030a111720272b31363a3b3e4144444546464544423f3c3b37322c29241e191e272e34383a3e42454646454443413f3d3a342d251b110600000008121b242b31363839393939393939393939393939393939393939393939393939393837363432302d2c2924201d19130e0902000000000000000000000000000000000810161c2023232d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2423211c17100800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060a0e1011131313131311110e0b0601000000000000000000000003060809131313131313130b0a0805000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070f181f262a2f35393a3d404344454646454443403d3a38342f2a252f3437383939393939392f2e2c272119100700000000000000000000000009101920272b33393a4145474a4d4f515252535252504e4b4846423b39352f27221b140b050000000000000000000000000000000000000000000000000001070c14191c2228313d4a5764707d8a93939185786b5e52453828231c19140c070000000000000000000000000000000006111b262f39424c555e686e7b859298a2a39992867c6f695f564c4f59616c727f8b929ca5a0969083796d665c53493f3327241a1007000000000000000000000000000000000810191e272e343c43474d53555d6064666d6f7173757777787979787877767573706e696763605c54524c46413b322a251e170e06000000000000000000000000000000000000000000000000000001070c141a1d24292c2e34383a3c3f4143444546464645444342403e3b3936302e2b261f1c17110a020000000000000000000000000000000008121b242b3136383939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393931302d28221a120800000000000000000004080a0b1313131313131313131313131313131311100e0b060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1c2935424e5a6670767979756f65594d4134281b0e000714212e3a4754616d7a87949595959594877b6e6154483b2e2115080000000000000000000000000000000000040d19222d363e48505860676d737a7f83878a8d8f90929292929190908e8b8885807c766f6a6d7a8390969a9992867c6f695e53463a2d2114070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c151c232832373b4246484b4e505152535252504e4c4847433c39352f28222b30394045464b4f5152535251504e4b4a463f372d23180d0100040f19242d353d42454646464646464646464646464646464646464646464646464646454443413f3d3a38352f2c29241e1a140c06000000000000000000000000000008111a21272c2f30393939393939393939393939393939393939393939393939393939393939393939393939393939393931302d28221a120800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b1218212a31363a4145474a4d505152525352514f4d4a4745403936313a4044454646464646463c3b38322b22190f04000000000000000000020a131b222b32373e44494c5254575a5c5e5e5f5f5f5e5d5b5855534d47454039332d261d170e06000000000000000000000000000000000000000000000000000002090e111724313d4a5764707d8686868684786b5e5245382b17110e09020000000000000000000000000000000000000a141d27303a434c565f696f7c869299a3a29892857b6e685e554b505a626d73808d939da69f958f82786d655b50443f362c22190f04000000000000000000000000000009111a222a303940454e53575f62676d7175797b7d8082838485858685858483817f7d7b7874706d66615e56524c443e36302920180f07000000000000000000000000000000000000000000000000030b12181f252a2f35393a404446494c4e5051525253525251504e4c4a4746413c3a37312b28221c140b070000000000000000000000000000040f19242d353d4245464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646463e3c39332c241a1005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003101d2a3643505d69768286868175685c4f4235291c0f000714212e3a4754616d7a87888888888888877b6e6154483b2e21150800000000000000000000000000000000000007101b242d363e464e555c60676d72767b7e80828485858685848483817e7c79746f6a625f686e7b848d8d8d8d8d857b6e6154483b2e21150800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d151e262e343d43474d5354585b5d5e5f5f5f5e5d5b5955534e4745413a3129343c424b5153585c5e5f5f5f5e5d5a585651493f34291d1206000915202b353f474e5253535353535353535353535353535353535353535353535353525251504e4c494745403a39352f2a251f17110a03000000000000000000000005101a232c33383c3d46464646464646464646464646464646464646464646464646464646464646464646464646464646463e3c39332c241a100500000000000004090e111213131313131313131306040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004090e111213131313131313131306040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c151c2328333b42464c5254575a5c5e5e5f5f5f5e5c5a5753514b46423b454c50525353535353534948433d342b21160a0000000000000000000a141c252d343d43475055565d606466696a6b6c6c6c6b6a6865615f5753514b443f382f292018100600000000000000000000000000000000000000000000000000000000061623303c4955616c70797979797872685c5043372a1e06000000000000000000000000000000000000000000020b151e28313b444d57606a707d87929fa3a19791847a6e675d544a515b636e74818e949ea79f948e81776c605b51483e342b21160a0000000000000000000000000009121b232c343c424b51585f62696e747a7d8185888a8c8f9091919292929191908e8c8a8884807d79736d68615e565046413a322a2119100700000000000000000000000000000000000000000000060d151d24293136394045474a515356585a5c5e5e5f605f5f5e5d5b595754524c4847433c38332d261d18120b030000000000000000000000000915202b353f474e52535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353534a49453e362c22170c00000000000000000000000000000000000000010406070a0c0e101112131313121211100e0c0a070604010000000000000000000000000000000000000000000000000000000000000000000003101d2a3643505d697683908f8275685c4f4235291c0f000713202d3a4653606d787c7c7c7c7c7c7c7c786d6053463a2d2013070000000000000000000000000000000000000009121b242d343d434b51555d6065696e717375777879797978777674716f6d66625f58565e696f7c8181818181807f7265584b3f3225180c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010b151f2730383f444e54575e6164676a6b6c6c6c6b6a6865625f5854524c433f353c464e545c6065686b6c6c6b6b696765625b51463a2e221509000e1a26313d4751595e5f60606060606060606060606060606060606060606060605f5f5f5e5c5b595653514b4745413a363028231c150c05000000000000000000000b16212c353d44484a53535353535353535353535353535353535353535353535353535353535353535353535353535353534a49453e362c22170c0000000000080f151a1d1f20202020202020202013100c0701000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080f151a1d1f20202020202020202013100c070100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b151e272e343f454d53565d606366696a6b6c6c6c6b696763605c55534d444f575c5f60606060606056544e463d32271b0f030000000000000009121c262e373f464e545a6164686d7173757778797978787674726e6965605d555049413a322a221810060000000000000000000000000000000000000000000000000000000814202d3944505a61646c6c6c6c6b6860564b4034281b0f00000000000000000000000000000000000000000000030c161f29323c454e58616b717e8b919ca4a0969083796d665c5349525c606d78828f959fa69e938d80736d625a50473d32271b0f03000000000000000000000009121b242d353e464e545c606a6f757b81868a8e929797999b9d9d9e9f9f9f9e9d9d9b999796918d8985807a746e68615a524c443c332b2219100700000000000000000000000000000000000000000910181f272f353b42464b5153545c60636567696b6b6c6c6c6b6b6a686664615e5655534e46443f382f28231d150c0500000000000000000000000e1a26313d4751595e5f606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060575550483e33281c11040000000000000000000000000000000104080d11131417191b1d1e1f1f20201f1e1e1d1b19161413100d0704000000000000000000000000000000000000000000000000000000000000000003101d2a3643505d697683908f8275685c4f4235291c0f0006121f2c3844505c666d6f6f6f6f6f6f6f6f6d665c5144382c1f1206000000000000000000000000000000000000000009121b222b313940454b5154575e616467696a6b6c6c6c6b6a69676562605c54534e4d575f6a6f747474747474726d62564a3d3124180b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d273139424a50586062696e71747777787979787775726f6a66605d56504540454e5860666d717578797978777674726d62564a3d3124180b00111d2a36424e59636a6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6b6a69676563605d5554524c46423b342e261e170f06000000000000000004101c27333d474f55566060606060606060606060606060606060606060606060606060606060606060606060606060606060575550483e33281c110400000009121920262a2c2c2d2d2d2d2d2d2d2d1f1c18120b030000000000000000000000000000000000000000000000000000000000000000000000000000000000000009121920262a2c2c2d2d2d2d2d2d2d2d1f1c18120b0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121c273039404451575f61686d7073767778797978777673706d67615e57505761686b6c6c6c6c6c6c6260584e43382c1f130700000000000006101b242e384049515860626c70757a7d808284858586858583817e7b77726d67605b534c443c342a22180e05000000000000000000000000000000000000000000000000000004101c28333e48505557606060605e5c564e453a2f23170b0000000000000000000000000000000000000000000000040d17202a333d464f59626c737f8c929da5a0958f82786d655b5044505c666d79839095a0a59d928c7f726c61594f43382c1f13070000000000000000000007101b242d363e474f585f666d737c82878e92989b9ea2a9a6a8aaa8a7a6a6a6a7a8a9a8a6a8a19e9a97928c86807a716c615e564d453c342b22190e0500000000000000000000000000000000000009121b222a313940454d53555d6065666d6f72747677787979797877767573716e6867625f5853504a423d342e271e170e0500000000000000000000111d2a36424e59636a6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c64615a5045392d2114080000000000000000000000000002080d1113191d2021232628292b2c2c2c2c2c2b2b2a28252320201d1813100c0700000000000000000000000000000000000000000000000000000000000003101d2a3643505d697683908f8275685c4f4235291c0f0003101c28343f4a545c606262626262626262605c544a4034281c10040000000000000000000000000000000000000000000910191f272f343a4145474d5254575a5c5d5f5f5f5f5e5d5d5b585553514a4743454e585f6267676767676765625b51463a2e2215090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c18242f39434b545c606a6f757b7e8183848586858583817f7c78726d68625a514b4d57606a6f797e82848586858483817f7265584b3f3225180c00121f2c3845525e6a7579797979797979797979797979797979797979797979797979797877767472706d6765605d56524d443f38302921180f06000000000000000714202c38444f5961636c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c64615a5045392d211408000008121b242b3136383939393939393939392c29231d150d03000000000000000000000000000000000000000000000000000000000000000000000000000000000008121b242b3136383939393939393939392c29231d150d0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18232e39424a515b63696e747a7d808384858586858482807d79746e69605b536873787979797979796f6a6054483b2e2215090000000000030e18222d36404a525b626a6f767d82868a8d8f919192929291908e8b88847e79716c655e564e463c342a20170c0300000000000000000000000000000000000000000000000000000b17222c363e44494a5353535352504b453c33281e1207000000000000000000000000000000000000000000000000050e18212b343e47505a636d74808d939ea69f948e81776c6053464a545d676d7a839196a1a49f93887e716b6054483b2f221509000000000000000000050e19222d363e485059616a6f7980878f93999fa3aaabaaaaa29f9d9b9a9a999a9a9b9d9fa2aaa9aba9a19e98928d857e756d685f574e463c342a20170c030000000000000000000000000000000009121b242c343c434b51575e61676d7175797c7f81838485858685858483817f7d7a77736f6a64605b544f454039302920170f05000000000000000000121f2c3845525e6a7579797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979716c6155493c3023170a000000000000000000000001080d13191d2024292c2d303335363738393939393837363432302d2c29241f1c18120b060000000000000000000000000000000000000000000000000000000003101d2a3643505d697683908f8275685c4f4235291c0f00000c17232e38424a5053555555555555555553514a42392e23180c0000000000000000000000000000000000000000000000070d151d23292f35393b4246474a4d4f51525253525151504e4b4946444039373c464e53555a5a5a5a5a5a585651493f34291d120600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141e2935404b555d666d747c82878b8e909192929291908e8c88847f7a716d605d55535f696f7c848b8f9192929291908d86796c605346392d20130013202c3946535f6c798786868686868686868686868686868686868686868686868685858483817f7c7976726d68615e57504a423b332a22180f050000000000000916232f3c4855616b707979797979797979797979797979797979797979797979797979797979797979797979797979797979716c6155493c3023170a00040f19242d353d424546464646464646464638342f271f150b01000000000000000000000000000000000000000000000000000000000000000000000000000000040f19242d353d424546464646464646464638342f271f150b0100000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c2834404a545c606d727b81868a8d8f9191929292918f8d8a85807b726c655c6b78858686868686867c6f6256493c2f23160900000000000a15202a343e48525c636d727c838a8f9299999c9d9e9f9f9f9e9d9b9895908b857e776d685f584e463c32291e150a000000000000000000000000000000000000000000000000000005101a232c33393c3d464646464543403a332a21170c0100000000000000000000000000000000000000000000000000060f19222c353f48515b606c78818f94939393938c7f7366594c424b555d686e7b84919793939a92867c6f6356493c302316090000000000000000020d17202b343e48505a616b707c838c92999fa4abaca7a09d999892908f8d8d8d8d8d8f909298989c9fa4abaaa29f97928a827a6e6960584e463c32291e150b00000000000000000000000000000008121b242d363e464e555d60696e74797e8285898b8d8f91919293929291908e8c8a8784807c76716c666059514b433b332921170e05000000000000000013202c3946535f6c79878686868686868686868686868686868686868686868686868686868686868686868686868686868686868686867e7164574a3e3124170b00000000000000000000040c13191e24292c2f35393a3d3f4143444546464645454443413f3d3a39352f2c28231d17110a02000000000000000000000000000000000000000000000000000003101d2a3643505d697683908f8275685c4f4235291c0f000006111c2630383f444649494949494949494644403930271c1207000000000000000000000000000000000000000000000000030b12181d24292c30363a3b3e40424445464646454443413e3c3a38342e2b343c4347484e4e4e4e4e4e4b4a463f372d23180c010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c26303845515d676d7880898f93999a9d9e9f9f9f9e9d9b9896918c857e756d675d58626e7b8691969b9e9f9f9e9e9c9386796c605346392d20130013202c3946535f6c79869293939393939393939393939393939393939393939399929292918f8e8c8986827e7a746e69605c544d453c342a21170c0200000000000a1723303d4a5663707d86868686868686868686868686868686868686868686868686868686868686868686868686868686867e7164574a3e3124170b000915202b353f474e5253535353535353535345403931271d12070000000000000000000000000000000000000000000000000000000000000000000000000000000915202b353f474e5253535353535353535345403931271d12070000000000000000000000000000000000000000000000000000000000000000000000000000000000030e18212c3844515c666d757f878d9298999c9d9e9f9f9f9e9c9a98928d867f776d666679869293939393887b6e6255483b2f22150800000000030f1b26313c46505a636e737f8790949c9fa3aba8a5a3a1a1a1a3a5a7a7a09d97928b827a6f6a5f584e443b30261c1106000000000000000000000000000000000000000000000000000008111a22282d3031393939393837342f2821180f0500000000000000000000000000000000000000000000000000000007101a232d364044505b666d79828686868686868275695c4f42434c565e696f7c858686868686867f7265584c3f3225190c000000000000000009141f29323d46505a626c717d8690959fa3ababa49f9b95908c898584828180808081828385888b8f93999fa2aaa9a19e938f847b6f6a60584e443b30271d12070000000000000000000000000006101a242d363f4850585f676d737b80858b8f9298989a9c9e9e9f9f9f9e9e9d9b999795908d88837e786f6b605c554d453b332920170c030000000000000013202c3946535f6c798692939393939393939393939393939393939393939393939393939393939393939393939393939393939393938a7e7164574a3e3124170b000000000000000000070d161e24293035393a4145474a4c4e505152525353525151504e4c494745403a38342e27221b140b060000000000000000000000000000000000000000000000000003101d2a3643505d697683908f8275685c4f4235291c0f00000c17232e38424a5053555555555555555553514a42392e23180c0000000000000000000000000000000000000000000000000001070c13181d20252a2d2e313436373839393938373634322f2d2c2823222a31373a3c4141414141413f3d3a342d251b110600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17232e3842505a606d79828d929b9fa4ababa39f9d9c9b9c9d9fa19e97928b82796d685f6a76828f98a1a8aaa39f9995949386796c605346392d20130013202c3946535f6c7986929f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9fa39f9f9e9d9c9a9899928f8b86817b736d665e574e463c33291e140a00000000000a1723303d4a5663707d899393939393939393939393939393939393939393939393939393939393939393939393939393938a7d7164574a3e3124170b000e1a26313d4751595e5f606060606060605f514b43392f23180c0000000000000000000000000000000000000000000000000000000000000000000000000000000e1a26313d4751595e5f606060606060605f514b43392f23180c00000000000000000000000000000000000000000000000000000000000000000000000000000000000915202c38434f59606d78818c92999fa2aaa9a8aaa29f9e9e9e9fa29f98928c81786d6d798699a39f9f94877a6e6154473b2e2114080000000006121f2b37434e58626c73808b92999fa6aca49f9c989695949596989c9fa4a9a19e948f847c6f6a5f564d42382e23170c0300000000000000000000000000000000000000000000000000000810171c2023242d2d2d2d2b2a28231e170f06000000000000000000000000000000000000000000000000000000000008111b2428333f4a545c676d767979797979797570655a4d413a444d575f6a6f78797979797979726d62564a3e3124180b00000000000000030d1925303b444e58626c717e879298a0a7afa79f99938e88837f7c79777574737373747577797c7f83878d92989ea5ada59e9691857c6f6a5f564c42392e23180c030000000000000000000000030c18222c363f48505a616a6f7980868d92979c9fa2aaa7a9a8a7a6a6a6a7a8a9a8a6a7a09d9a94908a837c746d675e574d453b32291e150a0000000000000013202c3946535f6c7986929f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f978a7d7164574a3e3124170b00000000000000000810181f282f353a4145474c525456595b5c5e5f5f5f5f5f5e5e5d5b585653514b46454039332d261d180f0700000000000000000000000000000000000000000000000003101d2a3643505d697683908f8275685c4f4235291c0f0003101c28343f4a545c606262626262626262605c544a4034281c1004000000000000000000000000000000000000000000000000000001070d11141a1e20212427292a2c2c2c2c2b2a2a282522201f1c181820262b2e2f34343434343432312e29231b1309000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003101c28343f4a54616c74818e949da4aca7a09d9992908f8f8f9192999a9e9f948f837a6d666f7c88949faaaea398928c88878886796c605346392d20130013202c3946535f6c7986929facacacada7a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a6a7a8a9a7aba39f9c98928d867f786e695f584e453b30261c1106000000000a1723303d4a5663707d89969f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f978a7d7164574a3e3124170b00111d2a36424e59636a6c6c6c6c6c6c6c6c6c5c554b4034291c10040000000000000000000000000000000000000000000000000000000000000000000000000000111d2a36424e59636a6c6c6c6c6c6c6c6c6c5c554b4034291c1004000000000000000000000000000000000000000000000000000000000000000000000000000000020e1a26313b4854606b74808d939fa3ababa49f9b979892919192939a989d9f938f82786d7a8794abb4a094877a6d6154473a2e211407000000000815212e3a47535f6a717e8b929fa3aba69f9a938f8c89888788898c90939a9ea6a69f9691857c6f685e544a3f34281f1409000000000000000000000000000000000000000000000000000000050b10141617202020201f1e1b17120c0500000000000000000000000000000000000000000000000000000000000000091217222d38424b555c60696c6c6c6c6c6c69655e54493d323b454e585f626c6c6c6c6c6c6c65625b51463a2e221509000000000000010b151f2a36424d56606a717e889299a2aaafa49c959087817c77726f6d6668676766676768666c6f72767b80868e939fa3aaa8a09792867c6f685e544b40342820150900000000000000000000000b151e2a343e48505a626c717c848c92989fa2a9aca8a8a09e9c9a9a999a9a9b9d9fa3ababaaa69f9c95908781796e695e574d443b30261c110600000000000013202c3946535f6c7986929facacacaea9a7a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a4978a7d7164574a3e3124170b0000000000000008111a222a313a41454c5254565d60636668696a6b6c6c6c6c6b6a69676563605d5553514b443f382f2a21191107000000000000000000000000000000000000000000000003101d2a3643505d697683908f8275685c4f4235291c0f0006121f2c3844505c666d6f6f6f6f6f6f6f6f6d665c5144382c1f1206000000000000000000000000000000000000000000000000000000000104090e111414171a1c1e1f1f201f1e1e1d1b18161312100c0e151b1f21222727272727272524221d18110900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2b3844505c66717e8b939ea6aea59d95908a86838282838486898d92979f959083786d73808d99a6b0a89f9286807c7a7b7d7063574a3d3024170a0013202c3946535f6c7986929facb9ada39b9898989898989898989898989898989899999a9c9ea1a8a9acaaa29f98928c837b6e6a5f574d42382e23170b010000000a1723303d4a5663707d8996a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1978a7d7164574a3e3124170b00121f2c3845525e6a75797979797979797976675c5145382c1f13060000000000000000000000000000000000000000000000000000000000000000000000000000121f2c3845525e6a75797979797979797976675c5145382c1f130600000000000000000000000000000000000000000000000000000000000000000000000000000006121e2b37424e57636f7c87939fa5afa9a199938f8a878584848586888c90959e948d80747b8794a1ada093877a6d6054473a2d2114070000000713202c38444f59626f7c86929fa4afa49c948f87827f7c7b7a7b7c7f83878f949fa3a8a19791857a6e665c50443b31261a0e030000000000000000000000000000000000000000000000000000000004080a0a1313131312110f0b070100000000000000000000000000000000000000000000000000000000000000000006111c262f39434b51535d6060606060605c5a544c423729333c464e53555f606060606060585651493f34291e120600000000000007121d27313946525e696f7c86929aa3ababa39f928d837c756f6a6662605c545a5a5a5a5a545b606265696e747b818a9298a2a9a9a19891847a6e665c51453c31261a0e0500000000000000000007121d27303c46505a626c717e8691969fa2aaaba39f9b9796918f8e8d8d8d8d8f9092999a9ea1a9aba79f9a938d837b6e695e564c42382e23170c04000000000013202c3946535f6c7986929facb9aea49d9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a978a7d7164574a3e3124170b00000000000007101a242c343c434c51565d6065686d707274767778797979787877767472706d6764605c555049413c332b231910070000000000000000000000000000000000000000000003101d2a3643505d697683908f8275685c4f4235291c0f000713202d3a4653606d787c7c7c7c7c7c7c7c786d6053463a2d20130700000000000000000000000000000000000000000000000000000000000000020507080b0d0f11121313131211100e0b0907060400040a0f1215151b1b1b1b1b1b181815120c06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d7884919ea5afa69d938e837d797776757677797c80858c9298958e81747683909ca9aca0958a7e736f6e6e706b6155483c2f2316090013202c3946535f6c7986929facb9a79b918b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8c8d8d8f9196979c9fa3abaaa29f9590847c6e695e544a3f34281d13070000000a1723303d4a5663707d899494949494949494949494949494949494949494949494949494949494949494949494949494948a7d7164574a3e3124170b0013202c3946535f6c798786868686868686796d6053473a2d201407000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c798786868686868686796d6053473a2d2014070000000000000000000000000000000000000000000000000000000000000000000000000000000814212e3a47535f6a76828f9aa4afaba1979287827d7a79787778797b7f838a9196928a7e7b8895a1ada093867a6d6053473a2d2014070000000916222f3b4854606b76828f98a2aea49c928c827b7672706e6e6e7072767c828b9299a3a9a1979082786d60574d42362a20150a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141d273139404547505353535353534f4d49423930212a343c434748525353535353534c4a463f372d23180d010000000000000c18232f3943505a616e7b859198a3acaca399928b80786f6a625f585653504a4e4d4d4d4e4a505355575e61696e757e869297a2aaaaa1969082786d60574e42372b21170b0000000000000000000c18232e39424e58616c717f8a9298a0a8aba49f99928e8a8784828180808081828486898d92979ea1a8aca49f9590847b6e685e544a3f342820150a000000000013202c3946535f6c7986929facb9a99d928d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8a7e7164574a3e3124170b0000000000040e19222c363e464e555d60686d72767a7d7f8183848585868685848483817f7c7a75706d67605b534e463d352b22190d0400000000000000000000000000000000000000000003101d2a3643505d697683908f8275685c4f4235291c0f000714212e3a4754616d7a87888888888888877b6e6154483b2e21150800000000000000000000000000000000000000000000000000000000000000000000000001030405060606050403010000000000000000030608090e0e0e0e0e0e0c0b09060100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1824313e4b5764717e8a96a0acac9f948e8179716d67696869676d70747a7f869095938a7e7885929fabaa9d9184776c6261616361594f44382c2014070013202c3946535f6c7986929facb2a5988b7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f80808284878b8f92999fa7aea79f9691847b6e665c50443a2f24180d0100000a1723303d4a5663707d87878787878787878787878787878787878787878787878787878787878787878787878787878787877e7164574a3e3124170b0013202c3946535f6c7986929393939393867a6d6053473a2d201407000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929393939393867a6d6053473a2d2014070000000000000000000000000000000000000000000000000000000000000000000000000000000815222f3b4855626e7b88949facaea39992857d75716e686b6b666d6e72767d84909492857d8996a3aca09386796d6053463a2d201307000005111e2a36424d5663707d89949faaa79d928c80766e69656362616263656a6f767f879299a4a99f948c7f73695f53463c31261a0f010000000000000000000005080a0b1313131313131313131313131313131313131313131313131313131313131313131313130f0f0d09040000000000000000000000000000000000000000020b151f272f34383a4346464646464642413d3730271e222a31373a3c454646464646463f3e3a342d251b110600000000000004101c2934404b55616c76828f97a1aaafa49a92877e736d665f58534e4946443f41404040413f4446484d53565e616c717c859298a2aca89f948d80736a5f53473e33281c10040000000000000004101c2834404b545f6a717e87939fa2aaa9a199938e86827e7a777574737373747577797c80858b91969da5afa79f9691847a6e665c50443c32261b0f040000000013202c3946535f6c7986929facb3a79a8d80808080808080808080808080808080808080808080808080808080808080808080808080807c6f6255483c2f22150900000000020c16202b343e4850585f676d737a7f8386898c8e8f9192929292929191908e8b8986827d79716c655f584f473d342b20160c01000000000000000000000000000000000000000003101d2a3643505d697683908f8275685c4f4235291c0f000714212e3a4754616d7a87949595959594877b6e6154483b2e211508000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005121e2a36424d576875818e9ba8afa49a8f82786d66605d555c555c6063676d727b838f9391857b8797a2ada79a8d8074675a545557554f473e33281c10040013202c3946535f6c7986929facada093867972727272727272727272727272727272737475787a7e828790959da4aea9a1969083786d60554b4135291d110400000713202d3a4653606d787a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a796d6053463a2d2013070013202c3946535f6c7986929f9f9f9f93867a6d6053473a2d201407000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929f9f9f9f93867a6d6053473a2d2014070606060606060606060504020000000000000000000000000000000000000000000000000000000d192633404c5966737f8c99a6b0ac9f92877c6f6b64615e56545c6062656c707a8290949083909daaaca09386796d6053463a2d20130700000714202d3a46525e6976828f9ca6aca0958d80736d625f575655545556585f626d727e87939fa6a69f92867b6e61584e43372b1e13080000000000000000060c111517182020202020202020202020202020202020202020202020202020202020202020202020201c1b191510090200000000000000000000000000000000000000030d151d23292c2d363939393939393635312c261e151820262b2e2f3939393939393932312e29231b13090000000000000006131f2c3845515c67707d8a949fa9b0a69f93887e716c605c544e47433c3a38342e3433342d3338393c42464d525a616a6f7c86929aa4afa69f92877b6e62594f44392d20150a0000000000000006131f2c3845515c666f7c869299a4aea8a0979187817b75716d6869676766676768676d7073797e848e939fa4aca8a0969083786d60584e43372b20150a0000000013202c3946535f6c7986929facada0938679737373737373737373737373737373737373737373737373737373737373737373737373736f6a5f53473a2e2115080000000008131e28323d46505a616a6f7a80868b909399999b9c9d9e9f9f9f9f9e9d9c9a9898928e8a847e786e6a60594f463d32281e1308000000000000000000000000000000000000000003101d2a3643505d697683908f8275685c4f4235291c0f000714212e3a4754616d7a8794a0a2a2a194877b6e6154483b2e2115080000000000000000000000000000000000000000000000000000000000020608080b0e10121213131211100e0b0807050200000000000000000000000000000000000000000000000000000000000000000000000000020507080a0d0f1111121313131211100e0c0906050300000000000000000000000000000000000000000714202d3a46525e697885919eabac9f93877c6f665c54514b4f4b5153555d60696e79818f949083909da9b3a4988b7e7165584b484a48443e352c21160b000013202c3946535f6c7986929facada093867a6d656565656565656565656565656566666769686d71767c838d929da5afa89f958c7f72675d5145392c201307000006131f2c3845515c666d6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6d675c5145382c1f13060013202c3946535f6c7986929facaca093867a6d6053473a2d201407000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facaca093867a6d6053473a2d20141313131313131313131212110f0d0a07060401000000000000000000000000000000000000000005111e2a36424d576976838f9ca9b1a79a8d80736a605954524c4a5053555a61676d798290959095a0abaca09386796d6053463a2d20130700000814212e3b4754616e7b87939e9fa39d9083786d605b534d49484748494e535b626c727f8c949faba3988f82756a5f53473a2f24190d010000000000000911171d2124252d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d292825211b140c0300000000000000000000000000000000000000030b12181c1f202a2d2d2d2d2d2d292825211b140c0e151b1f21222c2d2d2d2d2d2d2524221e1811090100000000000003101c28343f4a54606d7984919ea6b0aa9e948c7f736c625a504a423c37322d2c282327272722282b2d31363b42465058606a707e88939fa8aea3998f82766c6155493c31261b0f00000000000004111d2935414b55606d79839098a3aba9a09691857d746e6964615d565b5a5a5a5a555c6063666d7179818b939aa4afa89f958c80736a5f54473d32271b0f0100000013202c3946535f6c7986929facada093867a6d676767676767676767676767676767676767676767676767676767676767676767676767625f584e43372b1f1206000000010d1924303a444e58616c707c848d92989c9fa4a49f9e9c9a9a99999a9a9b9d9fa3a29f9b96918b837c706b60584e443a2f24190d020000000000000000000000000000000000000003101d2a3643505d697683908f8275685c4f4235291c0f000714212e3a4754616d7a8794a0adaea194877b6e6154483b2e21150800000000000000000000000000000000000000000000000000000104090e121415181b1d1e1f20201f1e1d1a181514120e090401000000000000000000000000000000000000000000000000000000000000000105080e11141417191c1d1e1f20201f1f1e1c1b181513120f0b060000000000000000000000000000000000000815212e3b4854616e7b8797a1adaa9d9083776a5f544b4540424045474b51575f676d78828f9590959fabb0a3968a7d7063574a3d3d3c38332c231a1005000013202c3946535f6c7986929facada093867a6d6058585858585858585858585858595a5a565d60646a6f78808d939eaab1a79e92857a6d6054473a2f24180d010004101c2834404b545c606161616161616161616161616161616161616161616161616161616161616161616161616161616161605c554b4034281c10040013202c3946535f6c7986929facada093867a6d6053473a2d201407000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facada093867a6d6053473a2d20202020202020202020201f1f1e1c1a171413110d08040000000000000000000000000000000000000714202d3a46525e697885929fabaca095877b6e61584f4746413f44464850555d676e7b85929da0a7b1aca09386796d6053463a2d20130700000c1926323f4c5965727f8c8f91929996897d70665c5047423d3b3b3b3d4347515a606c77828f99a3aa9f93877c6f62564c4135291d1104000000000009121b22292d30313939393939393939393939393939393939393939393939393939393939393939393939393635312c261e150c020000000000000000000000000000000000000001070c1013141d2020202020201c1b1915100902030a0f1215151f202020202020191815120d06000000000000000006121f2b3844505c66727f8c96a0acaea2988f82776c605a50443f38302b26201f1c171a1a1a171c1f20252a30363e464e58616c73808d96a1acab9f948a7d7064584e43372b1d120700000000000613202c3945515d67737f8c95a0aaada19791847b706b615e5754524c4e4d4d4d4e4b5153545c60676d747f88939fa5afa79f92877c6f62584e43372b1d120700000013202c3946535f6c7986929facada093867a6d605a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a55534e463c31261b0f0300000005111d2935414c56606a707e8691969fa2a49f9b9993918f8e8d8d8c8d8d8f9092989a9fa2a19e9590867d706a60564c4135291e13080000000000000000000000000000000000000003101d2a3643505d697683908f8275685c4f4235291c0f000714212e3a4754616d7a8794a0adaea194877b6e6154483b2e21150800000000000000000000000000000000000000000000000001080d11151a1e212225282a2b2c2c2c2b2b2a272421211e1a14100d070100000000000000000000000000000000000000000000000000000002080d1114191e20212426292a2b2c2c2d2c2c2b29272522201f1b17110f0a040000000000000000000000000000000916222f3c4955626f7c8895a9b3a79a8d817467584e4239352f34383a40454d555c666d7a85919d9fa7b1afa396897c706356493d302f2c28211a110800000013202c3946535f6c7986929facada093867a6d60534c4c4c4c4c4c4c4c4c4c4c4c4c4d4d4c5254585f666c78818e98a2aeada2978b7e7265554b4035291d100400000c18232e39424b51535454545454545454545454545454545454585c5c5c5c5c58545454545454545454545454545454545453514b43392e23180c000013202c3946535f6c7986929facada093867a6d6053473a2d201407000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facada093867a6d6053473a2d2d2d2d2d2d2d2d2d2d2d2d2c2b2a28262421201d1913100c07000000000000000000000000000000000814212e3b4754616e7b8798a2aeaa9d908377695e53463d393634383a3e434c555e69717e8b97a1adb9aca09386796d6053463a2d20130700000a1723303d4a5663707d80828486888a84776b60544a3f37312f2e2f31373f44505b656e7b87929faca49a8e8174685d5245392c2013080000000006111b242d34393d3e46464646464646464646464646464646464646464646464646464646464646464646464642413d3730271e140900000000000000000000000000000000000000000000040607101313131313130f0f0d09040000000003060809121313131313130c0b0906010000000000000000000713202d3a4653606d7884919ea8b2a99f92867b6e655b50483e342e261e1b1312100c060d060b0f12131a1f252a343d46505a606d7984919ea8b0a69c8f83766a5f5347392e23180c00000000000714212d3a4754606d7a85929fa7b0a69e92857b6e696059524d47464141404040414045464b51555d606d727f8b939ea9afa3998f82766a605447392f24180c00000013202c3946535f6c7986929facada093867a6d60534d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4847433c342a20150a000000000713202d3946525d686f7c869298a0a7a099938f8a868482818080808081828486898d92989da59f9892867c6f685d52453a3024190d0100000000000000000000000000000000000003101d2a3643505d697683908f8275685c4f4235291c0f000714212e3a4754616d7a8794a0acaca194877b6e6154483b2e2115080000000000000000000000000000000000000000000000070c13191d20262b2e2f3234363839393938373634312e2d2a25201d18120c0400000000000000000000000000000000000000000000000002090e13191e20252a2d2e30333537383839393938373634322f2d2b27221b1b16100b04000000000000000000000000000a1723303d4a5663707d8996a3b0a6998c7f7366594c402f2924292c2f353b434b545d68707d8a959fabb7afa396897c706356493d3023201c1610080000000013202c3946535f6c7986929facada093867a6d6053473f3f3f3f3f3f3f3f3f3f3f3f40414145474e545b666d7a85929fabb3a99c908376675d5145392c201306000007121d2730394045464747474747474747474747474747505a6264686868686865625b5147474747474747474747474747474645403930271d1207000013202c3946535f6c7986929facada093867a6d6053473a2d201407000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facada093867a6d6053473a3939393939393939393939393938373533312d2c29241f1c18120c060000000000000000000000000000091623303c4956636f7c8996aab4a79a8e817467574d42342d2a282b2d313a434d57606d7985929eabb8aca09386796d6053463a2d20130700000916222f3c4854606b70737577797b7d7d7063594f42382e26222122262b333f49535f6974818e9aa6ac9f92867a6d6054473a2f24190d010000000c17222d363e45494b5353535353535353535353535353535353535353535353535353535353535353535353534f4d49423930261b10040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111e2a36414c5664707d8a96a1adada1978c7f72695e53493f3628231c140c0a060300000000000306090e1419222b343e45515d67717e8a96a0acab9f94887c6f62544b4034281c100400000006131f2b37434e5866727f8c97a2adaa9e948a7d70695f574f46423b3935303433342e34383a40454b515b626d74818e97a1adab9e94897c6f62554b4035291d1004000013202c3946535f6c7986929facada093867a6d6053474040404040404040404040404040404040404040404040404040404040404040403c3a37312a22180e0400000005121e2a36424d57616d7a859298a3a69f959087827d7a77767474737373747577797d80868e929ba3a29891847a6d60564c4135291d110400000000000000000000000000000000000003101d2a3643505d697683908f8275685c4f4235291c0f000714212e3a4754616d7a87949f9f9f9f94877b6e6154483b2e211508000000000000000000000000000000000000000000030b12181e24292c31373a3b3e414345454646454443413e3b3a36312c29241d160d0802000000000000000000000000000000000000000000070c141a1e252a2d3036393b3d4042444445464646454443413f3c3937332d2b27201b160d070100000000000000000000000a1724313d4a5764707d8a97a3b0a5988c7f7265594c3f2e23181c1f24293139424c56616c7683909da9b3afa396897c706356493d302316100b05000000000013202c3946535f6c7986929facada093867a6d6053473a3232323232323232323233332f35393c424a545e68737f8c99a9b2ac9f9286796d6053473a2d2014070000000b151e272e34383a3b3b3b3b3b3b3b3b3b3b3b3b3b4956626c717575757575726d62564a3b3b3b3b3b3b3b3b3b3b3b3b3b3a38342e271e150b00000013202c3946535f6c7986929facada093867a6d6053473a2d201407000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facada093867a6d6053474646464646464646464646464645454442403d3a39352f2c28231d17110a030000000000000000000000000a1724313d4a5764707d8a97a3b0a5988c7f7265594c3f31261e1c1f2028313b45515c6673808d99aab4aca09386796d6053463a2d20130700000714202c38444f5960636669666d6f71706b6054473d30262c2c2c2b2a222d38414d57626e7b88949faba3988b7e7265554c4135291d1104000005111d29343e485056586060606060606060606060606060606060606060606060606060606060606060606060605c5a544c42372c21150900000000000002070a0c0d131313131313120908060300000000060b0e10111313131313130f07060300000000000000000000000000000000000000000000000714202d3946525e6876828f9ca8b2ab9e9185796d60574d41382d2417110a02000000000000000000000002091019222935404b55606c7884919dabb0a69a8e8174665c5145382c1f13060000000815222e3b4754606a7884919ea9b1a79c8f82756c61574d453d36302d292427272723282c2e343a4145515b606d7a85929eaab0a69b8e8275675d5145392c1f1306000013202c3946535f6c7986929facada093867a6d6053473a34343434343434343434343434343434343434343434343434343434343434342f2e2b2620181006000000000714212d3a46535f6974808d97a1a99f948f837c75706d686967676666676768666d70747a818b919ba5a1968d8074685d5245392c20130700000000000000000000000000000000000003101d2a3643505d697683908f8275685c4f4235291c0f000714212e3a4754616d7a87939393939393877b6e6154483b2e2115080000000000000000000000000000000000000000060c151d23282f35393c4247484b4e50515253535251504d4b4846423b39352f281f19130c04000000000000000000000000000000000000030b12181f252a3036393b4146474a4c4f50515253535252514f4e4b4846443f3837322c272118130c04000000000000000000000a1723303d4a5663707d8996abb5a6998d807366544a403428211e1a181f27303a44505a64707d8a97a2adafa396897c706356493d3023160a0000000000000013202c3946535f6c7986929facada093867a6d6053473a2d252525252525252525262724292c2f38424c56626f7b8896a1adaea399897c6f6256493c2f231609000000030c151d23282c2d2e2e2e2e2e2e2e2e2e2e2e313e4b5864717e82828282827f7265584c3f322e2e2e2e2e2e2e2e2e2e2e2d2c28231d150c0300000013202c3946535f6c7986929facada093867a6d6053473a2d201407000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facada093867a6d605353535353535353535353535353535252514f4d4a4745413a38342e28231c150c0700000000000000000000000b1824313e4b5764717e8a97a4b0a4978a7d7164574a3e3124171012161f2834404b54626f7c8998a3aeaca09386796d6053463a2d201307000004101c27333d474f54565a545c6062646360594f44353638393939383734312f3c47535f6a76838f9ca9aa9c908376675d5145392c20130600000815212d3945505a62646c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c69655e54493d3125190d0000000000070d1316191a2020202020201f1515120f0a04040b11171a1d1e2020202020201c1312100b060000000000000000000000000000000000000000000814212e3b4754616e7a87939facafa3998c7f72675d51453b2f261b1206000000000000000000000000000000071018242f3944505b66727e8b99a3aeac9f9285796d6053463a2d2013080000000916222f3c4955626f7c8896a1acaca095897c6f625a50453b332a25201d191a1a1a181c1f23282f353f45515d67727f8b98a2aeac9f9286796d6053473a2d201406000013202c3946535f6c7986929facada093867a6d6053473a2d2727272727272727272727272727272727272727272727272727272727272722211f1b150e0600000000000815222e3b4855616e7b86929fa9a1978f82796e6a64615d565b5a5a595a5a545c6063686d747f8b939ea89f92867a6d6054473a2d21140700000000000000000000000000000000000003101d2a3643505d697683908f8275685c4f4235291c0f000714212e3a4754616d7a86868686868686867b6e6154483b2e211508000000000000000000000000000000000000000810181e272e343a4145474d5355585b5d5e5f5f5f5e5e5d5a5754534d474540393129251e160e0500000000000000000000000000000000050c151c232830363a4146474d525457595c5d5e5f5f605f5f5e5c5a585553504947433d383229241d160d060000000000000000000915222f3c4855626f7b8899a3afa89b8f8275665c51443a322d2b2627272628323e4653606d7985929fabafa396897c706356493d3023160a0000000000000013202c3946535f6c7986929facada093867a6d6053473a2d201919191919191919191a191d20262f3a47535f6a7885919eabb5ab978b7e7164584b3e3125180b00000000030b12181c1f20212121212121212121212734404d5a6773808d8f8f8f8e8174685b4e41352821212121212121212121201f1c18120b030000000013202c3946535f6c7986929facada093867a6d6053473a2d201407000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facada093867a6d606060606060606060606060606060605f5e5d5b595754514c46454039342e261e191009000000000000000000000b1825313e4b5864717e8b97a4b0a396897d7063564a3d3023170a060d18232e3a4653606d7986929facaca09386796d6053463a2d2013070000000b16212b353d44484a4d4b5153555756544f473e4143454646464543413e3a39424e5765727e8b98a7ac9f92867a6d6054473a2d21140600000a1724303d4956626c717979797979797979797979797979797979797979797979797979797979797979797979797570655a4d4135281b0f000000010a12191e2325262d2d2d2d2d2d2c22211f1b150e0e161d22272a2a2d2d2d2d2d2d29201f1c17110a02000000000000000000000000000000000000030f1b27333f495364717e8b9aa4afac9f92867a6e61554b4033291d140a000000000000000000000000000000000007121d28333f4a54616d7a86929facaea298897d706356493d2f24190d0100000d1a2633404d596673808c99a8b2aa9d9083776a6054483e332a211a14110d080d070c1013181d242935414c55606d7985929fabaea2988a7d7164574a3e2e23170b000013202c3946535f6c7986929facada093867a6d6053473a2d201a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1515120f0a04000000000004101c2934404b556673808c99a2a99e91857a6d675f5854524c4e4d4d4d4d4e4b5153565d606d75818e9ba9a2988b7e7164584b3e3125180b00000000000000000000000000000000000003101d2a3643505d697683908f8275685c4f4235291c0f000713202d3946525e6876797979797979797976695e52463a2d20140700000000000000000000000000000000000009121a222a303940454c5254575f626567696b6c6c6c6b6a696764615e5753514b433e35302820170e050000000000000000000000000000050e171e272e343b42464c5254565e616366686a6b6b6c6c6c6b6a69676562605b53544e48443d352f281f180f0600000000000000000714202d3a4753606d7a86929facab9e9285796d60564c443d3a373134333332323845515c6675828f9ca8afa396897c706356493d3023160a0000000000000013202c3946535f6c7986929facada093867a6d6053473a2d20140c0c0c0c0c0c0c0c080d11141d2b37434e58697683909ca9b2a5988c7f7265594c3f3226190c000000000000070c1013131414141414141414141a2734404d5a6773808d9a9b9b8e8174685b4e4135281b1414141414141414141313100c0700000000000013202c3946535f6c7986929facada093867a6d6053473a2d201407000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facada093867a6d6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6b6a686664605d5553514b443f38302b221b120a0100000000000000000b1825323e4b5865717e8b98a4afa296897c6f6356493c302316090007131f2c3845515c667683909da9aca09386796d6053463a2d201307000000050f1a232b33383c3d40404546484a494845474a4d505152535252504e4b4746414754616e7a8795a0aca3998a7d7064574a3d2e23170b00000b1825313e4b5864717e8686868686868686868686868686868686868686868686868686868686868686868686868275695c4f4236291c0f0000000a131c242a2f3233393939393939392f2e2b2620181720272e333637393939393939352d2b28231c140c02000000000000000000000000000000000005121f2b3744505b6575818e9bacb6a99c8f8276685e5243392f21170b020000000000000000000000000000000000010b17222d3846525d6875828f9ca8b4aa9a8d807367564c4135291d11040005111e2a36424d576976838f9ca9b5ab998c7f7366584e43362c21180f0905010000000004070c1319242f3a45515d6774818e9aa7b4aa9b8e817468544a3f34281c10030013202c3946535f6c7986929facada093867a6d6053473a2d20140d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d090806030000000000000006131f2c3845515c6777848f929797988b7f72685d554e4746414141404040414045464c525b626f7c8897a2aa9b8e8174685b4e4135281b0e02000000000000000000000000000000000003101d2a3643505d697683908f8275685c4f4235291c0f0005111d2a36414c565e6c6c6c6c6c6c6c6c6c6c5e574d42362a1e1205000000000000000000000000000000000009121a242c343c434b51565d6066696e7174767878797978777674716e6965605d555046413a322920170e05000000000000000000000000050e172029303940444d52565e6165686e70737577777879797978777674726f6c65626058544f45413a312a21180f060000000000000006131f2c3945515d677783909dabada1978a7e71685e564f484742424140403f3f3f404b546673808c99a6afa396897c706356493d3023160a0000000000000013202c3946535f6c7986929facada093867a6d6053473a2d201407000000000000000001040b1b2631424f5c6875828f9ba8b2a6998c7f7366594c403326190d000000000000000004060708080808080808080d1a2734404d5a6773808d9aa69b8e8174685b4e4135281b0e0808080808080808070604000000000000000013202c3946535f6c7986929facada093867a6d6053473a2d201407000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facada093867979797979797979797979797979797979797878777573706d6764605c54504a423d342d241c130a01000000000000000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f2316090004101c2834404b546875828f9ba8aca09386796d6053463a2d2013070000000008111a21272c2f302e34383a3c43474b5154575a5c5e5f5f5f5e5d5a5854524c48525e687784919daaab9a8d807467544a3f34281c1003000b1825313e4b5864717e8b939393939393939393939393939393939393939393939393939393939393939393938f8275695c4f4236291c0f000007121c252e353b3f40464646464646453c3a37312a22202932393f4344464646464646423a38342e261e140a00000000000000000000000000000000000613202d394653606c7885929eabb3a9988b7f7265564c4131271d0f050000000000000000000000000000000000000006111c2935414c5665727f8b98aab4aa9d918477685d5245392c201306000714202d3a46525e697885929eabafa399897c6f6256493d32231a0f060000000000000000000108131e2935404b5564707d8a97a9b3aa9d908377665c5044382b1f12060013202c3946535f6c7986929facada093867a6d6053473a2d2014070101010101010101010101010101010101010101010101010101010100000000000000000000000714202d3a4753606d79808285878a8c86796d60564c433c393530343333342e34383a4147535f6a7885929fa99d9083766a5d5043372a1d1004000000000000000000000000000000000003101d2a3643505d697683908f8275685c4f4235291c0f00010d1925303a444c525f60606060606060605f524d453b30251a0e020000000000000000000000000000000007111a242c363e464e555c60686d72777b7e818384858686858483807e7b76716d67615a524c443b332920170b0200000000000000000000040d172029323b424a51575e61686d72777a7d7f82838485868685858482817e7b78746f6a636059514b433b332a21180d0400000000000004101d2935404b5566737f8c99a3aea99e91847a6d68615955534d4f4e4d4c4c4c4b4b4c5865727f8b98a5afa396897c706356493d3023160a0000000000000013202c3946535f6c7986929facada093867a6d6053473a2d201407000000000000000001040a1b2835424e5b6875818e9ba8b2a5988b7f7265584c3f3225190c000000000000000000000000000000000000010d1a2734404d5a6773808d9aa69b8e8174685b4e4135281b0e0200000000000000000000000000000000000013202c3946535f6c7986929facada093867a6d6053473a2d201407000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9a2958b86868686868686868686868686868686868685858482807d7a76716d66605c544e463f372e251c1309000000000000000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000c18232e414e5b6874818e9ba7aca09386796d6053463a2d2013070000000000080f161c2022232a313a41454e53555d606467696b6c6c6c6b6a6764615d56544f566774818d9aa7a99c908376665c5044382b1f1206000b1825313e4b5864717e8b979f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9c8f8275695c4f4236291c0f00020d19242e3740474b4d535353535353524847433c342a21323b444a4f515353535353534f46443f3830261c1106000000000000000000000000000000000815222e3b4855616e7b8897a1adada197887b6e6255483b3022150b0000000000000000000000000000000000000000000d1924303c4855626f7b8898a2aeaca095877a6d6054473a2d211407000814212e3b4754616e7b8797a2adac9f92867a6d6053473a2d2014070000000000000000000000010d18242f3b4754616e7a8797a1adac9f9286796d6053463a2d2013070013202c3946535f6c7986929facada093867a6d6053473a2d20140700000000000000000000000000000000000000000000000000000000000000000000000000000006131f2c3845515c676d7376787b7d807f73675d51443a312d29242727262723282c3037434e586a7784919daa9e9184776b5e5144382b1e1105000000000000000000000000000000000003101d2a3643505d697683908f8275685c4f4235291c0f000008131e28323a41465353535353535353534846423b33291f140900000000000000000000000000000000050e19232c363e4850585f676d737a7f84888b8e90919292929191908d8a87837e79716c615e564d453b32291d140a000000000000000000010c161f29323b444c545c60696e757a7f83878a8c8f90919292939292918f8d8b8885817c76706b605d554d453c332a20160c010000000000000c18242f3b4854616e7b86929fa8ada19690827a706b65615f575c5a5a5959585858585865717e8b98a4afa396897c706356493d3023160a0000000000000013202c3946535f6c7986929facada093867a6d6053473a2d20140a0a0a0a0a0a0a0b070d10141b2a36414c566976828f9ca9b4aa978a7e7164574b3e3124180b000000000000000000000000000000000000010d1a2734404d5a6773808d9aa69b8e8174685b4e4135281b0e0200000000000000000000000000000000000013202c3946535f6c7986929facada093867a6d6053473a2d20140b0b0b0b0b0b0b0b0b0a0a0907060401000000000000000000000000000000000000000000000013202c3946535f6c7986929facb9a79d959393939393939393939393939393939399939291908e8c8a86837e79726d666058514940372e251b10070000000000000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f2316090000071a2734404d5a6773808d9aa6aca09386796d6053463a2d201307000000000000050b1019232b343c434c52585f62676d71747678797979787674716d686360595865717e8b98a4ac9f9285796d6053463a2d201307000b1825313e4b5864717e8b97a4a5a5a5a5a5a5a5a5a5a5a5a7a9aeacacacafa9a7a5a5a5a5a5a5a5a5a5a5a59c8f8275695c4f4236291c0f0007131e2a3540495257596060606060605f55534e463c332939444d555b5d6060606060605c53504a42382e2317130a0000000000000000000000000000000a1724303d4a5763707d8a96a9b3ab9e928578695f53473a2e2114030000000000000000000000000000000000000000000813202d394653606c7985929facb1a795897c6f6256493c2f231609000916232f3c4956626f7c8995a9b3aa9e918477675d5145382c1f13060000000000000000000000000714202d3946525e687885919eabaea398887b6e6255483b2f2215080013202c3946535f6c7986929facada093867a6d6053473a2d20140c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c07060401000000000000000000000004101c2934404b555c606769696e7073736d63554b403228201d191a1a1e21262b30363e46525e697885919eab9e9184786b5e5145382b1e1205000000000000000000000000000000000003101d2a3643505d697683908f8275685c4f4235291c0f00000c17232e38424a5053555555555555555553514a42392e23180c000000000000000000000000000000020d17202b353e48505a616a6f797f868c9195989a9c9e9f9f9f9e9d9c9a9795908b857e766d685e574d443b2f261b1106000000000000000007121d28313b444d565e666d727b81868c909596999b9d9e9e9f9f9f9e9d9c9a9897918d89837d746d675f574d453c32281e13080000000000000714202d3a46525e6974808d96a1a9a89f9590847d77726e696a6867666665656565646465717e8b98a4afa396897c706356493d3023160a0000000000000013202c3946535f6c7986929facada093867a6d6053473a2d2016161616161616171718181d20262d3946525e687784909daaaea298897c6f6356493c30231609000000000000000000000000000000000000010d1a2734404d5a6773808d9aa69b8e8174685b4e4135281b0e0200000000000000000000000000000000000013202c3946535f6c7986929facada093867a6d6053473a2d20181818181818181818171716151413110d080705020000000000000000000000000000000000000013202c3946535f6c7986929facb9afa7a2a09f9f9f9f9f9f9f9f9f9f9f9f9f9f9fa49f9f9e9d9b9999928f8b857f786f6a625b514940372d22190c0300000000000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d201307000000000000050e19222b353d464e565d606a6f747a7d8083848586858583817e7a76706b625f626f7c8995aaaea298887b6e6255483b2f221508000b1825313e4b5864717e8b979898989898989898989898989a9da4aebaafa59d9a9898989898989898989898988f8275695c4f4236291c0f000a16232f3b47525b63666c6c6c6c6c6c6c625f584e453b323f4a555f676a6c6c6c6c6c6c68605c544a3f3428251c120900000000000000000000000000000c1926323f4c5965727f8c98a5b2a99c8f837669574d42372b1e120600000000000000000000000000000000000000000006121f2b3844505b667783909daab1a4978b7e7164584b3e3125180b000a1723303d4a5663707d8996a3b0a99c90837669554b4035291d100400000000000000000000000005111e2a36414c566a7683909da9b4aa96897c6f6356493c302316090013202c3946535f6c7986929facada093867a6d6053473a2d2019191919191919191919191919191919191919191919191919191413110d0701000000000000000000000c18232f39434b51535a575e61646666635b5143392f20191d2021262b2e31373a41464f59616e7b8796a1aa9d9083776a5d5044372a1d1104000000000000000000000000000000000003101d2a3643505d697683908f8275685c4f4235291c0f0003101c28343f4a545c606262626262626262605c544a4034281c1004000000000000000000000000000008141e29323d47505a616c717c848c92989da0a7a7a7a4a3a2a1a2a4a6a7a79f9d97918a827a6e695e564c41382d22170b01000000000000010d18242f39434d565e686e787f868e92999da0a7a6a8a7a5a4a3a3a4a5a7a9a7a9a19e9a94908981796e695f574d443a2f24190d04000000000005121e2a36424d57606d79849197a1a9a79f969189837f7b78767574737372727271717171717e8b98a4afa396897c706356493d3023160a0000000000000013202c3946535f6c7986929facada093867a6d6053473a2d232323232323232324242524292c2f38404b55616e7a86939facac9f9285796d6053463a2d201307000000000000000004060708080808080808080d1a2734404d5a6773808d9aa69b8e8174685b4e4135281b0e0808080808080808070604000000000000000013202c3946535f6c7986929facada093867a6d6053473a2d242424242424242424242424232221201d191514120e0903000000000000000000000000000000000013202c3946535f6c7986929facb9b3a9a19e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9e9fa2aaa2a5a8aba39f9c97928c837c726d635b51493f342b1e150b00000000000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d2013070000000000020c17202b343d474f585f686d747c81868a8d8f9192929291908d8b86827d766f6a616d7a8798a2aeaa968a7d7063574a3d3024170a000b1825313e4b5864717e8b8b8b8b8b8b8b8b8b8b8b8b8b8b8d929da9b5a99d938e8b8b8b8b8b8b8b8b8b8b8b8b8b8275695c4f4236291c0f000c1925323f4b57636d73797979797979786f6a5f574d443a434f5b677177797979797979756d665c504440372d241b1108000000000000000000000000000e1b2834414e5b6774818e9aa7b3a79a8d8074675a4d4131261a0e02000000000000000000000000000000000000000000030f1c28333f4a546875818e9ba8b3a6998d8073665a4d4033271a0d000b1724313e4a5764717d8a97a4b0a89b8f8275685c4f422f24180c00000000000000000000000000010d192530424f5c6875828f9ba8b0a3968a7d7063574a3d3024170a0013202c3946535f6c7986929facada093867a6d6053473a2d26262626262626262626262626262626262626262626262626262621201d18130c0400000000000000000007121d2731394045474d4d535457595957514940312720252a2d2e31373a3c42464c5259616b73808d99a9aa9b8e8175685b4f4235281c0f02000000000000000000000000000000000003101d2a3643505d697683908f8275685c4f4235291c0f0006121f2c3844505c666d6f6f6f6f6f6f6f6f6d665c5144382c1f120600000000000000000000000000020b1925303b444f59616c717e8691969fa2aaa9a19e9b9796959595979a9ea1a8a9a19e948f837b6e685e53493f33271e130800000000000004101d2935404b555e696e7a838c92989fa3ababa39f9d9a9897969697989a9d9fa3ababa69f9c938e847b6e695f564c41352921160a0000000000020e1a25303b45515d676f7c8591979ea5a8a09e95908b8885838281807f7f7f7e7e7e7e7d7d808d9aa7afa396897c706356493d3023160a0000000000000013202c3946535f6c7986929facada093867a6d6053473a3030303030303030303031312f35393c4149515d67727e8b99a4afa79c8f8275665c5145382c1f1306000000000000070c1013131414141414141414141a2734404d5a6773808d9aa69b8e8174685b4e4135281b1414141414141414141313100c0700000000000013202c3946535f6c7986929facada093867a6d6053473a31313131313131313131313131302f2d2c292422211e1a14100b0600000000000000000000000000000013202c3946535f6c7986929facb9ada1979292929292929292929292929292929292989495989b9fa3aaa9a19e9591877f736d635b51463c30271d1207000000000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d201307000000000008131e29323d464f59606a6f7a81878e92989a9c9e9f9f9f9e9d9a99928f89837c726d687885929faba5988b7f7265584c3f3225190c000815222f3b4855626e7c7f7f7f7f7f7f7f7f7f7f7f7f7f7f808d9aa7b4a79a8e807f7f7f7f7f7f7f7f7f7f7f7f7f7d7063574a3d3024170a000d1a2633404d59667380868686868686857c6f695e564c4344515d6a778386868686868682786d605c52493f362d231a1107000000000000000000000000101c2936434f5c6976828f9ca9b2a5998c7f7266594c3f3326190900000000000000000000000000000000000000000000000b17222d404d5a6773808d9aa6b3a89b8e8175685b4f4235281c0f000b1825313e4b5864717e8b97a4b1a89b8e8275685b4f4235281c070000000000000000000000000000081b2835414e5b6874818e9ba7b0a4978a7d7164574a3e3124170b0013202c3946535f6c7986929facada093867a6d6053473a333333333333333333333333333333333333333333333333333333332d2c29241d160d040000000000000000010b151f272f34383a404246484a4d4c4b464037292c2d3036393a3e4247484d53565e616b707d87929faca2988b7e7265584b3f3225180c00000000000000000000000000000000000003101d2a3643505d697683908f8275685c4f4235291c0f000713202d3a4653606d787c7c7c7c7c7c7c7c786d6053463a2d201307000000000000000000000000000a141d2a36414c56606b717e879298a0a8a8a19e97928e8b898888898a8d91969ea1a8a69f9591847a6e655b50443a2f24190d0000000000050f1a232c3945515d676e7b8490959fa2aaa9a19e9992908d8b8a89898a8b8d9092999ea1a9aba59e9691847b6e685d52453d32271b0f03000000000009141f2935414b555f6a6f7c858f939c9fa4a79f9d989892908f8d8d8c8c8b8b8b8b8a8a8a8d929da9afa396897c706356493d3023160a0000000000000013202c3946535f6c7986929facada093867a6d6053473d3d3d3d3d3d3d3d3d3d3d3e3e3f4045474e535b606d7984919eababa0958a7d7164544b4034281c100400000000030b12181c1f20212121212121212121212734404d5a6773808d9aa69b8e8174685b4e41352821212121212121212121201f1c18120b030000000013202c3946535f6c7986929facada093867a6d6053473e3e3e3e3e3e3e3e3e3e3e3e3e3d3d3c3a39352f2e2d2a261f1c17110a020000000000000000000000000013202c3946535f6c7986929facb8ab9e9285858585858585858585858585858585858687898b8e92989fa2aaa7a099928b7f736d62584e43392e23180c000000000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d20130700000000010d1925303a444e58606b707c848e939a9fa2aaa9a8a4aba39fa3aba39f9c9490877f746d7784919daaa69a8d8073675a4d4034271a0d000814212e3a47535f6a6e72727272727272727272727272727d8a96a3b0a3978a7d72727272727272727272727272706b6155483c2f231609000a1623303d495663707d87929a93939791847b6e685e554b424d5a6774808d93939393938e81746e635b51483f352c231910060000000000000000000000101d2a3643505d697683909ca9b1a4978a7e7164574b3e3124180b0000000000000000000000000000000000000000000000061926323f4c5965727f8c98a5b2a89c8f8275695c4f4236291c0f000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2834414e5b6774818e9aa7b1a4978b7e7164584b3e3125180b0013202c3946535f6c7986929facada093867a6d6053473f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3a39352f281f160c010000000000000000030d151d23292c2d31363a3b3d40403e3b352f35393a3d4146474a4d5355575f61686d747d869299a3a79f92867a6d6154473a2e21140700000000000000000000000000000000000003101d2a3643505d697683908f8275685c4f4235291c0f000714212e3a4754616d7a87888888888888877b6e6154483b2e21150800000000000000000000000006111b262f3846525e68707d879299a3aaa49d96918a85817e7d7b7b7c7d80848a91969fa7a7a0968f82776c60564c4135291c1106000000000b16212c38444f59606d798390969fa7aea59d97918c8683817e7d7d7d7d7e8083868c91979ea5ada8a09691847a6d60594f43382c1f14090000000000020d18242f3a434e585f6a6f7a82898f93999c9fa2aaa29f9d9b9a999998989898979797979a9da4aeafa396897c706356493d3023160a0000000000000013202c3946535f6c7986929facada093867a6d605349494949494949494949494a4a4b4c4b5153585f656c74808d96a1aca4999083786c605346392e23180c00000000030c151d23282c2d2e2e2e2e2e2e2e2e2e2e2e34404d5a6773808d9aa69b8e8174685b4e41352e2e2e2e2e2e2e2e2e2e2e2d2c28231d150c0300000013202c3946535f6c7986929facada093867a6d60534b4b4b4b4b4b4b4b4b4b4b4b4b4a4a49484745413f3b3a36312b28231c140c0701000000000000000000000013202c3946535f6c7986929facada093867978787878787878787878787878787878797a7c7f82868c92989fa7aba39f918b7f726a60554b4034281d12070000000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d2013070000000005111d2a36414c56606a707d8691969fa4acaaa29f9b979599929994979a9e9f99928c81787683909ca9a79b8e8174685b4e4135281b0e0006121e2b37424e575f6265656565656565656565656565707d8a96a3b0a3978a7d706565656565656565656565656361594f44382c201407000916222f3b4854606b717e88939fa4a19691847a6d675d544a4653606c78818e949fa69d938d80736d635a50473e352b22180f0600000000000000000000111e2a3744515d6a7783909daab0a3968a7d7063574a3d3024170a00000000000000000000000000000000000000000000000b1825323e4b5865717e8b98a4b1a99c908376695d5043362a1d10000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b0013202c3946535f6c7986929facada093867a6d60534c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4745413a31281d1307000000000000000000030b12181c1f20252a2d2e3133332f34383a4045474a4c525457575f6265696e737a81889298a2a8a0958d8073685d5246392d20130700000000000000000000000000000000000003101d2a3643505d697683908f8275685c4f4235291c0f000714212e3a4754616d7a87949595959594877b6e6154483b2e2115080000000000000000000000000b17222d38414f59616e7a859299a3aba49c928d847e787471706f6e6f7173787d8490959fa8a89f948c7f72685d5245382d22170b00000004101c27333c4854606b74818e95a0a8ada39c938e857f7b777472717070717274777a7f858e939ca4ada9a0968e81746b6054483b31251a0e02000000000007131d28313c464e585f686d757c82878b8f929897999a9b9c9d9d9d9e9e9e9e9f9f9f9fa3abacb5afa396897c706356493d3023160a0000000000000013202c3946535f6c7986929facada093867a6d6056565656565656565656565657575859555d60646a6f77808d929da8a59f93877d70655b5044372b1d1207000000000b151e272e34383a3b3b3b3b3b3b3b3b3b3b3b3b404d5a6773808d9aa69b8e8174685b4e413b3b3b3b3b3b3b3b3b3b3b3b3a38342e271e150b00000013202c3946535f6c7986929facada093867a6d6057575757575757575757575757575757565554514c4c4846423b38342e261e18120b030000000000000000000013202c3946535f6c7986929facada093867a6d6b6b6b6b6b6b6b6b6b6b6b6b6b6b666d6d6f72757a808590959fa6aea49f92877c6f675c5145392e23180c0000000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d201307000000040f19232d3946525e686f7c869298a1a8aba39f98928e8a88878686888a8e92979f9f938d8075828f9ba8a89c8f8275695c4f4236291c0f00020e1a26313c454e535558585858585858585858585863707d8a96a3b0a3978a7d7064585858585858585858585857554f473e33281c1004000713202c38444f59616c727f8b929ca5a0969083796d665c5349505b666d78828f959fa59c928c7f726c625a50473d342a21180e05000000000000000000111e2b3844515e6b7784919eaaafa396897c706356493d3023160a00000000000000000000000000000000000000000000000b1824313e4b5764717e8a97a4b1aa9d9083776a5d5044372a1d11000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b0013202c3946535f6c7986929facada093867a6d605959595959595959595959595959595959595959595959595959595959595954514b433a2f24180d0100000000000000000001070c1013141a1e2124293036394045474b515357565e616467696e72767b80858d939aa2a79f969183796d60564c4135291d110500000000000000000000000000000000000003101d2a3643505d697683908f8275685c4f4235291c0f000714212e3a4754616d7a8794a0a2a2a194877b6e6154483b2e2115080000000000000000000000030f1b27333f4953616b75828f97a1aba49c918c8079716c66646362626264666c707a839096a0aca69f92857a6d60544a3f33281c0f0300000714202c38444f5963707d89939ea7aea49c918c817a726e686765646363646567686e737a818c919ca5afa89e93897c6f63574d42362a1e12050000000000010c161f2a343c464e565e616b6f757b7f8285888a8c8d8f8f9090919191919292929292999ba3acafa396897c706356493d3023160a0000000000000013202c3946535f6c7986929facada093867a6d636363636363636363636363636364646668676d71757c828d929da4a49f938c7f726b6053493f33271b0b0000000007121d273039404546474747474747474747474747474d5a6773808d9aa69b8e8174685b4e474747474747474747474747474645403930271d1207000013202c3946535f6c7986929facada093867a6d64646464646464646464646464646464646362605d555855534d46443f383029231d150d0500000000000000000013202c3946535f6c7986929facada093867a6d605f5f5f5f5f5f5f5f5f5f5f5f5f5c60616265686d737b838f949fa7afa3999183796d60544b4034281c100400000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d2013070000000a16212c38444f59616d7a849198a2aaaaa299928d85817d7b7a79797b7d81858b92979d928a7e818e9ba7a99d9083766a5d5043372a1d1000000915202a333c4247484c4c4c4c4c4c4c4c4c4c4c5763707d8a96a3b0a3978a7d7064574c4c4c4c4c4c4c4c4c4c4a48443e352c21160b000004101c27323d47505a626d73808c929da59f958f82786d655b504a545c666d79839096a0a49c918b7e716c61594f463c332a20170d040000000000000000121f2b3845525e6b7885919eabafa296897c6f6356493c3023160900000000000000000000000000000000000000000000000a1724313d4a5764707d8a97a3b0aa9e9184776b5e5144382b1e11000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b0013202c3946535f6c7986929facada093867a6d6666666666666666666666666666666666666666666666666666666666666666605d554b4135291d1104000000000000000000000000040610181f272f353b41464b5153555d606467686d7174777b7f83888d92989fa4a39f9590847b6e675d51443a3024190d0100000000000000000000000000000000000003101d2a3643505d697683908f8275685c4f4235291c0f000714212e3a4754616d7a8794a0adaea194877b6e6154483b2e211508000000000000000000000005121f2b3744505b65707d8a939ea9a79d928c7f746d67605b5456555556545b60686d7984919da6aea2988c7f72665b5044382b1f120600000916222f3c4854606b7783909da5afa89d928c7f746d68615e56585756565758565e61686d747f8c939da9afa59c8f8276695e53463a2d211407000000000000040d18222a343c444c52596063696e7276797b7d7f81828383848484848585858585868b909ba7afa396897c706356493d3023160a0000000000000013202c3946535f6c7986929facada093867970707070707070707070707070707071717274767a7d82878f949da4a099938c80746d63594f41382d22170b000000000c18232e39424b515354545454545454545454545454545a6773808d9aa69b8e8174685b545454545454545454545454545453514b43392e23180c000013202c3946535f6c7986929facada0938679717171717171717171717171717171717170706f6d676865615f5753504a423d342f271f170e05000000000000000013202c3946535f6c7986929facada093867a6d605352525252525252525252524a50535456565e61696e78828f95a0acaba0958b7f72665c5145382c1f130600000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d2013070000030f1b27323c4855606b75818e96a1aaaaa2989287807a75716e6d676d6e7074797f858f949e9185818e9ba8aa9d9084776a5d5144372a1e110000030e18212a31373a3b3f3f3f3f3f3f3f3f3f3f4a5763707d8a96a3b0a3978a7d7064574a3f3f3f3f3f3f3f3f3f3d3c38332c231a10050000000b16212b353e48515b636e74808e939ea69f948e81776c605b514b545d676d7a849196a1a39f92877e706b60584e453b322920160d0300000000000000121f2b3845525e6b7884919eabafa296897c6f6356493c3023160900000000000000000000000000000000000000000000000b1724313e4a5764717d8a97a4b0aa9d9184776a5e5144372b1e11000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b0013202c3946535f6c7986929facada09386797272727272727272727272727272727272727272727272727272727272727272726d675d5145392c201306000000000000000000000000071019222a313940454d52555c6064676d7074777a7d8184888c90959a9fa2a39f98928c837b6e695e554b4032281e13080000000000000000000000000000000000000003101d2a3643505d697683908f8275685c4f4235291c0f000714212e3a4754616d7a8794a0adaea194877b6e6154483b2e21150800000000000000000000000613202d394653606c7883909da6aca0958d80736d605c55504a4a4848494a50565d676f7d89949facaa9e9185786c605346392d2013060004101c2834404b5463707d8995a0acaca0968d80736d605d56524d4b4a4a4a4a4b4c52565d606d74818e97a2adab9f94877b6e6154483b2e211507000000000000050e171e252a323a41464f54575e6165666d6f717374757676777777787878787879797e8b98a4afa396897c706356493d3023160a0000000000000013202c3946535f6c7986929facb0a396897d7c7c7c7c7c7c7c7c7c7c7c7c7c7c7d7d7e7f8183868a8e93999f9f9d9590877f746e645b51473d2f261b110600000004101c2834404b545c606161616161616161616161616161616773808d9aa69b8e817468616161616161616161616161616161605c554b4034281c10040013202c3946535f6c7986929facb1a4978b7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7d7d7c7b7a7875726e6964605c544f454039312920170e050000000000000013202c3946535f6c7986929facada093867a6d605347454545454545454545453f444647494c52575f666d7a83919da6b0a79e9184796d6053463a2d20130900000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d201307000007131f2c38444f5963707d89939ea8aea29892867d746d686462605d606164676d727a828e93979185929facaa9e9184776b5e5144382b1e11000000060f1820262b2e2f3232323232323232323d4a5763707d8a96a3b0a3978a7d7064574a3d3232323232323232302f2c28211a110800000000050f19232c363f49525c606c78818f949fa69e938d80746d635a504b555e686e7b849197a2a39992867d706a5f574d443b32281f150c03000000000000111e2b3844515e6b7784919eaab0a396897d7063564a3d3023170a00000000000000000000000000000000000000000000000b1825313e4b5864717e8b97a4b1a99d9083766a5d5043372a1d10000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b0013202c3946535f6c7986929facb2a6998c7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f796d6054473a2d2114070000000000000000000000061019232b343c434b51565e61676d71757a7d8084868a8d9196989d9fa7aba399928e867f796e695e574d43392f20160c020000000000000000000000000000000000000003101d2a3643505d697683908f8275685c4f4235291c0f000714212e3a4754616d7a8794a0acaca194877b6e6154483b2e2115080000000000000000000005111e2a36424d5763707d8a95a0aca69d9083786d605b514b443f3d3c3b3c3f444c55606b7683909c9f9e9d97897c6f6256493c2f2316090006131f2c3845515c6675818e9ba7b1a99e9184796d605b524c46413f3e3d3d3e3f41464c525b606d7a85929fabb0a6988c7f7265594c3f2f24180d0100000000020c1720293036393a3e3f44484d5354545c606264666768696a6a6a6b6b6b6b6c6c6c717e8b98a4afa396897c706356493d3023160a0000000000000013202c3946535f6c7986929facb9a5998f8989898989898989898989898989898a8a8b8c8e9092989b9e9c9995908a837d726d645c53493f352b1d140a0000000006131f2c3845515c666d6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e73808d9aa69b8e81746e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6d675c5145382c1f13060013202c3946535f6c7986929facb9a69a908b8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a89888784827f7b76716d666059514b433a322920160c0300000000000013202c3946535f6c7986929facada093867a6d6053473a38383838383838382e34383a3a3c41464d545d686f7c89949eaaada1968a7d7064574a3d31251a0e02000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d20130700000915222f3b4854606b7683909da5afa69f92867d706b605d565554515355555d60686d78818e94989298a2aeab9e9184786b5e5145382b1e1200000000060e151a1e21222525252525252525303d4a5763707d8a96a3b0a3978a7d7064574a3d31252525252525252423201c16100800000000000007111a242d374044505b666d79828f95a0a59d928c7f726c625a504c565e696e7c859298a2a39892867c6f695f564d443a31271e150b020000000000111e2a3744515d6a7784909daab0a3978a7d7064574a3d3124170a00000000000000000000000000000000000000000000000c1825323f4b5865727e8b98a5b1a99c8f8276695c504336291d10000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b0013202c3946535f6c7986929facb9a89c918c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c877b6e6154483b2e21150800000000000000000000030c18222b353d464e555d60686e73797e82868a8d90939a9a9ea0a8a9abb1ac9f9287817b736d665e574d453b31271d0e04000000000000000000000000000000000000000003101d2a3643505d697683908f8275685c4f4235291c0f000714212e3a4754616d7a87949f9f9f9f94877b6e6154483b2e211508000000000000000000000714202d3a46525e6976828f9ca7ab9f94897d70665c50454039332d2f2f2d333a434f5964717e8b989291908f8c7f7366594c403326190d000713202d3a4653606d7985929facada1978a7e71675d5145413a36303130303130363a4145525d68737f8c99a9b3a89c8f827569554b4035291d10040000000008131e29323a4146474b4c4d4e4f51524a50535557595a5c5c5d5d5e5e5e5e5f5f5f65717e8b98a4afa396897c706356493d3023160a0000000000000013202c3946535f6c7986929facb9aba199969696969696969696969696969696969797999b9d9f9e96918f8c88837e78706b625b534a41372e23190b02000000000713202d3a4653606d797a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a808d9aa79b8e817a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a796d6053463a2d2013070013202c3946535f6c7986929facb9aca29a97979797979797979797979797979797979797969596918f8b88837e78706b605c554c443a32281e150a00000000000013202c3946535f6c7986929facada093867a6d6053473a2d2c2c2c2c2c2c2c23282b2d2e30363b424c56606b75828f9cabb2a89b8e817568574d42362a1e1205000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d20130700030f1c28333f4a54636f7c89959fabab9f948b7e716a6059524c48474546484b51565e666d788290989fa2aab4ab9e9185786b5e5245382b1f12000000000003090e1214151919191919191924303d4a5763707d8a96a3b0a3978a7d7064574a3d3124191919191919171614100b05000000000000000008121b2528333f4a545c676d79839096a0a49c918b7e716c61594f4d575f6a6f7d869299a3a29891857b6e685e564c433930261d140a0000000000101d2a3643505d697683909ca9b1a5988b7e7265584b3f3225180700000000000000000000000000000000000000000000000d1a2633404d596673808c99a6b3a89b8f8275685c4f4235291c0f000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b0013202c3946535f6c7986929facb9ada39c999999999999999999999999999999999999999999999999999999999999999994877b6e6154483b2e211508000000000000000000000b151e2a343d474f585f676d737b80858a8f92989a9d9fa4a39f9fa4aba4a7a79a8d807b756f6a605c544a42382e23170c03000000000000000000000000000000000000000003101d2a3643505d697683908f8275685c4f4235291c0f000714212e3a4754616d7a87939393939393877b6e6154483b2e211508000000000000000205070814212e3b4754616e7b87939facaa9c9083766b60544a3f342f282222222228313d4855616e7b878685848483817f7265584b3f3225180c00091623303c4956636f7c8998a2a5a69e9285796d60554b40352f2a2524232324252a2f35414c56626f7c8897a1adab9e918578675d5145392c201306000000010d1925303a444c525457595a5b5c5d5e5b5953484a4c4e4f5050515151515252525965727f8c98a5afa396897c706356493d3023160a0000000000000013202c3946535f6c7986929facb9b3aba5a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a4a4a5a7a99e948f84827f7b76716c656059514941382f251c110700000000000a1723303d4a5663707d87878787878787878787878787878787878d929da99e938e87878787878787878787878787878787877e7164574a3e3124170b0013202c3946535f6c7986929facb9b4aca6a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a3a3a8a19e9b9894908a847d746d675e564c443a30261c1106000000000013202c3946535f6c7986929facada093867a6d6053473a2d201f1f1f1f1f1f171c1f2021252a303a434f5964707d8a99a3afab9e928578695e53463a2d211407000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d2013070006121f2b3844505b6674818e9ba7b1a79c8f82766c62584f45413b3a393a3b40454c545c666e7b86929facb4b7ab9e9184786b5e5145382b1e1200000000000000020608080c0c0c0c0c0c1724303d4a5763707d8a96a3b0a3978a7d7064574a3d3124170c0c0c0c0c0a0907040000000000000000000000091317222d38424b555d676d7a849197a1a39f92877e706b60584e4e58606a707d87929aa4a19791847a6e685d554b42382f261b1106000000000f1c2835424f5b6875818e9ba8b3a6998c807366594d402f23180c00000000000000000000000000000000000000000000010e1b2834414e5b6774818e9aa7b4a79a8e8174675b4e4134281b0e000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b0013202c3946535f6c7986929facb9b5ada8a6a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a194877b6e6154483b2e21150800000000000000000007121c27303c464f59606a6f7980868d92979c9fa3a8a09e9a9992939995989b9f9d928d87827c736d665c544a3f34281e150a000000000000000000000000000000000000000003101d2a3643505d697683908f8275685c4f4235291c0f000714212e3a4754616d7a86868686868686867b6e6154483b2e211508000000000002080e1114141d2935404b5565727f8c99a4aea2988a7e7164594f42382e231d17191917212d3a46535f69767b7a7978777675726d62564a3d3124180b000c1926333f4c5966727f8c969798999a8d8174665c5143392f241e1917171717191e24303a4653606c7985929eabada197867a6d6053473a2d20140700000005111d2a36414c565e6164656768696a6b68655d534840414243434444444545454d596673808c99a6afa295897c6f6256493c2f2316090000000000000013202c3946535f6c7986929facb9afa7a2a09f9f9f9f9f9f9f9f9f9f9f9f9fa0a1a2a4a6aaa89c8f827e7a736e6964605b534f473f372f261d130a0000000000000a1723303d4a5663707d89949494949494949494949494949494949a9da4aea59e9b949494949494949494949494949494948a7d7164574a3e3124170b0013202c3946535f6c7986929facb9afa7a2a09f9f9f9f9f9f9f9f9f9f9f9f9f9f9fa0a0a1a2a5a8aba8a69f9c95918981796d685e564c42382e23170c030000000013202c3946535f6c7986929facada093867a6d6053473a2d201412121212060b10121314191e28313d4754606d7a86929facada297877b6e6154483b2e211508000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d201307000613202d394653606c7985929eabaca095897c6f635a50463d35302d2c2d2f353a424a545e6973808d9aa4afb7aa9e9184776b5e5144382b1e11000000000000000000000000000000000a1724303d4a5763707d8a96a3b0a3978a7d7064574a3d3124170a000000000000000000000000000000000000000006111c262f39434c555e686e7b859197a2a39992867d6f6a5f574d4e58616b717e88939fa4a09690837a6d675d544a41382d22170b060000000d1a2734404d5a6773808d9aa6b3a89b8e817568554b4034291c100400000000000000000000000000000000000000000005121e2a36424d576976838f9ca9b2a5988c7f7265594c3f3226190c000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b0013202c3946535f6c7986929facb9afa7a2a09f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f94877b6e6154483b2e2115080000000000000000000c18232e39424e58606b6f7c848c92989fa2a7a09d9996918d8a868687888b8e92989f9a948f8780786d665c50443e30261c11060000000000000000000000000000000000000003101d2a3643505d697683908f8275685c4f4235291c0f000713202d3946525e6876797979797979797976695e52463a2d20140700000000050d14191e2021252c3845515d6776838f9cabac9f9285796d6053463d3026252525252525252a36424d575f696e6d676b6a696865625b51463a2e221509000e1b2835414e5b68748188898a8b8d8e8b7e7164544b4031271d130e080a0a080e131f2b3744505b657683909da9b3a994887b6e6155483b2e2215080000000713202d3946525e686d71727374767778756f65594d3d323536373737383835404b556774818e9aa7b2a995887b6e6255483b2f2215080000000000000013202c3946535f6c7986929facb9a79d95939393939393939393939393939393949597999d9f9e948f8a85807b726d605c544a42392e2318140b010000000000000a1723303d4a5663707d8996a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a7a9aeb6afaaa8a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1978a7d7164574a3e3124170b0013202c3946535f6c7986929facb9a79d959393939393939393939393939393939393949496989b9fa2a9aba7a09d938e837a6d685e544a3f342820150a0000000013202c3946535f6c7986929facada093867a6d6053473a2d2014070505050000030607080c16202c3945515d677783909daab3a9968a7d7063574a3d3024170a000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d201307000916232f3c4956626f7c8997a2adaa9d9083776b6054483f34292421202024293039424d57616e7b87939facb7aa9d9184776a5e5144372b1e11000000000000000000000000000000000a1724303d4a5763707d8a96a3b0a3978a7d7064574a3d3124170a0000000000000000000000000000000000000000000a141d27303a434c565f696f7c859298a3a39892857c6f695e564c4f59616c727f8b929ca5a0959082796d665c53493f332722170c0000000c1925323f4c5865727f8b98abb5aa9d908477675c5145382c1f13060000000000000000000000000000000000000000000714212d3a46535f697885929fabb4aa968a7d7063574a3d3024170a000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b0013202c3946535f6c7986929facb9a79d95939393939393939393939393939393939393939393939393939393939393939393877b6e6154483b2e211508000000000000000004101c2834404a545f6a6f7d8691969fa2a69e9c95908c8884807d7a797a7c7e81858c92989e99938c81786d605a5042382e23170c0000000000000000000000000000000000000003101d2a3643505d697683908f8275685c4f4235291c0f0005111d2a36414c565e6c6c6c6c6c6c6c6c6c6c5e574d42362a1e1205000000050e171f252a2d2e32323a4753606d7986929faca89b8e8275675c51453832323232323232323230313b454d575e61605d555d5c5b585651493f34291d1206000714212d3a4754606d7a7b7c7d7f8081827b6e6155483b2e22150b0100000000030f1b27333f49536975828f9ca8aea295887b6f6255483c2f2215090000000714212e3a4754616d7a7e7f8081828485817568584e43372e2c2823282c2f3945515d677783909daaada196877a6d6054473a2d2114070000000000000013202c3946535f6c7986929facb9a2958b86868686868686868686868686868787888a8d90959a9f9c98928d867e756d665c544a40342820160a000000000000000a1723303d4a5663707d89969f9f9f9f9f9f9f9f9f9f9f9f9f9f9fa6a8aeb6afa9a79f9f9f9f9f9f9f9f9f9f9f9f9f9f9f978a7d7164574a3e3124170b0013202c3946535f6c7986929facb9a2958b86868686868686868686868686868686868788898c8e92979da0a8aca59d9590837a6d665c50443c31261a0f0300000013202c3946535f6c7986929facada093867a6d6053473a2d20140700000000000000000004111d2935414c556975828f9ca8b1a4988b7e7165584b3e3225180b000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d201307000c1925323f4c5865727f8b98a9b3ab998c7f7266594f43362d2219141313181e27303b46525e697683909da9b6aa9d9083776a5d5044372a1d11000000000000000000000000000000000a1724303d4a5763707d8a96a3b0a3978a7d7064574a3d3124170a000000000000000000000000000000000000000000020b151e28313a444d575f6a6f7d869299a3a29791847b6e685e554b505a626d73808d939da59f948f82786d655b50443e34281d11050000091623303c4956636f7c8999a4afac9f9286796d6053473a2d22170b0000000000000000000000000000000000000000000815222e3b4855616e7b8897a2adaea298887b6e6155483b2e221508000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b0013202c3946535f6c7986929facb9a2958b868686868686868686868686868686868686868686868686868686868686868686867b6e6154483b2e211508000000000000000006121f2c3844515c666f7c859298a0a8a19e948f89847f7b7774706d6c6d6f7174797f869195a09f938e81746c61544a3f34281c100300000000000000000000000000000000000003101d2a3643505d697683908f8275685c4f4235291c0f00010d1925303a444c525f60606060606060605f524d453b30251a0e020000020d1720293036393b3f3f3f495663707c8998a3aeaa988b7e7265554b403f3f3f3f3f3f3f3f3f3f3d3c383b454d535453514b51504f4b4a463f372d23180d01000613202c3945515d676d6e7071727374756e695f53463a2d2114030101000205080f17222d424f5b6875828e9ba8b5ab95887b6e6255483b2f2215080000000815212e3b4854616e7b878c8d8e8f909184786a6054473f3a38342e34383a404b55606d7a86929facab9e918578675d5145392c2013060000000000000013202c3946535f6c7986929facada0938679797979797979797979797979797a7a7b7e8083888d9299a19f98928b81786d665c51443d32271b0f030000000000000a1723303d4a5663707d89939393939393939393939393939393939a9da4aea59d9b939393939393939393939393939393938a7d7164574a3e3124170b0013202c3946535f6c7986929facada0938679797979797979797979797979797979797a7b7c7f81858b91969fa4aca79f959082786d60584e43372b1f140900000013202c3946535f6c7986929facada093867a6d6053473a2d201407000000000000000000010d19242f414e5b6874818e9ba7b2a5988c7f7265594c3f3226190c000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d201307000e1b2834414e5b6774818e9aa7afa399897c6f6356493d32231b100806070c151e2a36424d576774808d9aa7b3a99c8f8276695c4f4336291c10000000000000000000000000000000000a1724303d4a5763707d8a96a3b0a3978a7d7064574a3d3124170a00000000000000000000000000000000000000000000030c161f29323b454e58606b707e87929fa3a19691847a6d675d5145515b636e74818e939ea69e948e81776c605a5045392d21150800000714202d3a4753606d7a86939facaea399897d706353493f33271b0f030000000000000000000000000000000000000004111d2935414c5565717e8b98a9b3ac9f9285786d6053463a2d201307000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b0013202c3946535f6c7986929facada093867979797979797979797979797979797979797979797979797979797979797979797976695e52463a2d20140700000000000000000713202d3a4653606d78839197a2a8a097928a827c77726e6967636060616265676d727b839196a19d938a7d70665c5044382c1f120600000000000000000000000000000000000003101d2a3643505d697683908f8275685c4f4235291c0f000008131e28323a41465353535353535353534846423b33291f140900000008141f29323b4146474c4c4c4c5966727f8c99aaaea398887b6f62554c4c4c4c4c4c4c4c4c4c4c4c4948443d3b4246484745404443423f3d3a342d251b1106000004111d2935414c555d6062636465666869615f574d42362a1e120d0d0e090e121419212b37434e58697683909ca9aea399877a6d6154473a2e2114070000000714212d3a46535e697884919a9b9c9d96897c6f625a504a464440434044464b515c67717e8b98a3aeaa9b8f827568554b4135291d11040000000000000013202c3946535f6c7986929facada093867a6d6c6c6c6c6c6c6c6c6c6c666c6d6e6f7173777b80879196a1a29f938e81786d60584e43382b20150a0000000000000a1723303d4a5663707d86868686868686868686868686868686868d929da89d938e86868686868686868686868686868686867e7164574a3e3124170b0013202c3946535f6c7986929facada093867a6d6c6c6c6c6c6c6c6c6c6c6c6c6c666d6d6e6f7275797e848d939aa4afa79f948d80736a5f53473b31261a0e02000013202c3946535f6c7986929facada093867a6d6053473a2d20140700000000000000000000081b2734414e5a6774818d9aa7b2a6998c7f7366594c403326190d000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d20130700101d293643505c6976838f9ca9ac9f92867a6d6053473a2d201407000000030c1a25303f4b5865727e8b98a5b1a89b8e8275685b4f4235281c0f000000000000000000000000000000000a1724303d4a5763707d8a96a3b0a3978a7d7064574a3d3124170a0000000000000000000000000000000000000000000000040d172029333c464f59616c717e8b919ca4a0969083796d60534749525c606d78818f949fa69e938d80736c6156493d3024170a00000613202c3945515d677784909daab4ab9a8d8073655b5044372b1f140a000000000000000000000000000000000000010c13202c3945515d6775828e9ba8b5a89c8f8275665c5044382b1f1206000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b0013202c3946535f6c7986929facada093867a6d6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c5e574d42362a1e12050000000000000006131f2b37434e5865727f8c95a0a9a09691857d766f6b66625f575753535455555d60696e7a84919ea59e9184786d6053463a2d20130800000000000000000000000000000000000003101d2a3643505d697683908f8275685c4f4235291c0f000006111c2630383f444649494949494949494644403930271c12070000020e1925303b444d5254585858585b6875828e9ba8ac9f9286796d605858585858585858585858585856544f473d363a3b3a39352f363532312e29231b1309000000010d19242f3a434c5154555657585a5b5c55534d453b31261a1a1a1a1b1b1a1e21252a333b4754606a7884919eabac9f9286796c605346392d20130600000005121e2a36424d576774818e9aa6a9a89b8e81756c605c5453514a504a5153555d606d7983919daaaea2988b7e7165584b3e2f24180d010000000000000013202c3946535f6c7986929facada093867a6d606060606060606060605b606061626466696e747c849196a1a59e938d80736a6054473c31261a0f0200000000000916232f3c4855616b707979797979797979797979797979797979808d9aa69b8e817979797979797979797979797979797979716c6155493c3023170a0013202c3946535f6c7986929facada093867a6d606060606060606060606060605c6061616365676d71798088939fa5afa69f92877c6f62574d42362a1e1205000013202c3946535f6c7986929facada093867a6d6053473a2d20140700000000000000000004101c2834404a546875828e9ba8b2a5988c7f7265594c3f3226190c000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d20130700111e2b3744515e6a7784919daaab9e918578675d5145392c1f130600000000091724313e4a5764717d8a97a4b0a79a8d8174675a4e4134271b0e000000000000000000000000000000000a1724303d4a5763707d8a96a3b0a3978a7d7064574a3d3124170a000000000000000000000000000000000000000000000000050e17212a343d474f59626c727f8c929da89f958e8175685b4e4244505c666d79828f95a0a59d928b7e7164584b3e3125180b000004101d2935404b556773808d9aa9b3ab9e9184786c6053463c2f261b1106000000000000000000000000000000000007131d28333f4a54606d7a86929facb1a7988b7f7265544a3f34281c1003000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b0013202c3946535f6c7986929facada093867a6d60606060606060606060606060606060606060606060606060606060606060605f524d453b30251a0e02000000000000000815222e3b47545f6a7784919ea7a39891847b706b63605955534d4a474647484b51575e68707d8a96a1a1968a7e7164574b3e2f24190d01000000000000000000000000000000000003101d2a3643505d697683908f8275685c4f4235291c0f00000c17232e38424a5053555555555555555553514a42392e23180c000005111e2a36414d565e6165656565656a7784909daaaa9d9083776665656565656565656565656565656360594f44382d2e2d2c292429282524221d181109010000000008131e28313a41454748494a4c4d4e4f4846423b332923272727272728252a2d30363c454e58626f7c8896a1adab9c908376655b5044372b1f1205000000020e1a25313c4855626f7c88949faaaa9e938a7e726d6662605c545d545c6062676d75808d95a0aca99f92867a6d6154473a2e211407000000000000000013202c3946535f6c7986929facada093867a6d6053535353535353534a505354545557575f616a6f7b84919ea7a59f92877c6f62584e43372b1f120600000000000714202c38444f5961636c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c73808d9aa69b8e81746c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c64615a5045392d2114080013202c3946535f6c7986929facada093867a6d6053535353535353535353534a5153545556555d60676d747f8c939daaaea3998e8275695f53463a2d211407000013202c3946535f6c7986929facada093867a6d6053473a2d2014070606000104060708090b141f2c3844515c667683909ca9b1a4988b7e7165584b3e3225180b000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d20130700121f2b3845525e6b7885919eabaa9d9084776a554b4035291d1004000000000b1824313e4b5764717e8a97a4b1a5998c7f7266594c3f3326190c000000000000000000000000000000000a1724303d4a5763707d8a96a3b0a3978a7d7064574a3d3124170a00000000000000000000000000000000000000000000000000060f18222b353e47505a636d74808d9aa7a79d9083766a5d50433f4a545c676d7a84909daaa4998c807366594d4033261a0d0000010d18242f3d495663707c8997a1adaca196897d7063584e41382d22170f06000000000000000000000000000000071118242f3844505b66717e8b98a2aeaca095887b6e6155483b2e23170b00000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b0013202c3946535f6c7986929facada093867a6d60535353535353535353535353535353535353535353535353535353535353534846423b33291f140900000000000000000916222f3c4955626f7c8896a0ac9f92867c6e696159544f4847423d3a393a3c40454d56606c7884919ea89b8f827568554c4135291d1104000000000000000000000000000000000408101d2a3643505d697683908f8275685c4f4235291c0f0003101c28343f4a545c606262626262626262605c544a4034281c1004000714202d3946525e686e7272727272727985929faca89b8e8275727272727272727272727272727272706b6054483c3126201f1d181d1c181815120d06000000000000010c161f282f35393a3b3d3e3f4041423b3a36312c2f3034343434343531363a3b41464e57606a74808d9aa8aea3998c7f726653493f33271b0f03000000000915212e3b47535f6a76828f98a2aea59f92877f78726f6d666a696a666d6f7379818d929da7aca2978d8074685d5246392d201307000000000000000013202c3946535f6c7986929facada093867a6d6053474646464646463f44464747484b4d53585f69707d8a959faba3998f82766a5f53473a2e211408000000000004101c27333d474f55566060606060606060606060606060606773808d9aa69b8e817468606060606060606060606060606060575550483e33281c11040013202c3946535f6c7986929facada093867a6d6053474646464646464646464044464748494b51555d606d74818e98a2aeab9f93877b6e6155483b2f24180d010013202c3946535f6c7986929facada093867a6d6053473a2d2014131313070d10131414151a1d27303a4653606d7985929fabb2a896897c706356493d3023160a000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d20130700121f2c3945525f6c7885929faba99c908376695d50432f24180c00000000000c1825323f4b5865727e8b98a5b5ab978a7e7164574a3e3124170b000000000000000000000000000000000a1724303d4a5763707d8a96a3b0a3978a7d7064574a3d3124170a0000000000000000000000000000000000000000000000000007101a232d373f44505c666d7983909da9a59d9083766a5d5043434c565e696f7c85929faca3998c807366594d4033261a0d0000000713202d3a4653606d7985929eacb2a89c8f82756a5f53493f332721180f0802000000000000000000000003091119232935404b55606c7884919daab3a99d908477695f53463a2d1c110600000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b0013202c3946535f6c7986929facada093867a6d60534746464646464646464646464646464646464646464646464646464646463b3a36302921170d0200000000000000000b1825323e4b5865717e8b98a8a79a8d81746a5f574f48443d3a37312d2d2e2f353b44505b6574818e9ba79e928578675d5145392c2013060000000000000000000000000000050c1114171d2a3643505d697683908f8275685c4f4235291c0f0006121f2c3844505c666d6f6f6f6f6f6f6f6f6d665c5144382c1f1206000814212e3b4754616e7a7f7f7f7f7f7f7f8c98a2aea99c8f827f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7d7063574e42372b1e13100c070f0c0b0906010000000000000000040d161e24292c2d2f3031323335362e2d2a32383b3d404040404141424246484c525860696f7c87929faca99f92867b6e6155483b2d22170b000000000006121f2b37434e58626f7c86929fa4aca399928b837f7b797777767777797c80858e939da4aea49a92857a6d61564c4135291d1105000000000000000013202c3946535f6c7986929facada093867a6d6053473a393939392d3338393a3b3c3e42464e57616c7683909da9ab9f94887b6e6255483b2f2215060000000000000b16212c353d44484a53535353535353535353535353535a6773808d9aa69b8e8174685b53535353535353535353535353534a49453e362c22170c000013202c3946535f6c7986929facada093867a6d6053473a393939393939392e34383a3a3b3c40454b515b616d7a86929facafa4998c7f7366554b4035291d10040013202c3946535f6c7986929facada093867a6d6053473a2d202020202020181d20202122252a2f39434d57636f7c8998a2aeaca196877b6e6154473b2e211408000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d20130700121f2c3945525f6c7885929faba99c908376695d50432f24180d01000000000c1926333f4c5966727f8c99a5afa399887c6f6255493c2f221609000000000000000000000000000000000a1724303d4a5763707d8a96a3b0a3978a7d7064574a3d3124170a000000000000000000000000000000000000000000000000060f19222c363f49525c606d78828f959fa69d938c807366594d424b555e686e7b859198a2a49a92867d706356493d3023160a00000006121f2c3844505c6673808d9aa4afaa9e94887c6f655b50443d332a2219140e09060400000100000406090e141a232b353d45515d67717e8a95a0acada2978b7e7265574d42362a1e0a0000000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b0013202c3946535f6c7986929facada093867a6d6053473a393939393939393939393939393939393939393939393939393939392e2d2a251f170f050000000000000000000d192633404c5966737f8c99a6a3968a7d7063584e453e38322e2b262020212429333f49536673808d99a6a197877a6d6054473a2d211407000000000000000000000000000810171c2123242a3643505d697683908f8275685c4f4235291c0f000713202d3a4653606d787c7c7c7c7c7c7c7c786d6053463a2d201307000714202d3a4753606d7a868b8b8b8b8b8c919caab4ab9f948f8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b84776a5f53473a2e2114080000020000000000000000000000000000040c13191d202122232425272829222b353d4448494d4d4d4d4e4e4f4d5354565e616a6f7b849199a3aba1978d8174695f53463a2d1b11060000000000030f1b26323c47535f6a717e8b939aa2aaa39f95918c8886848483838485898c92979ea5aaa39f93887d70685e52443a3024190d01000000000000000013202c3946535f6c7986929facada093867a6d6053473a2d2d2d2d22282b2d2d2e2f31363c45505a65727f8c98a5b0a6998c7f7366594c402d22170b00000000000005101a232c33383c3d464646464646464646464646464d5a6773808d9aa69b8e8174685b4e464646464646464646464646463e3c39332c241a1005000013202c3946535f6c7986929facada093867a6d6053473a2d2d2d2d2d2d2d23282c2d2e2e2f35394046525e6873808d99a9b3ab9d908377675d5145392c2013060013202c3946535f6c7986929facada093867a6d6053473a2d2d2d2d2d2d2d24292c2d2e2f30363b424b555f6974818e9aaab4ab9e918478695e52463a2d201407000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d20130700121f2b3845525e6b7885919eabaa9d9084776a554b4035291d1004000000030f1b27333f49536773808d9aa6ac9f92867a6d6053473a2d201407000000000000000000000000000000000a1724303d4a5763707d8a96a3b0a3978a7d7064574a3d3124170a0000000000000000000000000000000000000000000000050e18212b343e48515b636e74818e949ea79e948e81746e63574b4a545d676d7a849197a1a49f93887e716b6054483b2f22160900000003101c28343f4a54616e7b87939fabb0a69c9083776c60584e453c342a251e1a1312100c070e070c1013131a1f262a353d47505a606d7984919ea7b1a99f9285796d6053473b31261a0e0000000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b0013202c3946535f6c7986929facada093867a6d6053473a2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d21201e1a140d05000000000000000000000d1a2633404d596673808c99a6a295887c6f6255493c332c27211e1d2024292d333b434e586774818d9aa7a994887b6e6155483b2e22150800000000000000000000000008121a22282d3031323643505d697683908f8275685c4f4235291c0f000714212e3a4754616d7a87888888888888877b6e6154483b2e211508000613202c3945515d6775828f98989898999ca3adbcb0a69f9c98989898989898989898989898989896887b6e6255483b3025190e02000000000000000000000000000000000001080d111314151617191a1b1c27323d474f54565a5a5a5a5a5b5c575e6164686d747c859196a0aaa39992857a6e61574d42362a1e0a000000000000000a15202b37434e58616c727f8892989fa3a7a09d99999291909090919298999ea2a9a69f98928b7f726c61564c4132281e130800000000000000000013202c3946535f6c7986929facada093867a6d6053473a2d202020171c1f20212122262a333e4955626f7c8895a2afa99c8f82766953493f33271b0f0300000000000008111a21272c2f30393939393939393939393939404d5a6773808d9aa69b8e8174685b4e4139393939393939393939393931302d28221a120800000013202c3946535f6c7986929facada093867a6d6053473a2d202020202020181c1f20212224292f35414c56626f7c8897a2adac9f9286796d6053473a2d2014070013202c3946535f6c7986929facada093867a6d6053473a393939393939392f35393a3b3b3d42464d545c676e7b87929facb1a79a8d817467574d42362a1e1105000b1825323e4b5865717e8b98a4aca295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d20130700111e2b3744515e6a7784919daaab9e918578675d5145392c20130600000005121f2b3744505b6576838f9ca9aa9d908477675c5145382c1f1306000000000000000000000000000000000a1724303d4a5763707d8a96a3b0a3978a7d7064574a3d3124170a00000000000000000000000000000000000000000000040d17202a333d47505a626d73808c939da69f958f82786d605b5244505c666d79839096a0a59c928b7f726c61594f44382c201307000000000c17232e3846535f6975828e99a3afab9f948b7f726a60574e463e36302a25201f1c181b1a1b181c1f20262b31363f474f59616c74808d96a1adada2978d8073675d5145392a1f14090000000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b0013202c3946535f6c7986929facada093867a6d6053473a2d2020202020202020202020202020202020202020202020202020201514120e090200000000000000000000000c1925323f4c5865727f8b98a9a396897c706356493d332b262324292c2f35383f444d56606a7683909da9a399877a6e6154473b2e211408000000000000000000000008121a242c33393c3e3f3e43505d697683908f8275685c4f4235291c0f000714212e3a4754616d7a87949595959594877b6e6154483b2e2115080004101d2935404b5565717e8b99a49f9fa5a7adb5bbb2aaa4a19f9f9f9f9f9f9f9f9f9f9f9f9f9fa8998c7f7266564d41362a1e11050000000000000000000000000000000000000001040607080a0b0c0d13202c38444f596063676767676768686a696e71757a81879197a0a8a19892877d6f685e52453b31261a0e00000000000000040f1a26313c46505a636d727e868e92999da0a8aba39f9e9d9c9d9e9fa2aaaaa29f9b948f867e726d62594f443a3020160c0200000000000000000013202c3946535f6c7986929facada093867a6d6053473a2d2014130b0f12131414151a212e3b4754616e7a8794a1adab9e928578655b5044372b1f1205000000000000000810161c2023232d2d2d2d2d2d2d2d2d2d2d34404d5a6773808d9aa69b8e8174685b4e41352d2d2d2d2d2d2d2d2d2d2d2423211c1710080000000013202c3946535f6c7986929facada093867a6d6053473a2d2014131313130c1012131415181d25303a4653606c7985929fabafa399897c6f6256493c2f2316090013202c3946535f6c7986929facada093867a6d60534746464646464646464640454747484a4d52575e666d79829099a3afab9f95897c6f6356493c30251a0e02000b1825323e4b5865717e8b989f9f9f95897c6f6256493c2f23160900000d1a2733404d5a6673808d999f9f9f9386796d6053463a2d20130700101d293643505c6976838f9ca9ac9f92867a6d6053473a2d20140a0000000613202d394653606c7985929fabac9b8e817468554b4034291c1004000000000000000000000000000000000a1724303d4a5763707d8a96a3b0a3978a7d7064574a3d3124170a000000000000000000000000000000000000000000030c161f29323c464f59616c727f8b929ca5a0969083796d665c5049525c606d78828f959fa69e938d80736d625a50473d32271b10030000000006111c2a36424d57626e7b87929fa8b0a69f92877c6f695f585046413b36312d2c282327272723282c2d31373b42465159606b717e8a929da8b1a79f92857a6d61554b4035291d10040000000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b0013202c3946535f6c7986929facada093867a6d6053473a2d2014131313131313131313131313131313131313131313131313130807050200000000000000000000000000091623303c4956636f7c8997a1a5988b7e7265594f453d3731302f35393a40454950565e686f7c89959fac9f9286796d6053463a2d2013070000000000000000000008121a242c363e45494a4c4a46505d697683908f8275685c4f4235291c0f000714212e3a4754616d7a8794a0a2a2a194877b6e6154483b2e21150800010d18242f3a4754616d7a86939393939a9da5afb5aaa0989593939393939393939393939393939393908376685e5246392d2014070000000000000000000000000000000000000000000000000000000916222f3b4854606b707373737374747576787b7e82868e9299a1a39f9791867e716b60564d4133291f140900000000000000000a15202a343e48515b636c717b81878c919597999c9d9e9e9f9f9f9e9d9b9998928e89827b716c625b51473e32281e0e040000000000000000000013202c3946535f6c7986929facada093867a6d6053473a2d20140c0c0c0c0c0c090e13202d3a4653606d798693a0acac9f9286796c605346392d2013060000000000000000050b10141617202020202020202020202734404d5a6773808d9aa69b8e8174685b4e41352820202020202020202020171714110c05000000000013202c3946535f6c7986929facada093867a6d6053473a2d2014070606000004060707070c131f2b3844505b667683909ca9b5ab978a7e7164574b3e3124180b0013202c3946535f6c7986929facada093867a6d6053535353535353535353534b5153545557575e61696e78818e949fabafa59d9083776b6054483b2f1f140900000b1825323e4b5865717e8b9393939393897c6f6256493c2f23160900000d1a2733404d5a6673808d939393939386796d6053463a2d201307000e1b2834414e5b6774818e9aa7afa399897c706356493d30261c110a080a111c28343f4a54626f7c8898a2aea49a8a7e7164574b3e2f23180c00000000000000000000000000000000000a1724303d4a5763707d8a96a3b0a3978a7d7064574a3d3124170a0000000000000000000000000000000000000000020b151e28313b444e58606b707e87929fa4a19791847a6d675d544a515b636e74818e949ea79e948e81776c605b51483e352b21160b0000000000000e1a26313b47535f6974808d96a0abaea39991857b6e6a615a524c46423c3a38342e3434342e34383a3c42474d535b626b707d86929fa4aeaaa0958b7f72685e5243392f24180d010000000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b0013202c3946535f6c7986929facada093867a6d6053473a2d20140d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0b0a080500000000000000000000000713202d3a4653606d7985929ea99c8f82766b60574f47433e3d3d4045474b51535b60686e7a84919ea7a99d908376665c5145382c1f130600000000000000000008121a242c363e48505557585651505d697683908f8275685c4f4235291c0f000714212e3a4754616d7a8794a0adaea194877b6e6154483b2e21150800000713202d3946525e687682868686868e929da9b0a4988e888686868686868686868686868686868686887b6e6154473b2e2114080000000000000000000000000000000000000000000000000000000a1623303d495663707d808080808181828385878b8f92999fa09e99928d857c716c61594f443b3021180d030000000000000000030e18222d363f49515a61696e747b8084888b8d8f90919292929291908e8c8985817c766e69615a51493f352c20160c000000000000000000000013202c3946535f6c7986929facada093867a6d6053473a2d20191919191919191a1a1c222d3a4754606d7a8793a0adafa399877a6d6054473a2d211407000000000000000000000407090a1313131313131313131a2734404d5a6773808d9aa69b8e8174685b4e4135281b1313131313131313130b0a08040000000000000013202c3946535f6c7986929facada093867a6d6053473a2d201407000000000000000000030f1c28333f4a546875828f9ba8b2a5988b7f7265584c3f3225190c0013202c3946535f6c7986929facada093867a6d606060606060606060606060555d6061626466696e737b828e939ea6b0a79e938a7d7063594f44382c200d0200000b1825323e4b5865717e868686868686867c6f6256493c2f23160b0301071a2733404d5a66738086868686868686786d6053463a2d201307000c1825323f4b5865727e8b98a9b2ab998c7f7266594f42382e231a1615141c232c3844505c6673808d9aaaac9f93877a6d6154473a2e21140700000000000000000000000000000000000a1724303d4a5763707d8a96a3b0a3978a7d7064574a3d3124170a00000000000000000000000000000000000000000a141d27303a434d565f6a6f7d869299a3a29892857b6e685e554b505a626d73808c939da69f958f82786d655b50493f362c23190f0400000000000009141f2b37424d57606d79849199a4afaba19791847c706c615e56534d494644404141414141404546494d53575f616d727d869298a2aeaca2989083786c60564c4131281d1207000000000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b0013202c3946535f6c7986929facada093867a6d6053473a2d201a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a171714110c0500000000000000000006121f2b3844505c6673808c96a19f94897d70696059534e4b49494b5153555d60656c717a839096a0aca2978c7f7265544b4034281c1004000000000000000008121a242c363e48505a616465625b515d697683908f8275685c4f4235291c0f000714212e3a4754616d7a8794a0adaea194877b6e6154483b2e211508000005111e2a36414c5666707679797979818e9aa7aea195887c79797979797979797979797979797979797976685e5246392d2014070000000000000000000000000000000000000000000000000000000c1926333f4c5966727f8c8d8d8d8d8e8f909298979c9c9a9896918d86807a6f6a615a50473d32291f0f060000000000000000000006101b242e373f4850575e61696e73777b7e80828484858686858583827f7d79756f6b625f5750483f372d231a0e04000000000000000000000013202c3946535f6c7986929facada093867a6d6053473a2d252525252525252626262b2d333c4855616e7b8894a1aeaea399867a6d6053473a2d201407000000000000000000000000000006060606060606060d1a2734404d5a6773808d9aa69b8e8174685b4e4135281b0e0606060606060606000000000000000000000013202c3946535f6c7986929facada093867a6d6053473a2d201407000000000000000000000b17222d414e5b6774818e9aa7b2a5998c7f7266594c3f3326190c0013202c3946535f6c7986929facada093867a6d6c6c6c6c6c6c6c6c6c6c6c6c6c676d6e6e7073767b80858f949ea5afa8a0958e81756b6155473d32271b0f0000000b1724313d4a56626c71797979797979796f6a6054473b2e231c150c0b121826323f4b58636e737979797979797976665c5044382c1f1206000916222f3c4955626f7c8897a1adaa9d9184776b60544a3f342b26232222262e35414c56606d7985919eabaa9d908376685e5246392d20130700000000000000000000000000000000000a1724303d4a5763707d8a96a3b0a3978a7d7064574a3d3124170a0000000000000000000000000000000000000006111c262f39434c565e696e7c859298a3a39992867c6f695f564c4f59616c727f8b929ca5a0969083796d665c53493f372d241a110700000000000000030e1a26313c45515d676f7d87939fa4aea9a19691867e756e68615e575653514a4e4e4d4e4e4b515356575f62696e767f879298a2aaafa49a92867c6f665b50443a301f160c01000000000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b0013202c3946535f6c7986929facada093867a6d6053473a2d27272727272727272727272727272727272727272727272727272727272423211c171008000000000000000003101c28343f4a54606d7a849199a49e91847b6f6b625f58585656555d6064676d71787e859095a0a8a49e92857a6d6154473a2e23180c000000000000000008121a242c363e48505a616c71726d625b5d697683908f8275685c4f4235291c0f000714212e3a4754616d7a8794a0acaca194877b6e6154483b2e2115080000010d1925303a44545e66696c6c6c75818e9ba8ada194877a6e6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6b5e564d41362a1e11050000000000000000000000000000000000000000000000000000000c1926333f4c5966727f8c999a9a9a9b9b9d9fa29f94908d8b8884807b746d68605850483e352b20170d00000000000000000000000915202b353f474e524d52575f62666a6e71737577787879797978777573706d67636059534d46423c332a1f140900000000000000000000000013202c3946535f6c7986929facada093867a6d6053473a323232323232323233333137383f444f5964717e8b97a4b1ac9f928679675d5145392c1f1306000000000000000000000000000000000000000000010d1a2734404d5a6773808d9aa69b8e8174685b4e4135281b0e0200000000000000000000000000000000000013202c3946535f6c7986929facada093867a6d6053473a2d20140700000000000000000000061b2834414e5b6774818e9aa7b2a6998c7f7366594c403326190d0013202c3946535f6c7986929facada09386797979797979797979797979797979797a7a7b7d8082868c92979fa6afa79f969183796d60594f44352b21160b0000000915212e3a45505a62656c6c6c6c6c6c6c6260584e443d342e271e18151d2329333c47525c63666c6c6c6c6c6c6c6c5c544a3f34281c1003000613202d394653606c7884919eabaca095897d70665c50443f37312f2e2f30383f46525e68717e8b97a1ada3988b7e7265564c41362a1e110500000000000000000000000000000000000a1724303d4a5763707d8a96a3b0a3978a7d7064574a3d3124170a000000000000000000000000000000000000091217222d38424b555d686e7b849197a2a39f92877d706a60574d4e58606b707e87929fa4a19791847a6d675d544a41382d251b120800000000000000000009151f2935404b55606b727f8b929da4ada9a198928a817a746e696562605c545b5a5a5a5b545c606266696e747b828b9299a2aaaea39f93887e706a5f544a3f32291e0d0400000000000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b0013202c3946535f6c7986929facada093867a6d6053473a34343434343434343434343434343434343434343434343434343434343431302d28221a120800000000000000000b17232e3845525d68707d87939aa19691847d746f6a6764636366676d70757a7e838b9297a0a7a49c928b7e71685d5246392d1d12070000000000000008121a242c363e48505a616c717e7f726d6257697683908f8275685c4f4235291c0f000714212e3a4754616d7a87949f9f9f9f94877b6e6154483b2e211508000008131e28323a4146545a5d60606875828f9ba8ada093877a6d606060606060606060606060606060606054524d443b3025190e020000000000000000000000000000000000000000000000000000000c1926333f4c5966727f8c99a5a6a7a7a8a9aba99c9083807e7c77736e69615e564e463e362c23190e0500000000000000000000010e1a26313d4751595e5f6060605e575f626466696a6b6b6c6c6c6b6a686663605d6060606055534d453c31261a0e02000000000000000000000013202c3946535f6c7986929facada093867a6d6053473f3f3f3f3f3f3f3f3f3f404142464a5057606b75828f9ca8b5aa9d9184776a554b4035291d1004000000000000000000000000000000000000000000010d1a2734404d5a6773808d9aa69b8e8174685b4e4135281b0e0200000000000000000000000000000000000013202c3946535f6c7986929facada093867a6d6053473a2d20140700000000000000000205101c2834404b556875828f9ba8b2a5988b7f7265584c3f3225190c0013202c3946535f6c7986929facb9a2958b868686868686868686868686868686868687888a8c8f92999fa2a9aba39f9590847b6e675d51473e3323190f0400000005111d29343f4850565860606060606060605e56544f444039302a211f272f343e454d53555d60606060606060605f504a42382e23170c000005121f2b3744505b6574808d9aa6b0a89d9083786d605a5047433d3c3b3c3d424a505b616d7a85929ea9ab9f92867a6d6154473a3025190d0100000000000000000000000000000000000a1724303d4a5763707d8a96a3b0a3978a7d7064574a3d3124170a000000000000000000000000000000000007101b2428333f4a545c676d7a839096a1a49c918b7e716b61584e4d565f6a6f7d869299a3a29891857b6e685e554b42382f261b130900000000000000000000030d18242f3a434f59626d74808d929ca3adaaa29f938e86807b76726f6d6669686767676869666d6f72777b81868f949fa3ababa39f918c7f726c61584e42382d20170d0000000000000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b0013202c3946535f6c7986929facada093867a6d605347404040404040404040404040404040404040404040404040404040404040403e3c39332c241a10050000000000000006111c2935414c56606b717e8892989f969188817c777471707073767a7d81858b91959ea1a9a29f928d80736c61564c4135291d0b0000000000000008121a242c363e48505a616c717e878b7f72695e697683908f8275685c4f4235291c0f000714212e3a4754616d7a87939393939393877b6e6154483b2e21150800010d1925303a444c52545757575c6875828f9ba8aca09386796d60575757575757575757575757575755544e46413b32291f1408000000000000000000000000000000000000000000000000000000000c1926333f4c5966727f8c999f9fa0a1a2a4a6aa9e9185817e7a746e69605c554d443d342c241a1107000000000000000000000004111d2a36424e59636a6c6c6c6c6b636059585a5c5d5e5f5f5f5f5e5d5b575f626a6c6c6c6c6c5f574d42372b1e1205000000000000000000000013202c3946535f6c7986929facada093867a6d60534c4c4c4c4c4c4c4c4c4c4c4d4e4d53545b6069707d88939facb3a99b8e8174685b4e412f24180c00000000000000000000000000000000000000000000010d1a2734404d5a6773808d9aa69b8e8174685b4e4135281b0e0200000000000000000000000000000000000013202c3946535f6c7986929facada093867a6d6053473a2d20140c0c0c0c0c0c0c0c090e1116202c3845515c677683909ca9b6ac978b7e7164584b3e3125180b0013202c3946535f6c7986929facb9a79d959393939393939393939393939393939393949597999c9fa3abaca49f99928d837b6e695e554c41352c21110700000000010c18222d363f454a4b5359636a6c6c6c6c6b636059514a423c332a2a3139404550575f626a6c6c6c6c6c5f574d53443f3830261c11060000030f1b27333f4953626f7c88949eabab9f958c7f726c625a534e4a4948484a4e545c606d75818e97a1ada3998d8074685d524639291e13080000000000000000000002070a0c0d0908060a1724303d4a5763707d8a96a3b0a3978a7d7064574a3d3124170a00000000000000000000000000000000040f19222d363e44505b666d79828f95a0a59d928c7f726c62594f4c565e696e7c859298a2a39892867c6f695e564c433930261d140a01000000000000000000000007131d28313d47515b606c77808c919ea1a9aea59e98928d87837f7c79777674747474747677797c7f83888e92999fa6aea8a199928b7f736d635a50463c2f261c0e050000000000000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b0013202c3946535f6c7986929facada093867a6d60534d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4a49453e362c22170c00000000000000000d19242f3a444f59626c717e868f949c9a938e8883807e7c7c7f83868a8e92989da0a7a39f97928a80736e645a50443a3024190d00000000000008121a242c363e48505a616c717e879292867b6e61697683908f8275685c4f4235291c0f000714212e3a4754616d7a86868686868686867b6e6154483b2e2115080005111d2a36414c565e61646464646875828e9ba8aca09386796d6464646464646464646464646464646260584e43372b20170d02000000000000000000000000000000000000000000000000000000000c1926333f4c5966727f8c939393939495979a9d9f97918e8b85817b736d675e564d453b30271d1207000000000000000000000006121f2c3845525e6a757979797978706b605c544d5151525353524b515a61696e777979797976695f53463a2d211407000000000000000000000013202c3946535f6c7986929facada093867a6d60585858585858585858585859595a575f61666c717b84919aa4afada2978a7e7164574b3e3124180700000000000000000000000000000000000000000000010d1a2734404d5a6773808d9aa69b8e8174685b4e4135281b0e0200000000000000000000000000000000000013202c3946535f6c7986929facada093867a6d6053473a2d201919191919191919191a191e2028323a4653606d7986929facafa49a897c6f6356493c302316090013202c3946535f6c7986929facb9afa7a2a09f9f9f9f9f9f9f9f9f9f9f9f9f9f9fa0a1a1a3a6a8a6a8a09e9a938f8780796e695e574d433a2f231a1000000000000006111b242d343a3d3e525e6a757979797978706b605c544d453f36333c434b515a61696e777979797976695f53463a342e261e150a000000000b17222d3847535f6a75828f99a3afa79f92877e716c625f5857565555575860666d737f8c939ea9a89f92867b6e61564c413529170d02000000000000000000070d131619191515120f1724303d4a5763707d8a96a3b0a3978a7d7064574a3d3124170a000000000000000000000000000000000a16212b343e48515b606c78818e949fa69e938d80746d635a504b555d686e7b849197a2a49992867d706a5f574d443a31281e150b02000000000000000000000000010c161f2b353f44505b656c747f8a92979ea6acaaa29f9a93908c898684828181808181828486898c90959a9fa3ababa49f9691877e736d635b51473e342a1d140a000000000000000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b0013202c3946535f6c7986929facada093867a6d605a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a575550483e33281c11050000000000000008131e28323d47505a626c717b82898f92999b95908d8b89898c8f92999b9fa2a9a29e99928e857e736e645c52483e32281e13080000000000050e1a242c363e48505a616c717e879292867d70695e697683908f8275685c4f4235291c0f000713202d3946525e6876797979797979797976695e52463a2d201407000713202d3946525e686d717171717174818e9ba7ada093877a717171717171717171717171717171716f6a6054473c31261a0e02000000000000000000000000000000000000000000000000000000000c1926333f4c5966727f868686868687888a8d90959a9e9b98928d8680796e695f574d43392e23180c03000000000000000000000613202c3946535f6c7987868686847d736d665f5751464146454d555c606c717b83868686867b6e6155483b2e221508000000000000000000000013202c3946535f6c7986929facada093867a6d65656565656565656565656566666769696e72787e859196a1acb1a79f9285796d6053473a2d20140700000000000000000000000000000000000000000000010d1a2734404d5a6773808d9a9a9a8e8174685b4e4135281b0e0200000000000000000000000000000000000013202c3946535f6c7986929facada093867a6d6053473a2d2525252525252525252627252a2d323a444e5863707d8998a2aeac9f93867a6d6154473a2e2114070013202c3946535f6c7986929facb9afa7a2a09f9f9f9f9f9f9f9f9f9f9f9f9f9f9fa39f9f9e9d9b999796918c87827c736d675e574d453b31281e11080000000000000009121b22292e3946535f6c7987868686847d736d665f575146413e454d555c606c717b83868686867b6e6155483b2e231c150c030000000006111b2b37434e58626f7c87929fa6aea39992877e766f6a666462616263666a6f78808c919ca5aaa0968c8073695e53443a302419050000000000000000010a12191e23252622211f1b1724303d4a5763707d8a96a3b0a3978a7d7064574a3d3124170a000000000000000000000000000000030f1b27323d47505a636d74808d939ea69f948e81786c605b514a545c676d7a839096a1a49f93877e716b60584e453b32281f160c030000000000000000000000000000040d192327333f49535b606d737d858f949da0a7acaca49f9c989892918f8e8d8d8d8e8f919298999d9fa7acaca69f99938d847d716c635b51493f352c22180b02000000000000000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b0013202c3946535f6c7986929facada093867a6d6767676767676767676767676767676767676767676767676767676767676767676764615a5045392d21140800000000000000010c16202b353f48505a61696e767d8287929fa09d9a979696999c9fa3a9a29f9b97928d86817a716c635c524a40362d20160c0200000000020d17202c363e48505a616c717e879292867d706b6057697683908f8275685c4f4235291c0f0005111d2a36414c565e6c6c6c6c6c6c6c6c6c6c5e574d42362a1e1205000714212e3a4754616d7a7e7d7d7d7d7d828f9ca9b1a4988b7f7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7c6f62574d42372b1e1205000000000000000000000000000000000000000000000000000000000c1825323e4b57636d72797979797a7a7b7e8083888d9399a09f99928c837b6e695f554b4034281f140900000000000000000000000b1825323e4b5865717e8b9296918780786e69625b524c4550575f676d747e869095948d8074695f53463a2d211407000000000000000000000013202c3946535f6c7986929facada09386797272727272727272727272727272737476787b7f848a9297a1a8b2a9a0958c7f72675d5145382c1f130600000000000000000000000000000000000000000000010d1a2734404d5a6773808d8d8d8d8d8174685b4e4135281b0e0200000000000000000000000000000000000013202c3946535f6c7986929facada093867a6d6053473a32323232323232323232333330363a3e444c565f6a75818e9baab4aa9d918477685d5246392d2013070013202c3946535f6c7986929facb9a79d959393939393939393939393939393939399929291908f8d8a8784807b756f6a605c554d453b33291f160c0000000000000000000911181d25323e4b5865717e8b9296918780786e69625b524c4550575f676d747e869095948d8074695f53463a2d21110a030000000000000f1b26313c47535f6a73808c949fa7aba399928b827c7773706f6e6f7073777c838d929ca3aba2989184796d60574d4232281e130800000000000000000a131c242a2f32332f2e2b262024303d4a5763707d8a96a3b0a3978a7d7064574a3d3124170a00000000000000000000000000000007131f2c38434f59616c727f8c929da5a0959082796d665b5044505b666d79828f95a0a59c928b7f726c61594f463c332920160d0400000000000000000000000000000000071017222d384149505b636b707b828990959c9fa4acaca9aaa39f9d9c9b9a9a9a9b9c9d9fa3aaaaababa39f9b948f878079706b625a514940372e231a100600000000000000000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b0013202c3946535f6c7986929facada09386797373737373737373737373737373737373737373737373737373737373737373737373716c6155493c3023170a0000000000000000040d19232d363f49515a61696e757b818e9aa7aaa7a4a3a3aba39f9c9997928e8a85807b746d68615a524a40382e241b0e04000000000008141f29323e48505a616c707e879291857c6f6b646464697683908f8275685c4f4235291c0f00010d1925303a444c525f60606060606060605f524d453b30251a0e02000714212d3a4754606d7a868a8a8a8a8a8f949fabb3a79b918b8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8377695f53463a2d211408000000000000000000000000000000000000000000000000000001020a16222f3a46515b63666c6c6c676d6e6f7173777c81879195a0a39f9590847b6e675c51453b30251a0e02000000000000000000000b1724313d4a56626d73808c9399938d837b726d615e56515a61696e79818a9298958f82786d60574d42372b1e1205000000000000000000000013202c3946535f6c7986929facb2a5988b7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f80818384888b91959fa2a9afa8a1979083796d60554b4035291d100400000000000000000000000000000000000000000000000a1724303d4a5763707d80808080807e7164574a3e3124170b0000000000000000000000000000000000000013202c3946535f6c7986929facada093867a6d6053473f3f3f3f3f3f3f3f3f3f3f3f404142464750565d686f7c87939facb0a69a8d807367564c4135291d11050013202c3946535f6c7986929facb9a2958b86868686868686868686868686868686868685858382807e7b77736e69625f58514b433b332921170d0400000000000000000000060c1724313d4a56626d73808c9399938d837b726d615e56515a61696e79818a9298958f82786d60574d42372b1e1200000000000000000a15202b37434e58606d78828f959fa6aba39f948f8883807d7c7b7b7d7f838990959ca4aba39992867c6f675d51453b3120160c020000000000000007121c252e353b3e403c3b37322a24303d4a5763707d8a96a3b0a3978a7d7064574a3d3124170a0000000000000000000000000000000915222f3b4854606b717e88939fa4a19690837a6d675c544a4653606c78818e949fa69d938c80736d625a50473d342a21170e0500000000000000000000000000000000000006111b262f383f44515961696e757d83898f939a9c9fa2aaa7a8aaa9a7a7a7a7a7a9a9a8a6a9a29e9b99928e88827c746d676059504840372e251c11080000000000000000000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b0013202c3946535f6c7986929facb3a79a8d8080808080808080808080808080808080808080808080808080808080808080808080807e7164574a3e3124170b00000000000000000915202a333f48515b636c717b81878e939da9acaba49f9d999992908c8985817d79746e69615e56504840382e261c12090000000000020e1925303b44505a616c707e879291847c717171717171717683908f8275685c4f4235291c0f000008131e28323a41465353535353535353534846423b33291f140900000613202c3945525d6876828f979797979c9fa6b0b7aca39b9897979797979797979797979797979795887b6e6155483b3025190e0200000000000000000000000000000000000000000407090a0d0e0f10121e2a353f495157596060555d60616264676a6f747c839095a0a7a0969083796d60574d42362a1e1205000000000000000000000915212e3a45505a636e74818e939f9590867e756d68605c606c717b838e939f969083796d665c50453c31261a0e02000000000000000000000013202c3946535f6c7986929facb9a79b918b8b8b8b8b8b8b8b8b8b8b8b8b8b8c8c8d8f9196989da0a7adaba59e9691857b6e675c5143392f24180c0000000000000000000000000000000000000000000000000916232f3c4855616b707373737373716c6155493d3023170a0000000000000000000000000000000000000013202c3946535f6c7986929facada093867a6d60534c4c4c4c4c4c4c4c4c4c4c4c4c4d4e4d52545a61686d7a83909aa4afac9f94887c6f6255493c3024190d010013202c3946535f6c7986929facada093867979797979797979797979797979797979797878777573716e6966625f57534e454039302920170f050000000000000000000000000915212e3a45505a636e74818e939f9590867e756d68605c606c717b838e939f969083796d665c50453c31261a0e0200000000000000030f1b26313c44505c666d7a8390949fa4aca69f9c95908c8a8988888a8c90959d9fa7a8a19992877e716a5f554b4033291f0e0400000000000000020d19242e3740464b4c4847433c3429303d4a5763707d8a96a3b0a3978a7d7064574a3d3124170a000000000000000000000000000000091623303c4956636f7c86929a93939791847b6e685d554b424d5a6673808d93939393948e81746e635b51483e352b22180f0500000000000000000000000000000000000000000a141d262d3340474f575e616b70777d82878b8f9298989a9b9d9e9e9f9f9f9e9d9d9b999797928e8a86817c766f6a605d554f473e362e251c130a000000000000000000000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f02000000000000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b0013202c3946535f6c7986929facb9a99d928d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8174675b4e4134281b0e01000000000000020e1a26313c45505a636d727e868e939a9da5a39f9c9993908c898683807c7975706d66615e57524c443e362e261c140a00000000000005111e2a36414d56616c707e879292867f7e7d7d7d7d7d7d7d7e83918f8275685c4f4235291c0f0000020c1620283036394646464646464646463b3a36302921170d02000004111d2935414c5665727e8b9aa49f9fa1a3a9b1bbb5aca7a49f9f9f9f9f9f9f9f9f9f9f9f9f9fa7988c7f7265564c41362a1e1105000200000000000000000000000000000000050b101416171a1b1c1d1e1f232e373f464b4c53534b5153545557585f626a6f7a839097a1a8a0958d8074695e52463a2d2014090000000000000000000005111d29343f48525b606d78818f959f98928b827a706b676d747e8690959d9891847b6e675d544a3f332a1f140900000000000000000000000013202c3946535f6c7986929facb9ada39b989898989898989898989898989899999a9c9ea1a8aaacaaa69f9c938e847c6f695f554b4031271d12070000000000000000000000000000000000000000000000000714202c38444f596163676767676764615a5045392d2114080000000000000000000000000000000000000013202c3946535f6c7986929facada093867a6d6058585858585858585858585858595a5a565e61656c707a829095a0acafa49a8f82766a5f53473b2e1e1308000013202c3946535f6c7986929facada093867a6d6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6b6a686664615e5755534d47433c342e271e170e050000000000000000000000000005111d29343f48525b606d78818f959f98928b827a706b676d747e8690959d9891847b6e675d544a3f332a1f14090000000000000000000a152028343f4a545d686d7a828d939a9fa6aba7a09d999795949596999d9fa7aba39f9691877e716c61584e43392f21170d000000000000000007131e2a35404952575955534e463f35303d4a5763707d8a96a3b0a3978a7d7064574a3d3124170a0000000000000000000000000000000c1925323f4c5865727f868686868686857c6f695e564c4343505c69768286868686868682786d605c52493f362c23191006000000000000000000000000000000000000000000020b141b2227353e454d525960636b70757b7e8285888b8d8f9091929292929191908e8c8a8885817e7a746f6a626058514b433d352d241c130a01000000000000000000000b1825313e4b5864717e8b97a4b1a89b8e8175685b4e4235281b0f06060606060000000000000000010e1b2734414e5a6774818d9aa7b1a4978b7e7164584b3e3125180b0013202c3946535f6c7986929facb9aea49d9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a8e8174675b4e4134281b0e0100000000000006121e2b37424e57626d727f8a92989fa4a29f99928f8b8683807d797673706d6664605c54534d46413a322c241c140a020000000000000714202d3946525e68707e87929999928c8a8a8a8a8a8a8a8a8a91958f8275685c4f4235291c0f000000050e161e252a2d2e39393939393939392e2d2a251f170f05000000010d19242f3b4754616e7b879393939394979fa9bcaea49c9993939393939393939393939393939393908376685e5246392d20140c070f0b0a080500000000000000000000000810161c202324262728292a2b2c202e353a3e3f464640454747484b4e535860686d7a85929ea9a79f92877b6e6154483b31261a0e02000000000000000000010c18222d364044505c666d79829095a09f938f857d746f79818a9298a09992867c6f695e554b42382e21180e0300000000000000000000000013202c3946535f6c7986929facacacada7a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a6a7a9a9a7aca49f9d99948f89817a6f6a5f574d43392e1f150b0100000000000000000000000000000000000000000000000004101c28333e474f55575a5a5a5a5a575550483e33281d11050000000000000000000000000000000000000013202c3946535f6c7986929facada093867a6d656565656565656565656565656566666769696e72777d8590949fa7b1a79f93877c6f62584e43372b1f0c02000013202c3946535f6c7986929facada093867a6d6060606060606060606060606060605f5f5e5d5c5a5754524d4847423c373128231d150c050000000000000000000000000000010c18222d364044505c666d79829095a09f938f857d746f79818a9298a09992867c6f695e554b42382e21180e03000000000000000000030c17232e38424c565d686d78808790949b9fa2aaa8a6a3a2a1a2a3a6a8a9a29f99928d847d716c615a50463c31271d0f0500000000000000000a16232f3b46525b6366625f585146413a3d4a5763707d8a96a3b0a3978a7d7064574a3d3124170a0000000000000000000000000000000b1824313e4a56626d72797979797979786f6a5f574d443a414e5a667076797979797979756d665c504a40372d241a11070000000000000000000000000000000000000000000000020a1117232c333b42464f54596063696e7276797c7e808283848585868585848382807d7b7975716d68625f58544e45403a312b231b120a0100000000000000000000000b1825313e4b5864717e8b97a4aca89b8e8175685b4e4235281b0f13131313130c06060300000000010e1b2734414e5a6774818d9aa7aca4978b7e7164584b3e3125180b0013202c3946535f6c7986929facacacaea9a7a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a69a8e8174675b4e4134281b0e010000000000000814212e3a47535f6a717e8b919fa2a69f98928d87827e7a7673706d676663605c5453514b46423b363029201c17110a020000000000000814212e3b4754616e7b859299a3a39f9793939393939393939393938f8275685c4f4235291c0f00000000050c13191d20212d2d2d2d2d2d2d2d21201e1a140d0500000000000814202d3a46525e69768386868686878d97aab4a89c928c8686868686868686868686868686868686887a6e6154473b2e211c181c1b171714110c05000000000000000008111a21282c2f30333435363738392d2c282f3233392f35393a3b3c3e43474e565e68717e8b97a1ada3998d807367574d42362a1e12050000000000000000000006111b2428343f4a545d676d7a839196a19e979188807b838e929fa29f93877d706a5f574d433a30261c0f060000000000000000000000000013202c3946535f6c7986929f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9fa49f9f9f9e9d9c9a999a93908d88827d756d685f584e453c30271d0d0300000000000000000000000000000000000000000000000000000b16212c353e44484a4d4d4d4d4d4a49453e362c22170c000000000000000000000000000000000000000013202c3946535f6c7986929facada093867972727272727272727272727272727272737475787b7f838a91979fa6b0a79f958d80746a6054463c32261b0f00000013202c3946535f6c7986929facada093867a6d605353535353535353535353535353535252504f4d4b4846423b3a37312b262018120b030000000000000000000000000000000006111b2428343f4a545d676d7a839196a19e979188807b838e929fa29f93877d706a5f574d433a30261c0f06000000000000000000000006111c26303a434c565d666d737c83898e9298999b9d9e9f9f9f9e9d9b9997928d87817a6f6b615a50483e342a1f150b0000000000000000000c1925323e4b57636d736f6a625b524c443d4a5763707d8a96a3b0a3978a7d7064574a3d3124170a0000000000000000000000000000000915222e3a46515b62656c6c6c6c6c6c6c625f584e453b323e49545e66696c6c6c6c6c6c69605c544a3f382e251b1208000000000000000000000000000000000000000000000000000006111a202930363d44484f54565e6165666d6f7174757778787979787877767573716f6d6664605d56534e47433d352f281f191109000000000000000000000000000b1825313e4b5864717e8b979f9f9f9b8e8175685b4e4235281b1320202020201913120f0b060000010e1b2734414e5a6774818d9a9f9f9f978b7e7164584b3e3125180b0013202c3946535f6c7986929f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9a8e8174675b4e4134281b0e01000000000005111e2a36424d57626e7b86929fa3a59e949086807b75716d686663605d555653504a464540393631302e2d2b28231c140c0400000000000714202d3946525e68717e87929999928a8686868686868686868686868175685c4f4235291c0f000000000002080d11131420202020202020201514120e090200000000000005111e2a36424d56667176797979797b8798a3aea6998c8079797979797979797979797979797979797976685e5246392d2c292329282423211d17100800000000000005101a232c33383c3d404142434445453a38342e27262d24292c2d2e2f31373d444c56606c7885919eabab9e918478695f53463a2d2114070000000000000000000000091217232e38424b555d686e7b849197a2a19a938d8890959da59d928b7f726b61584e453b31281e140a000000000000000000000000000013202c3946535f6c7986929393939393939393939393939393939393939a93929291908f8e8c898683807b76706b615e564e463c332a1e150b00000000000000000000000000000000000000000000000000000005101a232c33383c3d40404040403e3d39332c241a1005000000000000000000000000000000000000000013202c3946535f6c7986929facb2a5988b7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f80818285878b90959ea1a9aea69f959083796d60584e43342a20150a00000013202c3946535f6c7986929facada093867a6d6053474646464646464646464646464645454442403e3b3a36302e2b261f1b150c0700000000000000000000000000000000000000091217232e38424b555d686e7b849197a2a19a938d8890959da59d928b7f726b61584e453b31281e140a000000000000000000000000000a151e28313a444c545c606a6f767c8185898c8e909192929292918f8c8985807b746d68605950483e362c22180d030000000000000000000d192633404c5966737f7c726d615d564f444a5763707d8a96a3b0a3978a7d7064574a3d3124170a00000000000000000000000000000006121e29343f495156586060606060605f55534e463c332938424c545a5c6060606060605c53504a42382e261c130900000000000000000000000000000000000000000000000000000000080e171f252a33383d44484d5254545c60626567686a6b6b6c6c6c6b6a6a68666462605c5454524c47433c383229241d160d0700000000000000000000000000000b1825313e4b5864717e8b93939393938e8175685b4e4235281f202c2d2d2d2c26201f1c17110a02000e1b2734414e5a6774818d93939393938b7e7164584b3e3125180b0013202c3946535f6c79869293939393939393939393939393939393939393939393939393939393939393939393939393939393938e8174675b4e4134281b0e0100000000000714202d3a46525e6975828e98a2a89e938e827b736e6964615e565653514b4946443f3a3e4041403e3d3b3a38342e261e160d040000000005111e2a36414d56616c717e879392867e797979797979797979797979756f65594d4134281b0e00000000000000010507071313131313131313080705020000000000000000020e1925303b44555f666a6c6c6c6c7985929faca89b8e81756c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6b5e564c413b3a38342f363531302d28221a120800000000000b16212c353e44484a4d4e4f505152524644403930271c181d20202122262b323a44505b6674818e9aa7ada196887b6e6155483b2e22150800000000000000000000000006111c263039434c565e696f7c859299a3a49f9a959da0a79e948d80746d62594f463c33291f160c02000000000000000000000000000013202c3946535f6c79878686868686868686868686868686868686868686868685858483817f7d7a77736e6a636059524c443c342a21180c030000000000000000000000000000000000000000000000000000000008111a21282c2f30343434343431302d28221a120800000000000000000000000000000000000000000013202c3946535f6c7986929facb9a79b918b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8c8d8d8f9197989da0a7adaaa39f948f837a6d675c51463d3222180e0400000013202c3946535f6c7986929facada093867a6d6053473a3939393939393939393939393938373533312e2d2a25211e1a150f0a0400000000000000000000000000000000000000000006111c263039434c565e696f7c859299a3a49f9a959da0a79e948d80746d62594f463c33291f160c0200000000000000000000000000030c161f28323a424a515860626b6f75797c7f828385858685858482807c79746e6a615e564f473e362c241a1006000000000000000000020f1c2835424f5b687581867f756d686059504a5763707d8a96a3b0a3978a7d7064574a3d3124170a000000000000000000000000000000010d18232d373f464a4c535353535353524847433c342a21303a42494e505353535353534f46443f3830261c130a010000000000000000000000000000000000000000000000000000000000050d141a21272c33383b4246474a545c6a6c6c6c6c6c66605b5f5e5e5d5b59575553504a4745413a37312b272018130c040000000000000000000000000000000b1825313e4b5864717e868686868686868175685b4e4235282b383939393939332d2b28221c140b060e1b2734414e5a677480868686868686867e7164584b3e3125180b0013202c3946535f6c7987868686868686868686868686868686868686868686868686868686868686868686868686868686868686868174675b4e4134281b0e0100000000000814212e3b4754616e7b87939faaa0968e81786e69615e5754524c494745403d3a3840464b4c4e4c4b494846443f3830281f160c01000000020e1925303b44505a616c717e879392877e716c6c6c6c6c6c6c6c6c6c68655d54493d3125190c000000000000000000000000000000000000000000000000000000000000000009141f2932434d555b5d60605b667783909daaaa9d908377675c60606060606060606060606060606054524c4446484745404443423e3d39332c241a100500000004101c28333e474f5557595a5b5c5d5e5f53514a42392e231810131414151b2028333f4a5464717e8b97a4b2a8978a7e7164574b3e3124180b000000000000000000000000000a141e27313a444d575f6a707d879299a49f9f9f9fa9a0958f82786d605b51473e342a21170d04000000000000000000000000000000121f2c3845525e6a757979797979797979797979797979797979797979797979797877767472706d6866625f58544f46413a322a22180f060000000000000000000000000000000000000000000000000000000000000810161c20232427272727272423211d1710080000000000000000000000000000000000000000000013202c3946535f6c7986929facb9ada39b9898989898989898989898989898989899999a9c9ea1a9aaacaba39f98928c827a6d685e554b40342b2110060000000013202c3946535f6c7986929facada093867a6d6053473a2d2d2d2d2d2d2d2d2d2d2d2c2c2b2a29272421201e1a14120e09030000000000000000000000000000000000000000000000000a141e27313a444d575f6a707d879299a49f9f9f9fa9a0958f82786d605b51473e342a21170d04000000000000000000000000000000040d162028303940444e54596063666d707275767879797978777573706d66625f57524c443d342c241a120800000000000000000000020f1c2835424f5b6875828e8b827a6f6b605c545763707d8a96a3b0a3978a7d7064574a3d3124170a0000000000000000000000000000000006111b252d343a3e3f464646464646453c3a37312a221e2830383e4143464646464646423a38342e261e140a010000000000000000000000000000000000000000000000000000000000000002090e161c21272c30363a44505c66757979797979726c665f5751504f4d4a4846443f3a39352f2b26201b160d0701000000000000000000000000000000000a1724303d4956626c7179797979797979756f65594d402e34384546464646463f3938332d261d180f091a2733404c58646e7479797979797979716c6256493d3024170a00121f2c3845525e6a757979797979797979797979797979797979797979797979797979797979797979797979797979797979797979746f64594c4033271a0d0100000000000b1825313e4b5864717e8b99a4aa9d9184796d665f57524d4746413d3a38352f3040495157595b5958565453504a423a31281e13080000000008141f29323e48505a616c717e889392877e716c615a6060606060605c59544b42372c2115090000000000000000000000000000000000000000000000000000000000000000020d1720313b434a4e50534a546774818e9aa7ac9f9286796d6053535353535353535353535353535347464a51535453514b504f4e4a49453e362c22170c0000000714202c38444f596163666768696a6b6c605c544a4034281c100607080a0e17222d3d4a5763707d8a96a3b0a5988b7f7265584c3f3225190c00000000000000000000000000020c151f28323b454e58606b717e8793939393939393969083796d665c50493f352c22190f0500000000000000000000000000000000111d2a36424e59636a6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6b6a69676663615e5655534e48443d363028201810060000000000000000000000000000000000000000000000000000000000000000050b101416171a1a1a1a1a171714110c05000000000000000000000000000000000000000000000013202c3946535f6c7986929facacacada7a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a6a7a8aaa8a6a7a09d99928e867f786d685e564c43392e22190f000000000013202c3946535f6c7986929facaca093867a6d6053473a2d20202020202020202020201f1f1d1c1a181514120e0906020000000000000000000000000000000000000000000000000000020c151f28323b454e58606b717e8793939393939393969083796d665c50493f352c22190f050000000000000000000000000000000000040d161e272e343d43474f54545c606366686a6b6c6c6c6b6a686663605c54534e46413a322b221a12080000000000000000000000020f1c2835424f5b6875828e938f847d736d665e5763707d8a96a3b0a3978a7d7064574a3d3124170a000000000000000000000000000000000009131b23292e3132393939393939392f2e2b262018161e262d323536393939393939362d2b28231c140c0200000000000000000000000000000000000000000000000000000000000000000000050b10161c1f252d3a4653606d7987868686867f786e69625b524d443e3c3a38342e2c29241e1b150f0a040000000000000000000000000000000000000815212d3945505a62646c6c6c6c6c6c6c68655d53483d383f445253535353534c46443f382f2a2119141824303c48535c64676c6c6c6c6c6c6c64625a5045392d21150800111d2a36424e59636a6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c67645d53483c3024180b0000000000010d1a2734404d5a6773808d9aaba4988b7e71675c544d46423b3935302d2c292e3842515b63666866646361605c544c433a2f24190d01000000020d17202c363e48505a626c717e889392877e716c61574d535353534f4d49423930261b1004000000000000000000000000000000000000000000000000000000000000000000050e1f2831383e4243464b5865717e8b98a8aea399897c7063564946464646464646464646464646404a545c6061605c555d5c5b575550483e33281d110500000916232f3c4855616b70737475767778786d665c5144382c1f12060000000616232f3c4956626f7c8995a2afa6998c807366594d4033261a0d0000000000000000000000000000030d162029333c464f59616c727f8686868686868686847b6e675d544a3f372d231a100700000000000000000000000000000000000e1a26313d4751595e5f6060606060606060606060606060606060606060605f5f5e5d5c5b595654524c4847433c38332a251e160e0600000000000000000000000000000000000000000000000000000000000000000000000407090a0d0d0d0d0d0b0a08050000000000000000000000000000000000000000000000000013202c3946535f6c7986929f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9fa39f9f9e9d9b999795908c86817b736d665e564c443a30271d1007000000000013202c3946535f6c7986929f9f9f9f93867a6d6053473a2d20141313131313131313131212110f0d0b08070502000000000000000000000000000000000000000000000000000000000000030d162029333c464f59616c727f8686868686868686847b6e675d544a3f372d231a100700000000000000000000000000000000000000040c151c232832373d43484b515356595b5d5e5f5f5f5f5e5c595653514b47423c35302820191008000000000000000000000000020f1c2835424f5b6875828e9b96918780786e696163707d8a96a3b0a3978a7d7064574a3d3124170a0000000000000000000000000000000000010911181e2224252d2d2d2d2d2d2c22211f1a150e0c141b212628292d2d2d2d2d2d29201f1c17110a0200000000000000000000000000000000000000000000000000000000000000000000000000050b10141f2b3844505c66717e879399928c827b726d615e565046413a322924201d19130f0a04000000000000000000000000000000000000000005111d29343e48505658606060606060605b59534b4138424a505e5f6060605f5953504a423b332a251f17202b36414a53585a60606060606060585650483e34291d1105000e1a26313d4751595e5f606060606060606060606060606060606060606060606060606060606060606060606060606060606060605b59534a41362b2014080000000000020e1b2835414e5b6874818e9ba7a194887b6e61554b423b36302d292523282c343f4a54636d73747371706e6d665d564c4135291d110400000000050e1a242c363e48505a626c717f889392877e71695f534646464642413d3730271e140900000000000000000000000000000000000000000000000000000000000000000000000d161f272d3236373b4855616e7b8896a0acab998d807366594f4338393939393939393939393844515c666d6e6d676b6a696864615a5045392d21140800000a1724303d4a5763707d80818283848586786d6053463a2d20160d0909070c1724303d4a5763707d8a96a3b0a69a8d8073675a4d4034271a0d010000000000000000000000000000040e17212a343d47505a626d727979797979797979786e695e554b42382e251b11080000000000000000000000000000000000000915202b353f474e525353535353535353535353535353535353535353535353525251504e4c4a4746413b3a37312c272119130c05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929393939393939393939393939393939393939393939399929291908f8d8a87847f7b756e69605c544c443a32291e150b00000000000013202c3946535f6c7986929393939393867a6d6053473a2d20140706060606060606060605040200000000000000000000000000000000000000000000000000000000000000000000000000040e17212a343d47505a626d727979797979797979786e695e554b42382e251b1108000000000000000000000000000000000000000000030b121820272b323839404546494c4f505252535252514f4d4946454039373129251e160e0700000000000000000000000000020f1c2835424f5b6875828e9ba199928c827b706c63707d8a96a3b0a3978a7d7064574a3d3124170a00000000000000000000000000000000000000060d121518192020202020201f1515120f0a03030a1015191c1d2020202020201c1312100b06000000000000000000000000000000000000000000000000000000000000000000000000000000000003101c28343f4a54616c717e87939a9490867f766e69615a524c443e352f281f19100700000000000000000000000000000000000000000000000c17222d363e45494b535353535353534e4d4841343f4a545c6a6c6c6c6c6c66605b544d453f3630292019252f3841484c4e535353535353534b49453e362d22170c00000915202b353f474e525353535353535353535353534a545c6a6c6c6c6c6c66605b544d5353535353535353535353535353535353534e4c4841382f251a0f030000000000020e1b2835414e5b6874818e9ba7a194877a6e6154473e39352f3333332e34383d44505c66737f817f7e7c7b786d685d5245392c201306000000000008121b242d363f48505a626d727f8b9192867b6e6155483b39393534312c261e150c020000000000000000000000000000000000000000000000000000000000000000000000040d151c2226292d3a46535f697784919eaaaa9d9184776b6054483d31282d2d2d2d2d2d2d2d3a4653606d787b7a7978777675716c6155493d3023170a00010e1a2734414d5a6774808c8d8e8f9091887c6f6255483e31281f1a171617181d27333f495364717e8b97a4b1a6998c807366594d4033261a0d00000000000000000000000000000000050f18222b353e48515b62656c6c6c6c6c6c6c6c6b615e574d433a30261c130900000000000000000000000000000000000000040f19242d353d4245464646464646464646464646464646464646464646464646454443413f3d3a3936302e2b26201c160d080200000000000000000000000000000000000000000000000000000000000000000000020608080b0e1011121313121211100d0b08070502000000000000000000000000000000000000000013202c3946535f6c79878686868686868686868686868686868686868686868686868685858382807d7a77736e69615f57504a423a322920170c0300000000000013202c3946535f6c798786868686868686796d6053473a2d2014070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f18222b353e48515b62656c6c6c6c6c6c6c6c6b615e574d433a30261c1309000000000000000000000000000000000000000000000000070c151b21272c2e34383a3d3f424345464646454442403d3a38342e2b262019130c040000000000000000000000000000020f1c2835424f5b6875818e969ea39f9490857d746d707d8a96a3b0a3978a7d7064574a3d3124170a00000000000000000000000000000000000000000106090b0c13131313131312090806030000000005090d0f101313131313130f07060300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17232e3842505a616c717e88939a98928b827b716c615e564f45413a312b22190f040000000000000000000000000000000000000000000006111b242d34393d3e4646464646464642403d373844505c66757979797979726c665f575146423b3229251e262f363c4041464646464646463e3d39342d241b11060000040f19242d353d4245464646464646464646464644505c66757979797979726c665f5751464246464646464646464646464646464641403c362f261d1308000000000000000d1a2733404d5a6673808d99aca295897c6f62585047454140403f40404045464f57606d78858e8c8b8987867a6d6054473a2d21140700000000000009121b242d363f48505a626d727f8b8c7f72695f53463a2d2d292825211b140c0300000000000000000000000000000000000000000000000000000000000000000000000000030a11161a1e2a36424d576773808d9aa7aca096897c6f63594f433a3129242322222429333f4a5463707d878685848382817e7164574a3e3124170b00000b1825323e4b5865717e8b989b9c9d988b7f7265594f433a312a2524232323282f3744505b6574818e9aa7b5ab988b7e7265584b3f3225180c0000000000000000000000000000000000061019232c363f4951565860606060606060605e54524d453b31281e140a01000000000000000000000000000000000000000008121b242b3136383939393939393939393939393939393939393939393939393837363433302e2d2a25211f1a15100b050000000000000000000000000000000000000000000000000000000000000000000205090e121415181b1d1e1f20201f1f1e1c1a181514120e0905020000000000000000000000000000000000121f2c3845525e6a7579797979797979797979797979797979797979797979797979797878777573716e6866615e57534d443f38302820170e0500000000000000121f2c3845525e6a75797979797979797976675c5145382c1f1306000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000061019232c363f4951565860606060606060605e54524d453b31281e140a0100000000000000000000000000000000000000000000000000040a0f161b1d23282c2d303335373839393938373533302d2c28231d1a150d080200000000000000000000000000000000091623303c4956636f7d848e939fa29f97928a8079707d8a96a3b0a3978a7d7064574a3d3124170a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c26303e48505a626c717f88939f9f948f857e756d686159514b433d342b21160a000000000000000000000000000000000000000000000009121b22292d3031393939393939393534312d3a4653606d7987868686867f786e69625b524d443e35302820252b3033343939393939393931302d29221b12090000000008121b242b313638393939393939393939393a4653606d7987868686867f786e69625b524d443e353039393939393939393939393433302b251d140b01000000000000000b1824313e4b5764717e8a9aa4a69a8d80736a615a54524c4d4d4c4c4d4b515359606a717e8b979997968f8376685d5245392c2013060000000000000009121b242d363f48515b626d727f80736d63574d42362a1e1c1b191510090200000000000000000000000000000000000000000000000000000000000000000000000000000000050a0e1a26313c4855626f7c88959faba89b8f82756b60554b433b352f2f2f2f2f353b44505b6673808c989291908f8b7e7164584b3e3125180b00000815222e3b4855616e7b8896a0a9aa9d9083776b61554b433c36313030302e3439404b55606c7884919eaaafa499897d7063564a3d3023170a00000000000000000000000000000000000007111a242d373f464a4c5353535353535353524846423b33291f160c020000000000000000000000000000000000000000000009121920262a2c2c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2c2c2b2a2928262321201d1914120f090300000000000000000000000000000000000000000000000000000000000000000002080e11151a1e21222528292b2c2c2c2c2b2b29272522211e1a14120e0902000000000000000000000000000000111d2a36424e59636a6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6b6a686664615e5654534d46423c342e261e160e050000000000000000111d2a36424e59636a6c6c6c6c6c6c6c6c6c5c554b4034291c10040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007111a242d373f464a4c5353535353535353524846423b33291f160c0200000000000000000000000000000000000000000000000000000000040a0f12181c1f202326282a2b2c2c2c2c2b292623201f1c18120e09030000000000000000000000000000000000000915222f3b4854606b6f7a818a92989fa29e928d837b7d8a96a3b0a3978a7d7064574a3d3124170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004080a0a131313131310100d0a050000000000000000000000000000000000000000000000000000000000000a141e2c363e48505a626d727f8b919b9e97928a817a706b605d554e463d32271b0f0300000000000000000000000000000000000000000000000911171d2124252d2d2d2d2d2d2d28271f2b3844505c66717e879399928c827b726d615e565046413a3229241d2427272d2d2d2d2d2d2d2524211d17110900000000000009121920262a2c2c2d2d2d2d2d2d2d2d2b3844505c66717e879399928c827b726d615e565046413a3229242d2d2d2d2d2d2d2d282724201a130b0200000000000000000814212e3b4754616e7b87939fac9f92867c706c64605d565a5959595a555c60636b707c85929fa9a1968b7e7265564c4135291d1104000000000000000009121b242d363f49515b626d72736e635b51453b31261a0e0e0c090400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915212e3a47535f6a7683909da7aa9e93897c6f675d554c45413d3c3b3c3c40454d57606c7884919e9f9e9d95877a6e6154473b2e21140800000814212d3a47535f697784919daaaca0958a7d70675d554d46423e3d3c3d3e40454b515c67707d8a96a0acac9f93867a6d6054473a2d2114070000000000000000000000000000000000000008121b252d343a3e3f4646464646464646453b3a36302921170d04000000000000000000000000000000000000000000000000080f151a1d1f20202020202020202020202020202020202020202020201f1f1e1d1b19171413110d08060200000000000000000000000000000000000000000000000000000000000000000002080d14191e20262b2e2f323436383939393938373634322e2d2b26201e1a140e0902000000000000000000000000000e1a26313d4751595e5f6060606060606060606060606060606060606060606060605f5f5e5d5c5a5754524c4846423b373128231c140c040000000000000000000e1a26313d4751595e5f606060606060605f514b43392f23180c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121b252d343a3e3f4646464646464646453b3a36302921170d040000000000000000000000000000000000000000000000000000000000000000070c10131316191c1d1f1f201f1f1e1c1a161313100c070000000000000000000000000000000000000000000713202c38444f5960686d757e8590949fa39d959086818e9ba8b0a3978a7d7064574a3d3124170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050b1014161720202020201d1c1a16110a0300000000000000000000000000000000000000000000000000000000020c1a242d363f48505a626d727f8b919ba29f938e857d746d6760584e43382c1f1307000000000000000000000000000000000000000000000000060c11151718202020202020201b1b1c28343f4a54616c717e87939a9490867f766e69615a524c443e352f281f191b20202020202020181715110c060000000000000000080f151a1d1f20202020202020201c28343f4a54616c717e87939a9490867f766e69615a524c443e352f281f1920202020201b1a18140f08010000000000000000000714202d3946525e6876828f9aa4a39892857d76716d6868676666666668676d70757d859197a2a49e9184796d6053463a2f24190d0100000000000000000009121b242d373f49515b626566635c52493f33291f140900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2b37434e5864707d8a95a0aca59d9183796d675e56514b4a494848494b51575f69717e8b96a1aca89d908377685e5246392d201407000006121e2b37424d5766737f8c98a2aea79e9184796d675f57534d4b4a494a4b4b51555d606d7983909da8b2a99d908376685d5245392c201307000000000000000000000000000000000000000009131b23292e31323939393939393939382e2d2a251f170f05000000000000000000000000000000000000000000000000000004090e11121313131313131313131313131313131313131313131313131211100e0c0a070705010000000000000000000000000000000000000000000000000000000000000000000000040c13191f252a2d31373a3b3e41434445464645454443403e3b3a37312d2a251f1a140d050000000000000000000000000915202b353f474e5253535353535353535353535353535353535353535353535353535252504f4d4a4746413b3a36312b261f17110a02000000000000000000000915202b353f474e5253535353535353535345403931271d12070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009131b23292e31323939393939393939382e2d2a251f170f0500000000000000000000000000000000000000000000000000000000000000000000000406070a0c0f101213131312110f0d0a0706040000000000000000000000000000000000000000000000030f1b27323d474f565d606c717b828c9299a0a098928e939eaab0a3978a7d7064574a3d3124170a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000810171c2023242d2d2d2d2d2a2926221c150d040000000000000000000000000000000000000000000000000000000008121b242d363f48515b626d727f8c919ca39e97918a81796f6a6054483b2e221509000000000000000000000000000000000000000000000000000005080a0b131313131313130f0b17232e3842505a616c717e88939a98928b827b716c615e564f45413a312b22190f1313131313130b0a0805000000000000000000000004090e1112131313131313130b17232e3842505a616c717e88939a98928b827b716c615e564f45413a312b22190f1313130e0d0b0803000000000000000000000005111e2a36414d56626f7c87939fa5a297928a837d7a777573737273737476797d82889197a1a59d928a7e71675c514538281e1308000000000000000000000009121b252d373f495156585a57524a40372d21180d03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1b26313c4653606c7883909aa4aca0958f82796e68605d555756555556555d60696e7b85929fa8aca1968a7e7164564d41362a1e11050000020e1a26313c4754616d7a86929fa8aca1969082796e69615e575857565657545c60676d75818e95a0acada2978b7f7265564c4135291d11040000000000000000000000000000000000000000010911181e2224252d2d2d2d2d2d2d2d2b21201e1a140d0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080e161e25293036393c4247484b4e50515253535252514f4d4b4846423c3a36302a251f170f080000000000000000000000040f19242d353d4245464646464646464646464646464646464646464646464646464645454442403e3b3936302d2a251f1a140b06000000000000000000000000040f19242d353d424546464646464646464638342f271f150b0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010911181e2224252d2d2d2d2d2d2d2d2b21201e1a140d05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16212b353d444c525a61696e787f8791969da29f9b9ea5afb0a3978a7d7064574a3d3124170a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008111a22282d303139393939393736322d271f160d030000000000000000000000000000000000000000000000000000000009121b242d363f49515b626d727f8c9193939393938e847c6f6256493c2f231609000000000000000000000000000000000000000000000000000000000000060606060606060006111c26303e48505a626c717f88939f9f948f857e756d686159514b433d342b21160a000606060600000000000000000000000000000000000104060606060606060006111c26303e48505a626c717f88939f9f948f857e756d686159514b433d342b21160a000601010000000000000000000000000000020e1925303b4754606a73808d939fa4a29f94908a86848280807f7f80818385898f939aa1a49f938d80746c61554b403428160c0100000000000000000000000009121b252d373f464a4c4d4b4740382e251c0f0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a151f2b3744505b656f7c88939fa7a89e948f837a736d6765636262626365676d727b849197a2ada59e9184786d6053463b3025190e020000000915202d3946525e6873808c95a0aaa89f9490837b736e6967646363636465666d7179818e939da7b0a69e92857a6d6054473a2f24190d0100000000000000000000000000000000000000000000060d1216181920202020202020201f1514120e09020000000000000000000000000000000000000000000000000000000000000000000104060606060606060601000000000000000000040607090c0e0f11121213131211100e0b0808060200000000000000000000000000000000000000000000000000020a121a202830353b4146474e5355585b5c5e5f5f5f5f5e5e5c5a5855534d4846423b363029211a120a020000000000000000000008121b242b31363839393939393939393939393939393939393939393939393939393938373533312e2d2a25211e1a140e0903000000000000000000000000000008121b242b3136383939393939393939392c29231d150d0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060d1216181920202020202020201f1514120e090200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003070909131313131313130b0a08040000000000000000000000000000000000040f19232b323a414550575e666c727c848d929ea1a9aaafb7b0a3978a7d7064574a3d3124170a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101a232c33393c3d464646464643423e3831281f150a000000000000000000000000000000000000000000000000000000000009121b242d373f49515b636d737f86868686868686868174675a4e4134271b0e0100000000000000000000000000000000000000000000000000000000000000000000000000000a141e2c363e48505a626d727f8b919b9e97928a817a706b605d554e463d32271b0f0300000000000000000000000000000000000000000000000000000000000000000a141e2c363e48505a626d727f8b919b9e97928a817a706b605d554e463d32271b0f0300000000000000000000000000000000000008141f2b37434e58606d78818d939a9fa69f9c9992908f8d8c8c8c8d8e9092989c9fa49f99938c81786d605a5043392e231804000000000000000000000000000009131b252d343a3e3f403f3b352e261c130a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1b27333f4953606b74808d959fa8a69e959086807a7672706f6e6f6f7274797f869196a1a9a79d938a7e71665c504438291f14080000000005111d2935414c56606d79849198a2aaa69f959086807b767371706f70717275797e848e939da5afa89f948b7f72675d5145392c1e13080000000000000000000000000000000000000000000000000106090b0c1313131313131313120807050200000000000000000000000000000000000000000000000000000000000000000004090e1112131313131313130e0d0b0703000104070c10131316191b1c1e1f1f20201f1e1d1b181514120f0a0400000000000000000000000000000000000000000000020b141c242c323a41464d5254575f626567696b6c6c6c6c6b6a696765615f5754524d46423b332c241c140a020000000000000000000009121920262a2c2c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2c2c2b2a29272421201e1914120e0903000000000000000000000000000000000009121920262a2c2c2d2d2d2d2d2d2d2d1f1c18120b030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000106090b0c13131313131313131208070502000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0f13151620202020202020171714110c0500000000000000000000000000000000071119202830353e454d545b606a6f79808a92979ea6aeb4aca3978a7d7064574a3d3124170a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222c363e44494a5353535353504e4a433a31271c1105000000000000000000000000000000000000000000000000000000000009121b252d373f49515b636d737979797979797979746e64584c4033271a0d010000000000000000000000000000000000000000000000000000000000000000000000000000020c1a242d363f48505a626d727f8b919ba29f938e857d746d6760584e43382c1f13070000000000000000000000000000000000000000000000000000000000000000020c1a242d363f48505a626d727f8b919ba29f938e857d746d6760584e43382c1f1307000000000000000000000000000000000000020f1b27323d44505c666d78808890959b9fa2a39f9d9b9a999999999b9d9fa2a29e9b948f877f776d665c50483e30271d120700000000000000000000000000000109131b23292e313233322f2a241c140a01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222d38414f59606d788390959fa7a79f98928c86827f7d7c7b7b7c7e81858b9298a1a8a69f958e81746c61544a3f3428170d0200000000010d1925303a45515c676f7c869298a1a9a79f98928d8783807e7d7c7d7e7f82858b91969ea5afa7a0969082786c60554b4135291d0c010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080f151a1d1f202020202020201a1a17130e070d1113181c1f20232527292a2b2c2c2c2c2b2a282522211f1a15100c0701000000000000000000000000000000000000010b141d262e363e444c52565e61666a6e717476777879797878777673716e6966615e57524d453e362e261c140a0000000000000000000000080f151a1d1f20202020202020202020202020202020202020202020202020201f1f1d1c1a171414110e0805020000000000000000000000000000000000000000080f151a1d1f20202020202020202013100c0701000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070f161b1f22232d2d2d2d2d2d2d2423211c17100800000000000000000000000000000000070e161e2429333b424a505860676d747d858f949fa29f9f9f978a7d7064574a3d3124170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c28333e4850555760606060605d5b554d43382d22160a00000000000000000000000000000000000000000000000000000000000009131b252d373f49515b63666c6c6c6c6c6c6c6c67645c53483c3024180b0000000000000000000000000000000000000000000000000000000000000000000000000000000008121b242d363f48515b626d727f8c919ca39e97918a81796f6a6054483b2e22150900000000000000000000000000000000000000000000000000000000000000000008121b242d363f48515b626d727f8c919ca39e97918a81796f6a6054483b2e221509000000000000000000000000000000000000000a152028343f4a545c666c737c83898e9298989b9c9e9e9f9f9f9e9e9d9a9897928e89827c736c655c544a3f362c1e150b00000000000000000000000000000000010911181e2225252726231f19120a02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111b262f3d45515c666d7a8390959fa4aaa29f98928f8c8a898888898b8e92979fa2aaa59e949083796d605a5042382e23170500000000000008131e2934404b555f6a707d8692979fa6aaa39f9993908d8b8a89898a8c8f92979da0a8aca59e9590847a6d665b50433a2f24180d00000000000000000000000000000000000000000000000000000000000000020608080b0e1011121313121211100d0b080705020000000000000000000000000000000000000000000009121920262a2c2c2d2d2d2d2d2d2726231f1913181d2023282c2d2f323436373839393938383734322f2e2b261f1c18120b03000000000000000000000000000000000009131d262f38404850565e61686e73777b7e81838485868685858482807e7b77736e69615e57504840382e261c1309000000000000000000000004090e111213131313131313131313131313131313131313131313131313131212110f0d0b0807050200000000000000000000000000000000000000000000000004090e1112131313131313131313060400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000407090a131313131313130a09070400000000000000000007101921272c2f303939393939393931302d28221a120800000000000000000000000000000000040c131921292f383f444e555d606b707a828b9298939393938a7d7064574a3d3124170a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814202d3944505a61646c6c6c6c6c6a665f554a3e32261a0d0000000000000000000000000000000000000000000000000000000000000109131b252e37404951575960606060606060605a58534a41362b201408000000000000000000000000000000000000000000000000000000000000000000000000000000000009121b242d363f49515b626d727f8c9193939393938e847c6f6256493c2f2316090000000000000000000000000000000000000000000000000000000000000000000009121b242d363f49515b626d727f8c9193939393938e847c6f6256493c2f23160900000000000000000000000000000000000000040b17232e38424a545b606b6f767d8185898c8e9091929293929291908e8c8985817c766f6a605b534a42382e241a0c03000000000000000000000000000000000000070d121618191a1917130e0700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141d2834404b545e686d7a838d939a9fa7aaa29f9c989695959596989b9fa2a9a8a09e938e827a6d675d51483e30261c1106000000000000020c18232f39434e58606b707d858f949ea0a8aba49f9c9a9796969697989b9ea1a9aca7a09d938e837b6e685e544a3f31281d1307000000000000000000000000000000000000000000000000000000000205090e121415181b1d1e1f20201f1f1e1c1a181514120e09050200000000000000000000000000000000000008121b242b313638393939393939393433302b241d24292c2e34383a3c3f41424445454646454443413e3b3a37312c29231d150d0700000000000000000000000000000007101b252f38404a525a61686d747b8084888b8e8f919292929291918f8d8b8884807b746e69615a524a40382e251b0f0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050b1014161720202020202020171614100b05000000000000040f19232b32383b3c464646464646463e3c39332c241a10050000000000000000000000000000000002080f171d262d333c434b515961686d757e858686868686867d7064574a3d3124170a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1623303c4955616c7079797979797671665b4e4236291c1000000000000000000000000000000000000000000000000000000000000000010a131c252e3740464b4c53535353535353534e4c4841382f251a0f0300000000000000000000000000000000000000000000000000000000000000000000000000000000000009121b242d373f49515b636d737f86868686868686868174675a4e4134271b0e010000000000000000000000000000000000000000000000000000000000000000000009121b242d373f49515b636d737f86868686868686868174675a4e4134271b0e010000000000000000000000000000000000000006111c263038424a505960636b7075797c7f81838485858685858483817f7c79746f6b6260585049413830261c120900000000000000000000000000000000000000000106090b0c0d0c0a0702000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b18232e39424c565e686d79808790959b9fa2aaa8a5a3a2a1a2a2a5a7aba49f9c96918981796d685d554b40362c1e150a000000000000000007121d27313c464f59606a6f7b828a91969c9fa3aba8a6a4a3a2a3a4a5a8a8aaa29f9b95908981796e695e564c42382d1f160c01000000000000000000000000000000000000000000000000000002080e11151a1e21222528292b2c2c2c2c2b2b29272522211e1a14120e0902000000000000000000000000000000040f19242d353d424546464646464646413f3c362f282f35393a404546494c4e4f51525253535251504e4b4847433c38342f271f19100a01000000000000000000000000030c19222d37404a525c636c717a81868c9196989a9c9e9f9f9f9f9e9d9c9a9895918d86817b716c645c524a40372d21180e030000000000000000000000020507081313131313131313131313131313131313131313131313131313131313131211100c09060503000000000000000000000000000000000000000000000000000000000000020507080b0e111112131312110f0c0908060300000000000000000406070b0f1213131211100e0c0b0906010000000000000000000000000000000000000000000000010406070a0d10111213131312100e0b070705010000000000000000000000000000000000000000000810161c2023232d2d2d2d2d2d2d2323201c16100800000000000a16212b353d434849535353535353534a49453e362c22170c000000000000000000000000000000000000050b141c2228313940454f565e616d7279797979797979706c6155493c3023160a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1724313d4a5764707d868686868683766a5d5043372a1d100000000000000000000000000000000000000000000000000000000000000000010a131c252e353b3e40464646464646464641403c362f261d1308000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009121b252d373f49515b636d737979797979797979746e64584c4033271a0d01000000000000000000000000000000000000000000000000000000000000000000000009121b252d373f49515b636d737979797979797979746e64584c4033271a0d0100000000000000000000000000000000000000000a141e262f383f444f54596063666d6f72747677787979797877767472706d66636059544e443f382f261e140a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d27303a444c565e676d747c83898e9298999b9d9e9f9f9f9e9d9c9999938f8a847d756d675d564c433a2f241a0c030000000000000000010b151f2a343d474f5860696e767e848a8f9299999b9d9e9f9f9f9f9e9d9b9998928e89837d756d675e564d443a2f261c0d040000000000000000000000000000000000000000000000000002080d14191e20262b2e2f323436383939393938373634322e2d2b26201e1a140e0902000000000000000000000000000915202b353f474e52535353535353534d4c474038313a4045474b515356585a5c5d5e5f5f5f5f5e5d5b5855534e47454039312b221b130a0000000000000000000000000a151e2b343f49525c646e737e858d92999da0a8a9a29f9d9c9b9c9d9fa2aaa7a09d99928e857e736e645c52493f332a1f140900000000000000000002080e1114142020202020202020202020202020202020202020202020202020202020201f1e1c191613120f0b06000000000000000000000000000000000000000000000000000003090e121415181b1d1e1f201f1f1d1b191515120f0a0401000000070c101313181c1e1f201f1e1d1b181815120d06000000000000000000000000000000000000000001070d111314171a1c1e1e1f201f1e1d1b181413110d080200000000000000000000000000000000000008111a21272c2f3039393939393939302f2c27211a1108000000030f1b27323d474f545660606060606060575550483e33281c1104000000000000000000000000000000000000020a11171f272f353e444c525b62656c6c6c6c6c6c6c64615a5044392d20140800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1724313d4a5764707d8a9393939083766a5d5043372a1d10000000000000000000000000000000000000000000000000000000000000000000010a131c232a2f323339393939393939393433302b251d140b0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009131b252d373f49515b63666c6c6c6c6c6c6c6c67645c53483c3024180b0000000000000000000000000000000000000000000000000000000000000000000000000009131b252d373f49515b63666c6c6c6c6c6c6c6c67645c53483c3024180b000000000000000000000000000000000000000000020c141d262d333d43484f54545c60636568696b6b6c6c6c6b6b6a676563605c54544f47433d332d261d140c020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b151e28323a444c555c606b6f767c8185898c8e909192929291908f8d8a86827d79706b605d554c443a31281d120800000000000000000000030d18222b353d464e575e616c71787d82868a8c8f90919293929291908e8c8985817d77706b605d554d443b32281d140a00000000000000000000000000000000000000000000000000040c13191f252a2d31373a3b3e41434445464645454443403e3b3a37312d2a251f1a140d050000000000000000000000000e1a26313d4751595e5f6060606060605a58524a403a434b5153545c60626567696a6b6c6c6c6b6b6a6765625f5853514b433d342d251b12090000000000000000000006111c26303d46515b646e74808a92979fa3a9a19e999792908f8f8f909298989d9fa7a39f97928a80736e635b51453b31261a0e0400000000000000050d14191e20212d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2c2c2b292623201f1b17110c0600000000000000000000000000000000000000000000040a0f141a1e212125282a2b2c2c2c2b2a282622211f1b15110d08030b12181c1f2025292b2c2c2c2b2a272524221d1811090100000000000000000000000000000000040a0f13181d20202326292a2b2c2c2c2b2a272521201e1913100b0500000000000000000000000000000005101a232c33383c3d464646464646463d3c38332c231a1005000007131f2c38434f5960636c6c6c6c6c6c6c64615a5045392d2114080000000000000000000000000000000000000000060d151d2429323a41465156585f606060606060575550483e33281c100400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1724313d4a5764707d8a979f9d9083766a5d5043372a1d1000000000000000000000000000000000000000000000000000000000000000000000010a12191e2325262d2d2d2d2d2d2d2d272724201a130b02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000109131b252e37404951575960606060606060605a58534a41362b201408000000000000000000000000000000000000000000000000000000000000000000000000000109131b252e37404951575960606060606060605a58534a41362b20140800000000000000000000000000000000000000000000020b141c222832383d44484a515356595b5d5e5f5f605f5f5e5d5b595653504a48443d383227221b140b0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c162028323a434b515960636b6f75797d7f828385858685858482807d7a76716d666059514b433a32281f160c000000000000000000000000061019232b343d454d525a61666c70757a7d80828385858686858483817f7c7975706b636059514b433b322920160b02000000000000000000000000000000000000000000000000080e161e25293036393c4247484b4e50515253535252514f4d4b4846423c3a36302a251f170f080000000000000000000000111d2a36424e59636a6c6c6c6c6c6c6c67645c5247404b555d6064666d6f727475777878797978777674716e6a64605c554e463f372d251b11070000000000000000000c17232e38424f59626d74808d929ea1a9a39f97918c8885838282838385888b90959ea1a8a29f928d80736d62574d42362a20160a000000000000050e171e252a2d2e39393939393939393939393939393939393939393939393939393939393938373633302d2b27221b17110a0300000000000000000000000000000000000000060c161b1f252a2d2e31343738393939383735322f2e2b26201d19130c151d23282c2d32353839393838363432312e29231b1309000000000000000000000000000002080d151b1d24292c2d3033363738393939383634312e2d2a251e1c160f0a04000000000000000000000000000b16212c353d44484a535353535353534a48443d352c21160b00000915222f3b4854606b6f79797979797979716c6155493c3023170a000000000000000000000000000000000000000000030b1218202930363f454a4b525353535353534a49443e362c22170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1724313d4a5764707d8a97a39d9083766a5d5043372a1d10000000000000000000000000000000000000000000000000000000000000000000000000070d1216191920202020202020201b1a18140f0801000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010a131c252e3740464b4c53535353535353534e4c4841382f251a0f030000000000000000000000000000000000000000000000000000000000000000000000000000010a131c252e3740464b4c53535353535353534e4c4841382f251a0f030000000000000000000000000000000000000000000000020a111721272c333839404446494c4e5051525253525251504e4c4946443f3838322b272017110a02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040e162028313940454f54596063676d707375777879797978777673716e6864605c544f454039312820160d0400000000000000000000000000071119222b333b424650545b6064676d707375777879797978787675726f6d67636059544f45403a312920170e050000000000000000000000000000000000000000000000020a121a202830353b4146474e5355585b5c5e5f5f5f5f5e5e5c5a5855534d4846423b363029211a120a02000000000000000000121f2c3845525e6a7579797979797979746e64584c45515d676d7176797c7f81828485858686858483817e7b77716d67605851493f372d23190b020000000000000003101c28343f4a54606b727f8c929ca4aaa299928c84807b787675757677797b7f838a91969fa6a49c928b7f72695f53463d32271b0f0300000000020d1720293036393b4646464646464646464646464646464646464646464646464646464646464544433f3c3937332d28231c150c0500000000000000000000000000000000030a111720272b31363a3b3e4144444546464544423f3c3b37322c29241e191e272e34383a3e42454646454443413f3d3a342d251b1106000000000000000000000000050d131920262b2f35393a3d404344454646464543413e3a3936302c28211b150e06000000000000000000000004101c27333d474f55566060606060606056554f473d33271c100400091623303c4956636f7d868686868686867e7164574a3e3124170b0000000000000000000000000000000000000000000001070e171e252a343a3d3f464646464646463d3c39332c231a10050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1724313d4a5764707d8a97a39d9083766a5d5043372a1d100000000000000000000000000000000000000000000000000000000000000000000000000002060a0c0d13131313131313130e0d0b0803000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010a131c252e353b3e40464646464646464641403c362f261d130800000000000000000000000000000000000000000000000000000000000000000000000000000000010a131c252e353b3e40464646464646464641403c362f261d13080000000000000000000000000000000000000000000000000000060b161b21272c2e34383a3c3f41434445464646454443413f3d3a38342e2c27211b160b06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e161f272f343d43484f54555c606366686a6b6c6c6c6b6a696664615e5653514a423d352f271f160d04000000000000000000000000000000071019202930363e424a5053555d606366686a6b6c6c6c6c6b6a686663605c55554f48443d352f281f170e050000000000000000000000000000000000000000000000020b141c242c323a41464d5254575f626567696b6c6c6c6c6b6a696765615f5754524d46423b332c241c140a02000000000000000013202c3946535f6c79878686868686868074675a4d4753606d797e8286898b8d8f90919292929291908e8b88837e796f6a625b51493f352b1d140a0000000000000006121f2c3844505c666f7c87929fa4aba29892878079736f6a6a696869656c6e72777d848f949fa6a49f92867b6e61584e43382b1f13060000000008141e29323b41465353535353535353535353535353535353535353535353535353535353535352514f4c4946443f38342e261e170f070000000000000000000000000000030c151c232832373b4246484b4e505152535252504e4c4847433c39352f28222b30394045464b4f5152535251504e4b4a463f372d23180d0100000000000000000000080e171e252a31373a4045474a4d4f515152535251504e4b4746413a38332b2620181009000000000000000000000714202c38444f5961636c6c6c6c6c6c6c6361594f44382c20140700091623303c4956636f7c8993939393938a7d7164574a3e3124170b000000000000000000000000000000000000000000000000050d131923292e31323939393939393931302d28221a1108000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1724313d4a5764707d8a97a39d9083766a5d5043372a1d100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010a131c232a2f323339393939393939393433302b251d140b010000000000000000000000000000000000000000000000000000000000000000000000000000000000010a131c232a2f323339393939393939393433302b251d140b01000000000000000000000000000000000000000000000000000000040a0f161c1c23282c2d3032353638383939393838373432302d2c28231c1b160f0a040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d151d232932383d44484b515356595b5d5e5f5f5f5e5d5c5a5754524d464440393029241d150d040000000000000000000000000000000000070e171f252a2f383f44464b515457595c5d5e5f605f5f5e5d5b595653514b48443d383329241d160d050000000000000000000000000000000000000000000000010b141d262e363e444c52565e61666a6e717476777879797878777673716e6966615e57524d453e362e261c140a000000000000000013202c3946535f6c798692939393938d8074675a4d4f5c6875828b8f9298989a9c9d9e9f9f9f9e9e9d9a9895908b847c726d625b51473d2f261c1106000000000003101c28343f4a54606d78839099a3afa39992867d736d67625f585c5c535b6061656c707a828f949fa9a2988f82766a6054473b2e221508000000020e1925303b444c525f60606060606060606060606060606060606060606060606060606060605f5f5e5c5956535049443f38302921191007000000000000000000000000030d151e262e343d43474d5354585b5d5e5f5f5f5e5d5b5955534e4745413a3129343c424b5153585c5e5f5f5f5e5d5a585651493f34291d120600000000000000000008111a202930363c43474b515356595c5d5e5f5f5f5e5d5a5854524c48443e37312a221b120a0100000000000000000916232f3c4855616b7079797979797979706b6155483c2f23160900091623303c4956636f7c89969f9f9f978a7d7164574a3e3124170b0000000000000000000000000000000000000000000000000002080d181d2224252c2d2d2d2d2d2d2423201c17100800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1724313d4a5764707d8a97a39d9083766a5d5043372a1d100000000000000000000000000000000000000000000000000000000000060a0e1011121313131212100e0b0707050100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010a12191e2325262d2d2d2d2d2d2d2d272724201a130b0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000010a12191e2325262d2d2d2d2d2d2d2d272724201a130b02000000000000000000000000000000000000000000000000000000000000050b1012181c1f202326282a2b2c2c2d2c2c2b2a282623201f1c17110f0b040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b121821272c3238394045464a4c4f505252535252514f4d4a4746413b38342e271e18120b0300000000000000000000000000000000000000050d141a1d262d33383a4145474a4d4f50525253535251504e4c494645403938332c272118130c0400000000000000000000000000000000000000000000000009131d262f38404850565e61686e73777b7e81838485868685858482807e7b77736e69615e57504840382e261c13090000000000000013202c3946535f6c7986929f9f9f9a8d8074675a4d4f5c6975828f9c9fa3aaa7a7a4a2a1a1a0a1a3a6a7a79f9d9691877f726d62594f42382d22170b000000000006121f2c3844505c66727f8b95a0aba89f92877d706b605d55534e4f4f495053555a61686d79829097a1a49f94897c6f6256493c2f23160900000005111e2a36414c565e6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6b6a696663605b53504a423b332b23190f0600000000000000000000010b151f2730383f444e54575e6164676a6b6c6c6c6b6a6865625f5854524c433f353c464e545c6065686b6c6c6b6b696765625b51463a2e221509000000000000000008121a232c323a41464e53555d606366696a6b6c6c6c6b696764615e56554f47433c342d241c130a01000000000000000a1723303d4a5663707d868686868686867d7063564a3d3023170a00091623303c4956636f7c8996a2aca4978a7d7164574a3e3124170b000000000000000000000000000000000000000000000000000000060c111517181f202020202020171614100b050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1724313d4a5764707d8a97a39d9083766a5d5043372a1d10000000000000000000000000000000000000000000000000000000040b11161a1d1e1f2020201f1e1d1b181413110d080200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070d1216191920202020202020201b1a18140f080100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070d1216191920202020202020201b1a18140f080100000000000000000000000000000000000000000000000000000000000000000000070c10121316191b1d1e1f1f201f1f1e1d1b19161312100c0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070c161b21272c2e34383a3d40424445464646454443403e3b3936302c28231c150c070100000000000000000000000000000000000000000002090b141c22282b2f35393a3d40424445464646454543423f3c3a38342e2c27211c160d070100000000000000000000000000000000000000000000000007101b252f38404a525a61686d747b8084888b8e8f919292929291918f8d8b8884807b746e69615a524a40382e251b0f0600000000000013202c3946535f6c7986929faca79a8d8074675a4d4f5c6976828f9caaa29f9c9a97969594939496999ea0a8a8a099928b7f726b60544a3f33281c0f03000000000713202d3a4653606d7984919ea7ada1968d80736b6059514b474342423f44464850565d676d7a85929b9993908c8275685c4f4235291c0f0200000714202d3946525e6876797979797979797979797979797979797979797979797979797979797979787776726f6c65605c544d453d352b22180d0300000000000000000007121d273139424a50586062696e71747777787979787775726f6a66605d56504540454e5860666d717578797978777674726d62564a3d3124180b0000000000000008111a242c353e444c52585f62676d7073767778797979787674716d68636159534e463f362e251c1309000000000000000a1723303d4a5663707d899393939393897d7063564a3d3023170a00091623303c4956636f7c8996a2afa4978a7d7164574a3e3124170b000000000000000000000000000000000000000000000000000000000105090b0c131313131313130a0a080400000000000000000000000000000000000000000000000000000002050708080808080808080808080808080808080808080808080808080a1724313d4a5764707d8a97a39d9083766a5d5043372a1d100000000000000000000000000000000000000000000000000000050e161c2227292a2c2c2d2c2c2b29282521201d19130f0a0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002060a0c0d13131313131313130e0d0b08030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002060a0c0d13131313131313130e0d0b08030000000000000000000000000000000000000000000000000000000000000000000000000000040607090c0e1011121313131211100e0c0a07060300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0f161b1d23282c2d303335373839393938373633312e2d2a251f1c18120b0300000000000000000000000000000000000000000000000000020a11171c1f24292c2d30333537383939393938373533302d2c28231d1c16100b0500000000000000000000000000000000000000000000000000030c19222d37404a525c636c717a81868c9196989a9c9e9f9f9f9f9e9d9c9a9895918d86817b716c645c524a40372d21180e03000000000013202c3946535f6c7986929faca79a8d8074675a4d4f5c6976828f9c9a9892908d8b8988878787898c91969fa2aaa39f93877d70665b5044382b1f120700000004101d2935404b5564717d8a96a1acaa9e9184796d60594f45403937312d3337393e444c555e68717e8b8e8a86837f7c6f6255483c2f2215090000000814212e3b4754616e7a8686868686868686868686868686868686868686868686868686868686868584827f7c78716d665e574f473d342a1f150b0100000000000000020c18242f39434b545c606a6f757b7e8183848586858583817f7c78726d68625a514b4d57606a6f797e82848586858483817f7265584b3f3225180c000000000000050f1a232c363e474f565e616a6f747a7d808284848586858483817e7a76706b625f58514840372e251b11070000000000000a1723303d4a5663707d89969f9f9f96897d7063564a3d3023170a00091623303c4956636f7c8996a2afa4978a7d7164574a3e3124170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002090e11141415151515151515151515151515151515151515151515151515151724313d4a5764707d8a97a39d9083766a5d5043372a1d1000000000000000000000000000000000000000000000000000040e1720272e3336373939393939383634312e2d2a251e1a150e060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040b0f12181c1f202326282a2b2c2c2c2b2a29272421201e1914100c070000000000000000000000000000000000000000000000000000000000060b0f13181d20212426292a2b2c2d2c2c2b2a282623201f1c1812100b050000000000000000000000000000000000000000000000000000000a151e2b343f49525c646e737e858d92999da0a8a9a29f9d9c9b9c9d9fa2aaa7a09d99928e857e736e645c52493f332a1f1409000000000013202c3946535f6c7986929faca79a8d8074675a4d505c6976838f918d898583807e7c7b7a7a7b7d7f848b9298a2aba4999083786c605346392e23180c0000000613202c3945515d6775828f9ba8aea3988b7e71675d51473d352f2b2622272b2d323a434c56606d7883817e7a76736f6a5f53473b2e2115080000000814212e3b4754616e7a87939393939393939393939393939393939393939393939393939393999292918f8c89837e786e6960594f463c31271d1207000000000000000a141e2935404b555d666d747c82878b8e909192929291908e8c88847f7a716d605d55535f696f7c848b8f9192929291908d86796c605346392d20130000000000020d17212c353e48505961686d757c8186898c8f909192929291908d8b86827d766f6a625b524940372d23190d0300000000000a1723303d4a5663707d8996a3aca396897d7063564a3d3023170a00091623303c4956636f7c8996a2afa4978a7d7164574a3e3124170b0000000000000000000000000000000000000000010507080b0e10111213131211100e0b0807050100000000000000000000000000000000000000000000000000000000050d14191e202121212121212121212121212121212121212121212121212121212124313d4a5764707d8a97a39d9083766a5d5043372a1d10000000000000000000000000000000000000000000000000000b16202932393f434445464646454543413e3a3936302b2620180f0900000000000000000000000000000000000000000000000000000004090e1112131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313130b0a0804000000000000000000000004090e1112131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313130b0a0804000000000000000000000000000000000000000000040613131313131313131312110e090400000000000000000000000000000000000000000000000000000000020507080b0e111112131312110f0c0908060300000000000000000406070b0f1213131211100e0c0b0906010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070c10131317191c1d1f1f201f1f1e1c1a171414110e080400000000000000000000000000000000000000000000000000000000000000000003070d111314171a1c1d1f1f20201f1e1d1b19161313100c07000000000000000000000000000000000000000000000000000000000006111c26303d46515b646e74808a92979fa3a9a19e999792908f8f8f909298989d9fa7a39f97928a80736e635b51453b31261a0e040000000013202c3946535f6c7986929faca79a8d8074675a4d505c6976838a85807c797674716f6e6e6d6e7073787e869299a3aba0958a7e7164544b4034281c100400000714202d3a4753606d7a86929facac9f92867a6d60554b403529241d1a171b1f2028313a44515c666d7775716d6866625f584e43372b1f12060000000814212e3b4754616e7a87949f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9fa39f9e9d9c9995908b837b6f6b60584e43392f23180c02000000000006111c26303845515d676d7880898f93999a9d9e9f9f9f9e9d9b9896918c857e756d675d58626e7b8691969b9e9f9f9e9e9c9386796c605346392d2013000000000009141f29333d47505a616b707a82888e9298999c9d9e9f9f9f9e9c9a99938f8a837c726d635c52493f352b1f150b01000000000a1723303d4a5663707d8996a3b0a396897d7063564a3d3023170a00091623303c4956636f7c8996a2afa4978a7d7164574a3e3124170b00000000000000000000000000000000000003080d111414171a1c1e1f20201f1e1d1a171414110d080300000000000000000000000000000000000000000000000000050e171f252a2d2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e2e313d4a5764707d8a97a39d9083766a5d5043372a1d1000000000000000000000000000000000000000000000000006111c27323b434a4f51525353535251504e4b4746413a37312a221b120900000000000000000000000000000000000000000000000000080f151a1d1f20202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020171714110c050000000000000000080f151a1d1f20202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020171714110c050000000000000000000000000000000001070c10132020202020202020201f1d1a150f080000000000000000000000000000000000000000000000000003090e121415181b1d1e1f201f1f1d1b191515120f0a0401000000070c101313181c1e1f201f1e1d1b181815120d060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000406070a0d0f11121313131211100d0b0807050200000000000000000000000000000000000000000000000000000000000000000000000000010406070a0d0f11121313131212100f0c09070604000000000000000000000000000000000000000000000000000000000000000c17232e38424f59626d74808d929ea1a9a39f97918c8885838282838385888b90959ea1a8a29f928d80736d62574d42362a20160a0000000013202c3946535f6c7986929faca79a8d8074675a4d4e5a6774807d7974706d666764636261606163656c727d87929faca79b8f8275665c5145382c1f130600000a1723303d4a5663707d8998a3aea89b8e8275675d51433a2f23181d1d1d1d1d161f2834404a545c606a6864615e5655534e463c32261b0f030000000814212e3b4754616e7a8794a1acacb4aeaca6a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a6a8aaa9a7a09d9590857d6f6a5f554b4034291e130800000000000b17232e3842505a606d79828d929b9fa4ababa39f9d9c9b9c9d9fa19e97928b82796d685f6a76828f98a1a8aaa39f9995949386796c605346392d201300000000020e1a25303b454f59616c717d858f939a9fa3aaa9aaa8a7a6a7a9a9aba49f9c9490867f736e635b51473d31271d1207000000000a1723303d4a5663707d8996a3b0a396897d7063564a3d3023170a00091623303c4956636f7c8996a2afa4978a7d7164574a3e3124170b00000000000000000000000000000000060b1014191e20212427292b2c2c2c2c2b2a272421201e19140f0b0600000000000000000000000000000000000000000000020d17202930363a3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b3d4a5764707d8a97a39d9083766a5d5043372a1d100000000000000000000000000000000000000000000000000a16222e39434d555b5d5f5f605f5f5e5c5b5854524c47433c342d241b1108000000000000000000000000000000000000000000000009121920262a2c2c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2423211c17100800000000000009121920262a2c2c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2423211c1710080000000000000000000000000000030b12181c1f2d2d2d2d2d2d2d2d2c2c2a262019120900000000000000000000000000000000000000000000040a0f141a1e212125282a2b2c2c2c2b2a282622211f1b15110d08030b12181c1f2025292b2c2c2c2b2a272524221d181109010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003101c28343f4a54606b727f8c929ca4aaa299928c84807b787675757677797b7f838a91969fa6a49c928b7f72695f53463d32271b0f0300000013202c3946535f6c7986929faca79a8d8074675a4d4c58646e74716d6663605c54585655545454535b606b74818d9aa9ac9f9285796d6053463a2d20130700000d1a2733404d5a6673808d99aab4aa978b7e7164554c4131282a2a2a2a2a2a2a2a2a232e39424a51535d5b5754524c4847433c342a20150a000000000814212e3b4754616e7a8794a7afb4aba39f9a9898989898989898989898989898989898989898999b9ea1a9aca79f9792857c6e675c51453a3025190d0100000003101c28343f4a54616c74818e949da4aca7a09d9992908f8f8f9192999a9e9f948f837a6d666f7c88949faaaea398928c88878886796c605346392d20130000000005121e2a36424d57606b717e8791979ea5acaba9a19e9b9a9a9b9d9fa4abaca69f98928b80736d62594f43392f23180c000000000a1723303d4a5663707d8996a3b0a396897d7063564a3d3023170a00091623303c4956636f7c8996a2afa4978a7d7164574a3e3124170b0000000000000000000000000000020a11171c1f252a2d2e3134363839393938373634312e2d2a251f1b17110a02000000000000000000000000000000000000000009141f29323b4246474848484848484848484848484848484848484848484848484848484848484a5764707d8a97a39d9083766a5d5043372a1d100000000000000000000000000000000000000000000000020e1a27333f4a555f676a6c6c6c6c6c6b696764615e56534e463e362d23190b0200000000000000000000000000000000000000000008121b242b3136383939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393931302d28221a12080000000008121b242b3136383939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393931302d28221a1208000000000000000000000000030d151d23292c3939393939393939393836312b241b12080000000000000000000000000000000000000000060c161b1f252a2d2e31343738393939383735322f2e2b26201d19130c151d23282c2d32353839393838363432312e29231b13090000000000000000000000000000000000020507080b0e111112131312110f0c0908060300000000000000000406070b0f1213131211100e0c0b09060100000000000000000000000000000000000000050a0d0f101313100f0d0a050000000000000000000000000000000000000000000000000000000000000000060a0e1011121313131212100e0b0707050100000000000000000000000000000000000000000000000006121f2c3844505c666f7c87929fa4aba29892878079736f6a6a696869656c6e72777d848f949fa6a49f92867b6e61584e43382b1f130600000013202c3946535f6c7986929faca79a8d8074675a4d47525c646764605c5453514b4b4948474748495059626e7b8897a1ada298887c6f6255493c2f2216090004101c2834404b546976828f9ca9aea398887b6f6255483c2f3737373737373737373737373039404446514e4b4746413c3b37322a261f180f060000000814212e3b4754616e7a87959fa3aba399928d8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8c8c8f92979ea1a9a9a2979184796d60564c41362a1d110500000006121f2b3844505c66717e8b939ea6aea59d95908a86838282838486898d92979f959083786d73808d99a6b0a89f9286807c7a7b7d7063574a3d3024170a000000030e18212d3a46525e69707d879299a1a9ada79f9d97928f8d8d8e9093999fa2aaaaa39f928b7f726b60554b4034291c12070000000a1723303d4a5663707d8996a3b0a396897d7063564a3d3023170a00091623303c4956636f7c8996a2afa4978a7d7164574a3e3124170b00000000000000000000000001070c141c23282b3036393b3e414344454646454443413e3b3936302b27221b140b07000000000000000000000000000000000000020e1925303b444d5254545454545454545454545454545454545454545454545454545454545454545764707d8a97a39d9083766a5d5043372a1d10000000000000000000000000000000000000000000000003101d2936434f5b6771777879797978787674716d68625f5850483e352b1d140a0000000000000000000000000000000000000000040f19242d353d4245464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646463e3c39332c241a10050000040f19242d353d4245464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646463e3c39332c241a100500000000000000000000010b151f272f343846464646464646464645423d352d24190f040000000000000000000000000000000000030a111720272b31363a3b3e4144444546464544423f3c3b37322c29241e191e272e34383a3e42454646454443413f3d3a342d251b1106000000000000000000000000000003090e121415181b1d1e1f201f1f1d1b191515120f0a0401000000070c101313181c1e1f201f1e1d1b181815120d0600000000000000000000000000000000030a11161a1c1d20201d1c1a16110a0300000000000000000000000000000000000000000000000000000000040b11161a1d1e1f2020201f1e1d1b181413110d080200000000000000000000000000000000000000000003101c28343f4a54606d78839099a3afa39992867d736d67625f585c5c535b6061656c707a828f949fa9a2988f82766a6054473b2e22150800000013202c3946535f6c7986929faca79a8d8074675a4d414a52585a5753504a4645403e3c3b3b3a3b3f47535f6a7885929eabaa968a7d7063574a3d3024170a0006131f2c3845515c667884919eabac9f9286796d6053464444444444444444444444444444444444444444444444444444443b3a36312a21180e0300000714202d3a4753606d79838c9299a29f9286807f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f8082858a91969fa7a9a0968c7f73685e5246392d2013080000000713202d3a4653606d7884919ea5afa69d938e837d797776757677797c80858c9298958e81747683909ca9aca0958a7e736f6e6e706b6155483c2f2316090000000915202c38444f59616e7b869299a3abada49c959089858281808183878c9298a0a8aea49f93877d6f675c5145392e23180c0000000a1723303d4a5663707d8996a3b0a396897d7063564a3d3023170a00091623303c4956636f7c8996a2afa4978a7d7164574a3e3124170b0000000000000000000000030b12181e262e34383b4146474a4d4f515253535251504d4a4746413b37332d261d18120b030000000000000000000000000000000005111e2a36424d565e61616161616161616161616161616161616161616161616161616161616161616164707d8a97a39d9083766a5d5043372a1d10000000000000000000000000000000000000000000000004111e2a3744515d6a778385868686858483817e7a756e6a615a50473d2f261b1106000000000000000000000000000000000000000915202b353f474e52535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353534a49453e362c22170c00000915202b353f474e52535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353534a49453e362c22170c0000000000000000000007121d2731394045535353535353535353524e473f352b20150900000000000000000000000000000000030c151c232832373b4246484b4e505152535252504e4c4847433c39352f28222b30394045464b4f5152535251504e4b4a463f372d23180d010000000000000000000000040a0f141a1e212125282a2b2c2c2c2b2a282622211f1b15110d08030b12181c1f2025292b2c2c2c2b2a272524221d1811090100000000000000000000000000040d151c2226292a2d2d2a2926221c150d040000000000000000000000000000000000000000000000000000050e161c2227292a2c2c2d2c2c2b29282521201d19130f0a030000000000000000000000000000000000000006121f2c3844505c66727f8b95a0aba89f92877d706b605d55534e4f4f495053555a61686d79829097a1a49f94897c6f6256493c2f23160900000013202c3946535f6c7986929faca79a8d8074675a4d4141474c4e4a46443f3a38342e302f2e2d2d37434e586a7784909daaa4978b7e7164584b3e3125180b000713202d3a4653606d7986939facaa9d908477665c50505050505050505050505050505050505050505050505050505050504846423b332a1f140900000613202c3945515d676d787f879297a29992867e727272727272727272727272727272727272727375797e8490959fa9a89f92867a6d6154473a2f24190d0100000b1824313e4b5764717e8a96a0acac9f948e8179716d67696869676d70747a7f869095938a7e7885929fabaa9d9184776c6261616361594f44382c2014070000020f1a26313c4855616b75828f98a2abada39b928c837d7975747374767a7f869196a0a8afa4999184796d60544a4034281c100400000a1723303d4a5663707d8996a3b0a396897d7063564a3d3023170a00091623303c4956636f7c8996a2afa4978a7d7164574a3e3124170b00000000000000000000050d151d242930383f44464c5254575a5c5e5f5f5f5f5e5d5a5754524c46443f382f28231c150c030000000000000000000000000000000714202d3a46525e696e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e707d8a97a39d9083766a5d5043372a1d10000000000000000000000000000000000000000000000006121f2c3945525f6c78859292999292918f8e8b87827c716c61594f41382d22170b000000000000000000000000000000000000000e1a26313d4751595e5f606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060575550483e33281c1104000e1a26313d4751595e5f606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060575550483e33281c11040000000000000000000c18232f39434b515f606060606060605f5e5951473d31261a0e010000000000000000000000000000030d151e262e343d43474d5354585b5d5e5f5f5f5e5d5b5955534e4745413a3129343c424b5153585c5e5f5f5f5e5d5a585651493f34291d120600000000000000000000060c161b1f252a2d2e31343738393939383735322f2e2b26201d19130c151d23282c2d32353839393838363432312e29231b1309000000000000000000000000030d161f272d32353639393635322d271f160d03000000000000000000000000000000000000000000000000040e1720272e3336373939393939383634312e2d2a251e1a150e060000000000000000000000000000000000000713202d3a4653606d7984919ea7ada1968d80736b6059514b474342423f44464850565d676d7a85929b9993908c8275685c4f4235291c0f02000013202c3946535f6c7986929faca79a8d8074675a4d41363c3f413e3a38342e2c2823232221212c3844505c667784919daaa5988b7f7265584b3f3225180c000815212e3b4854616e7b879aa4afa99c90837669545d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d55534d453b31261a0e020004101d2935404b555d666d727d859298a29892877f716b6565656565656565656565656565656566666d717a839097a1ada2988b7f7265564c4135291d11040005121e2a36424d576875818e9ba8afa49a8f82786d66605d555c555c6063676d727b838f9391857b8797a2ada79a8d8074675a545557554f473e33281c1004000006121f2b37434e5863707d8a939eaaafa59b918b8078706c66676768686d737b849196a0acaba0968c7f72665c5144382c1f120600000a1723303d4a5663707d8996a3b0a396897d7063564a3d3023170a00091623303c4956636f7c8996a2afa4978a7d7164574a3e3124170b000000000000000000050e161f272f353e424a5053565e616467696b6c6c6c6b6a696764615e56535049413d342e271e150c0300000000000000000000000000000814212e3b4754616e7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7f8b98a49d9083766a5d5043372a1d10000000000000000000000000000000000000000000000006121f2c3945525f6c7885929493939496999a99938e867e716b6053493f33271b0f03000000000000000000000000000000000000111d2a36424e59636a6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c64615a5045392d21140800111d2a36424e59636a6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c64615a5045392d211408000000000000000004101c2934404b555c6c6c6c6c6c6c6c6c6c6a63594e42362a1d110400000000000000000000000000010b151f2730383f444e54575e6164676a6b6c6c6c6b6a6865625f5854524c433f353c464e545c6065686b6c6c6b6b696765625b51463a2e2215090000000000000000030a111720272b31363a3b3e4144444546464544423f3c3b37322c29241e191e272e34383a3e42454646454443413f3d3a342d251b110600000000000000000000000a151f2831383e4243464643423e3831281f150a0000000000000000000000000000000000000000000000000b16202932393f434445464646454543413e3a3936302b2620180f090000000000000000000000000000000004101d2935404b5564717d8a96a1acaa9e9184796d60594f45403937312d3337393e444c555e68717e8b8e8a86837f7c6f6255483c2f22150900000013202c3946535f6c7986929faca79a8d8074675a4d4134303334312d2c28231f1c18161e2429363e4653606d7985929facab978a7e7164574b3e3124180b000916232f3c4956626f7c8995acb6a89c8f82756a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a615f574d42362a1e120500010d18242f39434b545c606b707d86929fa29992877d70675d5858585858585858585858585859545c60686d7a85919ea9aa9c908376685d5245392c201306000714202d3a46525e697885919eabac9f93877c6f665c54514b4f4b5153555d60696e79818f949083909da9b3a4988b7e7165584b484a48443e352c21160b0000000814212e3a47535f6a7683909ca5afa99e938b7f736c65605b545a565e61696e7a84919aa4afa89e9285796d6053463a2d22170b00000a1723303d4a5663707d8996a3b0a396897d7063564a3d3023170a00091623303c4956636f7c8996a2afa4978a7d7164574a3e3124170b0000000000000000040d162028313940454f545c6064686e7174767778797978777674716e6863605b534e44403930271e150c0300000000000000000000000000111e2a3744515d6a7784878787878787878787878787878787878787878787878787878787878787878787878b919ba99d9083766a5d5043372a1d10000000000000000000000000000000000000000000000006121f2c3945525f6c78858887868787898d92979f9892887d70655b5044372b1f1205000000000000000000000000000000000000121f2c3845525e6a7579797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979716c6155493c3023170a00121f2c3845525e6a7579797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979716c6155493c3023170a000000000000000006131f2c3845515c67767979797979797979756a5e5245382c1f12060000000000000000000000000007121d273139424a50586062696e71747777787979787775726f6a66605d56504540454e5860666d717578797978777674726d62564a3d3124180b00000000000000030c151c232832373b4246484b4e505152535252504e4c4847433c39352f28222b30394045464b4f5152535251504e4b4a463f372d23180d0100000000000000000005111c27313a434a4e505353504e4a433a31271c11050000000000000000000000000000000000000000000006111c27323b434a4f51525353535251504e4b4746413a37312a221b12090000000000000000000000000000000613202c3945515d6775828f9ba8aea3988b7e71675d51473d352f2b2622272b2d323a434c56606d7883817e7a76736f6a5f53473b2e21150800000013202c3946535f6c7986929faca79a8d8074675a4d413427262724201f1c1713141920282f353f48515b63707d8998a2aea399897c6f6356493c30231609000a1623303d495663707c8996a3afa89b8e8177777777777777777777777777777777777777777777777777777777777777776e695f53463a2d211407000007121d283139424a5059606b717e8b949fa39991857a6d60564c4c4c4c4c4c4c4c4c4c4c4c4c4a51565e68717e8b97a1a69f94877a6d6054473a2d211407000815212e3b4854616e7b8797a1adaa9d9083776a5f544b4540424045474b51575f676d78828f9590959fabb0a3968a7d7063574a3d3d3c38332c231a10050000000815222f3b4855626e7b88949fabada2978e81746d605b53504a4d4c52575e68707d87939facada1978a7d716453493f33271b0f03000a1723303d4a5663707d8996a3b0a396897d7063564a3d3023170a00091623303c4956636f7c8996a2afa4978a7d7164574a3e3124170b00000000000000010c161f28323a434b515961666d71767a7e808284858686858483807d7a76706c656058514a423930271e150a00000000000000000000000000111e2a3744515d6a778490949494949494949494949494949494949494949494949494949494949494949494989ba3a99d9083766a5d5043372a1d100000000000000000000000000000000000000000000000000916232f3c4956626f7c7b7a7a7a7b7d808590959f9a9184786c605346392d20130600000000000000000000000000000000000013202c3946535f6c79878686868686868686868686868686868686868686868686868686868686868686868686868686868686868686867e7164574a3e3124170b0013202c3946535f6c79878686868686868686868686868686868686868686868686868686868686868686868686868686868686868686867e7164574a3e3124170b00000000000000000714202d3a4753606d798686868686868687796c5f5346392c201306000000000000000000000000020c18242f39434b545c606a6f757b7e8183848586858583817f7c78726d68625a514b4d57606a6f797e82848586858483817f7265584b3f3225180c000000000000030d151e262e343d43474d5354585b5d5e5f5f5f5e5d5b5955534e4745413a3129343c424b5153585c5e5f5f5f5e5d5a585651493f34291d12060000000000000000000a16222d38434c545a5d60605d5a544c43382d22160a000000000000000000000000000000000000000000000a16222e39434d555b5d5f5f605f5f5e5c5b5854524c47433c342d241b110800000000000000000000000000000714202d3a4753606d7a86929facac9f92867a6d60554b403529241d1a171b1f2028313a44515c666d7775716d6866625f584e43372b1f120600000013202c3946535f6c7986929faca79a8d8074675a4d4134271a1b171312100e171f252a323a4145515a626d76828f9caaac9f9286796d6053473a2d201407000a1724303d4a5763707d8a96a3b0ab9e928583838383838383838383838383838383838383838383838383838383838383837b6e6155483b2e2215080000010c161f2830383f444f59626c76828f9ca7a1978d8073685e52463f3f3f3f3f3f3f3f3f3f3f40444c56606d7985929a999896897c6f6356493c30231609000916222f3c4955626f7c8895a9b3a79a8d817467584e4239352f34383a40454d555c666d7a85919d9fa7b1afa396897c706356493d302f2c28211a110800000005121e2a36424d576774808d9aa6b0ac9f92857a6d615b5049443f4041464d56606b75828f9baab3a99b8e8175655b5044372b1f1205000a1723303d4a5663707d8996a3b0a396897d7063564a3d3023170a00091623303c4956636f7c8996a2afa4978a7d7164574a3e3124170b0000000000000008131e28313a444c555d606b70787e82868a8d8f919292929291908d8a87827d786f6a605c544a423930261c1106000000000000000000000000111e2a3744515d6a7784909da1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a4a7aca99d9083766a5d5043372a1d100000000000000000000000000000000000000000000000000815222e3b4754606a6f6e6d6d6d6e70737a83909da096897c6f6356493c3023160900000000000000000000000000000000000013202c3946535f6c798692939393939393939393939393939393939393939393939393939393939393939393939393939393939393938a7e7164574a3e3124170b0013202c3946535f6c798692939393939393939393939393939393939393939393939393939393939393939393939393939393939393938a7e7164574a3e3124170b00000000000000000714202d3a4753606d7a8693939393939286796c5f5346392c2013060000000000000000000000000a141e2935404b555d666d747c82878b8e909192929291908e8c88847f7a716d605d55535f696f7c848b8f9192929291908d86796c605346392d20130000000000010b151f2730383f444e54575e6164676a6b6c6c6c6b6a6865625f5854524c433f353c464e545c6065686b6c6c6b6b696765625b51463a2e2215090000000000000000010d1a26323e4a545e66696c6c69665e544a3e32261a0d010000000000000000000000000000000000000000020e1a27333f4a555f676a6c6c6c6c6c6b696764615e56534e463e362d23190b02000000000000000000000000000a1723303d4a5663707d8998a3aea89b8e8275675d51433a2f23181d1d1d1d1d161f2834404a545c606a6864615e5655534e463c32261b0f0300000013202c3946535f6c7986929faca79a8d8074675a4d4134271a0e0b070b1218202930363e444c525b626c727f8b949faba89c8f8376675d5145392c1f1306000a1724313d4a5764707d8a97a3b0ada1979290909090909090909090909090909090909090909090909090909090909090887b6e6255483b2f221508000000040d161e262e343d47505a63707c8995a0a99f92867a6d6154473b3032323232323232322e343a45515c6674818e8e8c8b89887f7265584c3f3225190c000a1723303d4a5663707d8996a3b0a6998c7f7366594c402f2924292c2f353b434b545d68707d8a959fabb7afa396897c706356493d3023201c161008000000000714212d3a46535f697884919eabafa49a8c7f73685e52443f383330363b444f5963707d8a98a2aeab9f9285796c605346392d201306000a1723303d4a5663707d8996a3b0a396897d7063564a3d3023170a00091623303c4956636f7c8996a2afa4978a7d7164574a3e3124170b000000000000050e19242f3a434c565e676d747d848a8f93999a9c9e9f9f9f9e9d9c9a9a938f8a837c736d665c544a42382e23170b020000000000000000000000111e2a3744515d6a7784909d9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9d9083766a5d5043372a1d1000000000000000000000000000000000000000000000000006131f2b38434e586062616160606163686f7c8899a4988b7e7265584b3f3225180c00000000000000000000000000000000000013202c3946535f6c7986929f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f978a7d7164574a3e3124170b0013202c3946535f6c7986929f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f978a7d7164574a3e3124170b00000000000000000714202d3a4753606d7a86939f9f9f9f9286796c5f5346392c201306000000000000000000000006111c26303845515d676d7880898f93999a9d9e9f9f9f9e9d9b9896918c857e756d675d58626e7b8691969b9e9f9f9e9e9c9386796c605346392d2013000000000007121d273139424a50586062696e71747777787979787775726f6a66605d56504540454e5860666d717578797978777674726d62564a3d3124180b0000000000000000030f1c2935424e5a66707679797670665a4e4235291c0f03000000000000000000000000000000000000000003101d2936434f5b6771777879797978787674716d68625f5850483e352b1d140a000000000000000000000000000d1a2733404d5a6673808d99aab4aa978b7e7164554c4131282a2a2a2a2a2a2a2a2a232e39424a51535d5b5754524c4847433c342a20150a0000000013202c3946535f6c7986929faca79a8d8074675a4d4134271a0e030c151c2328323b41464f565d606d727e87929fa6ada1968b7e7165554b4035291d1004000a1724313d4a5764707d8a97a3b0b3a9a19e9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d94887b6e6155483b2e22150800000000040c141c2328353f4854606b7783909daaa3988c7f7266574d42362a25252525252525232834404b5464717e8281807e7d7c796d6053473a2d201407000a1724313d4a5764707d8a97a3b0a5988c7f7265594c3f2e23181c1f24293139424c56616c7683909da9b3afa396897c706356493d302316100b0500000000000815222e3b4855616e7b8896a1aca69f93877b6e61564c41332d28252a323d4653606c7985929fabada297887b6e6155483b2e221508000a1723303d4a5663707d8996a3b0a396897d7063564a3d3023170a00091623303c4956636f7c8996a2afa4978a7d7164574a3e3124170b0000000000020d17202935414c555e686d79818a91969c9fa4aba5aba49f9fa4aca5aca49f9c95908780786d665c544a3f34281d140a0000000000000000000000111e2a3744515d6a77839093939393939393939393939393939393939393939393939393939393939393939393939393939083766a5d5043372a1d10000000000000000000000000000000000000000000000000030f1b27323d464e5456555453545456606c7986939f998c807366594d4033261a0d00000000000000000000000000000000000013202c3946535f6c7986929facacacaea9a7a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a4978a7d7164574a3e3124170b0013202c3946535f6c7986929facacacaea9a7a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a4978a7d7164574a3e3124170b00000000000000000714202d3a4753606d7a8693a0acac9f9286796c5f5346392c20130600000000000000000000000b17232e3842505a606d79828d929b9fa4ababa39f9d9c9b9c9d9fa19e97928b82796d685f6a76828f98a1a8aaa39f9995949386796c605346392d201300000000020c18242f39434b545c606a6f757b7e8183848586858583817f7c78726d68625a514b4d57606a6f797e82848586858483817f7265584b3f3225180c000000000000000003101d2a3643505d69768286868276695d5043362a1d1003000000000000000000000000000000000000000004111e2a3744515d6a778385868686858483817e7a756e6a615a50473d2f261b1106000000000000000000000004101c2834404b546976828f9ca9aea398887b6f6255483c2f3737373737373737373737373039404446514e4b4746413c3b37322a261f180f0600000013202c3946535f6c7986929faca79a8d8074675a4d4134271a0e0c151e272e343e444d525961686d757f879299a3afa59e9184796d6053463a2f24180c00000a1723303d4a5663707d8996a3b0b8b0aba99f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9fa9aaaaaaaaaa94877a6e6154473b2e2114080000000000020a1117232c38444f596673808c99a6aa9d918477695e52463a2d2019191919191918232e394955616c7176747371706f6d675d5145392c201306000a1723303d4a5663707d8996abb5a6998d807366544a403428211e1a181f27303a44505a64707d8a97a2adafa396897c706356493d3023160a000000000000000b1825313e4b5864717e8b939a979a9c908376695e52443a30221b19202b3844505b6676838f9ca9b3a9978a7d7064574a3d3124170a000a1723303d4a5663707d8996a3b0a396897d7063564a3d3023170a00091623303c4956636f7c8996a2afa4978a7d7164574a3e3124170b000000000008141e29323b45515d676d7a838e939ea0a8a7a09d99959993939a96999ea0a8a7a099928c81786d665c50443d2f261c110600000000000000000000111e2a3744515d6a77838686868686868686868686868686868686868686868686868686868686868686868686868686868683766a5d5043372a1d10000000000000000000000000000000000000000000000000000a162027333f49535b606060606062666e7b8799a4988c7f7265594c3f3226190c00000000000000000000000000000000000013202c3946535f6c7986929facb9aea49d9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a978a7d7164574a3e3124170b0013202c3946535f6c7986929facb9aea49d9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a978a7d7164574a3e3124170b00000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013060000000000000000000003101c28343f4a54616c74818e949da4aca7a09d9992908f8f8f9192999a9e9f948f837a6d666f7c88949faaaea398928c88878886796c605346392d2013000000000a141e2935404b555d666d747c82878b8e909192929291908e8c88847f7a716d605d55535f696f7c848b8f9192929291908d86796c605346392d2013000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000000000000000006121f2c3945525f6c78859292999292918f8e8b87827c716c61594f41382d22170b000000000000000000000006131f2c3845515c667884919eabac9f9286796d6053464444444444444444444444444444444444444444444444444444443b3a36312a21180e03000013202c3946535f6c7986929faca79a8d8074675a4d4134271a0b151e273039404450565e616b707a818b9299a3aba79e938b7e71665c5145382c1d12070000091623303c4956636f7c8996a2afb0a69f9c9393939393939393939393939393939393939393939393939c9ea6b0aea398877a6d6054473a2d2114070000000000000006101b27323d4956636f7c8996a9aca095877b6e6154483b2e21150c0c0c0c07121d2d3944505a6164696766656362605d554b4035291d1104000915222f3c4855626f7b8899a3afa89b8f8275665c51443a322d2b2627272628323e4653606d7985929fabafa396897c706356493d3023160a000000000000000c1925323f4c5865727f8486898b8d8f8c807366574d4232281e110f1c28333f4a546774808d9aa7b2a5988b7f7265584c3f3225190c000a1723303d4a5663707d8996a3b0a396897d7063564a3d3023170a00091623303c4956636f7c8996a2afa4978a7d7164574a3e3124170b00000000010d1925303b44515b606d798390959ea5a9a19e95908c8987868687898c91969ea1a9a39f938f81786d60584e42382d22170b00000000000000000000101d2936424f5b677177797979797979797979797979797979797979797979797979797979797979797979797979797979797671665b4e4236291c100000000000000000000000000000000000000000000000000005121f2b3744505b656c6d6c6c6d6f7278818e9ba095897c6f6356493c3023160900000000000000000000000000000000000013202c3946535f6c7986929facb9a99d928d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8a7e7164574a3e3124170b0013202c3946535f6c7986929facb9a99d928d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8a7e7164574a3e3124170b00000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013060000000000000000000006121f2b3844505c66717e8b939ea6aea59d95908a86838282838486898d92979f959083786d73808d99a6b0a89f9286807c7a7b7d7063574a3d3024170a00000006111c26303845515d676d7880898f93999a9d9e9f9f9f9e9d9b9896918c857e756d675d58626e7b8691969b9e9f9f9e9e9c9386796c605346392d2013000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000000000000000006121f2c3945525f6c7885929493939496999a99938e867e716b6053493f33271b0f03000000000000000000000713202d3a4653606d7986939facaa9d908477665c50505050505050505050505050505050505050505050505050505050504846423b332a1f1409000013202c3946535f6c7986929faca79a8d8074675a4d4134271a121d273039424a515a62686e757d848e939fa3aba8a0958f81756c61544b4034281c0b0100000815222f3b4855626e7b8895a9b3ab9f948f8686868686868686868686868686868686868686868686868f949eaaac9f928579675d5145392c20130600000000000000000b14212d3a4754606d7a8797a1ada7978b7e7164584b3e3125180b00000000101c28333e485055575c5b5958565553514b433a2f24180d01000714202d3a4753606d7a86929facab9e9285796d60564c443d3a373134333332323845515c6675828f9ca8afa396897c706356493d3023160a000000000000000b1824313e4a56626d72787a7c7e8082847d7063574a3d3024160c0b17222d404c5966737f8c99a6b2a6998d8073665a4d4033271a0d000a1723303d4a5663707d8996a3b0a396897d7063564a3d3023170a00091623303c4956636f7c8996a2afa4978a7d7164574a3e3124170b0000000005111e2a36414c56626d75828f959fa7a8a097928a837f7c7a79797a7c7f848a9297a0a8a59e938d80736a60544a3f33281c0f030000000000000000000e1a27333f4a555f676a6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6a665f554a3e32261a0d000000000000000000000000000000000000000000000001080d13202d394653606c777979797a7b7e838e939e989083786c605346392d20130600000000000000000000000000000000000013202c3946535f6c7986929facb3a79a8d80808080808080808080808080808080808080808080808080808080808080808080808080807c6f6255483c2f2215090013202c3946535f6c7986929facb3a79a8d80808080808080808080808080808080808080808080808080808080808080808080808080807c6f6255483c2f22150900000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c201306000000000000000000000713202d3a4653606d7884919ea5afa69d938e837d797776757677797c80858c9298958e81747683909ca9aca0958a7e736f6e6e706b6155483c2f2316090000000b17232e3842505a606d79828d929b9fa4ababa39f9d9c9b9c9d9fa19e97928b82796d685f6a76828f98a1a8aaa39f9995949386796c605346392d2013000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000000000000000006121f2c3945525f6c78858887868787898d92979f9892887d70655b5044372b1f1205000000000000000000000815212e3b4854616e7b879aa4afa99c90837669545d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d55534d453b31261a0e020013202c3946535f6c7986929faca79a8d8074675a4d4134271a18232e39434b545c606c717b818a91969ea5afa69f959083796d605a5042392e23180c0000000714212d3a4754606d7a8797a2ada99c8f82797979797979797979797979797979797979797979797979828f9ca9ab9e9184786b554b4135291d110400000000000000030613202c3945515d677885919eaba6998d8073665a4d4033271a0d0c0c0c0c0b17222c363e44494a4f4e4d4b4a484745403a31281d1307000006131f2c3945515d677783909dabada1978a7e71685e564f484742424140403f3f3f404b546673808c99a6afa396897c706356493d3023160a000000000000000916222e3a46515b6265676d6f71737578706b6155483c2f231604061925323f4c5865727f8b98a5b2a79a8d8074675a4d4134271a0e000a1723303d4a5663707d8996a3b0a396897d7063564a3d3023170a00091623303c4956636f7c8996a2afa4978a7d7164574a3e3124170b000000000714202d3946525e68727f8b949ea7a9a09591857e77726f6d686c6d6f72787e859196a0a9a59f93877c6f665b5044382b1f13080000000000000000000a16222e39434d555b5d606060606060606060606060606060606060606060606060606060606060606060606060606060605d5b554d43382d22160a00000000000000000000000000000000000000000003090e13191d202d394653606c7984868687888b90959a9590867c6f665b5044382b1f120802000000000000000000000000000000000013202c3946535f6c7986929facada0938679737373737373737373737373737373737373737373737373737373737373737373737373736f6a5f53473a2e2115080013202c3946535f6c7986929facada0938679737373737373737373737373737373737373737373737373737373737373737373737373736f6a5f53473a2e21150800000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c201306000000000000000000000b1824313e4b5764717e8a96a0acac9f948e8179716d67696869676d70747a7f869095938a7e7885929fabaa9d9184776c6261616361594f44382c201407000003101c28343f4a54616c74818e949da4aca7a09d9992908f8f8f9192999a9e9f948f837a6d666f7c88949faaaea398928c88878886796c605346392d2013000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000000000000000000000000000916232f3c4956626f7c7b7a7a7a7b7d808590959f9a9184786c605346392d201306000000000000000000000916232f3c4956626f7c8995acb6a89c8f82756a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a615f574d42362a1e12050013202c3946535f6c7986929faca79a8d8074675a4d41342716202834404b555c666d747e858e939ea1a8aca49f9490837b6e675d51483e30271d12070000000613202c3945515d677885929eabaa9d9184776c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c667784919eaaa99c8f8376695c50432f24180d010000000000040a0f13151d2935414b556a7783909daaa89b8f8275685c4f4235291c191919191919191a242c33393c3e4341403e3d3c3a39352f281f160c01000004101d2935404b5566737f8c99a3aea99e91847a6d68615955534d4f4e4d4c4c4c4b4b4c5865727f8b98a5afa396897c706356493d3023160a0000000000000006121e29343f495156555d60626467696b6361594f44382c2014070b1825313e4b5864717e8b97a4b1a79a8e8174675b4e4134281b0e000a1723303d4a5663707d8996a3b0a396897d7063564a3d3023170a00091623303c4956636f7c8996a2afa4978a7d7164574a3e3124170b00000005111d2935414c56616e7a85929fa6ada19791837b716c6662605d606163656c717b849197a1ada4999184786c6053463a3025190d01000000000000000006111c27313b434a4f5153535353535353535353535353535353535353535353535353535353535353535353535353535353504e4a433a31271c110500000000000000000000000000000000000000030a0f151a1e24292c2e3844505b6673808c9993999292908d89837c6f6a5f544a3f33281c19130d080100000000000000000000000000000013202c3946535f6c7986929facada093867a6d676767676767676767676767676767676767676767676767676767676767676767676767625f584e43372b1f12060013202c3946535f6c7986929facada093867a6d676767676767676767676767676767676767676767676767676767676767676767676767625f584e43372b1f120600000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130600000000000000000005121e2a36424d576875818e9ba8afa49a8f82786d66605d555c555c6063676d727b838f9391857b8797a2ada79a8d8074675a545557554f473e33281c1004000006121f2b3844505c66717e8b939ea6aea59d95908a86838282838486898d92979f959083786d73808d99a6b0a89f9286807c7a7b7d7063574a3d3024170a000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000000000000000000000000000815222e3b4754606a6f6e6d6d6d6e70737a83909da096897c6f6356493c30231609000000000000000000000a1623303d495663707c8996a3afa89b8e8177777777777777777777777777777777777777777777777777777777777777776e695f53463a2d2114070013202c3946535f6c7986929faca79a8d8074675a4d4134271e28323a45515c676d78818b92979ea5ada8a19a938d827a6e695e554c41362d1e150b0000000004111d2935414c55697683909ca9ab9f928578695f606060606060606060606060606060606060606d7986929faca79a8d8174675a4e4134271b070000000000070f161b1f2223242f43505d697683909ca9a99c908376695d5043362a2525252525252525252520282d303136343332302f2d2c29241d160d04000000000c18242f3b4854616e7b86929fa8ada19690827a706b65615f575c5a5a5959585858585865717e8b98a4afa396897c706356493d3023160a00000000000000010d18232d373f464a4b515356585a5c5e57554f473e33281c10040b1825313e4b5864717e8b97a4b1a79a8e8174675b4e4134281b0e000a1723303d4a5663707d8996a3b0a396897d7063564a3d3023170a00091623303c4956636f7c8996a2afa4978a7d7164574a3e3124170b0000000713202d3946525e6874808d98a2aea69e92857b6e69615a5654525354535b60696e7b85929ea8aba0958a7d7063564c41362a1d11050000000000000000000b151f2931393f42444646464646464646464646464646464646464646464646464646464646464646464646464646464643423e3831281f150a00000000000000000000000000000000000000060b151a1f262b2f35393a40444a54616e7b87939f92878583817d786f6a5f584e4238342e29241e19130c04000000000000000000000000000013202c3946535f6c7986929facada093867a6d605a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a55534e463c31261b0f030013202c3946535f6c7986929facada093867a6d605a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a55534e463c31261b0f0300000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013060000000000000000000714202d3a46525e697885919eabac9f93877c6f665c54514b4f4b5153555d60696e79818f949083909da9b3a4988b7e7165584b484a48443e352c21160b0000000713202d3a4653606d7884919ea5afa69d938e837d797776757677797c80858c9298958e81747683909ca9aca0958a7e736f6e6e706b6155483c2f231609000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000000000000000000000000000006131f2b38434e586062616160606163686f7c8899a4988b7e7265584b3f3225180c000000000000000000000a1724303d4a5763707d8a96a3b0ab9e928583838383838383838383838383838383838383838383838383838383838383837b6e6155483b2e2215080013202c3946535f6c7986929faca79a8d8074675a4d41342724303a44515b606d79828e939fa2a9ada59d96918880786d685e564d433a2f241b0c0300000000010d19242f414d5a6774808d9aabaea298887b6e61555353535353535353535353535353535355626f7c8899a3afa9988b7e7265584b3f3225180c0000000007101921272c2f303236434f5c6976828f9ca9aa9d9083776a5d50443732323232323232323232322d2c28232429282625232220201d18130c0400000000000714202d3a46525e6974808d96a1a9a89f9590847d77726e696a6867666665656565646465717e8b98a4afa396897c706356493d3023160a000000000000000006111b252d343a3a404547494b4d4f514a48443e352c21170b000b1825313e4b5864717e8b97a4b1a79a8e8174675b4e4134281b0e000a1723303d4a5663707d8996a3b0a396897d7063564a3d3023170a00091623303c4956636f7c8996a2afa4978a7d7164574a3e3124170b0000000714212e3a4754616d7a86929faaab9f948a7d70695e575049474546474950565e69717e8b96a0aca79c8f8275685e5246392d201307000000000000000000040d171f272e333637393939393939393939393939393939393939393939393939393939393939393939393939393939393736322d271f160d030000000000000000000000000000000000020a111720262b31373a4145474a5153555e6976828f9b8f82787774706c655f58504a46443f38353029241e160d070000000000000000000000000013202c3946535f6c7986929facada093867a6d60534d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4847433c342a20150a000013202c3946535f6c7986929facada093867a6d60534d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4847433c342a20150a0000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013060000000000000000000815212e3b4854616e7b8797a1adaa9d9083776a5f544b4540424045474b51575f676d78828f9590959fabb0a3968a7d7063574a3d3d3c38332c231a10050000000b1824313e4b5764717e8a96a0acac9f948e8179716d67696869676d70747a7f869095938a7e7885929fabaa9d9184776c6261616361594f44382c201407000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000000000000000000030f1b27323d464e5456555453545456606c7986939f998c807366594d4033261a0d000000000000000000000a1724313d4a5764707d8a97a3b0ada1979290909090909090909090909090909090909090909090909090909090909090887b6e6255483b2f2215080013202c3946535f6c7986929faca79a8d8074675a4d4134272935414c56626d75818e949da5ada9a19e938e847d736d665d564d443b31281e1209000000000000081724313e4a5764717d8a99a3afaa988b7e7165574d42464646464646464646464646424d5765727f8c98abada297887b6f6255483c2f221509000000040f19222b32383b3c3f3f434f5c6976828f9ca9aa9d9184776a5e51443f3f3f3f3f3f3f3f3f3f3f3f3a38342e271e151a1817151413110d070100000000000005121e2a36424d57606d79849197a1a9a79f969189837f7b78767574737372727271717171717e8b98a4afa396897c706356493d3023160a00000000000000000009131b23292e2f35393a3c3e4042453d3c38332c231a1005000b1825313e4b5864717e8b97a4b1a79a8e8174675b4e4134281b0e000a1723303d4a5663707d8996a3b0a396897d7063564a3d3023170a00091623303c4956636f7c8996a2afa4978a7d7164574a3e3124170b000005121e2a36424d5765727f8c98a2aea99c8f82766c61574d453e3a39393a3f444d57616c7784919eaaa99f93867a6d6154473a2e21140700000000000000000000050d151c2227292a2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2a2926221c150d040000000000000000000000000000000000060c141c232831373c42474c5154545c60626466717e8a9792877b6e6a69676462605b5453504a45413a352f281f18120b03000000000000000000000013202c3946535f6c7986929facada093867a6d6053474040404040404040404040404040404040404040404040404040404040404040403c3a37312a22180e04000013202c3946535f6c7986929facada093867a6d6053474040404040404040404040404040404040404040404040404040404040404040403c3a37312a22180e040000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013060000000000000000000916222f3c4955626f7c8895a9b3a79a8d817467584e4239352f34383a40454d555c666d7a85919d9fa7b1afa396897c706356493d302f2c28211a110800000005121e2a36424d576875818e9ba8afa49a8f82786d66605d555c555c6063676d727b838f9391857b8797a2ada79a8d8074675a545557554f473e33281c1004000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000000000000000000000a162027333f49535b606060606062666e7b8799a4988c7f7265594c3f3226190c000000000000000000000a1724313d4a5764707d8a97a3b0b3a9a19e9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d94887b6e6155483b2e2215080013202c3946535f6c7986929faca79a8d8074675a4d4134272d3946525d68727e8b939ea6afa69f979189817a706b605c544c443b32291f160c000000000000000714212e3a4754616d7a86929faca89b8e8275695e53463d313939393939393939303946525e6976828f9ca9ab9e9285786c605346392d2013060000000a16212b343d4348494c4c4c4f5c6976828f9ca9aa9d9184776a5e514c4c4c4c4c4c4c4c4c4c4c4c4c4645403930271d12070a09070604010000000000000000020e1a25303b45515d676f7c8591979ea5a8a09e95908b8885838281807f7f7f7e7e7e7e7d7d808d9aa7afa396897c706356493d3023160a000000000000000000010911181e1d24292c2d2f31343638302f2c28211a110800000b1825313e4b5864717e8b97a4b1a79a8e8174675b4e4134281b0e000a1723303d4a5663707d8996a3b0a396897d7063564a3d3023170a00091623303c4956636f7c8996a2afa4978a7d7164574a3e3124170b00000714202d3a46525e697783909daaada197897d7063594f453b332d2c2d2d333b45505a66737f8c999d9c9c998a7d7063574a3d3024170a0000000000000000000000040b11161a1d1e202020202020202020202020202020202020202020202020202020202020202020202020202020201d1c1a16110a030000000000000000000000000000000000070f181e262e343c43474d53555d6064666d6f717375798592998c8078777673716e6c6663605c54524c45413a3128231d150c040000000000000000000013202c3946535f6c7986929facada093867a6d6053473a34343434343434343434343434343434343434343434343434343434343434342f2e2b262018100600000013202c3946535f6c7986929facada093867a6d6053473a34343434343434343434343434343434343434343434343434343434343434342f2e2b2620181006000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013060000000000000000000a1723303d4a5663707d8996a3b0a6998c7f7366594c402f2924292c2f353b434b545d68707d8a959fabb7afa396897c706356493d3023201c161008000000000714202d3a46525e697885919eabac9f93877c6f665c54514b4f4b5153555d60696e79818f949083909da9b3a4988b7e7165584b484a48443e352c21160b00000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000000000000000000000000000005121f2b3744505b656c6d6c6c6d6f7278818e9ba095897c6f6356493c30231609000000000000000000000a1723303d4a5663707d8996a3b0b8b0aba99f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9fa9aaaaaaaaaa94877a6e6154473b2e2114080013202c3946535f6c7986929faca79a8d8074675a4d4134272e3a4754616d7a85929fa5afa59e948f857d746d676059514a423a322920170d04000000000000000713202d3946525d6876828f9ca9ac9f92867b6e61584e433b322c292424292c3139424d57616e7b86929faca89b8e8174655b5044372b1f12050000030f1b27323d474f5456585858585c6976828f9ca9aa9d9184776a5e585858585858585858585858585853514b42392e23180c00000000000000000000000000000009141f2935414b555f6a6f7c858f939c9fa4a79f9d989892908f8d8d8c8c8b8b8b8b8a8a8a8d929da9afa396897c706356493d3023160a0000000000000000000000060d1213181d2020232527292b2423201c1710080000000b1825313e4b5864717e8b97a4b1a79a8e8174675b4e4134281b0e000a1723303d4a5663707d8996a3b0a396897d7063564a3d3023170a00091623303c4956636f7c8996a2afa4978a7d7164574a3e3124170b00000815212e3b4854616e7b87959fabab9e9184786c6053463e33292120202227333e4956626f7c899191908f8e8d8073665a4d4033271a0d00000000000000000000000000060a0e10111313131313131313131313131313131313131313131313131313131313131313131313131313131310100d0a05000000000000000000000000000000000000081019212a30383f444e53575f62676d7175797c7e80828390979c928c848382807e7b7974706d66605d56524c433d342e271e160e0500000000000000000013202c3946535f6c7986929facada093867a6d6053473a2d2727272727272727272727272727272727272727272727272727272727272722211f1b150e060000000013202c3946535f6c7986929facada093867a6d6053473a2d2727272727272727272727272727272727272727272727272727272727272722211f1b150e0600000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013060000000000000000000a1724313d4a5764707d8a97a3b0a5988c7f7265594c3f2e23181c1f24293139424c56616c7683909da9b3afa396897c706356493d302316100b0500000000000815212e3b4854616e7b8797a1adaa9d9083776a5f544b4540424045474b51575f676d78828f9590959fabb0a3968a7d7063574a3d3d3c38332c231a100500000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000000000000000000000613202d394653606c777979797a7b7e838e939e989083786c605346392d20130600000000000000000000091623303c4956636f7c8996a2afb0a69f9c9393939393939393939393939393939393939393939393939c9ea6b0aea398877a6d6054473a2d2114070013202c3946535f6c7986929faca79a8d8074675a4d41342935404b5565727f8c97a2ada59e938e827a706b605d554f444039302820170e05000000000000000005111d2935414c5664717e8b96a1ada3998d80746a60564d443e39352f2f35383c434b545e6973808d99a3aca096897d706353493f33271b0f03000007131f2c38434f59606365656565656976828f9ca9aa9d9184776a656565656565656565656565656565605c544b4034281c10040000000000000000000000000000020d18242f3a434e585f6a6f7a82898f93999c9fa2aaa29f9d9b9a999998989898979797979a9da4aeafa396897c706356493d3023160a0000000000000000000000000101070d11131416181a1c1e171614100b05000000000b1825313e4b5864717e8b97a4b1a79a8e8174675b4e4134281b0e000a1723303d4a5663707d8996a3b0a396897d7063564a3d3023170a00091623303c4956636f7c8996a2afa4978a7d7164574a3e3124170b00000b1824313e4b5764717e8a97a7b1a79a8d8174665b5044382c2017131317202d3a4753606d79868584838281807e7164574b3e3124180b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008111a222b333c424a50585f62696e747a7e8185888b8d8f9095a0a49c9691908f8d8a8885817d79736d68605d564f454039302820160e05000000000000000013202c3946535f6c7986929facada093867a6d6053473a2d201a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1515120f0a04000000000013202c3946535f6c7986929facada093867a6d6053473a2d201a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1515120f0a040000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013060000000000000000000a1723303d4a5663707d8996abb5a6998d807366544a403428211e1a181f27303a44505a64707d8a97a2adafa396897c706356493d3023160a000000000000000916222f3c4955626f7c8895a9b3a79a8d817467584e4239352f34383a40454d555c666d7a85919d9fa7b1afa396897c706356493d302f2c28211a11080000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000000000000000000020a13202d394653606c7984868687888b90959a9590867c6f665b5044382b1f1206000000000000000000000815222f3b4855626e7b8895a9b3ab9f948f8686868686868686868686868686868686868686868686868f949eaaac9f928579675d5145392c2013060013202c3946535f6c7986929faca79a8d8074675a4d41342c3945515d677783909da9ac9e938e81786d686159514c433d342e271e160e05000000000000000000010d1924303a4653606d7984919ea7ab9f92877c6f685e564f47454141414045474e555c666e7b86929faba89e9184786c605346392d22170b0000000915222f3b4854606b6f72727272727276828f9ca9aa9d918477727272727272727272727272727272726d665c5145382c1f130600000000000000000000000000000007131d28313c464e585f686d757c82878b8f929897999a9b9c9d9d9d9e9e9e9e9f9f9f9fa3abacb5afa396897c706356493d3023160a00000000000000000000000000000001040607090b0d0f120a0a07040000000000000b1825313e4b5864717e8b97a4b1a79a8e8174675b4e4134281b0e000a1723303d4a5663707d8996a3b0a396897d7063564a3d3023170a00091623303c4956636f7c8996a2afa4978a7d7164574a3e3124170b00010e1b2734414e5a6774818d9aa7b4aa978a7e7164544a3f33281a0e0606131f2c3845515c676d79787776757474716c6155493d3023170a0000000000000000000000000000000000000000000000000002050708080808080808060503000000000000000000000000000000000000000000000000000000000000000000000000000000000007111a232b343d454d545c606a6e757b81868a8e929897999c9da0a7aea8a19e9d9c9a9797928e8985807a736d686059514b423a322820170e050000000000000013202c3946535f6c7986929facada093867a6d6053473a2d20140d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d090806030000000000000013202c3946535f6c7986929facada093867a6d6053473a2d20140d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0908060300000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013060000000000000000000915222f3c4855626f7b8899a3afa89b8f8275665c51443a322d2b2627272628323e4653606d7985929fabafa396897c706356493d3023160a000000000000000a1723303d4a5663707d8996a3b0a6998c7f7366594c402f2924292c2f353b434b545d68707d8a959fabb7afa396897c706356493d3023201c161008000000000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000000000000000000000001070c141c232b3844505b6673808c9993999292908d89837c6f6a5f544a3f33281c0f03000000000000000000000714212d3a4754606d7a8797a2ada99c8f82797979797979797979797979797979797979797979797979828f9ca9ab9e9184786b554b4135291d11040013202c3946535f6c7986929faca79a8d8074675a4d41342d3a4753606d7a86929faca49a8f81776d665e564f45413a3128231c150c04000000000000000000000008131f2c3845515c67727f8b95a0aba39991847a6e68615954514c4e4e4b5153575f676d78839098a2aca0968b7f72665b5044382b1b1106000000091623303c4956636f7d7f7f7f7f7f7f7f83919daaab9e91857f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f796d6053463a2d201307000000000000000000000000000000010c161f2a343c464e565e616b6f757b7f8285888a8c8d8f8f9090919191919292929292999ba3acafa396897c706356493d3023160a000000000000000000000000000000000000000000010305000000000000000000000b1825313e4b5864717e8b97a4b1a79a8e8174675b4e4134281b0e000a1723303d4a5663707d8996a3b0a396897d7063564a3d3023170a00091623303c4956636f7c8996a2afa4978a7d7164574a3e3124170b0004111d2935414c566a7683909da9aea298887b6e6155483b2d2217080004101c2934404b555c606c6b6a6969686764615a5045392d211408000000000000000000000000000000000000000000000003090e12141515151515151513120f0b060000000000000000000000000000000000000000000000000000000000000000000000000000050f19232b353d464e575f666d727c81878e92999b9fa2aaa6a8aaa9a8a7a7a8a9aaa9a6a9a29e9a97928d85807a706b605c544c443a322920170c0300000000000013202c3946535f6c7986929facada093867a6d6053473a2d20140701010101010101010101010101010101010101010101010101010101000000000000000000000013202c3946535f6c7986929facada093867a6d6053473a2d201407010101010101010101010101010101010101010101010101010101010000000000000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013060000000000000000000714202d3a4753606d7a86929facab9e9285796d60564c443d3a373134333332323845515c6675828f9ca8afa396897c706356493d3023160a000000000000000a1724313d4a5764707d8a97a3b0a5988c7f7265594c3f2e23181c1f24293139424c56616c7683909da9b3afa396897c706356493d302316100b0500000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000000000000030b12181e262e34383f4a54616e7b87939f92878583817d786f6a5f584e42382d2218120b030000000000000000000613202c3945515d677885929eabaa9d9184776c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c667784919eaaa99c8f8376695c50432f24180d010013202c3946535f6c7986929faca79a8d8074675a4d41342f3c4855626f7b8899a3ac9f93877b6e655c544c443d352f281f18120b0300000000000000000000000004101c2834404b55606d78839099a3aba09690837a706b64605d555b5b555d60636a6e79818e959faaa49a9184796d60544a3f33281c0a000000000d1a2734404d5a6773808b8b8b8b8b8b8b9195a0acada197918b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b877a6d6054473a2d21140700000000000000000000000000000000040d18222a343c444c52596063696e7276797b7d7f81828383848484848585858585868b909ba7afa396897c706356493d3023160a000000000000000000000000000000000000000000000000000000000000000000000b1825313e4b5864717e8b97a4b1a79a8e8174675b4e4134281b0e000a1723303d4a5663707d8996a3b0a396897d7063564a3d3023170a00091623303c4956636f7c8996a2afa4978a7d7164574a3e3124170b000713202c3945525d687885929fabac9f9285796c605346392d20130600000c18232f39434b51535f5e5e5d5c5b5a575550483e33281d110500000000000000000000000000000000000000000000050d141a1e2121212121212121201f1b17110a020000000000000000000000000000000000000000000000000000000000000000000000030d17212b353d474f5860696e787f868e93999fa3ababaca8a9a29e9d9b9b9a9b9c9d9fa3aaa9aba9a19e98928c857d736d665d564c443a32291e150a00000000000013202c3946535f6c7986929facada093867a6d6053473a2d20140700000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facada093867a6d6053473a2d201407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130600000000000000000006131f2c3945515d677783909dabada1978a7e71685e564f484742424140403f3f3f404b546673808c99a6afa396897c706356493d3023160a000000000000000a1723303d4a5663707d8996abb5a6998d807366544a403428211e1a181f27303a44505a64707d8a97a2adafa396897c706356493d3023160a000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000000000000000000050d151d242930383f44464c535e6976828f9b8f82787774706c655f584e443f382f28231c150c03000000000000000004111d2935414c55697683909ca9ab9f928578695f606060606060606060606060606060606060606d7986929faca79a8d8174675a4e4134271b07000013202c3946535f6c7986929faca79a8d8074675a4d4134303c4956636f7c8996abaa9e918477695e534a423a3229241e160d070000000000000000000000000000000c18232e3944515c666f7c87929fa4a8a09590847d76716d6769676869676d70757b838e939ea7a59f93887d70665c5142382d22170b000000000d1a2734404d5a6773808d9898989898989da0a7b1b3a9a19e98989898989898989898989898989893877a6d6054473a2d21140700000000000000000000000000000000050e171e252a323a41464f54575e6165666d6f717374757676777777787878787879797e8b98a4afa396897c706356493d3023160a000000000000000000000000000000000000000000000000000000000000000000000b1825313e4b5864717e8b97a4b1a79a8e8174675b4e4134281b0e000a1723303d4a5663707d8996a3b0a396897d7063564a3d3023170a00091623303c4956636f7c8996a2afa4978a7d7164574a3e3124170b000714212d3a4754606d7a8797a2adaa9d918477655b5044372b1f1205000007121d273139404547525251504f4e4d4b49453e362c22170c00000000000000000000000000000000000000000000050f171f252a2d2e2e2e2e2e2e2e2d2b27221b140b02000000000000000000000000000000000000000000000000000000000000000000010b151f29333d474f59606a6f7b838c92999fa4abadaaa29f9b979792908f8e8e8e8f909298989d9fa7acaaa29f97918880786d685e564c443a30261c1106000000000013202c3946535f6c7986929facada093867a6d6053473a2d20140c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c07060401000000000000000000000013202c3946535f6c7986929facada093867a6d6053473a2d20140c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c070604010000000000000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130600000000000000000004101d2935404b5566737f8c99a3aea99e91847a6d68615955534d4f4e4d4c4c4c4b4b4c5865727f8b98a5afa396897c706356493d3023160a000000000000000915222f3c4855626f7b8899a3afa89b8f8275665c51443a322d2b2627272628323e4653606d7985929fabafa396897c706356493d3023160a000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000000000000000000050e161f272f353e424a5053565e6164717e8a9792877b6e696764615e56535049413d342e271e150c0300000000000000010d19242f414d5a6774808d9aabaea298887b6e61555353535353535353535353535353535355626f7c8899a3afa9988b7e7265584b3f3225180c000013202c3946535f6c7986929faca79a8d8074675a4d41342f3c4955626f7c8895a7ab9e9184786a5f544a423930281f160d040000000000000000000000000000000007121d2834404a54606a727f8c929ca4a7a096918a827d7a7775747475767a7d818790959ea5a59e938d80736b60544b402f261c1106000000000d1a2734404d5a6773808d9a9f9f9f9f9fa9aab0b8bab2acaa9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f93877a6d6054473a2d211407000000000000000000000000000000020c1720293036393a3e3f44484d5354545c606264666768696a6a6a6b6b6b6b6c6c6c717e8b98a4afa396897c706356493d3023160a000000000000000000000000000000000000000000000000000000000000000000000b1825313e4b5864717e8b97a4b1a79a8e8174675b4e4134281b0e000a1723303d4a5663707d8996a3b0a396897d7063564a3d3023170a00091623303c4956636f7c8996a2afa4978a7d7164574a3e3124170b000815222f3b4855626e7b8895a9b3a99c8f82766953493f33271b0f030000010b151f272f34383a464544434241413e3d39332c241a1006000000000000000000000000000000000000000000030c17212931363a3b3b3b3b3b3b3b3937332d261d140a00000000000000000000000000000000000000000000000000000000000000000007121d27313b454f59606b707c8590959fa3abaea9a19e98928e8a87858382818181828386888b90959b9fa4aca9a19a938d837a6d685e564c42382e23170d040000000013202c3946535f6c7986929facada093867a6d6053473a2d2019191919191919191919191919191919191919191919191919191413110d070100000000000000000013202c3946535f6c7986929facada093867a6d6053473a2d2019191919191919191919191919191919191919191919191919191413110d0701000000000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c201306000000000000000000000c18242f3b4854616e7b86929fa8ada19690827a706b65615f575c5a5a5959585858585865717e8b98a4afa396897c706356493d3023160a000000000000000714202d3a4753606d7a86929facab9e9285796d60564c443d3a373134333332323845515c6675828f9ca8afa396897c706356493d3023160a000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000000040d162028313940454f545c6064686e7174798592998c80777674716e6863605b534e44403930271e150c0300000000000000081724313e4a5764717d8a99a3afaa988b7e7165574d42464646464646464646464646424d5765727f8c98abada297887b6f6255483c2f221509000013202c3946535f6c7986929faca79a8d8074675a4d41342e3a4754616d7a8795a0aca196887c6f665c544b423a31281f160d03000000000000000000000000000000000c18232e39424e58626d73808c929ea1a8a19e948f8a8683828181828386898e93999fa7a39f938f81786d60594f42392e1d140a00000000000d1a2734404d5a6773808d9393939393939c9fa6b0b2a8a09393939393939393939393939393939393877a6d6054473a2d21140700000000000000000000000000000008131e29323a4146474b4c4d4e4f51524a50535557595a5c5c5d5d5e5e5e5e5f5f5f65717e8b98a4afa396897c706356493d3023160a000000000000000000000000000000000000000000000000000000000000000000000b1825313e4b5864717e8b97a4b1a79a8e8174675b4e4134281b0e000a1723303d4a5663707d8996a3b0a396897d7063564a3d3023170a00091623303c4956636f7c8996a2afa4978a7d7164574a3e3124170b00091623303c4956636f7c8996a2afa89b8e8175685b4e422d22170b00000000030d151d23292c2d3938373636353431302d28221a1208000000000000000000000000000000000000000000000a151e29333b42464848484848484846443f382f261b110600000000000000000000000000000000000000000000000000000000000000000c18242f39434d57606b707d8692979fa7aeaba39f96918b86817e7b7876757474757677797c7f83888e939a9fa7aca49f9590837a6d685e544a3f34281f160c0100000013202c3946535f6c7986929facada093867a6d6053473a2d26262626262626262626262626262626262626262626262626262621201d18130c04000000000000000013202c3946535f6c7986929facada093867a6d6053473a2d26262626262626262626262626262626262626262626262626262621201d18130c040000000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c201306000000000000000000000714202d3a46525e6974808d96a1a9a89f9590847d77726e696a6867666665656565646465717e8b98a4afa396897c706356493d3023160a0000000000000006131f2c3945515d677783909dabada1978a7e71685e564f484742424140403f3f3f404b546673808c99a6afa396897c706356493d3023160a000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000000000000010c161f28323a434b515961666d71767a7e80828f979c928c8483807d7a76706c656058514a423930271e150a000000000000000714212e3a4754616d7a86929faca89b8e8275695e53463d313939393939393939303946525e6976828f9ca9ab9e9285786c605346392d201306000013202c3946535f6c7986929faca79a8d8074675a4d41342d3946525e687784919da8a89c9082786d665c544b433a31281f150b0100000000000000000000000000000007121c27303d46515b646e73808a92979fa3a69f9c9992908f8e8e8f9092989b9fa4a69f99928c81786d665c50473d30271d0b0200000000000d1a2734404d5a677380868686868686868f949faaaca0968986868686868686868686868686868686867a6d6054473a2d2114070000000000000000000000000000010d1925303a444c525457595a5b5c5d5e5b5953484a4c4e4f5050515151515252525965727f8c98a5afa396897c706356493d3023160a000000000000000000000000000000000000000000000000000000000000000000000b1825313e4b5864717e8b97a4b1a79a8e8174675b4e4134281b0e000a1723303d4a5663707d8996a3b0a396897d7063564a3d3023170a00091623303c4956636f7c8996a2afa4978a7d7164574a3e3124170b000a1724303d4a5763707d8a96a3b0a79a8d8174675a4e4134271b060000000000030b12181c1f202c2b2b2a2928272423211d1710080000000000000000000000000000000000000000000006111c26303b454d535454545454545453504941382d22170b0000000000000000000000000000000000000000000000000000000000000004101d2935404b555e69707d879298a2a9b1a8a099928c847f7a75716e696a6868676869666d6f72767b818790959da4afa79f9590837a6d665c50443e31281d130700000013202c3946535f6c7986929facada093867a6d6053473a333333333333333333333333333333333333333333333333333333332d2c29241d160d040000000000000013202c3946535f6c7986929facada093867a6d6053473a333333333333333333333333333333333333333333333333333333332d2c29241d160d0400000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013060000000000000000000005121e2a36424d57606d79849197a1a9a79f969189837f7b78767574737372727271717171717e8b98a4afa396897c706356493d3023160a0000000000000004101d2935404b5566737f8c99a3aea99e91847a6d68615955534d4f4e4d4c4c4c4b4b4c5865727f8b98a5afa396897c706356493d3023160a000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000008131e28313a444c555d606b70787e82868a8d8f949fa49c9691908d8a87827d786f6a605c544a423930261c11060000000000000713202d3946525d6876828f9ca9ac9f92867b6e61584e433b322c292424292c3139424d57616e7b86929faca89b8e8174655b5044372b1f1205000013202c3946535f6c7986929faca79a8d8074675a4d41342935414c5666727f8c96a1ab9f948e81786d665d554c433a31271d1207000000000000000000000000000000000b151e2b343f49525c646e737e858e92999ea1a8a39f9d9c9a9b9c9d9fa3a9a29f9b948f877f776d665c544a3f352c1e150b0000000000000d1926333f4c58646e7379797979797979828f9ca9aa9d9184797979797979797979797979797979797976685d5245392c201307000000000000000000000000000005111d2a36414c565e6164656768696a6b68655d534840414243434444444545454d596673808c99a6afa295897c6f6256493c2f231609000000000000000000000000000000000000000000000000000000000000000000000b1825313e4b5864717e8b97a4b1a79a8e8174675b4e4134281b0e000a1723303d4a5663707d8996a3b0a396897d7063564a3d3023170a00091623303c4956636f7c8996a2afa4978a7d7164574a3e3124170b000a1724313d4a5764707d8a97a3b0a79a8d8074675a4d4134271a0e01000000000001070c1013141f1f1e1d1c1b1a181714110c0600000000000000000000000000000000000000000000000c17232e38424d575e61616161616161605b53493f33271b0f03000000000000000000000000000000000000000000000000000000000005101a232c3945515d676e7b859299a2aab1a79f9691878079726d6764615e575c5b5b5b545c6062656a6e747c838d929fa3aba7a0959082786d60594f433a2f24180d02000013202c3946535f6c7986929facada093867a6d6053473f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3a39352f281f160c0100000000000013202c3946535f6c7986929facada093867a6d6053473f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3a39352f281f160c01000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130600000000000000000000020e1a25303b45515d676f7c8591979ea5a8a09e95908b8885838281807f7f7f7e7e7e7e7d7d808d9aa7afa396897c706356493d3023160a00000000000000000c18242f3b4854616e7b86929fa8ada19690827a706b65615f575c5a5a5959585858585865717e8b98a4afa396897c706356493d3023160a000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000000000000050e19242f3a434c565e676d747d848a8f93999a9c9fa6aca8a09e9c9a9a938f8a837c736d665c544a42382e23170b02000000000005111d2935414c5664717e8b96a1ada3998d80746a60564d443e39352f2f35383c434b545e6973808d99a3aca096897d706353493f33271b0f03000013202c3946535f6c7986929faca79a8d8074675a4d413425303a4754606d79849199a4a69e938e81786d675d564c43392f24180d03000000000000000000000000000000030c19222d37404a525c636c717a81868d9196989b9c9e9f9f9f9f9e9d9b9997928e89827c736c655c544b42382e231a0c030000000000000b17232f3b47525c64676c6c6c6c6c6c76828f9ca9aa9d9184776c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c5d564c4135291d110400000000000000000000000000000713202d3946525e686d71727374767778756f65594d3d323536373737383835404b556774818e9aa7b2a995887b6e6255483b2f221508000000000000000000000000000000000000000000000000000000000000000000000b1825313e4b5864717e8b97a4b1a79a8e8174675b4e4134281b0e000a1723303d4a5663707d8996a3b0a396897d7063564a3d3023170a00091623303c4956636f7c8996a2afa4978a7d7164574a3e3124170b000b1724313e4a5764717d8a97a4b0a69a8d8073675a4d4034271a0d010000000000000000040607131211100f0e0e0b0a080500000000000000000000000000000000000000000000000003101c28343f4a545e696e6e6e6e6e6e6e6c655b5044372b1f120500000000000000000000000000000000000000000000000000000000000b16212b37434e58606d79839097a1abb1a79f9590847c736d67605d5554524d4f4e4e4e4a505355585f626a6f78808a9299a3aba79f948d80736b61554b4035291f1409000013202c3946535f6c7986929facada093867a6d60534c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4745413a31281d130700000000000013202c3946535f6c7986929facada093867a6d60534c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4745413a31281d1307000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c201306000000000000000000000009141f2935414b555f6a6f7c858f939c9fa4a79f9d989892908f8d8d8c8c8b8b8b8b8a8a8a8d929da9afa396897c706356493d3023160a00000000000000000714202d3a46525e6974808d96a1a9a89f9590847d77726e696a6867666665656565646465717e8b98a4afa396897c706356493d3023160a000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000020d17202935414c555e686d79818a91969c9fa4aba5aba49f9fa4aca5aca49f9c95908780786d665c544a3f34281d140a0000000000010d1924303a4653606d7984919ea7ab9f92877c6f685e564f47454141414045474e555c666e7b86929faba89e9184786c605346392d22170b00000013202c3946535f6c7986929faca79a8d8074675a4d4134272c3945515d67707d87939fa3a59e938f82796d685d554b4035291f150b0100000000000000000000000000000007101b252e38404a525a61686d747b8084888b8e90919292929291908e8c8985817c766f6a605b534b423930261c11080000000000000007131f2b36404a52585a60606060606976828f9ca9aa9d9184776a6060606060606060606060606060605f524c443a2f24190d0100000000000000000000000000000714212e3a4754616d7a7e7f8081828485817568584e43372e2c2823282c2f3945515d677783909daaada196877a6d6054473a2d211407000000000000000000000000000000000000000000000000000000000000000000000b1825313e4b5864717e8b97a4b1a79a8e8174675b4e4134281b0e000a1723303d4a5663707d8996a3b0a396897d7063564a3d3023170a00091623303c4956636f7c8996a2afa4978a7d7164574a3e3124170b000a1724313d4a5764707d8a97a3b0a79a8d8074675a4d4134271a0e010000000000000105090b0b121111100f0e0d0908060300000000000000000000000000000000000000000000000006121f2c3844505c66767b7b7b7b7b7b7b776c605346392d2013060000000000000000000000000000000000000000000000000000000004101c27333a47535f6a74808d95a0a9b2a89f9590837a6f6a605c55514b484642424141423f4446494e53585f666d737e879299a4afa69f93887d70675d51453b30251a0e020013202c3946535f6c7986929facada093867a6d605959595959595959595959595959595959595959595959595959595959595954514b433a2f24180d01000000000013202c3946535f6c7986929facada093867a6d605959595959595959595959595959595959595959595959595959595959595954514b433a2f24180d010000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013060000000000000000000000020d18242f3a434e585f6a6f7a82898f93999c9fa2aaa29f9d9b9a999998989898979797979a9da4aeafa396897c706356493d3023160a000000000000000005121e2a36424d57606d79849197a1a9a79f969189837f7b78767574737372727271717171717e8b98a4afa396897c706356493d3023160a000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000000000008141e29323b45515d676d7a838e939ea0a8a7a09d99959993939a96999ea0a8a7a099928c81786d665c50443d2f261c1106000000000008131f2c3845515c67727f8b95a0aba39991847a6e68615954514c4e4e4b5153575f676d78839098a2aca0968b7f72665b5044382b1b110600000013202c3946535f6c7986929faca79a8d8074675a4d4134272935414b55606b727f8c919fa3a59e948f837a6d675d51453e31271d12070000000000000000000000000000000009131c262e38404850565e61696e73787c7e818384858686858583817f7c79746f6a625f585049413930271e150a0000000000000000020e19242e3840474c4d535353535c6976828f9ca9aa9d9184776a5e53535353535353535353535353535345413a32281e13080000000000000000000000000000000815212e3b4854616e7b878c8d8e8f909184786a6054473f3a38342e34383a404b55606d7a86929facab9e918578675d5145392c201306000000000000000000000000000000000000000000000000000000000000000000000b1825313e4b5864717e8b97a4b1a79a8e8174675b4e4134281b0e000a1723303d4a5663707d8996a3b0a396897d7063564a3d3023170a00091623303c4956636f7c8996a2afa4978a7d7164574a3e3124170b000a1724303d4a5763707d8a96a3b0a79a8d8074675a4d4134271a0e010000000000060c111517181f1e1d1c1b1a191615130f0a04000000000000000000000000000000000000000000000713202d3a4653606d7986878787878786796d6053473a2d201407000000000000000000000000000000000000000000000000000000000714202c38444f59626e7c87929fa7b1aaa1969083796d685f58514b45413b3a363035342e34383a3c43474e545c606c717e87939fa5afa49a9185796d60574d42362a1e11050013202c3946535f6c7986929facada093867a6d6666666666666666666666666666666666666666666666666666666666666666605d554b4135291d1104000000000013202c3946535f6c7986929facada093867a6d6666666666666666666666666666666666666666666666666666666666666666605d554b4135291d11040000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130600000000000000000000000007131d28313c464e585f686d757c82878b8f929897999a9b9c9d9d9d9e9e9e9e9f9f9f9fa3abacb5afa396897c706356493d3023160a0000000000000000020e1a25303b45515d676f7c8591979ea5a8a09e95908b8885838281807f7f7f7e7e7e7e7d7d808d9aa7afa396897c706356493d3023160a000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000000010d1925303b44515b606d798390959ea5a9a19e95908c8987868687898c91969ea1a9a39f938f81786d60584e42382d22170b000000000004101c2834404b55606d78839099a3aba09690837a706b64605d555b5b555d60636a6e79818e959faaa49a9184796d60544a3f33281c0a0000000013202c3946535f6c7986929faca79a8d8074675a4d413427242f3a434f59626d727f8b9299a2a69f959083796d605a5043392f24180c000000000000000000000000000000000915202b353f474e524c52575e61666a6f7274767878797978787675726f6d66626058534e4846423c332a1f140900000000000000000008121c262e363b3f404646464f5c6976828f9ca9aa9d9184776a5e51464646464646464646464646464639352f2820160c010000000000000000000000000000000714212d3a46535e697884919a9b9c9d96897c6f625a504a464440434044464b515c67717e8b98a3aeaa9b8f827568554b4135291d1104000000000000000000000000000000000000000000000000000000000000000000000b1825313e4b5864717e8b97a4b1a79a8e8174675b4e4134281b0e000a1723303d4a5663707d8996a3b0a396897d7063564a3d3023170a00091623303c4956636f7c8996a2afa4978a7d7164574a3e3124170b000a1623303d495663707c8996a3afa79a8e8174675b4e4134281b0700000000000911181d2124252c2b2a2928272622211f1b150e060000000000000000000000000000000000000000000713202d3a4653606d79869394949493867a6d6053473a2d201407000000000000000000000000000000000000000000000000000000000916232f3c4855616b76828f99a3afaea39891847a6d675e564e454039352f2d2a25282823282c2d31373c424a505a616c727f8b939ea8aca1978c8073695e52463a2d2014070013202c3946535f6c7986929facada09386797272727272727272727272727272727272727272727272727272727272727272726d675d5145392c201306000000000013202c3946535f6c7986929facada09386797272727272727272727272727272727272727272727272727272727272727272726d675d5145392c2013060000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c201306000000000000000000000000010c161f2a343c464e565e616b6f757b7f8285888a8c8d8f8f9090919191919292929292999ba3acafa396897c706356493d3023160a00000000000000000009141f2935414b555f6a6f7c858f939c9fa4a79f9d989892908f8d8d8c8c8b8b8b8b8a8a8a8d929da9afa396897c706356493d3023160a000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000005111e2a36414c56626d75828f959fa7a8a097928a837f7c7a79797a7c7f848a9297a0a8a59e938d80736a60544a3f33281c0f0300000000000c18232e3944515c666f7c87929fa4a8a09590847d76716d6769676869676d70757b838e939ea7a59f93887d70665c5142382d22170b0000000013202c3946535f6c7986929faca79a8d8074675a4d4134271d28313d47515b636d727e879298a2a79f958e81756c61554b4035291d10040000000000000000000000000000010e1a26313d4751595e5f6060605e585f626568696b6c6c6c6c6b6a686663605c546060606055534d453c31261a0e020000000000000000010a141c242b2f33343939434f5c6976828f9ca9aa9d9184776a5e5144393939393939393939393939392c29241e160d040000000000000000000000000000000005121e2a36424d576774818e9aa6a9a89b8e81756c605c5453514a504a5153555d606d7983919daaaea2988b7e7165584b3e2f24180d01000000000000000000000000000000000000000000000000000000000000000000000b1825313e4b5864717e8b97a4b1a79a8e8174675b4e4134281b0e000a1723303d4a5663707d8996a3b0a396897d7063564a3d3023170a00091623303c4956636f7c8996a2afa4978a7d7164574a3e3124170b000815222f3b4855626e7b8895a9b3a89b8f8275685c4f422e23180c0000000009121b22292e3132393837363534332f2e2b262018100600000000000000000000000000000000000000000713202d3a4653606d798693a0a1a093867a6d6053473a2d20140700000000000000000000000000000000000000000000000000000005121e2a36424d5763707d89949fabb2a89f92867c6f685e554c443c342e2924201e1a1b1b171c1f20262b30383f44505a626d75818e96a0aca79f92867b6e6154473b2e2114080013202c3946535f6c7986929facb2a6998c7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f796d6054473a2d211407000000000013202c3946535f6c7986929facb2a6998c7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f796d6054473a2d2114070000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130600000000000000000000000000040d18222a343c444c52596063696e7276797b7d7f81828383848484848585858585868b909ba7afa396897c706356493d3023160a000000000000000000020d18242f3a434e585f6a6f7a82898f93999c9fa2aaa29f9d9b9a999998989898979797979a9da4aeafa396897c706356493d3023160a000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000000000714202d3946525e68727f8b949ea7a9a09591857e77726f6d686c6d6f72787e859196a0a9a59f93877c6f665b5044382b1f1308000000000007121d2834404a54606a727f8c929ca4a7a096918a827d7a7775747475767a7d818790959ea5a59e938d80736b60544b402f261c11060000000013202c3946535f6c7986929faca79a8d8074675a4d413427161f2c353f49515b636c717d869299a3a79e938a7e71675d5145382c1f1307000000000000000000000000000004111d2a36424e59636a6c6c6c6c6b636059585b5d5e5f5f5f5f5e5d5b59575f626a6c6c6c6c6c5f574d42372b1e1205000000000000000000020a12191f2326272d36434f5c6976828f9ca9aa9d9184776a5e5144372d2d2d2d2d2d2d2d2d2d2d2d201d19130c040000000000000000000000000000000000020e1a25313c4855626f7c88949faaaa9e938a7e726d6662605c545d545c6062676d75808d95a0aca99f92867a6d6154473a2e21140700000000000000000000000000000000000000000000000000000000000000000000000b1825313e4b5864717e8b97a4b1a79a8e8174675b4e4134281b0e000a1723303d4a5663707d8996a3b0a396897d7063564a3d3023170a00091623303c4956636f7c8996a2afa4978a7d7164574a3e3124170b000714212e3a4754616d7a8797a2ada99c90837669544a4034281c1004000006111b242d343a3d3e454444434241403c3b37322a22180e04000000000000000000000000000000000000000713202d3a4653606d798693a0aca093867a6d6053473a2d2014070000000000000000000000000000000000000000000000000000000714212d3a46535e6975828f9ca6b0aca0968c7f736a60564c433a3228231d1814120e09060c1012131a1e262e343e48515b606d7984919ea09d95908a807366594d4033261a0d0013202c3946535f6c7986929facb9a89c918c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c877b6e6154483b2e211508000000000013202c3946535f6c7986929facb9a89c918c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c877b6e6154483b2e2115080000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130600000000000000000000000000050e171e252a323a41464f54575e6165666d6f717374757676777777787878787879797e8b98a4afa396897c706356493d3023160a0000000000000000000007131d28313c464e585f686d757c82878b8f929897999a9b9c9d9d9d9e9e9e9e9f9f9f9fa3abacb5afa396897c706356493d3023160a000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000005111d2935414c56616e7a85929fa6ada19791837b716c6662605d606163656c717b849197a1ada4999184786c6053463a3025190d0100000000000c18232e39424e58626d73808c929ea1a8a19e948f8a8683828181828386898e93999fa7a39f938f81786d60594f42392e1d140a0000000000131f2c3946525f6c7985929faca79a8e8174675b4e4134281b1a232d373f49515a626b707d87929fa6a59e9184796d6053473a2f24180d010000000000000000000000000006121f2c3845525e6a757979797978706b605c544d5152535352524b515a61696e777979797976695f53463a2d2114070000000000000000000001080e1317191c2936434f5c6976828f9ca9aa9d9184776a5e5144372b202020202020202020201413110d0805030000000000000000000000000000000000000915212e3b47535f6a76828f98a2aea59f92877f78726f6d666a696a666d6f7379818d929da7aca2978d8074685d5246392d20130700000000000000000000000000000000000000000000000000000000000000000000000b1825313e4b5864717e8b97a4b1a79a8e8174675b4e4134281b0e000a1723303d4a5663707d8996a3aca396897d7063564a3d3023170a00091623303c4956636f7c8996a2afa4978a7d7164574a3e3124170b000713202d3946525d687885929fabaa9e918477665c5144382c1f120600010c18222d363f454a4b5251504f4e4d4c4947433c342a20150a000000000000000000000000000000000000000713202d3a4653606d798693a0a7a093867a6d6053473a2d2014070000000000000000000000000000000000000000000000000000000815212e3b4854616e7b87939facb2a89d9184796d60584e443a31292018120d0705020000000306090c151c2328363f45515d676f7d899395908a837e776c605346392d2013060013202c3946535f6c7986929facb9ada39c999999999999999999999999999999999999999999999999999999999999999994877b6e6154483b2e211508000000000013202c3946535f6c7986929facb9ada39c999999999999999999999999999999999999999999999999999999999999999994877b6e6154483b2e2115080000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c201306000000000000000000000000020c1720293036393a3e3f44484d5354545c606264666768696a6a6a6b6b6b6b6c6c6c717e8b98a4afa396897c706356493d3023160a00000000000000000000010c161f2a343c464e565e616b6f757b7f8285888a8c8d8f8f9090919191919292929292999ba3acafa396897c706356493d3023160a000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000713202d3946525e6874808d98a2aea69e92857b6e69615a5654525354535b60696e7b85929ea8aba0958a7d7063564c41362a1d1105000000000007121c27303d46515b646e73808a92979fa3a69f9c9992908f8e8e8f9092989b9fa4a69f99928c81786d665c50473d30271d0b020000000000121f2c3945525f6c7885929faba89b8e8275685b4f42302519111b252e373f485059606b717e8b949faba1968b7e7165554b4135291d1104000000000000000000000000000613202c3946535f6c7987868686847d736d665f5751464146454d555c606c717b83868686867b6e6155483b2e22150800000000000000000000000002070b101c2936434f5c6976828f9ca9aa9d9184776a5e5144372b1e13131313130b101316171e1a1613120f0b060300000000000000000000000000000006121f2b37434e58626f7c86929fa4aca399928b837f7b797777767777797c80858e939da4aea49a92857a6d61564c4135291d110500000000000000000000000000000000000000000000000000000000000000000000000b1825313e4b5864717e8b97a4b1a79a8e8174675b4e4134281b0e000a1723303d4a5663707d89969f9f9f96897d7063564a3d3023170a00091623303c4956636f7c8996a2afa4978a7d7164574a3e3124170b0005111d2935414c566a7683909da9ac9f9286796d6053463a2d2013070005111d29343f485056585f5e5d5c5b5a5955534e463c32261b0f030000000000000000000000000000000000000713202d3a4653606d7986939a9a9a93867a6d6053473a2d201407000000000000000000000000000000000000000000000000000005121e2a36424d576673808d99a4afaca0968a7e71665c51463c32281f170e0700000000000000000000030a1117242935414b55606b75818e8a837d78706c655b5044372b1f12050013202c3946535f6c7986929facb9b5ada8a6a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a194877b6e6154483b2e211508000000000013202c3946535f6c7986929facb9b5ada8a6a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a194877b6e6154483b2e2115080000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130600000000000000000000000008131e29323a4146474b4c4d4e4f51524a50535557595a5c5c5d5d5e5e5e5e5f5f5f65717e8b98a4afa396897c706356493d3023160a0000000000000000000000040d18222a343c444c52596063696e7276797b7d7f81828383848484848585858585868b909ba7afa396897c706356493d3023160a000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000714212e3a4754616d7a86929faaab9f948a7d70695e575049474546474950565e69717e8b96a0aca79c8f8275685e5246392d2013070000000000000b151e2b343f49525c646e737e858e92999ea1a8a39f9d9c9a9b9c9d9fa3a9a29f9b948f877f776d665c544a3f352c1e150b000000000000121e2b3845515e6b7884919eaba99c8f827669564c41362a1e11131c252e363e474f59626d76828f9caaa99c908376675d5145392c20130600000000000000000000000000000b1825323e4b5865717e8b9296918780786e69625b524c4550575f676d747e869095948d8074695f53463a2d211407000000000000000000000000000003101c2936434f5c6976828f9ca9aa9d9184776a5e5144372b1e110600080f161c2022232b2723201f1b17120f0b0600000000000000000000000000030f1b26323c47535f6a717e8b939aa2aaa39f95918c8886848483838485898c92979ea5aaa39f93887d70685e52443a3024190d0100000000000000000000000000000000000000000000000000000000000000000000000b1825313e4b5864717e8b97a4b1a79a8e8174675b4e4134281b0e000a1723303d4a5663707d899393939393897d7063564a3d3023170a00091623303c4956636f7c8996a2afa4978a7d7164574a3e3124170b00010d192430414e5b6774818e9aa7afa399887b6f6255483c2e23180c060615212e3a45505a62656c6b6a69686766625f584e43372b1f13060000000000000000040607080808080808080813202d3a4653606d79868d8d8d8d8d86796d6053473a2d20140808080808080808070604000000000000000000000000000000000714212d3a46535f697784919eabb5ab9d9184786c60544b40342b20160d0500000000000000000000000000061218242f3a434f59616e7b837e78716c65605b53493f33271b0f030013202c3946535f6c7986929facb9afa7a2a09f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f94877b6e6154483b2e211508000000000013202c3946535f6c7986929facb9afa7a2a09f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f94877b6e6154483b2e2115080000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013060000000000000000000000010d1925303a444c525457595a5b5c5d5e5b5953484a4c4e4f5050515151515252525965727f8c98a5afa396897c706356493d3023160a0000000000000000000000050e171e252a323a41464f54575e6165666d6f717374757676777777787878787879797e8b98a4afa396897c706356493d3023160a000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000005121e2a36424d5765727f8c98a2aea99c8f82766c61574d453e3a39393a3f444d57616c7784919eaaa99f93867a6d6154473a2e211407000000000000030c19222d37404a525c636c717a81868d9196989b9c9e9f9f9f9f9e9d9b9997928e89827c736c655c544b42382e231a0c03000000000000101d2a3643505d697683909ca9ab9e918478685e5246392d20140a131c242d353d47505a63707d8998a3ac9f92867a6d6054473a2d21140700000000000000000000000000000b1724313d4a56626d73808c9399938d837b726d615e56515a61696e79818a9298958f82786d60574d42372b1e1205000000000000000000000000000003101c2936434f5c6976828f9ca9aa9d9184776a5e5144372b1e070008111921272c2f3038342f2d2b27221f1c17110a020000000000000000000000000a15202b37434e58616c727f8892989fa3a7a09d99999291909090919298999ea2a9a69f98928b7f726c61564c4132281e13080000000000000000000000000000000000000000000000000000000000000000000000000b1825313e4b5864717e8b97a4b1a79a8e8174675b4e4134281b0e000a1723303d4a5663707d868686868686867d7063564a3d3023170a00091623303c4956636f7c8996a2afa4978a7d7164574a3e3124170b0000081825313e4b5864717e8b97a7b1ab988b7e7165554b4034281d1413131624313d4a56626c71787777767574736f6a5f53473b2e211508000000000001070c101314151515151515151515202d394653606c7880808080808080786d6053463a2d201515151515151515151413100c0701000000000000000000000000000815222e3b4855616e7b8896a0acafa3998c7f72665b5042392e22190e0500000000000000000000000000000007131d28313d46535f696e77716c65605b53504941382d22170b000013202c3946535f6c7986929facb9a79d95939393939393939393939393939393939393939393939393939393939393939393877b6e6154483b2e211508000000000013202c3946535f6c7986929facb9a79d95939393939393939393939393939393939393939393939393939393939393939393877b6e6154483b2e2115080000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c201306000000000000000000000005111d2a36414c565e6164656768696a6b68655d534840414243434444444545454d596673808c99a6afa295897c6f6256493c2f23160900000000000000000000020c1720293036393a3e3f44484d5354545c606264666768696a6a6a6b6b6b6b6c6c6c717e8b98a4afa396897c706356493d3023160a000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000714202d3a46525e697783909daaada197897d7063594f453b332d2c2d2d333b45505a66737f8c999d9c9c998a7d7063574a3d3024170a0000000000000007101b252e38404a525a61686d747b8084888b8e90919292929291908e8c8985817c766f6a605b534b423930261c1108000000000000000f1b2835424e5b6875818e9ba8ada196877a6e6154473b30251b1413121b232b353f4653606d7986929faca399897c6f6256493c2f23160900000000000000000000000000000915212e3a45505a636e74818e939f9590867e756d68605c606c717b838e939f969083796d665c50453c31261a0e02000000000000000000000000000003101c2936434f5c6976828f9ca9aa9d9184776a5e51442f24180d050f19232b33383c3d45403c3937332d2b28221c140b050000000000000000000000040f1a26313c46505a636d727e868e92999da0a8aba39f9e9d9c9d9e9fa2aaaaa29f9b948f867e726d62594f443a3020160c020000000000000000000000000000000000000000000000000000000000000000000000010b1825313e4b5864717e8b97a4b1a79a8e8174675b4e4134281b0e000916232f3c4855616b7079797979797979706b6155483c2f23160900091623303c4956636f7c8996a2afa4978a7d7164574a3e3124170b00000815212e3b4854616e7b87959faba89b8e8175675c5145392e2521201f202935404b5565717e8584838281807f7c6f6255493c2f22160900000000030b12181d1f20212121212121212121212b3844505b666c747474747474746d665c5044382c21212121212121212121201f1d18120b030000000000000000000000000c1825323f4b5865727e8b98a8b2ac9f92867a6e61544a3f30271d100700000000000000000000000000000000010c161f2a36424d575f616a64605b535049443f382f261b1106000013202c3946535f6c7986929facb9a2958b868686868686868686868686868686868686868686868686868686868686868686867b6e6154483b2e211508000000000013202c3946535f6c7986929facb9a2958b868686868686868686868686868686868686868686868686868686868686868686867b6e6154483b2e2115080000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130600000000000000000000000713202d3946525e686d71727374767778756f65594d3d323536373737383835404b556774818e9aa7b2a995887b6e6255483b2f2215080000000000000000000008131e29323a4146474b4c4d4e4f51524a50535557595a5c5c5d5d5e5e5e5e5f5f5f65717e8b98a4afa396897c706356493d3023160a000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000815212e3b4854616e7b87959fabab9e9184786c6053463e33292120202227333e4956626f7c899191908f8e8d8073665a4d4033271a0d000000000000000009131c262e38404850565e61696e73787c7e818384858686858583817f7c79746f6a625f585049413930271e150a00000000000000000c1926323f4c5965727f8c98a9b2a8978a7d7064564d42362b2621201f1f20232c3845515c667784919eaaab978a7d7164574a3e3124170b000000000000000000000000000005111d29343f48525b606d78818f959f98928b827a706b676d747e8690959d9891847b6e675d544a3f332a1f1409000000000000000000000000000000020f1c2935424f5c6875828f9ba8ab9e9184786b554b4035291d110b16212b353d44484a514d4946443f3938332d261d170e0500000000000000000000000a15202a343e48515b636c717b81878c919597999c9d9e9e9f9f9f9e9d9b9998928e89827b716c625b51473e32281e0e04000000000000000000000000000000000000000000000000000000000000000105090b0b0d0d1825313e4b5864717e8b97a4b1a79a8e8174675b4e4134281b0e000714202c38444f5961636c6c6c6c6c6c6c6361594f44382c20140700091623303c4956636f7c8996a2afa4978a7d7164574a3e3124170b00000714202d3a46525e697783909daaab9f9285796d60544b4036312d2c2c2d323a45515d6775818e91908f8e8d897c6f6356493c30231609000000030d151d24292c2d2e2e2e2e2e2e2e2e2e2e2e333f4a545b6067676767676767605c544a3f342e2e2e2e2e2e2e2e2e2e2e2d2c29241d150d030000000000000000000004101d2935404b556875828f9ba8b5a99c908376685e5242382d1e150b000000000000000000000000000000000000040d1a26313b454d53555d57535049443f38332d261d140a00000013202c3946535f6c7986929facada093867979797979797979797979797979797979797979797979797979797979797979797976695e52463a2d201407000000000013202c3946535f6c7986929facada093867979797979797979797979797979797979797979797979797979797979797979797976695e52463a2d2014070000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130600000000000000000000000714212e3a4754616d7a7e7f8081828485817568584e43372e2c2823282c2f3945515d677783909daaada196877a6d6054473a2d211407000000000000000000010d1925303a444c525457595a5b5c5d5e5b5953484a4c4e4f5050515151515252525965727f8c98a5afa396897c706356493d3023160a000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000b1824313e4b5764717e8a97a7b1a79a8d8174665b5044382c2017131317202d3a4753606d79868584838281807e7164574b3e3124180b0000000000000000010a141c262e363e444c52575e61666a6f7274767878797978787675726f6d66626058534e443f382f271e150c030000000000000000091623303c4956636f7c8997a2ada89b8f8275695e52463f37312e2d2c2c2d2e343b45515d677885919eaba4978b7e7164584b3e3125180b0000000000000000000000000000010c18222d364044505c666d79829095a09f938f857d746f79818a9298a09992867c6f695e554b42382e21180e03000000000000000000000000000000020f1b2835424e5b6875818e9ba8ab9f928578675d5145392c2017161c27333d474f54565e5a5653504946443f382f2920170d0200000000000000000000030e18222d363f49515a61696e747b8084888b8d8f90919292929291908e8c8985817c766e69615a51493f352c20160c00000000000000000000000000000000000000000000000000000000000000060c111517181a1a1a25313e4b5864717e8b97a4b1a79a8e8174675b4e4134281b0e0004101c27333d474f55566060606060606056554f473d33271c100400091623303c4956636f7c8996a2afa4978a7d7164574a3e3124170b000005121e2a36424d5765727f8c98a2aea2988b7e71665c5146423b3a39383a3d444d57606d7a85929e9d9c9b9285796d6053463a2d2013070000010b151f272f35383a3b3b3b3b3b3b3b3b3b3b3b3b3b424a50535a5a5a5a5a5a5a53504a423b3b3b3b3b3b3b3b3b3b3b3b3b3a39352f271f150b0100000000000000000006131f2c3845515d677884919eabb6ac998c7f7266564c412f261c0c030000000000000000000000000000000000000009141f29333b424648504a46443f38332d27221b140b0200000013202c3946535f6c7986929facada093867a6d6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c5e574d42362a1e1205000000000013202c3946535f6c7986929facada093867a6d6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c5e574d42362a1e12050000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130600000000000000000000000815212e3b4854616e7b878c8d8e8f909184786a6054473f3a38342e34383a404b55606d7a86929facab9e918578675d5145392c20130600000000000000000005111d2a36414c565e6164656768696a6b68655d534840414243434444444545454d596673808c99a6afa295897c6f6256493c2f231609000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000010e1b2734414e5a6774818d9aa7b4aa978a7e7164544a3f33281a0e0606131f2c3845515c676d79787776757474716c6155493d3023170a000000000000000000020a131c242c323a41464d5254585f626568696b6c6c6c6c6b6a686663605c54544e47433c332d261d150c030000000000000000000713202d3a4653606d7985929fabac9f92877b6e615a5147433c3b3a38383a3b40444d56606d7a86939facaa978a7d7164574a3e3124170b00000000000000000000000000000006111b2428343f4a545d676d7a839196a19e979188807b838e929fa29f93877d706a5f574d433a30261c0f0600000000000000000000000000000000010d1a2734404d5a6773808d9aa6ac9f93867a6d6053473a2e262323262c38444f5960636b6762605b5353504a423b33291f1409000000000000000000000006101b242e373f4850575e61696e73777b7e80828484858686858583827f7d79756f6b625f5750483f372d231a0e040000000000000000000000000000000000000000000000000000000000000911181d21242527272727313e4b5864717e8b97a4b1a79a8e8174675b4e4134281b0e00000b16212c353d44484a535353535353534a48443d352c21160b0000091623303c4956636f7c8996a2afa4978a7d7164574a3e3124170b0000020e1a25303b4754616d7a86929fa9aa9e9184796d605b534d4847454546484f565e69727f8c98a2aaa69b8e8275665c5044382c1f1206000007121d27313940454748484848484848484848484848484848484d4d4d4d4d4d4d48484848484848484848484848484848484745403931271d12070000000000000000000714202d3a4753606d7a86939facafa49a897c6f6356493c3023140a0000000000000000000000000000000000000000030d17212931363a3b443e3937332d27221b17110a020000000013202c3946535f6c7986929facada093867a6d60606060606060606060606060606060606060606060606060606060606060605f524d453b30251a0e02000000000013202c3946535f6c7986929facada093867a6d60606060606060606060606060606060606060606060606060606060606060605f524d453b30251a0e020000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130600000000000000000000000714212d3a46535e697884919a9b9c9d96897c6f625a504a464440434044464b515c67717e8b98a3aeaa9b8f827568554b4135291d11040000000000000000000713202d3946525e686d71727374767778756f65594d3d323536373737383835404b556774818e9aa7b2a995887b6e6255483b2f221508000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000004111d2935414c566a7683909da9aea298887b6e6155483b2d2217080004101c2934404b555c606c6b6a6969686764615a5045392d21140800000000000000000000010a121a202830363b4246484e5361696b6c6c6c68605c545d5b595653514a47433d373127221b140b030000000000000000000006121f2c3844505c6674818e9ba6afa3998e81756c625b534e494746444446484a51575e68727e8b99a4aea398897c6f6256493c2f23160900000000000000000000000000000000091217232e38424b555d686e7b849197a2a19a938d8890959da59d928b7f726b61584e453b31281e140a0000000000000000000000000000000000000c1825323f4b5865727e8b98aaafa49a897c7063544b403631303031363f4854606b7078736f6c6563605b544d453b30251a0e02000000000000000000000009121c252e363e454d52575f62666a6e71737577787879797978777573706d67636059534d453e362d251b110800000000000000000000000000000000000000000000000000000000000009121b22292e313234343434343e4b5864717e8b97a4b1a79a8e8174675b4e4134281b0e000005101a232c33383c3d464646464646463d3c38332c231a10050000091623303c4956636f7c8996a2afa4978a7d7164574a3e3124170b0000000914202d3946525d6874808d97a2aca0968d80746d615e575554515153555960686e7b86929faaab9f94897c6f63544a3f34281c100300000c18242f39434b5153545454545454545454545454545454545454545454545454545454545454545454545454545454545453514b43392f24180c0000000000000000000915222f3c4855626f7b889aa4afac9f93867a6d6054473a2d211407000000000000000000000000000000000000000000060f171f262a2d2e37312d2b27221b17110b0600000000000013202c3946535f6c7986929facada093867a6d60535353535353535353535353535353535353535353535353535353535353534846423b33291f140900000000000013202c3946535f6c7986929facada093867a6d60535353535353535353535353535353535353535353535353535353535353534846423b33291f1409000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c201306000000000000000000000005121e2a36424d576774818e9aa6a9a89b8e81756c605c5453514a504a5153555d606d7983919daaaea2988b7e7165584b3e2f24180d010000000000000000000714212e3a4754616d7a7e7f8081828485817568584e43372e2c2823282c2f3945515d677783909daaada196877a6d6054473a2d211407000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000713202c3945525d687885929fabac9f9285796c605346392d20130600000c18232f39434b51535f5e5e5d5c5b5a575550483e33281d1105000000000000000000000000080e161e252a30363a3c505d697378797979746d665e564e4c494644403937322b262017110a02000000000000000000000003101c28343f4a54626f7c89949fabab9e938b7e726d625f5856545351505355545c60696e7a85929eabac9f92867a6d6053473a2d201407000000000000000000000000000000000006111c263039434c565e696f7c859299a3a49f9a959da0a79e948d80746d62594f463c33291f160c02000000000000000000000000000000000000091623303c4956636f7c8998a2aeac998c8073665c5146423e3d3c3d4246515b63707d84807c78746f6c665e574d42362a1e11050000000000000000000000000a131c242c333b42464d5355575f626466696a6b6b6c6c6c6b6a686663605d55544f4c4841382f241b130900000000000000000000000000000000000000000000000000000000000006111b242d343a3d3e4040404040404b5864717e8b97a4b1a79a8e8174675b4e4134281b0e000008131e28313a414547494949494949494745413a31281e13080000091623303c4956636f7c8996a2afa4978a7d7164574a3e3124170b00000005111d2935414c56616d7a85929fa5a89d928c7f756e696461605d5c6062656b6f7a839198a2aea3999083766b605442382e23170c000004101d2935404b555d606161616161616161616161616161616161616161616161616161616161616161616161616161616161605d554b4035291d100400000000000000000b1724313e4a5764717d8a97acb6aa9e918477675d5145392c20130600000000000000000000000000000000000000000000060d141a1e21222a24201f1b17110b06000000000000000013202c3946535f6c7986929facada093867a6d60534746464646464646464646464646464646464646464646464646464646463b3a36302921170d0200000000000013202c3946535f6c7986929facada093867a6d60534746464646464646464646464646464646464646464646464646464646463b3a36302921170d02000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013060000000000000000000000020e1a25313c4855626f7c88949faaaa9e938a7e726d6662605c545d545c6062676d75808d95a0aca99f92867a6d6154473a2e211407000000000000000000000815212e3b4854616e7b878c8d8e8f909184786a6054473f3a38342e34383a404b55606d7a86929facab9e918578675d5145392c201306000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000714212d3a4754606d7a8797a2adaa9d918477655b5044372b1f1205000007121d273139404547525251504f4e4d4b49453e362c22170c0000000000000000000000000000050c13191f252a3845525f6b788586868681786d685f584f473f38342e2b27201b150b0600000000000000000000000000000c17232e384754606a76828f99a3aea59f92877f756f6a666261605c5c606164666d727b839097a1ada59c8f8275675d5145392c1f13060000000000000000000000000000000000000a141e27313a444d575f6a707d879299a49f9f9f9fa9a0958f82786d605b51473e342a21170d04000000000000000000000000000000000000000714202d3a4753606d7985929facab9e9185796d605a534d4b4a494a4d535b626d76828f8d8984807c786e695e52463a2d201407000000000000000000000000020e1925303b444c525f6060606060605d5c5d5e5f5f5f5f5e5d5b6060606060605a58534a41362b2014080000000000000000000000000000000000000000000000000000000000010c18222d363f454a4b4d4d4d4d4d4d4d5864717e8b97a4b1a79a8e8174675b4e4134281b0e00010d19242f3a434c52545656565656565654524c433a2f24190d0100091623303c4956636f7c8996a2afa4978a7d7164574a3e3124170b000000010d1924303a46525e68727e8b939ea7a49c918c827b75716e6d67666d6f71767d849195a0aaa69f92877c6f63594f4330261c1106000006131f2c3845515d676d6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6e6d675d5145392c1f130600000000000000000c1926323f4c5965727f8c98a5b2a99c8f837669554b4135291d1104000000000000000000000000000000000000000000000003090e1214151d1713120f0b060000000000000000000013202c3946535f6c7986929facada093867a6d6053473a393939393939393939393939393939393939393939393939393939392e2d2a251f170f050000000000000013202c3946535f6c7986929facada093867a6d6053473a393939393939393939393939393939393939393939393939393939392e2d2a251f170f0500000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013060000000000000000000000000915212e3b47535f6a76828f98a2aea59f92877f78726f6d666a696a666d6f7379818d929da7aca2978d8074685d5246392d201307000000000000000000000714212d3a46535e697884919a9b9c9d96897c6f625a504a464440434044464b515c67717e8b98a3aeaa9b8f827568554b4135291d1104000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000815222f3b4855626e7b8895a9b3a99c8f82766953493f33271b0f030000010b151f272f34383a464544434241413e3d39332c241a100600000000000000000000000000000002080d141a26323f4c5965727f8c93938e827a6f6a615951444039302820180f0a0300000000000000000000000000000006111c2b38434e58626f7c87929fa5afa399928b817c76726f6e6d66666d6e7074797f859095a0a9a89e93897d7063554b4035291d1004000000000000000000000000000000000000020c151f28323b454e58606b717e8793939393939393969083796d665c50493f352c22190f05000000000000000000000000000000000000000006131f2c3845515c6775828f9ba7ada1978c80736c615f5757565657575f616d727f8b949a96918d89857b6e6154473b2e21140800000000000000000000000005111e2a36414c565e6c6c6c6c6c6c6c6a675f555253534f5960636c6c6c6c6c6c67645c53483c3024180b000000000000000000000000000000000000000000000000000000000005111d29343f485056585a5a5a5a5a5a5a5a64717e8b97a4b1a79a8e8174675b4e4134281b0e0004111d2935414c565d6062626262626262605d564c4135291d110400091623303c4956636f7c8996a2afa4978a7d7164574a3e3124170b0000000008131e2a36414c56626d75818e959fa6a49c948f86827e7b7a7979797b7e83899196a0a7a59e948c7f736b6054473d321e150a0000000714202d3a4753606d797b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b796d6053473a2d20140700000000000000000d192633404c5966737f8c99a6b2a89b8e8175685b4e422f24180d010000000000000000000000000000000000000000000000000002050708110b06050300000000000000000000000013202c3946535f6c7986929facada093867a6d6053473a2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d21201e1a140d05000000000000000013202c3946535f6c7986929facada093867a6d6053473a2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d21201e1a140d050000000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130600000000000000000000000006121f2b37434e58626f7c86929fa4aca399928b837f7b797777767777797c80858e939da4aea49a92857a6d61564c4135291d11050000000000000000000005121e2a36424d576774818e9aa6a9a89b8e81756c605c5453514a504a5153555d606d7983919daaaea2988b7e7165584b3e2f24180d01000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000091623303c4956636f7c8996a2afa89b8e8175685b4e422d22170b00000000030d151d23292c2d3938373636353431302d28221a120800000000000000000000000000000000000003091825313e4a56626d75818f969490847c706b625b514a423a322a21191106000000000000000000000000000000000f1b27323d47535f6a727f8c939da5aba39f938e87827f7c7a797879797b7d81858b9297a0a7a8a0968f82756b605443392f24180c0000000000000000000000000000000000000000030d162029333c464f59616c727f8686868686868686847b6e675d544a3f372d231a100700000000000000000000000000000000000000000004101c2934404b5563707d8a95a0aca99f93887e746e69666463636366696e757f87939fa6a19e9a908377695e52463a2d2014070000000000000000000000000714202d3946525e68767979797979797771675b4f464854606b70797979797979746e64584c4033271a0d01000000000000000000000000000000000000000000000000000000000915212e3a45505a6265676767676767676767717e8b97a4b1a79a8e8174675b4e4134281b0e000613202c3945525d686d6f6f6f6f6f6f6f6d685d5245392c20130600091623303c4956636f7c8996a2afa4978a7d7164574a3e3124170b00000000020d1925303a44515b606d798390949da5a69e98928f8b8887858586888b90949ea1a8a39f938e82786d60594f43352b210c030000000a1723303d4a5663707d87878787878787878787878787878787878787878787878787878787878787878787878787878787877e7164574a3e3124170b00000000000000000d1a2734404d5a6773808d9aa6b3a79a8d8074675a4d4134271a07000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000013202c3946535f6c7986929facada093867a6d6053473a2d2020202020202020202020202020202020202020202020202020201514120e090200000000000000000013202c3946535f6c7986929facada093867a6d6053473a2d2020202020202020202020202020202020202020202020202020201514120e0902000000000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c201306000000000000000000000000030f1b26323c47535f6a717e8b939aa2aaa39f95918c8886848483838485898c92979ea5aaa39f93887d70685e52443a3024190d0100000000000000000000020e1a25313c4855626f7c88949faaaa9e938a7e726d6662605c545d545c6062676d75808d95a0aca99f92867a6d6154473a2e21140700000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000a1724303d4a5763707d8a96a3b0a79a8d8174675a4e4134271b060000000000030b12181c1f202c2b2b2a2928272423211d17100800000000000000000000000000000000000000000916222e3a46515b606d7a8491989691867d726d605c544c443c332b2317110a0200000000000000000000000000000a16202b37434e58606c77818e939fa2aaa59e9a938f8c898786858586888a8d92979ea1a9a59e9691847a6d61594f4431271d1207000000000000000000000000000000000000000000040e17212a343d47505a626d727979797979797979786e695e554b42382e251b110800000000000000000000000000000000000000000000000c18232f394653606c7883909aa4afa49a938b817b767371706f7072767b818b9399a4afa99f948a7e7164574d42362a1e11050000000000000000000000000814212e3b4754616e7a86868686868683776a5d5144495663707d8686868686868074675a4e4134271b0e01000000000000000000000000000000000000000000000000000000000b1724313d4a56626d71737373737373737373737e8b97a4b1a79a8e8174675b4e4134281b0e000714212d3a4754606d7a7c7c7c7c7c7c7c7a6d6054473a2d21140700091623303c4956636f7c8996a2afa4978a7d7164574a3e3124170b000000000008131e28323f45515d676d7a828e939da0a7a39f9b97949892929895989c9fa6a7a099928d81786d665c50463d3223190f000000000a1723303d4a5663707d899494949494949494949494949494949494949494949494949494949494949494949494949494948a7d7164574a3e3124170b00000000000000000e1b2734414e5a6774818d9aa7b3a69a8d8073675a4d4034271a0d010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facada093867a6d6053473a2d20141313131313131313131313131313131313131313131313131308070502000000000000000000000013202c3946535f6c7986929facada093867a6d6053473a2d201413131313131313131313131313131313131313131313131313080705020000000000000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c201306000000000000000000000000000a15202b37434e58616c727f8892989fa3a7a09d99999291909090919298999ea2a9a69f98928b7f726c61564c4132281e13080000000000000000000000000915212e3b47535f6a76828f98a2aea59f92877f78726f6d666a696a666d6f7379818d929da7aca2978d8074685d5246392d20130700000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000a1724313d4a5764707d8a97a3b0a79a8d8074675a4d4134271a0e01000000000001070c1013141f1f1e1d1c1b1a181714110c0600000000000000000000000000000000000000000006121e29353f45525d686f7c86929f9892877f746d665d564d453d3528231c140c0300000000000000000000000000040f1b26323c44505b656d78818b92989fa4aca49f9c9995949892929894979a9ea1a9a7a09d938f847b6e685d52473d331f150b0100000000000000000000000000000000000000000000050f18222b353e48515b62656c6c6c6c6c6c6c6c6b615e574d433a30261c130900000000000000000000000000000000000000000000000007121f2b3844505b66707d88939fa5aca49f938e8783807e7d7c7d7f82878e939fa4aba9a1978f82766c6155453b30251a0e020000000000000000000000000814212e3b4754616e7a87939393939084776a5d5144495663707c89939393938d8174675a4e4134271b0e01000000000000000000000000000000000000000000000000000000000b1825323e4b5865717f80808080808080808080828f9ca9b4a79a8e8174675b4e4134281b0e000a1723303d4a5663707d898989898989897d7063564a3d3023170a00091623303c4956636f7c8996a2aca4978a7d7164574a3e3124170b0000000000020c16202935404b555d686d78818991959c9fa3aba4aaa29f9fa2aaa4aba49f9c95908780786d665c544a3f342b211007000000000a1723303d4a5663707d8996a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1978a7d7164574a3e3124170b00000000000000000e1b2835414e5b6874818e9ba7b3a6998c807366594d4033261a0d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facada093867a6d6053473a2d20140d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0b0a080500000000000000000013202c3946535f6c7986929facada093867a6d6053473a2d20140d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0b0a0805000000000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130600000000000000000000000000040f1a26313c46505a636d727e868e92999da0a8aba39f9e9d9c9d9e9fa2aaaaa29f9b948f867e726d62594f443a3020160c0200000000000000000000000006121f2b37434e58626f7c86929fa4aca399928b837f7b797777767777797c80858e939da4aea49a92857a6d61564c4135291d110500000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000b1724313e4a5764717d8a97a4b0a69a8d8073675a4d4034271a0d010000000000000000040607131211100f0e0e0b0a08050000000000000000000000000000000000000000000000010d18232935414c565f6a727e8b939e99938c81786d685f574f473f342e261e150c03000000000000000000000000000a152027333f49535c666d747f868e939a9ea1a8a7a5a2aaa29f9fa2aaa3a7aaa29f9b959089827a6e695e564c41352b210d03000000000000000000000000000000000000000000000000061019232c363f4951565860606060606060605e54524d453b31281e140a01000000000000000000000000000000000000000000000000030f1c28333f4a54606b73808d939da4aca59d99938f8c8a89898a8c8f93999ea5aea79f9791857b6e615a504533291f1409000000000000000000000000000814212e3b4754616e7a87949f9f9d9084776a5d5144495663707c89969f9f9a8d8174675a4e4134271b0e0100000000000000000000000000000000000000000000000000000003101d293643505c6976828d8d8d8d8d8d8d8d8d8d8f949eaab4a79a8e8174675b4e4134281b0e000a1723303d4a5663707d899595959595897d7063564a3d3023170a00091623303c4956636f7c89969f9f9f978a7d7164574a3e3124170b000000000000050e18242f3a434c565d666d747d848a8f92999a9c9e9e9f9f9e9d9c9a99938f8a837c736c665c544a42382e22190f00000000000a1723303d4a5663707d89969f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f978a7d7164574a3e3124170b00000000000000000e1b2835414e5b6874818e9ba7b3a6998d8073665a4d4033271a0d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facada093867a6d6053473a2d201a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a171714110c050000000000000013202c3946535f6c7986929facada093867a6d6053473a2d201a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a171714110c0500000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130600000000000000000000000000000a15202a343e48515b636c717b81878c919597999c9d9e9e9f9f9f9e9d9b9998928e89827b716c625b51473e32281e0e0400000000000000000000000000030f1b26323c47535f6a717e8b939aa2aaa39f95918c8886848483838485898c92979ea5aaa39f93887d70685e52443a3024190d0100000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000a1724313d4a5764707d8a97a3b0a79a8d8074675a4d4134271a0e010000000000000105090b0b121111100f0e0d09080603000000000000000000000000000000000000000000000000070d19242f3a434e58626d75818e95a09f928e827a6e69605951443f3830271e150b00000000000000000000000000040b17222d38414a545c606d727b81878d9196989a9c9d9e9f9f9f9e9d9d9b9898928e8a837d756d685e574d443a3023190f000000000000000000000000000000000000000000000000000007111a242d373f464a4c5353535353535353524846423b33291f160c0200000000000000000000000000000000000000000000000000000b17222d38424f59606c78818d929ea0a8aba49f9c9997969696999c9fa4abaaa29f9590857c6f695e53483e3420170d02000000000000000000000000000814212e3b4754616e7a8794a1aa9d9084776a5d5144495663707c8996a3a79a8d8174675a4e4134271b0e0100000000000000000000000000000000000000000000000000000003101d293643505c6976838f9a9a9a9a9a9a9a9a9a9c9ea6b0b4a79a8e8174675b4e4134281b0e000a1723303d4a5663707d8996a2a2a296897d7063564a3d3023170a00091623303c4956636f7c8993939393938a7d7164574a3e3124170b0000000000000007131d28313a444c545c606b70787e82868a8d8f9192929291918f8d8a86827d786f6a605b544a423930261c100700000000000a1723303d4a5663707d899393939393939393939393939393939393939393939393939393939393939393939393939393938a7d7164574a3e3124170b00000000000000000e1b2734414e5a6774818d9aa7b3a69a8d8073675a4d4034271a0d010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facada093867a6d6053473a2d27272727272727272727272727272727272727272727272727272727272423211c17100800000000000013202c3946535f6c7986929facada093867a6d6053473a2d27272727272727272727272727272727272727272727272727272727272423211c171008000000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013060000000000000000000000000000030e18222d363f49515a61696e747b8084888b8d8f90919292929291908e8c8985817c766e69615a51493f352c20160c0000000000000000000000000000000a15202b37434e58616c727f8892989fa3a7a09d99999291909090919298999ea2a9a69f98928b7f726c61564c4132281e13080000000000000000000000000000000203101d2a3643505d69768390908376695d5043362a1d100302000000000000000a1724303d4a5763707d8a96a3b0a79a8d8074675a4d4134271a0e010000000000060c111517181f1e1d1c1b1a191615130f0a04000000000000000000000000000000000000000000000008131e28313c46515b606d79839198a29d948f847b706b625b504a423930271d12070000000000000000000000000006111b262f38424a505b62696e757b8084888b8d8f90929292929191908e8b8985817d78706b605d564d453b32281e110700000000000000000000000000000000000000000000000000000008121b252d343a3e3f4646464646464646453b3a36302921170d0400000000000000000000000000000000000000000000000000000006111c262f3d44505b666d78808a91969d9fa7a7a9a6a4a3a2a3a5a9a7a8a09e98928c837b6f6a5f574d42362c220e0500000000000000000000000000000814212e3b4754616e7a8794a1a99d9084776a5d5144495663707c8996a3a79a8d8174675a4e4134271b0e0100000000000000000000000000000000000000000000000000000003101d293643505c6976838f9ca6a6a6a6a6a6a6a6a9aab0acaca79a8e8174675b4e4134281b0e000a1723303d4a5663707d8996a3aca396897d7063564a3d3023170a00091623303c4956636f7d868686868686867e7164574a3e3124170b00000000000000010c161f28323a424b515960666c71767a7d808284858686858483807d7a75706c666058504a423930271e140a0000000000000a1723303d4a5663707d86868686868686868686868686868686868686868686868686868686868686868686868686868686867e7164574a3e3124170b00000000000000000d1a2734404d5a6773808d9aa6b3a79a8d8174675a4e4134271b09000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202c3946535f6c7986929facada093867a6d6053473a34343434343434343434343434343434343434343434343434343434343431302d28221a1208000000000013202c3946535f6c7986929facada093867a6d6053473a34343434343434343434343434343434343434343434343434343434343431302d28221a12080000000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130600000000000000000000000000000006101b242e373f4850575e61696e73777b7e80828484858686858583827f7d79756f6b625f5750483f372d231a0e04000000000000000000000000000000040f1a26313c46505a636d727e868e92999da0a8aba39f9e9d9c9d9e9fa2aaaaa29f9b948f867e726d62594f443a3020160c0200000000000000000000000000050a0f12101d2a3643505d69768390908376695d5043362a1d10120f0a0500000000000a1623303d495663707c8996a3afa79a8e8174675b4e4134281b0700000000000911181d2124252c2b2a2928272622211f1b150e0600000000000000000000000000000000000000000000010c161f2a343f45515d676e7c86929fa59f9691857d726d605c544b42392e23180c00000000000000000000000000000a141d2630383f4451575f61696e73787b7e80828485858685858483817f7c7a75706d666059524c443b332920160c000000000000000000000000000000000000000000000000000000000009131b23292e31323939393939393939382e2d2a251f170f0500000000000000000000000000000000000000000000000000000000000a141d28333f4a545c666d747d848b9095979a9c9e9f9f9f9f9e9d9a9896918c857f786e695f584e453b31241a100000000000000000000000000000000814212e3b4754616e7a87949c9c9c9084776a5d5144495663707c89969c9c9a8d8174675a4e4134271b0e0100000000000000000000000000000000000000000000000000000003101d293643505c6976838f9c9f9f9f9f9f9f9f9f9f9f9f9f9f9f9a8e8174675b4e4134281b0e000a1723303d4a5663707d89969f9f9f96897d7063564a3d3023170a000915222f3b4854606b6f79797979797979716c6155493c3023170a0000000000000000040d162028303940454f545b6064686e7174767778797978777673716e6863605b544e443f382f271e150c020000000000000916232f3c4855616b707979797979797979797979797979797979797979797979797979797979797979797979797979797979716c6155493c3023170a00000000000000000d192633404c5966737f8c99a6b2a89b8f8275685c4f4230251a0e020000000000000000000000000000000000000000000000000000010203000000000000000000000000000000000013202c3946535f6c7986929facada093867a6d605347404040404040404040404040404040404040404040404040404040404040403e3c39332c241a10050000000013202c3946535f6c7986929facada093867a6d605347404040404040404040404040404040404040404040404040404040404040403e3c39332c241a100500000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013060000000000000000000000000000000009121c252e363e454d52575f62666a6e71737577787879797978777573706d67636059534d453e362d251b110800000000000000000000000000000000000a15202a343e48515b636c717b81878c919597999c9d9e9e9f9f9f9e9d9b9998928e89827b716c625b51473e32281e0e04000000000000000000000000010910161b1e20202a3643505d69768390908376695d5043362a20201e1b161009010000000815222f3b4855626e7b8895a9b3a89b8f8275685c4f422e23180c0000000009121b22292e3132393837363534332f2e2b262018100600000000000000000000000000000000000000000000040d18222935404b555f6a717e8a939da7a09792877f746d665c544b4034281c100400000000000000000000000000020b151e262e343f454d53575f6266696e71747677787979797877767472706d6763605c544f45413a322921170e040000000000000000000000000000000000000000000000000000000000010911181e2224252d2d2d2d2d2d2d2d2b21201e1a140d05000000000000000000000000000000000000000000000000000000000000020b17222d38424a545c606b70797e83878b8d8f919292929291908e8b88847f7a736d665f574e463c33291f12090000000000000000000000000000000814212e3b4754616e7a878f8f8f8f8f84776a5d5144495663707c898f8f8f8f8d8174675a4e4134271b0e0100000000000000000000000000000000000000000000000000000003101d293643505c6976838f939393939393939393939393939393938e8174675b4e4134281b0e000a1723303d4a5663707d899393939393897d7063564a3d3023170a0007131f2c38434f5960636c6c6c6c6c6c6c64615a5045392d211408000000000000000000040d161e272e343d424a5053565e616467696b6b6c6c6b6a696764615e5653504a423c332d261d150c03000000000000000714202c38444f5961636c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c64615a5045392d21140800000000000000000b1825313e4b5864717e8b97a4b1a99d9083766a574d42362a1e1105000000000000000000000000000000000000000000000003080c0e0e0f0b0707040100000000000000000000000013202c3946535f6c7986929facada093867a6d60534d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4a49453e362c22170c0000000013202c3946535f6c7986929facada093867a6d60534d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4a49453e362c22170c00000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130600000000000000000000000000000000000a131c242c333b42464d5355575f626466696a6b6b6c6c6c6b6a686663605d55544f47423c332d241b1309000000000000000000000000000000000000030e18222d363f49515a61696e747b8084888b8d8f90919292929291908e8c8985817c766e69615a51493f352c20160c000000000000000000000000010a131b21272b2d2d2d3643505d69768390908376695d5043362d2d2d2b27211b130a0100000714212e3a4754616d7a8797a2ada99c90837669544a4034281c1004000006111b242d343a3d3e454444434241403c3b37322a22180e0400000000000000000000000000000000000000000000071018242f39434e58616c74818e95a0a9a299928b80786d665c5145382c1f13060000000000000000000000000000030c151c2328333c42464d5355575f626567696a6b6c6c6c6b6a6a686563605d5553504a423d35302820170f050000000000000000000000000000000000000000000000000000000000000000060d1216181920202020202020201f1514120e0902000000000000000000000000000000000000000000000000000000000000000006111c262f38424a505961666d71767b7e818384858686858483817f7b77736d68605c544d453c342a21170d000000000000000000000000000000000714212d3a4754606d7a8283838383838174675b4e414855626f7c8283838383827f7265584c3f3225190c0000000000000000000000000000000000000000000000000000000003101d293643505c6976828686868686868686868686868686868686868174675b4e4134281b0e000a1723303d4a5663707d868686868686867d7063564a3d3023170a00030f1b27323d474f545660606060606060575550483e33281c110400000000000000000000040c151d23282f383f44464c5254575a5c5e5f5f5f5e5e5c5a5754524c46443f382f28221c140b03000000000000000004101c27333d474f55566060606060606060606060606060606060606060606060606060606060606060606060606060606060575550483e33281c110400000000000000000a1723303d4a5663707d8996aab4ab9f928578695e52463a2d20140700000000000000000000000000000000000000000001090f14181a1b1c181413110d08050100000000000000000013202c3946535f6c7986929facada093867a6d605a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a575550483e33281c110500000013202c3946535f6c7986929facada093867a6d605a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a575550483e33281c1105000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013060000000000000000000000000000000000010a121a212930363c4247484e5355596063676a6b6c6b6a666260585653514b48433d37312a211b1209010000000000000000000000000000000000000006101b242e373f4850575e61696e73777b7e80828484858686858583827f7d79756f6b625f5750483f372d231a0e0400000000000000000000000009131c252c33373939393943505d69768390908376695d50433939393937332c251c130900000713202d3946525d687885929fabaa9e918477665c5144382c1f120600010c18222d363f454a4b5251504f4e4d4c4947433c342a20150a000000000000000000000000000000000000000000000007121d28313c46505a606d7983909893939393928d82796d6053463a2d201307000000000000000000000000000000030a1117212a31373c4247484d5355585a5c5d5f5f5f5f5e5e5d5b585653514b46443f383029241e160e05000000000000000000000000000000000000000000000000000000000000000000000106090b0c1313131313131313120807050200000000000000000000000000000000000000000000000000000000000000000000000a141d2630383f444f545c6064696e7174767778797978787674726f6a66605d56514a423c332a22180f05000000000000000000000000000000000713202c3945525d686d767676767676746f64584c4047535f6a6f767676767676726d62564a3e3125180b00000000000000000000000000000000000000000000000000000000020f1c2835414e5a667076797979797979797979797979797979797979746f64594c4033271a0d000916232f3c4855616b7079797979797979706b6155483c2f23160900000a16212b353d434849535353535353534a49453e362c22170c000000000000000000000000030b12181d262d33383b4146474a4d4f515253535251504d4a4746413b38332d261d17110a02000000000000000000000b16212c353d44484a53535353535353535353535353535353535353535353535353535353535353535353535353535353534a49453e362c22170c0000000000000000000815222e3b4855616e7b8898a2aeada297877b6e6154473b2e21140a0000000000000000000000000000000000000000030b131a20242728292521201d1913110d08020000000000000013202c3946535f6c7986929facada093867a6d6767676767676767676767676767676767676767676767676767676767676767676764615a5045392d21140800000013202c3946535f6c7986929facada093867a6d6767676767676767676767676767676767676767676767676767676767676767676764615a5045392d211408000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130600000000000000000000000000000000000000080f171f252a31373e4850585f626b6f737778797877736f6a615f574f473d38322b2620180f090000000000000000000000000000000000000000000009121c252e363e454d52575f62666a6e71737577787879797978777573706d67636059534d453e362d251b110800000000000000000000000005101b252e373e434646464646505d69768390908376695d504646464646433e372e251b10050005111d2935414c566a7683909da9ac9f9286796d6053463a2d2013070005111d29343f485056585f5e5d5c5b5a5955534e463c32261b0f0300000000000000000000000000000000000000000000010c161f2a343e45515c676e7b8586868686868686867a6e6154473b2e2114080000000000000000000000000000000000060f181f262b31373a3c4247484b4d4f51525253525251504e4c494745403a38342e261e19130c0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b141e262e343e424a5153575e616467696b6c6c6c6c6b6a6765625f5854524c444039302a21181006000000000000000000000000000000000004111d2935414c565d6069696969696967645c53483c434e585f6269696969696965625b51463a2e22160900000000000000000000000000000000000000000000000000000000000d1926323e49545e66696c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c67645d53483c3024180b000714202c38444f5961636c6c6c6c6c6c6c6361594f44382c2014070000040f19232b32383b3c464646464646463e3c39332c241a10050000000000000000000000000000070b141c22282b3036393b3e414344454646454443403e3b3936302b28221c140b0600000000000000000000000005101a232c33383c3d46464646464646464646464646463f44464f4f4f4f4f4f4f46444046464646464646464646464646463e3c39332c241a10050000000000000000000613202d394653606c7985929facb3a9968a7d7063574a3d31261b0f01000000000000000000000000000000000000000b151d252b30343536312d2c2924201d19130c0701000000000013202c3946535f6c7986929facada09386797373737373737373737373737373737373737373737373737373737373737373737373716c6155493c3023170a00000013202c3946535f6c7986929facada09386797373737373737373737373737373737373737373737373737373737373737373737373716c6155493c3023170a000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013060000000000000000000000000000000000000000050d15202a333e47505a616a6f767c808385868583807c756e6960594f473d32291f150e060000000000000000000000000000000000000000000000000a131c242c333b42464d5355575f626466696a6b6b6c6c6c6b6a686663605d55544f47423c332d241b1309000000000000000000000000000a16212c3740494f5353535353535d69768390908376695d5353535353534f4940372c21160a00010d192430414e5b6774818e9aa7afa399887b6f6255483c2e23180c060615212e3a45505a62656c6b6a69686766625f584e43372b1f13060000000000000000000000000000000000000000000000040d18222934404b555f696e78797979797979797976685e5246392d201407000000000000000000000000000000000000060e141a1f262b2e31373a3b3e41434445464646454443413f3d3a39352f2b28231c140c0802000000000000000000000000000000000000000000000000030608090f1112131313110f0c0707050100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c141c232830394044464d5254585a5c5e5f5f5f5f5e5d5b5855534e4745413a342e271e180f06000000000000000000000000000000000000010d1924303a444c52545c5c5c5c5c5c5b58534a41363c464e53555c5c5c5c5c5c585651493f34291e120600000000000000000000000000000000000000000000000000000000000915212d38424c545a5c6060606060606060606060606060606060605b59534a41362b2014080004101c27333d474f55566060606060606056554f473d33271c100400000007101921272c2f303939393939393931302d28221a120800000000000000000000000000000000020a11171c1f252a2d2e3134363838393938373634312e2d2a251f1c17110a02000000000000000000000000000008111a21272c2f3039393939393939393939392d38424a50535c5c5c5c5c5c5c53514a42392e393939393939393939393931302d28221a12080000000000000000000006121f2b3844505b667683909ca9b3a79a8d807467584e43372b1e1308000000000000000000000000000000000000060f1d272f373c4041423e3a39352f2d29251e18120b030000000013202c3946535f6c7986929facb3a79a8d8080808080808080808080808080808080808080808080808080808080808080808080807e7164574a3e3124170b00000013202c3946535f6c7986929facb3a79a8d8080808080808080808080808080808080808080808080808080808080808080808080807e7164574a3e3124170b000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013060000000000000000000000000000000000000000020e1a26313c454f59616c707c82898d90929291908d88827b706b60594f443b3025190e02000000000000000000000000000000000000000000000000010a121a212930363c4247484e5355585a5c5d5e5f5a61646c6c6c6c66635c5248433d37312a211b120901000000000000000000000000000f1b27333e49525a5f60606060606069768390908376696060606060605f5a52493e33271b0f0000081825313e4b5864717e8b97a7b1ab988b7e7165554b4034281d1413131624313d4a56626c71787777767574736f6a5f53473b2e211508000000000000000000000000000000000000000000000000060f18232f39434d575f616c6c6c6c6c6c6c6c6c6c5e564c41362a1e11050000000000000000000000000000000000000003090e151a1e21262b2e2f32343637383939393837373532302d2c29241f1c17110a02000000000000000000000000000000000000000000000000030a0f1215151c1e1f1f201f1e1c181413110d0802000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a11171e272e34383b4246484b4e50515253535251504e4c4847433c39353028231c150c06000000000000000000000000000000000000000008131e28323a4145475050505050504e4c4841382f343c4347485050505050504c4a463f372d23180d01000000000000000000000000000000000000000000000000000000000005101b26303a42494e505353535353535353535353535353535353534e4c4841382f251a0f0300000b16212c353d44484a535353535353534a48443d352c21160b0000000000070f161b1f22232d2d2d2d2d2d2d2423211c17100800000000000000000000000000000000000000060b0f14191e20212427292b2c2c2c2b2b29272421201e19140f0b0600000000000000000000000000000000000810161c2023232d2d2d2d2d2d2d2d2d2d28333f4a545b6068686868686868605c544a4034282d2d2d2d2d2d2d2d2d2d2423211c1710080000000000000000000000030f1c28333f4a546774808d9aaab4aa9d9184776a5f53473a2f24190b0200000000000000000000000000000000030e18212f3941484d4e4f4b4745413a39353029241d150d0300000013202c3946535f6c7986929facb9a99d928d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8174675b4e4134281b0e01000013202c3946535f6c7986929facb9a99d928d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8174675b4e4134281b0e010000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c201306000000000000000000000000000000000000000006121e2b37424d57616c707e868f949a9c9998999c99938f857d706b60564d42362a1f14080000000000000000000000000000000000000000000000000000080f171f252a31373a3c4247484b4d4f4a505b636c7079797979736e63574b3f322b2620180f09000000000000000000000000000000121e2b37434f5a646c6c6c6c6c6c6c6c7683909083766c6c6c6c6c6c6c6c645a4f43372b1e1200000815212e3b4854616e7b87959faba89b8e8175675c5145392e2521201f202935404b5565717e8584838281807f7c6f6255493c2f2216090000000000000000000000000000000000000000000000000007121d27313c454d53555f60606060606060605f524c443b3025190e0200000000000000000000000000000000000000000003090e12151a1e21222527292a2c2c2c2c2b2b2a282523201f1d1812100b0600000000000000000000000000000000000000000000000000060e151b1f2122282a2b2c2c2c2b292521201d19130d0802000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060c151c23282c30363a3b3e414344454646454543413f3c3a37312c29241e18120b03000000000000000000000000000000000000000000020c1620283035393a43434343434341403c362f262a32373b3c4343434343433f3e3a342d251b1107000000000000000000000000000000000000000000000000000000000000000a141e2830383e414346464646464646464646464646464646464641403c362f261d130800000005101a232c33383c3d464646464646463d3c38332c231a1005000000000000040a0f13151620202020202020171714110c050000000000000000000000000000000000000000000003080d111414171a1c1e1f20201f1e1d1a171414110e08030000000000000000000000000000000000000000050b101416172020202020202020201f2b3844505b666c757575757575756d665c5144382c1f202020202020202020171714110c05000000000000000000000000000b17222d3d4a5763707d8a98a2aeaca095887c6f62564c4135291d140a000000000000000000000000000000000915202a33414b53595b5c5854524c4746413a352f271f150b01000013202c3946535f6c7986929facb9aea49d9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a8e8174675b4e4134281b0e01000013202c3946535f6c7986929facb9aea49d9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a8e8174675b4e4134281b0e010000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130600000000000000000000000000000000000000000814212e3a47535f69707e87929899938f8c8b8c90949e9792877d6f695e52463b3025190e020000000000000000000000000000000000000000000000000000050d141a1f262b2e31373a3b3e444c545c606d727e868686868073665a4d4033271a150e060000000000000000000000000000000013202d3946535f6c767979797979797979839090837979797979797979766c5f5346392d201300000714202d3a46525e697783909daaab9f9285796d60544b4036312d2c2c2d323a45515d6775818e91908f8e8d897c6f6356493c3023160900000000000000000000000000000000000000000000000000010b151f2a333c4246485253535353535353535346413b32291e14080000000000000000000000000000000000000000000000000206090e121415181a1c1e1f1f201f1f1e1d1b19161413100c0703000000000000000000000000000000000000000000000000000006101820262b2e2f3537383939393835322e2d2a251e19130c04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b12181c1f252a2d2e3134363839393939383734322f2e2b26201d19130c07000000000000000000000000000000000000000000000000040e161e24292c2d3636363636363433302b251d20262b2e2f36363636363632312e29231b13090000000000000000000000000000000000000000000000000000000000000000030c161e262d3235363939393939393939393939393939393939393433302b251d140b010000000008111a21272c2f3039393939393939302f2c27211a110800000000000000000003070909131313131313130b0a08040000000000000000000000000000000000000000000000000000010507080b0e10111213131211100d0b080705020000000000000000000000000000000000000000000000000407090a131313131313131313202d394653606c7881828282828281796d6053463a2d201313131313131313130b0a08040000000000000000000000000000000614202d3a4753606d7985929facb1a79a8d8073685d52453b2f261b1106000000000000000000000000000006101a26313c45535d64686964605d5654524c45403931271d1207000013202c3946535f6c7986929facacacaea9a7a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a69a8e8174675b4e4134281b0e01000013202c3946535f6c7986929facacacaea9a7a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a69a8e8174675b4e4134281b0e010000000000000000020714202d3a4753606d7a8693a0acac9f9286796c5f5346392c2013070502000000000000000000000000000000000006121f2b37434e58626e7b869299959187827f7f80838991969992857b6e61564d41362a1e110500000000000000000000000000000000000000000000000000000002090e151a1e21262b343d454d565d666d747f87929892857b6e6154473b2e21140903000000000000000000000000000000000013202d394653606c798686868686868686909494908686868686868686796c605346392d2013000005121e2a36424d5765727f8c98a2aea2988b7e71665c5146423b3a39383a3d444d57606d7a85929e9d9c9b9285796d6053463a2d2013070000000000000000000000000000000000000000000000000000030d18212a31373a3b4546464646464646463b3936302920170d02000000000000000000000000000000000000000000000000000000020608080b0e1011121313131211100e0c0a07060400000000000000000000000000000000000000000000000000000000030e18222a31373a3c42444546464644423f3a39363029241e160e0700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070c10141a1e20212527292b2c2c2c2c2b2a282522211f1b15110d08020000000000000000000000000000000000000000000000000000040c13191d2021292929292929282724201a13151b1f21222929292929292525221e18110901000000000000000000000000000000000000000000000000000000000000000000040c141b212628292d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d282724201a130b020000000000000810161c2023232d2d2d2d2d2d2d2323201c161008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060606060606060713202d3a4653606d79868f8f8f8f8f867a6d6053473a2d201407060606060606060000000000000000000000000000000000000006131f2c3845515c6775828f9ba8b2ab9f92857a6d60574d41382d2217110a020000000000000000000001081018222b37424e57646f7475716d6865615e56514b43392f24180c000013202c3946535f6c7986929f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9a8e8174675b4e4134281b0e01000013202c3946535f6c7986929f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9a8e8174675b4e4134281b0e0100000000000003090e1214202d3a4753606d7a86939f9f9f9f9286796c5f5346392c201514120e09030000000000000000000000000000000815212e3a47535f6a75828f989691837c76737273767d849197978e8174685e5246392d2014070000000000000000000000000000000000000000000000000000000000050c151d2328363e464f575f686d78818c939993877d70695e52463a2d20140700000000000000000000000000000000000013202d394653606c7986939393939393939c9f9f9c9393939393939386796c605346392d20130000020e1a25303b4754616d7a86929fa9aa9e9184796d605b534d4847454546484f565e69727f8c98a2aaa69b8e8275665c5044382c1f1206000000000000000000000000000000000000000000000000000000060f181f262b2d2e3939393939393939392e2d2a251e170e0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a15202a343c4347484f5152525352514f4b4746413a35302820191108000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004090e121415181b1d1e1f20201f1e1d1b191515120f0a0401000000000000000000000000000000000000000000000000000000000002080d1113141d1d1d1d1d1d1b1a18140f080a0f1215151d1d1d1d1d1d191816120d07000000000000000000000000000000000000000000000000000000000000000000000000030a1015191c1d2020202020202020202020202020202020201b1a18140f08010000000000000000050b1014161720202020202020171614100b05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050a0d0f101313100f0d0a0500000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d7986939b9b9b93867a6d6053473a2d201407000000000000000000000000000000000000000000000000000004101c2934404b5563707d8a96a1acaea2988c7f73695e53493f3327221b140b090603000001000205080d1319222a343c47535f6a7481827e7a76716d68605d554b4035291d10040013202c3946535f6c79869293939393939393939393939393939393939393939393939393939393939393939393939393939393938e8174675b4e4134281b0e01000013202c3946535f6c79869293939393939393939393939393939393939393939393939393939393939393939393939393939393938e8174675b4e4134281b0e010000000000050d141a1e21212d3a4753606d7a8693939393939286796c5f5346392d2d21211e1a140d0500000000000000000000000000000915222f3c4855626f7b88949e91847a6f6a6665666b6f7b85929e93877b6e6154473b2e21140800000000000000000000000000000000000000000000000000000000060e161e272e344048505960696e7a828e939f948c7f736b60574d42362a1e110500000000000000000000000000000000000013202d394653606c7986939f9f9f9f9f9fa9ababa99f9f9f9f9f9f9386796c605346392d20130000000914202d3946525d6874808d97a2aca0968d80746d615e575554515153555960686e7b86929faaab9f94897c6f63544a3f34281c100300000000000000000000000000000000000000000000000000000000060e141a1e21222c2d2d2d2d2d2d2d2d21201e19140d05000000000000000000000000000000000000000000000000000000000000000000000406070a0d0f11121313131212100e0c090606030000000000000000000000000000000000000000000000030f1b26313c464e53555b5d5e5f5f5f5e5c5854524c46413a322b231a1208000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020507080b0e10111213131212100e0c0908060300000000000000000000000000000000000000000000000000000000000000000000010407071010101010100e0d0b08030000030608091010101010100c0b09060100000000000000000000000000000000000000000000000000000000000000000000000000000005090d0f101313131313131313131313131313131313130e0d0b08030000000000000000000000000407090a131313131313130a090704000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030a11161a1c1d20201d1c1a16110a030000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798693a0a8a093867a6d6053473a2d2014070000000000000000000000000000000000000000000000000000000c18232f394653606c7884919ea8b2aa9f92867b6e655b50443e332d261d1a1312100b060e090e1214191e2429343c46505a626e7b878f8b86827e7a766d675d5145392c1f13060013202c3946535f6c7987868686868686868686868686868686868686868686868686868686868686868686868686868686868686868174675b4e4134281b0e01000013202c3946535f6c7987868686868686868686868686868686868686868686868686868686868686868686868686868686868686868174675b4e4134281b0e0100000000050f171f252a2d2e393a4753606d798686868686868687796c5f53463939392e2d2a251f170f05000000000000000000000000000d192633404c5966737f8c99968a7d70685f5858596069717e8b98998b7e7165584b3e3225180b000000000000000000000000000000000000000000000000000000070f18202830394045525a616b6f7b838f949d968f82776c60594f453b30251a0e0200000000000000000000000000000000000013202d394653606c7986939facacacacacb6b7b7b6acacacacac9f9386796c605346392d201300000005111d2935414c56616d7a85929fa5a89d928c7f756e696461605d5c6062656b6f7a839198a2aea3999083766b605442382e23170c00000000000000000000000000000000000000000000000000000000000003090e1214151f20202020202020201414110e0802000000000000000000000000000000000000000000000000000000000000000001070c10131416191c1d1f1f20201f1e1d1b191613120f0b0600000000000000000000000000000000000000000006121f2b37434e585f62686a6b6c6c6c6b6865615e56524c443d352c241a110800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d151c2226292a2d2d2a2926221c150d0400000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d798693a0aca093867a6d6053473a2d20140700000000000000000000000000000000000000000000000000000007121f2b3844505b66727f8b96a1acaea2988f82776c605a50443f382f2b26201f1c171b1a1b1a1e2124292f353e464e58626c75828f9999928f8b8682796d6053473a2d20140700121f2c3845525e6a757979797979797979797979797979797979797979797979797979797979797979797979797979797979797979746f64594c4033271a0d010000121f2c3845525e6a757979797979797979797979797979797979797979797979797979797979797979797979797979797979797979746f64594c4033271a0d01000000030d17212931363a3b464645515c67767979797979797979756a5e52464646463b3a36312921170d030000000000000000000000020f1c2935424f5c6875828f9b9184786b61564e4c4f57606d7a86929a8e8174675b4e4134281b0e0100000000000000000000000000000000000000000000000000071019212a323a434b515b636c717d8591959f9991847a6d655b50473d33291f14090000000000000000000000000000000000000013202d394653606c7986939facb9b9b9b9c3c4c4c3b9b9b9b9ac9f9386796c605346392d2013000000010d1924303a46525e68727e8b939ea7a49c918c827b75716e6d67666d6f71767d849195a0aaa69f92877c6f63594f4330261c1106000000000000000000000000000000000000000000000000000000000000000002050708121313131313131313080705020000000000000000000000000000000000000000000000000000000000000000040a0f12181c1f202326282a2b2c2c2c2c2b2a282523201f1c17110f0a030000000000000000000000000000000000000815212e3a47535f6a6f7577787979797775726d68615d564f473e362c231a1006000000000000000000000000000000000000000000000000000000000000000000000000000000020507080b0e111112131312110f0c0908060300000000000000000406070b0f1213131211100e0c0b09060100000000000000000000000000000000000000000000000000020507080b0d0f1112131313131211100e0b08080602000000000000000000000000000000000000000000000000000000000000000000050a0d0f101313100f0d0a0500000000000000000000000000000000000000000000000000000000050a0d0f101313100f0d0a050000000000000000000000000000000000000000000000000000000000050a0d0f101313100f0d0a0500000000000000000000000000000000000000000000000000030d161f272d32353639393635322d271f160d03000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d7986939f9f9f93867a6d6053473a2d201407000000000000000000000000000000000000000000000000000000030f1c28333f4a54606d7984919ea6b0aa9e948c7f726c615a5049413c37312d2b2823272728252a2d2f353a41454f585f6a717e8b939ea39f9c998f8275675d5145392c1f130600111d2a36424e59636a6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c67645d53483c3024180b000000111d2a36424e59636a6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c67645d53483c3024180b0000000009141f29333b4246485353534b555c6c6c6c6c6c6c6c6c6c6a635953535353534846423b33291f1409000000000000000000000004101d2a3743505d6a7683909c8f827669594f443f45515d677784919c8f8275695c4f4236291c0f03000000000000000000000000000000000000000000000000040f19222b333c444c555c606d737e869297a09f92877c6f685d53493f352b20170d020000000000000000000000000000000000000013202d394653606c7986939facb9c6c6c6cfd0d0cfc6c6c6b9ac9f9386796c605346392d20130000000008131e2a36414c56626d75818e959fa6a49c948f86827e7b7a7979797b7e83899196a0a7a59e948c7f736b6054473d321e150a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0f161b1d23292c2d303335373839393939383635322f2d2b28221c1b150e0903000000000000000000000000000000000915222f3c4855626f7c81848585868584827e7a746d68605950483e352c22180d0300000000000000000000000000000000000000000000000000000000000000000000000003090e121415181b1d1e1f201f1f1d1b191515120f0a0401000000070c101313181c1e1f201f1e1d1b181815120d060000000000000000000000000000000000000000000205090e121415181a1c1e1f1f20201f1f1e1c1a181514120e09060300000000000000000000000000000000000000000000000000000000030a11161a1c1d20201d1c1a16110a03000000000000000000000000000000000000000000000000030a11161a1c1d20201d1c1a16110a0300000000000000000000000000000000000000000000000000030a11161a1c1d20201d1c1a16110a0300000000000000000000000000000000000000000000000a151f2831383e4243464643423e3831281f150a000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d79869393939393867a6d6053473a2d201407000000000000000000000000000000000000000000000000000000000b17222d3845515c67717e8b949ea9b0a69f92877e716c605b534d47423c3a38342e34343531363a3b41454c5159616a6f7c86929fa5aea99f93877c6f62554b4035291d1004000e1a26313d4751595e5f606060606060606060606060606060606060606060606060606060606060606060606060606060606060605b59534a41362b2014080000000e1a26313d4751595e5f606060606060606060606060606060606060606060606060606060606060606060606060606060606060605b59534a41362b201408000000020e1a25313b454d535f6060606060605d606060606060605f5e5c6060606060605f534d453b31251a0e020000000000000000000004101d2a3743505d6a7683909c8f827669594f454045515d677784909c8f8275695c4f4236291c0f030000000000000000000000000000000000000000000000000a16212b343d454d565e676d757f8a9298a19e938b7f726a60564c41382d23190e05000000000000000000000000000000000000000013202d394653606c7986939facb9c6d2d2dcdddddcd2d2c6b9ac9f9386796c605346392d201300000000020d1925303a44515b606d798390949da5a69e98928f8b8887858586888b90949ea1a8a39f938e82786d60594f43352b210c0300000000000000000000000000000000000000000000000000010406070a0d0f11121313131212100f0d0a070704010000000000000000000000000000000000000000000000000000000000000000060b151b21272c2f34383a3d40424445464646454543413f3c3938332d2b26201a150b060000000000000000000000000000000a1724313d4a5764707d8a9091929292918f8b86807a706b615a50473e342a1f150b01000000000000000000000000000000000000000000000000000000000000000000040a0f141a1e212125282a2b2c2c2c2b2a282622211f1b15110d08030b12181c1f2025292b2c2c2c2b2a272524221d18110901000000000000000000000000000000000003090e12141a1e21212527292a2b2c2c2c2c2c2a29272522211e1a15120f0a0400000000000000000000000000000000000000000000000000040d151c2226292a2d2d2a2926221c150d0400000000000000000000000000000000000000000000040d151c2226292a2d2d2a2926221c150d040000000000000000000000000000000000000000000000040d151c2226292a2d2d2a2926221c150d0400000000000000000000000000000000000000000005111c27313a434a4e505353504e4a433a31271c11050000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d7886868686868686796d6053473a2d2014070000000000000000000000000000000000000000000000000000000006111c2834404b55616c75828f97a2abafa39992877e726c655f57534d4946443f41414141424246484c52555d606b707c859298a2aeada2978f82756a5f5343392f24180c00000915202b353f474e52535353535353535353535353535353535353534d545b60666c6c6c6c6c6a5c544a53535353535353535353534e4c4841382f251a0f030000000915202b353f474e52535353535353534d575e6c6c6c6c6c6c6c6a665f55535353545e66696c6c6c6c6c6c6c5e574d5353535353534e4c4841382f251a0f0300000005121e2a36424d575e6c6c6c6c6c6c6c6a665f55535353545e66696c6c6c6c6c6c6c5e574d42362a1e120500000000000000000000020f1c2935424f5c6875828f9b9184786b61574f4d5058606d7a86929a8e8174675b4e4134281b0e010000000000000000000000000000000000000000000000030f1b27323d464e575f686d79818c929fa3a0958e81756d62584e443a2f261b110800000000000000000000000000000000000000000013202d394653606c7986939facb9c6d2dfe9eaeae9dfd2c6b9ac9f9386796c605346392d2013000000000008131e28323f45515d676d7a828e939da0a7a39f9b97949892929895989c9fa6a7a099928d81786d665c50463d3223190f00000000000000000000000000000000000000000000000004080d111314171a1c1d1f1f20201f1f1d1c1a171413110d080400000000000000000000000000000000000000000000000000000000020a111720262b323839404547494c4f50525253535251504e4c4946443f3837312b262017110a02000000000000000000000000000a1724313d4a5764707d8a979e9f9f9f9e9b98928d847d716c61594f463c31271d12070000000000000000000000000000000000000000000000000000000000000000060c161b1f252a2d2e31343738393939383735322f2e2b26201d19130c151d23282c2d32353839393838363432312e29231b130900000000000000000000000000000003090e141a1e21252a2d2e31343637383939393938373634322f2e2b26211f1b150f0a0400000000000000000000000000000000000000000000030d161f272d32353639393635322d271f160d030000000000000000000000000000000000000000030d161f272d32353639393635322d271f160d03000000000000000000000000000000000000000000030d161f272d32353639393635322d271f160d0300000000000000000000000000000000000000000a16222d38434c545a5d60605d5a544c43382d22160a00000000000000000000000000000000000000000000000000000000000000000000000006121f2c3844505c66767979797979797976675c5145382c1f130600000000000000000000000000000000000000000000000000000000000c18232e3943505a616e7b859299a3afaba39992877f776e69615f575553504a4e4e4d4e4f4d5354565d60676d747d859297a1aaaea49e92857b6e61584e4331271d12070000040f19242d353d424546464646464646464646464646464646424651575f666c72797979797975665c50444646464646464646464641403c362f261d130800000000040f19242d353d424546464646464646535e69767979797979797771665b4f464e5a66707679797979797976695e5346464646464641403c362f261d1308000000000714212d3a46535e69767979797979797771665b4f464e5a66707679797979797976695e53463a2d21140700000000000000000000000d192633404c5966737f8c99968a7d706960595a5a616a727e8b98998b7e7265584b3f3225180c00000000000000000000000000000000000000000000000007131f2c38434e5860696e7a828e939ca4a2989183796d605b51463d32281d140a0000000000000000000000000000000000000000000013202d394653606c7986939facb9c6d2dfecf6f6ecdfd2c6b9ac9f9386796c605346392d20130000000000020c16202935404b555d686d78818991959c9fa3aba4aaa29f9fa2aaa4aba49f9c95908780786d665c544a3f342b21100700000000000000000000000000000000000000000000070c1013191d20212426292a2b2c2c2c2c2b2a28262421201d1913100c0701000000000000000000000000000000000000000000000000040b141c222832373d43484b515356595b5d5e5f5f5f5f5e5d5b585653504a47433c373127221b140b030000000000000000000000000a1724313d4a5764707d8a979e9ea2a9a9aaa39f9691877e716b61584e43392f23180c030000000000000000000000000000000000000000000000000000000000030a111720272b31363a3b3e4144444546464544423f3c3b37322c29241e191e272e34383a3e42454646454443413f3d3a342d251b110600000000000000000000000000060b151a1f262a2d31363a3b3e4042444546464646454443413e3b3a37312e2b26201b150c070000000000000000000000000000000000000000000a151f2831383e4243464643423e3831281f150a00000000000000000000000000000000000000000a151f2831383e4243464643423e3831281f150a0000000000000000000000000000000000000000000a151f2831383e4243464643423e3831281f150a00000000000000000000000000000000000000010d1a26323e4a545e66696c6c69665e544a3e32261a0d01000000000000000000000000000000000000000000000000000000000000000000000003101c28343f4a545c6c6c6c6c6c6c6c6c6c5c554b4034291c1004000000000000000000000000000000000000000000000000000000000007121d27303e46525e69707d87929fa4acaba399938c827b746e696562605c545b5a5a5b5c575e6164686d737a808a9297a1a9afa59d928a7e70695e52463c321f150b0100000008121b242b31363839393939393939393939393930353e444d525b62696e787f8686868687796d6053463a3939393939393939393433302b251d140b01000000000008121b242b31363839393939393b4854616e7b86868686868683776a5d50444f5c6976828686868686867b6e6154483b393939393433302b251d140b01000000000815212e3b4854616e7b86868686868683776a5d50444f5c6976828686868686867b6e6154483b2e21150800000000000000000000000916222f3c4955626f7c88949e91847b706b6766676c717c85929f93877b6e6154473b2e2114080000000000000000000000000000000000000000000000000915222e3b4854606a6f7b8490949ea5a49f92867c6e675d51493f342b20160b020000000000000000000000000000000000000000000013202d394653606c7986939facb9c6d2dfececececdfd2c6b9ac9f9386796c605346392d2013000000000000050e18242f3a434c565d666d747d848a8f92999a9c9e9e9f9f9e9d9c9a99938f8a837c736c665c544a42382e22190f000000000000000000000000000000000000000000060b12181c1f24292c2d31333537383939393938373533302d2c29241f1c18120c0700000000000000000000000000000000000000000000040d161d262d333c43474f54555c606366686a6b6c6c6c6c6b69686562605b54534e47423c332d261d150d0300000000000000000000000a1724313d4a5764707d8a92919297979c9fa6a9a19992877d706a5f554b4034291f140900000000000000000000000000000000000000000000000000000000030c151c232832373b4246484b4e505152535252504e4c4847433c39352f28222b30394045464b4f5152535251504e4b4a463f372d23180d0100000000000000000000020a11171f262b31363a3b4246484b4d4f51525253535252514f4d4b4847423c3a37312b262018120b0300000000000000000000000000000000000005111c27313a434a4e505353504e4a433a31271c110500000000000000000000000000000000000005111c27313a434a4e505353504e4a433a31271c11050000000000000000000000000000000000000005111c27313a434a4e505353504e4a433a31271c1105000000000000000000000000000000000000030f1c2935424e5a66707679797670665a4e4235291c0f030000000000000000000000000000000000000000000000000000000000000000000000000c17232e38424a505f606060606060605f514b43392f23180c000000000000000000000000000000000000000000000000000000000000000b151e2a36424d56606b717f8b939aa3ababa49f948f86817b76726f6d6668686767686869696e71757a7f858d929ea2a9afa59e938d80746c61574d42342a200d03000000000009121920262a2c2c2d2d2d2d2d2d2d2d2429323a414650565e616d727b828c929992877e71665c5044382b2d2d2d2d2d2d2d2d282724201a130b020000000000000009121920262a2c2c2d2d2d2e3b4854616e7b87939393939083776a5d50444f5c6976828f93939393877b6e6154483b2e2d2d2d282724201a130b0200000000000815212e3b4854616e7b87939393939083776a5d50444f5c6976828f93939393877b6e6154483b2e21150800000000000000000000000815212e3b47535f6a76828f989691847d77747374777e859297978e8174695e52463a2d2014070000000000000000000000000000000000000000000000000916232f3c4956626f7c85919693939393928a7e716a5f554b40372d22190e04000000000000000000000000000000000000000000000013202d394653606c7986939facb9c6d2dfdfdfdfdfdfd2c6b9ac9f9386796c605346392d20130000000000000007131d28313a444c545c606b70787e82868a8d8f9192929291918f8d8a86827d786f6a605b544a423930261c100700000000000000000000000000000000000000020a11171c23282c2f35393a3d4042444546464645454342403d3a39352f2c29231d18120b0300000000000000000000000000000000000000030c161f282f383f444e54596063676d707375777879797978787674726f6c66625f58534d443f382f271f150d03000000000000000000000a1724313d4a5764707d87858585868a8f949fa2aaa39992867c6f675c51453b31261a0e030000000000000000000000000000000000000000000000000000030d151e262e343d43474d5354585b5d5e5f5f5f5e5d5b5955534e4745413a3129343c424b5153585c5e5f5f5f5e5d5a585651493f34291d1206000000000000000000040c141c232831373b4246484d5354585a5c5d5e5f5f5f5f5f5d5c5a5855534d4847433c373228231d150c0500000000000000000000000000000000000a16222d38434c545a5d60605d5a544c43382d22160a0000000000000000000000000000000000000a16222d38434c545a5d60605d5a544c43382d22160a000000000000000000000000000000000000000a16222d38434c545a5d60605d5a544c43382d22160a00000000000000000000000000000000000003101d2a3643505d69768286868276695d5043362a1d100300000000000000000000000000000000000000000000000000000000000000000000000006111c2630383f4453535353535353535345403931271d120700000000000000000000000000000000000000000000000000000000000000030c1925303b444f59626d727f889299a1a8afa69f99928e88837f7c797775747474747576787b7e82868c92979da4adaba39f938e81786d605a50453b3022180e00000000000000080f151a1d1f202020202020191f282f353e444c525a61696e767f8690949a93877e716c61544a3f34281c202020202020201b1a18140f0801000000000000000000080f151a1d1f202020212e3b4854616e7b87949f9f9d9083776a5d50444f5c6976828f9c9f9f94877b6e6154483b2e2120201b1a18140f08010000000000000815212e3b4854616e7b87949f9f9d9083776a5d50444f5c6976828f9c9f9f94877b6e6154483b2e211508000000000000000000000006131f2b37434e58626f7c86929a96918984818081848a92979892857a6e61564d42362a1e11050000000000000000000000000000000000000000000000000d1a2633404d59667380868686868686868680746c61574e43392f251b100700000000000000000000000000000000000000000000000013202d394653606c7986939facb9c6d2d2d2d2d2d2d2d2c6b9ac9f9386796c605346392d201300000000000000010c161f28323a424b515960666c71767a7d808284858686858483807d7a75706c666058504a423930271e140a00000000000000000000000000000000000000050b141c22282e34383a4145474a4d4f50525253535252504f4d4a4745413a38342f28231d150c070000000000000000000000000000000000000b151e283139424a50585f626b6f75797d7f828385858686858483817f7c79746f6a625f575049413931271f150b010000000000000000000714202d3a4753606d79797878787a7d828a9298a1a9a2989083796d60574d42362a20150a00000000000000000000000000000000000000000000000000010b151f2730383f444e54575e6164676a6b6c6c6c6b6a6865625f5854524c433f353c464e545c6065686b6c6c6b6b696765625b51463a2e2215090000000000000000050e161e262e343c42474d5355575e616467696a6b6c6c6c6c6b6a696765625f5755534e47433c342e271e170e05000000000000000000000000000000010d1a26323e4a545e66696c6c69665e544a3e32261a0d0100000000000000000000000000000000010d1a26323e4a545e66696c6c69665e544a3e32261a0d010000000000000000000000000000000000010d1a26323e4a545e66696c6c69665e544a3e32261a0d01000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000000000000000000000000000000000000000000000000000a151e262e343846464646464646464638342f271f150b01000000000000000000000000000000000000000000000000000000000000000009141f29323d47505a626d727e8791969ea5acaba39f9a95908c8885848281818081828385878b8f92989fa2a9ada8a099928d81786d665c50483e33291f1006000000000000000004090e1112131313130f19222b313a41454f565e616c717b828b92989a93887e716c615a5042382e23170b1313131313130e0d0b080300000000000000000000000004090e1112131315212e3b4854616e7b8794a1aa9d9083776a5d50444f5c6976828f9ca9a194877b6e6154483b2e2115130e0d0b080300000000000000000815212e3b4854616e7b8794a1aa9d9083776a5d50444f5c6976828f9ca9a194877b6e6154483b2e2115080000000000000000000000030f1b26323c47535f6a717e8892989e95908d8d8e91969e9792867d6f685e52443b3025190e020000000000000000000000000000000000000000000000000c1925323f4b57636d737979797979797979746e645a50453c31281d12090000000000000000000000000000000000000000000000000013202d394653606c7986939facb9c6c6c6c6c6c6c6c6c6c6b9ac9f9386796c605346392d20130000000000000000040d162028303940454f545b6064686e7174767778797978777673716e6863605b544e443f382f271e150c02000000000000000000000000000000000000070f171d262d33394044464c525457595c5d5e5f5f5f5f5e5d5b595754524c47454039342e271e1810090000000000000000000000000000000007121d273039434b545b606a6f767c8185898c8e90919292929291908e8b8985817c756e69605b534b433931271d120700000000000000000006131f2c3845515c676d6d676b676d70767e869297a1aaa0958c8073695f53463c31261a0f0300000000000000000000000000000000000000000000000007121d273139424a50586062696e71747777787979787775726f6a66605d56504540454e5860666d717578797978777674726d62564a3d3124180b00000000000000050e17202830383f444d53575f6166696e71737577787979797978777674716e6967625f58544e454039302920170e050000000000000000000000000000030f1c2935424e5a66707679797670665a4e4235291c0f0300000000000000000000000000000000030f1c2935424e5a66707679797670665a4e4235291c0f030000000000000000000000000000000000030f1c2935424e5a66707679797670665a4e4235291c0f03000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000000000000000000000000000000000000000000000000000000000000030c151c23282c3939393939393939392c29231d150d03000000000000000000000000000000000000000000000000000000000000000000020d17202b353f48515b626c717d848e939da0a7abaca79f9d989892908f8e8d8d8e8f909298979c9fa3aaada9a29f96918780786c665c544a3f362c21170d00000000000000000000000104060606000a16212b343d434b515961686d757e858f949f9f93887f716c625a50483e30261c110600060606060601010000000000000000000000000000000000010406060815212e3b4854616e7b8794a1a99d9083776a5d50444f5c6976828f9ca9a194877b6e6154483b2e211508010100000000000000000000000815212e3b4854616e7b8794a1a99d9083776a5d50444f5c6976828f9ca9a194877b6e6154483b2e2115080000000000000000000000000a15202b37434e58616c717e868f949a9d9a999a9d99938f857d706b60564d4132291f1409000000000000000000000000000000000000000000000000000a16232f3b47525b63666c6c6c6c6c6c6c6c67645c52483e332a1f160c000000000000000000000000000000000000000000000000000013202d394653606c7986939facb9b9b9b9b9b9b9b9b9b9b9b9ac9f9386796c605346392d2013000000000000000000040d161e272e343d424a5053565e616467696b6b6c6c6b6a696764615e5653504a423c332d261d150c0300000000000000000000000000000000000007101921292f383f444a5153565d606466686a6b6c6c6c6c6b6a686663605d5653514b454039302a221a12090000000000000000000000000000040d18232e39434b555d666c737c83898e9298999b9d9e9f9f9f9f9e9c9b9897918d88827b736c655d554b43392f24180e05000000000000000004101c2934404b555c60605c555d60646c717c859298a3a79f92867b6e61584e43372b1f14090000000000000000000000000000000000000000000000020c18242f39434b545c606a6f757b7e8183848586858583817f7c78726d68625a514b4d57606a6f797e82848586858483817f7265584b3f3225180c000000000000030c172029323a424a50575f62696e73777b7e8082848585868685858482807e7b78736f6a625f58514b423a322920170c030000000000000000000000000003101d2a3643505d69768286868276695d5043362a1d10030000000000000000000000000000000003101d2a3643505d69768286868276695d5043362a1d1003000000000000000000000000000000000003101d2a3643505d69768286868276695d5043362a1d1003000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000000000000000000000000000000000000000000000000000000000000030a11171c1f2d2d2d2d2d2d2d2d2d1f1c18120b030000000000000000000000000000000000000000000000000000000000000000000000050e19232d363f49515a626b6f7a818990959c9fa6a9aca9aaa29f9d9b9b9a9a9b9b9c9fa2aaa8acaaa9a19e97928c847c736c665b544a42382e241a0f0500000000000000000000000000000000030f1b27323d464e555d606b707a818a92979f9b918b7f726d625a50483e362c1e140a0000000000000000000000000000000000000000000000000000000000000815212e3b4854616e7b87949c9c9c9083776a5d50444f5c6976828f9c9c9c94877b6e6154483b2e211508000000000000000000000000000815212e3b4854616e7b87949c9c9c9083776a5d50444f5c6976828f9c9c9c94877b6e6154483b2e211508000000000000000000000000040f1b26313c46505a616c717c82898d90929291908d88827b706b60594f443b3020170d020000000000000000000000000000000000000000000000000007131e2a35404952575960606060606060605a58524a40362c21180d04000000000000000000000000000000000000000000000000000013202d394653606c7986939facacacacacacacacacacacacacac9f9386796c605346392d201300000000000000000000040c151d23282f383f44464c5254575a5c5e5f5f5f5e5e5c5a5754524c46443f382f28221c140b03000000000000000000000000000000000000071119222b333b424a50545c6064686d70737577787979797878767573706d6864605c55514b423c342c241b1209000000000000000000000000010c161f2834404b555d676d78808790949b9fa2a9a29e9c9b9a9a9b9d9fa3a9a19e9a948f877f776d675d554b40352920170d0200000000000000000c18232f39434b515353514b51535a616a6f7c86929fa7a3988e81756a5f53473b30251a0e01000000000000000000000000000000000000000000000a141e2935404b555d666d747c82878b8e909192929291908e8c88847f7a716d605d55535f696f7c848b8f9192929291908d86796c605346392d20130000000000000b151e29323a444c545c60696e757b8084878b8d8f90919292929292908f8d8b8884807c766f6a605c544c443b32291e150b0000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000000000000000000000000000000000000000000000000000000000000000000060c101220202020202020202013100c07010000000000000000000000000000000000000000000000000000000000000000000000000008111b242d373f48505960686d757d83898f94989c9fa3aba7a8aaa8a7a7a7a7a8a9a9a7a5a8a09e9a97918c8580796f6b605b544a423830261c1108000000000000000000000000000000000007131f2c38434e5860676d747d858e939fa29b918b7f726d625a50483f362d241a0c020000000000000000000000000000000000000000000000000000000000000815212e3b4854616e7b878f8f8f8f8f83776a5d50444f5c6976828f8f8f8f8f877b6e6154483b2e211508000000000000000000000000000815212e3b4854616e7b878f8f8f8f8f83776a5d50444f5c6976828f8f8f8f8f877b6e6154483b2e211508000000000000000000000000000a15202a343e48505a616a6f767c808385868583807c756e6960594f473d32291f0e050000000000000000000000000000000000000000000000000000020d19242e3740474b4d53535353535353534d4c4740382f241a0f0600000000000000000000000000000000000000000000000000000013202d394653606c7986939f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9386796c605346392d20130000000000000000000000030b12181d262d33383b4146474a4d4f515253535251504d4a4746413b38332d261d17110a02000000000000000000000000000000000000060f19232b343d454d545b60666d71767a7d8082838585868685858382807d7a76716d67605c544e463e362d241b1108000000000000000000000008131e28313a45515c676d79828d92999fa6a39f9a97928f8e8d8e8e9092989b9fa3a69e99928c82796d675d51453f32291e1408000000000000000007121d27313940454747454045475058606a727f8c959faa9f93877c6f62574d42362a1d120700000000000000000000000000000000000000000006111c26303845515d676d7880898f93999a9d9e9f9f9f9e9d9b9896918c857e756d675d58626e7b8691969b9e9f9f9e9e9c9386796c605346392d2013000000000007121d27303a444c565d666d737b81878c9196979a9c9d9e9f9f9f9f9e9d9c9a9896918d88827c746d665e564c443b30271d120700000000000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000000000000000000000000000000000000000000000000000000000000000000000003061313131313131313130604000000000000000000000000000000000000000000000000000000000000000000000000000000000009121b252d363f474f565e616b70787d82878b909299989a9c9d9e9f9f9f9e9e9d9c9b999696918d89857f7a736d676059504a42382f261e140a0000000000000000000000000000000000000915222e3b4854606a6f79818a91979ea39c918c7f726d625b51483f362d241b1208000000000000000000000000000000000000000000000000000000000000000814212e3b4754616e7a8283838383828074675a4e414d5a6673808283838383827a6e6154473b2e211408000000000000000000000000000814212e3b4754616e7a8283838383828074675a4e414d5a6673808283838383827a6e6154473b2e21140800000000000000000000000000030e18222c363e4850585f626b6f737778797876736f6a615e574f473d342b20170d0000000000000000000000000000000000000000000000000000000007121c252e353b3f404646464646464646413f3c362f261d12080000000000000000000000000000000000000000000000000000000013202d394653606c798693939393939393939393939393939393939386796c605346392d201300000000000000000000000000070b141c22282b3036393b3e414344454646454443403e3b3936302b28221c140b0600000000000000000000000000000000000000030c18212b353d464f575e666c71797e82868a8c8f90919292929291908e8c8a86837e79726d665f5850483f362d231a0e05000000000000000000010d19242f3a43505a606d79828f949fa3a7a099928e898583818181828386898e92999fa7a39f948f82796d605b51443b3025190e0200000000000000010b151f272f34383a3a3835393e464e58606c7883909da6a49a8e8175695e5246392f23180c0000000000000000000000000000000000000000000b17232e3842505a606d79828d929b9fa4ababa39f9d9c9b9c9d9fa19e97928b82796d685f6a76828f98a1a8aaa39f9995949386796c605346392d201300000000000c18232e39434c565e686d7880868e93999da0a8aba39f9d9d9c9c9c9d9fa2aaa8a19e9a948f8780786d685e564c42392e23180c03000000000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009131b242d353d444c525960656c70767b7f8386898b8d8f9091929292929190908e8c8a8784807c79726d67605d554f443f382f261d140c020000000000000000000000000000000000000916232f3c4956626f7c848e9393939393918c7f726d625b51493f362d241b120900000000000000000000000000000000000000000000000000000000000000000714202d3946525e686e767676767676746e64584c404b58636e737676767676766e685e5246392d201407000000000000000000000000000714202d3946525e686e767676767676746e64584c404b58636e737676767676766e685e5246392d201407000000000000000000000000000006101a242c363e464e53596063676a6b6c6b6a66625f58534d453d352b22190e0500000000000000000000000000000000000000000000000000000000000a131c242a2f323339393939393939393433302b241d140b000000000000000000000000000000000000000000000000000000000013202d394653606c798686868686868686868686868686868686868686796c605346392d20130000000000000000000000000000020a11171c1f252a2d2e3134363838393938373634312e2d2a251f1c17110a0200000000000000000000000000000000000000000a151e2a333d474f5960696e787e848a8f9299999b9d9e9f9f9f9f9e9d9b9999928f8b857f796f6a615a50483f352b20170d02000000000000000004111d2935414c56616c74818e949ea6a69f959087817c79767474747577797d818790959ea5a69e948e81756d62564c41362a1e14080000000000000000030d151d23292c2d2d2c292c343d44505b666f7c89949eac9f92877b6e61554b4034291c10040000000000000000000000000000000000000003101c28343f4a54616c74818e949da4aca7a09d9992908f8f8f9192999a9e9f948f837a6d666f7c88949faaaea398928c88878886796c605346392d20130000000004101c2834404b555e686d7a828c92999fa4a9a19e99999291908f8f90909298989da0a8a69e99928d837a6e685e544b40342820150a000000000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000000000000000000000000000000010406070a0d10111213131211100d0a070604000000000305050606060606060000000000000000000000000000000000000000000000000000000000000000000000000000000000000109121b232b323a41464f535b6063696e7276797c7f8182848585868685848483817f7d7b7773706d66605d55514b433d332d261d140b02000000000000000000000000000000000000010e1b2734414e5a67748186868686868686867f736d635b51493f372d241b120900000000000000000000000000000000000000000000000000000000000000000005111e2a36414c565e6169696969696967645c52473c47525c6366696969696969615e564c41362a1e11050000000000000000000000000005111e2a36414c565e6169696969696967645c52473c47525c6366696969696969615e564c41362a1e110500000000000000000000000000000008121a242c343c43474f54565a5d5f5f5e5d5a55534e46423b332b23191007000000000000000000000000000000000000000000000000000000000000010a12191e2325262d2d2d2d2d2d2d2d2726241f19130b02000000000000000000000000000000000000000000000000000000000013202d3946535f6c767979797979797979797979797979797979797979766c5f5346392d201300000000000000000000000000000000060b0f14191e20212427292b2c2c2c2b2b29272421201e19140f0b0600000000000000000000000000000000000000000006111c26303c454f59606b6f7b828b91969c9fa3a9a19e9c9b9a9b9c9d9fa2aaa39f9c97928c847c716c625a50473d32291e130800000000000000000613202c3945525d68717e8a939da6a89f948f837c746f6c6668676768666d70757c838f939ea7a69e938b7f72685e52463b3025190d010000000000000000030b12181c1f20201f1d2228333f4a54606b75828f9ca8a3998d8073675c5145382c1f14090000000000000000000000000000000000000006121f2b3844505c66717e8b939ea6aea59d95908a86838282838486898d92979f959083786d73808d99a6b0a89f9286807c7a7b7d7063574a3d3024170a000000020d17202c3845515c676d7a838f949fa3aaa29f97918c898684838282838485888b91969ea1a9a39f9590837a6e665c51453c31261a0f020000000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000000000000000000000000000001080d111314171a1d1e1f1f201f1e1c1a171413100c07010c0f11121313131313130909070300000000000000000000000000000000000000000000000000000000000000000000000000000000091019202830363d41495053575e6165676d6f7274757778787979787877767472706e696763605c54514c45403a3128221c140b0200000000000000000000000000000000000000010d1a2733404c58646e747979797979797979736d635b51493f372d251b120900000000000000000000000000000000000000000000000000000000000000000000010d1925303b444c52545c5c5c5c5c5c5a58524a4136404a52585a5c5c5c5c5c5c54524c443b3025190d0100000000000000000000000000010d1925303b444c52545c5c5c5c5c5c5a58524a4136404a52585a5c5c5c5c5c5c54524c443b3025190d010000000000000000000000000000000008121a222a31373d4348494d50525352504d4947433c36312921191107000000000000000000000000000000000000000000000000000000000000000000070d1316191a20202020202020201a1a17130e0801000000000000000000000000000000000000000000000000000000000000121e2b37434f5a646c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c645a4f43372b1e1200000000000000000000000000000000000003080d111414171a1c1e1f20201f1e1d1a171414110e080300000000000000000000000000000000000000000000000c17232e38424d57606b707d8590949ea1a8a29e9997918f8e8e8e8f909298999ea2a9a19e9691867e716c62594f443a3025190d0400000000000004111d2935414c55606d7a85929ea5aca0968f82796e6a62605b545a5b545c60636a6e78818f959faba59f92857a6e61564c41362a1e110500000000000000000001070c10131414131017222d38424f5963707d8995a0ab9e9285796d6053473b31261a0e000000000000000000000000000000000000000713202d3a4653606d7884919ea5afa69d938e837d797776757677797c80858c9298958e81747683909ca9aca0958a7e736f6e6e706b6155483c2f23160900000009141f2b37434e58606d798390959fa6a8a098928b85807c79777675757677797c7f848a92979fa7a79f959083786d60584e43372b1e13080000000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000000000000000000000003090e13191d20212427292b2b2c2c2c2b292724201f1c18120e181c1e1f2020202020201615130f0a04000000000000000000000000000000000000000000000000000000000000000000000000000000070e161e252a2f383f44464d5354555c60636567696a6b6c6c6c6b6b6a69686663615e575653504a45413a352f281f17110a020000000000000000000000000000000000000000000b1824303c48535c64676c6c6c6c6c6c6c6c66635b51493f372d251b130900000000000000000000000000000000000000000000000000000000000000000000000008141e29323b4146475050505050504e4c4741382f3840474b4d5050505050504746413b32291e140800000000000000000000000000000008141e29323b4146475050505050504e4c4741382f3840474b4d5050505050504746413b32291e140800000000000000000000000000000000000008101820262b32383b3c404445464543403c3b37322a251f170f07000000000000000000000000000000000000000000000000000000000000000000000002070a0c0d13131313131313130e0d0b070300000000000000000000000000000000000000000000000000000000000000000f1b27333e49525a5f60606060606060606060606060606060606060605f5a52493e33271b0f0000000000000000000000000000000000000000010507080b0e10111213131211100d0b0807050200000000000000000000000000000000000000000000000003101c28343f4a545f69707d8692979fa6a49d97928c888583828181828385898c92979fa3a8a09892887e716b60564c41362a20150a0000000000000613202c3945515d6773808d97a1ada69e91847a6d675f5853504a4e4e4b5153585f666d79839099a3ada2978d8174685e5246392d201409000000000000000000000000040607070606111c262f3d4854606b7784919daba2978a7e7164574d42362a1b11060000000000000000000000000000000000000b1824313e4b5764717e8a96a0acac9f948e8179716d67696869676d70747a7f869095938a7e7885929fabaa9d9184776c6261616361594f44382c2014070000020e1925303a47535f6a73808d959fa7aaa09691867f79736f6d676a696969666d6f72787d8590959fa9a79f958d80736a5f53473a3025190d0100000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000000000000060e141a1e24292c2d3033363738393939383634302d2c29231d1a24282b2c2d2d2d2d2d2d23221f1b160f07000000000000000000000000000000000000000000000000000000000000000000000000000000050c13191d262d33373b4246484b515356585a5c5d5e5f5f5f5f5e5d5d5b595754534d4946443f38352f29241d160d0600000000000000000000000000000000000000000000000814202b36414a53585a60606060606060605957514940372e251b130900000000000000000000000000000000000000000000000000000000000000000000000000020d1720293036393b43434343434341403c362f262e353b3f404343434343433b3936302920170d02000000000000000000000000000000020d1720293036393b43434343434341403c362f262e353b3f404343434343433b3936302920170d0200000000000000000000000000000000000000060e151b21272c2f30343738393837332f2e2b26201a140d0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a16212c3740494f535353535353535353535353535353535353535353534f4940372c21160a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2c3844505c666e7b859298a2a9a49f928d857f7c78767574747576797c80858c9299a2aaa39a92877d70685e52463c32261b0f0200000000000714212d3a4754606d7a85929fa9aa9e94897d70685d554e46443f41414045464e545c676f7c87929faca99f92867a6e6154473c31261a0e0200000000000000000000000000000000000a141d2c38444f5965727f8c99a3a99c8f8276695f5346382d22170b000000000000000000000000000000000005121e2a36424d576875818e9ba8afa49a8f82786d66605d555c555c6063676d727b838f9391857b8797a2ada79a8d8074675a545557554f473e33281c1004000005111e2a36424d56626f7c87929fa7aea29891847c726d6763605c555c5c545c6062656c707a839097a1ada79f92877c6f62564c41362a1e110500000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000000000000000000070f181f262a2f35393a3d404344454646454443403d3a38342f2a252f3437383939393939392f2e2c272119100700000000000000000000000000000000000000000000000000000000000000000000000000000002080b141b22272b31363a3b404547494c4e4f5152525353525151504e4c4a4846423d3a38342e29241e18130c04000000000000000000000000000000000000000000000000030f1a252f3841484c4e53535353535353534c4b4640372e251c1309010000000000000000000000000000000000000000000000000000000000000000000000000000050e171e252a2d2e3636363636363433302b241d242a2f32333636363636362e2d2a251e170e050000000000000000000000000000000000050e171e252a2d2e3636363636363433302b241d242a2f32333636363636362e2d2a251e170e05000000000000000000000000000000000000000000040a0f161b1f2223272a2c2c2b2a2722211f1b150e0903000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005080a0b13131313131313090806030000000000000005101b252e373e4346464646464646464646464646464646464646464646433e372e251b10050000000000000000000000030613131313131313130d0c0a07020000000000000000000000000003060809131313131313130b0b090501000000000000000004111d2935414c56606d78839097a2aaa49a938b807a736f6a6968676869666d6f737a80879298a2aba39992857a6d61584e43372b1e14080000000005111e2a36424d5765727f8b98a2aea99c8f82756b60564c433c38332d2e34383c424b555f6a74818e9ba8aea3988c7f7266574d42372b1e12050000000000000000000000000000000000020b1c27333d4754616d7a86929fac9f93877b6e6153493f33271b0f03000000000000000000000000000000000714202d3a46525e697885919eabac9f93877c6f665c54514b4f4b5153555d60696e79818f949083909da9b3a4988b7e7165584b484a48443e352c21160b0000000714202d3a46525e6975828e99a3afa89f92867c6f6a605c5553514b4f4f4a5053535b60686e7a85919ea7afa3998e8175685e5246392d20130700000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000000030b1218212a31363a4145474a4d505152525352514f4d4a4745403936313a4044454646464646463c3b38322b22190f0400000000000000000000000000000000000000000000000000000000000000000000000000000000020a11171b1f252a2d2f34383a3c3f4142444545464645454443413f3d3b3a36312d2c28231c19130d0701000000000000000000000000000000000000000000000000000008131d262f363c40414646464646464646403e3b352e251c130a0100000000000000000000000000000000000000000000000000000000000000000000000000000000050d14191e20212929292929292726241f1a13191f23262729292929292921201e19140d0500000000000000000000000000000000000000050d14191e20212929292929292726241f1a13191f23262729292929292921201e19140d05000000000000000000000000000000000000000000000000040a0f1315161a1d1f201f1d1a1615130f0a040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060c11151718202020202020201615130f0a0400000000000009131c252c33373939393939393939393939393939393939393939393937332c251c130900000000000000000000060c101220202020202020201a1917130e0800000000000000000000040a0f13151620202020202020181715110c06000000000000000713202c3945525d68727f8c95a0a9a69f93887f746d68625f585b5b5b545c6063676d737d869299a4aba2978e81756a5f54473b3025190d010000000714202d3a46525e697683909daaada196897d7063594f433a312b282223282c3039434e58626f7c8895a0acaa9d908477695f53463a2d2114070000000000000000000000000000000000000b13202d3a4653606d7985929eaba49a8c8073655b5044372b1f1207000000000000000000000000000000000815212e3b4854616e7b8797a1adaa9d9083776a5f544b4540424045474b51575f676d78828f9590959fabb0a3968a7d7063574a3d3d3c38332c231a10050000000814212e3b4754616e7b87939fabaca0958a7e716a5f58514b47454042423f44464950565e68707d8a95a0acab9f92867a6d6154473a2e21140700000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000000000000030c151c2328333b42464c5254575a5c5e5e5f5f5f5e5c5a5753514b46423b454c50525353535353534948433d342b21160a000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b0f141a1e2123292c2d303234363738393939383837363533302e2d2a25201f1c17110d080100000000000000000000000000000000000000000000000000000000010b141d252b303334393939393939393933322f2a231c130a0100000000000000000000000000000000000000000000000000000000000000000000000000000000000002080d1114141d1d1d1d1d1d1b1a17140e080e1317191a1d1d1d1d1d1d1414110d080200000000000000000000000000000000000000000002080d1114141d1d1d1d1d1d1b1a17140e080e1317191a1d1d1d1d1d1d1414110d0802000000000000000000000000000000000000000000000000000000030709090d11121312100d090806030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000911171d2124252d2d2d2d2d2d2d22211f1b150e060000000000010a131b21272b2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2b27211b130a010000000000000000030a11171c1f2d2d2d2d2d2d2d2d2726231f19120a0200000000000000070f161b1f22232d2d2d2d2d2d2d2524211d1811090000000000000714212d3a4754606d7a85929fa7ab9f948c7f726d605d56534e4f4e4e4a5053555d606b707d87939faaa99e93887c6f62564c41362a1e11050000000814212e3b4754616e7b87959fabab9e9184786c6053463d31281f1c17181c1f27313c47535f6a7784919daaaca095887b6e6155483b2e221506000000000000000000000000000000000005111d2a36414c5664707d8a97a1adac9e9184786c605346392f24180c000000000000000000000000000000000916222f3c4955626f7c8895a9b3a79a8d817467584e4239352f34383a40454d555c666d7a85919d9fa7b1afa396897c706356493d302f2c28211a1108000000000c1925323f4c5865727f8b99a4afaa9d9184786c60574e45403a38342f2e34383a3f444d56616b7783909daaafa3998b7e7265584b3f2f24180d01000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000000000000000b151e272e343f454d53565d606366696a6b6c6c6c6b696763605c55534d444f575c5f60606060606056544e463d32271b0f030000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090e1214181c1f20232527292a2b2c2c2c2c2b2a2a28262421211e1a1312100c060000000000000000000000000000000000000000000000000000000000000000020b131a202427272d2d2d2d2d2d2d2d2625231e19120a01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010507081010101010100e0d0b08030002070a0c0d1010101010100807050100000000000000000000000000000000000000000000000000010507081010101010100e0d0b08030002070a0c0d101010101010080705010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009121b22292d3031393939393939392f2e2b26201810060000000000010910161b1e202020202020202020202020202020202020202020201e1b161009010000000000000000030c151c23282c393939393939393933322f2a241c140a00000000000007101920272b2e2f3939393939393932312e29221b12090000000006131f2b37434e5866727f8c97a2ada79c9083786c605b524c47434241413f44464c5159616b73808d98a2aea59b8f8275685e5246392d2014070000000b1824313e4b5764717e8a97a7b1a79a8e8174665b5044382b1f160f0b0c10151f2b37434e586773808d9aa6b1a7988b7e7165584b3e2d22170b00000000000000000000000000000000000713202d3946525e6875828f9ba9b3aca196897c6f63554b4035291d10040000000000000000000000000000000a1723303d4a5663707d8996a3b0a6998c7f7366594c402f2924292c2f353b434b545d68707d8a959fabb7afa396897c706356493d3023201c1610080000000004111d2935414c556975828f9cabb2a9988b7e72655b50453c342e2c292323282b2d333b444f5965727e8b98a9b3ab9b8f827568554b4035291d1004000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000000000007121c273039404451575f61686d7073767778797978777673706d67615e57505761686b6c6c6c6c6c6c6260584e43382c1f13070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000205070c10131416191b1c1e1f1f20201f1e1e1d1b19171514120e090603000000000000000000000000000000000000000000000000000000000000000000000001080f14181a1b2020202020202020191916120d070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030608090f1112131313110f0c070705010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111b242d34393d3e464646464646463c3b37322a22180e04000000000000050a0f1213131313131313131313131313131313131313131313120f0a05000000000000000000000a151e262e34384646464646464646403f3b362e261c120800000000040f19222b32383b3c464646464646463e3d3a342d241b11060000000815222e3b4754606a7784919ea9aca095897d70655b5045413a3732342e34383a41454f59606d7a85929fabac9f92867a6e6154473b2e23180c0000010e1b2834414e5b6774818e9aa7b4aa978a7e7164544a3f3328190d040000040d1b26323d4a5764707d8a97aab4a79b8e81746853493f33271b0f03000000000000000000000000000000000714212e3a4754616d7a86929facb9b2a89a8e8174675d5145382c1f14080000000000000000000000000000000a1724313d4a5764707d8a97a3b0a5988c7f7265594c3f2e23181c1f24293139424c56616c7683909da9b3afa396897c706356493d302316100b0500000000000613202c3945515d677885929eabada196887b6e6153493f3328231f1c18171c1f2227323e4855626e7b8897a2adab9e918578675d5145392c201306000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000c18232e39424a515b63696e747a7d808384858586858482807d79746e69605b536873787979797979796f6a6054483b2e22150900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040607090c0e0f1112121313121211100e0c0a080705020000000000000000000000000000000000000000000000000000000000000000000000000000000003080b0d0e13131313131313130d0c0a0602000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002050708121313131313130a090704000000000000000000000000000000000000000000000000000000060b0e1011131313131313131313131313131313130b0a080400000000000000000000000000030a0f1215151c1e1f1f201f1e1c181413110d080200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17222d363e45494b535353535353534947433c342a20150a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c2630383f4453535353535353534d4b4740382e24190e020000000a16202b343d434749535353535353534b4a453f362d22180c0100000916222f3c4955626f7c8896a0acaa9d9084776b6053493f35302b262823282c2f353e45525d6874818d9aaaafa3998b7f7265544b4034281c10040005111e2a36414c566a7683909da9aea298887b6e6155483b2d221708000000000a15212e3b4854616e7b8798a2aeaa9d908377655b5044372b1f120500000000000000000000000000000006131f2b37434e5865727f8c99a3aeb7b8ab9f9285796d6053473b3025190e0200000000000000000000000000000a1723303d4a5663707d8996abb5a6998d807366544a403428211e1a181f27303a44505a64707d8a97a2adafa396897c706356493d3023160a000000000000000714212d3a4754606d7a8797a1adab9e918578695f5341382d211813100c0b101217202d394653606c7985929fabada196867a6d6053473a2d201407000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000000000004101c2834404a545c606d727b81868a8d8f9191929292918f8d8a85807b726c655c6b78858686868686867c6f6256493c2f2316090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090e1214151f202020202020171614100b050000000000000000000000000000000000000000000000040b12171b1d1e20202020202020202020202020202020171714110c0500000000000000000000060e151b1f2122282a2b2c2c2c2b292521201d19130d0802000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111d29343e485056586060606060606055534e463c32261b0f0300000000000000000000000000000000000307090a0e111213131211100e0b090706030000000000000000000c17232e38424a505f606060606060605a58524a40362a1f13070000030f1b27323d464e545660606060606060585650483f34291d110500000d192633404c5966737f8c99a8b2ab998c807366594f41382d241e1b1b171c1f242935414c5663707c8998a2aeab9c8f8276665c5145382c1f1306000713202d3946525e687885929fabac9f9285796c605346392d201306000000000714212d3a46535e697985929facac9f9285796c605346392d2013060000000000000000000000000000000815222e3b4754606a7783909dabacababaea2988a7e7164564c41362a1e110500000000000000000000000000000915222f3c4855626f7b8899a3afa89b8f8275665c51443a322d2b2627272628323e4653606d7985929fabafa396897c706356493d3023160a000000000000000915222f3c4855626f7b8895a9b3a99c8f827669574d422f261b0f070400000306121f2b3744505b657683909da9b2a995887b6e6255483b2f221508000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000000030e18212c3844515c666d757f878d9298999c9d9e9f9f9f9e9c9a98928d867f776d666679869293939393887b6e6255483b2f22150800000000000000000000000000000000000000000000000000000003080c0e0e131313131313130f0e0c09040000000000000000000000000000000000000000000000000000000000000003070b0d0e131313131313130e0e0c08030000000000000000000000000000030608090f1112131313110f0c0707050100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000407090a131313131313120807050200000000000000000000060d141a1e21222c2d2d2d2d2d2c2423201c161008000000000000000000000000000000000000000000050e161d23272a2b2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2423211c171008000000000000000006101820262b2e2f3537383939393835322e2d2a251e19130c04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815212d3945505a62646c6c6c6c6c6c6c625f584e43372b1f1306000000000000000000000000000000040b101316161a1d1f201f1e1e1d1a18151312100b0600000000000003101c28343f4a545c6c6c6c6c6c6c6c6c66635c52473b2f23170a000006131f2b38434e5860626c6c6c6c6c6c6c65625a50453a2e2115090005111d2935414c566976828f9ca9afa399897c6f6356493d2f261b130f0a0c101319242f3a4653606d7985929facac9f9285796d6053463a2d201307000714212e3a4754616d7a8798a2aeaa9d918477665b5044382b1f12060000000005121e2a36424d576a7784919daaaea298877a6e6154473b2e211408000000000000000000000000000004101c2834404b55626f7c8895a0a8a19e9fa2aa9c8f8275685e5246392d20150a00000000000000000000000000000714202d3a4753606d7a86929facab9e9285796d60564c443d3a373134333332323845515c6675828f9ca8afa396897c706356493d3023160a000000000000000916232f3c4956626f7c8995a2afa89b8e8275685b4f423128140a0000000000030f1b27333f49536976828f9ca9afa295897c6f6256493c2f231609000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000000000915202c38434f59606d78818c92999fa2aaa9a8aaa29f9e9e9e9fa29f98928c81786d6d798699a39f9f94877a6e6154473b2e2114080000000000000000000000000000000000000000000000000001090f14181a1b202020202020201c1b191510090200000000000000000000000000000000000000000000000000000001080e1317191a202020202020201b1a18140f090100000000000000000000030a0f1215151c1e1f1f201f1e1c181413110d080200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050b101416172020202020201f1514120e090300000000000000060f181f262a2d2e38393939393939302f2c28211a110800000000000000000000000000000000000000040e1720282e3336373939393939393939393939393939393931302d28221a1208000000000000030e18222a31373a3c42444546464644423f3a39363029241e160e070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1724303d4956626c7179797979797979766a5f53473b2e2115080000000000000000000000000002090e161b202223272a2c2c2c2b2a29272522201f1c17110a020000000006121f2c3844505c667679797979797979736e63584b3f3226190c00000815222e3b4754606a6f79797979797979716c62564a3d3124170b000713202d3946525e687885929eabac9f92867a6d6053473a2d20140a0200000308131f2c3844505c667683909ca9aea298887c6f6255493c2f221609000915222f3c4855626f7b8895aab4a99c8f837669544a3f33281c0f0300000000020e1a2531434f5c6976828f9ca9b4aa95887b6f6255483c2f221509000000000000000000000000000006131f2c3845515c6774808d9aa7a196919298a29f92867a6e6154473c31261b0f000000000000000000000000000006131f2c3945515d677783909dabada1978a7e71685e564f484742424140403f3f3f404b546673808c99a6afa396897c706356493d3023160a00000000000000091623303c4956636f7c8996a2afa79a8d8174675a4e4134271b080000000000000b17222d424e5b6875818e9ba8afa296897c6f6356493c30231609000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000000020e1a26313b4854606b74808d939fa3ababa49f9b979892919192939a989d9f938f82786d7a8794abb4a094877a6d6154473a2e211407000000000000000000000000000000000000000000000000030b131a202427282d2d2d2d2d2d2d292825211b140c0300000000000000000000000000000000000000000000000000020b12191f2326272d2d2d2d2d2d2d282724201a130b030000000000000000060e151b1f2122282a2b2c2c2c2b292521201d19130d0802000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000810161c2023242c2d2d2d2d2d2c22211e1a140d060000000000030d18212931363a3b454646464646463d3c38332c231a10070000000000000000000000000000000000000b16202932393f4344464646464646464646464646464646463e3c39332c241a100500000000000a15202a343c4347484f5152525352514f4b4746413a3530282019110800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1825313e4b5864717e868686868686867c6f6255493c2f221609000000000000000000000000050d141a21272c2f30343738393938373634312f2d2b28231c140c020000000713202d3a4653606d78868686868686868073665a4d4033271a0d00000916232f3c4956626f7c868686868686867e7165584b3e3225180b000714212e3a4754616d7a8797a1adaa9e918477675d5145382c1f13020000000003101c28343f4a546774818e9aa7b4aa978b7e7164584b3e3125180b000a1723303d4a5663707d8996a3b0a89b8e8275685b4f422d22170b000000000000091c2835424f5b6875828e9ba8b0a396897d7063564a3d3023170a00000000000000000000000000000713202d3a4653606d7985929fab9e918485929fa3998c7f7265584e43372b1c11060000000000000000000000000004101d2935404b5566737f8c99a3aea99e91847a6d68615955534d4f4e4d4c4c4c4b4b4c5865727f8b98a5afa396897c706356493d3023160a000000000000000815222f3b4855626e7b8895aab4a79a8e8174675b4e412f24190d010000000000061b2835424e5b6875818e9ba8b4aa95887b6f6255483c2f221509000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000006121e2b37424e57636f7c87939fa5afa9a199938f8a878584848586888c90959e948d80747b8794a1ada093877a6d6054473a2d2114070000000000000000000000000000000000000000000000010b151d252b303435393939393939393534312c261e150c000000000000000000000000000000000000000000000000000b141d242b303334393939393939393534302b251d150b0100000000000006101820262b2e2f3537383939393835322e2d2a251e19130c04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008111a21282c2f30393939393939382e2d2a261f180f060000000009141f29333b424648525353535353534a48443e352c22190f060000000000000000000000000000000006121d28323b444b4f51535353535353535353535353535353534a49453e362c22170c00000000030f1b26313c464e53555b5d5e5f5f5f5e5c5854524c46413a322b231a1208000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1825313e4b5864717e8b9393939393887c6f6255493c2f2216090000000000000000000000060f171f252a32383b3d4144454646454443413e3c3a38342e261e140a0000000713202d3a4653606d798693939393938d8073665a4d4033271a0d00000916232f3c4956626f7c8993939393938b7e7165584b3e3225180b000915222f3c4855626f7c8895a9b3a99c8f837669554b4035291d100400000000000c17232e3f4c5966727f8c99a5b2a6998c807366594d4033261a0d000a1724313d4a5764707d8a97a3b0a79a8e8174675b4e4134281b060000000000010e1b2834414e5b6774818e9aa7b0a3978a7d7064574a3d3124170a0000000000000000000000000005111e2a36424d5764717e8a97a2a99a8d80818e9baa9d9083776a5f5347382e23170b00000000000000000000000000000c18242f3b4854616e7b86929fa8ada19690827a706b65615f575c5a5a5959585858585865717e8b98a4afa396897c706356493d3023160a000000000000000814212e3b4754616e7a8798a2aea89b8f827568564c4135291d11070400010407101d2935404b556976828f9ca9aea398877a6e6154473b2e211408000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000814212e3a47535f6a76828f9aa4afaba1979287827d7a79787778797b7f838a9196928a7e7b8895a1ada093867a6d6053473a2d201407000000000000000000000000000000000000000000000009131d272f373c40414646464646464642413d3730271e0e050000000000000000000000000000000000000000000000030d1d262e363c3f414646464646464641403c372f271d13090000000000030e18222a31373a3c42444546464644423f3a39363029241e160e0700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007101a232c33383c3d464646464646453b3a36312921180d030000020e1a26313b454d53555f60606060605f57554f473e342b21180d040000000000000000000000000000000b17232e39444d565b5e60606060606060606060606060606060575550483e33281c110400000006121f2b37434e585f62686a6b6c6c6c6b6865615e56524c443d352c241a11080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1825313e4b5864717e8b979f9f9f95887c6f6255493c2f22160900000000000000000000060f18212930363d4448494d505253525151504d4b4846443f3830261c110600000713202d3a4653606d7986939f9f9f998d8073665a4d4033271a0d00000916232f3c4956626f7c89959f9f9f988b7e7165584b3e3225180b000a1723303d4a5663707d8996a3b0a89b8e8275685b4f422f24180c000000000000061825323e4b5865717e8b98a4b1a79a8e8174675b4e4134281b0e000b1824313e4b5764717e8a97a4b1a79a8d8174675a4e4134271b0e0100000000010e1b2734414e5a6774818d9aa7b0a4978a7d7164574a3e3124170b000000000000000000000000000714202d3a46525e6976828f9ca9a297897d7d8a98a2a095887c6f62544a3f34281c1003000000000000000000000000000714202d3a46525e6974808d96a1a9a89f9590847d77726e696a6867666665656565646465717e8b98a4afa396897c706356493d3023160a000000000000000613202d394653606c7985929faba99d908376685d5245392c221813100c0d101318202c3945515d677783909daaac9f9286796d6053463a2d201307000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000815222f3b4855626e7b88949facaea39992857d75716e686b6b666d6e72767d84909492857d8996a3aca09386796d6053463a2d20130700000000000000000000000000000000000000000000030f1a252f3941484d4e535353535353534f4d4942393020170d02000000000000000000000000000000000000000000010b151f2e3840474c4d535353535353534e4d4841392f251a0f03000000000a15202a343c4347484f5152525352514f4b4746413a3530282019110800000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f19222c353e44484a535353535353524846423b33291f1409000005121e2a36424d575f616b6c6c6c6c6c6c6361594f463d332a1f160b0200000000000000000000000000000e1b27333f4b565f676a6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c64615a5045392d2114080000000815212e3a47535f6a6f7577787979797775726d68615d564f473e362c231a100600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1825313e4b5864717e8b97a4aca295887c6f6255493c2f221609000000000000000000020c18212a333b42464f54565a5d5f5f5f5e5d5c5a585553504a42382e23170b00000713202d3a4653606d798693a0aca6998d8073665a4d4033271a0d00000916232f3c4956626f7c8995a2aca4988b7e7165584b3e3225180b000b1724313e4a5764717d8a97a4b0a79a8e8174675b4e4134281b070000000000000b1724313e4a5764717d8a97a4b0a89c8f8275695c4f4236291c0f000b1825313e4b5864717e8b97a4b1a79a8d8074675a4d4134271a0e0100000000010e1a2734414d5a6774808d9aa7b1a4978b7e7164584b3e3125180b000000000000000000000000000814212e3b4754616e7b87939fab9e9285797985929fa79a8d8073665c5044382b1f13070000000000000000000000000005121e2a36424d57606d79849197a1a9a79f969189837f7b78767574737372727271717171717e8b98a4afa396897c706356493d3023160a0000000000000006121f2b3844505b6676828f9cabac9f92867a6d6054473e3429241f1c18181d202328323b4753606d7a86929faca99c908376665c5144382c1f1206000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000d192633404c5966737f8c99a6b0ac9f92877c6f6b64615e56545c6062656c707a8290949083909daaaca09386796d6053463a2d201307000000000000000000000000000000000000000000000814202b37414b53595b606060606060605c59544b4232291f140900000000000000000000000000000000000000000007121d2731404a52585a606060606060605b59534b41372b201408000000030f1b26313c464e53555b5d5e5f5f5f5e5c5854524c46413a322b231a12080000000000000000000000000000000000000000000000000000000000000000000000000000000000040d18212b343e474f55575f60606060605f55534d453b31261a0e02000714212d3a46535f696e78797979797979706b61584e453b31281d140a0000000000000000000000000000101d2a36434f5b67717779797979797979797979797979797979716c6155493c3023170a0000000915222f3c4855626f7c81848585868584827e7a746d68605950483e352c22180d03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1825313e4b5864717e8b97a4afa295887c6f6255493c2f2216090000000000000000000a141e2a333b454d52596063676a6b6c6c6b6a69676462605c544a3f34281c1003000713202d3a4653606d798693a0aca6998d8073665a4d4033271a0d00000916232f3c4956626f7c8995a2afa4988b7e7165584b3e3225180b000b1824313e4b5764717e8a97a4b1a79a8d8074675a4d4134271a0e0100000000000a1724313d4a5764707d8a97a3b0a99c8f8376695c504336291d10000b1824313e4b5764717e8a97a4b1a79a8d8174675a4e4134271b0e0100000000010e1b2734414e5a6774818d9aa7b1a4978a7e7164574b3e3124180b00000000000000000000000007131f2c38434f5966727f8c99a4aa9b8e817475818e9baa9e9184796d6053463a2f24180d01000000000000000000000000020e1a25303b45515d676f7c8591979ea5a8a09e95908b8885838281807f7f7f7e7e7e7e7d7d808d9aa7afa396897c706356493d3023160a00000000000000030f1c28333f4a5466727f8c99a3aea3998a7d71645a50463d352f2c292324292c2e343b444f5963707d8a99a3aea6998d807366544a4034281c1004000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000005111e2a36424d576976838f9ca9b1a79a8d80736a605954524c4a5053555a61676d798290959095a0abaca09386796d6053463a2d201307000000000000000000000000000000000000000000000c1824303c48535d64686c6c6c6c6c6c6c68655d54443b3025190e0000000000000000000000000000000000000000000c18232f3943525c64676c6c6c6c6c6c6c68645d53483c3024180c00000006121f2b37434e585f62686a6b6c6c6c6b6865615e56524c443d352c241a1108000000000000000000000000000000000000000000000000000000000000000000000000000000020b16202a333d474f5961636c6c6c6c6c6c6b615f574d42362a1e1205000815222e3b4855616e7b858686868686867d706a60574d433a2f261b110600000000000000000000000000111e2b3744515e6a7784868686868686868686868686868686867e7164574a3e3124170b0000000a1724313d4a5764707d8a9091929292918f8b86807a706b615a50473e342a1f150b010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1825313e4b5864717e8b97a4afa295887c6f6255493c2f221609000000000000000006111c26303b454d575e616b70747778797978777674716f6d665c5044382b1f1206000713202d3a4653606d798693a0aca6998d8073665a4d4033271a0d00000916232f3c4956626f7c8995a2afa4988b7e7165584b3e3225180b000b1824313e4b5764717e8a97a4b1a79a8d8074675a4d4134271a0e0100000000000a1724313d4a5764707d8a97a3b0a99d9083766a5d5043372a1d10000a1724313d4a5764707d8a97a3b0a79a8e8174675b4e4134281b0e0100000000010e1b2834414e5b6774818e9aa7b0a3978a7d7064574a3d3124170a0000000000000000000000000915222f3b4854606b7784919eaba2988a7d70707d8a98a2a197897d7063554b4135291d11040000000000000000000000000009141f2935414b555f6a6f7c858f939c9fa4a79f9d989892908f8d8d8c8c8b8b8b8b8a8a8a8d929da9afa396897c706356493d3023160a00000000000000000b17222d3b4754616e7b86929faaab9d9083766c61584e45403a38342f2f35393a40454d56606b75828f9babab9f94887b6f6255483c2e23180c00000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000714202d3a46525e697885929fabaca095877b6e61584f4746413f44464850555d676e7b85929da0a7b1aca09386796d6053463a2d201307000000000000000000000000000000000000000000000e1a2734404d59646f7479797979797979756f65564d42362a1c11060000000000000000000000000000000000000004101c2934404b55646e7479797979797979746f64594d4034271a0e0000000815212e3a47535f6a6f7577787979797775726d68615d564f473e362c231a100600000000000000000000000000000000000000000000000000000000000000000000000000000a141d28323c454f59616b70797979797979786e695f53463a2d211407000714212d3a46535f696f7c86929a939992867d6f695f554c41382d22170d04000000000000000000000000111e2b3744515e6a77849193939393939393939393939393938a7e7164574a3e3124170b0000000a1724313d4a5764707d8a979e9f9f9f9e9b98928d847d716c61594f463c31271d12070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1825313e4b5864717e8b97a4afa295887c6f6255493c2f22160900000000000000000b17232e38424d575f696e767c8083858685848483807e7c786d6053463a2d201307000713202d3a4653606d798693a0aca6998d8073665a4d4033271a0d00000916232f3c4956626f7c8995a2afa4988b7e7165584b3e3225180b000b1724313e4a5764717d8a97a4b0a79a8d8174675a4e4134271b070000000000000b1724313e4a5764717d8a97a4b0a99d9083766a5d5043372a1d10000a1723303d4a5663707d8996a3b0a89b8e8175685b4e4235281b090000000000020f1b2835424e5b6875818e9ba8b0a3968a7d7063574a3d3024170a000000000000000000000004101d2935404b55636f7c8996a0ab9f9285796d6d7985929fa99b8e8175675d5145392c20140900000000000000000000000000020d18242f3a434e585f6a6f7a82898f93999c9fa2aaa29f9d9b9a999998989898979797979a9da4aeafa396897c706356493d3023160a00000000000000000614202d3946525e6874818e98a2ab9f958a7e716a6058514b47454042434045474b51575f696f7c89939eaaa4998f82766a5f53473a2e1c120700000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000814212e3b4754616e7b8798a2aeaa9d908377695e53463d393634383a3e434c555e69717e8b97a1adb9aca09386796d6053463a2d201307000000000000000000000000000000000000000000000e1b2835414e5b687481868686868686868175695e5246382d22170b0000000000000000000000000000000000000006131f2c3845515c677480868686868686868174685b4e4135281b0e0000000915222f3c4855626f7c81848585868584827e7a746d68605950483e352c22180d0300000000000000000000000000000000000000000000000000000000000000000000000006111c262f3a444d57606b707d868686868686857b6e6155483b2e2215080005121e2a36424d57606a707e88939fa29892857b6e675d53493f33271f160c010000000000000000000000111e2b3744515e6a7784919d9f9f9f9f9f9f9f9f9f9f9f9f978a7d7164574a3e3124170b0000000a1724313d4a5764707d8a979e9ea2a9a9aaa39f9691877e716b61584e43392f23180c0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000204050606060504020b1825313e4b5864717e8b97a4afa295887c6f6255493c2f2216090000000000000003101c28343f4a545f696e7b82898d9092929291908f8d8b887e7164584b3e3125180b000713202d3a4653606d798693a0aca6998d8073665a4d4033271a0d00000916232f3c4956626f7c8995a2afa4988b7e7165584b3e3225180b000a1724303d4a5763707d8a96a3b0a89b8e8175685b4e422e23180c0000000000000b1825313e4b5864717e8b97a4b1a99c8f8376695c504336291d10000916222f3c4955626f7c8895aab4a99c8f8276695c4f4330251a0e0200000000030f1c2936424f5c6975828f9ca8b5ab95897c6f6256493c2f23160900000000000000000000000613202c3945515d6774818e9aa8aa9b8e8175676775818e9baa9f92867a6d6054473b31251a0e020000000000000000000000000007131d28313c464e585f686d757c82878b8f929897999a9b9c9d9d9d9e9e9e9e9f9f9f9fa3abacb5afa396897c706356493d3023160a000000000000000005111e2a36414d56616e7b85929fa4a79f92867c6f6a605d5553514b4f4f4b5153545c60696e7b84919ea6a69f93877c6f63584e43372b1f0b0000000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000091623303c4956636f7c8996aab4a79a8e817467574d42342d2a282b2d313a434d57606d7985929eabb8aca09386796d6053463a2d201307000000000000000000000000000000000000000000000916232f3c4956626f7c89959393939392867b6e61544a3f33281c0f030000000000000000000000000000000000000714202d3a4753606d7985929393939395897c6f6356493c302316090000000a1724313d4a5764707d8a9091929292918f8b86807a706b615a50473e342a1f150b0100000000000000000000000000000000000000000000000000000000000000000000040d17222d38424c565f696f7d869299939a92867c6f695f53463a2d21140700020e1a26313b454e58616c73808c949ea1979183796d655b50443d31281d13070000000000000000000000111e2b3744515e6a7784919daab0a69e9b98989898989898978a7d7164574a3e3124170b0000000a1724313d4a5764707d8a92919297979c9fa6a9a19992877d706a5f554b4034291f1409000000000000000000000000000000000000000000000000000000000000000000000000000000020608080c0f111213131312110f0c1825313e4b5864717e8b97a4afa295887c6f6255493c2f2216090000000000000006121f2b3844505c666e7b848f949a9d9e9f9f9e9d9c9a978b7e7164584b3e3125180b000713202d3a4653606d798693a0aca6998d8073665a4d4033271a0d00000916232f3c4956626f7c8995a2afa4988b7e7165584b3e3225180b000916222f3c4955626f7c8895a9b3a99c8f827669544a4034281c100400000000000c1926333f4c5966727f8c99a5b2a89c8f8275695c4f4236291c0f000814212e3b4754616e7b8798a3aeaa9d9084776a574d42362a1e12050000000005111d2935414c566a7783909daaafa399877b6e6154483b2e21150800000000000000000000000714202d3a4753606d7a85929faca3988a7d716464707d8a98a2a2988b7e7165574d42362a1e120500000000000000000000000000010c161f2a343c464e565e616b6f757b7f8285888a8c8d8f8f9090919191919292929292999ba3acafa396897c706356493d3023160a0000000000000000020e1925303b46535e69717e8b929da4a29891847c726d6763605c555c5c555d6063666d727b839096a1a69f948d80736b6054463c31261a0f0000000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000a1724313d4a5764707d8a97a3b0a5988c7f7265594c3f31261e1c1f2028313b45515c6673808d99aab4aca09386796d6053463a2d201307000000000000000000000000000000000000000000000915222e3b4854606a7783909daa9fa3998c7f73665b5044382b1f1409000000000000000000000000000000000006121f2b37434e5864717e8a97a29f9f9d9083776b6054483b2f2215090000000a1724313d4a5764707d8a979e9f9f9f9e9b98928d847d716c61594f463c31271d1207000000000000000000000000000000000000000000000000000000000000000000010c161f28333f4a545d686e7b859298a29f93887e706a60574d42362a1e1205000009141f29333d46505a606c77828f96a1a0958f82776c60594f433a2f24180c0300000000000000000000111e2b3744515e6a7784919daaaa9e938f8b8b8b8b8b8b8b8b8a7d7164574a3e3124170b0000000a1724313d4a5764707d87858585868a8f949fa2aaa39992867c6f675c51453b31261a0e0300000000000000000000000000000000000000000000000000000000000000000000000003090e121415191b1d1f1f201f1f1d1b191825313e4b5864717e8b97a4afa295887c6f6255493c2f221609000000000000000713202d3a4653606d788390969fa6aaababa5a1a0a0a1978b7e7164584b3e3125180b000713202d3a4653606d798693a0aca6998d8073665a4d4033271a0d00000916232f3c4956626f7c8995a2afa4988b7e7165584b3e3225180b000814212e3b4754616e7a8797a2adaa9d918477665c5144382c1f120600000000000e1b2734414e5a6774818d9aa7b4a89b8e8175685b4e4235281b0f000713202d3a4653606d7986929facab9f928578695e52463a2d201407000000000713202d3946525d687885929eabac9f9286796d6053463a2d2013070000000000000000000005121e2a36424d5764717e8b98a2ac9f92867a6d60606d7985929faa9c8f8376695e53463a2d21160a0000000000000000000000000000040d18222a343c444c52596063696e7276797b7d7f81828383848484848585858585868b909ba7afa396897c706356493d3023160a00000000000000000008141f2a36424d57626c74808d929fa2a19691877f79736f6d676969696a676d6f73797f869095a0a49f949082796d60594f43342a20150a0000000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000b1824313e4b5764717e8a97a4b0a4978a7d7164574a3e3124171012161f2834404b54626f7c8998a3aeaca09386796d6053463a2d2013070000000000000000000000000000000000000000000007131f2c38434e5865727e8b98a2aeab9e9184786c6053463b30251a0e00000000000000000000000000000000000814212e3a47535f6a7683909ca9aea2988b7f7265594f43382c1f13070000000a1724313d4a5764707d8a979e9ea2a9a9aaa39f9691877e716b61584e43392f23180c03000000000000000000000000000000000000000000000000000000000000000008131e28313a44505b666d7a849197a29e948c80736c61584e453b31261a0e020000030d18212b343e44505b656d7a849199a49e948c7f726b60554b4135291e150b00000000000000000000111e2b3744515e6a7784919daaa89b8f817f7f7f7f7f7f7f7f7f7b6e6155483b2e2215080000000714202d3a4753606d79797878787a7d828a9298a1a9a2989083796d60574d42362a20150a00000000000000000000000000000000000000000000000000000000000000000000060b0f151a1e212225282a2c2c2d2c2b2a28262225313e4b5864717e8b97a4afa295887c6f6255493c2f22160900000000000004101c2834404b5564717e8a959fa8b0a9a19e9894939394968b7e7164584b3e3125180b000713202d3a4653606d798693a0aca6998d8073665a4d4033271a0d00000916232f3c4956626f7c8995a2afa4988b7e7165584b3e3225180b000714202d3946525e687885929fabac9f9286796d6053463a2d20130a0400000006121f2b37434e586976828f9ca9b4a79a8e8174675b4e4134281b0e0006121f2b3844505c667784909daaaea298877b6e6154483b2e21150a000000000714212e3a4754616d7a8797a1adaa9e918477665c5145382c1f1306000000000000000000000714212d3a46535f6976838f9caaaa9b8f8275675d5d6775828e9baa9f93877b6e6154483d32271b0f0000000000000000000000000000050e171e252a323a41464f54575e6165666d6f717374757676777777787878787879797e8b98a4afa396897c706356493d3023160a000000000000000000020e1a25313b45505a646e74808b92989fa199928c85807c797776757676777a7c80858b9298a09f9a938d82796d675d51473d3222180e030000000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000b1825313e4b5864717e8b97a4b0a396897d7063564a3d3023170a060d18232e3a4653606d7986929facaca09386796d6053463a2d20130700000000000000000000000000000000000000000000030f1b27323d4754606d7a85929facaca1968a7d7063574d42362a1c110600000000000000000000000000000004101c2934404b55626e7b88949fabac9f92867a6d6054473d32271b0f030000000a1724313d4a5764707d8a92919297979c9fa6a9a19992877d706a5f554b4034291f140900000000000000000000000000000000000000000000000000000000000000030d19242f3a434f59606c78828f96a0a1968f82776c605a50463d33291f140900000000060f192227333f49535e68707d87939fa69f92877d6f675d51453d30271d1207000000000000000000111e2b3744515e6a7784919daaa5998c7f7272727272727272726e695f53463a2d21140700000006131f2c3845515c676d6d676b676d70767e869297a1aaa0958c8073695f53463c31261a0f0300000000000000000000000000000000000000000000000000000000000000020a11171b1f262b2e2f32353738393939383735322f2e313e4b5864717e8b97a4afa295887c6f6255493c2f22160900000000000006131f2c3845515c6776828f9ca7b1aaa197928b88868687898b7e7164584b3e3125180b000713202d3a4653606d798693a0aca6998d8073665a4d4033271a0d00000916232f3c4956626f7c8995a2afa4988b7e7165584b3e3225180b0005111e2a36414c56697683909ca9aea399897c6f6256493d32271b13100c090e1117212e3a47535f6a7885929eabb3a6998d8073665a4d4033271a0d0003101c28343f4a546875818e9ba8b3aa978a7d7064574a3d32271b0d04000001081623303d495663707c8996a9b3a89c8f827569544b4034281c1004000000000000000000030f1c28333f4a54616e7b87939faca2988a7e7164555564717e8a98a3a49a8c7f7366584e43372b1d1207000000000000000000000000020c1720293036393a3e3f44484d5354545c606264666768696a6a6a6b6b6b6b6c6c6c717e8b98a4afa396897c706356493d3023160a0000000000000000000009141f29333f48525c646e747e868e92999c9f97928d898684838282838486898d92979f9c99948f8780796d675d554b40342b211006000000000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000b1825323e4b5865717e8b98a4afa296897c6f6356493c302316090007131f2c3845515c667683909da9aca09386796d6053463a2d20130700000000000000000000000000000000000000000000000a16202c3945515d6774818e9aa7b1a89b8f8275695e5246382e23170b00000000000000000000000000000006131f2c3845515c6774808d9aa6b0a79b8e8174685d5245392b21160a000000000a1724313d4a5764707d87858585868a8f949fa2aaa39992867c6f675c51453b31261a0e030000000000000000000000000000000000000000000000000000000000010b151f2935414c56606b737f8c949ea49991847a6d655b50483e342b21180d030000000000071017222d38414c56606b74808d96a0a3999184796d60594f42392e23180c020000000000000000111e2b3744515e6a7784919daaa5998c7f726665656565656565615f574d42362a1e120500000004101c2934404b555c60605c555d60646c717c859298a3a79f92867b6e61584e43372b1f1409000000000000000000000000000000000000000000000000000000000000060b141b22272b31373a3b3f4244454646464544423f3b3a373e4b5864717e8b97a4afa295887c6f6255493c2f2216090000000000000713202d3a4653606d7986929facaea39892857f7b79797b7c7f7c6f6256493c2f231609000713202d3a4653606d798693a0aca6998d8073665a4d4033271a0d00000916232f3c4956626f7c8995a2afa4988b7e7165584b3e3225180b00010d192530404d5a6673808d99a9b2ab998c7f7266584e43372b251f1c181b1a1b2228343f4a54626f7c8897a2adb1a4978b7e7164584b3e3125180b00000b17232e3f4b5865727e8b98a8b2a69a8d807367584e43372b1f15100c090e131e2a36414c5666727f8c99a5b3aa998c7f7366594c402e23180c0000000000000000000006121f2b3844505b6673808c9aa4ac9f92867a6d605454606d7a86929fac9d9184776a605447392e23180c00000000000000000000000008131e29323a4146474b4c4d4e4f51524a50535557595a5c5c5d5d5e5e5e5e5f5f5f65717e8b98a4afa396897c706356493d3023160a00000000000000000000030d17212d36414a525c646c717b81868c8f92979e99999291908f8f90919299999e9892908c88827d746d675d554b43392f22190f00000000000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f2316090004101c2834404b546875828f9ba8aca09386796d6053463a2d201307000000000000000000000000000000000000000000000004111d2935414b55626f7c88959fabac9f92877b6e61544a3f34281c100300000000000000000000000000000714202d3a4753606d7985929eabaca095897c6f63564c413529190f04000000000714202d3a4753606d79797878787a7d828a9298a1a9a2989083796d60574d42362a20150a000000000000000000000000000000000000000000000000000000000007121d27313945525d68707d87939fa69f93877d6f685e53493f362c22190f060000000000000006111b262f3a444f59606d7984919ea5a0968e81746b60544b4034281e13080000000000000000111e2b3744515e6a7784919daaa5998c7f72665958585858585855534d453b31261a0e02000000000c18232f39434b515353514b51535a616a6f7c86929fa7a3988e81756a5f53473b30251a0e0100000000000000000000000000000000000000000000000000000000080f181d262d33373c4247484c4e505252535252504e4c4847433e4b5864717e8b97a4afa295887c6f6255493c2f2216090000000000000916232f3c4956626f7c8999a3aeac9f92867c726e6d6d6e70726f6a6054473b2e221508000713202d3a4653606d798693a0aca6998d8073665a4d4033271a0d00000916232f3c4956626f7c8995a2afa4988b7e7165584b3e3225180b0000081623303c4956636f7c8997a1adaa9d9083776a6054473f36302c282328252a2d333c44505c6673808c99a9b3b3a996897c6f6356493c3023160900000615222f3c4855626f7b8896a0acaa9d9184776a6054473c31271f1c181b1a1e242d3946525e6876838f9ca9aea298897c706356493d30231607000000000000000000000613202d394653606c7884919eaca99b8e8175675d51515d6775828f9caba096897c6f62544b4034281c100400000000000000000000010d1925303a444c525457595a5b5c5d5e5b5953484a4c4e4f5050515151515252525965727f8c98a5afa396897c706356493d3023160a0000000000000000000000050f1b242f38414a525a62696e747b7f8285929faba39f9d9c9c9c9d9d9fa3ab9f928682807b766f6b605d554b433a31271d100700000000000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000c18232e414e5b6874818e9ba7aca09386796d6053463a2d2013070000000000000000000000000000000000000000000000010d18242f3a47535f6a7683909da9afa3998c7f73665c5044382b1f14090a0a0a0a0a0a0a0a0a0a0a0a0a0a121f2b37434e5864717e8b97a2adaa9d9083776b6054443a2f241907000000000006131f2c3845515c676d6d676b676d70767e869297a1aaa0958c8073695f53463c31261a0f03000000000000000000000000000000000000000000000000000000000c18232f39434f59606d7a849199a4a0968d80736b60564c41382d231a10070000000000000000000a141d28323d45515d67707d89939ea89d93897d70665c51453a3025190d0200000000000000111e2b3744515e6a7784919daaa5998c7f7266594c4c4c4c4c4c4846423b332a1f1409000000000007121d27313940454747454045475058606a727f8c959faa9f93877c6f62574d42362a1d120700000000000000000000000000000000000000000000000000000008111a212a2f383f44464d5355585b5d5f5f605f5e5d5b5955534e464b5864717e8b97a4afa295887c6f6255493c2f2216090000000000000a1724313d4a5764707d8a97abb5a79a8e81746a6160606163656260584e43372b1f1306000713202d3a4653606d798693a0aca6998d8073665a4d4033271a0d00000916232f3c4956626f7c8995a2afa4988b7e7165584b3e3225180b00000713202d3a4653606d7984919eaaab9f95897c6f625b5146413a38342e343136383f444d57606d7984919eabb7ada297877a6d6154473a2e21140700000815212e3a47535f6a7784919eabaca095887c6f62584e4339312c282327262b2f35414c56616d7a86929facab9f9285796d6053463a2d20130700000000000000000004111d2935414c5663707d8996a1aca1978a7d7063554b4b5564717e8b99a3a89a8d8174665c5145382c1f13080000000000000000000005111d2a36414c565e6164656768696a6b68655d534840414243434444444545454d596673808c99a6afa295897c6f6256493c2f231609000000000000000000000000091217232e38424a535b606a6f767c8084919eaaa7a4a2a1a0a0a1a2a4a7a99c8f837f7b756e6a625b514b433a31281f150b0000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f2316090000071a2734404d5a6773808d9aa6aca09386796d6053463a2d20130700000000000000000000000000000000000000000000000007131d2b37434e5864717e8b97a2adab9e9184786d6053463b31251a16161616161616161616161616161616212e3a47535f6a7683909ca9aea2988b7f7265594f4332281e1308000000000004101c2934404b555c60605c555d60646c717c859298a3a79f92867b6e61584e43372b1f140900000000000000000000000000000000000000000000000000000004101c2934404b55606b74818e96a1a59d9184796d60594f443a2f261b110800000000000000000000020b16202935404b55606b75818e98a2a59d9184796d60564c41362a1f140800000000000000111e2b3744515e6a7784919daaa5998c7f7266594c3f3f3f3f3f3b3a36312a21180e030000000000010b151f272f34383a3a3835393e464e58606c7883909da6a49a8e8175695e5246392f23180c000000000000000000000000000000000000000000000000000008111a232c333c41495053575f6265686a6b6c6c6c6b6a6865625f5853505864717e8b97a4afa295887c6f6255493c2f2216090000000000000b1825313e4b5864717e8b97a4b1a4978a7e716458535354565856544e463d32271b0f03000713202d3a4653606d798693a0aca6998d8073665a4d4033271a0d00000916232f3c4956626f7c8995a2afa4988b7e7165584b3e3225180b000006121f2b3844505c6673808d98a2aea79c8f82766d625b524c46454041414242464950575f69727e8b96a1adb8ab9e928578685e5246392d201307000006121f2b37434e586673808d99a3afa89b8e81756a5f554b433c38342e3431373a4145525d68737f8c99a3afa79b8e8175675c5145382c1f13060000000000000000000613202c3945525d6875818e9ba8ab9e9285796d6053464754616d7a86929fab9e9285796d6053463a3025190d010000000000000000000713202d3946525e686d71727374767778756f65594d3d323536373737383835404b556774818e9aa7b2a995887b6e6255483b2f2215080000000000000000000000020c162028343f4a545c656c737c82888c9196a09f9a97959493939495979a9e9f948f8b86817b726d645d534a40352c1f150b0100000000000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d201307000000000000000000000000000000000000000000000000010f1b26323c4753606d7985929fabada1968a7d7063574d42362a23232323232323232323232323232323232934404b55626e7b88949fabac9f92867a6d6054473d3221160c010000000000000c18232f39434b515353514b51535a616a6f7c86929fa7a3988e81756a5f53473b30251a0e0100000000000000000000000000000000000000000000000000020d17212c3845515c67707d89939da89e93897d6f675c51473d32281d140a000000000000000000000000050e18242f39434f59616e7b86929fa9a0968c7f72685e52463b3025190e01000000000000111e2b3744515e6a7784919daaa5998c7f7266594c3f333232322e2d2a261f180f0600000000000000030d151d23292c2d2d2c292c343d44505b666f7c89949eac9f92877b6e61554b4034291c1004000000000000000000000000000000000000000000000000060f1a232c353e454d535b6064696e72757778797979787775726e6a64605c5464717e8b97a4afa295887c6f6255493c2f2216090000000000000c1825323f4b5865727e8b98a5afa295897c6f6256494648494c4947433d342b20150a00000713202d3a4653606d798693a0aca6998d8073665a4d4033271a0d00000916232f3c4956626f7c8995a2afa4988b7e7165584b3e3225180b000003101c28343f4a54616e7b86929fa8ab9f948b7f726d615e5653514b4e4e4f4d53535b60696e7b85929fa8b2b5a89c8f827569564c4135291d11050000030f1a26313c4854616e7b87929faaac9f92877c6f675d554e46454041414142474c515b606d7a85929eabaca095897d7063554b4034281c10040000000000000000000714212d3a4754606d7a86929faca89a8d8174665c514446525d6876828f9caba2978a7d7064564c4135291d11050000000000000000000714212e3a4754616d7a7e7f8081828485817568584e43372e2c2823282c2f3945515d677783909daaada196877a6d6054473a2d211407000000000000000000000008131e28323a44505c666d777f878f94999e9f97928e8b8887868687888b8d92979e9c99928e867f746f645c52473e31271d120700000000000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d201307000000000000000000000000000000000000000000000000000a151f2c3845515d6774808d9aa6b0a89c8f8275695e5346382e3030303030303030303030303030303030303845515c6774808d9aa6b0a79b8e8174685d5245392c2013040000000000000007121d27313940454747454045475058606a727f8c959faa9f93877c6f62574d42362a1d12070000000000000000000000000000000000000000000000000009141f2a36414c56606d7984919ea5a2988e81756b60554b40352b20160b020000000000000000000000000007121d27313d46525e6973808d97a2a89f92857a6d61564d41362a1e1308000000000000111e2b3744515e6a7784919daaa5998c7f7266594c3f3326252522211e1a140e06000000000000000000030b12181c1f20201f1d2228333f4a54606b75828f9ca8a3998d8073675c5145382c1f14090000000000000000000000000000000000000000000000030e18212c353e474f575f656c71767b7f8183858586858583817f7b77716d665f64717e8b97a4afa295887c6f6255493c2f2216090000000000000c1925323f4c5865727f8b98a5aea195887b6e6255483b3b3d3f3c3b37322b22190f0400000713202d3a4653606d798693a0aca6998d8073665a4d4033271a0d00000916232f3c4956626f7c8995a2afa4988b7e7165584b3e3225180b0000000b17232e3846525e6973808d96a0aaa69f93877f746d6863605c545b5b5c575e61656c717b849198a2aebab3a9988c7f7265594c3f3025190d010000000a15212d3a46535e6975818e98a3aea3999083796d675f5853514b4e4e4e4d53555d606d74818e97a1ada69d9083776b605443392e23180c00000000000000000006121f2b37434e5865727e8b98a2aca096897c6f63544a40414c5665727e8b99a4a99b8f8275685e5246392d2015090000000000000000000815212e3b4854616e7b878c8d8e8f909184786a6054473f3a38342e34383a404b55606d7a86929facab9e918578675d5145392c20130600000000000000000000010d1924303a44505a606d78818c93999fa098928c85817e7b7a797a7a7b7e81858b92979f9f99928b81746e63594f43392f24180c00000000000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d2013070000000000000000000000000000000000000000000000000004101d2935404b55626e7b88949fabac9f93877b6e61544a3f3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d4753606d7985929eabaca095897c6f63564c4135291d110400000000000000010b151f272f34383a3a3835393e464e58606c7883909da6a49a8e8175695e5246392f23180c000000000000000000000000000000000000000000000000020e1a25303946525e68737f8c96a0a99f92867a6e61594f43392f23190e040000000000000000000000000000010b151f2a36424d57606d7a85929eaaa2978d8074685e52463a2f24190d010000000000111e2b3744515e6a7784919daaa5998c7f7266594c3f332619191514120e0903000000000000000000000001070c10131414131017222d38424f5963707d8995a0ab9e9285796d6053473b31261a0e000000000000000000000000000000000000000000000009141f2a333e474f5961696e787e83888b8e909292939291908e8c88847e786e6a64717e8b97a4afa295887c6f6255493c2f2216090000000000000c1925323f4c5865727f8b98a5aea194887b6e6155483b2e30322f2e2b27201910070000000713202d3a4653606d798693a0aca6998d8073665a4d4033271a0d00000916232f3c4956626f7c8995a2afa4988b7e7165584b3e3225180b00000006111c2a36424d56606d79849198a2aba499938b807a736f6d666968676869696e71787e859196a1aab3b9ada297887c6f6255493c2f2216080000000005121e2a36424d57616e7b86929fa6aba0958f82796f6a63605c555b5a5b575f62676d747f8c939ea9a99f948a7d7064594f4430271d12070000000000000000000814212e3a47535f6a7683909daaaa9e9184776b605442393b4754616e7b86939fac9f92867a6d6154473c31261a0e0000000000000000000714212d3a46535e697884919a9b9c9d96897c6f625a504a464440434044464b515c67717e8b98a3aeaa9b8f827568554b4135291d11040000000000000000000004111d2935414c56616c74808d939fa4a09591867f7a74716f6e6d6d6e6f7174797e8590959fa39f938d80736b61554b4035291d1004000000000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d20130700000000000000000000000000000000000000000000000000000c18242f3947535f6a7683909ca9afa4998c8073665c504949494949494949494949494949494949494949494e5864717e8b97a2adaa9d9083776b6054443a2f24190d010000000000000000030d151d23292c2d2d2c292c343d44505b666f7c89949eac9f92877b6e61554b4034291c1004000000000000000000000000000000000000000000000005121e2a36424d57616e7a86929fa8a1978c8073685e52473d31271d110700000000000000000000000000000000030d1a25303b45525d6873808c98a2a99f92867b6e61554c4135291d11040000000000111e2b3744515e6a7784919daaa5998c7f7266594c3f3326190c0807050200000000000000000000000000000000040607070606111c262f3d4854606b7784919daba2978a7e7164574d42362a1b1106000000000000000000000000000000000000000000020b1a26313b454f59616b707b838a9095989b9d9e9f9f9f9e9d9b9895908b837c6f6b717e8a97a4afa295887c6f6255493c2f2216090000000000000c1925323f4c5865727f8b98a5aea194887b6e6155483b2e232523221f1b150f07000000000713202d3a4653606d798693a0aca6998d8073665a4d4033271a0d00000916232f3c4956626f7c8995a2afa4988b7e7165584b3e3225180b000000000e1925303b45515d676f7c869299a2aaa49f928d86807c79767574747576787b7e838a9297a1a8b2bcb8ab9e9285796c605346392d20130600000000020e1a25313b46535f69737f8c949fa7a79f948f837c75706d676867676869696e737a818c919ca5aaa1978f82766c6155473d331e150b00000000000000000003101c28343f4a54626e7b88959faba7998c807366594f43303946525e687683909ca9a3998b7f7265574d42372b1b1106000000000000000005121e2a36424d576774818e9aa6a9a89b8e81756c605c5453514a504a5153555d606d7983919daaaea2988b7e7165584b3e2f24180d01000000000000000000000713202c3945525d68717e8a929da5a19791837b726d676462616060616264676d717a839096a1a59c928a7d70675d5145392c1f150a000000000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d201307000000000000000000000000000000000000000000000000000007121d2b37434e5864717e8a97a1adab9e9184796d6056565656565656565656565656565656565656565656565f6a7683909ca9aea2988b7f7265594f4332281e130800000000000000000000030b12181c1f20201f1d2228333f4a54606b75828f9ca8a3998d8073675c5145382c1f140900000000000000000000000000000000000000000000000714202d3a46525e6974818d98a2aa9e92857a6d60564c41352b1f150b00000000000000000000000000000000000009141f2935414c56616d7a86929faca3988d8073675d5145392c20150a0000000000111e2b3744515e6a7784919daaa5998c7f7266594c3f3326190c00000000000000000000000000000000000000000000000000000a141d2c38444f5965727f8c99a3a99c8f8276695f5346382d22170b0000000000000000000000000000000000000000000a141d2a36424d57616b707d8690959d9fa7a8aaaaa39f9e9e9e9fa3a09d9590867d6f717d8a97a4afa295887c6f6255493c2f2216090000000000000c1925323f4c5865727f8b98a5aea194887b6e6155483b2e22191615130f0a0400000000000713202d3a4653606d798693a0aca6998d8073665a4d4033271a0d00000916232f3c4956626f7c8995a2afa4988b7e7165584b3e3225180b0000000009141f2935404b55606a707e879298a0a7a49d98928d898583828181828384878b90959ea1a9b2babeb2a99b8e8175665b5044382b1f1206000000000009141f2a36424d57606d78828f959fa7a69f959087817d79777574747476787b80858e939ca3aaa29892857b6e615a5044352b210c0300000000000000000006121f2c3844505c6673808d9aa7ab9f95887b6e6255483d3236414d5665727f8c98a7ab9d908376695f5347382d22170b0000000000000000020e1a25313c4855626f7c88949faaaa9e938a7e726d6662605c545d545c6062676d75808d95a0aca99f92867a6d6154473a2e2114070000000000000000000003101c28343f4a54606d7a85929ea4a79e91857b6e69605d55555453535455555c60686e7a84919ea8a49e9184796d6053473c31261b0f030000000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d2013070000000000000000000000000000000000000000000000000000010f1a26313c4653606d7985929eacada1968a7d70646363636363636363636363636363636363636363636363636e7b88949fabac9f92867a6d6054473d3221160c01000000000000000000000001070c10131414131017222d38424f5963707d8995a0ab9e9285796d6053473b31261a0e0000000000000000000000000000000000000000000004111d2935414c56616e7b86929faaa2988c7f73675d51443b3023190d03000000000000000000000000000000000000020d19242f3a46525e6874808d9aa6aa9f92857a6d6054473c31261b0f0300000000111e2b3744515e6a7784919daaa5998c7f7266594c3f3326190c0000000000000000000000000000000000000000000000000000020b1c27333d4754616d7a86929fac9f93877b6e6153493f33271b0f030000000000000000000000000000000000000006111b262f3846535f69707d8792989fa7aba8a09d9898929191919299989d9f9892867c707d8a96a3afa295887c6f6255493c2f2216090000000000000c1925323f4c5865727f8b98a5aea194887b6e6155483b2e221509080603000000000000000713202d3a4653606d798693a0aca6998d8073665a4d4033271a0d00000916232f3c4956626f7c8995a2afa4988b7e7165584b3e3225180b00000000020c18242f39434e58616c707d8690959ea1a9a29f9a9892908f8e8e8f8f9196989da09f9da0a8b2b9ada1978a7d7063544a3f33281c0f030000000000030e1a26313b44505c666d7a8390959da5a7a099938e898683828181818385888c92979da5a7a09892867d70695e52483e3323190f000000000000000000000713202d3a4653606d7985919eabab9d908377695f53473a2b303b4854616e7b8795a0ab9f95887b6e6253493f33271b0f0300000000000000000915212e3b47535f6a76828f98a2aea59f92877f78726f6d666a696a666d6f7379818d929da7aca2978d8074685d5246392d2013070000000000000000000006121f2b3844505c66737f8c97a1ab9f958a7d70695f57514b4847464747484b51565e68717e8a96a0aca1968b7f7265584e43372b1f12060000000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d20130700000000000000000000000000000000000000000000000000000009151f2c3845515c6673808d9aa4afa99c8f82757070707070707070707070707070707070707070707070707074808d9aa6b0a79b8e8174685d5245392c201304000000000000000000000000000000040607070606111c262f3d4854606b7784919daba2978a7e7164574d42362a1b11060000000000000000000000000000000000000000000713202c3945525d6874808d99a3ab9f92857a6d60554c4132291e1107000000000000000000000000000000000000000008131e2935414c56626f7b88949faba2988b7f7265584e43372b1f120600000000111e2b3744515e6a7784919daaa5998c7f7266594c3f3326190c0000000000000000000000000000000000000000000000000000000b13202d3a4653606d7985929eaba49a8c8073655b5044372b1f1207000000000000000000000000000000000000000b17222d3841505a616e7b859299a2aaaba39f96918c888584848586888c90959e9891847a7d8996a3afa295887c6f6255493c2f2216090000000000000c1925323f4c5865727f8b98a5aea194887b6e6155483b2e221508000000000000000000000713202d3a4653606d798693a0aca6998d8073665a4d4033271a0d00000916232f3c4956626f7c8995a2afa4988b7e7165584b3e3225180b000000000007121d27313d46505a616b707c838b91979c9fa3aaa29f9d9c9b9a9b9c9ea1a29f9a939196a0acb8ab9e9184796d6053463a2d22170b0000000000000009141f28343f4a545e686d7a838e929d9fa7a49f9b9892908e8e8d8e8f9197999ea1a9a29e9590867d706b60574d42362c22110800000000000000000005111d2a36414c5663707d8a97a1ada3998c7f7265574d42372b2d3a46535e697783909daaa7998d8073655b5044372b1f1207000000000000000006121f2b37434e58626f7c86929fa4aca399928b837f7b797777767777797c80858e939da4aea49a92857a6d61564c4135291d1105000000000000000000000713202d3a4653606d7984919ea9a99d9083766b61574d45403c3b3a3a3b3c40454c56606c7884919eaaa89d9184776a5f53473a2e2115080000000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d20130700000000000000000000000000000000000000000000000000000004101c2834404b54616e7b87939facac9f93877d7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7d85929fabaca095897c6f63564c4135291d11040000000000000000000000000000000000000000000a141d2c38444f5965727f8c99a3a99c8f8276695f5346382d22170b0000000000000000000000000000000000000000000714212d3a4754606d7a86929faba69a8d8074685d52433a2f20170d000000000000000000000000000000000000000000010d1925303a47535f6a7683909cacaa9d9184776a5f53473a2e21150a00000000111e2b3744515e6a7784919daaa5998c7f7266594c3f3326190c000000000000000000000000000000000000000000000000000005111d2a36414c5664707d8a97a1adac9e9184786c605346392f24180c000000000000000000000000000000000000030f1b27333f4953616c76828f97a2ababa399928c847f7b79787778797b7f838a9197968e817d8996a3afa295887c6f6255493c2f2216090000000000000c1925323f4c5865727f8b98a5aea194887b6e6155483b2e221508000000000000000000000713202d3a4653606d798693a0aca6998d8073665a4d4033271a0d00000916232f3c4956626f7c8995a2afa4988b7e7165584b3e3225180b0000000000010b151f2b343e485059616a6e787e858a8f9299999b9d9e9f9f9f9e9e9c9998928e8684919daab0a69a8d8073665c5044382b1c110600000000000000030b17232e38424c565e686d79818990959b9fa2aaa39f9d9b9a9a9b9c9ea1a9a49f9c97928c837b706b60594f453b30241a10000000000000000000000713202d3946525e6875828f9ba9ac9f92867a6e6154473c31262a36424d5766737f8c99a7ab9e9184786c605346392f24180c0000000000000000030f1b26323c47535f6a717e8b939aa2aaa39f95918c8886848483838485898c92979ea5aaa39f93887d70685e52443a3024190d0100000000000000000000091623303c4956636f7c8996a1adab988b7f7265594f453c352f2e2d2d2e2e343b44505b6674808d9aa7aca095887b6f6255483c2f2215090000000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d201307000000000000000000000000000000000000000000000000000000000c18232e3946535f6976828f9ca9afa499938a89898989898989898989898989898989898989898989898989899297a2adaa9d9084776b6054443a2f24190d01000000000000000000000000000000000000000000020b1c27333d4754616d7a86929fac9f93877b6e6153493f33271b0f030000000000000000000000000000000000000006131f2b37434e5865727f8c98a2ab9f94887b6e62564c4131281e0e050000000000000000000000000000000000000000000008131e2b37434e5865727f8b9aa4aca095887b6f6255483c32261b0f03000000111e2b3744515e6a7784919daaa5998c7f7266594c3f3326190c00000000000000000000000000000000000000000000000000000713202d3946525e6875828f9ba9b3aca196897c6f63554b4035291d1004000000000000000000000000000000000005121f2b3744505b65717e8a949fa9aea39992877f78726e6c666b666d6f72777e859095938c7f8c99a6afa295887c6f6255493c2f2216090000000000000c1925323f4c5865727f8b98a5aea194887b6e6155483b2e221508000000000000000000000713202d3a4653606d798693a0aca6998d8073665a4d4033271a0d00000916232f3c4956626f7c8995a2afa4988b7e7165584b3e3225180b000000000000030d19222c363e474f575f666d72797e82868a8c8e909192929292918f8d8a86817c838f9ca9aa9e93887b6e62544a3f34281c0a00000000000000000006111c26303a444c565e676d747c83898e9298999b9d9e9f9f9f9f9e9d9b999993908b857f786e6960594f473d33291f1208000000000000000000000714212e3a4754616d7a86929facaa9c8f8276685e5246392a2025313b4855626e7b8895a0aca196897d7063554b4035291d100400000000000000000a15202b37434e58616c727f8892989fa3a7a09d99999291909090919298999ea2a9a69f98928b7f726c61564c4132281e130800000000000000000000000c1926333f4c5966727f8c99a8afa499887b6e6255483e332924212020212328333f4a5464717d8a97a4b1a7988b7e7265584b3f3225180c0000000000000000000203101d2a3643505d69768390908376695d5043362a1d10030200000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d2013070000000000000000000000000000000000000000000000000000000007121d2a36424d5764707d8a96a1adaba49f9796969696969696969696969696969696969696969696969696969fa2a9aea2988b7f7265594f4332281e130800000000000000000000000000000000000000000000000b13202d3a4653606d7985929eaba49a8c8073655b5044372b1f1207000000000000000000000000000000000000000815212e3b47535f6a7784919daaac9c8f83766a5f53443a301f160c0000000000000000000000000000000000000000000000020f1a26313c4754616e7b87939faca7998c807366584e43372b1f1306000000111e2b3744515e6a7784919daaa5998c7f7266594c3f3326190c00000000000000000000000000000000000000000000000000000714212e3a4754616d7a86929facb9b2a89a8e8174675d5145382c1f140800000000000000000000000000000000000613202d394653606c7883909da6b0a79f92877d726d6662605b545c6062656c717a8390969285929facafa295887c6f6255493c2f2216090000000000000c1925323f4c5865727f8b98a5aea194887b6e6155483b2e221508000000000000000000000713202d3a4653606d798693a0aca6998d8073665a4d4033271a0d00000916232f3c4956626f7c8995a2afa4988b7e7165584b3e3225180b0000000000000007101a232c353e454e545c60676d71767a7d7f828385858686858482807d79757d89949faba69b8f82756a5f5342382e23170b000000000000000000000a141e28323a444c555c606b6f777d8185898c8e90919292929291908f8d8a86837e79726d665f574f473d352b20170d0000000000000000000006131f2b37434e5865727f8b99a3aea2988b7e7164564c41362a18212e3a47535f6a7784919daaa89b8e8174675d5145392c1f14090000000000000000040f1a26313c46505a636d727e868e92999da0a8aba39f9e9d9c9d9e9fa2aaaaa29f9b948f867e726d62594f443a3020160c0200000000000000000000020f1c2935424f5c6875828f9ba8ac9f9386796c605346392d20181413141418222d3c4956626f7c8995a2afa79a8e8174675b4e4134281b0e01000000000000050a0f12101d2a3643505d69768390908376695d5043362a1d10120f0a050000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000000000305101d2a3643505d69768390908376695d5043362a1d1005030000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d20130700000000000000000000000000000000000000000000000000000000000e1a26313b4653606d7984919eabb5afaca3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3abadb3ac9f92867a6d6054473d3221160c010000000000000000000000000000000000000000000005111d2a36414c5664707d8a97a1adac9e9184786c605346392f24180c000000000000000000000000000000000000000916222f3c4955626f7c8896a0aca49a8b7e7265574e4232281e0d040000000000000000000000000000000000000000000000000a15202d3a46525e697683909da9aa9e9184776a5f54473b2e221506000000111e2b3744515e6a7784919daaa5998c7f7266594c3f3326190c0000000000000000000000000000000000000000000000000006131f2b37434e5865727f8c99a3aeb7b8ab9f9285796d6053473b3025190e02000000000000000000000000000000030f1c28333f4a5463707c8995a0acab9f958b7f726b605c5453504a5153555a61686e7a8491989298a2aeafa295887c6f6255493c2f2216090000000000000c1925323f4c5865727f8b98a5aea194887b6e6155483b2e221508000000000000000000000713202d3a4653606d798693a0aca6998d8073665a4d4033271a0600000916232f3c4956626f7c8995a2afa4988b7e7165584b3e3225180b000000000000000008111a232c333c424a50555c6064676d707375767878797978777673716d7883909da6ac9e93887c6f62584e4330261c110600000000000000000000020c162029323a434b515960636b7075797c7f82838485868685858382807d7a76726d67605c544d453d352b23190e05000000000000000000000815222e3b47545f6a7783909dabac9f92867a6d6054473b3025191e2b37424e576673808c99a8ab9f9285796d6053473b3025190e0200000000000000000a15202a343e48515b636c717b81878c919597999c9d9e9e9f9f9f9e9d9b9998928e89827b716c625b51473e32281e0e04000000000000000000000003101d2a3643505d697683909ca9ab9e928578665b5044382b1f120707070715222e3b4855616e7b8894a1aea89b8f8275685c4f4235291c0f0200000000010910161b1e20202a3643505d69768390908376695d5043362a20201e1b16100901000000000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000000000000060b0f12131d2a3643505d69768390908376695d5043362a1d13120f0b06000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d201307000000000000000000000000000000000000000000000000000000000009141f2c3844505c6673808c99a3afbbb9b1acaa9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9fa7a9afb8bab1a79b8e8174685d5245392c20130400000000000000000000000000000000000000000000000713202d3946525e6875828f9ba9b3aca196897c6f63554b4035291d1004000000000000000000000000000000000006131f2b37434e586673808d99a8ac9f93877b6e6154473c3121160c0000000000000000000000000000000000000000000000000005111e2a36424d5765727f8c98a9aca096887c6f6255493c2d22170b000000111e2b3744515e6a7784919daaa5998c7f7266594c3f3326190c000000000000000000000000000000000000000000000000000815222e3b4754606a7783909dabacababaea2988a7e7164564c41362a1e110500000000000000000000000000000006121f2b3844505b6674818e9ba7b1a99d9083786c6059504a46444044464850565e68707d89939fa2aab4afa295887c6f6255493c2f2216090000000000000c1925323f4c5865727f8b98a5aea194887b6e6155483b2e221508000000000000000000000713202d3a4653606d798693a0aca79a8d8174675a4e412d22170b00000916232f3c4956626f7c8995a2afa4988b7e7165584b3e3225180b00000000000000000008111a212a30383f444b5153555d606366686a6b6c6c6c6b6b696668717e8b95a0aca49a8f82756a5f54463c311e140a000000000000000000000000050e172029313940454f54596063676d70727576787879797878777573706d6865605d55504a423c332b231911070000000000000000000004101c2834404b55626f7c8895a0aca99b8e8175675d514539291e141a26313c4955626f7c8896a0aca2988a7e7164564d42362a1e11050000000000000000030e18222d363f49515a61696e747b8084888b8d8f90919292929291908e8c8985817c766e69615a51493f352c20160c00000000000000000000000004111e2b3744515e6a7784919daaab9e9184786b554b4034281c100400000814212e3b4754616e7a8794a1ada99c908376695d5043362a1d1003000000010a131b21272b2d2d2d3643505d69768390908376695d5043362d2d2d2b27211b130a010000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000020a11171b1f202a2d3643505d69768390908376695d5043362d2a201f1b17110a0200000000000000000000000000101d2a3643505d69768390908376695d5043362a1d10000000000000000000000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d201307000000000000000000000000000000000000000000000000000000000003101c28343f4a54616e7b87929facb9b1a7a0939393939393939393939393939393939393939393939b9ea5afb8aca095897c6f63564c4135291d110400000000000000000000000000000000000000000000000714212e3a4754616d7a86929facb9b2a89a8e8174675d5145382c1f140800000000000000000000000000000000000815222e3b4754606a7784919eaaa99c908376685e5246392d20140400000000000000000000000000000000000000000000000000020e1a25303b4855616e7b8896a1ada8998c7f7366544a3f33281c0f030000111e2b3744515e6a7784919daaa5998c7f7266594c3f3326190c00000000000000000000000000000000000000000000000004101c2834404b55626f7c8895a0a8a19e9fa2aa9c8f8275685e5246392d20150a0000000000000000000000000000000613202d394653606c7985929eabada1978a7d70655b50443f393834383a3e444c56606b75828f9ba8b1bcafa295887c6f6255493c2f2216090000000000000c1925323f4c5865727f8b98a5aea194887b6e6155483b2e221508000000000000000000000713202d3a4653606d798693a0aca89b8e827568544a3f33281c0f03000916232f3c4956626f7c8995a2afa4988b7e7165584b3e3225180b000000000000000000030e1a242f3841474c4e4c474c515457595b5d5e5f5f5f5f5e59616d7a85929ea7a89f93877c6f62584e43342a200c0200000000000000000000000000050e171f272f343d43484f54555c606366686a6b6c6c6c6c6b6a686664615e5653514b443f38302a21191108000000000000000000000006131f2c3845515c6774808d9aa7ada1978a7d7063554b413529170d15212e3b47535f6a7784919eaaaa9c8f8276695e52463a2d20150a00000000000000000006101b242e373f4850575e61696e73777b7e80828484858686858583827f7d79756f6b625f5750483f372d231a0e0400000000000000000000000004111e2b3744515e6a7784919daaab9f928578675c5145382c1f130f0b0c1015222f3b4855626e7b8895a1aea99c8f8376695c504336291d100300000009131c252c33373939393943505d69768390908376695d50433939393937332c251c13090000000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000000020b141b22272b2d37393943505d69768390908376695d50433939372d2b27221b140b0200000000000000000000000811192a3643505d69768390908376695d5043362a1911080000000000000000000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d2013070000000000000000000000000000000000000000000000000000000000000c17232e3846525e6975828f9ca8b2aca095898686868686868686868686868686868686868686868e939ea9b4aa9d9084776b6054443a2f24190d010000000000000000000000000000000000000000000006131f2b37434e5865727f8c99a3aeb7b8ab9f9285796d6053473b3025190e02000000000000000000000000000000000916222f3c4955626f7c8896a0aca8988c7f7265564d41362a1e110500000000000000000000000000000000000000000000000000000914212d3a46535f697884919eaba99c8f8276665b5044382b1f12060000111e2b3744515e6a7784919daaa5998c7f7266594c3f3326190c00000000000000000000000000000000000000000000000006131f2c3845515c6774808d9aa7a196919298a29f92867a6e6154473c31261b0f0000000000000000000000000000000916222f3c4955626f7c8897a1adab9e9285796d6053493f342e2b282c2d323b444f59626f7c8995a0acb8afa295887c6f6255493c2f2216090000000000000c1925323f4c5865727f8b98a5aea194887b6e6155483b2e221508000000000000000000000713202d3a4653606d798693a0aca99c8f8376665b5044382b1f120700091623303c4956636f7c8996a2afa4988b7e7165584b3e3225180b00000000000000000008141f2b36414a52585a5954524c474a4c4f50525253534c56616b74818e97a1ada1968d81746a5f54463c3222180e000000000000000000000000000000050d151d232932383d44484b515356595b5d5e5f5f5f5a61646c6c6c6c66635c524739342e261e180f080000000000000000000000000713202d3a4653606d7985929eabab9e9285796d6053463a2f241807131f2b37434e586773808d9aa8ac9f93877b6e6154473c32261b0f0000000000000000000009121c252e363e454d52575f62666a6e71737577787879797978777573706d67636059534d453e362d251b11080000000000000000000000000003101d2a3643505d697683909ca9aea29886796d6053463a2f241f1c17181c1f262f3d495663707c8996a3afa89b8f8275685c4f4235291c0f02000005101b252e373e434646464646505d69768390908376695d504646464646433e372e251b100500000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000000000a141d262d33373943464646505d69768390908376695d50464646433937332d261d140a0000000000000000000009111a232b3443505d69768390908376695d5043342b231a110900000000000000000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d20130700000000000000000000000000000000000000000000000000000000000006111c2a36424d5763707d8a96a1acaa9d9083797979797979797979797979797979797979797979818e9ba7aea2988b7f7265594f4332281e130800000000000000000000000000000000000000000000000815222e3b4754606a7783909dabacababaea2988a7e7164564c41362a1e110500000000000000000000000000000003101c28343f4a546673808c99a8ada196887b6e6155483b3025190e02000000000000000000000000000000000000000000000000000005121e2a36424d576875828f9ba8ab9f9285796c605346392d2013060000111e2b3744515e6a7784919daaa5998c7f7266594c3f3326190c0000000000000000000000000000000000000000000000000713202d3a4653606d7985929fab9e918485929fa3998c7f7265584e43372b1c110600000000000000000000000000000c1926323f4c5965727f8c98a9b3a89b8e8175665c5041382d231f1c1f2029323d4854606a7784919daab7afa295887c6f6255493c2f2216090000000000000c1925323f4c5865727f8b98a5aea194887b6e6155483b2e221508000000000000000000000713202d3a4653606d798693a0acab9f9285796c605346392e23180d060a1723303d4a5663707d8996a3b0a4978b7e7164584b3e3125180b0000000000000000000b1724303c47525c646766615e56544e46454045453f49535d68707d8a939da9a59e91847a6d60584e43342a200f0600000000000000000000000000000000030b121821272c323839404546494c4f50514a505b636c7079797979736e63574b3f32231c150c0600000000000000000000000005111e2a36424d5664717d8a97a2ada89a8d8174665c514438281d13070f1b26323c4956626f7c8996a1ada4998c7f7265584e43372b1c1106000000000000000000000a131c242c333b42464d5355575f626466696a6b6b6c6c6c6b6a686663605d55544f47423c332d241b13090000000000000000000000000000020e1b2835414e5b6874818e9ba7b3aa96897c6f63554b40352f2b282223282c3038414e5865727f8c98a5b5ab9a8d8073675a4d4034271a0d0100000a16212c3740494f5353535353535d69768390908376695d5353535353534f4940372c21160a00000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000006111b262f383f444650535353535d69768390908376695d535353535046443f382f261b1106000000000000000006121b232c353d464e576976839090837669574e463d352c231b1206000000000000000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d201307000000000000000000000000000000000000000000000000000000000000000e1a25303b4653606c7884919eabaca095897c6f6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6d7a86929facac9f92867a6d6054473d3221160c010000000000000000000000000000000000000000000004101c2834404b55626f7c8895a0a8a19e9fa2aa9c8f8275685e5246392d20150a00000000000000000000000000000006121f2b3844505c6676828f9ca9ab9e918478695f53463a2d1f1408000000000000000000000000000000000000000000000000000000020e1a26313f4c5965727f8c98abaea298887c6f6255483c2f2215090000111e2b3744515e6a7784919daaa5998c7f7266594c3f3326190c000000000000000000000000000000000000000000000005111e2a36424d5764717e8a97a2a99a8d80818e9baa9d9083776a5f5347382e23170b00000000000000000000000000020f1b2835424e5b6875818e9ba8b5ab988b7e7165544a3f2f261b12101217202c38434e586673808d99abb5afa295887c6f6255493c2f2216090000000000000c1925323f4c5865727f8b98a5aea194887b6e6155483b2e221508000000000000000000000713202d3a4653606d798693a0acada297887c6f62544a4034281f1612101724313e4a5764717d8a97a4b0a4978a7e7164574b3e3124180b0000000000000000000d1a2633404c58646e74736e6862605853514b464244505b656d7a84919ea5a79e938a7d70675d51463c3222190e00000000000000000000000000000000000001070c161b21272c2e34383a3d3f42444c545c606d727e868686868073665a4d4033271a0a03000000000000000000000000000714202d3a46525e6975828f9ca9aca096897c6f63544a403428160c010a13202d394653606c7884919eabab9d9084776a5f5347382e23170c00000000000000000000010a121a212930363c4247484e5355585a5c5d5e5f5f5f5f5e5d5b595653514b48433d37312a211b1209010000000000000000000000000000000c1925323f4c5865727f8b98a7b1a6998c8073675d5145403938332d2e34383a4149535f6a76828f9ca9afa4998a7e7164574b3e3124180b0000000f1b27333e49525a5f60606060606069768390908376696060606060605f5a52493e33271b0f00000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000b17222d38414950535d6060606060697683909083766960606060605d53504941382d22170b000000000000020a1117242d363e474f585f69768390908376695f584f473e362d2417110a0200000000000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d2013070000000000000000000000000000000000000000000000000000000000000009141f2b3844505b66727f8c99a3aea79a8d8174675c606060606060606060606060605765717e8b98a2aea79b8e8174685d5245392c201304000000000000000000000000000000000000000000000006131f2c3845515c6774808d9aa7a196919298a29f92867a6e6154473c31261b0f0000000000000000000000000000000713202d3a4653606d7985929faba89b8e827568574d42362a1e0d0200000000000000000000000000000000000000000000000000000000091623303c4956636f7c8999a3aeaa988b7e7265584b3f322518070000111e2b3744515e6a7784919daaa5998c7f7266594c3f3326190c00000000000000000000000000000000000000000000000714202d3a46525e6976828f9ca9a297897d7d8a98a2a095887c6f62544a3f34281c100300000000000000000000000005111d2a36414c566a7784909daaafa499887c6f6255483c2e22140a04060e1b27323d495663707c8999a4afafa295887c6f6255493c2f2216090000000000000c1925323f4c5865727f8b98a5aea194887b6e6155483b2e221508000000000000000000000713202d3a4653606d798693a0acb3a9998c7f73665c51443b3128201f1c1f25323f4c5865727f8b98a5b0a3968a7d7063574a3d3024170a0000000000000000010e1b2734414e5a6774807f7a756f6a64605c55524d505a606c77828f96a1a9a0958e81756b61554c41342a2010070000000000000000000000000000000000000000040a0f161b1d23282c2d343d454d565d666d747f87929892857b6e6154473b2e21140800000000000000000000000000000814212e3b4754616e7b86929facaa9e9184776b605442392e2318040005121f2b3744505b6574808d9aa9aca095887c6f62544a3f34281c10030000000000000000000000080f171f252a31373a3c4247484b4d4f51515253535252504f4c4a4745403938322b2620180f0900000000000000000000000000000000000815222f3b4855626e7b88959fabab9e9185796d605a514b46443f42424045464c525b656e7b87939facac9f93867a6e6154473b2e211408000000121e2b37434f5a646c6c6c6c6c6c6c6c7683909083766c6c6c6c6c6c6c6c645a4f43372b1e1200000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000030f1b27333f49535b606a6c6c6c6c6c6c7683909083766c6c6c6c6c6c6a605b53493f33271b0f0300000000020b141b2227363f485059606a6f7b859191857b6f6a605950483f3627221b140b02000000000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d20130700000000000000000000000000000000000000000000000000000000000000030f1c28333f4a54616e7a86929facab9f9285796d60535353535353535353535353535f697683909caaaca095897c6f63564c4135291d110400000000000000000000000000000000000000000000000713202d3a4653606d7985929fab9e918485929fa3998c7f7265584e43372b1c110600000000000000000000000000000916222f3c4955626f7c8898a2aeab988c7f7265594c3f31261a0e02000000000000000000000000000000000000000000000000000000000714202d3a4753606d7986929faca79b8e8174685b4e412e23180c0000111e2b3744515e6a7784919daaa5998c7f7266594c3f3326190c00000000000000000000000000000000000000000000000814212e3b4754616e7b87939fab9e9285797985929fa79a8d8073665c5044382b1f13070000000000000000000000000713202d3946525e687985929facac9f93867a6d6053473a2d20140700000a14202d3a4753606d7a86939facafa295887c6f6255493c2f2216090000000000000c1925323f4c5865727f8b98a5aea194887b6e6155483b2e221508000000000000000000000713202d3a4653606d798693a0acb8ab9e9184796d60574d433a322d2c282b2d36414c566774808d9aa7b3aa95897c6f6256493c2f2316090000000000000000020f1c2935424f5c6875828c86817c76716d67615e5759616c727f8c949ea9a2979083796d60594f433a2f22190e0000000000000000000000000000000000000000000000040b0c151d2328363e464f575f686d78818c939993877d70695e52463a2d2014070000000000000000000000000007131f2c38434f5966727f8c99a3afa7998c807366594f4330271c120700030f1b27333f495363707c8997a1ada79a8d8074665c5044382c1f1206000000000000000000000000050d141a1f262b2e31373a3b3e4042444545464646454442403d3a38352f2c27211a150e060000000000000000000000000000000000000814212e3a47535f6a7683909da6ada1978c80736c605c5553504a4e4f4b5153565d616c77828f99a4afa69c8f8276685e5246392d20140700000013202d3946535f6c767979797979797979839090837979797979797979766c5f5346392d201300000000000000000000101d2a3643505d69768390908376695d5043362a1d0a0000000000000000000005121f2b3744505b656c76797979797979798390908379797979797979766c655b5044372b1f1205000000000a141d262d334048505a616b6f7c8591979791857c6f6b615a504840332d261d140a000000000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d20130700000000000000000000000000000000000000000000000000000000000000000b17222d3846525e6875828e9ba8ada2978a7e7164574d42464646464646463f4a54626e7b88949fabaa9d9084776b6054443a2f24190d010000000000000000000000000000000000000000000005111e2a36424d5764717e8a97a2a99a8d80818e9baa9d9083776a5f5347382e23170b00000000000000000000000000000c1825323f4b5865727e8b98aaaea399897c6f6356493c30231609000000000000000000000000000000000000000000000000000000000006131f2c3845515c677784919eaaa99c90837669554b4034281c100400111e2b3744515e6a7784919daaa5998c7f7266594c3f3326190c0000000000000000000000000000000000000000000007131f2c38434f5966727f8c99a4aa9b8e817475818e9baa9e9184796d6053463a2f24180d0100000000000000000000000714212e3a4754616d7a8798a2aeab9e918478675c5145382c1f1306000006131f2c3945515d677784919eaaafa295887c6f6255493c2f2216090000000000000c1925323f4c5865727f8b98a5aea194887b6e6155483b2e221508000000000000000000000713202d3a4653606d798693a0acb9ada1968b7e71695e554c443e3a383437393e46525e687683909ca9aea298877a6e6154473b2e2114080000000000000000020f1c2935424f5c6875828f928e89837e79736e6963606b707e88939fa6a39992857b6e675d51473e31281e10070000000000000000000000000000000000000000000000060e161e272e344048505960696e7a828e939f948c7f736b60574d42362a1e1105000000000000000000000000000915222f3b4854606b7784919d9f9f9f95887b6e6255483d3222150b0000000b17222d3a4653606d7985929e9f9f9e9185796d6053463a2d2013070000000000000000000000000002090e151a1e21262b2e2f31333637383839393938373533302d2c29241d1b160e09030000000000000000000000000000000000000006121e2b37424e5764707d8a949fa9a99c928b7e746d6762605b545b5b555c6062686d75808d949eaba99e94897d7063564c41362a1e110500000013202d394653606c798686868686868686909494908686868686868686796c605346392d2013000000000000000000020b142a3643505d69768390908376695d504331261a0b020000000000000000000613202d394653606c798386868686868686909494908686868686868683796c605346392d20130600000006111b262f383f44515a626c707d8591938e8e9391857d706c625a51443f382f261b11060000000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d201307000000000000000000000000000000000000000000000000000000000000000006111c2a36414c5663707d8996a0aca99c8f8276695e5246382d393939393844505c6673808d99a6aea2988b7f7265594f4332281e130800000000000000000000000000000000000000000000000714202d3a46525e6976828f9ca9a297897d7d8a98a2a095887c6f62544a3f34281c1003000000000000000000000000020e1b2835414e5b6874818e9ba7ac9f9286796d6053473a2d201407000000000000000000000000000000000000000000000000000000000004101c2934404b556976828f9ca9ab9e918478675c5145382c1f130600111e2b3744515e6a7784919daaa5998c7f7266594c3f3326190c000000000000000000000000000000000000000000000915222f3b4854606b7784919eaba2988a7d70707d8a98a2a197897d7063554b4135291d110400000000000000000000000915222f3c4855626f7b8895aab4a99d9083766a554b4034291c1004000004101d2935404b556976828f9ca9afa295887c6f6255493c2f2216090000000000000c1925323f4c5865727f8b98a5aea194887b6e6155483b2e221508000000000000000000000713202d3a4653606d798693a0acb1a8a09d92857b6e675e56504846443f4446484f58616d7a86929facab9f928578695e52463a2d2014070000000000000000020f1c2935424f5c6875828f999b95908b85807b756f6b6f7d86929aa4a49f92877d70695f554b41352c1f160c0000000000000000000000000000000000000000000000070f18202830394045525a616b6f7b838f949d968f82776c60594f453b30251a0e0200000000000000000000000000091623303c4956636f7c8996939393939083776a5f53473a2e21140300000006121f2b3844505c6674818e93939393978a7d7063574a3d3024170a00000000000000000000000000000003090e12151a1e21222527292a2b2c2c2c2c2b2a282623201f1d18120f0a04000000000000000000000000000000000000000000020e1a26313c4955616c76828f97a1aaa49f93888079736f6c6669686869676d6f747a818d929ca6aaa1978f82766b6055443b3025190e0200000013202d394653606c798693939393939393969696969393939393939386796c605346392d20130000000000000000000a141d2b37434e586976839090837669584e43372b1d140a00000000000000000005121f2b3744505b656f7c899393939393939c9f9f9c939393939393897c6f655b5044372b1f12050000000b17222d384149505b636c717e8692928c81818c9292867e716c635b504941382d22170b0000000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d2013070000000000000000000000000000000000000000000000000000000000000000000d1925303b4854606b7784919daaac9f93877b6e6153493f33272d2d2d3a4653606d7984919eabac9f92867a6d6054473d3221160c0100000000000000000000000000000000000000000000000814212e3b4754616e7b87939fab9e9285797985929fa79a8d8073665c5044382b1f130700000000000000000000000004101c2934404b55697683909ca9aa9e918477675c5145382c1f13060000000000000000000000000000000000000000000000000000000000000c18232f414e5b6774818e9aa7ac9f9386796d6053463a2d20130700111e2b3744515e6a7784919daaa5998c7f7266594c3f3326190c00000000000000000000000000000000000000000004101d2935404b55636f7c8996a0ab9f9285796d6d7985929fa99b8e8175675d5145392c20140900000000000000000000000a1623303d495663707c8996a3afa89c8f8275695c4f422f23180c000000000c18242f414e5a6774818d9aa7afa295887c6f6255493c2f2216090000000000000c1925323f4c5865727f8b98a5aea194887b6e6155483b2e221508000000000000000000000713202d3a4653606d798693a0acaca09591959082796d68615a5553504a50535459616a73808c99a3afa99c8f827669564d42362a1e11050000000000000000000d1a2633404d59667380878c91979c97928c86827c777c859298a2a49a938b7f726b60574d433a2f231a0d0400000000000000000000000000000000000000000000071019212a323a434b515b636c717d8591959f9991847a6d655b50473d33291f140900000000000000000000000000000e1b2834414e5b677481868686868686867f7265574e42372b1e120600000003101c28343f4a5463707d868686868686868175685b4f4235281c0f00000000000000000000000000000000000206090e121415181a1c1e1e1f20201f1f1d1c19171413100c07010000000000000000000000000000000000000000000000000915202d3944505a616e7b859298a1a9a49a938d85807b79767575757677797c81858e939ca4a9a19892857b6e61594f4432291e14080000000013202d394653606c798693928d8989898989898989898989898d929386796c605346392d2013000000000000000006111b262f3847535f6a7683909083766a5f53473d2f261b11060000000000000000030f1b27333f4953606b75828f99a39f9f9fa9ababa99f9f9fa3998f82756b6053493f33271b0f030000030f1b27333f49535b606d737e8792928b807474808b9292877e736d605b53493f33271b0f0300000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d20130700000000000000000000000000000000000000000000000000000000000000000008141e2c38444f5965727f8c98a3aea4998c7f73655b5044372b1f2a36414c5663707d8a97a1ada79b8e8174685d5245392c201304000000000000000000000000000000000000000000000007131f2c38434f5966727f8c99a4aa9b8e817475818e9baa9e9184796d6053463a2f24180d01000000000000000000000006131f2c3845515c677885919eaba99c8f827669554b4034291c1004000000000000000000000000000000000000000000000000000000000000071926333f4c5966727f8c99a5afa49a887b6e6255483b2f22150800111e2b3744515e6a7784919daaa5998c7f7266594c3f3326190c0000000000000000000000000000000000000000000613202c3945515d6774818e9aa8aa9b8e8175676775818e9baa9f92867a6d6054473b31251a0e02000000000000000000000a1724313d4a5764707d8a97a3b0a89b8e8175685b4e4235281b0700000000071a2633404d596673808c99a6afa295887c6f6255493c2f2216090000000000000c1925323f4c5865727f8b98a5aea194887b6e6155483b2e221508080400000000000000000713202d3a4653606d798693a0acaa9d9184919590837a716c6662605c545b6061646b707c87929fabb0a6998c7f7266594c3f3025190e020000000000000000000c1926323f4b57636e737b80858a90949a99928e8984869297a2a49a93887f726d62594f453b3128221c140b020000000000000000000000000000000000000000040f19222b333c444c555c606d737e869297a09f92877c6f685d53493f352b20170d0200000000000000000000000000000d1a2733404c59646f7479797979797979726d6256453c31261a0e02000000000b17232e384855616b7079797979797979756f65594d4034271b0e0000000000000000000000000000000000000000020608080b0d0f11121213131312110f0d0a07060400000000000000000000000000000000000000000000000000000003101c28333e46525e696f7c8692979fa6a49f97918c888583828182828386898d92989ea5a69f9792867c6f695e52473d3320170d020000000013202d394653606c7986938d807d7d7d7d7d7d7d7d7d7d7d7d808d9386796c605346392d201300000000000000000b17222d38414f59626f7c879292877c6f62594f41382d22170b0000000000000000000b17222d38414f59616e7b86929fa9b3acb6b7b7b6acb3a99f92867b6e61594f41382d22170b00000005121f2b3744505b656c747f8b9292877e736d6d737e8792928b7f746c655b5044372b1f120500000b1825323e4b5865717e8b98a4aca295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d20130700000000000000000000000000000000000000000000000000000000000000000002101c27333d4754616d7a86929facab9e9184786c6053463a2f242d3946525e6875828f9ba9aca095897c6f63564c4135291d110400000000000000000000000000000000000000000000000915222f3b4854606b7784919eaba2988a7d70707d8a98a2a197897d7063554b4135291d110400000000000000000000000714202d3a4753606d7a86939faca79a8e8174675b4e412f23180c000000000000000000000000000000000000000000000000000000000000000b1824313e4b5764717e8a97a4b6ac96897d7063564a3d3023170a00111e2b3744515e6a7784919daaa5998c7f7266594c3f3326190c0000000000000000000000000000000000000000000714202d3a4753606d7a85929faca3988a7d716464707d8a98a2a2988b7e7165574d42362a1e1205000000000000000000000b1724313e4a5764717d8a97a4b0a79a8d8174675a4e4134271b0e010000000c1926323f4c5965727f8c98a5afa295887c6f6255493c2f2216090000000000050c1925323f4c5865727f8b98a5aea194887b6e6155483b2e22171614100b050000000000000713202d3a4653606d798693a0aca4978a7e85929590847e77726f6d666b656c6e71767d859299a3aeac9f94887b6e6155483b2e221509000000000000000000000a17232f3b47525c63696e73797e83888d92989b95909298a2a99f93887f726d625b514c47433c332d261d140a00000000000000000000000000000000000000000a16212b343d454d565e676d757f8a9298a19e938b7f726a60564c41382d23190e050000000000000000000000000000000b1824303c48535d64676c6c6c6c6c6c6c65625b5146332a201509000000000006111c2c38444f5961636c6c6c6c6c6c6c68655d53483d3125180c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222a36424d57606a6f7c858f949ea1a8a19e999892908f8e8e8f9092999a9fa2a8a09e948f857c6f6a60564d42352c210e05000000000013202d394653606c7986938b7e7270707070707070707070727e8b9386796c605346392d201300000000000000030f1b27333f4953606b75828f99998f82756b6053493f33271d1207000000000000000006111b262f3d46535f6974808d97a2adbac3c4c4c3b9ada2978d8073695f53473d2f261b11060000000613202d394653606c77808c9192867d716c63636c717d8692918c80776c605346392d20130600000b1825323e4b5865717e8b989f9f9f95897c6f6256493c2f23160900000d1a2733404d5a6673808d999f9f9f9386796d6053463a2d201307000000000000000000000000000000000000000000000000000000000000000000000b16202d3946525d6875818e9ba7aca096897c7063554b4135292e3a4754616d7a86929facaa9d9084776b6054443a2f24190d010000000000000000000000000000000000000000000004101d2935404b55636f7c8996a0ab9f9285796d6d7985929fa99b8e8175675d5145392c20140900000000000000000000000815222f3b4855626e7b889aa4afa5998c7f7266594c3f3326190700000000000000000000000000000000000000000000000000000000000000091623303c4956636f7c8996a2afa4978b7e7164584b3e3125180b00111e2b3744515e6a7784919daaa5998c7f7266594c3f3326190c000000000000000000000000000000000000000005121e2a36424d5764717e8b98a2ac9f92867a6d60606d7985929faa9c8f8376695e53463a2d21160a000000000000000000000b1824313e4b5764717e8a97a4b1a79a8d8174675a4e4134271b0e010000000c1825323f4b5865727e8b98a5afa295887c6f6255493c2f221609000000000810171c25323f4c5865727f8b98a5aea194887b6e6155483b2e262423201c17100800000000000713202d3a4653606d798693a0aca4978a7e7e8b9296918a837f7b79787778797b7e828a9297a2abafa49a8f8276695f53473a2d2114080000000000000000000007131f2a35404a52575e61666d71767c81869196a09d9fa2aaa6998c8075706b65605d55534e443f382f261c1106000000000000000000000000000000000000030f1b27323d464e575f686d79818c929fa3a0958e81756d62584e443a2f261b1108000000000000000000000000000000000814202b36414a53595b60606060606060595651493f3521180e03000000000000101c28333e474f5557606060606060605b59534b41372c2014080000000000000000000000000000000000000000000000000406070a0d0f11121313131212100e0c0906060300000000000000000000000000000000000000000000000000050e1a25303b454e58606a6f7b828b91969c9fa3aaa29f9d9c9b9b9c9d9fa3aba39f9b96918a827b6f6a60584e443b30231a0f00000000000013202d394653606c7986938b7e7265636363636363636365727e8b9386796c605346392d2013000000000000010c161f2b3744505b65707d89949e9e94897d70655b5044392e23180c0100000000000000000a141d2b37424d57606d7a85929fa8b2bdc8c8bdb2a89e92857a6d60574d42352b1d140a000000020f1b2835424e5b6875818d9292857c706b625a5a626b707c8592928d8175685b4e4235281b0f02000b1825323e4b5865717e8b9393939393897c6f6256493c2f2316110b0b101a2733404d5a6673808d939393939386796d6053463a2d2013070000000000000000000000000000000000000000000000000000000000000000000005111d2935414c56636f7c8995a0aca89b8e8174675d5145392c37434e5865727f8b99a3aea2988b7f7265594f4332281e130800000000000000000000000000000000000000000000000613202c3945515d6774818e9aa8aa9b8e8175676775818e9baa9f92867a6d6054473b31251a0e02000000000000000000000a1724303d4a5763707d8a96acb6a4978a7e7164574b3e3124180b000000000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8895a2afa5988b7e7265584b3f3225180c00111e2b3744515e6a7784919daaa5998c7f7266594c3f3326190c00000000000000000000000000000000000000000714212d3a46535f6976838f9caaaa9b8f8275675d5d6775828e9baa9f93877b6e6154483d32271b0f000000000000000000000b1825313e4b5864717e8b97a4b1a79a8d8074675a4d4134271a0e010000000b1825323e4b5865717e8b98a4afa295887c6f6255493c2f22160900000008121a22282d323f4c5865727f8b98a5aea194887b6e6155483b333331302d28221a1108000000000713202d3a4653606d798693a0aca4978b7e74818e949e95908c888685848585878b8f949fa2a9aea59f93877c6f62574d42372b1e120600000000000000000000020e19242e3840454d52545c60646a6f747b84919eaba39f9da09f9287827d77726d67625f58504a42382d22170b00000000000000000000000000000000000007131f2c38434e5860696e7a828e939ca4a2989183796d605b51463d32281d140a0000000000000000000000000000000000030f1a252f3841484c4e535353535353534c4a463f372d230f06000000000000000b16212c353e44484a535353535353534f4d4841392f251a0f0400000000000000000000000000000000000000000001070c10131416191c1d1f1f20201f1e1d1b191613120f0b0600000000000000000000000000000000000000000000000009141f29333d464e5860696e767e848a8f9299999b9d9e9f9f9f9f9e9d9b9999928f8a847e766e6960584e463d32291f110800000000000013202d394653606c7986938b7e7265585656565656565865727e8b9386796c605346392d201300000000000008131e2834404b54606c7883909da6a69d9083786c60544b4034281e13080000000000000000020b1a26313c45525d68727f8c96a0acb9c2c7b8aca0968b7f72685d52453b3123190b02000000000b1724313e4a5764717e869293877f746d665d5d666d747f879392867e7064574a3d3124170a00000b1825323e4b5865717e868686868686867c6f6256493c2f23221d16161b202733404d5a66738086868686868686786d6053463a2d20130700000000000000000000000000000000000000000000000000000000000000000000010d1924303a4854606b7783909daaac9f92857a6d6054473c313b4754606a7783909dabac9f92867a6d6054473d3221160c0100000000000000000000000000000000000000000000000714202d3a4753606d7a85929faca3988a7d716464707d8a98a2a2988b7e7165574d42362a1e1205000000000000000000000b1825313e4b5864717e8b97a4afa296897c6f6356493c30231609000000000000000000000000000000000000000000000000000000000000000815222f3b4855626e7b8895a1aea5988c7f7265594c3f3226190c00111e2b3744515e6a7784919daaa5998c7f7266594c3f3326190c00000000000000000000000000000000000000030f1c28333f4a54616e7b87939faca2988a7e7164555564717e8a98a3a49a8c7f7366584e43372b1d12070000000000000000000b1824313e4b5764717e8a97a4b1a79a8d8174675a4e4134271b0e010000000b1825323e4b5865717e8b98a4afa295887c6f6255493c2f221609000005101a242c33393c3f4c5865727f8b98a5aea194887b6e6155484040403d3c39332c231a10050000000713202d3a4653606d798693a0aca5988b7e7278828e939f9d999a939291919298979c9fa6adaba39f938d80736a6054453c31261a0e0200000000000000000000030e18212a31373e434b51575e666c727c849196a1a0999290959b99928f89847f7a746f6a605b544a3f33281c0f0300000000000000000000000000000000000915222e3b4854606a6f7b8490949ea5a49f92867c6e675d51493f342b20160b0200000000000000000000000000000000000008131d262f363c4041464646464646463f3e3a352d251b11000000000000000005101a232c33383c3d4646464646464642403d372f271e13090000000000000000000000000000000000000000040a0f12181c1f202326282a2b2c2c2c2c2b2a282523201f1c17110f0a03000000000000000000000000000000000000000000020d17212b343d464e565e616c71787e82868a8c8f90919292929291908e8c8986827d78716c615e574e463d342b20170d0000000000000013202d394653606c7986938b7e7265584b4a4a4a4a4b5865727e8b9386796c605346392d20130000000000010d19242f3845515c66717e8a959fabab9f958a7e71665c51453a2f24190d02000000000000000009141f2935414c56606d7984919ea6b0bebeb0a69e9184796d60564c41332a1f100700000000000a1623303c4955616c717d8692938c80786d67676d78808c9392867d706c6155493c3023160a00000b1724313d4a56626c71797979797979796f6a6054473b36332e272021272c2f303f4b58636e737979797979797976665c5044382c1f1206000000000000000000000000000000000000000000000000000000000000000000000008131e2c38434f5965727f8b98a2aea2988b7e7165574d4237404b55626f7c8895a0aca79b8e8174685d5245392c201304000000000000000000000000000000000000000000000005121e2a36424d5764717e8b98a2ac9f92867a6d60606d7985929faa9c8f8376695e53463a2d21160a000000000000000000000c1825323f4b5865727e8b98a5afa295887c6f6255493c2f221609000000000000000000000000000000000000000000000000000000000000000815212e3b4854616e7b8794a1aea6998c7f7366594c403326190d00111e2b3744515e6a7784919daaa5998c7f7266594c3f3326190c0000000000000000000000000000000000000006121f2b3844505b6673808c9aa4ac9f92867a6d605454606d7a86929fac9d9184776a605447392e23180c0000000000000000000b1724313e4a5764717d8a97a4b0a79a8d8174675a4e4134271b0e010000000c1825323f4b5865727e8b98a5afa295887c6f6255493c2f22160900000c17222c363e45494a4d5865727f8b98a5aea194887b6e61554d4d4d4d4a49443e362c22170b0000000713202d3a4653606d798693a0aca5988b7f726d78818b92989fa29f9e9e9e9fa3aaa9a9aaa29f99928b81786d60584e43332a1f1509000000000000000000000009151f2a333c42474f555c60696e787f879196a09f95918684898e92989b95918b85817c766c665b5044382b1f120600000000000000000000000000000000000916232f3c4956626f7c85919693939393928a7e716a5f554b40372d22190e0400000000000000000000000000000000000000010b141d252b3033343939393939393932312e29231b130900000000000000000008111a21282c2f30393939393939393534312c251e150c02000000000000000000000000000000000000040a0f161b1d23292c2d303335373839393939383635322f2d2b28221c1b150e09030000000000000000000000000000000000000000050f19222b343c444d525a61666d71757a7d80828385858686858483827f7d7a75716d66615a524d453d342b22190e050000000000000013202d394653606c7986938b7e7265584b3f3d3d3f4b5865727e8b9386796c605346392d2013000000000004111d2935414c56606d7984919ea7b1b1a79e9184796d60564c4135291f14090000000000000000030d1924303a44515c66707d8a949facb6b6ac9f948a7d70665c51443a3021180e0000000000000814212d3944505a616b707c8591928d82796e6e79828e9291857c706b615a5044392d20140800000915212e3a45505a62656c6c6c6c6c6c6c6260584e4344433f3932292b32383b3d4647525c63666c6c6c6c6c6c6c6c5c544a3f34281c10030000000000000000000000000000000000000000000000000000000000000000000000020f1b27323d4754606d7a86929facaa9c908376695f53473845515c6774808d9aa7aca095897c6f63564c4135291d110400000000000000000000000000000000000000000000000714212d3a46535f6976838f9caaaa9b8f8275675d5d6775828e9baa9f93877b6e6154483d32271b0f000000000000000000000c1926323f4c5965727f8c98a5aea195887b6e6255483b2f221508000000000000000000000000000000000000000000000000000000000000000714212e3a4754616d7a8794a0ada6998d8073665a4d4033271a0d00111e2b3744515e6a7784919daaa5998c7f7266594c3f3326190c000000000000000000000000000000000000000613202d394653606c7884919eaca99b8e8175675d51515d6775828f9caba096897c6f62544b4034281c100400000000000000000a1724303d4a5763707d8a96a3b0a89b8e8175685b4e4235281b07000000000c1926323f4c5965727f8c98a5afa295887c6f6255493c2f2216090005111c28333e48505557595965727f8b98a5aea194887b6e615959595959575550483e33281c100400000713202d3a4653606d798693a0aca5998c7f72666d757f868d92989a9c9e9e9f9f9e9d9c9998928d867f746d665c50463d3221180e0300000000000000000000020e1a26313c454d535961676d727b828c92999f99928d837c777c81868c91969c98928d8882786c605346392d20130600000000000000000000000000000000000d1a2633404d59667380868686868686868680746c61574e43392f251b1007000000000000000000000000000000000000000000020b131a202427282d2d2d2d2d2d2d2625221e18110901000000000000000000000810161c2023242d2d2d2d2d2d2d282725201a130c03000000000000000000000000000000000000060b151b21272c2f34383a3d40424445464646454543413f3c3938332d2b26201a150b060000000000000000000000000000000000000000071019222b323b424650545c6064676d70737577787979797878767573706d6764605c545046423b332b22191007000000000000000013202d394653606c7986938b7e7265584b3f3d3d3f4b5865727e8b9386796c605346392d201300000000040e18222c3945525d68727f8b96a0acb9b9aca0968b7f72685d52453b30251a0e04000000000000000008131e2834404a54616c7682909aa4afafa49a9082766c61544a4032281e0f0600000000000004101c28333e485059606a6f7b8490948f837a7a838f9490847b6f6a605950483e33281c1004000005111d29343f485056586060606060606056544e5353514f4a443b32353d44484953535352585a606060606060605f504a42382e23170c000000000000000000000000000000000000000000000000000000000000000000000000000a16202c3945515d6774818e9aa7ab9f94887b6e62544a3f4653606d7985929fabaa9d9084776b6054443a3024190d0100000000000000000000000000000000000000000000030f1c28333f4a54616e7b87939faca2988a7e7164555564717e8a98a3a49a8c7f7366584e43372b1d12070000000000000000000d192633404c5966737f8c99a6aea194877b6e6154483b2e211508000000000000000000000000000000000000000000000000000000000000000714202d3a4753606d7a8693a0ada79a8d8074675a4d4134271a0e00111e2b3744515e6a7784919daaa5998c7f7266594c3f3326190c00000000000000000000000000000000000004111d2935414c5663707d8996a1aca1978a7d7063554b4b5564717e8b99a3a89a8d8174665c5145382c1f130800000000000000000916232f3c4956626f7c8995acb6a89c8f8275695c4f422e23180c000000000d1a2633404d596673808c99a6afa295887c6f6255493c2f221609000814212d3945505a6164666666727f8b98a5aea194887b6e66666666666664615a5044392d20140800000713202d3a4653606d798693a0aca6998c7f7366606d727b80858a8d8f9192929291908f8c8985807b726d605c544a3f342b200f06000000000000000000000006121e2b37424d575f616b70797f868f949f9d948f8780796f6a6f747a7f84898f93999a9486796d6053463a2d20130700000000000000000000000000000000000c1925323f4b57636d737979797979797979746e645a50453c31281d1209000000000000000000000000000000000000000000000001080f14181a1b20202020202020191816120d0700000000000000000000000000050b10141617202020202020201c1b18140f09020000000000000000000000000000000000020a111720262b323839404547494c4f50525253535251504e4c4946443f3837312b262017110a0200000000000000000000000000000000000000071019202930363e424a5053555d606366686a6b6c6c6c6c6b6a686663605d5553504a423e3630292119100700000000000000000013202d394653606c7986938b7e7265584b4a4a4a4a4b5865727e8b9386796c605346392d2013000000000a15202a36424d57606d7a85929ea8b2bdbdb2a89e92857a6d60574d42362a20150a0000000000000000020c18232e3942505a626f7c87939faaaa9f93877c6f625a5042392e20160c00000000000000000b17222c363e474f585f696e7a839094908484909490837a6e695f584f473e362c22170b000000010c18222d363f454a4b5353534c525f6060606060605d5b554d44393d474f54566060606060605a58535353535353443f3830261c11060000000000000000000000000000000000000000000000000000000000000000000000000004111d2935414c55626f7c88959faba6998d8073665c50444d5764717e8a97a2ada2988b7f7265594f4332281e1308000000000000000000000000000000000000000000000006121f2b3844505b6673808c9aa4ac9f92867a6d605454606d7a86929fac9d9184776a605447392e23180c0000000000000000000d1a2734404d5a6773808d9aa6ada094877a6d6154473a2e211407000000000000000000000000000000000000000000000000000000000000000714202d3a4753606d7a8693a0ada79a8d8074675a4d4134271a0e00111e2b3744515e6a7784919daaa5998c7f7266594c3f3326190c0000000000000000000000000000000000000613202c3945525d6875818e9ba8ab9e9285796d6053464754616d7a86929fab9e9285796d6053463a3025190d01000000000000000815222e3b4855616e7b889aa4afa99d9083766a554b4034281c10040000010e1b2834414e5b6774818e9aa7afa295887c6f6255493c2f221609000a1723303c4955616c71737373737f8b98a5aea194887b73737373737373706c6155493c3023160a00000713202d3a4653606d798693a0aca6998d8073665b62686e74797d808284858685858482807d7a746e69625b504a42382e22190f0000000000000000000000000814212d3a47535f696e757d848c92989395908a827c736d676062686d72787d82878d929786796d6053463a2d20130700000000000000000000000000000000000a16232f3b47525b63666c6c6c6c6c6c6c6c67645c52483e332a1f160c000000000000000000000000000000000000000000000000000003080b0d0e131313131313130c0b090601000000000000000000000000000000000407090a131313131313130f0e0c0804000000000000000000000000000000000000040b141c222832373d43484b515356595b5d5e5f5f5f5f5e5d5b585653504a47433c373127221b140b0300000000000000000000000000000000000000070e171f252a30383f44464c515457595c5d5e5f5f5f5f5e5d5b595653514b46443f38302a251f170f070000000000000000000013202d394653606c7986938b7e7265585757575757575865727e8b9386796c605346392d2013000000020b1b26313a46525e6973808d97a1adbac4c4b9ada1978d8073695e52463c31261b0b02000000000000000007121c27303e4754606a75818e98a2a2988e81756a6054483e30271c0e04000000000000000005101a242c353d464e575f686e7a828f949191948f827a6e685f574e463d352c241a10050000000006111b242d343a3d3e46414c565e6c6c6c6c6c6c6c6a675f554a3f444f5960636c6c6c6c6c6c67645c534846464638342e261e150a0000000000000000000000000000000000000000000000000000000000000000000000000000010d19242f3a47545f6a7783909da9ab9e9184796d605346525e6976828f9ca9ac9f92867a6d6054473d3221160c0200000000000000000000000000000000000000000000000613202d394653606c7884919eaca99b8e8175675d51515d6775828f9caba096897c6f62544b4034281c100400000000000000000e1a2734414d5a6774808d9aa7ada093867a6d6053473a2d201407000000000000000000000000000000000000000000000000000000000000000714212e3a4754616d7a8794a0ada6998d8073665a4d4033271a0d00111e2b3744515e6a7784919daaa5998c7f7266594c3f3326190c0000000000000000000000000000000000000714212d3a4754606d7a86929faca89a8d8174665c514446525d6876828f9caba2978a7d7064564c4135291d1105000000000000000714202d3a4753606d7a86939facab9e918478675c5145382c1f1306000004111d2935414c566976828f9ca9afa295887c6f6255493c2f221609000b1724313e4a5764717e80808080828f9ca8b3a79a8d80808080808080807e7064574a3d3124170a00000713202d3a4653606d798693a0aca6998d8073665a565e61666d7073757778797978777673706d67615e5751443f3830261c10070000000000000000000000000815222e3b4855616e7b8286868686868686837d766f6a605c55565d61656c70757b80858a867a6d6053473a2d201407000000000000000000000000000000000007131e2a35404952575960606060606060605a58524a40362c21180d040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d161d262d333c43474f54555c606366686a6b6c6c6c6c6b69686562605b54534e47423c332d261d150d0300000000000000000000000000000000000000050d14191e262e34383a4145474a4d4f50525253535251504f4c4a4745403a38342e261e1a140d05000000000000000000000013202d394653606c7986938b7e7265646464646464646465727e8b9386796c605346392d20130000000a141d2b37434e58616e7b86929fa9b3becccabeb3a99f92867b6e61584e43372b1d140a0000000000000000000b151e2b37434e58616e7b86929f9f92867b6e61584e43362c1e150b0000000000000000000008121a232b343c454d565e686d79828e93938e82796d685e564d453c342b231a120800000000000009121b22292e31323946525e68767979797979797771675b4f434854606b70797979797979746e64584c4039392c28231c150c0300000000000000000000000000000000000000000000000000000000000000000000000000000008131e2b37434e5865717e8b97a2ada1968a7d7063564c54616e7b87939faca79b8e8174685d5245392c201304000000000000000000000000000000000000000000000004111d2935414c5663707d8996a1aca1978a7d7063554b4b5564717e8b99a3a89a8d8174665c5145382c1f130800000000000000000e1a2734414d5a6774808d9aa7ada093867a6d6053473a2d201407000000000000000000000000000000000000000000000000000000000000000815212e3b4854616e7b8794a1aea6998c7f7366594c403326190d00111e2b3744515e6a7784919daaa5998c7f7266594c3f3326190c000000000000000000000000000000000006121f2b37434e5865727e8b98a2aca096897c6f63544a40414c5665727e8b99a4a99b8f8275685e5246392d2015090000000000000006131f2c3845515c677885919eabac9f9286796d6053463a2d20130600000713202c3945525d687884919eabafa295887c6f6255493c2f221609000f1c2835424f5b6875828c8c8c8c8f949eaab5a99d928d8c8c8c8c8c8c8c8174685b4e4135281b0e02000713202d3a4653606d798693a0aca6998d8073665a4d52545c606367696b6b6c6c6b6a696663605d55534d453f342e261e140a000000000000000000000000000814212d3a47535f696e757979797979797976706b625f58514b4c52535b6063696e73797e83796d6053473a2d2014070000000000000000000000000000000000020d19242e3740474b4d53535353535353534d4c4740382f241a0f06000000000000000000000000000000000000000000000000000000000000000000000000000000000000010406070a0d10111213131211100d0a07060400000000030505060606060606000000000000000000000000000000000000030c161f282f383f444e54596063676d707375777879797978787674726f6c66625f58534d443f382f271f150d030000000000000000000000000000000000000002090c151c23282c2f35393a3d4042444546464645454342403d3a39352f2b28231c140c090200000000000000000000000013202d394653606c7986938b7e7270707070707070707070727e8b9386796c605346392d2013000006111b262f3847535f6a74818e98a2aebbb9b9b9b9baaea2988e81746a5f53473d2f261b11060000000000000000030c1b27323c46525e6973808d97978c8073695e52463c32241a0c030000000000000000000000081119222a333c444d565d676d78818d8d81786d675d564d443c332a2219110800000000000000000911181d21212e3b4754616e7a86868686868683776a5d5144495663707d8686868686868074675a4e4134271f1c17110a0300000000000000000000000000000000000000000000000000000000000000000000000000000000010f1b26323c4753606d7985929faba99b8e8275685d525966737f8c99a4aca095897c6f63564c4135291d110400000000000000000000000000000000000000000000000613202c3945525d6875818e9ba8ab9e9285796d6053464754616d7a86929fab9e9285796d6053463a3025190d01000000000000000d1a2734404d5a6773808d9aa6ada094877a6d6154473a2e211407000000000000000000000000000000000000000000000000000000000000000815222f3b4855626e7b8895a1aea5988c7f7265594c3f3226190c00111e2b3744515e6a7784919daaa5998c7f7266594c3f3326190c00000000000000000000000000000000000814212e3a47535f6a7683909daaaa9e9184776b605442393b4754616e7b86939fac9f92867a6d6154473c31261a0e0000000000000004101c2934404b55697683909ca9afa399887b6f6255483c2e23170b00010714212d3a4754606d7a8796a1acafa295887c6f6255493c2f221609000f1c2835424f5b6875828e9999999c9ea6b0b9aea49d9a9999999999998e8174685b4e4135281b0e02000713202d3a4653606d798693a0aca6998d8073665a4d464b5153575a5c5e5f5f5f5e5d5c595654514b46423b3328231c140c020000000000000000000000000006121e2b37424d575f61696c6c6c6c6c6c6c6a636159534e45404146495053575e61666d71766d675d5145392c1f130600000000000000000000000000000000000007121c252e353b3f404646464646464646413f3c362f261d1208000000000000000000000000000000000000000000000000000000000000000000000000000000000001080d111314171a1d1e1f1f201f1e1c1a171413100c07010c0f11121313131313130909070300000000000000000000000000000b151e283139424a50585f626b6f75797d7f828385858686858483817f7c79746f6a625f575049413931271f150b010000000000000000000000000000000000000000030a11171c1f24292c2d30333537383939393938373533302d2c29241f1c17110a02000000000000000000000000000013202d394653606c7986938d807d7d7d7d7d7d7d7d7d7d7d7d808d9386796c605346392d201300000b17222d38414f59626f7c87939faab4acacacacacacb4aa9f93877c6f62594f41382d22170b0000000000000000000a15202a36424d57606d7a85919185796d60574d42342b20110800000000000000000000000000071019212a323b444c555d666d748080746d665d554c443b322a2118100700000000000000000000060c1114212e3b4754616e7a87939393939084776a5d5144495663707c89939393938d8174675a4e4134271b100c06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a151f2c3945515d6774808d9aa6ac9f92867a6d6154606b7784919eabaa9d9084776b6054443a3024190d0100000000000000000000000000000000000000000000000714212d3a4754606d7a86929faca89a8d8174665c514446525d6876828f9caba2978a7d7064564c4135291d1105000000000000000d192633404c5966737f8c99a6aea194877b6e6154483b2e211508000000000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8895a2afa5988b7e7265584b3f3225180c00111e2b3744515e6a7784919daaa5998c7f7266594c3f3326190c0000000000000000000000000000000003101c28343f4a54626e7b88959faba7998c807366594f43303946525e687683909ca9a3998b7f7265574d42372b1b1106000000000000000c18232f414d5a6774808d9aa7b5ab988b7e7165544a3f34281c100b0e131c2834404a5464707d8a97a8b2afa295887c6f6255493c2f221609000f1c2835424f5b6875828e9b9f9fa0acaeb5bdb1a9a3a19f9f9f9f9f9b8e8174685b4e4135281b0e02000713202d3a4653606d798693a0aca6998d8073665a4d404045464a4d4f5152535252514f4d4a4745413a3631292117110a020000000000000000000000000000020e1a26313c454d53555c606060606060605d57554f47433c3435383f44464d53545c606469605d554b4035291d1004000000000000000000000000000000000000000a131c242a2f323339393939393939393433302b241d140b0000000000000000000000000000000000000000000000000000000000000000000000000000000003090e13191d20212427292b2b2c2c2c2b292724201f1c18120e181c1e1f2020202020201615130f0a04000000000000000000000007121d273039434b545b606a6f767c8185898c8e90919292929291908e8b8985817c756e69605b534b433931271d120700000000000000000000000000000000000000000000060c1013191d20212426292a2b2c2c2c2c2b2a282623201f1d1812100b060000000000000000000000000000000013202d394653606c798693928d8a8a8a8a8a8a8a8a8a8a8a8a8d929386796c605346392d201300030f1b27333f4953606b76828f99a49f9f9f9f9f9f9f9f9f9fa4998f82756b6053493f33271b0f030000000000000000040e1a25303b45515d67727e8b8b7e71675d51453b3022190f000000000000000000000000000000070f182029323a434b545c606e73736e605c544b433a322920180f07000000000000000000000000010814212e3b4754616e7a87949f9f9d9084776a5d5144495663707c89969f9f9a8d8174675a4e4134271b0e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101d2935404b55626f7b88949faba3998b7e726557636f7c8996a0aca2988b7f7265594f4332281e1308000000000000000000000000000000000000000000000006121f2b37434e5865727e8b98a2aca096897c6f63544a40414c5665727e8b99a4a99b8f8275685e5246392d201509000000000000000c1926323f4c5965727f8c98a5aea195887b6e6255483b2f22150800000000000000000000000000000000000000000000000000000000000000091623303c4956636f7c8996a2afa4978b7e7164584b3e3125180b00111e2b3744515e6a7784919daaa5998c7f7266594c3f3326190c0000000000000000000000000000000006121f2c3844505c6673808d9aa7ab9f95887b6e6255483d3236414d5665727f8c98a7ab9d908376695f5347382d22170b00000000000000071824313e4b5764717e8a97a7b1a79b8e8174665c5044382b221b171a1d242c3844515c6674818d9aa7b4afa295887c6f6255493c2f221609000f1c2835424f5b6875828e939393939fa3abb5a99f98949393939393938e8174685b4e4135281b0e02000713202d3a4653606d798693a0aca6998d8073665a4d4034383a3d404244454646454443403d3a39352f2a251f170f06000000000000000000000000000000000009151f2a333c4247484f53535353535353504a48443e373129292d33373b42464b5153575d53514b43392f24180c0000000000000000000000000000000000000000010a12191e2325262d2d2d2d2d2d2d2d2726241f19130b02000000000000000000000000000000000000000000000000000000000000000000000000000000060e141a1e24292c2d3033363738393939383634302d2c29231d1a24282b2c2d2d2d2d2d2d23221f1b160f07000000000000000000040d18232e39434b555d666c737c83898e9298999b9d9e9f9f9f9f9e9c9b9897918d88827b736c655d554b43392f24180e05000000000000000000000000000000000000000000000003080d111314171a1c1d1f1f20201f1e1d1c19171413100c070300000000000000000000000000000000000013202d394653606c798693939393939393939393939393939393939386796c605346392d20130005121f2b3744505b65707d8994939393939393939393939393939394897d70655b5044372b1f120500000000000000000009141f2935414b55606d788383786d60554b4033291f100700000000000000000000000000000000060e1720283139424a505c636767635c504a4239312820170e0600000000000000000000000000000814212e3b4754616e7a8794a1aa9d9084776a5d5144495663707c8996a3a79a8d8174675a4e4134271b0e010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18242f3947535f6a7683909ca9ab9d908376695f6774818e9aa8ac9f92867a6d6054473d3221160c0200000000000000000000000000000000000000000000000814212e3a47535f6a7683909daaaa9e9184776b605442393b4754616e7b86939fac9f92867a6d6154473c31261a0e000000000000000c1825323f4b5865727e8b98a5afa295887c6f6255493c2f221609000000000000000000000000000000000000000000000000000000000000000b1824313e4b5764717e8a97a4b6ac96897d7063564a3d3023170a00111e2b3744515e6a7784919daaa5998c7f7266594c3f3326190c000000000000000000000000000000000713202d3a4653606d7985919eabab9d908377695f53473a2b303b4854616e7b8795a0ab9f95887b6e6253493f33271b0f030000000000000814212e3b4754616e7b8795a0acab9e9285796d6053463e342b2722262a2f35404b55606d7985929eabb8afa295887c6f6255493c2f221609000f1c2835424f5b68758186868686868b99a3aea3988d88868686868686868174685b4e4135281b0e02000713202d3a4653606d798693a0aca6998d8073665a4d40332c2d3034363838393938373633302d2c29241d1a140d05000000000000000000000000000000000000030e18212a31373a3b4246464646464646433d3c38332b26201b22272b3136394045464b504745403931271d120700000000000000000000000000000000000000000000070d1316191a20202020202020201a1a17130e0801000000000000000000000000000000000000000000000000000000000000000000000000000000070f181f262a2f35393a3d404344454646454443403d3a38342f2a252f3437383939393939392f2e2c272119100700000000000000010c161f2834404b555d676d78808790949b9fa2a9a29e9c9b9a9a9b9d9fa3a9a19e9a948f877f776d675d554b40352920170d02000000000000000000000000000000000000000000000000010406070a0d0f11121313131212100f0d0a07060400000000000000000000000000000000000000000013202d394653606c798686868686868686868686868686868686868686796c605346392d2013000613202d394653606c798386868686868686868686868686868686868683796c605346392d201306000000000000000000030d18242f3a44505c66707d7d70665c50433a2f21170d000000000000000000000000000000000000050d161f2730383f4452585a5a5852443f3830271f160d050000000000000000000000000000000814212e3b4754616e7a8794a1a99d9084776a5d5144495663707c8996a3a79a8d8174675a4e4134271b0e0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d2b37434e5864717e8a97a1ab9f95887b6e616d7985929faba79b8e8174685d5245392c201304000000000000000000000000000000000000000000000003101c28343f4a54626e7b88959faba7998c807366594f43303946525e687683909ca9a3998b7f7265574d42372b1b11060000000000000b1825313e4b5864717e8b97a4afa296897c6f6356493c30231609000000000000000000000000000000000000000000000000000000000000000c1926333f4c5966727f8c99a5afa49a887b6e6255483b2f22150800111e2b3744515e6a7784919daaa5998c7f7266594c3f3326190c00000000000000000000000000000005111d2a36414c5663707d8a97a1ada3998c7f7265574d42372b2d3a46535e697783909daaa7998d8073655b5044372b1f12070000000000000714202d3a46525e697784909dabada1978a7d70635a50463d37332d31363a4045515d67717e8b97a1adb9afa295887c6f6255493c2f221609000e1b2834414d59656f75797979797987929faca194887b79797979797979746f64594d4034271a0e01000713202d3a4653606d798693a0aca6998d8073665a4d403327202427292b2c2c2c2b2a29262321201d18130e09030000000000000000000000000000000000000000060f181f262b2d2e363939393939393937302f2c28211b1511171b1f252a2e34383a3e433a39352f271f150b01000000000000000000000000000000000000000000000002070a0c0d13131313131313130e0d0b0703000000000000000000000000000000000000000000000000000000000000000000000000000000030b1218212a31363a4145474a4d505152525352514f4d4a4745403936313a4044454646464646463c3b38322b22190f0400000000000008131e28313a45515c676d79828d92999fa6a39f9a97928f8e8d8e8e9092989b9fa3a69e99928c82796d675d51453f32291e140800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013202d3946535f6c767979797979797979797979797979797979797979766c5f5346392d20130005121f2b3744505b656c77797979797979797979797979797979797979776c655b5044372b1f12050000000000000000000007131d28343f4a54606b70706b60544a3f31281d0f0500000000000000000000000000000000000000040d151e262e3440474b4d4d4b4740342e261e150d04000000000000000000000000000000000814212e3b4754616e7a87949c9c9c9084776a5d5144495663707c89969c9c9a8d8174675a4e4134271b0e01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010f1a26313c4653606d7985929eaca7998c7f7366717d8a98a2aca095897c6f63564c4135291d1104000000000000000000000000000000000000000000000006121f2c3844505c6673808d9aa7ab9f95887b6e6255483d3236414d5665727f8c98a7ab9d908376695f5347382d22170b0000000000000a1724303d4a5763707d8a96acb6a4978a7e7164574b3e3124180b000000000000000000000000000000000000000000000000000000000000010e1b2834414e5b6774818e9aa7ac9f9386796d6053463a2d20130700111e2b3744515e6a7784919daaa5998c7f7266594c3f3326190c0000000000000000000000000000000713202d3946525e6875828f9ba9ac9f92867a6e6154473c31262a36424d5766737f8c99a7ab9e9184786c605346392f24180c00000000000005111e2a36424d5666737f8c99a3afa99c9083766c61584f46443f414142464b515b606d7984919ea9afb8afa295887c6f6255493c2f221609000c1925313d48535d65686c6c6c677683909da9a194887b6e6c6c6c6c6c6c68645d53483c3024180c00000713202d3a4653606d798693a0aca6998d8073665a4d4033271a171a1c1e1f201f1f1e1c1a171413110d07010000000000000000000000000000000000000000000000060e151a1e2122292d2d2d2d2d2d2d2a2423201c160f0a060b0f141a1d23282c2d31362d2c29241d150d030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c151c2328333b42464c5254575a5c5e5e5f5f5f5e5c5a5753514b46423b454c50525353535353534948433d342b21160a0000000000010d19242f3a43505a606d79828f949fa3a7a099928e898583818181828386898e92999fa7a39f948f82796d605b51443b3025190e0200000000000000000000000000000000000000000000000002070b0d0d131313131313130f0e0c0804000000000000000000000000000000000000000000000000121e2b37434f5a646c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c645a4f43372b1e1200030f1b27333f49535b606a6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6a605b53493f33271b0f0300000000000000000000010b17232e38424f5960636360594f42382e1f160c000000000000000000000000000000000000000000030c151c2328363b3f40403f3b3628231c140c0300000000000000000000000000000000000814212e3b4754616e7a878f8f8f8f8f84776a5d5144495663707c898f8f8f8f8d8174675a4e4134271b0e01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a151f2c3845515c6773808d9aa4aa9d9184776a75828e9baaaa9d9084776b6054443a3024190d0100000000000000000000000000000000000000000000000713202d3a4653606d7985919eabab9d908377695f53473a2b303b4854616e7b8795a0ab9f95887b6e6253493f33271b0f0300000000000815222f3b4855626e7b889aa4afa5998c7f7266594c3f3326190700000000000000000000000000000000000000000000000000000000000004101d2935404b556976838f9ca9ab9e918478675c5145382c1f130600111e2b3744515e6a7784919daaa5998c7f7266594c3f3326190c0000000000000000000000000000000714212e3a4754616d7a86929facaa9c8f8276685e5246392a2025313b4855626e7b8895a0aca196897d7063554b4035291d10040000000000020e1925303b4854616e7b87929fabab9f948a7e716a60595350494e4e4d53555d606d74808d969b9ea5afafa295887c6f6255493c2f221609000915202c37424b53595b6060606774808d9aa7a194887b6e6160606060605b59534b41372b20140800000713202d3a4653606d798693a0aca6998d8073665a4d4033271a0d0d0f111213131211100d0a07060401000000000000000000000000000000000000000000000000000003090e1214151c202020202020201d171614100b0500000003090e12181c1f20242a201f1d18120b03000000000000000000000000000000000000000000000000000000000000000000010406070a0d10111213131211100d0a07060400000000030505060606060606000000000000000000000000000000000b151e272e343f454d53565d606366696a6b6c6c6c6b696763605c55534d444f575c5f60606060606056544e463d32271b0f030000000004111d2935414c56616c74818e949ea6a69f959087817c79767474747577797d818790959ea5a69e948e81756d62564c41362a1e14080000000000000000000000000000000000000000000001080e1317191a202020202020201b1b18140f0901000000000000000000000000000000000000000000000f1b27333e49525a5f60606060606060606060606060606060606060605f5a52493e33271b0f00000b17222d38414950535d6060606060606060606060606060606060605d53504941382d22170b00000000000000000000000006111c26303d474f555656554f473d30261c0d0400000000000000000000000000000000000000000000030a1117242a2f323434322f2a2417110a020000000000000000000000000000000000000714212d3a4754606d7a8283838383838174675b4e414855626f7c8283838383827f7265584c3f3225190c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c2834404b55616e7b87939faca095887b6f7985929faca3988b7f7265594f4332281e1308000000000000000000000000000000000000000000000005111d2a36414c5663707d8a97a1ada3998c7f7265574d42372b2d3a46535e697783909daaa7998d8073655b5044372b1f120700000000000714202d3a4753606d7a86939faca79a8e8174675b4e412f24180c00000000000000000000000000000000000000000000000000000000000006131f2c3845515d677784919eaaa99c90837669554b4034281c100400111e2b3744515e6a7784919daaa5998c7f7266594c3f3326190c000000000000000000000000000006131f2b37434e5865727f8b99a3aea2988b7e7164564c41362a18212e3a47535f6a7784919daaa89b8e8174675d5145392c1f14090000000000000914202d3a46525e6975818e99a3afa69f92857c706b62605b535a5b575f61676d747f8b92938f939eaaafa295887c6f6255493c2f22160900040f1b25303942484d4f53535764717e8a97a9a194887b6e6155535353534e4d4841392f251a0f0300000713202d3a4653606d798693a0aca6998d8073665a4d4033271a0d01030505060605040300000000000000000000000000000000000000000000000000000000000000000000020608080f13131313131313100a0907040000000000000000070c101313181d1413100c0701000000000000000000000000000000000000000000000000000000000000000001080d111314171a1d1e1f1f201f1e1c1a171413100c07010c0f111213131313131309090703000000000000000000000007121c273039404451575f61686d7073767778797978777673706d67615e57505761686b6c6c6c6c6c6c6260584e43382c1f1307000000000613202c3945525d68717e8a939da6a89f948f837c746f6c6668676768666d70757c838f939ea7a69e938b7f72685e52463b3025190d010000000000000000000000000000000000000000020a12191f2326272d2d2d2d2d2d2d282724201a130b030000000000000000000000000000000000000000000a16212c3740494f535353535353535353535353535353535353535353534f4940372c21160a000006111b262f383f4446505353535353535353535353535353535353535046443f382f261b1106000000000000000000000000000a141e2c353d44484a4a48443d352c1e140a00000000000000000000000000000000000000000000000000060c191f2326272726231f190b0600000000000000000000000000000000000000000713202c3945525d686d767676767676746f64584c4047535f6a6f767676767676726d62564a3e3125180b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18232e3946535f6976828f9ca9a7998c7f737d8a98a2ac9f92867a6d6054473d3221160c0200000000000000000000000000000000000000000000000713202d3946525e6875828f9ba9ac9f92867a6e6154473c31262a36424d5766737f8c99a7ab9e9184786c605346392f24180c000000000006131f2c3845515d677885919eaba99c8f827669554b4035291d100400000000000000000000000000000000000000000000000000000000000714202d3a4753606d7a86929faca79b8e8174685b4e412e23180c0000111e2b3744515e6a7784919daaa5998c7f7266594c3f3326190c00000000000000000000000000000815222e3b47545f6a7783909dabac9f92867a6d6054473b3025191e2b37424e576673808c99a8ab9f9285796d6053473b3025190e02000000000005121e2a36424d57626e7c87929fa7ada29792857d756f6c6568676869696e7379818b91948f828f9ba8afa295887c6f6255493c2f221609000009141e2730373d4142464854616e7b8796a1a194887b6e61554846464641403c372f271d13090000000713202d3a4653606d798693a0aca6998d8073665a4d4033271a0d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003060606060606060400000000000000000000000000000406070b1007060400000000000000000000000000000000000000000000000000000000000000000003090e13191d20212427292b2b2c2c2c2b292724201f1c18120e181c1e1f2020202020201615130f0a040000000000000000000c18232e39424a515b63696e747a7d808384858586858482807d79746e69605b536873787979797979796f6a6054483b2e22150900000004111d2935414c55606d7a85929ea5aca0968f82796e6a62605b545a5b545c60636a6e78818f959faba59f92857a6e61564c41362a1e110500000000000000000000000000000000000000010a141c242b2f3334393939393939393534312c251d150b01000000000000000000000000000000000000000005101b252e373e4346464646464646464646464646464646464646464646433e372e251b10050000000a141d262d33373944464646464646464646464646464646464646443937332d261d140a0000000000000000000000000000020c1a232c33383c3d3d3c38332c231a0c020000000000000000000000000000000000000000000000000000080e1317191a1a1917130e0800000000000000000000000000000000000000000004111d2935414c565d6069696969696967645c53483c434e585f6269696969696965625b51463a2e22160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d2b37424d5764717d8a97a1aa9d908377818e9baaa79b8e8174685d5245392c2013040000000000000000000000000000000000000000000000000714212e3a4754616d7a86929facaa9c8f8276685e5246392a2025313b4855626e7b8895a0aca196897d7063554b4035291d10040000000004101d2935404b55697683909ca9aa9e918477675d5145382c1f13060000000000000000000000000000000000000000000000000000000000091623303c4956636f7c8999a3afaa988b7e7265584b3f322518070000111e2b3744515e6a7784919daaa5998c7f7266594c3f3326190c0000000000000000000000000004101c2834404b55626f7c8895a0aca99b8e8175675d514539291e141a26313c4955626f7c8896a0aca2988a7e7164564d42362a1e11050000000000020e1a25303b47535f6a73808d95a0a8a9a1979288817c797674747476787b7f858d929790827d8996a3afa295897c6f6256493c2f2316090000020c151e252c3134353a46535e697884919ea194887b6e6155483b39393534302b251d150b010000000713202d3a4653606d798693a0aca6998d8073665a4d4033271a0d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060e141a1e24292c2d3033363738393939383634302d2c29231d1a24282b2c2d2d2d2d2d2d23221f1b160f070000000000000004101c2834404a545c606d727b81868a8d8f9191929292918f8d8a85807b726c655c6b78858686868686867c6f6256493c2f2316090000000613202c3945515d6773808d97a1ada69e91847a6d675f5853504a4e4e4b5153585f666d79839099a3ada2978d8174685e5246392d2014090000000000000000000000000000000000000008121c262e363b3f404646464646464642403d372f271d130900000000000000000000000000000000000000000009131c252c33373939393939393939393939393939393939393939393937332c251c130900000000020b141b22272b2d37393939393939393939393939393939393939372d2b27221b140b0200000000000000000000000000000008111a21272c2f30302f2c27211a11080000000000000000000000000000000000000000000000000000000002070a0d0d0d0d0a070200000000000000000000000000000000000000000000010d1924303a444c52545c5c5c5c5c5c5b58534a41363c464e53555c5c5c5c5c5c585651493f34291e1206000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a26313c4653606d7984919eaba095887b85929faba095897c6f63564c4135291d1104000000000000000000000000000000000000000000000006131f2b37434e5865727f8b99a3aea2988b7e7164564c41362a18212e3a47535f6a7784919daaa89b8e8174675d5145392c1f140900000000000c18242f414e5b6874818e9ba7ac9f92867a6d6053473a2d20140700000000000000000000000000000000000000000000000000000000000c1926333f4c5966727f8c99abaea298887b6f6255483c2f2215090000111e2b3744515e6a7784919daaa5998c7f7266594c3f3326190c0000000000000000000000000006131f2c3845515c6774808d9aa7ada1978a7d7063554b413529170d15212e3b47535f6a7784919eaaaa9c8f8276695e52463a2d20150a00000000000009141f2b37434e58606d79839096a0a8a9a19a938e8985828181818284888c91979992857b7c8996a2afa296897c6f6356493c30231609000000030c141b2025282a36424d576875828e9ba194887b6e6155483b2e2d282724201a130b03000000000713202d3a4653606d798693a0aca6998d8073665a4d4033271a0d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000406070a0d0f11121313131212100e0c090606030000000000000000000000000000000000000000000000000000000000070f181f262a2f35393a3d404344454646454443403d3a38342f2a252f3437383939393939392f2e2c27211910070000000000030e18212c3844515c666d757f878d9298999c9d9e9f9f9f9e9c9a98928d867f776d666679869293939393887b6e6255483b2f2215080000000714212d3a4754606d7a85929fa9aa9e94897d70685d554e46443f41414045464e545c676f7c87929faca99f92867a6e6154473c31261a0e020000000000000000000000000000000000020e19242e3840474c4d535353535353534e4d4841392f251a0f040000000000000000000000000000000000000000010a131b21272b2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2b27211b130a010000000000020a11171b1f202a2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2a201f1b17110a020000000000000000000000000000000000080f161c2023232323201c160f08000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e28323a4145475050505050504e4c4841382f343c4347485050505050504c4a463f372d23180d010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141f2c3844505c6673808c99a4a79c8f828f97a2aa9d9084776b6054443a3024190d0100000000000000000000000000000000000000000000000815222e3b47545f6a7783909dabac9f92867a6d6054473b3025191e2b37424e576673808c99a8ab9f9285796d6053473b3025190e0200000000071925323f4c5865727f8b98aaafa399897c6f6356493c302316090000000000000000000000000000000000000000000000000000000006121e2b37424d576875828f9ba8ab9f9285796c605346392d2013060000111e2b3744515e6a7784919daaa5998c7f7266594c3f3326190c000000000000000000000000000713202d3a4653606d7985929eabab9e9285796d6053463a2f241807131f2b37434e586773808d9aa8ac9f93877b6e6154473c32261b0f000000000000030f1a26313c45515c676e7b8491969fa4aca49f9b97928f8e8d8e8f9196999e9892877d707b8895a2aea396897c706356493d3023160a0000000002090f15191a25313f4c5965727f8c989f94887b6e6155483b2e221b1a18140f090100000000000713202d3a4653606d7986939f9f9f998d8073665a4d4033271a0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001070c10131416191c1d1f1f20201f1e1d1b191613120f0b0600000000000000000000000000000000000000000000000000030b1218212a31363a4145474a4d505152525352514f4d4a4745403936313a4044454646464646463c3b38322b22190f04000000000915202c38434f59606d78818c92999fa2aaa9a8aaa29f9e9e9e9fa29f98928c81786d6d798699a39f9f94877a6e6154473b2e211408000005111e2a36424d5765727f8b98a2aea99c8f82756b60564c433c38332d2e34383c424b555f6a74818e9ba8aea3988c7f7266574d42372b1e1205000000000000000000000000000000000007131f2b36404a52585a606060606060605b59534b41372c201408000000000000000000000000000000000000000000010910161b1e202020202020202020202020202020202020202020201e1b161009010000000000000000060b0f12131d2020202020202020202020202020202020201d13120f0b060000000000000000000000000000000000000000050b10141617171614100b050000000000000000000000000000000000000000000000000000000000000000000000000000050a0d0f101313100f0d090500000000000000000000000000020c1620283035393a43434343434341403c362f262a32373b3c4343434343433f3e3a342d251b1107000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003101c28343f4a54616e7b87939fac9e948f949ea9a3988b7f7265594f4332281e1308000000000000000000000000000000000000000000000004101c2834404b55626f7c8895a0aca99b8e8175675d514539291e141a26313c4955626f7c8896a0aca2988a7e7164564d42362a1e1105000000000916222f3c4955626f7c8898a2aeab988c7f7265594c3f31261a0e020000000000000000000000000000000000000000000000000000000814212d3a47535f697885919eaba99c8f8276665b5044382b1f12060000111e2b3744515e6a7784919daaa5998c7f7266594c3f3326190c00000000000000000000000005111e2a36424d5664717d8a97a2ada89a8d8174665c514438281d13070f1b26323c4956626f7c8996a1ada4998c7f7265584e43372b1c11060000000000000a15202934404b555e696e7b848e939a9fa3aba9a19e9c9b9a9b9c9ea09d9590867d706e7b8894abb5a396897d7063564a3d3023170a0000000000000409091623303c4956636f7c89999393887b6e6155483b2e2215080c0803000000000000000713202d3a4653606d798693939393938d8073665a4d4033271a0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0f12181c1f202326282a2b2c2c2c2c2b2a282523201f1c17110f0a03000000000000000000000000000000000000000000030c151c2328333b42464c5254575a5c5e5e5f5f5f5e5c5a5753514b46423b454c50525353535353534948433d342b21160a000000020e1a26313b4854606b74808d939fa3ababa49f9b979892919192939a989d9f938f82786d7a8794abb4a094877a6d6154473a2e21140700000714202d3a46525e697683909daaada196897d7063594f433a312b282223282c3039434e58626f7c8895a0acaa9d908477695f53463a2d21140700000000000000000000000000000000000b17232f3b47525c64676c6c6c6c6c6c6c68655d53483d3124180c0000000000000000000000000000000000000000000000050a0f1213131313131313131313131313131313131313131313120f0a0500000000000000000000000003050611131313131313131313131313131313131313110605030000000000000000000000000000000000000000000000000407090a0a0907040000000000000000000000000000000000000000000000000000000000000000000000000000030a11161a1c1d20201c1c1915100a02000000000000000000000000040e161e24292c2d3636363636363433302b251d20262b2e2f36363636363632312e29231b1309000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232e3846535e6975828f9ca8a69e9c9ea6ac9f92867a6d6054473d3221160c02000000000000000000000000000000000000000000000006131f2c3845515c6774808d9aa7ada1978a7d7063554b413529170d15212e3b47535f6a7784919eaaaa9c8f8276695e52463a2d20150a000000000713202d3a4653606d7985929faca89b8f827568574d42362a1e12050000000000000000000000000000000000000000000000000000000815222e3b4855616e7b8897a1ada8998c7f7366544a3f33281c0f030000111e2b3744515e6a7784919daaa5998c7f7266594c3f3326190c0000000000000000000000000714202d3a46525e6975828f9ca9aca096897c6f63544a403428160c010a13202d394653606c7884919eabab9d9084776a5f5347382e23170c000000000000030c18232f39434d575e696e7981878f92999b9d9e9f9f9f9e9d9b9895908b837c706b6d7a8799a49f9f978a7d7064574a3d3124170a00000000000000000713202d3a4653606d7987868686867b6e6155483b2e221508000000000000000000000713202d3a4653606d78868686868686868073665a4d4033271a0d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0f161b1d23292c2d303335373839393939383635322f2d2b28221c1b150e0903000000000000000000000000000000000000000b151e272e343f454d53565d606366696a6b6c6c6c6b696763605c55534d444f575c5f60606060606056544e463d32271b0f03000006121e2b37424e57636f7c87939fa5afa9a199938f8a878584848586888c90959e948d80747b8794a1ada093877a6d6054473a2d21140700000814212e3b4754616e7b87959fabab9e9184786c6053463d31281f1c17181c1f27313c47535f6a7784919daaaca095887b6e6155483b2e22150600000000000000000000000000000000000d1926333f4c58646e7379797979797979756f65594d4034271b0e01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d151c2226292a2d2d292825211b140c04000000000000000000000000040c13191d2021292929292929282724201a13151b1f21222929292929292525221e181109010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040906111c2a36424d5763707d8a96a1acaaa8aab0a79b8e8174685d5245392c20130f0c07010000000000000000000000000000000000000000000713202d3a4653606d7985929eabab9e9285796d6053463a2f241807131f2b37434e586773808d9aa8ac9f93877b6e6154473c32261b0f0000000006121f2b3844505c6676838f9ca9ab9e918578695f53463a2d211409000000000000000000000000000000000000000000000000000005121e2a36424d5766727f8c99a9aca096887c6f6255493c2d22170b000000111e2b3744515e6a7784919daaa5998c7f7266594c3f3326190c0000000000000000000000000814212e3b4754616e7b86929facaa9e9184776b605442392e2318040005121f2b3744505b6574808d9aa9aca095887c6f62544a3f34281c100300000000000007121d27313b454d575e676d747c82868b8e909192929291908e8b88837e786f6a606c798693939393938a7e7164574b3e3124180b000000000000000006131f2c3845515c6775797979797976695f53463a2d2114070000000000000000000006121f2c3844505c667679797979797979736e63584b3f3226190c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b151b21272c2f34383a3d40424445464646454543413f3c3938332d2b26201a150b06000000000000000000000000000000000007121c273039404451575f61686d7073767778797978777673706d67615e57505761686b6c6c6c6c6c6c6260584e43382c1f130700000814212e3a47535f6a76828f9aa4afaba1979287827d7a79787778797b7f838a9196928a7e7b8895a1ada093867a6d6053473a2d20140700000b1824313e4b5764717e8a97a7b1a79a8e8174665b5044382b1f160f0b0c10151f2b37434e586773808d9aa6b1a7988b7e7165584b3e2d22170b00000000000000000000000000000000010d1a2734404d5a677380868686868686868175685b4e4235281b0f0200000000000000000000000000000000000000000000000000000000000000060a0e1011131313131313100f0d0a0500000000000000000000000000000000000000000000000000000000060a0e1011131313131313100f0d0a05000000000000000000000000000005090d0f101313100f0d0a050000000000000000000000000000000000000000000000000000000000000000000000000000000000030d161f272d32353639393635322c261e160c0200000000000000000000000002080d1113141d1d1d1d1d1d1b1a18140f080a0f1215151d1d1d1d1d1d191816120d07000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080f151a1d1a25313b4653606c7884919e9f9f9f9f9fa095897c6f63564c4135291d1e1c18130c050000000000000000000000000000000000000005111e2a36424d5664717d8a97a2ada89a8d8174665c514438281d13070f1b26323c4956626f7c8996a1ada4998c7f7265584e43372b1c110600000003101c28343f4a546673808c99a8ada197887b6e6155483b30251a0e02000000000000000000000000000000000000000000000000000714212d3a46535e697783909daaaa9e9184776a5f53473b2e1c1106000000111e2b3744515e6a7784919daaa5998c7f7266594c3f3326190c000000000000000000000007131f2c38434f5966727f8c99a3afa7998c807366594f4330271c120700030f1b27333f495363707c8997a1ada79a8d8074665c5044382c1f1206000000000000010b151f29333b454d555d606a6f757a7e8183858586858583817f7b77716d665f5b6678848686868686867f7265584c3f3225190c000000000000000004101c2834404b555c6a6c6c6c6c6c6c5f574d42372b1e12050000000000000000000003101c28343f4a545c6c6c6c6c6c6c6c6c66635c52473b2f23170a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a111720262b323839404547494c4f50525253535251504e4c4946443f3837312b262017110a020000000000000000000000000000000c18232e39424a515b63696e747a7d808384858586858482807d79746e69605b536873787979797979796f6a6054483b2e22150900000815222f3b4855626e7b88949facaea39992857d75716e686b6b666d6e72767d84909492857d8996a3aca09386796d6053463a2d20130700010e1b2834414e5b6774818e9aa7b4aa978a7e7164544a3f3328190d040000040d1b26323d4a5764707d8a97aab4a79b8e81746853493f33271b0f03000000000000000000000000000000010d1a2734404d5a6773808d93939393938e8175685b4e4235281b0f020000000000000000000000000000000000000000000000000000000000040b11161a1d1e2020202020201d1c1916100a03000000000000000000000000000000000000000000000000040b11161a1d1e2020202020201d1c1916100a0300000000000000000000020a1015191c1c20201d1c1a16110a030000000000000000000000000000000000000000000000000000000000000000000000000000000a151f2831383e4243464643413d3830281e140a0000000000000000000000000000010407071010101010100e0d0b08030000030608091010101010100c0b09060100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009121a20262a2c2d2b3844505b66737f8c999393939393939084776b6054443a30242c2b28241e170f070000000000000000000000000000000000000714202d3a46525e6975828f9ca9aca096897c6f63544a403428160c010a13202d394653606c7884919eabab9d9084776a5f5347382e23170c000000000b17232e3c4956626f7c8996a0aca9988c7f7265574d42362a1e1205000000000000000000000000000000000000000000000000000815212e3b4854616e7b87959faba8998c807366584e43372b1f0a00000000111e2b3744515e6a7784919daaa5998c7f7266594c3f3326190c00000000000000000000000915222f3b4854606b7784919d9f9f9f95887b6e6255483d3222150b0000000b17222d3a4653606d7985929e9f9f9e9185796d6053463a2d20130700000000000000030d172129333b434b51586062686e71747678797978787675726e6a64605c5454687278797979797979726d62564a3e3124180b0000000000000000000c18232e39434b51535f6060606055534d453c31261a0e0200000000000000000000000c17232e38424a505f606060606060605a58524a40362a1f130700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040b141c222832373d43484b515356595b5d5e5f5f5f5f5e5d5b585653504a47433c373127221b140b030000000000000000000000000004101c2834404a545c606d727b81868a8d8f9191929292918f8d8a85807b726c655c6b78858686868686867c6f6256493c2f23160900000d192633404c5966737f8c99a6b0ac9f92877c6f6b64615e56545c6062656c707a8290949083909daaaca09386796d6053463a2d2013070005111e2a36414c566a7683909da9aea298887b6e6155483b2d221708000000000a15212e3b4854616e7b8798a2aeaa9d908377655b5044372b1f1205000000000000000000000000000000010d1a2734404d5a6773808d9a9f9f9f9b8e8175685b4e4235281b0f0200000000000000000000000000000000000000000000000000000000050d151c2227292a2d2d2d2d2d2d292926211c150d0400000000000000000000000000000000000000000000050d151c2227292a2d2d2d2d2d2d292926211c150d040000000000000000040c141b212528292d2d2a2926221c150d040000000000000000000000000000000000000000000000000000000000000000000000000005111c27313a434a4e5053534f4e49423a30261b1005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121b242b3236393939333f4a54616e7a8786868686868686867f7265594f433239393837342f2921190f0500000000000000000000000000000000000814212e3b4754616e7b86929facaa9e9184776b605442392e2318040005121f2b3744505b6574808d9aa9aca095887c6f62544a3f34281c10030000000615222e3b4754606a7784919eaaa99d908376695e52463a2d20150a00000000000000000000000000000000000000000000000006131f2b37434e5865727f8c98a7aca095887c6f6255483c32261b0f00000000111e2b3744515e6a7784919daaa5998c7f7266594c3f3326190c0000000000000000000000091623303c4956636f7c8996939393939083776a5f53473a2e211417110b0b10121f2b3844505c6674818e93939393978a7d7063574a3d3024170a0000000000000000050f172129313a40454e54565e6164686a6b6c6c6c6b6a6865625f5753504a5660686b6c6c6c6c6c6c65625b51463a2e22160900000000000000000007121d27303940454653535353534846423c332a1f140900000000000000000000000006111c2630383f4453535353535353534d4b4740382e24190e02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d161d262d333c43474f54555c606366686a6b6c6c6c6c6b69686562605b54534e47423c332d261d150d030000000000000000000000030e18212c3844515c666d757f878d9298999c9d9e9f9f9f9e9c9a98928d867f776d666679869293939393887b6e6255483b2f2215080005111e2a36424d576976838f9ca9b1a79a8d80736a605954524c4a5053555a61676d798290959095a0abaca09386796d6053463a2d201307000713202d3946525e687885929fabac9f9285796c605346392d201306000000000714212d3a46535e697985929facac9f9285796c605346392d201306000000000000000000000000000000010d1a2734404d5a6773808d9aa6aca89b8e8175685b4e4235281b0f02000000000000000000000000000000000000000000000000000000040d171f272e3336373939393939393635322d261f160d030000000000000000000000000000000000000000040d171f272e3336373939393939393635322d261f160d03000000000000020c161e262c32353639393635322d271f160d030000000000000000000000000000000000000000000000000000000000000000000000000a16222d38434c545a5d60605c5a544c42382c211509000000000000000000000000000000000000030608090b0d0f1112121313121211100e0c0a070604010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f1a242d363d42454646464646525e686e797979797979797979726d625647454646464544403a332b21170c0100000000000000000000000000000007131f2c38434f5966727f8c99a3afa7998c807366594f4330271c120706040f1b27333f495363707c8997a1ada79a8d8074665c5044382c1f120600000006131f2b37434e586673808d99a8ac9f93877b6e6154483c31261b0f0200000000000000000000000000000000000000000000020c15212e3b47535f6a7683909da9aa9d9184776a5f53473a2a20150a00000000111e2b3744515e6a7784919daaa5998c7f7266594c3f3326190c00000000000000000000000e1b2834414e5b677481868686868686867f7265574e42372b2a27221d16161b202228343f4a5463707d868686868686868175685b4f4235281c0f000000000000000000050f171f282f353d43474c5254585b5d5e5f5f5f5e5d5b5855534e46443f4e565c5e606060606060585651493f34291e1206000000000000000000000b151e272e34383a46464646463b3a37312a21180e03000000000000000000000000000a151e262e34384646464646464646403f3b362e261c1208000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c161f282f383f444e54596063676d707375777879797978787674726f6c66625f58534d443f382f271f150d03000000000000000000000915202c38434f59606d78818c92999fa2aaa9a8aaa29f9e9e9e9fa29f98928c81786d6d798699a39f9f94877a6e6154473b2e211408000714202d3a46525e697885929fabaca095877b6e61584f4746413f44464850555d676e7b85929da0a7b1aca09386796d6053463a2d201307000714212e3a4754616d7a8798a2aeaa9d918477665b5044382b1f12060000000005121e2a36424d576a7784919daaaea298877a6e6154473b2e211408000000000000000000000000000000010d1a2734404d5a6773808d9aa6aca89b8e8175685b4e4235281b0f020000000000000000000000000000000000000000000000000000000b151f2931393f424446464646464643423e3831281f150a00000000000000000000000000000000000000000b151f2931393f424446464646464643423e3831281f150a0000000000000a141e2830383d4143464643423e3831281f150a0000000000000000000000000000000000000000000000000000000000000000000000010d1a26323e4a545e66696c6c69665e54493d3225190d00000000000000000000000000000003070a0f121515181a1c1e1e1f1f201f1f1e1d1b19161413110d08040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915202b363f484e5253535353514d565e616c6c6c6c6c6c6c6c6c65625b514b5253535352504c453d33291e13070000000000000000000000000000000915222f3b4854606b7784919d9f9f9f95887b6e6255483d3222151b1313100c17222d3a4653606d7985929e9f9f9e9185796d6053463a2d201307000000030f1b27323d4955626f7c8896a0aca49a8b7f7265584e43372b1e13080000000000000000000000000000000000000000000008131e2a36414c56626f7c88959faba2988c7f7265584e43372b1f120600000000111e2b3744515e6a7784919daaa5998c7f7266594c3f3326190c00000000000000000000000d1a2733404c59646f7479797979797979726d6256453c313736332e272021272c2f302e384855616b7079797979797979756f65594d4034271b0e00000000000000000000050d161d242932373b4146474b4e505252535252504e4c4847423c3834454b50515353535353534c4a463f372d23180d0100000000000000000000030c151d23282c2d39393939392e2d2b261f180f060000000000000000000000000000030c151c23282c393939393939393933322f2a241c140a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b151e283139424a50585f626b6f75797d7f828385858686858483817f7c79746f6a625f575049413931271f150b010000000000000000020e1a26313b4854606b74808d939fa3ababa49f9b979892919192939a989d9f938f82786d7a8794abb4a094877a6d6154473a2e211407000814212e3b4754616e7b8798a2aeaa9d908377695e53463d393634383a3e434c555e69717e8b97a1adb9aca09386796d6053463a2d201307000915222f3c4855626f7b8895aab4a99c8f837669544a3f33281c0f0300000000020e1a2531434f5c6976828f9ca9b4aa95887b6f6255483c2f221509000000000000000000000000000000010d1a2734404d5a6773808d9a9f9f9f9b8e8175685b4e4235281b0f02000000000000000000000000000000000000000000000000000006111c27313b434a4f51535353535353504e49423a31261c100500000000000000000000000000000000000006111c27313b434a4f51535353535353504e49423a31261c10050000000005101b26303a42494e4f5353504e4a433a31271c110500000000000000000000000000000000000000000000000000000000000000000000030f1c2935424e5a66707679797670665a4e4135281c0f00000000000000000000000000040a0f13151b1f21222527292a2b2c2c2d2c2b2b2a28262321201d1913100c07010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010e1a26323d4851595e606060605e575552545f606060606060606058565053585f6060605f5c574f453a2f24180c000000000000000000000000000000091623303c4956636f7c8996939393939083776a5f53473a2e2d2d28201f1c18121f2b3844505c6674818e93939393978a7d7063574a3d3024170a000000000a15212e3b47535f6a7784919daaac9c9083766a5f53473a3025190d010000000000000000000000000000000000000000010d1924303946525e6874818e9aa7aa9f92857a6d6054473c31261b0f0300000000111e2b3744515e6a7784919daaa5998c7f7266594c3f3326190c00000000000000000000000b1824303c48535d64676c6c6c6c6c6c6c65625b5146464644433f3932292b32383b3d4646444f5961636c6c6c6c6c6c6c68655d53483d3125180c0000000000000000000000040c131820272b3036393b3e4143454646454543423f3b3a37312c283a4043454646464646463f3e3a342d251b1106000000000000000000000000030b12181c1f202c2d2d2d2d22211e1a140e0600000000000000000000000000000000030a11171c1f2d2d2d2d2d2d2d2d2726231f19120a0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d273039434b545b606a6f767c8185898c8e90919292929291908e8b8985817c756e69605b534b433931271d1207000000000000000006121e2b37424e57636f7c87939fa5afa9a199938f8a878584848586888c90959e948d80747b8794a1ada093877a6d6054473a2d21140700091623303c4956636f7c8996aab4a79a8e817467574d42342d2a282b2d313a434d57606d7985929eabb8aca09386796d6053463a2d201307000a1723303d4a5663707d8996a3b0a89b8e8275685b4f422d22170b000000000000091c2835424f5b6875828e9ba8b0a396897d7063564a3d3023170a000000000000000000000000000000010d1a2734404d5a6773808d93939393938e8175685b4e4235281b0f0200000000000000000000000000000000000000000000000000000a16222e39434d555b5d6060606060605c5a544c42382d21160a0000000000000000000000000000000000000a16222e39434d555b5d6060606060605c5a544c42382d21160a000000000915212c38424c545a5c60605d5a544c43382d22160a0000000000000000000000000000000000000000000000000000000000000000000003101d2a3643505d69768286868276695c4f4336291c100000000000000000000000040b10161b1f22262b2e2f3233353738383939393837373532302d2c29241f1d18120b060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111d2a36424e59636b6c6c6c6c6b64615a534d53535353535353534d535b60656c6c6c6c6b6861574c4034281c0f0300000000000000000000000000000e1b2834414e5b677481868686868686867f7265574e4237393939352d2c28231d1c28343f4a5463707d868686868686868175685b4f4235281c0f0000000006131f2b37434e5865727f8c98a2ab9f94887c6f62564c4135291e1308000000000000000000000000000000000000000005111d2935414c56616e7a86929faca3988d8074685d5245392a20150a0000000000111e2b3744515e6a7784919daaa5998c7f7266594c3f3326190c00000000000000000000000814202b36414a53595b6060606060606059565153535353514f4a443b32353d444849535353534f5557606060606060605b59534b41372c20140800000000000000000000000001070d151b1e252a2d2e31353738393939383735322f2e2b261f282f34373839393939393932312e29231b1309000000000000000000000000000000070c10131320202020201514120e090300000000000000000000000000000000000000060c101220202020202020201a1917130e0800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d18232e39434b555d666c737c83898e9298999b9d9e9f9f9f9f9e9c9b9897918d88827b736c655d554b43392f24180e05000000000000000814212e3a47535f6a76828f9aa4afaba1979287827d7a79787778797b7f838a9196928a7e7b8895a1ada093867a6d6053473a2d201407000a1724313d4a5764707d8a97a3b0a5988c7f7265594c3f31261e1c1f2028313b45515c6673808d99aab4aca09386796d6053463a2d201307000a1724313d4a5764707d8a97a3b0a79a8e8174675b4e4134281b060000000000010e1b2834414e5b6774818e9aa7b0a3978a7d7064574a3d3124170a000000000000000000000000000000010d1a2734404d5a677380868686868686868175685b4e4235281b0f0200000000000000000000000000000000000000000000000000010e1a27333f4a555f676a6c6c6c6c6c6c69665e54493e3226190d0100000000000000000000000000000000010e1a27333f4a555f676a6c6c6c6c6c6c69665e54493e3226190d010000000d1925323d49545e66696c6c69665e544a3e32261a0d0100000000000000000000000000000000000000000000000000000000000000000003101d2a3643505d697683908f8276695c4f4336291c1000000000000000000000060c161b21272c2f31373a3c3e4042444545464645454443413f3d3a39352f2c29241d17110a02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006131f2c3945525e6b757979797978706c615f57514b434646424b51575f656c71787979797873685c5044372b1e110500000000000000000000000000000d1a2733404c59646f7479797979797979726d6256453c45464646413a38342e271e232e384855616b7079797979797979756f65594d4034271b0e00000000030f1b26323c4754606d7a86929faaa69a8d8174685e52463a2f24190d02000000000000000000000000000000000000040d1a232d3946525d6873808d98a3aa9f92867b6e61564c413529180e040000000000111e2b3744515e6a7784919daaa5998c7f7266594c3f3326190c0807050200000000000000030f1a252f3841484c4e53535353534c525f6060606060605d5b554d44393d474f54566060606060605a585353535353534f4d4841392f251a0f040000000000000000000000000000040a0f14191e202125282a2b2c2c2c2b2a282522211e1a151d23272a2b2d2d2d2d2d2d2524221e1811090100000000000000000000000000000000000406071313131313080705020000000000000000000000000000000000000000000000030613131313131313130d0c0a070200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c161f2834404b555d676d78808790949b9fa2a9a29e9c9b9a9a9b9d9fa3a9a19e9a948f877f776d675d554b40352920170d020000000000000815222f3b4855626e7b88949facaea39992857d75716e686b6b666d6e72767d84909492857d8996a3aca09386796d6053463a2d201307000b1824313e4b5764717e8a97a4b0a4978a7d7164574a3e3124171012161f2834404b54626f7c8998a3aeaca09386796d6053463a2d201307000b1824313e4b5764717e8a97a4b1a79a8d8174675a4e4134271b0e0100000000010e1b2734414e5a6774818d9aa7b0a4978a7d7164574a3e3124170b000000000000000000000000000000000d1926333f4c58646e7379797979797979756f65594d4034271b0e010000000000000000000000000000000000000000000000000003101d2936424f5b6771777979797979797670665a4e4235291c0f030000000000000000000000000000000003101d2936424f5b6771777979797979797670665a4e4235291c0f030000000f1c2835414e5a66707679797670665a4e4235291c0f0300000000000000000000000000000000000000000000000000000000000000000003101d2a3643505d697683908f8276695c4f4336291c100000000000000000030a111721272c32383b3c4347484b4d4f5151525253525251504e4c494745413a39352f28221c140b06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000613202d394653606c7987868686847d756e69605c554f46454f545c60696e777e8586868685786b5f5245382c1f120500000000000000000000000000000b1824303c48535d64676c6c6c6c6c6c6c65625b514c50525353534e464540393029202c38444f5961636c6c6c6c6c6c6c68655d53483d3125180c00000000000a15202c3945525d6874808d98a3ac9f92867a6d61564c4135291f14090000000000000000000000000000000000010c161f2a36424d57616d7a85929faaa2988d8074695e52433a2f241906000000000000111e2b3744515e6a7784919daaa5998c7f7266594c3f332619191514120e090300000000000008131d262f363c4041464646414c565e6c6c6c6c6c6c6c6a675f554a3f444f5960636c6c6c6c6c6c67645c534846464642403d372f271e1309000000000000000000000000000000000002080e111414181b1d1f1f201f1f1d1b191514120e0912171b1e1e202020202020191816120d060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e28313a45515c676d79828d92999fa6a39f9a97928f8e8d8e8e9092989b9fa3a69e99928c82796d675d51453f32291e14080000000000000d192633404c5966737f8c99a6b0ac9f92877c6f6b64615e56545c6062656c707a8290949083909daaaca09386796d6053463a2d201307000b1825313e4b5864717e8b97a4b0a396897d7063564a3d3023170a060d18232e3a4653606d7986929facaca09386796d6053463a2d201307000b1825313e4b5864717e8b97a4b1a79a8d8074675a4d4134271a0e0100000000010e1a2734414d5a6774808d9aa7b1a4978b7e7164584b3e3125180b000000000000000000000000000000000b17232f3b47525c64676c6c6c6c6c6c6c68655d53483d3124180c000000000000000000000000000000000000000000000000000004111e2a3744515d6a77838686868686868276695c504336291d10030000000000000000000000000000000004111e2a3744515d6a77838686868686868276695c504336291d1003000000101c2936434f5c69768286868276695d5043362a1d100300000000000000000000000000000000000000000000000000000000000000000003101d2a3643505d697683908f8276695c4f4336291c1000000000000000030c151c232832383d4348494e5355585a5c5d5e5f5f605f5e5e5d5b595654514c47454039332d261d181008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1825313e4b5864717e889396918a827b736d67615953525960666d737b828b929792877e7064574a3d3124170a0000000000000000000000000000000814202b36414a53595b606060606060605956514f575d5f6060605b53514b423a322a28333e474f5557606060606060605b59534b41372c201408000000000004111d2935414c56616e7b86929faaa2988c8073685d52453b30251a0d030000000000000000000000000000000007121d28313946535e6973808d98a2a89f92857a6d61564d4231281e1308000000000000111e2b3744515e6a7784919daaa5998c7f7266594c3f3326252522211e1a140e060000000000010b141d252b30333439393946525e68767979797979797771675b4f434854606b70797979797979746e64584c4039393534312c251e150c0200000000000000000000000000000000000000020507080b0e101213131212100f0c0808060200070b0f11121313131313130c0b09060100000000000000000000000000000000000000000000000000000000050a0d0f101313100f0d0a0500000000000000000000000000000000000000000000000000000000000000000000020608080b0e1011121313121211100d0b080705020000000000000000000000000000000000000000000000010d19242f3a43505a606d79828f949fa3a7a099928e898583818181828386898e92999fa7a39f948f82796d605b51443b3025190e020000000005111e2a36424d576976838f9ca9b1a79a8d80736a605954524c4a5053555a61676d798290959095a0abaca09386796d6053463a2d201307000b1825323e4b5865717e8b98a4afa296897c6f6356493c302316090007131f2c3845515c667683909da9aca09386796d6053463a2d201307000b1824313e4b5764717e8a97a4b1a79a8d8174675a4e4134271b0e0100000000010e1b2734414e5a6774818d9aa7b1a4978a7e7164574b3e3124180b0000000000000000000000000000000007131f2b36404a52585a606060606060605b59534b41372c201408000000000000000000000000000000000000000000000000000004111e2a3744515d6a778490939393938f8376695c504336291d10030000000000000000000000000000000004111e2a3744515d6a778490939393938f8376695c504336291d1003000000101c2936434f5c6976828f908376695d5043362a1d100300000000000000000000000000000000000000000000000000000000000000000003101d2a3643505d697683908f8276695c4f4336291c10000000000000030d151e262e343d44484f5456585f626566686a6b6b6c6c6c6b6a6a686563605d5553514b443f382f2a221a11080000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1724303d4956626c717f8b919e948f868079706b615f5d606b6f797f868f949f93887e716c6155493c3023160a000000000000000000000000000000030f1a252f3841484c4e535353535353534c4a4c5761696b6c6c6c68605c544c443c342c2c353e44484a535353535353534f4d4841392f251a0f040000000000010d19242f3a46525e6974808d98a2aa9f92857a6d60574d42362a1f150b010000000000000000000000000000050e18242f39434f59616e7b86929faaa0968c7f72685e52443b301f160c01000000000000111e2b3744515e6a7784919daaa5998c7f7266594c3f333232322e2d2a261f180f060000000000020b131a202427282d2e3b4754616e7a86868686868683776a5d5144495663707d8686868686868074675a4e41342d282725201a130c0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030a11161a1c1d20201d1c1a16110a0300000000000000000000000000000000000000000000000000000000000205090e121415181b1d1e1f20201f1f1e1c1a181514120e090502000000000000000000000000000000000000000004111d2935414c56616c74818e949ea6a69f959087817c79767474747577797d818790959ea5a69e948e81756d62564c41362a1e1408000000000714202d3a46525e697885929fabaca095877b6e61584f4746413f44464850555d676e7b85929da0a7b1aca09386796d6053463a2d201307000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f2316090004101c2834404b546875828f9ba8aca09386796d6053463a2d201307000a1724313d4a5764707d8a97a3b0a79a8e8174675b4e4134281b0e0100000000010e1b2834414e5b6774818e9aa7b0a3978a7d7064574a3d3124170a00000000000000000000000000000000020e19242e3840474c4d535353535353534e4d4841392f251a0f04000000000000000000000000000000000000000000000000000004111e2a3744515d6a7784909d9f9f9c8f8376695c504336291d10030000000000000000000000000000000004111e2a3744515d6a7784909d9f9f9c8f8376695c504336291d1003000000101c2936434f5c6976828f908376695d5043362a1d100300000000000000000000000000000000000000000000000000000000000000000003101d2a3643505d697683908f8276695c4f4336291c100000000000020b151f2730383f444f54596063676a6f7173757778787979787877767472706d6764605d55504a423c342c231a100700000000000000000000000000000000000000000000000000000000000000000000000000000000000815212d3945505a626d727f8b919c98928c847d756e69686d747c838c92989c918b7f726c625a5044392d2014080000000000000000000000000000000008131d262f363c4041464646464646463f44505d697378797979746d665e564e463e35282c33383c3d4646464646464642403d372f271e13090000000000000008131e2a36424d57616d7a85929fa8a2978d8073695e52463d31271d120700000000000000000000000000020b17202935404b55606b75828f98a3a59d9184796d60564c4132291f0d0400000000000000111e2b3744515e6a7784919daaa5998c7f7266594c3f3f3f3f3f3b3a36312a21180e03000000000001080f14181a1b212e3b4754616e7a87939393939084776a5d5144495663707c89939393938d8174675a4e4134271c1b18140f090200000000000000000000000000000000000000000000020507080b0e111112131312110f0c0908060300000000000000000406070b0f1213131211100e0c0b09060100000000000000000000000000000000040d151c2226292a2d2d2a2926221c150d04000000000000000000000000000000000000000000000000000002080e11151a1e21222528292b2c2c2c2c2b2b29272522211e1a14120e09020000000000000000000000000000000000000613202c3945525d68717e8a939da6a89f948f837c746f6c6668676768666d70757c838f939ea7a69e938b7f72685e52463b3025190d010000000814212e3b4754616e7b8798a2aeaa9d908377695e53463d393634383a3e434c555e69717e8b97a1adb9aca09386796d6053463a2d201307000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000c18232e414e5b6874818e9ba7aca09386796d6053463a2d201307000a1723303d4a5663707d8996a3b0a89b8e8175685b4e4235281b090000000000020f1b2835424e5b6875818e9ba8b0a3968a7d7063574a3d3024170a00000000000000000000000000000000020e1a26313c454e53556060606060606055534e463c31261b0f03000000000000000000000000000000000000000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d10030000000000000000000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d1003000000101c2936434f5c6976828f908376695d5043362a1d100300000000000000000000000000000000000000000000000000000000000000000003101d2a3643505d697683908f8276695c4f4336291c1000000000000a141d273139424a505960636b6f74787b7e8082848485858685858483817f7c7a75716d67605b544e463e352c23190d040000000000000000000000000000000000000000000000000000000000000000000000000000000005111d29343e48505a626d727f8c929c9f96918a827b73717a818891959f9d928c7f736d625a50483e33281c100400000000000000000000000000000000010b141d252b303334393939393939393845525f6b788586868681786d685f584f473f342e272c2f30393939393939393534312c251e150c0200000000000000010e1a25303b46525e68727f8c96a0a99f92867b6e61594f43392f24180e040000000000000000000000000a141d29323a45515d67707d89939ea89d93897d70675c51443a3020170d0000000000000000111e2b3744515e6a7784919daaa5998c7f7266594c4c4c4c4c4c4846423b332a1f14090000000000000003080b0814212e3b4754616e7a87949f9f9d9084776a5d5144495663707c89969f9f9a8d8174675a4e4134271b0e0c08040000000000000000000000000000000000000000000003090e121415181b1d1e1f201f1f1d1b191515120f0a0401000000070c101313181c1e1f201f1e1d1b181815120d060000000000000000000000000000030d161f272d32353639393635322d271f160d03000000000000000000000000000000000000000000000002080d14191e20262b2e2f323436383939393938373634322e2d2b26201e1a140e090200000000000000000000000000000004111d2935414c55606d7a85929ea5aca0968f82796e6a62605b545a5b545c60636a6e78818f959faba59f92857a6e61564c41362a1e1105000000091623303c4956636f7c8996aab4a79a8e817467574d42342d2a282b2d313a434d57606d7985929eabb8aca09386796d6053463a2d201307000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f2316090000071a2734404d5a6773808d9aa6aca09386796d6053463a2d201307000916222f3c4955626f7c8895aab4a99c8f8276695c4f4330251a0e0200000000030f1c2936424f5c6975828f9ca8b5ab95897c6f6256493c2f2316090000000000000000000000000000000006121e2b37424e575f6c6c6c6c6c6c6c6c625f584e43372b1f1206000000000000000000000000000000000000000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d10030000000000000000000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d1003000000101c2936434f5c6976828f908376695d5043362a1d100300000000000000000000000000000000000000000000000000000000000000000003101d2a3643505d697683908f8276695c4f4336291c100000000006111b262f39434b545c606b70767c8184888b8d8f9091929293929191908e8c8986827e79716c665f584f473e352b1f160c01000000000000000000000000000000000000000000000000000000000000000000000000000000000c17222d363f48515b636d737f8c929ca09e948f867f7d848d939aa09d938d80736d635b51483e362c22170b000000000000000000000000000000000000020b131a202427282d2d2d2d2d2d2d323f4c5965727f8c93938e827a6f6a615951444039302823242d2d2d2d2d2d2d282725201a130c0300000000000000000009141f2a36414c56606d7984919da5a2988e81756b60554b40352920160b020000000000000000000006111c262f3a444f59606d7984919ea5a1968e81746b60554b4032291e0e050000000000000000111e2b3744515e6a7784919daaa5998c7f72665958585858585855534d453b31261a0e020000000000000000000814212e3b4754616e7a8794a1aa9d9084776a5d5144495663707c8996a3a79a8d8174675a4e4134271b0e0100000000000000000000000000000000000000000000040a0f141a1e212125282a2b2c2c2c2b2a282622211f1b15110d08030b12181c1f2025292b2c2c2c2b2a272524221d181109010000000000000000000000000a151f2831383e4243464643423e3831281f150a00000000000000000000000000000000000000000000040c13191f252a2d31373a3b3e41434445464645454443403e3b3a37312d2a251f1a140d0500000000000000000000000000000613202c3945515d6773808d97a1ada69e91847a6d675f5853504a4e4e4b5153585f666d79839099a3ada2978d8174685e5246392d2014090000000a1724313d4a5764707d8a97a3b0a5988c7f7265594c3f31261e1c1f2028313b45515c6673808d99aab4aca09386796d6053463a2d201307000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d201307000814212e3b4754616e7b8798a3aeaa9d9084776a574d42362a1e12050000000005111d2935414c566a7783909daaafa399877b6e6154483b2e211508000000000000000000000000000000000814212e3a47535f6a7679797979797979766a5f53473a2e211508000000000000000000000000000000000000000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d10030000000000000000000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d1003000000101c2936434f5c6976828f908376695d5043362a1d100300000000000000000000000000000000000000000000000000000000000000000003101d2a3643505d697683908f8276695c4f4336291c10000000000b17222d38414b555c666d737d82898e919698999b9d9e9e9f9f9f9e9d9d9b9898928f8a857e786f6a61594f473d31281e13080000000000000000000000000000000000000000000000000000000000000000000000000000000006101b242d363f49515b636d73808d929da49e98928c8a91969fa49e938e81746e645b51493f362d241a10050000000000000000000000000000000000000001080f14181a1b20202020202025313e4a56626d75818f969490847c706b625b514a423a322a21192020202020201c1b18140f090200000000000000000000020d1925303a45515c67707d89939da89e93897d70675d51453d32281d140a000000000000000000071017222d38424c56606b74808d96a0a3999184796d60594f43392e20170d000000000000000000111e2b3744515e6a7784919daaa5998c7f726665656565656565615f574d42362a1e12050000000000000000000814212e3b4754616e7a8794a1a99d9084776a5d5144495663707c8996a3a79a8d8174675a4e4134271b0e01000000000000000000000000000000000000000000060c161b1f252a2d2e31343738393939383735322f2e2b26201d19130c151d23282c2d32353839393838363432312e29231b1309000000000000000000000005111c27313a434a4e505353504e4a433a31271c11050000000000000000000000000000000000000000080e161e25293036393c4247484b4e50515253535252514f4d4b4846423c3a36302a251f170f08000000000000000000000000000714212d3a4754606d7a85929fa9aa9e94897d70685d554e46443f41414045464e545c676f7c87929faca99f92867a6e6154473c31261a0e0200000b1824313e4b5764717e8a97a4b0a4978a7d7164574a3e3124171012161f2834404b54626f7c8998a3aeaca09386796d6053463a2d201307000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d201307000713202d3a4653606d7986929facab9f928578695e52463a2d201407000000000713202d3946525d687885929eabac9f9286796d6053463a2d201307000000000000000000000000000000000815222f3b4855626e7b868686868686867c6f6255483c2f22140a000000000000000000000000000000000000000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d10030000000000000000000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d1003000000101c2936434f5c6976828f908376695d5043362a1d100300000000000000000000000000000000000000000000000000000000000000000003101d2a3643505d697683908f8276695c4f4336291c10000000030f1b27333f49535c676d7880888f949a9ea1a8a6a9a19e9d9d9c9d9d9ea1a9aaa39f9b97918b837c706b61594f433a2f24190d010000000000000000000000000000000000000000000000000000000000000000000000000000000009121b242d373f49525b636e74808d929da5a39f99979ea1a69e948e81786c605c524940372d241b11080000000000000000000000000000000000000000000003080b0d0e131313131316222e3a46515b606d7a8491989691867d726d605c544c443c332b2317110a1313130f0e0c08040000000000000000000000000008131e2834404b55606b74818e96a1a59d9184796d60594f443a2f261b110600000000000000060f192228333f4a545e68707d88939fa69f92877d6f675d51473d30271d0e05000000000000000000111e2b3744515e6a7784919daaa5998c7f7272727272727272726e695f53463a2d2114070000000000000000000814212e3b4754616e7a87949c9c9c9084776a5d5144495663707c89969c9c9a8d8174675a4e4134271b0e0100000000000000000000000000000000000000030a111720272b31363a3b3e4144444546464544423f3c3b37322c29241e191e272e34383a3e42454646454443413f3d3a342d251b1106000000000000000000000a16222d38434c545a5d60605d5a544c43382d22160a000000000000000000000000000000000000020a121a202830353b4146474e5355585b5c5e5f5f5f5f5e5e5c5a5855534d4846423b363029211a120a020000000000000000000005111e2a36424d5765727f8b98a2aea99c8f82756b60564c433c38332d2e34383c424b555f6a74818e9ba8aea3988c7f7266574d42372b1e120500000b1825313e4b5864717e8b97a4b0a396897d7063564a3d3023170a060d18232e3a4653606d7986929facaca09386796d6053463a2d201307000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d2013070006121f2b3844505c667784909daaaea298877b6e6154483b2e21150a000000000714212e3a4754616d7a8797a1adaa9e918477665c5145382c1f1306000000000000000000000000000000000714212d3a4754606d7a879893939393897d7063564a3d2f261b11060000000000000000000000000000000000000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d10030000000000000000000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d1003000000101c2936434f5c6976828f908376695d5043362a1d100300000000000000000000000000000000000000000000000000000000000000000003101d2a3643505d697683908f8276695c4f4336291c1000000005121f2b3744505b656d79828d939a9fa6a7a09d999697929090909090929795999da0a7a19e9590867d706b60564c4135291d1307000000000000000000000000000000000000000000000000000000000000000000000000000000000009121b252d374049525c646e74808d939da59f9f9f9fa79f948f82786d665b504a40372e251b1209000000000000000000000000000000000000000000000000000001010606060606121e29353f45525d686f7c86929f9892877f746d665d564d453d3528231c140c0300020100000000000000000000000000000000020c18232e39434f59606d79849199a3a0968d80736b60564c41382d221710070000000000030d18212b343d44505b666d7a85919aa49e948c7f726b60554b41352b1e150b00000000000000000000111e2b3744515e6a7784919daaa89b8f817f7f7f7f7f7f7f7f7f7b6e6155483b2e2215080000000000000000000814212e3b4754616e7a878f8f8f8f8f84776a5d5144495663707c898f8f8f8f8d8174675a4e4134271b0e01000000000000000000000000000000000000030c151c232832373b4246484b4e505152535252504e4c4847433c39352f28222b30394045464b4f5152535251504e4b4a463f372d23180d010000000000000000010d1a26323e4a545e66696c6c69665e544a3e32261a0d0100000000000000000000000000000000020b141c242c323a41464d5254575f626567696b6c6c6c6c6b6a696765615f5754524d46423b332c241c140a020000000000000000000714202d3a46525e697683909daaada196897d7063594f433a312b282223282c3039434e58626f7c8895a0acaa9d908477695f53463a2d21140700000b1825323e4b5865717e8b98a4afa296897c6f6356493c302316090007131f2c3845515c667683909da9aca09386796d6053463a2d201307000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d2013070003101c28343f4a546875818e9ba8b3aa978a7d7064574a3d32271b0d04000001081623303d495663707c8996a9b3a89c8f827569544b4034281c1004000000000000000000000000000000000613202c3945525d687985929f9f9f998c7f7366584e41382d2217110a02000000000000000000000000000000000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d10030000000000000000000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d1003000000101c2936434f5c6976828f908376695d5043362a1d100300000000000000000000000000000000000000000000000000000000000000000003101d2a3643505d697683908f8276695c4f4336291c10000005111e2a36414c56606c77818e949fa4a7a09d95908c89878584838383848587898c90959ea1a7a09892867d6f685d52453a2f24180d01000000000000000000000000000000000000000000000000000000000000000000000000000000000009131c252e37404a525c606c77818e93939393939393959082796d665c544a3f382e251c1309000000000000000000000000000000000000000000000000000000000000000000010d18232935414c565f6a727e8b939e99938c81786d685f574f473f342e261e150c030000000000000000000000000000000000000007121d27303d45515d676f7d87929fa69f93877d6f685e53493f332722190f060000000009141f29333d46505a606c78828f97a1a0958f82776c60594f433a2f23190c0300000000000000000000111e2b3744515e6a7784919daaaa9e938f8b8b8b8b8b8b8b8b8a7d7164574a3e3124170b0000000000000000000714212d3a4754606d7a8283838383838174675b4e414855626f7c8283838383827f7265584c3f3225190c000000000000000000000000000000000000030d151e262e343d43474d5354585b5d5e5f5f5f5e5d5b5955534e4745413a3129343c424b5153585c5e5f5f5f5e5d5a585651493f34291d12060000000000000000030f1c2935424e5a66707679797670665a4e4235291c0f03000000000000000000000000000000010b141d262e363e444c52565e61666a6e717476777879797878777673716e6966615e57524d453e362e261c140a0000000000000000000814212e3b4754616e7b87959fabab9e9184786c6053463d31281f1c17181c1f27313c47535f6a7784919daaaca095887b6e6155483b2e22150600000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f2316090004101c2834404b546875828f9ba8aca09386796d6053463a2d201307000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d20130700000b17232e3f4b5865727e8b98a8b2a69a8d807367584e43372b1f15100c090e131e2a36414c5666727f8c99a5b3aa998c7f7366594c402e23180c000000000000000000000000000000000004111d2935414c566976838f9caca99d9083766a6053493f3327221b140b040000000000000000000000000000000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d10030000000000000000000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d1003000000101c2936434f5c6976828f908376695d5043362a1d100300000000000000000000000000000000000000000000000000000000000000000003101d2a3643505d697683908f8276695c4f4336291c1000000713202d3946525e68727f8c939ea6a59d959089837f7c7a787776767677787a7c7f838a9297a1a9a29891847a6d60554b4135291d11040000000000000000000000000000000000000000000000000000000000000000000000000000000000010a131c252e384044505b656c7881868686868686868683796d675d544a42382d261c130a0100000000000000000000000000000000000000000000000000000000000000000000070d19242f3a434e58626d75818e95a09f928e827a6e69605951443f3830271e150b00000000000000000000000000000000000000000b151e2935414b55606b727f8c949ea49991847a6d655b50443e342b21180d030000020e1a26313b454e58616c73808d949ea19791837a6d655b50473d31281d11070000000000000000000000111e2b3744515e6a7784919daab0a69e9b98989898989898978a7d7164574a3e3124170b0000000000000000000713202c3945525d686d767676767676746f64584c4047535f6a6f767676767676726d62564a3e3125180b0000000000000000000000000000000000010b151f2730383f444e54575e6164676a6b6c6c6c6b6a6865625f5854524c433f353c464e545c6065686b6c6c6b6b696765625b51463a2e221509000000000000000003101d2a3643505d69768286868276695d5043362a1d100300000000000000000000000000000009131d262f38404850565e61686e73777b7e81838485868685858482807e7b77736e69615e57504840382e261c130900000000000000000b1824313e4b5764717e8a97a7b1a79a8e8174665b5044382b1f160f0b0c10151f2b37434e586773808d9aa6b1a7988b7e7165584b3e2d22170b00000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000c18232e414e5b6874818e9ba7aca09386796d6053463a2d201307000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d20130700000615222f3c4855626f7b8896a0acaa9d9184776a6054473c31271f1c181b1a1e242d3946525e6876838f9ca9aea298897c706356493d302316070000000000000000000000000000000000010d19242f3f4c5966727f8c9aa4ab9f95897c6f655b50443e332d261d160e0600000000000000000000000000000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d10030000000000000000000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d1003000000101c2936434f5c6976828f908376695d5043362a1d100300000000000000000000000000000000000000000000000000000000000000000003101d2a3643505d697683908f8276695c4f4336291c100004101c2834404a54616d7a85929fa5a69d938e837d77736f6d686a6a696a6a676d6f73787e859196a1aaa1968d8073675d5145392c201306000000000000000000000000000000000000000000000000000000000000000000000000000000000000010a131c2627333f49535b666c757979797979797979776d675d554b42392f261c140a0100000000000000000000000000000000000000000000000000000000000000000000000008131e28313c46515b606d79839198a29d948f847b706b625b504a423930271d120700000000000000000000000000000000000000030c18242f3a434f59606c77828f95a0a1968f82776c605a50463d33291f1409000005121e2a36424d57606a717e8a929ca29892857b6e685d53493f352b1f160c000000000000000000000000111e2b3744515e6a7784919d9f9f9f9f9f9f9f9f9f9f9f9f978a7d7164574a3e3124170b00000000000000000004111d2935414c565d6069696969696967645c53483c434e585f6269696969696965625b51463a2e221609000000000000000000000000000000000007121d273139424a50586062696e71747777787979787775726f6a66605d56504540454e5860666d717578797978777674726d62564a3d3124180b000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000007101b252f38404a525a61686d747b8084888b8e8f919292929291918f8d8b8884807b746e69615a524a40382e251b0f06000000000000010e1b2834414e5b6774818e9aa7b4aa978a7e7164544a3f3328190d040000040d1b26323d4a5764707d8a97aab4a79b8e81746853493f33271b0f03000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f2316090000071a2734404d5a6773808d9aa6aca09386796d6053463a2d201307000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d20130700000815212e3a47535f6a7784919eabaca095887c6f62584e4339312c282327262b2f35414c56616d7a86929facab9f9285796d6053463a2d2013070000000000000000000000000000000000000815222f3b4855626e7b87939faba79c9082776c605a50443f382f282017110a020000000000000000000000000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d10030000000000000000000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d1003000000101c2936434f5c6976828f908376695d5043362a1d100300000000000000000000000000000000000000000000000000000000000000000003101d2a3643505d697683908f8276695c4f4336291c100006121f2c3844515c6674808d98a2aa9e948e8179706b6663605d565d5d5d555d6062656c717b84919ea8a99f92857a6d6054473a2d21140700000000000000000000000000000000000000000000000000000000000000000000000000000000000000010a1417222d38414a545b60686c6c6c6c6c6c6c6c6a605d554c433930271d140a0200000000000000000000000000000000000000000000000000000000000000000000000000010c161f2a343f45515d676e7c86929fa59f9691857d726d605c544b42392e23180c000000000000000000000000000000000000000007131d28313d44505b656d7a839197a19e948c80736c61584e453b31261a0e02000714212d3a46535f696f7c869293939992867c6f695f564c41382d23190d04000000000000000000000000111e2b3744515e6a77849193939393939393939393939393938a7d7164574a3e3124170b000000000000000000010d1924303a444c52545c5c5c5c5c5c5b58534a41363c464e53555c5c5c5c5c5c585651493f34291e120600000000000000000000000000000000020c18242f39434b545c606a6f757b7e8183848586858583817f7c78726d68625a514b4d57606a6f797e82848586858483817f7265584b3f3225180c000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000000000000030c19222d37404a525c636c717a81868c9196989a9c9e9f9f9f9f9e9d9c9a9895918d86817b716c645c524a40372d21180e03000000000005111e2a36414c566a7683909da9aea298887b6e6155483b2d221708000000000a15212e3b4854616e7b8798a2aeaa9d908377655b5044372b1f1205000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d201307000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d201307000006121f2b37434e586673808d99a3afa89b8e81756a5f554b433c38342e3431373a4145525d68737f8c99a3afa79b8e8175675c5145382c1f13060000000000000000000000000000000000000814212e3a47535f6975828f99a3ab9f948c7f726c615a5049413a3227221b140b0400000000000000000000000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d10030000000000000000000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d1003000000101c2936434f5c6976828f908376695d5043362a1d100300000000000000000000000000000000000000000000000000000000000000000003101d2a3643505d697683908f8276695c4f4336291c10000713202d3a4653606d7885929fa9a2988f82786d6760595654524c5050504c5154535b6069707d8a96a0aca2988a7e7164574a3e3124170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111b262f38424a50535b60606060606060605d54514c433a31271e150b02000000000000000000000000000000000000000000000000000000000000000000000000000000040d18222935404b555f6a717e8a939da7a09792877f746d665c544b4034281c100400000000000000000000000000000000000000010c161f27333f49535d686e7b859298a29f93887e706a60574d42362a1e1205000815222e3b4855616e7b858686868686867d706a60574d433a2f261b110700000000000000000000000000111e2b3744515e6a7784868686868686868686868686868686867d7164574a3e3124170b0000000000000000000008131e28323a4145475050505050504e4c4841382f343c4347485050505050504c4a463f372d23180d01000000000000000000000000000000000a141e2935404b555d666d747c82878b8e909192929291908e8c88847f7a716d605d55535f696f7c848b8f9192929291908d86796c605346392d2013000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000a151e2b343f49525c646e737e858d92999da0a8a9a29f9d9c9b9c9d9fa2aaa7a09d99928e857e736e645c52493f332a1f140900000000000713202d3946525e687885929fabac9f9285796c605346392d201306000000000714212d3a46535e697985929facac9f9285796c605346392d201306000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d201307000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d2013070000030f1a26313c4854616e7b87929faaac9f92877c6f675d554e46454041414142474c515b606d7a85929eabaca095897d7063554b4034281c100400000000000000000000000000000000000006121e2b37424d57626f7c87929fa7a69f93877e716c605b534c443d332d261d160e06000000000000000000000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d10030000000000000000000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d1003000000101c2936434f5c6976828f908376695d5043362a1d100300000000000000000000000000000000000000000000000000000000000000000003101d2a3643505d697683908f8276695c4f4336291c10000a1723303d4a5663707d899297979992857b6e665c554f49474541434343414547495057616b7784919daaaa9a8d8174675a4e4134271b0e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141d262f383f44464e5353535353535353504745413a31281f150c030000000000000000000000000000000000000000000000000000000000000000000000000000000000071018242f39434e58616c74818e95a0a9a299928b80786d665c5145382c1f13060000000000000000000000000000000000000000040d17222d38414c565f696f7d869299939a92867c6f695f53463a2d211407000714212d3a46535f696e78797979797979706b61584e453b31281d140a0000000000000000000000000000101d2a36434f5b67717779797979797979797979797979797979716c6155493c3023170a00000000000000000000020c1620283035393a43434343434341403c362f262a32373b3c4343434343433f3e3a342d251b11070000000000000000000000000000000006111c26303845515d676d7880898f93999a9d9e9f9f9f9e9d9b9896918c857e756d675d58626e7b8691969b9e9f9f9e9e9c9386796c605346392d2013000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000000000006111c26303d46515b646e74808a92979fa3a9a19e999792908f8f8f909298989d9fa7a39f97928a80736e635b51453b31261a0e04000000000714212e3a4754616d7a8798a2aeaa9d918477665b5044382b1f12060000000005121e2a36424d576a7784919daaaea298877a6e6154473b2e211408000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d201307000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d2013070000000a15212d3a46535e6975818e98a3aea3999083796d675f5853514b4e4e4e4d53555d606d74818e97a1ada69d9083776b605443392e23180c00000000000000000000000000000000000000020e1a26313c4754606a73808d959fa8a49992877e736c655e564f443f382f2820180f070000000000000000000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d10030000000000000000000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d1003000000101c2936434f5c6976828f908376695d5043362a1d100300000000000000000000000000000000000000000000000000000000000000000003101d2a3643505d697683908f8276695c4f4336291c10000a1724313d4a5764707d8285878a8c8d8073685e544b433d3a39352f362f35393a3f444f596774818d9aa7a99c908376695d5043362a1d1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b141d262d333839424646464646464646443a39352f281f160d030000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d28313c46505a606d7983909893939393928d82796d6053463a2d20130700000000000000000000000000000000000000000006111b262f3a434d57606a707d868686868686857b6e6155483b2e2215080005121e2a36424d575f616b6c6c6c6c6c6c6361594f463d332a1f160b0200000000000000000000000000000e1b27333f4b565f676a6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c64615a5045392d2114080000000000000000000000040e161e24292c2d3636363636363433302b251d20262b2e2f36363636363632312e29231b130900000000000000000000000000000000000b17232e3842505a606d79828d929b9fa4ababa39f9d9c9b9c9d9fa19e97928b82796d685f6a76828f98a1a8aaa39f9995949386796c605346392d2013000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000000000c17232e38424f59626d74808d929ea1a9a39f97918c8885838282838385888b90959ea1a8a29f928d80736d62574d42362a20160a000000000915222f3c4855626f7b8895aab4a99c8f837669544a3f33281c0f0300000000020e1a2531434f5c6976828f9ca9b4aa95887b6f6255483c2f221509000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d201307000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d20130700000005121e2a36424d57616e7b86929fa6aba0958f82796f6a63605c555b5a5b575f62676d747f8c939ea9a99f948a7d7064594f4430271d120700000000000000000000000000000000000000000915202b37434e58606d79839096a0a7a39992877f776d6860595049413a322a2119100700000000000000000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d10030000000000000000000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d1003000000101c2936434f5c6976828f908376695d5043362a1d100300000000000000000000000000000000000000000000000000000000000000000003101d2a3643505d697683908f8276695c4f4336291c10000a1623303c4955616c7076787b7d80827c6f62564d4239302d2c29242a24292c2d33404c5966737f8c99a6aa9d9184776a5e5144372b1e110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b141c22282b2d353939393939393939372d2c29241e160d040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c161f2a343e45515c676e7b8586868686868686867a6e6154473b2e211408000000000000000000000000000000000000000000000a141d28313b454e58616b70797979797979786e695f53463a2d21140700020e1a26313b454d53555f60606060605f57554f473e342b21180d040000000000000000000000000000000b17232e39444d565b5e60606060606060606060606060606060575550483e33281c1104000000000000000000000000040c13191d2021292929292929282724201a13151b1f21222929292929292525221e181109010000000000000000000000000000000003101c28343f4a54616c74818e949da4aca7a09d9992908f8f8f9192999a9e9f948f837a6d666f7c88949faaaea398928c88878886796c605346392d2013000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000003101c28343f4a54606b727f8c929ca4aaa299928c84807b787675757677797b7f838a91969fa6a49c928b7f72695f53463d32271b0f030000000a1723303d4a5663707d8996a3b0a89b8e8275685b4f422d22170b000000000000091c2835424f5b6875828e9ba8b0a396897d7063564a3d3023170a000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d201307000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d201307000000020e1a25313b46535f69737f8c949fa7a79f948f837c75706d676867676869696e737a818c919ca5aaa1978f82766c6155473d331e150b000000000000000000000000000000000000000000030f1b27323c45515d676e7a8490959ea6a399938c827a6f6b605b534c443c332b22191107000000000000000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d10030000000000000000000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d1003000000101c2936434f5c6976828f908376695d5043362a1d100300000000000000000000000000000000000000000000000000000000000000000003101d2a3643505d697683908f8276695c4f4336291c10000814202d39444f59616469696e7073756f6a5f53443b302721201f2023282c2f353a424d566673808c99a6aa9e9184776b5e5144382b1e11000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a11171c1f20282d2d2d2d2d2d2d2d2a21201d19130c0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d18222934404b555f696e78797979797979797976685e5246392d20140700000000000000000000000000000000000000000000020b161f2a333d464f5961636c6c6c6c6c6c6b615f574d42362a1e1205000009141f29333b424648525353535353534a48443e352c22190f060000000000000000000000000000000006121d28323b444b4f51535353535353535353535353535353534a49453e362c22170c000000000000000000000000000002080d1113141d1d1d1d1d1d1b1a18140f080a0f1215151d1d1d1d1d1d191816120d0700000000000000000000000000000000000006121f2b3844505c66717e8b939ea6aea59d95908a86838282838486898d92979f959083786d73808d99a6b0a89f9286807c7a7b7d7063574a3d3024170a000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000006121f2c3844505c666f7c87929fa4aba29892878079736f6a6a696869656c6e72777d848f949fa6a49f92867b6e61584e43382b1f13060000000a1724313d4a5764707d8a97a3b0a79a8e8174675b4e4134281b060000000000010e1b2834414e5b6774818e9aa7b0a3978a7d7064574a3d3124170a000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d201307000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d2013070000000009141f2a36424d57606d78828f959fa7a69f959087817d79777574747476787b80858e939ca3aaa29892857b6e615a5044352b210c03000000000000000000000000000000000000000000000a15202935404b555e686e7b838f949fa3a49f948f847d726c655d564d453d342b23190f060000000000000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d10030000000000000000000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d1003000000101c2936434f5c6976828f908376695d5043362a1d100300000000000000000000000000000000000000000000000000000000000000000003101d2a3643505d697683908f8276695c4f4336291c100004101c28333e474f5557575e61646669625f584e4332292122282b2d2e34383a40454c545e6975828f9ba8aa9d9083776a5d5044372a1d110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b0f12131b20202020202020201d1413110d0801000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f18232f39434d575f616c6c6c6c6c6c6c6c6c6c5e564c41362a1e11050000000000000000000000000000000000000000000000040d18212b343e474f55575f60606060605f55534d453b31261a0e020000030d18212931363a3b454646464646463d3c38332c231a10070000000000000000000000000000000000000b16202932393f4344464646464646464646464646464646463e3c39332c241a100500000000000000000000000000000000010407071010101010100e0d0b08030000030608091010101010100c0b090601000000000000000000000000000000000000000713202d3a4653606d7884919ea5afa69d938e837d797776757677797c80858c9298958e81747683909ca9aca0958a7e736f6e6e706b6155483c2f231609000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000003101c28343f4a54606d78839099a3afa39992867d736d67625f585c5c535b6061656c707a828f949fa9a2988f82766a6054473b2e2215080000000b1824313e4b5764717e8a97a4b1a79a8d8174675a4e4134271b0e0100000000010e1b2734414e5a6774818d9aa7b0a4978a7d7164574a3e3124170b000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d201307000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d20130700000000030e1a26313b44505c666d7a8390959da5a7a099938e898683828181818385888c92979da5a7a09892867d70695e52483e3323190f0000000000000000000000000000000000000000000000040c18242f39434c565e696e7a828c9299a1a69e9691877f776d685f574e463d352b21180c0300000000000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d10030000000000000000000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d1003000000101c2936434f5c6976828f908376695d5043362a1d100300000000000000000000000000000000000000000000000000000000000000000003101d2a3643505d697683908f8276695c4f4336291c1000000b17212c353e44494a4d535457595c55534e463c312a2d2d3338393c4045464b51565d666e7b86929faca89c8f8275695c4f4236291c0f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000306060f1313131313131313110706040100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d27313c454d53555f60606060606060605f524c443b3025190e02000000000000000000000000000000000000000000000000060f19222c353e44484a535353535353524846423b33291f140900000000060f181f262a2d2e38393939393939302f2c28211a110800000000000000000000000000000000000000040e1720282e3336373939393939393939393939393939393931302d28221a120800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1824313e4b5764717e8a96a0acac9f948e8179716d67696869676d70747a7f869095938a7e7885929fabaa9d9184776c6261616361594f44382c201407000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000006121f2c3844505c66727f8b95a0aba89f92877d706b605d55534e4f4f495053555a61686d79829097a1a49f94897c6f6256493c2f2316090000000b1825313e4b5864717e8b97a4b1a79a8d8074675a4d4134271a0e0100000000010e1a2734414d5a6774808d9aa7b1a4978b7e7164584b3e3125180b000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d201307000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d201307000000000009141f28343f4a545e686d7a838e929d9fa7a49f9b9892908e8e8d8e8f9197999ea1a9a29e9590867d706b60574d42362c22110800000000000000000000000000000000000000000000000007121d27313b444d565e686d777f8791979fa6a199928c827a6e6960584f473d332a1e150a00000000000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d10030000000000000000000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d1003000000101c2936434f5c6976828f908376695d5043362a1d100300000000000000000000000000000000000000000000000000000000000000000003101d2a3643505d697683908f8276695c4f4336291c10000005101a232c33393c3d4246484a4d4f4847433c3431363a3b3f4446494b5153555d60686d78828f98a2aea7998c7f7366594c403326190d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010b151f2a333c4246485253535353535353535346413b32291e1408000000000000000000000000000000000000000000000000000007101a232c33383c3d464646464646453b3a36312921180d030000000000060d141a1e21222c2d2d2d2d2d2c2423201c161008000000000000000000000000000000000000000000050e161d23272a2b2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2423211c171008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000106090b0c1313131313130d0c0a070200000000000005121e2a36424d576875818e9ba8afa49a8f82786d66605d555c555c6063676d727b838f9391857b8797a2ada79a8d8074675a545557554f473e33281c1004000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000713202d3a4653606d7984919ea7ada1968d80736b6059514b474342423f44464850565d676d7a85929b9993908c8275685c4f4235291c0f0200000b1824313e4b5764717e8a97a4b1a79a8d8174675a4e4134271b0e0100000000010e1b2734414e5a6774818d9aa7b1a4978a7e7164574b3e3124180b000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d201307000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d2013070000000000030b17232e38424c565e686d79818990959b9fa2aaa39f9d9b9a9a9b9c9ea1a9a49f9c97928c837b706b60594f453b30241a1000000000000000000000000000000000000000000000000000010b151f29323b444d565d656c727d858f949fa3a39f948f847b6f6a60594f453c30261c1106000000000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d10030000000000000000000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d1003000000101c2936434f5c6976828f908376695d5043362a1d100300000000000000000000000000000000000000000000000000000000000000000003101d2a3643505d697683908f8276695c4f4336291c1000000008111a21282d3031363a3b3d40423c3a37373b3c4246484a505355555c6063676d727a818f949eaaab9f95887c6f6255493c2f22160900000000000000000000000000000000000000000000000000000003080c0e0e131313131313130f0e0c09040000000000000000000000000000000000000000000000000000000000000003070b0d0e131313131313130e0e0c08030000000000000000000000000000000000000000000000000000000000030d18212a31373a3b4546464646464646463b3936302920170d0200000000000000000000000000000000000000000000000000000008111a21282c2f30393939393939382e2d2a261f180f060000000000000003090e1214151f202020202020171614100b050000000000000000000000000000000000000000000000040b12171b1d1e20202020202020202020202020202020171714110c0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070d121618192020202020201a1917130e0800000000000714202d3a46525e697885919eabac9f93877c6f665c54514b4f4b5153555d60696e79818f949083909da9b3a4988b7e7165584b484a48443e352c21160b00000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000004101d2935404b5564717d8a96a1acaa9e9184796d60594f45403937312d3337393e444c555e68717e8b8e8a86837f7c6f6255483c2f2215090000000a1724313d4a5764707d8a97a3b0a79a8e8174675b4e4134281b0e0100000000010e1b2834414e5b6774818e9aa7b0a3978a7d7064574a3d3124170a000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d201307000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d20130700000000000006111c26303a444c565e676d747c83898e9298999b9d9e9f9f9f9f9e9d9b999993908b857f786e6960594f473d33291f12080000000000000000000000000000000000000000000000000000030d172029323b444c535b606b707a828c9299a1a69e9691857d6f6b60574d42382e23170c020000000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d10030000000000000000000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d1003000000101c2936434f5c6976828f908376695d5043362a1d100300000000000000000000000000000000000000000000000000000000000000000003101d2a3643505d697683908f8276695c4f4336291c10000000000810171c2023252a2d2e31333036393c4347494d5354545b606266676d7074797e858f939ea6aea49d9083776a6054473b2e2215080000000000000000000000000000000000000000000000000001090f14181a1b202020202020201c1b191510090200000000000000000000000000000000000000000000000000000001080e1317191a202020202020201b1a18140f090100000000000000000000000000000000000000000000000000000000060f181f262b2d2e3939393939393939392e2d2a251e170e0500000000000000000000000000000000000000000000000000000000000810161c2023242c2d2d2d2d2d2c22211e1a140d060000000000000000000002050708121313131313130a090704000000000000000000000000000000000000000000000000000000060b0e1011131313131313131313131313131313130b0a080400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010911181e2225252d2d2d2d2d2d2726231f19120a020000000815212e3b4854616e7b8797a1adaa9d9083776a5f544b4540424045474b51575f676d78828f9590959fabb0a3968a7d7063574a3d3d3c38332c231a100500000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000613202c3945515d6775828f9ba8aea3988b7e71675d51473d352f2b2622272b2d323a434c56606d7883817e7a76736f6a5f53473b2e2115080000000a1723303d4a5663707d8996a3b0a89b8e8175685b4e4235281b090000000000020f1b2835424e5b6875818e9ba8b0a3968a7d7063574a3d3024170a000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d201307000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d201307000000000000000a141e28323a444c555c606b6f777d8185898c8e90919292929291908f8d8a86837e79726d665f574f473d352b20170d00000000000000000000000000000000000000000000000000000000050e172029323a4149505960686d777f879297a0a8a09792867d6f695f544a3f34281e13080000000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d10030000000000000000000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d1003000000101c2936434f5c6976828f908376695d5043362a1d100300000000000000000000000000000000000000000000000000000000000000000003101d2a3643505d697683908f8276695c4f4336291c100000000000050b1014161a1e21282f353a4146474e5455575e6165666c6f7276797d81858b91979ea5afa69d92897d7063584e43372b1f1306000000000000000000000000000000000000000000000000030b131a202427282d2d2d2d2d2d2d292825211b140c0300000000000000000000000000000000000000000000000000020b12191f2326272d2d2d2d2d2d2d282724201a130b0300000000000000000000000000000000000000000000000000000000060e141a1e21222c2d2d2d2d2d2d2d2d21201e19140d0500000000000000000000000000000000000000000000000000000000000000050b101416172020202020201f1514120e09030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009131b23292e313239393939393933322f2a241c140a0000000916222f3c4955626f7c8895a9b3a79a8d817467584e4239352f34383a40454d555c666d7a85919d9fa7b1afa396897c706356493d302f2c28211a11080000000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000714202d3a4753606d7a86929facac9f92867a6d60554b403529241d1a171b1f2028313a44515c666d7775716d6866625f584e43372b1f12060000000916222f3c4955626f7c8895aab4a99c8f8276695c4f4330251a0e0200000000030f1c2936424f5c6975828f9ca8b5ab95897c6f6256493c2f231609000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d201307000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d20130700000000000000020c162029323a434b515960636b7075797c7f82838485868685858382807d7a76726d67605c544d453d352b23190e050000000000000000000000000000000000000000000101020000000000050e1720282f383f444f565e656c727d859196a0a9a29892857b6e665c50443a3025190d0000000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d10030000000000000000000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d1003000000101c2936434f5c6976828f908376695d5043362a1d100300000000000000000000000000000000000000000000000000000000000000000003101d2a3643505d697683908f8276695c4f4336291c10000000000000000409121b232b323a41454c525458606266696e7175797c7f8285898d92979ea1a9ada59e948d80746b6054463c32271b0f030000000000000000000000000000000000000000000000010b151d252b303435393939393939393534312c261e150c000000000000000000000000000000000000000000000000000b141d242b303334393939393939393534302b251d150b010000000000000000000000000000000000000000000000000000000003090e1214151f20202020202020201414110e0802000000000000000000000000000000000000000000000000000000000000000000000407090a13131313131312080705020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002070a0c0d13131313090907030005090d0f101313131312100d0903000000000000000000000000000000000000000000000000050a0d0f101313100f0d0a0500000000000000000000000000000007111b252d343a3e3f464646464646403f3b362e261c120800000a1723303d4a5663707d8996a3b0a6998c7f7366594c402f2924292c2f353b434b545d68707d8a959fabb7afa396897c706356493d3023201c161008000000000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000a1723303d4a5663707d8998a3aea89b8e8275675d51433a2f23181d1d1d1d1d161f2834404a545c606a6864615e5655534e463c32261b0f030000000814212e3b4754616e7b8798a3aeaa9d9084776a574d42362a1e12050000000005111d2935414c566a7783909daaafa399877b6e6154483b2e211508000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d201307000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d2013070000000000000000050e1720353f474e524f54596063676d70727576787879797878777573706d6865605d55504a46423c332a1f14090000000000000000000000000000020507080a0b0c0c0d0e0f090907030000050d161d262d333d444c535b606b6f7b849196a1aaa2979083786d60564c41362a1b110600000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d10030000000000000000000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d1003000000101c2936434f5c6976828f908376695d5043362a1d100300000000000000000000000000000000000000000000000000000000000000000003101d2a3643505d697683908f8276695c4f4336291c100000000000000009121b242d353d444c52565e61666a6f73777b7e8285888c8f92989a9fa2a9aca9a19e938e82786d60594f44342b20150a00000000000000000000000000000000000000000000000009131d272f373c40414646464646464642413d3730271e0e050000000000000000000000000000000000000000000000030d1d262e363c3f414646464646464641403c372f271d13090000000000000000000000000000000000000000000000000000000000000205070812131313131313131308070502000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070e1317191a202020201615130f0a1015191c1d202020201f1d19140e07000000000000000000000000000000000000000000030a11161a1c1d20201d1c1a16110a03000000000000000000000000010d18232d373f464a4c5353535353534d4b4740382e24190e02000a1724313d4a5764707d8a97a3b0a5988c7f7265594c3f2e23181c1f24293139424c56616c7683909da9b3afa396897c706356493d302316100b0500000000000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000d1a2733404d5a6673808d99aab4aa978b7e7164554c4131282a2a2a2a2a2a2a2a2a232e39424a51535d5b5754524c4847433c342a20150a000000000713202d3a4653606d7986929facab9f928578695e52463a2d201407000000000713202d3946525d687885929eabac9f9286796d6053463a2d201307000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d201307000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d20130700000000000000010e1a26313d4751595e5f606060555c606366686a6b6c6c6c6c6b6a686664615e566060606055534d453c31261a0e02000000000000000000000002090e111414171818191a1b1c1615130f0a0400040b141b2227323a4149505960696e7b849199a3a99f958c7f73685e5246382d22170b00000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d10030000000000000000000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d1003000000101c2936434f5c6976828f908376695d5043362a1d100300000000000000000000000000000000000000000000000000000000000000000003101d2a3643505d697683908f8276695c4f4336291c1000000000000006101b242d373f474f565d60686d72777c8084878b8e9297999c9fa2aaababa8a19e96918a81796d665c51473d3322190e040000000000000000000000000000000000000000000000030f1a252f3941484d4e535353535353534f4d4942393020170d02000000000000000000000000000000000000000000010b151f2e3840474c4d535353535353534e4d4841392f251a0f0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000106090b0c1313131313130d0c0a07020000000000000000000000000000000000000000000000010a12191f2326262d2d2d2d23221f1b161b212628292d2d2d2c2b29251f19110800000000000000000000000000000000000000040d151c2226292a2d2d2a2926221c150d04000000000000000000000006121e29343f495156586060606060605a58524a40362a1f1307000a1723303d4a5663707d8996abb5a6998d807366544a403428211e1a181f27303a44505a64707d8a97a2adafa396897c706356493d3023160a000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000004101c2834404b546976828f9ca9aea398887b6f6255483c2f3737373737373737373737373039404446514e4b4746413c3b37322a261f180f0600000006121f2b3844505c667784909daaaea298877b6e6154483b2e21150a000000000714212e3a4754616d7a8797a1adaa9e918477665c5145382c1f1306000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d201307000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d2013070000000000000004111d2a36424e59636a6c6c6c6c6b636059595b5d5e5f5f5f5f5e5d5c5a575f626a6c6c6c6c6c5f574d42372b1e120500000000000000000000050d14191e20212324252627282823221f1b160f0700020a111720292f383f444f575f696f7d87929fa9a79f92867a6d6153493f33271b0f03000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d10030000000000000000000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d1003000000101c2936434f5c6976828f908376695d5043362a1d100300000000000000000000000000000000000000000000000000000000000000000003101d2a3643505d697683908f8276695c4f4336291c100000000000040e18222d363f49515960686d737a7f84888d9196989b9ea2a9a9acaaaaa29f9b96918c847e746d675c544a40352b2110070000000000000000000000000000000000000000000000000814202b37414b53595b606060606060605c59544b4232291f140900000000000000000000000000000000000000000007121d2731404a52585a606060606060605b59534b41372b2014080000000000000003060809131313131313130b0a08050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010406070f111213131312110e0b0706040000000000000000000000000000000000070d121618192020202020201a1917130e08000000000000000000000000000000000000000000000a131c242a2f323339393939302f2c2721262d323536393939393835312a231a11070000000000000000000000000000000000030d161f272d32353639393635322d271f160d03000000000000000000000916222e3a46515b62656c6c6c6c6c6c66635c52473b2f23170a000915222f3c4855626f7b8899a3afa89b8f8275665c51443a322d2b2627272628323e4653606d7985929fabafa396897c706356493d3023160a000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000006131f2c3845515c667884919eabac9f9286796d6053464444444444444444444444444444444444444444444444444444443b3a36312a21180e03000003101c28343f4a546875818e9ba8b3aa978a7d7064574a3d32271b0d04000001081623303d495663707c8996a9b3a89c8f827569544b4034281c1004000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d201307000b1825323e4b5865717e8b98a4aca295897c6f6256493c2f23160906040d1a2733404d5a6673808d99a6aca09386796d6053463a2d2013070000000000000006121f2c3845525e6a757979797978706b605c544d5152535352524b515a61696e777979797976695f53463a2d211407000000000000000000050e171f252a2d2e30313233343435302f2c27211910070000060e171d262d333d454d57606b73808d97a2ada2988c8073655b5044372b1f1205000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d10030000000000000000000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d1003000000101c2936434f5c6976828f908376695d5043362a1d100300000000000000000000000000000000000000000000000000000000000000000003101d2a3643505d697683908f8276695c4f4336291c1000000000000a15202a343e48515b626b707a80868c9196999da0a8a8abaaa7a7a09d9a98928e8a847f79716c605c554b42392e231a0f000000000000000000000000000000000000000000000000000c1824303c48535d64686c6c6c6c6c6c6c68655d54443b3025190e0000000000000000000000000000000000000000000c18232f3943525c64676c6c6c6c6c6c6c68645d53483c3024180c0000000000040a0f13151620202020202020181715110c060000000000000000000000000000000000000000000000000000000000000000000000000000000001080d1113141c1e1f1f20201f1e1b181413100c0701000000000000000000000000010911181e2225252d2d2d2d2d2d2726231f19120a020000000000000000000000000000000000000007121c262e353b3f40464646463c3b38322b30383e41434646464645413c352c23190e03000000000000000000000000000000000a151f2831383e4243464643423e3831281f150a000000000000000000000b1825313e4a56626d72797979797979736e63584b3f3226190c000714202d3a4753606d7a86929facab9e9285796d60564c443d3a373134333332323845515c6675828f9ca8afa396897c706356493d3023160a000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000713202d3a4653606d7986939facaa9d908477665c50505050505050505050505050505050505050505050505050505050504846423b332a1f14090000000b17232e3f4b5865727e8b98a8b2a69a8d807367584e43372b1f15100c090e131e2a36414c5666727f8c99a5b3aa998c7f7366594c402e23180c00000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d201307000b1825323e4b5865717e8b989f9f9f95897c6f6256493c2f231b1313100c1a2733404d5a6673808d999f9f9f9386796d6053463a2d201307000000000000000613202c3946535f6c7987868686847d736d665f5751464146454d555c606c717b83868686867b6e6155483b2e2215080000000000000000020d17202930363a3b3d3e3f3f4041423c3b38322b23190f040000050b141b2227333b454f59606d7a85929fabaa9e9185786c605346392d201306000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d10030000000000000000000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d1003000000101c2936434f5c6976828f908376695d5043362a1d100300000000000000000000000000000000000000000000000000000000000000000003101d2a3643505d697683908f8276695c4f4336291c1000000000030f1b26313c46505a626d727d848d92989ea0a8aaaba8a8a09e9a9795908d8985817d78726d67615a514b433930271c1108000000000000000000000000000000000000000000000000000e1a2734404d59646f7479797979797979756f65564d42362a1c11060000000000000000000000000000000000000004101c2934404b55646e7479797979797979746f64594d4034271a0e00000000060e151b1f21222d2d2d2d2d2d2d2524211d1711090000000000000000000000000000000000000000000000000000000000000000000000000000040c13191d2021292a2c2c2d2c2c2a2824201f1c18120b03000000000000000000000009131b23292e313239393939393933322f2a241c140a000000000000000000000000000000000000020e19242e3840474b4d535353534948433d353a42494e5053535353514d473e352a1f140900000000000000000000000000000005111c27313a434a4e505353504e4a433a31271c11050000000000000000000c1925323f4c5865727f8686868686868073665a4d4033271a0d0006131f2c3945515d677783909dabada1978a7e71685e564f484742424140403f3f3f404b546673808c99a6afa396897c706356493d3023160a000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000815212e3b4854616e7b879aa4afa99c90837669545d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d55534d453b31261a0e0200000615222f3c4855626f7b8896a0acaa9d9184776a6054473c31271f1c181b1a1e242d3946525e6876838f9ca9aea298897c706356493d3023160700000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d201307000b1825323e4b5865717e8b9393939393897c6f6256493c2f2d28201f1c181a2733404d5a6673808d939393939386796d6053463a2d20130700000000000000000b1825323e4b5865717e8b9296918780786e69625b524c4550575f676d747e869095948d8074695f53463a2d211407000000000000000009141f29323b4246474a4b4b4c4d4e4f4948433d352b21160a000000020a11172129333d45525d6874808d9aa7ada197887c6f6255483c2f221509000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d10030000000000000000000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d1003000000101c2936434f5c6976828f908376695d5043362a1d100300000000000000000000000000000000000000000000000000000000000000000003101d2a3643505d697683908f8276695c4f4336291c100000000006121f2b37434e58626c727f8791969fa2aaaaaaa29f9b9896918e8a8784807d7975706d66605d555045403930271e150b00000000000000000000000000000000000000000000000000000e1b2835414e5b687481868686868686868175695e5246382d22170b0000000000000000000000000000000000000006131f2c3845515c677480868686868686868174685b4e4135281b0e00000006101820262b2e2f3939393939393931302d29221b1209000000000000000000000000000000000000000000000000000000000000000000000000040d161e24292c2d363738393939383735312d2c29231d150d0600000000000000000007111b252d343a3e3f464646464646403f3b362e261c1208000000000000000000000000000000000007131f2a35404a5257596060606056544f473d424c545a5c6060605f5e5850473c3125190d0100000000000000000000000000000a16222d38434c545a5d60605d5a544c43382d22160a0000000000000000000c1925323f4c5865727f8b939393938d8073665a4d4033271a0d0004101d2935404b5566737f8c99a3aea99e91847a6d68615955534d4f4e4d4c4c4c4b4b4c5865727f8b98a5afa396897c706356493d3023160a000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000916232f3c4956626f7c8995acb6a89c8f82756a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a615f574d42362a1e120500000815212e3a47535f6a7784919eabaca095887c6f62584e4339312c282327262b2f35414c56616d7a86929facab9f9285796d6053463a2d20130700000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d201307000b1825323e4b5865717e868686868686867c6f6256493c3939352d2c28231d2733404d5a66738086868686868686786d6053463a2d20130700000000000000000b1724313d4a56626d73808c9399938d837b726d615e56515a61696e79818a9298958f82786d60574d42372b1e120500000000000000020e1925303b444d5254565758595a5b5b56544f473d32271b0f0300000000060f18212935414c5663707d8996aab3a9988c7f7265594c3f3226190c000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d10030000000000000000000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d1003000000101c2936434f5c6976828f908376695d5043362a1d100300000000000000000000000000000000000000000000000000000000000000000003101d2a3643505d697683908f8276695c4f4336291c10000000000815212e3a47535f6a717e889299a1a9aca69f9c98928e8b8784817e7a7773706d6663605c54514b433e342e271e150c0300000000000000000000000000000000000000000000000000000916232f3c4956626f7c89959393939392867b6e61544a3f33281c0f030000000000000000000000000000000000000714202d3a4753606d7985929393939395897c6f6356493c302316090000040e18222a32373b3c464646464646463e3d39342d241b110600000000000000000000000000000000000000000000000000000000000000000000010c161f282f35393a4244454646464544413e3a38342f271f17110a02000000000000010d18232d373f464a4c5353535353534d4b4740382e24190e02000000000000000000000000000000000a17232f3b47525c63666c6c6c6c6360594f4349545e66696c6c6c6c6a62584d4135291d100400000000000000000000000000010d1a26323e4a545e66696c6c69665e544a3e32261a0d0100000000000000000c1925323f4c5865727f8b989f9f998d8073665a4d4033271a0d00000c18242f3b4854616e7b86929fa8ada19690827a706b65615f575c5a5a5959585858585865717e8b98a4afa396897c706356493d3023160a000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000a1623303d495663707c8996a3afa89b8e8177777777777777777777777777777777777777777777777777777777777777776e695f53463a2d211407000006121f2b37434e586673808d99a3afa89b8e81756a5f554b433c38342e3431373a4145525d68737f8c99a3afa79b8e8175675c5145382c1f130600000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d201307000b1724313d4a56626c71797979797979796f6a605447464646413a38342e2726323f4b58636e737979797979797976665c5044382c1f120600000000000000000915212e3a45505a636e74818e939f9590867e756d68605c606c717b838e939f969083796d665c50453c31261a0e020000000000000005111e2a36424d565e61636465666767686360594f43382c1f13070000000000060f1924303a4753606d798698a2aea79a8e8174675b4e4134281b0e000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d10030000000000000000000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d1003000000101c2936434f5c6976828f908376695d5043362a1d100300000000000000000000000000000000000000000000000000000000000000000003101d2a3643505d697683908f8276695c4f4336291c1000000006121f2b37434e58626f7c86929aa3aba8a09e948f8a85827e7b7774716e686763605c5453504a4540393128231f1c17110a02000000000000000000000000000000000000000000000000000915222e3b4854606a7783909daa9fa3998c7f73665b5044382b1f1409000000000000000000000000000000000006121f2b37434e5864717e8a97a29f9f9d9083776b6054483b2f22150900000a15202a343c434749535353535353534b49453e362d22170c0000000000000000000000000000000000000000000000000000000000000000000008131e28313a4145474f515252535352514e4b474540393127221b140b02000000000006121e29343f495156586060606060605a58524a40362a1f1307000000000000000000000000000000000c1926323f4b57636e73797979796f6b6054484e5a66707679797979746a5e5145382b1f120500000000000000000000000000030f1c2935424e5a66707679797670665a4e4235291c0f0300000000000000000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d00000714202d3a46525e6974808d96a1a9a89f9590847d77726e696a6867666665656565646465717e8b98a4afa396897c706356493d3023160a000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000a1724303d4a5763707d8a96a3b0ab9e928583838383838383838383838383838383838383838383838383838383838383837b6e6155483b2e2215080000030f1a26313c4854616e7b87929faaac9f92877c6f675d554e46454041414142474c515b606d7a85929eabaca095897d7063554b4034281c100400000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d201307000915212e3a45505a62656c6c6c6c6c6c6c6260584e525353534e4645403930292f3b47525c63666c6c6c6c6c6c6c6c5c544a3f34281c1003000000000000000005111d29343f48525b606d78818f959f98928b827a706b676d747e8690959d9891847b6e675d544a3f332a1f140900000000000000000714202d3a46525e696e707172727374756f6b6054483b2f22150800000000000008131f2c3845515c677885929faba89b8f8275685c4f4235291c0f000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d10030000000000000000000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d1003000000101c2936434f5c6976828f908376695d5043362a1d100300000000000000000000000000000000000000000000000000000000000000000003101d2a3643505d697683908f8276695c4f4336291c100000000815212e3a47535f6a76828f98a3aca7a0969189827d7975716e696764615e565653514a46443f38352f312f2d2b28221c140b0200000000000000000000000000000000000000000000000007131f2c38434e5865727e8b98a2aeab9e9184786c6053463b30251a0e00000000000000000000000000000000000814212e3a47535f6a7683909ca9aea2988b7f7265594f43382c1f130700030f1b26323c464e535560606060606060585650483e34291d11050000000000000000000000000000000000000000000000000000000000000000010d19242f3a434c52545c5d5f5f605f5f5d5b5753514b433f332d261d140a00000000000916222e3a46515b62656c6c6c6c6c6c66635c52473b2f23170a000000000000000000000000000000000d1a2633404d59667380868686867d6f635649505c69768286868686796c5f5346392c2013060000000000000000000000000003101d2a3643505d69768286868276695d5043362a1d100300000000000000000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d000005121e2a36424d57606d79849197a1a9a79f969189837f7b78767574737372727271717171717e8b98a4afa396897c706356493d3023160a000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000a1724313d4a5764707d8a97a3b0ada1979290909090909090909090909090909090909090909090909090909090909090887b6e6255483b2f2215080000000a15212d3a46535e6975818e98a3aea3999083796d675f5853514b4e4e4e4d53555d606d74818e97a1ada69d9083776b605443392e23180c0000000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d2013070005111d29343f48505658606060606060605654575d5f6060605b53514b423a322a36404a52585a606060606060605f504a42382e23170c000000000000000000010c18222d364044505c666d79829095a09f938f857d746f79818a9298a09992867c6f695e554b42382e21180e0300000000000000000814212e3b4754616e7b7d7e7e7f8081827d6f6356493c3024190d02000000000004101c2934404b556b7784919eaaa99c908376695d5043362a1d10000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d10030000000000000000000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d1003000000101c2936434f5c6976828f908376695d5043362a1d100300000000000000000000000000000000000000000000000000000000000000000003101d2a3643505d697683908f8276695c4f4336291c100000000915222f3c4855626f7b88949faaaca09590847d76706d6765615e575754524c494644403a444442413f3e3c3938332d261d140a000000000000000000000000000000000000000000000000030f1b27323d4754606d7a85929facaca1968a7d7063574d42362a1c110600000000000000000000000000000004101c2934404b55626e7b88949fabac9f92867a6d6054473d32271b0f030006131f2b37434e585f626c6c6c6c6c6c6c64625a5045392d211508000000000000000000000000000000000000000000000000000000000000000004111d2935414c565d60696a6b6c6c6c6b6a6864605c5550443f382f261b1106000000000b1825313e4a56626d72797979797979736e63584b3f3226190c000000000000000000000000000000000d1a2633404d596673808c9393897c6f635649505c6976838f939286796c5f5346392c2013060000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d0000020e1a25303b45515d676f7c8591979ea5a8a09e95908b8885838281807f7f7f7e7e7e7e7d7d808d9aa7afa396897c706356493d3023160a000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000a1724313d4a5764707d8a97a3b0b3a9a19e9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d94887b6e6155483b2e22150800000005121e2a36424d57616e7b86929fa6aba0958f82796f6a63605c555b5a5b575f62676d747f8c939ea9a99f948a7d7064594f4430271d12070000000b1825323e4b5865717e8b98a4aca295897c6f6256493c2f23160900040d1a2733404d5a6673808d99a6aca09386796d6053463a2d20130700010c18222d363f454a4b53535353535353495761696b6c6c6c68605c544c443c342e3840474b4d5353535353535353443f3830261c11060000000000000000000006111b2428343f4a545d676d7a839196a19e979188807b838e929fa29f93877d706a5f574d433a30261c0f060000000000000000000b1724313e4a5764717e898a8b8c8d8e8c807366564c4135291e130b060400020509121f2b3844505c667885929eaba99c908376695d5043362a1d10000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d10030000000000000000000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d1003000000101c2936434f5c6976828f908376695d5043362a1d100300000000000000000000000000000000000000000000000000000000000000000003101d2a3643505d697683908f8276695c4f4336291c100000000c1926333f4c5966727f8c99a6afa49a90837a706b64605c5554524d4b4746413d3a434a4f50514f4d4c4a4946443f382f261c11060000000000000000000000000000000000000000000000000a16202c3945515d6774818e9aa7b1a89b8f8275695e5246382e23170b00000000000000000000000000000006131f2c3845515c6774808d9aa6b0a79b8e8174685d5245392b21160a00000815212e3b47535f6a7679797979797979716c6256493d3024170a00000000000000000000000000000000000000000000000000000000000000000613202c3945525d686d757778797979787774716d67625a504941382d22170b030000000c1925323f4c5865727f8686868686868073665a4d4033271a0d000000000000000000000000000000000d1a2633404d596673808c9996897c6f635649505c6976838f9c9286796c5f5346392c2013060000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d00000009141f2935414b555f6a6f7c858f939c9fa4a79f9d989892908f8d8d8c8c8b8b8b8b8a8a8a8d929da9afa396897c706356493d3023160a000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000a1723303d4a5663707d8996a3b0b8b0aba99f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9fa9aaaaaaaaaa94877a6e6154473b2e211408000000020e1a25313b46535f69737f8c949fa7a79f948f837c75706d676867676869696e737a818c919ca5aaa1978f82766c6155473d331e150b000000000b1825323e4b5865717e8b989f9f9f95897c6f6256493c2f2316090b10141a2733404d5a6673808d999f9f9f9386796d6053463a2d201307000006111b242d343a3d3e46464646464646505d697378797979746d665e564e463e3528363b3f40464646464646464638342e261e150a000000000000000000000000091217232e38424b555d686e7b849197a2a19a938d8890959da59d928b7f726b61584e453b31281e140a000000000000000000000815222f3b4855626e7c889798999a9a8f8275685d52463a30241d1512100c0e12141a202d3a4653606d7986939faca99c8f8276695c4f4336291c10000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d10030000000000000000000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d1003000000101c2936434f5c6976828f908376695d5043362a1d100300000000000000000000000000000000000000000000000000000000000000000003101d2a3643505d697683908f8276695c4f4336291c100000020f1c2835424f5b6875828e9ba8ac9f93877c6f68605953514b4846423e3b393634434d555b5d5d5c5a59575553504a42382d22170b00000000000000000000000000000000000000000000000004111d2935414b55626f7c88959fabac9f92877b6e61544a3f34281c100300000000000000000000000000000714202d3a4753606d7985929eabaca095897c6f63564c413529190f0400000916222f3c4955626f7c868686868686867e7164584b3e3125180b00000000000000000000000000000000000000000000000000000000000000000714212d3a4754606d7a8284858586868584817e79716c605b53493f33271f14090000000c1925323f4c5865727f8b939393938d8073665a4d4033271a0d000000000000000000000000000000000d1a2633404d596673808c9996897c6f635649505c6976838f9c9286796c5f5346392c2013060000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d000000020d18242f3a434e585f6a6f7a82898f93999c9fa2aaa29f9d9b9a999998989898979797979a9da4aeafa396897c706356493d3023160a000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000091623303c4956636f7c8996a2afb0a69f9c9393939393939393939393939393939393939393939393939c9ea6b0aea398877a6d6054473a2d2114070000000009141f2a36424d57606d78828f959fa7a69f959087817d79777574747476787b80858e939ca3aaa29892857b6e615a5044352b210c03000000000b1825323e4b5865717e8b9393939393897c6f6256493c2f231610171c20232733404d5a6673808d939393939386796d6053463a2d20130700000009121b22292e313239393939393945525f6b788586868681786d685f584f473f342e2f323339393939393939392c28231c150c030000000000000000000000000006111c263039434c565e696f7c859299a3a49f9a959da0a79e948d80746d62594f463c33291f160c02000000000000000000000613202d394653606c7785929ea5a69f92867a6d61564c41352e27201f1c181a1e21252a34404b55626f7c889aa4afa79b8e8174685b4e4135281b0e000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d10030000000000000000000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d1003000000101c2936434f5c6976828f908376695d5043362a1d100300000000000000000000000000000000000000000000000000000000000000000003101d2a3643505d697683908f8276695c4f4336291c10000003101d293643505c6976838f9ca9a99d9083766a5f564f4645403b3a36302e2d2f3c46555f666a6a6967656462605b544a3f33281c0f030000000000000000000000000000000000000000000000010d18242f3a47535f6a7683909da9afa3998c7f73665c5044382b1f14090a0a0a0a0a0a0a0a0a0a0a0a0a0a121f2b37434e5864717e8b97a2adaa9d9083776b6054443a2f2419070000000916222f3c4955626f7c8893939393938b7e7164584b3e3125180b00000000000000000000000000000000000000000000000000000000000000000814212e3b4754616e7a87909292939292908e8a847e746c655b50443b30251a0e0200000c1925323f4c5865727f8b989f9f998d8073665a4d4033271a0d000000000000000000000000000000000d1a2633404d596673808c9996897c6f635649505c6976838f9c9286796c5f5346392c2013060000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d0000000007131d28313c464e585f686d757c82878b8f929897999a9b9c9d9d9d9e9e9e9e9f9f9f9fa3abacb5afa396897c706356493d3023160a000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000815222f3b4855626e7b8895a9b3ab9f948f8686868686868686868686868686868686868686868686868f949eaaac9f928579675d5145392c20130600000000030e1a26313b44505c666d7a8390959da5a7a099938e898683828181818385888c92979da5a7a09892867d70695e52483e3323190f00000000000b1825323e4b5865717e868686868686867c6f6256493c2f23161a22282d303139404d5a66738086868686868686786d6053463a2d201307000000000911181d2124252d2d2d2d2d323f4c5965727f8c93938e827a6f6a6159514440393028272d2d2d2d2d2d2d2d1f1c17110a030000000000000000000000000000000a141e27313a444d575f6a707d879299a49f9f9f9fa9a0958f82786d605b51473e342a21170d04000000000000000000000005121f2b3744505b6575828f9baaaea3988b7f72685d52454039302d2c2823252a2d30363e45515c6773808c99acb4aa998c7f7366594c403326190d000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d10030000000000000000000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d1003000000101c2936434f5c6976828f908376695d5043362a1d100300000000000000000000000000000000000000000000000000000000000000000003101d2a3643505d697683908f8276695c4f4336291c10000004101d2a3743505d6a7683909da9a79b8e817468584e443d38342e2d2a2a2d2f38424e5866717777757472716f6c665b5044382b1f120600000000000000000000000000000000000000000000000007131d2b37434e5864717e8b97a2adab9e9184786d6053463b31251a16161616161616161616161616161616212e3a47535f6a7683909ca9aea2988b7f7265594f4332281e13080000000916222f3c4955626f7c88959f9f9f978b7e7164584b3e3125180b00000000000000000000000000000000000000000000000000000000000000000814212e3b4754616e7a87949e9f9f9f9e9d9b96918b80776c60574d42362a1e120500000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d000000000000000000000000000000000d1a2633404d596673808c9996897c6f635649505c6976838f9c9286796c5f5346392c2013060000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d00000000010c161f2a343c464e565e616b6f757b7f8285888a8c8d8f8f9090919191919292929292999ba3acafa396897c706356493d3023160a000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000714212d3a4754606d7a8797a2ada99c8f82797979797979797979797979797979797979797979797979828f9ca9ab9e9184786b554b4135291d1104000000000009141f28343f4a545e686d7a838e929d9fa7a49f9b9892908e8e8d8e8f9197999ea1a9a29e9590867d706b60574d42362c22110800000000000b1724313d4a56626c71797979797979796f6a6054473b2e2217242c33393c3d46464b58636e737979797979797976665c5044382c1f12060000000000060c111517182020202025313e4a56626d75818f969490847c706b625b514a423a322a211920202020202012100c060000000000000000000000000000000000020c151f28323b454e58606b717e8793939393939393969083796d665c50493f352c22190f05000000000000000000000000030f1b27333f495364717e8a98a2aeaa9e91857a6d605b514b423d3a38342e31363a3b42465059606d7984919eabaea398897d7063564a3d3023170a000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d10030000000000000000000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d1003000000101c2936434f5c6976828f908376695d5043362a1d100300000000000000000000000000000000000000000000000000000000000000000003101d2a3643505d697683908f8276695c4f4336291c10000003101d293643505c6976838f9ca9a79a8d817467564c413a39352f363036393c424a54606a77838482807f7d7c786c605346392d201306000000000000000000000000000000000000000000000000010f1b26323c4753606d7985929fabada1968a7d7063574d42362a23232323232323232323232323232323232934404b55626e7b88949fabac9f92867a6d6054473d3221160c010000000916222f3c4955626f7c8895a2aca4978b7e7164584b3e3125180b00000000000000000000000000000000000000000000000000000000000000000814212e3b4754616e7a87949fa3aba6abaaa9a19e928b7f72695e52463a2d20140800000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d000000000000000000000000000000000d1a2633404d596673808c9996897c6f635649505c6976838f9c9286796c5f5346392c2013060000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d0000000000040d18222a343c444c52596063696e7276797b7d7f81828383848484848585858585868b909ba7afa396897c706356493d3023160a000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000613202c3945515d677885929eabaa9d9184776c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c667784919eaaa99c8f8376695c50432f24180d010000000000030b17232e38424c565e686d79818990959b9fa2aaa39f9d9b9a9a9b9c9ea1a9a49f9c97928c837b706b60594f453b30241a100000000000000915212e3a45505a62656c6c6c6c6c6c6c6260584e43382b1c2328363e44494a525353525c63666c6c6c6c6c6c6c6c5c544a3f34281c10030000000000000105090b0b13131316222e3a46515b606d7a8491989691867d726d605c544c443c332b2317110a13131306030000000000000000000000000000000000000000030d162029333c464f59616c727f8686868686868686847b6e675d544a3f372d231a100700000000000000000000000000000b17222d3a4753606d7a85929faaada1978e81746d605c544f4946444043434246484d525a616b737f8c96a1acac9f92867a6d6053473a2d201407000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d10030000000000000000000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d1003000000101c2936434f5c6976828f908376695d5043362a1d100300000000000000000000000000000000000000000000000000000000000000000003101d2a3643505d697683908f8276695c4f4336291c100000020e1b2835414e5b6874818e9ba7a99c8f8276685e534c4745414343434146474d545b666f7c88908f8d8c8a85796c605346392d201306000000000000000000000000000000000000000000000000000a151f2c3845515d6774808d9aa6b0a89c8f8275695e5346382e3030303030303030303030303030303030303845515c6774808d9aa6b0a79b8e8174685d5245392c201304000000000916222f3c4955626f7c8895a2afa4978b7e7164584b3e3125180b00000000000000000000000000000000000000000000000000000000000000000814212e3b4754616e7a8799929995999fa2aaada49f92867b6e6154483b3025190e02000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d000000000000000000000000000000000d1a2633404d596673808c9996897c6f635649505c6976838f9c9286796c5f5346392c2013060000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d0000000000050e171e252a323a41464f54575e6165666d6f717374757676777777787878787879797e8b98a4afa396897c706356493d3023160a000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000004111d2935414c55697683909ca9ab9f928578695f606060606060606060606060606060606060606d7986929faca79a8d8174675a4e4134271b070000000000000006111c26303a444c565e676d747c83898e9298999b9d9e9f9f9f9f9e9d9b999993908b857f786e6960594f473d33291f120800000000000005111d29343f485056586060606060606056544e463d3227262e343f485055575f6060605a585a606060606060605f504a42382e23170c000000000000000000000000060606121e29353f45525d686f7c86929f9892877f746d665d564d453d3528231c140c03000000000000000000000000000000000000000000000000040e17212a343d47505a626d727979797979797979786e695e554b42382e251b11080000000000000000000000000000000613202c3945515d6773808d98a2aea99d938c7f736d6660595653514a50504d5354575e616c707d87929fa8b0a69b8e8275675d5145392c201306000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d10030000000000000000000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d1003000000101c2936434f5c6976828f908376695d5043362a1d100300000000000000000000000000000000000000000000000000000000000000000003101d2a3643505d697683908f8276695c4f4336291c100000000c1926323f4c5965727f8c98a7ac9f92867a6d655e5654514b504f504d5254575f666c7882909c9c9a988e8174655b5044372b1f12050000000000000000000000000000000000000000000000000004101d2935404b55626e7b88949fabac9f93877b6e61544a3f3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d4753606d7985929eabaca095897c6f63564c4135291d1104000000000916222f3c4955626f7c8895a2afa4978b7e7164584b3e3125180b00000000000000000000000000000000000000000000000000000000000000000814212e3b4754616e7a87878686888d9298a2abaea2988c807366564d41362a1e1105000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d000000000000000000000000000000000d1a2633404d596673808c9996897c6f635649505c6976838f9c9286796c5f5346392c2013060000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d00000000020c1720293036393a3e3f44484d5354545c606264666768696a6a6a6b6b6b6b6c6c6c717e8b98a4afa396897c706356493d3023160a000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000010d19242f414d5a6774808d9aabaea298887b6e61555353535353535353535353535353535355626f7c8899a3afa9988b7e7265584b3f3225180c00000000000000000a141e28323a444c555c606b6f777d8185898c8e90919292929291908f8d8a86837e79726d665f574f473d352b20170d00000000000000010c18222d363f454a4b535353535353534947433d342b2830383f44515a61646c6c6c6c66635c5253535353535353443f3830261c11060000000000000000000000000000010d18232935414c565f6a727e8b939e99938c81786d685f574f473f342e261e150c03000000000000000000000000000000000000000000000000050f18222b353e48515b62656c6c6c6c6c6c6c6c6b615e574d433a30261c13090000000000000000000000000000000004111d2935404b55616e7b86929fa6afa59c918c8079706b6562605c545c5d575e6164696e747e869299a3afaa9f94897d7063554b4035291d1104000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d10030000000000000000000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d1003000000101c2936434f5c6976828f908376695d5043362a1d100300000000000000000000000000000000000000000000000000000000000000000003101d2a3643505d697683908f8276695c4f4336291c100000000915222f3c4855626f7b88959faba3998e81776d6863605d555d5c5d565e6164696e78808e949fa8a0958a7d706453493f33271b0f0300000000000000000000000000000000000000000000000000000c18242f3947535f6a7683909ca9afa4998c8073665c504949494949494949494949494949494949494949494e5864717e8b97a2adaa9d9083776b6054443a2f24190d01000000000916222f3c4955626f7c8895a2afa4978b7e7164584b3e3125180b00000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d787c7a79797c80869299a4afaa9e918477685e5246392d201407000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d000000000000000000000000000000000d1a2633404d596673808c9996897c6f635649505c6976838f9c9286796c5f5346392c2013060000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d0000000008131e29323a4146474b4c4d4e4f51524a50535557595a5c5c5d5d5e5e5e5e5f5f5f65717e8b98a4afa396897c706356493d3023160a000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000081724313e4a5764717d8a99a3afaa988b7e7165574d42464646464646464646464646424d5765727f8c98abada297887b6f6255483c2f2215090000000000000000020c162029323a434b515960636b7075797c7f82838485868685858382807d7a76726d67605c544d453d352b23190e05000000000000000006111b242d343a3d3e464646464646463c3b38322b29323a424a505b636c7079797979736e63574b46464646464638342e261e150a00000000000000000000000000000000070d19242f3a434e58626d75818e95a09f928e827a6e69605951443f3830271e150b00000000000000000000000000000000000000000000000000061019232c363f4951565860606060606060605e54524d453b31281e140a0100000000000000000000000000000000010d18242f3a46525e68727f8c949fa8ada49c928d837d77726f6d666a69696a696e71757b818a9298a2abaea2988f82766b6054433a2f24180d01000000000000000205111e2a3744515d6a7784909d9f9f9c8f8376695c504336291d100d0b08030000000000000000000000000004111e2a3744515d6a7784909d9f9f9c8f8376695c504336291d1003000000101c2936434f5c6976828f908376695d5043362a1d100300000000000000000000000000000000000000000000000000000000000000000003101d2a3643505d697683908f8276695c4f4336291c100000000815212e3a47535f6a7683909da5ab9e938e817a74706d676a6969696a686e71757b828e929da6a59d9083786c605346392d22170b00000000000000000000000000000000000000000000000000000007121d2b37434e5864717e8a97a1adab9e9184796d6056565656565656565656565656565656565656565656565f6a7683909ca9aea2988b7f7265594f4332281e130800000000000916222f3c4955626f7c8895a2afa4978b7e7164584b3e3125180b020405060606050402000000000000000000000000000000000000000000000006121f2c3844515c666d6f6d686d6f737d87939facaca096877a6e6154473b2e211408000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d000000000000000000000000000000000d1a2633404d596673808c9996897c6f635649505c6976838f9c9286796c5f5346392c2013060000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d000000010d1925303a444c525457595a5b5c5d5e5b5953484a4c4e4f5050515151515252525965727f8c98a5afa396897c706356493d3023160a000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000714212e3a4754616d7a86929faca89b8e8275695e53463d313939393939393939303946525e6976828f9ca9ab9e9285786c605346392d201306000000000000000000050e172029313940454f54596063676d70727576787879797878777573706d6865605d55504a423c332b231911070000000000000000000009121b22292e3132393939393939392f2e2b272b333b444c545c606d727e868686868073665a4d4039393939392c28231c150c03000000000000000000000000000000000008131e28313c46515b606d79839198a29d948f847b706b625b504a423930271d12070000000000000000000000000000000000000000000000000007111a242d373f464a4c5353535353535353524846423b33291f160c0200000000000000000000000000000000000007131d2a36414d56606d78829096a1a8ada49d959089837f7c797777767677787b7d82868e939fa2aaaea39f92867b6e61594f4431281d130700000000000002080e11141e2a3744515d6a778490939393938f8376695c50433629201b1a18140f0801000000000000000000000004111e2a3744515d6a778490939393938f8376695c504336291d1001000000101c2936434f5c6976828f908376695d5043362a1d100300000000000000000000000000000000000000000000000000000000000000000003101d2a3643505d697683908f8276695c4f4336291c1000000006121f2b37434e5863707d89939da6a59e938e86807d7a787776767677787a7e82878f949da5a69d938a7d70655b5044372b1b1106000000000000000000000000000000000000000000000000000000010f1a26313c4653606d7985929eacada1968a7d70646363636363636363636363636363636363636363636363636e7b88949fabac9f92867a6d6054473d3221160c0100000000000916222f3c4955626f7c8895a2afa4978b7e7164584b3e3125180c0e101213131312100e0b0807050200000000000000000000000000000000000004101c2834404a545c6062615e60626b75818e9ba8b2a8968a7d7063574a3d3024170a000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d000000000000000000000000000000000d1a2633404d596673808c9996897c6f635649505c6976838f9c9286796c5f5346392c2013060000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d00000005111d2a36414c565e6164656768696a6b68655d534840414243434444444545454d596673808c99a6afa295897c6f6256493c2f231609000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000713202d3946525d6876828f9ca9ac9f92867b6e61584e433b322c292424292c3139424d57616e7b86929faca89b8e8174655b5044372b1f120500000000000000000000050e171f272f343d43484f54555c606366686a6b6c6c6c6c6b6a686664615e5653514b443f38302a211911080000000000000000000000000911181d2124252d2d2d2d2d2d2d2322242c343d454d565d666d747f87929892857b6e6154473b2e2d2d2d2d1f1c17110a03000000000000000000000000000000000000010c161f2a343f45515d676e7c86929fa59f9691857d726d605c544b42392e23180c000000000000000000000000000000000000000000000000000008121b252d343a3e3f4646464646464646453b3a36302921170d0400000000000000000000000000000000000000010e1925303b44505c666e7a849196a0a7afa7a09d95908c8985848383838485878a8e92999da5aeaaa39f918a7e71695f53473d321f160c010000000000050d14191e20212d3744515d6a77838686868686868276695c5043362d2d272724201a130b020000000000000000000004111e2a3744515d6a77838686868686868276695c504336291c140a000000101c2936434f5c6976828f908376695d5043362a1d100300000000000000000000000000000000000000000000000000000000000000000003101d2a3643505d697683908f8276695c4f4336291c10000000030f1a26313c4855606b74818e949da5a59e98928d898785838382838485878a8f93999fa6a49d948e81746c6153493f33271b0a000000000000000000000000000000000000000000000000000000000009151f2c3845515c6673808d9aa4afa99c8f82757070707070707070707070707070707070707070707070707074808d9aa6b0a79b8e8174685d5245392c2013040000000000000916222f3c4955626f7c8895a2afa4978b7e7164584b3e312518191b1d1f1f201f1f1d1b181414110e080200000000000000000000000000000000000c18232e39424a5153555452535964717e8a97a4b1a5988b7f7265584c3f3225190c000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d000000000000000000000000000000000d1a2633404d596673808c9996897c6f635649505c6976838f9c9286796c5f5346392c2013060000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d0000000713202d3946525e686d71727374767778756f65594d3d323536373737383835404b556774818e9aa7b2a995887b6e6255483b2f221508000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000005111d2935414c5664717e8b96a1ada3998d80746a60564d443e39352f2f35383c434b545e6973808d99a3aca096897d706353493f33271b0f030000000000000000000000050d151d232932383d44484b5161696b6c6c6c68605c5f5e5d5c5a5754524c47454039342e261e180f080000000000000000000000000000060c11151718202020202020151d2328363e464f575f686d78818c939993877d70695e52463a2d2020202012100c06000000000000000000000000000000000000000000040d18222935404b555f6a717e8a939da7a09792877f746d665c544b4034281c1004000000000000000000000000000000000000000000000000000009131b23292e31323939393939393939382e2d2a251f170f0500000000000000000000000000000000000000000008141f28343f4a545e686e7b8490959fa3abaca7a09d98989291908f90919297979b9fa3abaca7a098928b7f726c61574d42352b210d040000000000050e171e252a2d2e3939424f5b6771777979797979797670665a4e423939393433302b251d140b0100000000000000000003101d2936424f5b6771777979797979797670665a4e42352e261c12070000101c2936434f5c6976828f908376695d5043362a1d100300000000000000000000000000000000000000000000000000000000000000000003101d2a3643505d697683908f8276695c4f4336291c10000000000a15202c38444f59606d79828e939da0a7a29f9a96979290908f90909297979b9fa4a7a09d928d82786d605a5041382d22170b000000000000000000000000000000000000000000000000000000000004101c2834404b54616e7b87939facac9f93877d7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7d85929fabaca095897c6f63564c4135291d11040000000000000916222f3c4955626f7c8895a2afa4978b7e7164584b3e31252225282a2b2c2d2c2b2a282521201e19140f0a0400000000000000000000000000000007121c2730394044464847464855626f7b8895a2aea6998c7f7366594c403326190d000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d000000000000000000000000000000000d1a2633404d596673808c9996897c6f635649505c6976838f9c9286796c5f5346392c2013060000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d0000000714212e3a4754616d7a7e7f8081828485817568584e43372e2c2823282c2f3945515d677783909daaada196877a6d6054473a2d211407000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000010d1924303a4653606d7984919ea7ab9f92877c6f685e564f47454141414045474e555c666e7b86929faba89e9184786c605346392d22170b00000000000000000000000000030b121821272c323839505d697378797979746d665e564e4f4d4a4746413a39352f28231c150c06000000000000000000000000000000000105090b0b131313130e161e272e344048505960696e7a828e939f948c7f736b60574d42362a1e1113130603000000000000000000000000000000000000000000000000071018242f39434e58616c74818e95a0a9a299928b80786d665c5145382c1f13060000000000000000000000000000000000000000000000000000010911181e2224252d2d2d2d2d2d2d2d2b21201e1a140d0500000000000000000000000000000000000000000000020b17232e38424d565f696e7b838d92999fa4acacaaaaa39f9e9d9c9c9d9ea1a9a8acaca8a19e9590867e726d625a50453c3123190f0000000000020d1720293036393b4646464a555f676a6c6c6c6c6c6c69665e54494646464641403c362f261d1308000000000000000000010e1a27333f4a555f676a6c6c6c6c6c6c69665e544b4740382e24190e0200101c2936434f5c6976828f908376695d5043362a1d100300000000000000000000000000000000000000000000000000000000000000000003101d2a3643505d697683908f8276695c4f4336291c100000000003101c27333d45515c676d79818990959b9fa2aaa9a19e9d9c9c9c9d9fa2a9aaa29f9b95908a80786d665c51473e2f261b11060000000000000000000000000000000000000000000000000000000000000c18232e3946535f6976828f9ca9afa499938a89898989898989898989898989898989898989898989898989899297a2adaa9d9084776b6054443a2f24190d010000000000000916222f3c4955626f7c8895a2afa4978b7e7164584b3e312d2e32353738393939383735312e2d2a251f1b150d070100000000000000000000000000000b151e272e34383a3c3a3a4754606d7a8793a0b5a69a8d8073675a4d4034271a0d000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d000000000000000000000000000000000d1a2633404d596673808c9996897c6f635649505c6976838f9c9286796c5f5346392c2013060000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d0000000815212e3b4854616e7b878c8d8e8f909184786a6054473f3a38342e34383a404b55606d7a86929facab9e918578675d5145392c201306000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000008131f2c3845515c67727f8b95a0aba39991847a6e68615954514c4e4e4b5153575f676d78839098a2aca0968b7f72665b5044382b1b1106000000000000000000000000000001070c161b21273845525f6b788586868681786d685f584f473f3a3936302c29241d17110a03000000000000000000000000000000000000000000000600070f18202830394045525a616b6f7b838f949d968f82776c60594f453b30251a0e020600000000000000000000000000000000000000000000000000000007121d28313c46505a606d7983909893939393928d82796d6053463a2d20130700000000000000000000000000000000000000000000000000000000060d1216181920202020202020201f1514120e090200000000000000000000000000000000000000000000000006111c26303b444d575f696e7880878f939a9ea1a8a7a9aaaaaaa9a9aaaaa9a8aaa39f9c96918b837c716c625b51483e332a1f1107000000000008141e29323b4146535353535353555b5d6060606060605c5a545353535353534e4c4841382f251a0f030000000000000000000a16222e39434d555b5d6060606060606060605a57524a40352a1f130700101c2936434f5c6976828f908376695d5043362a1d10030000000000000000000000000000000000000000000000010507070b0b0b0b0b0b0b101d2a3643505d697683908f8276695c4f4336291c1000000000000b16212834404b555c676d747d838a8e9298989a9c9d9e9f9f9f9e9e9c9a9898928e8a837d746d665c544a40352c1d140a0000000000000000000000000000000000000000000000000000000000000007121d2a36424d5764707d8a96a1adaba49f9796969696969696969696969696969696969696969696969696969fa2a9aea2988b7f7265594f4332281e1308000000000000000916222f3c4955626f7c8895a2afa4978b7e7164584b3e373a3b3f4143454646464543413e3b3936302b272018130c0400000000000000000000000000030c151c23282c2d2f2e3a4653606d798699a3afa79a8d8074675a4d4134271a0e000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d000000000000000000000000000000000d1a2633404d596673808c9996897c6f635649505c6976838f9c9286796c5f5346392c2013060000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d0000000714212d3a46535e697884919a9b9c9d96897c6f625a504a464440434044464b515c67717e8b98a3aeaa9b8f827568554b4135291d1104000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000004101c2834404b55606d78839099a3aba09690837a706b64605d555b5b555d60636a6e79818e959faaa49a9184796d60544a3f33281c0a0000000000000000000000000000000000040a0f1926323f4c5965727f8c93938e827a6f6a6159514440393028201d18120c0600000000000000000000000000000000000000000000000000071019212a323a434b515b636c717d8591959f9991847a6d655b50473d33291f14090000000000000000000000000000000000000000000000000000000000010c161f2a343e45515c676e7b8586868686868686867a6e6154473b2e21140800000000000000000000000000000000000000000000000000000000000106090b0c131313131313131312080705020000000000000000000000000000000000000000000000000000000a141e29323c454d575e666d737c82878d9196989a9c9d9e9f9f9f9f9e9c9b9998928f8a847f786f6a625a51493f362c21180e0000000000020e1925303b444c525f6060606060605d5b5553535353534f54566060606060605a58534a41362b20140800000000000000000006111c27313b434a4f5153515a61646c6c6c6c66635c52473b2f23170a00101c2936434f5c6976828f908376695d5043362a1d100300000000000000000000000000000000000000000002080d11131417171717171717171d2a3643505d697683908f8276695c4f4336291c100000000000050c18232e39434b555c606b6f787d8185898b8e9091919292929191908e8c8985827d77706b605c544b42392e231a0b0200000000000000000000000000000000000000000000000000000000000000000e1a26313b4653606d7984919eabb5afaca3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3abadb3ac9f92867a6d6054473d3221160c01000000000000000916222f3c4955626f7c8895a2afa4978b7e7164584b3e4246484c4e505252535252504e4b4746413b373229241d160d0500000000000000000000000000030b12181c1f20222c3844505c667986929faca79a8d8174675a4e4134271b0e000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d000000000000000000000000000000000d1a2633404d596673808c9996897c6f635649505c6976838f9c9286796c5f5346392c2013060000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d00000005121e2a36424d576774818e9aa6a9a89b8e81756c605c5453514a504a5153555d606d7983919daaaea2988b7e7165584b3e2f24180d01000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000000000c18232e3944515c666f7c87929fa4a8a09590847d76716d6769676869676d70757b838e939ea7a59f93887d70665c5142382d22170b000000000000000000000000000000000000000b1825313e4a56626d75818f969490847c706b625b514a423a322a2119110600000000000000000000000000000000000000000000000000040f19222b333c444c555c606d737e869297a09f92877c6f685d53493f352b20170d02000000000000000000000000000000000000000000000000000000000000040d18222934404b555f696e78797979797979797976685e5246392d2014070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c17202a333c454d545c606a6f757b8084888b8d8f91929293929291908e8c8986827d79726d665f5850483f372d241a0f06000000000005111e2a36414c565e6c6c6c6c6c6c6c6a675f554a46444f5960636c6c6c6c6c6c67645c53483c3024180b0000000000000000000008101f2931323a424a505b636c7079797979736e63574b3f3226190c00101c2936434f5c6976828f908376695d5043362a1d10030000000000000000000000000000000000000000050d13191e20212424242424242424242a3643505d697683908f8276695c4f4336291c1000000000000007121d273039434b515960666c7075797c7f81838485858685858483817f7d7975706b636159514b423930271c110800000000000000000000000000000000000000000000000000000000000000000009141f2c3844505c6673808c99a3afbbb9b1acaa9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9fa7a9afb8bab1a79b8e8174685d5245392c20130400000000000000000916222f3c4955626f7c8895a2afa4978b7e7164584b464d5355585b5d5e5f605f5e5d5b5854524d47433d352f281f170f050000000000000000000000000000070c1012131c28343f4a5f6c7986929faca79a8d8174675a4e4134271b0e000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d000000000000000000000000000000000d1a2633404d596673808c9996897c6f635649505c6976838f9c9286796c5f5346392c2013060000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d000000020e1a25313c4855626f7c88949faaaa9e938a7e726d6662605c545d545c6062676d75808d95a0aca99f92867a6d6154473a2e21140700000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000007121d2834404a54606a727f8c929ca4a7a096918a827d7a7775747475767a7d818790959ea5a59e938d80736b60544b402f261c1106000000000000000000000000000000000000000916222e3a46515b606d7a8491989691867d726d605c544c443c332b2317110a0200000000000000000000000000000000000000000000000a16212b343d454d565e676d757f8a9298a19e938b7f726a60564c41382d23190e050000000000000000000000000000000000000000000000000000000000000000060f18232f39434d575f616c6c6c6c6c6c6c6c6c6c5e564c41362a1e1105000000000000000000000000000000000000000000000000000000000000000000000000020608080c0e111212131312110e0c080705020000000000000000000000000000000000000000050e18212a333b424b51585f626a6e73787b7e80828485858686858483817f7c7975716d66605c544e463f362d251b12080000000000000714202d3946525e68767979797979797771675b4f434854606b70797979797979746e64584c4033271a0d00000000000000000007121a222b333b444c545c606d727e868686868073665a4d4033271a0d00101c2936434f5c6976828f908376695d5043362a1d100b0b0b0b0b0b0b07070501000000000000000000050e171e252a2d2e313131313131313131313643505d697683908f8276695c4f4336291c10000000000000000b151e27303940454f545b6063676d7072747677787879797877767472706d66636159554f45403930271e150b0000000000000000000000000000000000000000000000000000000000000000000003101c28343f4a54616e7b87929facb9b1a7a0939393939393939393939393939393939393939393939b9ea5afb8aca095897c6f63564c4135291d110400000000000000000916222f3c4955626f7c8895a2afa4978b7e7164585053575f6165686a6b6c6c6c6b6a6864615e56544e45403a312921170f0500000000000000000000000000000004060c17232e46535f6c7986929faca79a8d8174675a4e4134271b0e000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d000000000000000000000000000000000d1a2633404d596673808c9996897c6f635649505c6976838f9c9286796c5f5346392c2013060000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d000000000915212e3b47535f6a76828f98a2aea59f92877f78726f6d666a696a666d6f7379818d929da7aca2978d8074685d5246392d20130700000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000000000c18232e39424e58626d73808c929ea1a8a19e948f8a8683828181828386898e93999fa7a39f938f81786d60594f42392e1d140a000000000000000000000000000000000000000006121e29353f45525d686f7c86929f9892877f746d665d564d453d3528231c140c03000000000000000000000000000000000000000000030f1b27323d464e575f686d79818c929fa3a0958e81756d62584e443a2f261b11080000000000000000000000000000000000000000000000000000000000000000000007121d27313c454d53555f60606060606060605f524c443b3025190e020000000000000000000000000000000000000000000000000000000000000000000003090e121415191b1d1e1f201f1f1e1b191514120e090300000000000000000000000000000000000000060f182129303940454e53575f6266696e71747677787979797877767572706d6764605c54504a423c342d241b1309000000000000000814212e3b4754616e7a86868686868683776a5d5144495663707d8686868686868074675a4e4134271b0e00000000000000030b1218242c343d454d565d666d747f87929892857b6e6154473b2e21140800101c2936434f5c6976828f908376695d5043362a1d17171717171717171413110d0802000000000000020d1720293036393a3e3e3e3e3e3e3e3e3e3e3e43505d697683908f8276695c4f4336291c1000000000000000030c151e272e343d424a5053555d60636567696a6b6c6c6c6b6b69676563605c54554f48443e342e271e150c0300000000000000000000000000000000000000000000000000000000000000000000000c17232e3846525e6975828f9ca8b2aca095898686868686868686868686868686868686868686868e939ea9b4aa9d9084776b6054443a2f24190d0100000000000000000916222f3c4955626f7c8895a2afa4978b7e7164545c6064696e72747678797979787674716e68626058514b433b332921170d030000000000000000000000000000000013202c3946535f6c7986929faca79a8d8174675a4e4134271b0e000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d000000000000000000000000000000000d1a2633404d596673808c9996897c6f635649505c6976838f9c9286796c5f5346392c2013060000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d0000000006121f2b37434e58626f7c86929fa4aca399928b837f7b797777767777797c80858e939da4aea49a92857a6d61564c4135291d110500000000000000000000000000000203101d2a3643505d69768390908376695d5043362a1d100302000000000000000000000007121c27303d46515b646e73808a92979fa3a69f9c9992908f8e8e8f9092989b9fa4a69f99928c81786d665c50473d30271d0b020000000000000000000000000000000000000000010d18232935414c565f6a727e8b939e99938c81786d685f574f473f342e261e150c03000000000000000000000000000000000000000007131f2c38434e5860696e7a828e939ca4a2989183796d605b51463d32281d140a0000000000000000000000000000000000000000000000000000000000000000000000010b151f2a333c4246485253535353535353535346413b32291e1408000000000000000000000000000000000000000000000000000000000000000000060c11151a1e212226282a2b2c2c2c2b2a282522211e1a14100b05000000000000000000000000000000000000060f171e272e343c43474e5355575f626567696a6b6c6c6c6c6b69686663605c5553504a443f38302a221b120901000000000000000814212e3b4754616e7a87939393939084776a5d5144495663707c89939393938d8174675a4e4134271b0e000000000000050c151d2328363e464f575f686d78818c939993877d70695e52463a2d20140700101c2936434f5c6976828f908376695d5043362a24242424242424242421201e19130d05000000000008131e29323a4146474a4a4a4a4a4a4a4a4a4a4a4a505d697683908f8276695c4f4336291c100000000000000000030c151d23282f383f44464b515356585b5d5e5e5f5f5f5e5e5d5b595653514b48443e383328231d150c0300000000000000000000000000000000000000000000000000000000000000000000000006111c2a36424d5763707d8a96a1acaa9d9083797979797979797979797979797979797979797979818e9ba7aea2988b7f7265594f4332281e13080000000000000000000916222f3c4955626f7c8895a2afa4978b7e716460666d71777b7f8183858586858583817e7b756f6a605d554d453b33291f150b0100000000000000000000000000000613202c3946535f6c7986929faca79a8d8174675a4e4134271b0e000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d000000000000000000000000000000000d1a2633404d596673808c9996897c6f635649505c6976838f9c9286796c5f5346392c2013060000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d00000000030f1b26323c47535f6a717e8b939aa2aaa39f95918c8886848483838485898c92979ea5aaa39f93887d70685e52443a3024190d01000000000000000000000000050a0f12101d2a3643505d69768390908376695d5043362a1d10120f0a05000000000000000000000b151e2b343f49525c646e737e858e92999ea1a8a39f9d9c9a9b9c9d9fa3a9a29f9b948f877f776d665c544a3f352c1e150b00000000000000000000000000000000000000000000070d19242f3a434e58626d75818e95a09f928e827a6e69605951443f3830271e150b00000000000000000000000000000000000000000915222e3b4854606a6f7b8490949ea5a49f92867c6e675d51493f342b20160b02000000000000000000000000000000000000000000000000000000000000000000000000030d18212a31373a3b4546464646464646463b3936302920170d020000000000000000000000000000000000000000000000000000000000000002090e171d1f262b2e2f32353738393939383735322e2d2b261f1c160c07010000000000000000000000000000000000050c151d232831373c4247484d5355585a5c5e5f5f605f5f5e5d5b595653514b46443f38342e261e1810090000000000000000000814212e3b4754616e7a87949f9f9d9084776a5d5144495663707c89969f9f9a8d8174675a4e4134271b0e0000000000060e161e272e344048505960696e7a828e939f948c7f736b60574d42362a1e110500101c2936434f5c6976828f908376695d504336313131313131313131312e2d2a251e170e05000000010d1925303a444c5254575757575757575757575757575d697683908f8276695c4f4336291c10000000000000000000030b12181d262d333839404547494c4e5051525253525251504e4c4a4645403938332c282118120b0300000000000000000000000000000000000000000000000000000000000000000000000000000e1a25303b4653606c7884919eabaca095897c6f6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6d7a86929facac9f92867a6d6054473d3221160c010000000000000000000916222f3c4955626f7c8895a2afa4978b7e71646a6f787e83888b8e909192939291908e8b86827c746d675e574d453b31271d120700000000000000000000000000000613202c3946535f6c7986929faca79a8d8174675a4e4134271b0e000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d000000000000000000000000000000000d1a2633404d596673808c9996897c6f635649505c6976838f9c9286796c5f5346392c2013060000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d00000000000a15202b37434e58616c727f8892989fa3a7a09d99999291909090919298999ea2a9a69f98928b7f726c61564c4132281e13080000000000000000000000010910161b1e20202a3643505d69768390908376695d5043362a20201e1b161009010000000000000000030c19222d37404a525c636c717a81868d9196989b9c9e9f9f9f9f9e9d9b9997928e89827c736c655c544b42382e231a0c03000000000000000000000000000000000000000000000008131e28313c46515b606d79839198a29d948f847b706b625b504a423930271d1207000000000000000000000000000000000000000916232f3c4956626f7c85919693939393928a7e716a5f554b40372d22190e040000000000000000000000000000000000000000000000000000000000000000000000000000060f181f262b2d2e3939393939393939392e2d2a251e170e0500000000000000000000000000000000000000000000000000000000000000050d141a22282d31373a3b3f4144454546464544413f3b3a37312c272118120b030000000000000000000000000000000000030b121820262b31373a3c4247484b4d4f51525253535251504e4c494745403a38342e28231c140c06000000000000000000000814212e3b4754616e7a8794a1aa9d9084776a5d5144495663707c8996a3a79a8d8174675a4e4134271b0e00000000070f18202830394045525a616b6f7b838f949d968f82776c60594f453b30251a0e0200101c2936434f5c6976828f908376695d50433e3e3e3e3e3e3e3e3e3e3e3a3936302920170d02000005111e2a36414c565e616464646464646464646464646464697683908f8276695c4f4336291c100000000000000000000000070b141c22282b2f35383a3d3f41434445454646454443413f3d3a38342e2c28211c160c070000000000000000000000000000000000000000000000000000000000000000000000000000000009141f2b3844505b66727f8c99a3aea79a8d8174675c606060606060606060606060605765717e8b98a2aea79b8e8174685d5245392c201304000000000000000000000916222f3c4955626f7c8895a2afa4978b7e716c717c838b9095989b9d9e9f9f9f9e9d9b99928f8781796e695e574d43392f23180c03000000000000000000000000000613202c3946535f6c7986929faca79a8d8174675a4e4134271b0e000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d000000000000000000000000000000000d1a2633404d596673808c9996897c6f635649505c6976838f9c9286796c5f5346392c2013060000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d0000000000040f1a26313c46505a636d727e868e92999da0a8aba39f9e9d9c9d9e9fa2aaaaa29f9b948f867e726d62594f443a3020160c0200000000000000000000010a131b21272b2d2d2d3643505d69768390908376695d5043362d2d2d2b27211b130a01000000000000000007101b252e38404a525a61686d747b8084888b8e90919292929291908e8c8985817c766f6a605b534b423930261c1108000000000000000000000000000000000000000000000000010c161f2a343f45515d676e7c86929fa59f9691857d726d605c544b42392e23180c000000000000000000000000000000000000000d1a2633404d59667380868686868686868680746c61574e43392f251b100700000000000000000000000000000000000000000000000000000000000000000000000000000000060e141a1e21222c2d2d2d2d2d2d2d2d21201e19140d0500000000000000000000000000000000000000000000000000000000000000060f171f252a34393c4247484c4e505152535252514e4c4846423c383329241d150d03000000000000000000000000000000000000070c151b20262b2e31373a3b3e41434445464646454443423f3d3a38342f2c28231c17110a0200000000000000000000000814212e3b4754616e7a8794a1a99d9084776a5d5144495663707c8996a3a79a8d8174675a4e4134271b0e000000071019212a323a434b515b636c717d8591959f9991847a6d655b50473d33291f14090000101c2936434f5c6976828f908376695d504a4a4a4a4a4a4a4a4a4a4a4a4746413a32291e130800000713202d3946525e686d7171717171717171717171717171717683908f8276695c4f4336291c10000000000000000000000000020a11171c1f24292c2d3032343637383939393838363432302d2c28231d1c16100b050000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1c28333f4a54616e7a86929facab9f9285796d60535353535353535353535353535f697683909caaaca095897c6f63564c4135291d1104000000000000000000000916222f3c4955626f7c8895a2afa4978b7e71717e8790959da09e9c9b9a9b9c9ea1a9aba39f9a938e847b6e695e554b403429201509000000000000000000000000000613202c3946535f6c7986929faca79a8d8174675a4e4134271b0e000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d000000000000000000000000000000000d1a2633404d596673808c9996897c6f635649505c6976838f9c9286796c5f5346392c2013060000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d0000000000000a15202a343e48515b636c717b81878c919597999c9d9e9e9f9f9f9e9d9b9998928e89827b716c625b51473e32281e0e04000000000000000000000009131c252c33373939393943505d69768390908376695d50433939393937332c251c130900000000000000000009131c262e38404850565e61696e73787c7e818384858686858583817f7c79746f6a625f585049413930271e150a0000000000000000000000000000000000000000000000000000040d18222935404b555f6a717e8a939da7a09792877f746d665c544b4034281c10040000000000000000000000000000000000000c1925323f4b57636d737979797979797979746e645a50453c31281d120900000000000000000000000000000000000000000000000000000000000000000000000000000000000003090e1214151f20202020202020201414110e080200000000000000000000000000000000000000000000000000000000000000060f18212930363e45494d5355595b5d5e5f5f5f5e5d5b5855534d48443d352f271f150d03000000000000000000000000000000000000030a0f151a1e21262b2e2f32343637383939393938363533302d2c29231f1c17110b06000000000000000000000000000814212e3b4754616e7a87949c9c9c9084776a5d5144495663707c89969c9c9a8d8174675a4e4134271b0e0000040f19222b333c444c555c606d737e869297a09f92877c6f685d53493f352b20170d020000101c2936434f5c6976828f908376695d5757575757575757575757575754524c443a3025190d01000714212e3a4754616d7a7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7e83918f8276695c4f4336291c100000000000000000000000000000060b0f12181d1f202325282a2b2b2c2c2c2b2b2a282623201f1c1812100b0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222d3846525e6875828e9ba8ada2978a7e7164574d42464646464646463f4a54626e7b88949fabaa9d9084776b6054443a2f24190d01000000000000000000000916222f3c4955626f7c8895a2afa4978a7e717e8892999e9896918f8e8d8e8f92979b9fa4aca49f9691847b6e675c51453c31261a0e020000000000000000000000000613202c3946535f6c7986929faca79a8d8174675a4e4134271b0e000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d000000000000000000000000000000000d1a2633404d596673808c9996897c6f635649505c6976838f9c9286796c5f5346392c2013060000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d000000000000030e18222d363f49515a61696e747b8084888b8d8f90919292929291908e8c8985817c766e69615a51493f352c20160c000000000000000000000005101b252e373e434646464646505d69768390908376695d504646464646433e372e251b10050000000000000000010a141c262e363e444c52575e61666a6f7274767878797978787675726f6d66626058534e443f382f271e150c03000000000000000000000000000000000000000000000000000000071018242f39434e58616c74818e95a0a9a299928b80786d665c5145382c1f13060000000000000000000000000000000000000a16232f3b47525b63666c6c6c6c6c6c6c6c67645c52483e332a1f160c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002050708121313131313131313080705020000000000000000000000000000000000000000000000000000000000000000030d18212a333b42465055575f6265686a6b6c6c6c6b6a6865615f57544f45403931271f150b010000000000000000000000000000000000000003090e12151a1e21222527292b2c2c2d2c2c2b2a282623201f1c1812100c060000000000000000000000000000000814212e3b4754616e7a878f8f8f8f8f84776a5d5144495663707c898f8f8f8f8d8174675a4e4134271b0e00000a16212b343d454d565e676d757f8a9298a19e938b7f726a60564c41382d23190e05000000101c2936434f5c6976828f908376696464646464646464646464646464615e564c41362a1e1105000a1723303d4a5663707d898a8a8a8a8a8a8a8a8a8a8a8a8a8a8a91958f8276695c4f4336291c100000000000000000000000000000000003070c10131416191b1d1e1f1f201f1f1e1d1b19171313100c07000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c2a36414c5663707d8996a0aca99c8f8276695e5246382d393939393844505c6673808d99a6aea2988b7f7265594f4332281e130800000000000000000000000916222f3c4955626f7c8895a2afa4978a7e7c86929a96918c8784828181818285898e939aa1a9a8a0969083796d60574e42372b1f14090000000000000000000000000613202c3946535f6c7986929faca79a8d8174675a4e4134271b0e000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d000000000000000000000000000000000d1a2633404d596673808c9996897c6f635649505c6976838f9c9286796c5f5346392c2013060000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000c1925323f4c5865727f8b989f9f998d8073665a4d4033271a0d0000000000000006101b242e373f4850575e61696e73777b7e80828484858686858583827f7d79756f6b625f5750483f372d231a0e0400000000000000000000000a16212c3740494f5353535353535d69768390908376695d5353535353534f4940372c21160a000000000000000000020a131c242c323a41464d5254585f626568696b6c6c6c6c6b6a686663605c54544e47433c332d261d150c03000000000000000000000000000000000000000000000000000000000007121d28313c46505a606d7983909893939393928d82796d6053463a2d20130700000000000000000000000000000000000007131e2a35404952575960606060606060605a58524a40362c21180d04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010b151f2a333c454d525a6164696e72747778787979787774726e69636059514b433931271d12070000000000000000000000000000000000000000000206090e121415181a1c1e1f1f20201f1e1d1b19161413100c070300000000000000000000000000000000000714212d3a4754606d7a8283838383838174675b4e414855626f7c8283838383827f7265584c3f3225190c00030f1b27323d464e575f686d79818c929fa3a0958e81756d62584e443a2f261b110800000000101c2936434f5c6976828f9083767171717171717171717171717171716d685e5246392d201307000a1723303d4a5663707d8993939393939393939393939393939393938f8276695c4f4336291c10000000000000000000000000000000000000000406070a0c0e1011121213131211100e0c0a07060400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1925303b4854606b7784919daaac9f93877b6e6153493f33272d2d2d3a4653606d7984919eabac9f92867a6d6054473d3221160c0100000000000000000000000916222f3c4955626f7c8895a2afa3978a7e839098938d847f7b777574747476797c81889297a1a9a89f958d80736a5f53473b30251a0e0200000000000000000000000613202c3946535f6c7986929faca79a8d8174675a4e4134271b0e000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d000000000000000000000000000000000d1a2633404d596673808c9996897c6f635649505c6976838f9c9286796c5f5346392c2013060000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000c1925323f4c5865727f8b939393938d8073665a4d4033271a0d000000000000000009121c252e363e454d52575f62666a6e71737577787879797978777573706d67636059534d453e362d251b11080000000000000000000000000f1b27333e49525a5f60606060606069768390908376696060606060605f5a52493e33271b0f00000000000000000000010a121a202830363b4246484e5355585b5d5e5f5f5a61646c6c6c6c66635c52473d373127221b140b03000000000000000000000000000000000000000000000000000000000000010c161f2a343e45515c676e7b8586868686868686867a6e6154473b2e211408000000000000000000000000000000000000020d19242e3740474b4d53535353535353534d4c4740382f241a0f06000000000000000000000000000000000000000000000000000000000000000000000000000000000000030613131313131313130d0c0a07020000000000000000000000000003060809131313131313130b0b090501000000000000000007121d27313c464e575e616c71777b7f8183848586858584817f7b76706b605d554b43392f23180c040000000000000000000000000000000000000000000000020608080b0e1011121313131211100f0c0a07060400000000000000000000000000000000000000000713202c3945525d686d767676767676746f64584c4047535f6a6f767676767676726d62564a3e3125180b0007131f2c38434e5860696e7a828e939ca4a2989183796d605b51463d32281d140a0000000000101c2936434f5c6976828f91837e7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7a6d6154473a2e211407000a1723303d4a5663707d868686868686868686868686868686868686868276695c4f4336291c1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008141e2c38444f5965727f8c98a3aea4998c7f73655b5044372b1f2a36414c5663707d8a97a1ada79b8e8174685d5245392c2013040000000000000000000000000916222f3c4955626f7c8895a2afa89b8e818e9593878079726e6969686768656c6f757d859297a2ada79f92877b6e62574d42362a1e110500000000000000000000000613202c3946535f6c7986929faca79a8d8174675a4e4134271b0e000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d000000000000000000000000000000000d1a2633404d596673808c9996897c6f635649505c6976838f9c9286796c5f5346392c2013060000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000c1925323f4c5865727f8686868686868073665a4d4033271a0d0000000000000000000a131c242c333b42464d5355575f626466696a6b6b6c6c6c6b6a686663605d55544f47423c332d241b130900000000000000000000000000121e2b37434f5a646c6c6c6c6c6c6c6c7683909083766c6c6c6c6c6c6c6c645a4f43372b1e12000000000000000000000000080e161e252a30363a3c4347484b4e504a505b636c7079797979736e63574b3f32262017110a020000000000000000000000000000000000000000000000000000000000000000040d18222934404b555f696e78797979797979797976685e5246392d2014070000000000000000000000000000000000000007121c252e353b3f404646464646464646413f3c362f261d12080000000000000000000000000000000000000000000000000000000000000000000000000000000000060c101220202020202020201a1917130e0800000000000000000000040a0f13151620202020202020181715110c06000000000000000c18242f39434e585f696e767e83888c8e909192929291908e8b87827d746d675d554b40342920150a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004111d2935414c565d6069696969696967645c53483c434e585f6269696969696965625b51463a2e221609000915222e3b4854606a6f7b8490949ea5a49f92867c6e675d51493f342b20160b020000000000101c2936434f5c6976828f95918a8a8a8a8a8a8a8a8a8a8a8a8a8a8a897d7063564a3d3023170a000916222f3c4854606b70797979797979797979797979797979797979797670665a4e4135281c0f00000000000000000000000000000000000003080b0d0e13131313131313131313131313131313131313131313131313131313131313131311100e0a06000000000000000000000000000000000000000000000000000000000002101c27333d4754616d7a86929facab9e9184786c6053463a2f242d3946525e6875828f9ba9aca095897c6f63564c4135291d11040000000000000000000000000916222f3c4955626f7c8895a2afaa9e938e9393877e736d67615e575b5a535b60626b707c85929fa6afa3998e8175695e52463a2d20140800000000000000000000000613202c3946535f6c7986929faca79a8d8174675a4e4134271b0e000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d000000000000000000000000000000000d1a2633404d596673808c9996897c6f635649505c6976838f9c9286796c5f5346392c2013060000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000b1825313e4a56626d72797979797979736e63584b3f3226190c000000000000000000010a121a212930363c4247485761696b6c6c6c68605c5f5f5e5d5b595653514b48433d37312a211b1209010000000000000000000000000013202d3946535f6c767979797979797979839090837979797979797979766c5f5346392d201300000000000000000000000000050c13191f252a2d32373b3c3f444c545c606d727e868686868073665a4d4033271a0b060000000000000000000000000000000000000000000000000000000000000000000000060f18232f39434d575f616c6c6c6c6c6c6c6c6c6c5e564c41362a1e110500000000000000000000000000000000000000000a131c242a2f323339393939393939393433302b241d140b00000000000000000000000000000000000000000000000000000000000000000000000000000000030a11171c1f2d2d2d2d2d2d2d2d2726231f19120a0200000000000000070f161b1f22232d2d2d2d2d2d2d2524211d181109000000000004101d2935404b555f6a6e7b838a9095989b9c9a989898999c9b9a938f8981796d675c51453d32271b0f00000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d1924303a444c52545c5c5c5c5c5c5b58534a41363c464e53555c5c5c5c5c5c585651493f34291e1206000916232f3c4956626f7c85919693939393928a7e716a5f554b40372d22190e04000000000000101c2936434f5c6976828f9393939393939393939393939393939393897d7063564a3d3023170a000713202c38444f5960636c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c69665e54493d3225190d0000000000000000000000000000000001080f14181a1b2020202020202020202020202020202020202020202020202020202020202020201e1d1a16110b04000000000000000000000000000000000000000000000000000000000b16202d3946525d6875818e9ba7aca096897c7063554b4135292e3a4754616d7a86929facaa9d9084776b6054443a2f24190d010000000000000000000000000916222f3c4955626f7c8895a2afafa59e9b958c7f736c605c55524d4e4e49505359606a717e8a949fabab9f92877b6e6154473b3025190e02000000000000000000000613202c3946535f6c7986929faca79a8d8174675a4e4134271b0e000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d000000000000000000000000000000000d1a2633404d596673808c9996897c6f635649505c6976838f9c9286796c5f5346392c2013060000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000916222e3a46515b62656c6c6c6c6c6c66635c52473b2f23170a0000000000000000000000080f171f252a313744505d697378797979746d665e564e504f4c4a4745403938322b2620180f0900000000000000000000000000000013202d394653606c798686868686868686909494908686868686868686796c605346392d2013000000000000000000000000000002080d141a1e20262b343d454d565d666d747f87929892857b6e6154473b2e2114080000000000000000000000000000000000000000000000000000000000000000000000000007121d27313c454d53555f60606060606060605f524c443b3025190e020000000000000000000000000000000000000000010a12191e2325262d2d2d2d2d2d2d2d2726241f19130b02000000000000000000000000000000000000000000000000000000000000000000000000000000030c151c23282c393939393939393933322f2a241c140a00000000000007101920272b2e2f3939393939393932312e29221b12090000000006131f2c3945515d676e7c8490959d9d9993908d8b8b8b8d8f92999f9c938e82796d60584e43372b1c110600000000000000000000000106090b0c0e06060300000000000000020405060605040200000000000002070a0c0d0b0b0905010000000000000000000000000008131e28323a4145475050505050504e4c4841382f343c4347485050505050504c4a463f372d23180d01000d1a2633404d59667380868686868686868680746c61574e43392f251b100700000000000000101c2936434f5c697682868686868686868686868686868686868686867d7063564a3d3023170a0004101c27333d474f5456606060606060606060606060606060606060605c5a544c42382c211509000000000000000000000000000000020b131a202427272d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2a2927221c150d0500000000000000000000000000000000000000000000000000000005111d2935414c56636f7c8995a0aca89b8e8174675d5145392c37434e5865727f8b99a3aea2988b7f7265594f4332281e1308000000000000000000000000000916222f3c4955626f7c8895a2afb7afa89d9083786d605a514b464241413f44464f58616c76828f9ca9afa3998c7f7266564c41362a1e1105000000000000000000000613202c3946535f6c7986929faca79a8d8174675a4e4134271b0e000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d000000000000000000000000000000000d1a2633404d596673808c9996897c6f635649505c6976838f9c9286796c5f5346392c2013060000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000006121e29343f495156586060606060605a58524a40362a1f1307000000000000000000000000050d141a1f263845525f6b788586868681786d685f584f47403d3a38352f2c27211a150e060000000000000000000000000000000013202d394653606c798693939393939393969696969393939393939386796c605346392d201300000000000000000000000000000000050c151d2328363e464f575f686d78818c939993877d70695e52463a2d20140700000000000000000000000000000000000000000000000000000000000000000000000000010b151f2a333c4246485253535353535353535346413b32291e14080000000000000000000000000000000000000000000000070d1316191a20202020202020201a1a17130e0801000000000000000000000000000000000000000000000000000000000000000000000000000000000a151e262e34384646464646464646403f3b362e261c120800000000040f19222b32383b3c464646464646463e3d3a342d241b1106000004111d2935414c55606d798391969f9b938e8783807f7e7f8082878f949e9d948e81746a605447382e23170b00000000000000000000070d121618191b13120f0b06000608080c0e1112131312110f0c09080603080e1317191a181715110c06000000000000000000000000020c1620283035393a43434343434341403c362f262a32373b3c4343434343433f3e3a342d251b110700000c1925323f4b57636d737979797979797979746e645a50453c31281d120900000000000000000f1c2835414e5a66707679797979797979797979797979797979797979706b6054483c2f22160900000b16212b353d44484a535353535353535353535353535353535353534f4e49423a30261b10050000000000000000000000000000010b141d252b3033343939393939393939393939393939393939393939393939393939393939393939393736332e271f170d040000000000000000000000000000000000000000000000000000010d1924303a4854606b7783909daaac9f92857a6d6054473c313b4754606a7783909dabac9f92867a6d6054473d3221160c01000000000000000000000000000916222f3c4955626f7c8895a2afb9ada1968a7d70665c5045403936302d33373d46505a63707d8a97a1adab9d908377685e5246392d201407000000000000000000000613202c3946535f6c7986929faca79a8d8174675a4e4134271b0e000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d000000000000000000000000000000000d1a2633404d596673808c9996897c6f635649505c6976838f9c9286796c5f5346392c2013060000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000010d18232d373f464a4c5353535353534d4b4740382e24190e020000000000000000000000000002090e1926323f4c5965727f8c93938e827a6f6a6159514440393029241d1b160e0903000000000000000000000000000000000013202d394653606c798693928d89898989898989898989898989898986796c605346392d2013000000000000000000000000000000060e161e272e344048505960696e7a828e939f948c7f736b60574d42362a1e11050000000000000000000000000000000000000000000000000000000000000000000000000000030d18212a31373a3b4546464646464646463b3936302920170d0200000000000000000000000000000000000000000000000002070a0c0d13131313131313130e0d0b0703000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c2630383f4453535353535353534d4b4740382e24190e020000000a16202b343d434749535353535353534b4a453f362d22180c01000613202c3945515d6773808d95a09b918c817b767372717273767b828f939e9f93877c6f62544a3f34281c100300000000000000010911181e22252628201f1c17110e121415181b1e1e1f201f1e1c191615130f12191f2326272524211d181109000000000000000000000000040e161e24292c2d3636363636363433302b251d20262b2e2f36363636363632312e29231b13090000000a16232f3b47525b63666c6c6c6c6c6c6c6c67645c52483e332a1f160c0000000000000000000d1925323d49545e66696c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6360594f44382c2013070000050f19232b33383c3d4646464646464646464646464646464646464643413d3830281e140a00000000000000000000000000000008131d262f363c404146464646464646464646464646464646464646464646464646464646464646464644423f3931291f150b00000000000000000000000000000000000000000000000000000008131e2c38434f5965727f8b98a2aea2988b7e7165574d4237404b55626f7c8895a0aca79b8e8174685d5245392c20130400000000000000000000000000000916222f3c4955626f7c8895a2afb7ab9e9184786c60544a3f342e2a2522272b343e4653606c7885919eabac9f93877a6e6154473b2e211408000000000000000000000613202c3946535f6c7986929faca79a8d8174675a4e4134271b0e000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d000000000000000000000000000002090e1a2633404d596673808c9996897c6f635649505c6976838f9c9286796c5f5346392c2013060000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000007111b252d343a3e3f464646464646403f3b362e261c1208000000000000000000000000000000000b1825313e4a56626d75818f969490847c706b625b514a423a322a211911060000000000000000000000000000000000000013202d394653606c7986938d807d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7063564a3d3023170a0000000000000000000000000000070f18202830394045525a616b6f7b838f949d968f82776c60594f453b30251a0e02000000000000000000000000000000000000000000000000000000000000000000000000000000060f181f262b2d2e3939393939393939392e2d2a251e170e050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c17232e38424a505f606060606060605a58524a40362a1f13070000030f1b27323d464e545660606060606060585650483f34291d1105000714212d3a4754606d7a85929f9e948c7f746e696765656566696e78818f98a39a8e8175665c5044382b1f12060000000000000009131b23292e3132352d2b28221c1a1e212225282a2b2c2c2b2a282622221f1b1c242a2f323332312e29221b1209000000000000000000000000040c13191d2021292929292929282724201a13151b1f21222929292929292525221e1811090100000007131e2a35404952575960606060606060605a58524a40362c21180d040000000000000000000915212c38424c545a5c6060606060606060606060606060606060606056544f473d33271c100400000008111921272c2f30393939393939393939393939393939393939393635322c261e160c020000000000000000000000000000030f1a252f3841484c4e535353535353535353535353535353535353535353535353535353535353535353514f4a433b31271c11060000000000000000000000000000000000000000000000000000020f1b27323d4754606d7a86929facaa9c908376695f53473845515c6774808d9aa7aca095897c6f63564c4135291d110400000000000000000000000000000916222f3c4955626f7c8895a2afb6ac9a8d8073665b5042382e231d1a171b222b3744505b6574818e9ba7afa49a8a7e7164574b3e31241807000000000000000000000613202c3946535f6c7986929faca79a8d8174675a4e4134271b0e000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d000000000000000000000000040a0f141a1e2633404d596673808c9996897c6f635649505c6976838f9c9286796c5f5346392c2013060000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000009131b23292e313239393939393933322f2a241c140a00000000000000000000000000000000000916222e3a46515b606d7a8491989691867d726d605c544c443c332b2317110a02000000000000000000000000000000000013202d394653606c7986938b7e727070707070707070707070707070706b6054483c2f22160900000000000000000000000000071019212a323a434b515b636c717d8591959f9991847a6d655b50473d33291f14090000000000000000000000000000000000000000000000000000000000000000000000000000000000060e141a1e21222c2d2d2d2d2d2d2d2d21201e19140d05000000000000000000000000000000000000000000000000000000000000000000000000000000000001070b0f1112131313131313130a090704000001070b0f1112131313131313130a0907040000000000000003101c28343f4a545c6c6c6c6c6c6c6c6c66635c52473b2f23170a000006131f2b38434e5860626c6c6c6c6c6c6c65625a50453a2e211509000b1825323e4b5865717e8b989e9c8f82756d615e57585858575e666e7b86929f9e9285786d6053463a2d20130700000000000009121b252d353a3e3f413938332d26262b2e2f323537383939383735322f2e2b27262e353b3f403e3d3a342d241b120900000000000000000000000002080d1113141d1d1d1d1d1d1b1a18140f080a0f1215151d1d1d1d1d1d191816120d070000000000020d19242e3740474b4d53535353535353534d4c4740382f241a0f060000000000000000000005101b26303a42494e4f535353535353535353535353535353535353534a48443d352b21160b0000000000080f161c2022232d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d292825211b140c040000000000000000000000000000000814202b36414a53585a6060606060606060606060606060606060606060606060606060606060606060605d5b554d43392e22160a0000000000000000000000000000000000000000000000000000000a16202c3945515d6774818e9aa7ab9f94887b6e62544a3f4653606d7985929fabaa9d9084776b6054443a3024190d0100000000000000000000000000000916222f3c4955626f7c8895a2afafa49a897d7063544a3f30261c120e0b0f1b27333f495364717e8b97abb5ac9a8d8073675a4d402e23180c000000000000000000000613202c3946535f6c7986929faca79a8d8174675a4e4134271b0e000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d0000000000000000000002080d161b1f252a2d33404d596673808c9996897c6f635649505c6976838f9c9286796c5f5346392c2013060000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000000010911181e2225252d2d2d2d2d2d2726231f19120a02000000000000000000000000000000000006121e29353f45525d686f7c86929f9892877f746d665d564d453d3528231c140c030000000000000000000000000000000013202d394653606c7986938b7e7265636363636363636363636363636360594f44382c201307000000000000000000000000040f19222b333c444c555c606d737e869297a09f92877c6f685d53493f352b20170d0200000000000000000000000000000000000000000000000000000000000000000000000000000000000003090e1214151f20202020202020201414110e08020000000000000000000000000000000000000000000000000000000000000000000000000000000000050c12171b1e1f20202020202020171613100b050c12171b1e1f20202020202020171613100b05000000000006121f2c3844505c667679797979797979736e63584b3f3226190c00000815222e3b4754606a6f79797979797979716c62564a3d3124170b000e1b2835414e5b6874818e909192897c6f635b524d4c4b4c4d545e6976828f9ca297887b6e6155483b2e221508000000000009121b252d373f464a4c4e46443f382f31373a3b3f41444546464544423f3c3b37322c3840474b4d4b4a453f362d241a120800000000000000000000000000010407071010101010100e0d0b08030000030608091010101010100c0b0906010000000000000007121c252e353b3f404646464646464646413f3c362f261d12080000000000000000000000000a141e2830383d4143464646464646464646464646464646464646463d3c38332b23190f05000000000000050b10131617202020202020202020202020202020202020201c1c1915100a02000000000000000000000000000000000b1824303c48535c64676c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6a675f554a3f33271a0e00000000000000000000000000000000000000000000000000000004111d2935414c55626f7c88959faba6998d8073665c50444d5764717e8a97a2ada2988b7f7265594f4332281e13080000000000000000000000000000000916222f3c4955626f7c8895a2afac9f93867a6d6053473a2d20140a00000b17222d3c4855626f7b8899a4afa99c8f837669554b4034281c10040000000000000000000613202c3946535f6c7986929faca79a8d8174675a4e4134271b0e000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d000000000000000000050c131921272c30363a3b404d596673808c9996897c6f635649505c6976838f9c9286796c5f5346392c2013060000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000070d121618192020202020201a1917130e0800000000000000000000000000000000000000010d18232935414c565f6a727e8b939e99938c81786d685f574f473f342e261e150c0300000000000000000000000000000013202d394653606c7986938b7e72655856565656565656565656565656544f473d33271c10040000000000000000000000000a16212b343d454d565e676d757f8a9298a19e938b7f726a60564c41382d23190e050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000205070812131313131313131308070502000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f171e23282a2b2d2d2d2d2d2d2d2322201c160f171e23282a2b2d2d2d2d2d2d2d2322201c160f08000000000713202d3a4653606d78868686868686868073665a4d4033271a0d00000916232f3c4956626f7c868686868686867e7165584b3e3225180b000c1926323f4c5965727f8283848586786d605346423f3e3f424d576773808d9aa995897c6f6256493c2f2316090000000008121b242d373f495157595b53504a42383c4247484b4e5151525352514f4c4947433c39404a52585a585650483f362c241a1108000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a131c242a2f323339393939393939393433302b241d140b00000000000000000000000000020c161e262c32353639393939393939393939393939393939393939302f2c27211911080000000000000000000407090a13131313131313131313131313131313131313100f0d09050000000000000000000000000000000000000d1a2733404c58646e747979797979797979797979797979797979797979797979797979797979797979797771675b4f4236291d10000000000000000000000000000000000000000000000000000000010d19242f3a47545f6a7783909da9ab9e9184796d605346525e6976828f9ca9ac9f92867a6d6054473d3221160c020000000000000000000000000000000916222f3c4955626f7c8895a2afaa9e918477675d5145392c20130200000613202d3a4653606d7986939facab9e918478675c5145382c1f13060000000000000000000613202c3946535f6c7986929faca79a8d8174675a4e4134271b0e000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d0000000000000000070e171e252a32383b4246474b4e596673808c9996897c6f635649505c6976838f9c9286796c5f5346392c2013060000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000070d121618192020202020201a1917130e080000000000000000000000000000000000000000070d19242f3a434e58626d75818e95a09f928e827a6e69605951443f3830271e150b00000000000000000000000000000013202d394653606c7986938b7e7265584b4a4a4a4a4a4a4a4a4a4a4a4a48443d352b21160b000000000000000000000000030f1b27323d464e575f686d79818c929fa3a0958e81756d62584e443a2f261b11080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f1821282f34373839393939393939302f2c27211921282f34373839393939393939302f2c27211911080000000713202d3a4653606d798693939393938d8073665a4d4033271a0d00000916232f3c4956626f7c8993939393938b7e7165584b3e3225180b000c1825313e4a57636d7275767778796d665c5044383030363f4c5966727f8c99ab96897d7063564a3d3023170a000000040d1a242d363f49515b626568605b544a45464d5355585b5d5e5f5f5e5d5b5955544e47454a525c636665625a50483e362c231a0d0400000000000000000003060809131313131313131313131313131313131313131313131313130b0a0804000000000000000000010a12191e2325262d2d2d2d2d2d2d2d2726241f19130b020000000000000000000000000000040c141b212528292d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2322201c160f0800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1b2734414e5a67748186868686868686868686868686868686868686868686868686868686868686868683776a5d5144372a1e110000000000000000000000000000000000000000000000000000000008131e2b37434e5865717e8b97a2ada1968a7d7063564c54616e7b87939faca79b8e8174685d5245392c201304000000000000000000000000000000000916222f3c4955626f7c8895a2afa89c8f827569554b4035291d1104000006131f2c3845515c677884919eabac9f9386796d6053463a2d2013070000000000000000000613202c3946535f6c7986929faca79a8d8174675a4e4134271b0e000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d00000000000000071019202930363d44484d5254575b5d6673808c9996897c6f635649505c6976838f9c9286796c5f5346392c2013060000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000000010911181e2225252d2d2d2d2d2d2726231f19120a020000000000000000000000000000000000000008131e28313c46515b606d79839198a29d948f847b706b625b504a423930271d1207000000000000000000000000000013202d394653606c7986938b7e7265584b3f3d3d3d3d3d3d3d3d3d3d3d3c38332b23190f0500000000000000000000000007131f2c38434e5860696e7a828e939ca4a2989183796d605b51463d32281d140a0000000000000000000000000000000000000000000002070c0f11121313131313131313131313131313131313131313131313131313131313131313131313131308070502000000000000000000000001070b0f1112131313131313130a09070400000000000000010c17212a333a404345464646464646463d3c38332b232a333a404345464646464646463d3c38332b23190f0500000713202d3a4653606d7986939f9f9f998d8073665a4d4033271a0d00000916232f3c4956626f7c89959f9f9f988b7e7165584b3e3225180b000916222e3a46515b636568696b676d675c544a3f41414142464e586673808d99a399887c6f6255493c2f2216090000010c161f2c363f48515b626d72746c665b545153575f6265686a6b6c6c6b6a68656260585452525c636e73716c625a50483e352c1f160c01000000000000040a0f12151520202020202020202020202020202020202020202020202020171714110c05000000000000000000070d1316191a20202020202020201a1a17130e080100000000000000000000000000000000020a1015191c1c20202020202020202020202020202020202020171613100b05000000000000000000000000000000000000000003090d1012131313131313130e0d0b080300000000000000000000000000000000000000000e1b2734414e5a6774818d939393939393939393939393939393939393939393939393939393939393939083776a5d5144372a1e1100000000000000000000000000000000000000000000000000000000010f1b26323c4753606d7985929faba99b8e8275685d525966737f8c99a4aca095897c6f63564c4135291d1104000000000000000000000000000000000916222f3c4955626f7c8895a2afa79a8d8174675a4e412f24180d01000004101c2834404b556a7683909da9afa49a887b6e6155483b2e2215080000000000000000000613202c3946535f6c7986929faca79a8d8174675a4e4134271b0e000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d000000000000061019222b323a41464f54575e6164676a6b73808c9996897c6f635649505c6976838f9c9286796c5f5346392c2013060000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000009131b23292e313239393939393933322f2a241c140a00000000000000000000000000000000000000010c161f2a343f45515d676e7c86929fa59f9691857d726d605c544b42392e23180c000000000000000000000000000013202d394653606c7986938b7e7265584b3f3d3d3d3d3d3d3d3d3d3d3d3c39332c231a10050000000000000000000000000915222e3b4854606a6f7b8490949ea5a49f92867c6e675d51493f342b20160b02000000000000000000000000000000000000000000060d13181c1e1f202020202020202020202020202020202020202020202020202020202020202020202020201514120e09030000000000000000050c12171b1e1f20202020202020171613100b05000000000007121e28333c454b5052535353535353534a48443d352b333c454b5052535353535353534a48443d352b21160b00000713202d3a4653606d798693a0aca6998d8073665a4d4033271a0d00000916232f3c4956626f7c8995a2aca4988b7e7165584b3e3225180b0006121e2a353f495157595b5d555c605c554b474e4e4e4e4d52575f6a76838f9c9f92867a6d6054473a2d211407000007131d28313e48505a626d727f81786c665b5c6064696e727477787979787775726f6a65605d5c636e73807e716c615a50473e31281e13080000000000060e151b1f21222d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2423211c17100800000000000000000002070a0c0d13131313131313130e0d0b0703000000000000000000000000000000000000000005090d0f10131313131313131313131313131313131313130a090704000000000000000000000000000000000000000000070e14191d1f202020202020201b1a17140e08010000000000000000000000000000000000000e1b2734414e5a6774818d9a9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9d9084776a5d5144372a1e1100000000000000000000000000000000000000000000000000000000000a151f2c3945515d6774808d9aa6ac9f92867a6d6154606b7784919eabaa9d9084776b6054443a3024190d01000000000000000000000000000000000916222f3c4955626f7c8895a2afa6998c807366594d4033261a07000000000c18232e424f5c6975828f9ca8b6ac95887c6f6255493c2f2216090000000000000000000613202c3946535f6c7986929faca79a8d8174675a4e4134271b0e000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d0000000000050e18222b343d444c52596063696e7174767778808c9996897c6f635649505c6976838f9c9286796c5f5346392c2013060000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000007111b252d343a3e3f464646464646403f3b362e261c120800000000000000000000000000000000000000040d18222935404b555f6a717e8a939da7a09792877f746d665c544b4034281c10040000000000000000000000000013202d394653606c7986938b7e7265584b4a4a4a4a4a4a4a4a4a4a4a4a49443e362c22170b0000000000000000000000000916232f3c4956626f7c85919693939393928a7e716a5f554b40372d22190e04000000000000000000000000000000000000000000070f171e24282b2c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d22211e1a140e06000000000000060f171e23282a2b2d2d2d2d2d2d2d2322201c160f08000000000b17232f3a454e565c5e6060606060606056544f473d333a454e565c5e6060606060606056544f473d33271c1004000713202d3a4653606d798693a0aca6998d8073665a4d4033271a0d00000916232f3c4956626f7c8995a2afa4988b7e7165584b3e3225180b00010d18232d373f464a4c4f504b5153514c52545a5a5a5b575e61696f7c87929f9c8f8376675d5145392c20130600010d18242f3a43505a626c727f8b8e81786c66666d71767b7e81848485868584827f7c77726d68606e73808d877e716c61594f433a2f24190d0100000006101820262b2e2f3939393939393939393939393939393939393939393939393931302d28221a1208000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000811191f25292b2c2d2d2d2d2d2d2726241f1a130b0200000000000000000000000000000000000e1b2734414e5a6774818d9aa7acacb2a9a19e9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9084776a5d5144372a1e11000000000000000000000000000000000000000000000000000000000004101d2935404b55626f7b88949faba3998b7e726557636f7c8996a0aca2988b7f7265594f4332281e130800000000000000000000000000000000000916222f3c4955626f7c8895a2afa5988b7f7265584c3f3225190c00000000071b2835424e5b6875818e9ba8b0a396897d7063564a3d3023170a0000000000000000000613202c3946535f6c7986929faca79a8d8174675a4e4134271b0e000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d00000000020c16202a343d464e565e616b6f757b7e8183848587939f96897c6f635649505c6976838f9c9286796c5f5346392c2013060000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000010d18232d373f464a4c5353535353534d4b4740382e24190e0200000000000000000000000000000000000000071018242f39434e58616c74818e95a0a9a299928b80786d665c5145382c1f13060000000000000000000000000013202d394653606c7986938b7e726558575757575757575757575757575550483e33281c100400000000000000000000000d1a2633404d59667380868686868686868680746c61574e43392f251b1007000000000000000000000000000000000000000000060f1921292f343738393939393939393939393939393939393939393939393939393939393939393939393939392e2d2b261f180f0600000000050f1821282f34373839393939393939302f2c27211911080000000f1b2834404b5660686b6c6c6c6c6c6c6c6360594f4438404b5660686b6c6c6c6c6c6c6c6360594f44382c201307000713202d3a4653606d798693a0aca6998d8073665a4d4033271a0d00000916232f3c4956626f7c8995a2afa4988b7e7165584b3e3225180b000007111c252d353a3e3f42434045474c565d616767676869696e727b8491999e938a7d7063554b4135291d11040004111d2935404b55616c717e8893938e81786c70797e83888b8e9091929291908e8c88847f7a726d73808d9292877e716b61554c4135291d11040000040e18222a32373b3c464646464646464646464646464646464646464646464646463e3c39332c241a1005000000000000000000000000020608080c0b09060100000000000000000000000000000000000000000004080a0b0807050200000000000000000000000000000000000205070813131313131313130707050100000000000000000007111a232a313538393939393939393433302b241d140b01000000000000000000000000000000000e1b2734414e5a6774818d9aa9b3b9ada1979191919191919191919191919191919191919191919191919083776a5d5144372a1e110000000000000000000000000000000000000000000000000000000000000c18242f3947535f6a7683909ca9ab9d908376695f6774818e9aa8ac9f92867a6d6054473d3221160c0200000000000000000000000000000000000916222f3c4955626f7c8895a2afa5988b7e7265584b3f3225180c000000010e1b2834414e5b6774818e9aa7b0a3978a7d7064574a3d3124170a0000000000000000000613202c3946535f6c7986929faca79a8d8174675a4e4134271b0e000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d0000000008131e28323c464e5860686d767c82878a8e9091929399a496897c6f635649505c6976838f9c9286796c5f5346392c2013060000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000006121e29343f495156586060606060605a58524a40362a1f1307000000000000000000000000000000000000000007121d28313c46505a606d7983909893939393928d82796d6053463a2d2013070000000000000000000000000013202d394653606c7986938b7e72656464646464646464646464646464615a5044392d20140800000000000000000000000c1925323f4b57636d737979797979797979746e645a50453c31281d1209000000000000000000000000000000000000000000020d17212b333b404445464646464646464646464646464646464646464646464646464646464646464646464646463b3a37312a21180e030000010c17212a333a404345464646464646463d3c38332b23190f050000111e2a3743505c68727879797979797979706b6054483c43505c68727879797979797979706b6054483c2f221609000713202d3a4653606d798693a0aca6998d8073665a4d4033271a0d00000916232f3c4956626f7c8995a2afa4988b7e7165584b3e3225180b0000000a131c232a2e3132352f343946525d686d7474747475777b7f8591969e938e81746b6155433a2f24180d01000613202c3945515d67717e87939a9d938e81797d848b9095989b9d9e9f9f9e9d9b9895918c857f79808d929c9992877d70675d5145392c20130600000a15202a343c434748535353535353535353535353535353535353535353535353534a49453e362c22170c0000000000000000000003090e121415191815120d06000000000000000000000000000000000000050c111417171514120e09030000000000000000000000000002090e12141520202020202020201413110d0802000000000000030e19232c353c414546464646464646413f3c362f261d1308000000000000000000000000000000000e1a2734414d5a6774808d97a2adb8ab9e91858484848484848484848484848484848484848484848484848275685c4f4235291c0f00000000000000000000000000000000000000000000000000000000000007121d2b37434e5864717e8a97a1ab9f95887b6e616d7985929faba79b8e8174685d5245392c2013040000000000000000000000000000000000000916222f3c4955626f7c8895a2afa4978b7e7164584b3e3125180b000000010e1b2734414e5a6774818d9aa7b1a4978a7e7164574b3e3124180b0000000000000000000613202c3946535f6c7986929faca79a8d8174675a4e4134271b0e000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d000000010d1925303a444e58606a6f7a82898f94979a9d9e9f9fa4ab96897c6f635649505c6976838f9c9286796c5f5346392c2013060000000000000000000000000000101d2a3643505d69768390908376695d5043362a1d100000000000000000000916222e3a46515b62656c6c6c6c6c6c66635c52473b2f23170a0000000000000000000000000000000000000000010c161f2a343e45515c676e7b8586868686868686867a6e6154473b2e2114080000000000000000000000000013202d394653606c7986938b7e727070707070707070707070707070706c6155493c3023160a00000000000000000000000a16232f3b47525b63666c6c6c6c6c6c6c6c67645c52483e332a1f160c0000000000000000000000000000000000000000000007131e29333d454c5052535353535353535353535353535353535353535353535353535353535353535353535353534846423c332a1f1409000007121e28333c454b5052535353535353534a48443d352b21160b0000121f2b3845525e6b7884868686868686867d7063564a3d45525e6b7884868686868686867d7063564a3d3023170a000713202d3a4653606d798693a0aca6998d8073665a4d4033271a0d00000916232f3c4956626f7c8995a2afa4988b7e7165584b3e3225180b000000010a11181e22252628232e3a4754616d7a808181818284878c929796918b81796d60594f4431281d130700000714202d3a4753606d7a859297a2a59d938e848991969d9fa7a7aaa8a7a7a8aaa8a7a09d97928b858d929ca4a39892857a6d6054473a2d21140700030f1b26323c464e535560606060606060606060606060606060606060606060606060575550483e33281c11040000000000000000060e151a1e21222524221e181109010000000000000000000000000000000810171c21232422211e1a140d060000000000000000000000050d141a1e20212d2d2d2d2d2d2d2d21201d19130c05000000000009141f2a353e474d51535353535353534e4c4741382f241a0e030000000000000000000000000000000815212e3b4854616e7b85929ea4aea99d9083787777777777777777777777777777777777777777777777756f65594d4134281b0e000000000000000000000000000000000000000000000000000000000000010f1a26313c4653606d7985929eaca7998c7f7366717d8a98a2aca095897c6f63564c4135291d11040000000000000000000000000000000000000916222f3c4955626f7c8895a2afa4988b7e7165584b3e3225180b000000010e1a2734414d5a6774808d9aa7b1a4978b7e7164584b3e3125180b0000000000000000000613202c3946535f6c7986929faca79a8d8174675a4e4134271b0e000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d00000005111d2a36414c565f6a6f7d848f949c9ea6a7a9aaabacafa296897c6f635649505c6976838f9c9286796c5f5346392c201306000000000000000000000000030a0f1d2a3643505d69768390908376695d5043362a1d0f0a03000000000000000b1825313e4a56626d72797979797979736e63584b3f3226190c000000000000000000000000000000000000000000040d18222934404b555f696e78797979797979797976685e5246392d2014070000000000000000000000000013202d394653606c7986938d807d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7e7064574a3d3124170a000000000000000000000007131e2a35404952575960606060606060605a58524a40362c21180d04000000000000000000000000000000000000000000000c18242f3b454f575d5f6060606060606060606060606060606060606060606060606060606060606060606060606055534d453c31261a0e02000b17232f3a454e565c5e6060606060606056544f473d33271c100400121f2b3845525e6b7885919393939393897d7063564a3d45525e6b7885919393939393897d7063564a3d3023170a000713202d3a4653606d798693a0aca6998d8073665a4d4033271a0d00000916232f3c4956626f7c8995a2afa4988b7e7165584b3e3225180b0000000000070d121618191c212e3b4854616e7b878d8d8e8f9193938f8d89847e756d675c51473e331f160c0100000613202c3945515d676f7c859298a2a59d9591959da0a8aba8a09d9b9a9a9b9d9fa4aca9a19e9691969ca4a39992867d70675d5145392c2013060006121f2b37434e585f626c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c64615a5045392d21140800000000000000060f181f262b2e2f32312e29231b130a010000000000000000000000000008121a22282d30312e2d2a261f180f06000000000000000000050f171f252a2d2e39393939393939392e2d2a251e160e05000000010d1925313c4750585e5f6060606060605a58524a41362b1f14080000000000000000000000000000000714202d3a46525e69707d8a929da7ab9f958d80736b6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a68655d54493d3125190c000000000000000000000000000000000000000000000000000000000000000a151f2c3845515c6773808d9aa4aa9d9184776a75828e9baaaa9d9084776b6054443a3024190d010000000000000000000000000000000000000916222f3c4955626f7c8895a2afa5988b7e7265584b3f3225180c000000010e1b2734414e5a6774818d9aa7b1a4978a7e7164574b3e3124180b0000000000000000000613202c3946535f6c7986929faca79a8d8174675a4e4134271b0e000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d0000000713202d3946525e686f7c8691969ea6aab0b4b6b7b8b9afa296897c6f635649505c6976838f9c9286796c5f5346392c2013060000000000000000000000060e151a1f2a3643505d69768390908376695d5043362a1f1a150e060000000000000c1925323f4c5865727f8686868686868073665a4d4033271a0d00000000000000000000000000000000000000000000060f18232f39434d575f616c6c6c6c6c6c6c6c6c6c5e564c41362a1e11050000000000000000000000000013202d394653606c798693928d8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a86796c605346392d20130000000000000000000000020d19242e3740474b4d53535353535353534d4c4740382f241a0f0600000000000000000000000000000000000000000000000f1c2834404c5761686b6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c5f574d42372b1e1205000f1b2834404b5660686b6c6c6c6c6c6c6c6360594f44382c20130700121f2b3845525e6b7885919e9f9f9f96897d7063564a3d45525e6b7885919e9f9f9f96897d7063564a3d3023170a000713202d3a4653606d798693a0aca6998d8073665a4d4033271a0d00000916232f3c4956626f7c8995a2afa4988b7e7165584b3e3225180b0000000000000106090c0c15212e3b4854616e7b87949a9b9c9e938682807d78716c605c554b40352c210d0400000004111d2935404b55606a6f7c869298a2a7a09da0a7a9a29f9996918f8e8d8e90939a9ea1a8a8a19ea1a8a39992877d706b60554c4135291d1104000815212e3b47535f6a7679797979797979797979797979797979797979797979797979716c6155493c3023170a000000000000060f18212a31373a3b3f3e3a342d251c130a01000000000000000000000008121a242c33393c3e3b3a36312921180f0500000000000000020d17212930363a3b4646464646464646463936302820160c02000004101d2935414d58626a6c6c6c6c6c6c6c67645c52473c3024170b00000000000000000000000000000005121e2a36424d57616c74808d95a0aaa79f93887d70685e545e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5c59544b42372c2115090000000000000000000000000000000000000000000000000000000000000004101c2834404b55616e7b87939faca095887b6f7985929faca3988b7f7265594f4332281e1308000000000000000000000000000000000000000916222f3c4955626f7c8895a2afa5988b7f7265584c3f3225190c000000010e1b2834414e5b6774818e9aa7b0a4978a7d7164574a3e3124170b0000000000000000000613202c3946535f6c7986929faca79a8d8174675a4e4134271b0e000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d000005121e2a36424d57616d7a849198a1a8b0b7bbc1c3c4c5bcafa296897c6f635649505c6976838f9c9286796c5f5346392c2013060000000000000000000006101820262b2e3643505d69768390908376695d5043362e2b262018100600000000000c1925323f4c5865727f8b939393938d8073665a4d4033271a0d000000000000000000000000000000000000000000000007121d27313c454d53555f60606060606060605f524c443b3025190e020000000000000000000000000013202d394653606c798693939393939393939393939393939393939386796c605346392d201300000000000000000000000007121c252e353b3f404646464646464646413f3c362f261d1208000000000000000000000000000000000000000000000000111e2b3744505d6873787979797979797979797979797979797979797979797979797979797979797979797979797976695f53463a2d21140700111e2a3743505c68727879797979797979706b6054483c2f22160900121f2b3845525e6b7885919eabaca396897d7063564a3d45525e6b7885919eabaca396897d7063564a3d3023170a000713202d3a4653606d798693a0aca6998d8073665a4d4033271a0d00000916232f3c4956626f7c8995a2afa4988b7e7165584b3e3225180b000000000000060b0f12131c212e3b4854616e7b8793939495989a9285817d756e685e574d43392e23180c00000000010d18242f3a434e58606a6f7d86929aa4acaaaca59d97928c88848281818283878b91969fa3ababadac9f92877d706b61594f433a2f24190d01000915222f3c4855626f7c868686868686868686868686868686868686868686868686867e7164574a3e3124170b0000000000050f18212a333c4247484c4a463f372e251c130a0100000000000000000008121a242c363e45494a4846423b332921170e0500000000000009141f29333b42464853535353535353535346413a32281e1308000005121f2b3845515e6a7479797979797979746e64584c3f33261a0d000000000000000000000000000000020e1a25303b454f59606d79839098a2aea49a92857a6e665b5051515151515151515151515151515151514f4d49423930261b100400000000000000000000000000000000000000000000000000000000000000000c18232e3946535f6976828f9ca9a7998c7f737d8a98a2ac9f92867a6d6054473d3221160c02000000000000000000000000000000000000000916222f3c4955626f7c8895a2afa6998c7f7366594c4033261907000000020f1b2835424e5b6875818e9ba8b0a3978a7d7064574a3d3124170a0000000000000000000613202c3946535f6c7986929faca79a8d8174675a4e4134271b0e000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d00000714212d3a46535f6974818e96a1aab2bac2c7ccd0d1c9bcafa296897c6f635649505c6976838f9c9286796c5f5346392c201306000000000000000000061018222a31373a3c43505d69768390908376695d50433c3a37312a22181006000000000c1925323f4c5865727f8b989f9f998d8073665a4d4033271a0d0000000000000000000000000000000000000000000000010b151f2a333c4246485253535353535353535346413b32291e1408000000000000000000000000000013202d394653606c798686868686868686868686868686868686868686796c605346392d2013000000000000000000000000000a131c242a2f323339393939393939393433302b241d140b00000000000000000000000000000000000000000000000000121f2c3845525f6b7885868686868686868686868686868686868686868686868686868686868686868686868686867b6e6155483b2e22150800121f2b3845525e6b7884868686868686867d7063564a3d3023170a00121f2b3845525e6b7885919eabaca396897d7063564a3d45525e6b7885919eabaca396897d7063564a3d3023170a000713202d3a4653606d798693a0aca6998d8073665a4d4033271a0d00000916232f3c4956626f7c8995a2afa4988b7e7165584b3e3225180b00000000020a11171c1f2028232e3b4854616e7b86868687898c9195928e89827a6e695e544a4034281c10040000000007131d28313d464e58606b6f7c87939facaba39f938e857f7b7775747475777a7e848c9299a2a9b3a4978a7e716b61594f473d31281e130800000916232f3c4956626f7c8993939393939393939393939393939393939393939393938a7d7164574a3e3124170b00000000050e172129333c454d5355585651493f372e251c130a010000000000000008121a242c363e4850555755534d453b332920170e0500000000020e1a25303b454d525f60606060606060605f524c443a3025190d01000613202c3946535f6c79868686868686868074675a4e4134271b0e0100000000000000000000000000000009141f29333e45515c676e7b86929fa5aca1978f82786c60594f4444444444444444444444444444444442413d3730271e140900000000000000000000000000000000000000000000000000000000000000000007121d2b37424d5764717d8a97a1aa9d908377818e9baaa79b8e8174685d5245392c20130400000000000000000000000000000000000000000916222f3c4955626f7c8895a2afa79a8d8174675a4e412e23180c000000030f1c2936424f5c6975828f9ca8afa296897c6f6356493c302316090000000000000000000613202c3946535f6c7986929faca79a8d8174675a4e4134271b0e000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d00000815222e3b4855616e7b87929fa8b2bcc4ccd3d7dcd5c9bcafa296897c6f635649505c6976838f9c9286796c5f5346392c2013060000000000000000060f18222a343c43474847505d69768390908376695d50474847433c342a22180f060000000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d000000000000000000000000000000000000000000000000030d18212a31373a3b4546464646464646463b3936302920170d02000000000000000000000000000013202d3946535f6c767979797979797979797979797979797979797979766c5f5346392d201300000000000000000000000000010a12191e2325262d2d2d2d2d2d2d2d2726241f19130b0200000000000000000000000000000000000000000000000000121f2c3845525f6b7885929393939393939393939393939393939393939393939393939393939393939393939393887b6e6155483b2e22150800121f2b3845525e6b7885919393939393897d7063564a3d3023170a00121f2b3845525e6b7885919e9f9f9f96897d7063564a3d45525e6b7885919e9f9f9f96897d7063564a3d3023170a000713202d3a4653606d798693a0aca6998d8073665a4d4033271a0d00000916232f3c4956626f7c8995a2afa4988b7e7165584b3e3225180b000000020b141c22282b2d352e343a46535e69767979797a7c7f848c9399948f847b6e665c5144382c1f150900000000010c161f2b343d45515d67717e8b9aa4afa399928b817a736e6968676768686e72797f879297a2aaa6998c7f73695f53463e352b1f160c010000091623303c4956636f7c89969f9fa8a19e9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c978a7d7164574a3e3124170b000000020b172029333b454d575f6265625b51493f372e251c130a01000000000008121a242c363e48505a6164615f574d453b322920170c0200000005121e2a36424d575e6c6c6c6c6c6c6c6c6c6c5e564c41362a1d1105000613202c3946535f6c798692939393938d8174675a4e4134271b0e01000000000000000000000000000000030d17212834404b555f69717e8a939da8a99f948c7f736b60564c4135373737373737373737373737373534312c261e150c02000000000000000000000000000000000000000000000000000000000000000000000e1a26313c4653606d7984919eaba095887b85929faba095897c6f63564c4135291d110400000000000000000000000000000000000000000916222f3c4955626f7c8895a2afa89b8f827568544a4034281c1004000004101c2934404b556a7683909da9b4aa95887b6f6255483c2f2215090000000000000000000613202c3946535f6c7986929faca79a8d8174675a4e4134271b0e000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d0006121e2b37424d576774818d99a3afbac4ced6dfe3e2d5c9bcafa296897c6f635649505c6976838f9c9286796c5f5346392c20130600000000000000030e18212a343c464e535554525d69768390908376695d525455534e463c342a21180e0300000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d00000000000000000000000000000000000000000000000000060f181f262b2d2e3939393939393939392e2d2a251e170e05000000000000000000000000000000121e2b37434f5a646c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c645a4f43372b1e12000000000000000000000000000000070d1316191a20202020202020201a1a17130e08010000000000000000000000000000000000000000000000000000121f2c3845525f6b7885929e9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f94887b6e6155483b2e22150800121f2b3845525e6b7885919e9f9f9f96897d7063564a3d3023170a00121f2b3845525e6b7885919393939393897d7063564a3d45525e6b7885919393939393897d7063564a3d3023170a000713202d3a4653606d798693a0aca6998d8073665a4d4033271a0d00000916232f3c4956626f7c8995a2afa4988b7e7165584b3e3225180b0000000a141d262d33383942434045464d575e6c6c666d6d6f72787f87939f969083786d6053463c31261a0e0200000000040f1b27333f4953606d7984919eaca49f92877f746d68615f575b5a565e61676d727d859298a2ac9f92867b6e61564c41362a1e11050000000a1623303d495663707c899aa4aca196918f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8a7d7164574a3e3124170b0000000a141d29323b454d575f696e726d635b51493f372d251c130a0100000008121a242c363e48505a616c716e695f574d443b32291e140a0000000714202d3a46525e6976797979797979797976685e5246392d201307000613202c3946535f6c7986929f9f9f9a8d8174675a4e4134271b0e0100000000000000000000000000000000050f18232e39434d57616c74818e95a0aaa69f92877d6f685d52463f342a2b2b2b2b2b2b2b2b2b2b2b292825211b140c03000000000000000000000000000000000000000000000000000000000000000000000009141f2c3844505c6673808c99a4a79c8f828f97a2aa9d9084776b6054443a3024190d0100000000000000000000000000000000000000000916222f3c4955626f7c8895a2afaa9d908477665c5144382c1f1206000006131f2c3845515c677884919eabaea298877a6d6154473a2e2114070000000000000000000613202c3946535f6c7986929faca79a8d8174675a4e4134271b0e000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d000814212d3a47535f697884919eabb5c0ccd6e0e8f1e2d5c9bcafa296897c6f635649505c6976838f9c9286796c5f5346392c2013060000000000000009151f2a333c464e585f62615e566976839090837669565e61625f584e463c332a1f150900000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d0000000000000000000000000000000000000000000000000000060e141a1e21222c2d2d2d2d2d2d2d2d21201e19140d05000000000000000000000000000000000f1b27333e49525a5f60606060606060606060606060606060606060605f5a52493e33271b0f0000000000000000000000000000000002070a0c0d13131313131313130e0d0b070300000000000000000000000000000000000000000000000000000000121f2c3845525f6b7885929eabacacaea9a7a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a194887b6e6155483b2e22150800121f2b3845525e6b7885919eabaca396897d7063564a3d3023170a00121f2b3845525e6b7884868686868686867d7063564a3d45525e6b7884868686868686867d7063564a3d3023170a000713202d3a4653606d798693a0aca6998d8073665a4d4033271a0d00000916232f3c4956626f7c8995a2afa4988b7e7165584b3e3225180b000006111c262f383f44464f504b51535452535f605c606162666c727f8b95a0958c7f7265574e42372b1e12060000000005121f2b3744505b65727f8c97a1a89c928a7e726d615d56534d4e4e4c52555c606b707c86929fa6a3988e8175685e5246392d2014070000000815222f3b4855626e7b87939fa99e91848383838383838383838383838383838383827d706356493d3023160a000006111b262f3b444d575f696e7b7f726d635b51493f372d251c130a010008121a242c363e48505a616c717d7b6e695e564d443a30261c110600000815212e3b4854616e7b86868686868686867a6d6154473a2e211407000613202c3946535f6c7986929faca79a8d8174675a4e4134271b0e01000000000000000000000000000000000007121d27303c45505a606d79839198a3aea39991847a6d615b51463c31281d1e1e1e1e1e1e1e1e1e1c1b191510090200000000000000000000000000000000000000000000000000000000000000000000000003101c28343f4a54616e7b87939fac9e948f949ea9a3988b7f7265594f4332281e13080000000000000000000000000000000000000000000916222f3c4955626f7c8895a2afac9f9286796d6053463a2d20130900000714202d3a4753606d7a86939facac9f928579685e5246392d2013070000000000000000000613202c3946535f6c7986929faca79a8d8174675a4e4134271b0e000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d000815222e3b4855616e7b8896a1adbdc7d1dee8f2efe2d5c9bcafa296897c6f635649505c6976838f9c9286796c5f5346392c201306000000000000020e1a26313c454e585f6a6f6d685e69768390908376695e686d6f6a5f584e453c31261a0e02000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d00000000000000000000000000000000000000000000000000000003090e1214151f20202020202020201414110e080200000000000000000000000000000000000a16212c3740494f535353535353535353535353535353535353535353534f4940372c21160a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000121f2c3845525f6b7885929eabb8aea49d9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a94887b6e6155483b2e22150800121f2b3845525e6b7885919eabaca396897d7063564a3d3023170a00111e2a3743505c68727879797979797979706b6054483c43505c68727879797979797979706b6054483c2f221609000713202d3a4653606d798693a0aca6998d8073665a4d4033271a0d00000916232f3c4956626f7c8995a2afa4988b7e7165584b3e3225180b00000b17222d38424a50535b5d555c60605d564c4a505354545b606c7883909d9e9184786a5f53473a2e211408000000000613202d394653606c7884919ea9a0968d80736c625b524c4642414141464b5159606a717e8a939eaa9f92867a6e6154473b2f24180c0000000814212e3a47535f6975818e97a29d9084787676767676767676767676767676767676706b6054483b2f22160900000b17222d38414d565e696e7b848b7f726d635b51493f372d251b130a08121a242c363e48505a616c717e86847b6e695e564c42382e23170b00000815212e3b4854616e7b87939393939393877a6d6154473a2e211407000613202c3946535f6c7986929faca79a8d8174675a4e4134271b0e010000000000000000000000000000000000000b151e2a333e45515d676f7c86929fa5aba1968f82756d62584e433a2f24180f111111111111110f0e0c09040000000000000000000000000000000000000000000000000000000000000000000000000000000c17232e3846535e6975828f9ca8a69e9c9ea6ac9f92867a6d6054473d3221160c020000000000000000000000000000000000000000000916222f3c4955626f7c8895a2afaea399887c6f6255493c31261a0d06030615222f3c4855626f7b8899a4afaa9d9084776a564c41362a1e11050000000000000000000613202c3946535f6c7986929faca79a8d8174675a4e4134271b0e000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d000b1825313e4b5864717e8b97a8b2bdcfd9e3f0faefe2d5c9bcafa296897c6f635649505c6976838f9c9286796c5f5346392c20130600000000000006121e2b37424d575f6a6f7b7a6d686976839090837669686d7a7b6f6a5f574d42372b1e1206000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d000000000000000000000000000000000000000000000000000000000002050708121313131313131313080705020000000000000000000000000000000000000005101b252e373e4346464646464646464646464646464646464646464646433e372e251b10050000000000000000000000000000000000000003080b0e0e131313131313130a090704000000000000000000000000000000000000000000000000000000121f2c3845525f6b7885929eabb8a99d928d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d887b6e6155483b2e22150800121f2b3845525e6b7885919e9f9f9f96897d7063564a3d3023170a000f1b2834404b5660686b6c6c6c6c6c6c6c6360594f4438404b5660686b6c6c6c6c6c6c6c6360594f44382c201307000713202d3a4653606d798693a0aca6998d8073665a4d4033271a0d00000916232f3c4956626f7c8995a2afa4988b7e7165584b3e3225180b00030f1c28333f4a545b6068696b676d6d685d52454446474a505b6573808c99a196887b6e6255483b2f221508000000000a1623303d495663707d8996a0a99e9184786d605a5146413a373130363940454f58616c75828f99a3a3998c7f7266554b4035291d1004000006121e2b37424d57616e7b85929fa0958c80736c6969696969696969696969696969696360594f44382c20130700030f1b27333f49535e696e7b8491918c7f726d635b51493f372d251b13121a242c363e48505a616c717e879291847b6e685e544a3f34281c1003000815212e3b4854616e7b87949f9f9f9f94877a6d6154473a2e211407000613202c3946535f6c7986929faca79a8d8174675a4e4134271b0e01000000000000000000000000000000000000030c18212935404b555f6a727f8b939ea8a89e948b7f726a5f554b41352921180d030404040404020200000000000000000000000000000000000000000000000000000000000000000000000000000001070c06111c2a36424d5763707d8a96a1acaaa8aab0a79b8e8174685d5245392c201304000000000000000000000000000000000000000000000916222f3c4955626f7c8895a2afb5ab998c7f7266574d42372b1f15120f121c2834404a5465717e8b98abb5a89b8e8175685b4e423025190d010000000000000000000613202c3946535f6c7986929faca79a8d8174675a4e4134271b0e000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d000d192633404c5966737f8c99a6b2bfcfd9eaf5ffefe2d5c9bcafa296897c6f635649505c6976838f9c9286796c5f5346392c2013060000000000000814212d3a47535f696f7c85837a6d68768390908376686d7a83857c6f695f53473a2d211408000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009131c252c33373939393939393939393939393939393939393939393937332c251c130900000000000000000000000000000000000001080f14181a1b20202020202020171614100b0500000000000000000000000000000000000000000000000000121f2c3845525f6b7885929eabb4a79a8d8080808080808080808080808080808080808080808080808080808080807a6d6154473a2e21140700121f2b3845525e6b7885919393939393897d7063564a3d3023170a000b17232f3a454e565c5e6060606060606056544f473d333a454e565c5e6060606060606056544f473d33271c1004000713202d3a4653606d798693a0aca6998d8073665a4d4033271a0d00000916232f3c4956626f7c8995a2afa4988b7e7165584b3e3225180b0006121f2b3844505b666c75767778797a6d60544b403a3a3f495364717e8b97a8978a7d7164574a3e3124170b00000003101c28343f4a546773808d9aa8a2978a7e71665c51483f35302b26252a2e343d46505a626e7b87929fab9d908376675d5145382c1f13060000020e1a26313c46525e68717e8a929c9f93887e716c605b535c5c5c5c5c5c5c5c5c5c5c56544f473d32271b10030005121f2b3744505b656e7b8491969c918c7f726d635b51493f372d251b1a242c363e48505a616c717e8792999691837a6d665c5044382b1f1206000815212e3b4854616e7b8794a1acaca094877a6d6154473a2e211407000613202c3946535f6c7986929faca79a8d8174675a4e4134271b0e0100000000000000000000000000000000000000060f18242f39434e58626d75818e96a1aba69f92867c6f675d51453f332a1f150b010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050c13181b1e1a25313b4653606c7884919e9f9f9f9f9fa095897c6f63564c4135291d1104000000000000000000000000000000000000000000000916222f3c4955626f7c8895a2afb6a99c908376695f53473c3127201f1c1f232c3844515c6675818e9ba8b3a9988c7f7265594c3f32261908000000000000000000000613202c3946535f6c7986929faca79a8d8174675a4e4134271b0e000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d000d1a2734404d5a6773808d9aa6b3c0cdd9e6f3fcefe2d5c9bcafa296897c6f635649505c6976838f9c9286796c5f5346392c2013060000000000000815222e3b4855616e7b859290837a6d7683909083766d7a839092857b6e6155483b2e221508000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d000000000000000000000000000000000000000000000000000000000000000000010406070a0d101112131312100e0b080705020000000000000000000000000000010a131b21272b2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2b27211b130a010000000000000000000000000000000000020b131a202427282d2d2d2d2d2d2d2323201c160f08000000000000000000000000000000000000000000000000121f2c3845525f6b7885929eabada194877a73737373737373737373737373737373737373737373737373737373736d685e5246392d20130700121f2b3845525e6b7884868686868686867d7063564a3d3023170a0007121e28333c454b5052535353535353534a48443d352b333c454b5052535353535353534a48443d352b21160b00000713202d3a4653606d798693a0aca6998d8073665a4d4033271a0d00000916232f3c4956626f7c8995a2afa4988b7e7165584b3e3225180b000613202d394653606c7881838485868275665c5145403f414a5464717e8b97a4988b7e7165584b3e3225180b00000006121f2b3844505c667683909da99f9285796d60544a403629241e1a191d2328343e47535f6a7683909ca99f92867a6d6053473a2d2014070000000915202a36414d56616c73808d939d9a92877e736c655d554e5050505050505050504948443d352b21160b00000613202d394653606c79839096a0a39c918c7f726d635b51493f372d25242c363e48505a616c717e879299a3a0959083796d6053463a2d201307000815212e3b4854616e7b8794a1acaca094877a6d6154473a2e211407000613202c3946535f6c7986929faca79a8d8174675a4e4134271b0e01000000000000000000000000000000000000000007121d28313c46515b606d7a849199a3aea3999184796d605a50463c31271d120700000000000000000000000000000000000000000000000000000000000000000000000000000000000000060f171e23282a2b2d2b3844505b66737f8c999393939393939084776b6054443a302419120b030000000000000000000000000000000000000000000916222f3c4955626f7c8895a2afb7ab9f94887b6e62574e4339312d2b282b2e343f4953606d7985929fabada297897c6f6356493c30231609000000000000000000000613202c3946535f6c7986929faca79a8d8174675a4e4134271b0e000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d000e1b2835414e5b6874818e9ba7b4c1cedae7f4fcefe2d5c9bcafa296897c6f635649505c6976838f9c9286796c5f5346392c2013060000000000000713202d3a4653606d78818e9390837a7683909083767a8390938e81786d6053463a2d201307000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d00000000000000020608080d0606030000000000000000000000000000000104080d111314171a1d1e1f201f1f1d1b181414110e080200000000000000000000000000010910161b1e202020202020202020202020202020202020202020201e1b161009010000000000000000000000000000000000010b141d252b30333439393939393939302f2c27211a11080000000000000000000000000000000000000000000000121f2c3845525f6b7885929eabada194877a6e67676767676767676767676767676767676767676767676767676767615e564c4135291d110500111e2a3743505c68727879797979797979706b6054483c2f22160900010c17212a333b434a4f5053535353534c4a463f372d232a333b434a4f5053535353534c4a463f372d23190f0500000713202d3a4653606d798693a0aca6998d8073665a4d4033271a0d00000916232f3c4956626f7c8995a2afa4988b7e7165584b3e3225180b0006121f2b3844505b6677849091929285796d6058514a4c4b515b6673808d99a9978a7d7164574a3e3124170b0000000713202d3a4653606d7986929fa89b8e8175665c5042392e2419130e0d1218222b37434e5866727f8c99a5a399897c6f6356493c30231609000000030e1925303b44505a606c77818e939c99928b80776d675f585045414343434343433d3b38322b23190f04000005121f2b3744505b65707d869298a2a39c918c7f726d625b51493f372d2c363e48505a616c717e879299a3a39992877e71665c5044382b1f1206000815212e3b4854616e7b87949f9f9f9f94877a6d6154473a2e211407000613202c3946535f6c7986929faca79a8d8174675a4e4134271b0e010000000000000000000000000000000000000000010c161f2a343f45525d686f7c87929fa6aba0968e81756c62584e43392f24180f060000000000000000000000000000000000000000000000000000000000000000000000000000000000050f1821292f3437383939333f4a54616e7a8786868686868686867f7265594f43322c29231d150d0700000000000000000000000000000000000000000916222f3c4955626f7c8895a2afbdb0a69a8d81746a5f554b433c39383338393f44505b65717e8a97a2adab9f9285796d6053463a2d201307000000000000000000000613202c3946535f6c7986929faca79a8d8174675a4e4134271b0e000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d000e1b2835414e5b6874818e9ba7b4c1cedae7f4fcefe2d5c9bcafa296897c6f635649505c6976838f9c9286796c5f5346392c20130600000000000006121f2c3844505c666d78818e9390837a839090837a8390938e81786d665c5044382c1f1206000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d000000000003090e1214151913120f0b06000000000000000000000003070d1013191d202124272a2b2c2d2c2b2a282521201e19140f0a0400000000000000000000000000050a0f1213131313131313131313131313131313131313131313120f0a050000000000000000000000000000000000000008131d262f363c4041464646464646463d3c38332c231a0f0500000000000000000000000000000000000000000000121f2c3845525f6b7885929eabada194877a6e615a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a54524c443a3025190d01000f1b2834404b5660686b6c6c6c6c6c6c6c6360594f44382c20130700000a16222e39434d555b5d6060606060585651493f34292e39434d555b5d6060606060585651493f34291e120600000713202d3a4653606d798693a0aca6998d8073665a4d4033271a0d00000916232f3c4956626f7c8995a2afa4988b7e7165584b3e3225180b00030f1c28333f4a546774818e9a9f978b7e716a605c5459555d606c7884919da297897c6f6356493c302316090000000714212e3a4754616d7a8798a3a5988b7f7265544a3f30271c1208020007101a26313d495663707c8996a3ab978a7d7164574a3e3124170b0000000008141f29323e44505b656c78818d929f9f928c81796f6a625a514c433c34363636302f2c2721191107000000030f1b27333f4953606b707d869298a2a39c918c7f726d625b51493f37363e48505a616c717e879299a3a39992877e716c61544a3f34281c1003000815212e3b4854616e7b87939393939393877a6d6154473a2e211407000613202c3946535f6c7986929faca79a8d8174675a4e4134271b0e01000000000000000000000000000000000000000000040d18222935414c56606a727f8c949fa9a89e938b7e716a5f554b40352921170c03000000000000000000000000000000000000000000000000000000000000000000000000000000010c17212a333a4044454646463a46525e686e797979797979797979726d6256473f3a38342f271f191007000000000000000000000000000000000000000916222f3c4955626f7c8895a2afb4aba39f92877b6e675d554e4846443f44464a5059606c7883909da9b1a89b8e8175665c5044382b1f1206000000000000000000000613202c3946535f6c7986929faca79a8d8174675a4e4134271b0e000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d000e1b2734414e5a6774818d9aa7b4c0cddae7f6ffefe2d5c9bcafa296897c6f635649505c6976838f9c9286796c5f5346392c20130600000000000003101c28343f4a545c666d78818e939084839191838490938e81786d665c544a3f34281c1003000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d00000000060e151a1e212226201f1c17110a0200000000000003060c1012181d2024292c2d30343638393939383735322e2d2a251e1b150d08020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1a252f3841484c4e535353535353534a48443d352c21160b00000000000000000000000000000000000000000000121f2c3845525f6b7885929eabada194877a6e61544d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4746413a32281e130800000b17232f3a454e565c5e6060606060606056544f473d33271c100400010e1a27333f4a555f676a6c6c6c6c6c65625b51463a2e333f4a555f676a6c6c6c6c6c65625b51463a2e22160900000713202d3a4653606d798693a0aca6998d8073665a4d4033271a0d00000916232f3c4956626f7c8995a2afa4988b7e7165584b3e3225180b00000b17222d3c4956626f7c89949f9f92857c716d66666666676d737f8c96a09f9285796d6053463a2d2013070000000815222f3b4855626e7b8895aaa4978a7d7164574a3e2e24150b000000000915222f3b4855626e7b8895a1a5988b7e7265584b3f3225180c00000000020d172027333f49535b666c74808b92989c938f847c716c605d554e463e362e292322201b160f0700000000000b17222d38414f59606b707d869298a2a39b918c7f726d625b51493f3e48505a616c717e879299a3a39992877e716c615a5042382e23170b00000815212e3b4854616e7b86868686868686867a6d6154473a2e211407000613202c3946535f6c7986929faca79a8d8174675a4e4134271b0e0100000000000000000000000000000000000000000000061019242f3a444e58606c77828f97a1aba59f92867c6e675d51453e33291e150b00000000000000000000000000000000000000000000000000000000000000000000000000000007131e29333c454c505253535246444d565e616c6c6c6c6c6c6c6c6c65625b51504c47454039312a221910060000000000000000000000000000000000000916222f3c4955626f7c8895a2afaea39992999083796d6760585553504a5053545c606b727f8b95a0acaca095897d7063544a3f34281c1003000000000000000000000613202c3946535f6c7986929faca79a8d8174675a4e4134271b0e000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d000d192633404c5966737f8c99a6b2bfced9e5f1feefe2d5c9bcafa296897c6f635649505c6976838f9c9286796c5f5346392c201300000000000000000c17232e38424a545c666c78818e92909195959191928d81786c665c544a42382e23170c00000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d000000060f181f262b2d2e332d2b28221c140b08060406060b0f12171c1f24292c2f35393a3d4043444546464543413e3b3936302b272019130c04000000000000000000000000000000000000000000050a0d0f101313100f0d0a05000000000000000000000000000000000000000000000000000814202b36414b53595b6060606060606056554f473d33271c1004000000000000000000000000000000000000000000121f2c3845525f6b7885929eabada194877a6e615447404040404040404040404040404040404040404040404040403a3935302820160c02000007121e28333c454b5052535353535353534a48443d352b21160b000003101d2936424f5b6771777979797979726d62564a3e3136424f5b6771777979797979726d62564a3e3124180b00000713202d3a4653606d798693a0aca6998d8073665a4d4033271a0d00000916232f3c4956626f7c8995a2afa4988b7e7165584b3e3225180b00000615222e3b4754606a76828f98a29792857e7975737273757a8088939fa1978d8074665c5144382c1f12060000000916222f3c4955626f7c8895a2a396897d7063564a3d30231706000000000714212e3a4754616d7a8794a0a5998c7f7266594c3f3326190c0000000000050e17222d38414a545b606e737e8691969e9691867e756d675f58504840372e261c13100b0400000000000006111b262f3d474f59606b707d869298a2a39b918c7f726d625b514948505a616c717e879299a3a39992877e716c615a50483e30261c110600000714202d3a46525e6976797979797979797976685e5246392d201307000613202c3946535f6c7986929faca79a8d8174675a4e4134271b0e01000000000000000000000000000000000000000000000008131e28323d44505b656d7a859199a4aea2989083796d605a50453b30271c120700000000000000000000000000000000000000000000000000000000000000000000000000000c18232f3a454f575c5e60605f53504a4d52545f60606060606060605c5e5f5f5c5853514b433c342a22180c0200000000000000000000000000000000000916222f3c4955626f7c8895a2afac9f928692958f81796f6a6462605b545b6062666d727d87929fa7b0a69d9184786c605346392e23170b00000000000000000000000613202c3946535f6c7986929faca79a8d8174675a4e4134271b0e000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d000b1824313e4b5764717e8a97a8b2bdc8d4e2edf8efe2d5c9bcafa296897c6f635649505c6976838f9c9286796c5f5346392c20110c0600000000000006111c263038424a545b666c77808d929da0a09d928d80776c665b544a423830261c110600000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d0000030e18212a31373a3b403938332d261d191312101314171c1f23282c2f35393a4145474a4d505152535252504e4b4746413b373229241e160e05000000000000000000000000000000000000030a11161a1c1d20201d1c1a16110a0300000000000000000000000000000000000000000000000b1824303c48535d64676c6c6c6c6c6c6c6360594f44382c201407000000000000000000000000000000000000000000121f2c3845525f6b7885929eabada194877a6e6154473b3434343434343434343434343434343434343434343434342e2d29251e160e04000000010c17212a333b434a4f5053535353534c4a463f372d23190f05000004111d2a3744505d6a778386868686867f7265584c3f323744505d6a778386868686867f7265584c3f3225190c00000713202d3a4653606d798693a0aca6998d8073665a4d4033271a0d00000916232f3c4956626f7c8995a2afa4988b7e7165584b3e3225180b000006131f2b37434e58616e7b869298a097928b8582807f8082858d939aa19892857a6d61544a4034281c10040000000815222e3b4855616e7b8894aaa4978a7d7164574a3e2d22170b000000000815222f3b4855626e7b8895a1a5988b7e7265584b3f3225180c00000000000006111b262f38424a505c636c717c848e939f98928b817a6f6a625a524940382e251c110800000000000000000a141d2b353d474f59606b707d869298a2a39b918c7f726d625b51505a616c717e879299a3a39992877e716c615a50483e362c1e140a00000005121e2a36424d575e6c6c6c6c6c6c6c6c6c6c5e564c41362a1d1105000613202c3946535f6c7986929faca79a8d8174675a4e4134271b0e010000000000000000000000000000000000000000000000010c162027333f49535e68707d87939fa6aaa0958d81746c61574d42392e23180e05000000000000000000000000000000000000000000000000000000000000000000000000030f1b2834404c5761686b6c6c6c605c544a46475353534c52565d6065696b6c6b6965605c554e463c342a1e140a00000000000000000000000000000000000916222f3c4955626f7c8895a2afa5988b7f8b93938f837c76716e6c666b666c6e72787f879299a3aea99f948a7e71665b5044382b1c110600000000000000000000000613202c3946535f6c7986929faca79a8d8174675a4e4134271b0e000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d000815222e3b4855616e7b8896a0acb8c6d0dbe7f0f9e2d5c9bcafa296897c6f635649505c6976838f9c9286796c5f5346392c211d1711090000000000000a151e263038424a545b656c77808d939d9d938d80776c655b544a423830261e150a0000000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d000009151f2a333c4247484c46443f382f2925201f1d1f2022282b2e34383a4045474c5254575a5d5e5f605f5e5d5b5854524c47433c35302820170e0500000000000000000000000000000000040d151c2226292a2d2d2a2926221c150d04000000000000000000000000000000000000000000010e1a2733404c59646f7479797979797979706b6055483c2f231609000000000000000000000000000000000000000000121f2c3845525f6b7885929eabada194877a6e6154473b2e272727272727272727272727272727272727272727272721201d19130c0400000000000a16222e39434d555b5d6060606060585651493f34291e1206000004111e2b3744515e6a7784919393938c7f7265594c3f323744515e6a7784919393938c7f7265594c3f3226190c00000713202d3a4653606d798693a0aca6998d8073665a4d4033271a0d00000916232f3c4956626f7c8995a2afa4988b7e7165584b3e3225180b0000030f1b27323d46535f69707d8691969e9f97928e8c8c8d8f92989f9f9691867d6f685e5242392e23180c000000000714212e3a4754616d7a8798a2a5988b7f7265544a3f33281c1107010006101823303c4956636f7c8996a2aa978a7d7164574a3e3124170b000000000000000a141d262f383f44525a616a6f7a818b92989f938e847c716c635b524a40372e231a0d0400000000000000020b19232b353d474f59606b707d869298a2a39b918c7f726d625b5a616c707e879299a3a39992877e716c615a50483e362c241a0c02000000020e1a25303b454d525f60606060606060605f524c443a3025190d01000613202c3946535f6c7986929faca79a8d8174675a4e4134271b0e01000000000000000000000000000000000000000000000000040d17222d38414c56606b73808d949fa9a79d928a7e71695f544a40342820170b02000000000000000000000000000000000000000000000000000000000000000000000005111e2a3744505c6873787979796d665c504441454c52565e61686d727678797876726d675f584e463c30261c1106000000000000000000000000000000000916222f3c4955626f7c8895a2afa396897d818e96959087827e7b79787778797b7f848c9299a3abaaa2978f82776c60544a3f33281c0a0000000000000000000000000613202c3946535f6c7986929faca79a8d8174675a4e4134271b0e000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d000714212d3a46535f697784919eaab4bfcad6dee8eee2d5c9bcafa296897c6f635649505c6976838f9c9286796c5f534639302d29221b12090000000000030c151e262f38424a535b656c74818e9b9b8e81746c655b534a42382f261e150c030000000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d00020e1a26313c454d53555953504a423b35302d2b292c2d2d3338393f44464b5153565d606367696b6c6c6c6b6a6865615e56544e46413a322920170d020000000000000000000000000000030d161f272d32353639393635322d271f160d030000000000000000000000000000000000000000010e1b2834414e5b677481868686868686867d7063564a3d3023170a000000000000000000000000000000000000000000121f2c3845525f6b7885929eabada194877a6e6154473b2e211a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1413110d08020000000000010e1a27333f4a555f676a6c6c6c6c6c65625b51463a2e221609000005111e2b3844515e6b7784919e9f998c7f7266594c3f333844515e6b7784919e9f998c7f7266594c3f3326190c00000713202d3a4653606d798693a0aca6998d8073665a4d4033271a0d00000916232f3c4956626f7c8995a2afa4988b7e7165584b3e3225180b0000000a15202a36424d57606b707c848c9196999c9b9999999b9d9a97928d847d6f6b60564c4130271c1207000000000613202d394653606c7985929fa79b8e8174665b5044382d2218120d0c1117222b37424d5765727f8c98a5a398897c6f6256493c2f23160900000000000000020b141d262d33404850585f686d757e8690959d9691867e736d645c524940352c1f160c0100000000000000071119232b353d474f59606b707d869298a2a39b918c7f726d62616c707e879299a3a39992877e716c615a50483e362c241a1208000000000009141f29333b42464853535353535353535346413a32281e130800000613202c3946535f6c7986929faca79a8d8174675a4e4134271b0e010000000000000000000000000000000000000000000000000006111b262f3a444f59606d78829097a2ada49f92857b6e665c51443e32291d140a000000000000000000000000000000000000000000000000000000000000000000000005121f2b3845525e6b7885868686786d60534a4c51565e61686d737a7f82858685837f796f6a5f584e42382e23170b000000000000000000000000000000000916222f3c4955626f7c8895a2afa3968a7d7a84919899938f8b888685848486888c91969fa3aba9a29892857b6e655b5042382d22170b0000000000000000000000000613202c3946535f6c7986929faca79a8d8174675a4e4134271b0e000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d0005121e2a36424d576673808c98a2aebac3ccd7dce3e7d5c9bcafa296897c6f635649505c6976838f9c9286796c5f53463e3d39342d241b110600000000060f19232b353d464e58606a6f7c8592989891857c6f6a60584e463d352b23190f060000000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d0006121e2b37424d575f6166605b544d46413b393835393a3c3f44464a5053555d6064686d70737677787979787674716e68626058524c443a32291e130800000000000000000000000000000a151f2831383e4243464643423e3831281f150a0000000000000000000000000000000000000000010e1b2734414e5a6774818d93939393938a7d7064574a3d3124170a000000000000000000000000000000000000000000121f2c3845525f6b7885929eabada194877a6e6154473b2e21140d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d0d070705010000000000000003101d2936424f5b6771777979797979726d62564a3e3124180b000005121e2b3845515e6b7884919ea6998c807366594d40333845515e6b7884919ea6998c807366594d4033261a0d00000713202d3a4653606d798693a0aca69a8d8073675a4d4034271a0700000916232f3c4956626f7c8995a2afa4988b7e7165584b3e3225180b000000040e1a26313b454f59606a6f797f848a8d8f9192929291908d8a8580796f6b60594f443a301e150b000000000006121f2b3844505b667683909ca99e9285786c60544a3f3329241d19181b2227343c46535f6976838f9ca99f9286796d6053463a2d2013070000000000000000020b141c2228363e464e565d606c717b838d929f98928b80736e645b51473d31281e13080000000000000000071119232b353d474f59606b707d869298a2a39b918c7f726d6c707e879299a3a39992877e716c615a50483e362c241a1208000000000000020d17212930363a3b4646464646464646463936302820160c0200000613202c3946535f6c7986929faca79a8d8174675a4e4134271b0e0100000000000000000000000000000000000000000000000000000a141d29323d44505c666e7b85929ea4ada2979083786d60594f443b2f261c11060000000000000000000000000000000000000000000000000000000000000000000003101d2a3643505d6976839098897c6f635a56555d60686d737a80858b8f9192928f8b847c6f6a5f544a3f34281c10030000000000000000000000000000000916222f3c4955626f7c8895a2afa4978a7d717d8692989f9c9799929291919298989ea0a8aba69f9792867d70695f53493f2f261c11060000000000000000000000000613202c3946535f6c7986929faca79a8d8174675a4e4134271b0e000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d00020e1a26313b4754616e7a86929fa7b1bac2cbd1d6dcd5c9bcafa296897c6f635653535c6976838f9c9286796c5f53534b49453e362d22170c000000030e18212b353d474f58606a6f7c8592918c8c9191857c6f6a60584f473d352b21180e0300000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d000814212d3a47535f696e736c665f57524c484644404547494a5053545c6063676d71757a7d8083848586858583817e7a756f6a615d564c443a3025190d0100000000000000000000000005111c27313a434a4e505353504e4a433a31271c110500000000000000000000000000000000000000010e1a2734414d5a6774808d9a9f9f9f978a7d7164574a3e3124170b000000000000000000000000000000000000000000121f2c3845525f6b7885929eabada194877a6e6154473b2e2114080101010101010101010101010101010101010101000000000000000000000004111d2a3744505d6a778386868686867f7265584c3f3225190c000005121f2b3845525e6b7885919ea6998d8073665a4d40333845525e6b7885919ea6998d8073665a4d4033271a0d00000713202d3a4653606d798693a0aca79a8e8174675b4e412e23180c00000916232f3c4956626f7c8995a2afa4988b7e7165584b3e3225180b0000000009141f29333d474f5860676d72787d8082848586858483807e79736d6760594f473d32281e0c030000000000030f1c28333f4a546673808d99a7a1978a7d70665b50443e352f292423282d333d464f59616e7b86929faa9c908376665c5145382c1f13060000000000000001070d111317242d343c444c525a62696e78808b92999f928c80736d63594f433a2f24190d010000000000000000071119232b353d474f59606b707d869298a2a39b918c7f72707e879299a3a39992877e716c615a50483e362c241a12080000000000000000050f171f252a2d2e39393939393939392e2d2a251e160e050000000613202c3946535f6c7986929faca79a8d8174675a4e4134271b0e010000000000000000000000000000000000000000000000000000020b172028343f4a545e69707d8a929da7a99f958d80736b61564d42382d22170e05000000000000000000000000000000000000000000000000000000000000000000010e1b2834414e5b6774818e9a8e81756c656364676d737a80868d92989c9e9f9e9c9691857c6f665c5044382b1f13080000000000000000000000000000000916222f3c4955626f7c8895a2afa4978a7e71707d8690959da0a39f9e9e9e9fa3aaa9a8a69f9c948f857d706b60574d41382d1d140a000000000000000000000000000613202c3946535f6c7986929f9f9f9a8d8174675a4e4134271b0e000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d00000914202d3946525e6873808c95a0a8b1bbc0c7cbd0d0c9bcafa296897c6f63606060606976838f9c9286796c606060585650483e34291d110500000915202a333d474f59606a6f7c8592918c7f7f8c9192857c6f6a60594f473d332a20150900000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d000815222e3b4855616e7b7f786e69615e565453504b515356545b6063666d70757a7e82868a8d909192939291908e8b86827c746d685e564c41362a1e11050000000000000000000000000a16222d38434c545a5d60605d5a544c43382d22160a00000000000000000000000000000000000000000d1a2633404d596673808c99a6aca4978b7e7164584b3e3125180b000000000000000000000000000000000000000000121f2c3845525f6b7885929eabada194877a6e6154473b2e2114080000000000000000000000000000000000000000000000000000000000000004111e2b3744515e6a7784919393938c7f7265594c3f3226190c000005121f2c3845525f6b7885929ea69a8d8073675a4d40343845525f6b7885929ea69a8d8073675a4d4034271a0d01000713202d3a4653606d798693a0aca89b8f827568544b4034281c1004000916232f3c4956626f7c8995a2afa4988b7e7165584b3e3225180b00000000030d17212b353d464e555c60666d70737677787978787674716d67605d554f473d352b20160c000000000000000b17222d3c4956636f7c8995a0a99d9083786c605a50454039352f2e34383f444e58616b75818e99a3a3988c7f7265544b4034281c1004000000000000040c13181d202021222a323a414550575f666d747e8792989c928c7f726b61564c4135291d1307000000000000000000071119232b353d474f59606b707d869298a2a39b918b7f7d879299a3a39992877e716c615a50483e362c241a120800000000000000000000050d141a1e20212d2d2d2d2d2d2d2d21201d19130c05000000000613202c3946535f6c7986929faca79a8d8174675a4e4134271b0e01000000000000000000000000000000000000000000000000000000050e17232e38424d57616c74808d95a0aaa79f93887d70695e544a3f332820160b020000000000000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e8b98938b7f75717071747a80858d92989fa2aaa4a3a5a8a1979083786d6053463a2f24190d0100000000000000000000000000000916222f3c4955626f7c8895a2afa4978a7e716b707c838b9195989b9d9e9f9f9f9e9d9b9894908a827b706b60594f453b2f261b0b02000000000000000000000000000613202c3946535f6c798692939393938d8174675a4e4134271b0e000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d000005111e2a36414c56606d798390969fa7afb5babfc2c3c4bcafa296897c6f6c6c6c6c6c6c76838f9c9286796c6c6c6c64625a5045392d21150800020f1a26313c464f59606b6f7c8592918b7f72727f8b9192857c6f6b60594f463c31261a0f02000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d000815222f3b4855626e7b88827b736d686461605b555d606265666c7074797d81858a8f92999a9c9e9f9f9f9e9d9b99928f87817a6d685e5246392d2013070000000000000000000000010d1a26323e4a545e66696c6c69665e544a3e32261a0d01000000000000000000000000000000000000000c1925323f4c5865727f8b98a5b2a5988b7f7265584c3f3225190c000000000000000000000000000000000000000000121f2c3845525f6b7885929eabada194877a6e6154473b2e2114080000000000000000000000000000000000000000000000000000000000000005111e2b3844515e6b7784919e9f998c7f7266594c3f3326190c000006131f2c3946525f6c7985929fa79a8d8074675a4d41343946525f6c7985929fa79a8d8074675a4d4134271a0e01000713202d3a4653606d798693a0aca99d908376665c5145382c1f130700091623303c4956636f7c8996a2afa4988b7e7165584b3e3225180b0000000000060f19232b343d434b51545c606366696b6c6c6c6b6a6764605d55514b433d342b23190e04000000000000000615222f3b4854606b7784919da8a0958c7f726c615a514b4541403f4045495058606a707d8a939eaa9f92867a6d6154473a2e23180c000000000000040d161d24292c2d2e2f30302f353e454d545c606c717d8692999f93887d70685d52453a2f24180d01000000000000000000071119232b353d474f59606b707d869298a2a39b918b869299a3a39992877e716c615a50483e362c241a120800000000000000000000000002090e12141520202020202020201413110d080200000000000613202c3946535f6c7986929faca79a8d8174675a4e4134271b0e010000000000000000000000000000000000000000000000000000000006111c26303b45505a606d79839098a2aea49a92857b6e665b50443d32281d140a0000000000000000000000000000000000000000000000000000000000000000000815222f3b4855626e7b88959b918b827e7d7e81858c92989fa2a29f9a9796989c9f9f958a7d7164554c4135291d110400000000000000000000000000000916222f3c4955626f7c8895a2afa4978b7e71646a6e787e84888c8e909192929291908e8b88837d766e6960594f473d33291d140a00000000000000000000000000000613202c3946535f6c79878686868686868074675a4e4134271b0e000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d0000020e1925303b45515c666e7b8490959fa3abaeb4b6b7b8b9afa296897d7979797979797979828f9c92867979797979716c6256493d3024170a0006121f2b37434e58606b707d8692918b7f726d6d727f8b9192867d706b60584e43372b1f1206000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d000815222f3b4855626e7b888f86807a75716e6c666b676d6f7175797c81858a8e92989c9fa3aba39f9e9d9d9d9fa3a39f9a938e847a6d6154473a2e2114070000000000000000000000030f1c2935424e5a66707679797670665a4e4235291c0f03000000000000000000000000000000000000000b1724313e4a5764717d8a97a4b0a6998c807366594d4033261a0d000000000000000000000000000000000000000000121f2c3845525f6b7885929eabada194877a6e6154473b2e2114080000000000000000000000000000000000000000000000000000000000000005121e2b3845515e6b7884919ea6998c807366594d4033261a0d00000613202c3946535f6c7986929fa79a8d8174675a4e41343946535f6c7986929fa79a8d8174675a4e4134271b0e01000713202d3a4653606d798693a0acac9f9286796d6053463a2e23180d060a1723303d4a5663707d8996a3b0a4978b7e7164584b3e3125180b000000000000081119222b303940454a5053575a5c5e5f5f5f5e5d5a5753514b45413a312b22191107000000000000000007131f2c38434f5965727f8b96a1a79f93887e716c605d55524c4c4c4b51535b606a6f7c86929fa5a3988e8174685e5246392d1d12070000000000010c161f282f35393a3b3c3c3d3d3c383b424a515a626b707e87939f9a92857a6d60554b4135291d110400000000000000000000071119232b353d474f59606b707d869298a2a39b999299a3a39992877e716c615a50483e362c241a120800000000000000000000000000000002050708131313131313131307070501000000000000000613202c3946535f6c7986929faca79a8d8174675a4e4134271b0e0100000000000000000000000000000000000000000000000000040404000a141e29333e45515c676e7b86929fa5aca1978f82786c60594f443a2f261b110600000000000000000000000000000000000000000000000000000000000000000814212e3a47535f6a7784919d9b948f8b898a8d92989fa2a29f98928d8a898b90949c9c8f8276675d5145392c20130600000000000000000000000000000916222f3c4955626f7c8895a2afa4978b7e71645f666d71777b7f8183858586858583817e7b76706b615e574f473d352b21180b02000000000000000000000000000006121f2c3845525e6a7579797979797979746e64584c3f33261a0d000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d00000008141e2834404b545e696e7b838d92999fa3aaa9aaabacaea5998f8986868686868686868f949f988986868686867e7164584b3e3125180b000814212e3a47535f6a707d8692918b7f726d62626d727f8b9192867d706a5f53473a2e211408000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d000815222f3b4855626e7b8898928d86827e7b797877787a7c7e8285898d92979b9fa2a7a09d9999929190909192999a9ea19f96887b6e6255483b2f221508000000000000000000000003101d2a3643505d69768286868276695d5043362a1d1003000000000000000000000000000000000000000916232f3c4956626f7c8995aab4a79a8e8174675b4e4134281b09000000000000000000000000000000000000000000121f2c3845525f6b7885929eabada194877a6e6154473b2e2114080000000000000000000000000000000000000000000000000000000000000005121f2b3845525e6b7885919ea6998d8073665a4d4033271a0d000006121f2c3844515c667986939fa79b8e8174685b4e41353844515c667986939fa79b8e8174685b4e4135281b0e02000713202d3a4653606d798693a0acaea398897c6f62544b4034281f1612101824313e4b5764717e8a97a4b1a4978a7e7164574b3e3124180b000000000000000810191e272e34383f44464a4d505152535251504d4a47454039352f281f191007000000000000000000030c1b27323d4753606d7984919eaca49a92867e736d67605d565959545c60656c717c859198a2ac9f92867b6e61564c4135291d0c03000000000007131d28313a4045474848494a4a48443d3940445059616c73808c96a0978d8073675d5145392c2013060000000000000000000000071119232b353d474f59606b707d869298a2aba39fa3a39992877e716c615a50483e362c241a12080000000000000000000000000000000000000000060606060606060600000000000000000000000613202c3946535f6c7986929faca79a8d8174675a4e4134271b0e010000000000000000000000000000000000000000000306080911111111110c17212834404b555f69717e8a939da8a99f948c7f736b60564c41382d22170d040000000000000000000000000000000000000000000000000000000000000006121e2b37424e5765727e8b95a09e9c9896979a9fa2a39f98928c85817e7d7e838c929f92867a6d6054473a2d21140700000000000000000000000000000916222f3c4955626f7c8895a2afa4978b7e7164545c60646a6e72757778787979787675726e69636159534d453d352b23190f0600000000000000000000000000000004111d2a36424e59636a6c6c6c6c6c6c6c67645c52473c3024170b000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d000000020c18232e39424d575e696e7880878d9298999c9d9e9fa39fa1999693939393939393939c9fa6a393939393938b7e7164584b3e3125180b000815222f3b4855626e7b8592938b7f726d625b5b626d727f8b9192857b6e6255483b2f221508000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d000815222f3b4855626e7b88959f98928e8b878685848586898b8e92979a9ea1a8a09e9995908c89868483838486898d92979e95887b6e6255483b2f221508000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000000000000000814212e3b4754616e7a8798a2aea89b8f8275685c4f4230251a0e020000000000000000000000000000000000000000121f2c3845525f6b7885929eabada194877a6e6154473b2e2114080000000000000000000000000000000000000000000000000000000000000005121f2c3845525f6b7885929ea69a8d8073675a4d4034271a0d01000713202d3a4653606d79869aa4a89b8e8175685b4e42353a4653606d79869aa4a89b8e8175685b4e4235281b0f02000713202d3a4653606d798693a0acb4aa998d8073665c51453b3128201f1c1e26323f4c5965727f8c98a5b0a3968a7d7063574a3d3024170a0000000000000000070c151d23282e34383a3d4043444546454543413e3a38352f29241d160d07000000000000000000000b151e2b353d45515c67717d8a9aa4aca298928a8079716d6867666567666d70787e869197a1aaa6998c8073695e53493f372d1e150b00000000010d18242f3a434b51535455565756554f473d343f47505a606d7884919e9f92857a6d6054473a2d211407000000000000000000000000071119232b353d474f59606b707d86929facafacac9f92877e716c615a50483e362c241a1208000000000000000000000000000000000000000000000000000000000000000000000000000000000613202c3946535f6c7986929faca79a8d8174675a4e4134271b0e0100000000000000000000000000000000000000030a0f1215151e1e1e1e1e1e1e18232e39434d57616c74818e96a0aaa69f93877d70685e53493f33271f160c01000000000000000000000000000000000000000000000000000000000000020e1a26313c4653606c78839097a1a8a4a3a4aaa29f98928d86807a74717072767f8c94998a7d7063574a3d3024170a00000000000000000000000000000916222f3c4955626f7c8895a2afa4978b7e7164585053585f6265686a6b6c6c6c6b6a6865615f57554f46423b332b2319110700000000000000000000000000000000010e1a26313d4751595e5f6060606060605a58524a41362b1f1408000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d0000000007121d27303b454d575e666d747b8186898d8f909192999393939393939393939393939393939393939393938b7e7164584b3e3125180b000814212e3a47535f6a74808d887f726d625b51515b626d727f8b8d80746a5f53473a2e211408000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d000815222f3b4855626e7b88949fa29f9b979992919192939a989b9ea1a9a29e9a96918c8883807d7a78767677797c80858b9297887b6e6255483b2f221508000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000000000000000613202d394653606c7985929facaa9d9083776a574d42362a1e11050000000000000000000000000000000000000000121f2c3845525f6b7885929eabada194877a6e6154473b2e2114080000000000000000000000000000000000000000000000000000000000000006131f2c3946525f6c7985929fa79a8d8074675a4d4134271a0e01000714202d3a4753606d7a8693a0a89b8e8275685b4f42353a4753606d7a8693a0a89b8e8275685b4f4235281c0f02000713202d3a4653606d798693a0acb8ab9e9285796d60574d433a322d2c282a2d36424d576774818e9aa7b3a995897c6f6256493c2f231609000000000000000000030b12181c23282b2d30333638393939383734312d2c29241d18130c040000000000000000000007121c27303d474f59606b707d87939facaaa29f928d847e7a767473727375797d838b9298a1a9b3a5998c7f726d625b51493f30271d120700000004111d2935404b555d60616263636360594f4438353e44505c66727f8b98a2988a7e7164574b3e3124180b00000000000000000000000000071119232b353d474f59606b727f8c98a5b2b3a79a8d80746c615a50483e362d241b120900000000000000000000000000000000000000000000000000000000000000000000000000000000000613202c3946535f6c7986929faca79a8d8174675a4e4134271b0e01000000000000000000000000000000000000060e151a1f21222b2b2b2b2b2b2b2b2b27303c45505a606d79849198a3aea49991847a6d655b50443d31281e13080000000000000000000000000000000000000000000000000000000000000009151f2b3844505b666f7c8591969c9f9f9e9c98928d86807a736d686463656d76828f998d8073665a4d4033271a0d00000000000000000000000000000916222f3c4955626f7c8895a2afa4978b7e7164584b464e5355595b5d5e5f5f5f5e5d5b5855534d48443e363129211911070000000000000000000000000000000000000915202b353f474e52535353535353534e4c4741382f241a0e03000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d00000000000b151e29333b454d545c60696e747a7d808384858686868686868686868686868686868686868686868686867e7164584b3e3125180b0006121f2b37434e58646e74817e726d625b514949515b626d727f80746e64584e43372b1f1206000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d000714212d3a4754606d79828b92989ea1a8a39f9e9e9f9fa4aca9a19e9a97928e89847f7b7773706d676a6a666d6f73797f858f887b6e6255483b2f221508000000000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000000000000000000000005121f2b3744505b657783909daaac9f928579695e52463a2d2014070000000000000000000000000000000000000000121f2c3845525f6b7885929eabada194877a6e6154473b2e211408000000000000000000000000000000000000000000000000000000000000000613202c3946535f6c7986929fa79a8d8174675a4e4134271b0e01000714212d3a4754606d7a8793a0a89b8f8275685c4f42353a4754606d7a8793a0a89b8f8275685c4f4235291c0f02000713202d3a4653606d798693a0acb9ada1978b7e71695e554c443e3a3834363a3d46535e697784909daaada297877a6e6154473b2e2114080000000000000000000000070c11171c1f202427292b2c2c2c2b2a2724201f1d18120d070100000000000000000000000c18232e39424f59606b707d86929aa4aba9aca49c96918b8682807f7f8082858a90959fa3aaaaaca79c918b7f726d625b5142392e23180c0000000613202c3945515d676d6e6f6f70706b6055483d32343f4a54616e7b8899a49a8d8174675a4e4134271b0e010000000000000000000000071119232b353d474f59606b707d86929facacacac9f92877e716c615a50483e362d241b1209000000000000000000000000000000000000000000000000000000000000000000000000000000000613202c3946535f6c7986929faca79a8d8174675a4e4134271b0e01000000000000000000000000000000000006101820262b2e2f3737373737373737373737333e45515d676f7c86929fa5aba1968f82776c60584e433a2f24190d06000000000000000000000000000000000000000000000000000000000000030f1c28333f4a545f6a6f7c848c909292918f8b86807b746e68605d56565b64707d8a998f8275685c4f4235291c0f02000000000000000000000000000916222f3c4955626f7c8895a2afa4978b7e7164584b3e4347484c4e505252535252504e4b4846423b38332a251f170f0700000000000000000000000000000000000000040f19242d353d424546464646464646413f3c362f261d130800000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d0000000000030c172129333b424a51575e61676d7073767778797979797979797979797979797979797979797979797979716c6256493d3024170a00020f1a26313c46525c646e74726d625b51493f3f49515b626d72746e645c52463c31261a0f02000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d000613202c3945515d676d767e858c9196989b9d9e9f9f9e9d9a9897928e8a85817c77736e696663605d55545c6063676d727a81887b6e6255483b2f221508000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000000000000000000000000030f1b27333f49536874818e9ba7aea298877b6e6154473b2e2114080000000000000000000000000000000000000000121f2c3845525f6b7885929eabada194877a6e6154473b2e2114080000000000000000000000000000000000000000000000000000000000000006121f2c3844515c667986939fa79b8e8174685b4e4135281b0e02000814212e3b4754616e7a8794a1a89c8f8275695c4f42363b4754616e7a8794a1a89c8f8275695c4f4236291c0f03000713202d3a4653606d798693a0acb1a7a09d92857b6e675d56504846443f4246474f58616e7b8795a0acab9f928578685e5246392d20140700000000000000000000000000060b101213171a1d1e1f201f1e1d1a171413100c070100000000000000000000000004101c2834404a54606b707d869298a3a69f9c9fa4a8a19e99928f8d8c8c8d8f92989da0a7a7a09da0a7a39b918b7f726d62544b4034281c100400000714202d3a4753606d797b7b7c7d7d7063584e4338313a4653606d7986939f9c8f8276695c4f4336291c100300000000000000000000071119232b353d474f59606b707d869298a2a39f9fa3a39992877e716c615a50483e362d241b12090000000000000000000000000000000000000000000000000000000000000000000000000000000613202c3946535f6c7986929faca79b8e8174685b4e4135281b0e0200000000000000000000000000000000030e18222a31373a3c44444444444444444444444444404b555f6a727f8b939ea8a89e948c7f726a60554c41352922180c010000000000000000000000000000000000000000000000000000000000000b17222d38424e585f6a6f797f83858684827f7a736e69615e56524c4a54606d7987868683776a5e5144372b1e1104000000000000000000000000000916222f3c4955626f7c8895a2afa4978b7e7164584b3e373a3b3f4244454546464543423f3b3a36312c28211a140d050000000000000000000000000000000000000000000a16202b343d4347494949494949494846423b33291f140900000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d000000000000050f172029303940444d53555d606366696a6b6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c64625a5045392d21150800000915202a33414a525c646765625b51493f37373f49515b626567645c524a41332a20150900000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d0004111d2935414b555d606d717a7f84898c8f9091929291908e8b8885817d79746f6b66615f575653514b4b5153555c60686d757f7b6e6155483b2e221508000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000000000000000000000000000b17222d3f4c5865727f8b98aab4aa96897c706356493d302316080000000000000000000000000000000000000000121f2c3845525f6b7885929eabada194877a6e6154473b2e211408000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d79869aa4a89b8e8175685b4e4235281b0f02000815212e3b4854616e7b8794a1a99c8f8376695c5043363b4854616e7b8794a1a99c8f8376695c504336291d1003000713202d3a4653606d798693a0acaca09590959082796d68615a5553504a4d525459606a74808d9aa7b1a99c8f827669564d41362a1e11050000000000000000000000000000000306070a0d101112131212100e0b07060400000000000000000000000000000006121f2c3844515c66707d869298a3a39c948f939aa0a7aba39f9c9a99989a9b9fa2aaa8a19e9590959ba3a39b918b7f72665c5145382c1f13060003101c2936434f5c6976828788898a85786a605448423f404653606d798699a49c8f8376695c504336291d1003000000000000000000071119232b353d474f59606b707d869298a2a399929299a3a39992877e716c615a50483e362d241b120900000000000000000000000000000000000000000000000000000000000000000000000000000613202c3946535f6c7986929faca89b8e8275685b4f4235281c0900000000000000000000000000000000000a15202a343c4347485151515151515151515151515151514e58626d75818f96a1aba69f92877c6f675d51453f34291d110500000000000000000000000000000000000000000000000000000000000006111c262f3c464e585f676d727678797876726d68615e56524c454145515d67757979797771675b4f43362a1d1004000000000000000000000000000916222f3c4955626f7c8895a2afa4978b7e7164584b3e312e2f32353738393939383735322e2d2a261f1c170e0903000000000000000000000000000000000000000000030f1b27323d464e545656565656565654534d453b31251a0e02000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d00000000000000050e171e272e343b42464b5153565a5c5d5e5f6060606060606060606060606060606060606060606060585650483e34291d11050000030e18212f38414a52585a585651493f372d2d373f495156585a58524a41382f21180e0300000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d00010d18242f3a434b515a62686d72797c7f82848586858583817f7c7974706d6663605955534d494745404045464b51565e616d726e695f53473a2d211408000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000000000000000000000000000616232f3c4956626f7c8998a3aea5988c7f7265594c3f3025190d0100000000000000000000000000000000000000121f2c3845525f6b7885929eabada194877a6e6154473b2e211408000000000000000000000000000000000000000000000000000000000000000714202d3a4753606d7a8693a0a89b8e8275685b4f4235281c0f02000815222e3b4855616e7b8894a1a99c908376695d5043363b4855616e7b8894a1a99c908376695d5043362a1d1003000713202d3a4653606d798693a0acaa9d9084909490827a716c6562605c54565e61646b707c87929facb0a6998c7f7266594c3f3025190e0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d79849197a1a49c918c838790959c9fa4aca9a7a6a5a6a8a8a7a09d96918a848c919ba3a0959084796d6053463a2d20130700000d1a2733404d5a6673808d959697897c6f625b534d4c4d4f58626f7c8895ab9b8e8275685b4f4235281c0f020000000000000000071119232b353d474f59606b707d869298a2a3999286869299a3a39992877e716c615a50483f362d241b1209000000000000000000000000000000000000000000000000000000000000000000000000000613202c3946535f6c7986929faca89c8f8275695c4f4230251a0e02000000000000000000000000000000030f1a26313c464e53555e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5b606d7a849199a3aea39991847a6d605a50453a2e211509000000000000000000000000000000000000000000000000000000000000000a141d2a343c464e555d6065696c6c6b6965615e56524d46413b35414b555d6b6c6c6c6a675f564b3f33271b0e02000000000000000000000000000916222f3c4955626f7c8895a2afa4978b7e7164584b3e31252226282a2b2c2c2c2b2a282522211e1a14100b05000000000000000000000000000000000000000000000006131f2b37434e586062626262626262615e574d42362a1e1205000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d0000000000000000050c151c232831363a4045474a4d5051525353535353535353535353535353535353535353535353534b49453e362d22170c00000000060f1d262f3841474c4e4b4a453f372d25252d373f464a4b4e4c4741382f261d0f060000000c1925323f4c5865727f8b989f9f998d8073665a4d4033271a0d000007131d28313a414550565d60666d6f727577787979787674726f6c6663605c54544f4846423d3a393534383a40454c525b6265615f574d42372b1e1206000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000000000000000000000000000713202d3a4653606d7986929faca89b8e817568564c41362a1e110500000000000000000000000000000000000000121f2c3845525f6b7885929eabada194877a6e6154473b2e211408000000000000000000000000000000000000000000000000000000000000000714212d3a4754606d7a8793a0a89b8f8275685c4f4235291c0f02000815222f3b4855626e7b8895a1a99d9083766a5d5043373b4855626e7b8895a1a99d9083766a5d5043372a1d1004000713202d3a4653606d798693a0aca396897d85929490847d76726e6d666b6b696e71757d859299a3afab9f94887b6e6155483b2e2215080000000000000002060a0c0d1313131313131313131313131313131313131313131312110f0c0701000000000000000006121f2c3844515c666e7c8591979c928c7f767c838a8f939a9a9d9e9f9f9e9d9b9895908b847e777f8c919b9691837a6e665c5145382c1f130600000916232f3c4956626f7c89959f9c8f82756d615e57595959616a73808d99a8998d8073665a4d4033271a0d0000000000000000071119232b353d474f59606b707d869298a2a39992877d7d879299a3a39992877e716c625a50483f362d241b12090000000000000000000000000000000000000000000000000000000000000000000000000613202c3946535f6c7986929facaa9d9083776a574d42362a1e120500000000000000000000000000000006121f2b37434e585f626a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a686f7c87929facaba0968e81756c62564a3d3124170b00000000000000000000000000000000000000000000000000000000000000020b18222a343c434b5154595d5f5f5e5c5854524c46423b36302f3a434b515e6060605e5b564d44392e22170b00000000000000000000000000000916222f3c4955626f7c8895a2afa4978b7e7164584b3e312518191b1d1f1f201f1f1d1b181514120e0903000000000000000000000000000000000000000000000000000815222e3b4754606a6f6f6f6f6f6f6f6e695e53463a2d211407000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d000000000000000000030b12181f252a2f35393a3d404344454646464646464646464646464646464646464646464646463e3d39342d241b110600000000000b141d262f363c40413f3d3a342d251b1b252d343a3d3f413f3c362f261d140b000000000c1925323f4c5865727f8b939393938d8073665a4d4033271a0d0000010c161f282f353f444c52545c606265686a6b6c6c6b6a676562605b5453514a48433d3a36312d2c29282c2f343a414651575955534d453c31261a0e02000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000000000000000006121f2c3844515c667683909ca9aa9e918477685e5246392d20130700000000000000000000000000000000000000121f2c3845525f6b7885929eabada194877a6e6154473b2e211408000000000000000000000000000000000000000000000000000000000000000814212e3b4754616e7a8794a1a89c8f8275695c4f4236291c0f03000915222f3c4855626f7b8895a2aa9d9083776a5d5044373c4855626f7b8895a2aa9d9083776a5d5044372a1d1104000714202d3a4753606d7a8693a0ada194887b7e8b9296918a837f7b79787778797a7d82889297a1abafa4998f8276695f53473a2d211408000000000000070d12161919202020202020202020202020202020202020202020201f1e1b18130c050000000000000004101c2834404a545f6a6e7c8591928c7f736d6f787d82878b8e9091929291908e8b88837e79716d727f8c9191847a6e685e544b4034281c100400000815222e3b4754606a7783909a9e948c7f756e69676666676b707c86929fa096897c6f6356493c3023160900000000000000071119232b353d474f59606b707d869298a2a39992877e70717e879299a3a39993877e716c625a50483f362d241b120900000000000000000000000000000000000000000000000000000000000000000000000613202c3946535f6c7986929facac9f928579695e52463a2d2014060000000000000000000000000000000815212e3a47535f6a6f777777777777777777777777777777777777777777777f8c99a5b2a89e938b7e7165584b3e3225180b0000000000000000000000000000000000000000000000000000000000000000061018222a313a4145474c50525352504c4746413a36302a2528313a414547535353514f4b443b32281d110600000000000000000000000000000916222f3c4955626f7c8895a2afa4978b7e7164584b3e3125180c0f111212131312100f0c080705020000000000000000000000000000000000000000000000000000000916232f3c4956626f7c7c7c7c7c7c7c7b6e6154483b2e211508000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d0000000000000000000000070c141a1d24292c2d303336373839393939393939393939393939393939393939393939393931302d29221b1209000000000000020b141d242b30333432312e29231b12131b23292e31323433302b241d140b02000000000c1925323f4c5865727f8686868686868073665a4d4033271a0d000000040d161d2429323a41454a505356595c5d5e5f5f5e5d5b585553504a4644403938322d2a2620201d1c1f232930363f464a4c4847423c332a1f150900000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000000000000000004101c2834404a5466737f8c99a9aca096877a6d6154473a2e21140a00000000000000000000000000000000000000121f2c3845525f6b7885929eabada194877a6e6154473b2e211408000000000000000000000000000000000000000000000000000000000000000815212e3b4854616e7b8794a1a99c8f8376695c504336291d1003000916232f3c4956626f7c8995a2aa9d9084776a5d5144373c4956626f7c8995a2aa9d9084776a5d5144372a1e1104000714212d3a4754606d7a8793a0ada194877b74818e949e95908c888685848585878a8f939aa1a9afa59f93877c6f62574d42372b1e120600000000010a12191e2325262d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2b2b28241e170f06000000000000000c18232e39424e575f6a6e7c858c80736d63666d70767b7e81838485858584817f7c77726d67626d727f8b847b6e685e564c42392e23180c00000006131f2b38434e5863707d88939f9c918c817b7673727374777d859298a29e9184786d6053463a2d201307000000000000071119232b353d474f59606b707d869298a2a39992877e706c6c717e879299a3a49993877e716c625a50483f362d241b1209000000000000000000000000000000000000000000000000000000000000000000000613202c3946535f6c7986929facaea298877b6e6154483b2d22170b0607080808060200000000000000000915222f3c4855626f7c8484848484848484848484848484848484848484848484919daab7afa59f9285786c5f5245392c1f120600000000000000000000000000000000000000000000000000000000000000000610181f282f35393a3f43454645433f3a3936302a251f191f282f35393a46464644433f39322920160b0000000000000000000000000000000916222f3c4955626f7c8895a2afa4978b7e7164584b3e3125180b020405060606050402000000000000000000000000000000000000000000000000000000000000000613202c3946535f6c79878989898989898074675a4e4134271b0e000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d00000000000000000000000003090e13181d20202327292a2b2c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2524211d1711090000000000000000020b131a1f2426272524221d1811090911181d2224252726241f1a130b0200000000000b1825313e4a56626d72797979797979736e63584b3f3226190c00000000040c131820282f35383f4446494c4f5152535252504e4c4946443f3a38342e2c27211e1a1413101013181e252a353a3e3f3b3a37312a21180e0300000000000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000000000000000000000000000c18232e3c4956626f7c8997a2ada8978a7e7164574a3e31261b0f03000000000000000000000000000000000000121f2c3845525f6b7885929eabada194877a6e6154473b2e211408000000000000000000000000000000000000000000000000000000000000000815222e3b4855616e7b8894a1a99c908376695d5043362a1d100300091623303c4956636f7c8996a2aa9e9184776b5e5144383c4956636f7c8996a2aa9e9184776b5e5144382b1e1105000714212e3a4754616d7a8794a0b4ab94877a6d78828f939f9d989a939291919298979b9fa4acaba39f938d80736a6054453c31261a0e02000000000a131c232a2f3233393939393939393939393939393939393939393939393837342f2921180f0500000000000007121c27303c454e575f6a6e7c7f736e635b5c6064696e717477787979787775726f6a65605d5b626d727e7b6e695e564d443b30271d1207000000030f1b27323d4854606b73808d939f9c938e8783807f8081848a9297a19f928a7d70665c5044382b1f12060000000000071119232b353d474f59606b707d869298a2a39992877e716c61616c717e879299a3a49993877e716c625a50483f362d241b12090000000000000000000000000000060606060606060600000000000000000000000613202c3946535f6c7986929facb4aa978a7d7064544a3f33281c131313151514120f0a030000000000000916222f3c4955626f7c889191919191919191919191919191919191919191919196a0acb8b8ac9f9285796c5f5246392c1f1306000000000000000000000000000000000000000000000000000000000000000000060d161d24292c2d323639393836322e2d2a251e19140d161d24292c2d3939393736332e2820170e040000000000000000000000000000000916222f3c4955626f7c8895a2afa4978b7e7164584b3e3125180b000000000000000000000000000000000000000000000000000000000000000000000000000000000613202c3946535f6c798692959595958d8174675a4e4134271b0e000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d000000000000000000000000000001070d111314171a1d1e1f202020202020202020202020202020202020202020202020181715110c060000000000000000000001080e14171a1b181815120c060000060c121518181b1a17140e08010000000000000916222e3a46515b62656c6c6c6c6c6c66635c52473b2f23170a000000000001070d161e24292e34383a3c3f42444546464543413f3c3938332d2c28231c1b16120e09060404070c131923292e31322e2d2b261f180f060000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000000000000000000000000000713202d3a4653606d7985929eaba79b8e817468584e43372b1f1206000000000000000000000000000000000000121f2c3845525f6b7885929eabada194877a6e6154473b2e211408000000000000000000000000000000000000000000000000000000000000000815222f3b4855626e7b8895a1a99d9083766a5d5043372a1d1004000a1623303d495663707c8996a3ab9e9184786b5e5145383d495663707c8996a3ab9e9184786b5e5145382b1e1205000814212e3b4754616e7a87949f9fa39986796d6d79818c92989fa29f9e9e9e9fa2aaa8a9aaa29f99928b81786d60584e43332a1f15090000000007121c252e353b3e40464646464646464646464646464646464646464646464544403a332b21170c010000000000000b151e2a333c454e575f6a6e726d635c525053575e6164676a6b6c6c6b6a6865625f585351515b626c716e695e574d443b32291e150b00000000000a16202c38444f59606c77808c92989f9992908d8c8c8e91969e9f99928c80736b61544a3f34281c100300000000040f19232b353d474f59606b707d869298a2a49992877e716c615a5a616c717e879299a3a49993877e716c625a50483f362d241b110600000000000000000002050708131313131313131307070501000000000000000613202c3946535f6c7986929facb4a79a8e8174665b5044382d22201f202222211f1a150e0600000000000916222f3c4955626f7c88959d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9d9da0a8b2acacac9f9285796c5f5246392c1f130600000000000000000000000000000000000000000000000000000000000000000000040c13181d2021262a2c2c2b292521201d19130e09040c13181d20212d2d2d2b2a27221d160e05000000000000000000000000000000000916222f3c4955626f7c8895a2afa4978b7e7164584b3e3125180b000000000000000000000000000000000000000000000000000000000000000000000000000000000613202c3946535f6c7986929fa2a29a8d8174675a4e4134271b0e000c1925323f4c5865727f8b98a5a6998d8073665a4d4033271a0d00000000000000000000000000000000010406070a0d1011121313131313131313131313131313131313131313131313130b0a0805000000000000000000000000000003080b0d0e0c0b090501000000000106090b0c0e0d0b0803000000000000000006121e29343f495156586060606060605a58524a40362a1f130700000000000000040c13191c23282b2d2f323537383939383734322f2d2b28221f1c18120f0a0502000000000002080d181e22252622211e1a150e06000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000000000000000000000000000006121f2b3844505c6674818e9baaab9e9184786a5f53473a2e21150a000000000000000000000000000000000000121f2c3845525f6b7885929eabada194877a6e6154473b2e211408000000000000000000000000000000000000000000000000000000000000000915222f3c4855626f7b8895a2aa9d9083776a5d5044372a1d1104000a1723303d4a5663707d8996a3ab9e9185786b5e5245383d4a5663707d8996a3ab9e9185786b5e5245382b1f1205000815222e3b4855616e7b889393939392867966676d787f868d92989a9c9e9e9f9f9e9d9c9998928d877f746d665c50463d3221180e03000000020d19232e3740464b4c5353535353535353535353535353535353535353535352504c453d33291e1307000000000000030c18212a333c454e575f6266635b524944464d5354585b5d5e5f5f5e5d5b5855534e474549515a6265615e574d453b322920170c03000000000004101c27323d44505b656c777f868e92999b9c9a99999a9d9b99938f867f736e63594f42382e23170b00000000000b16212b353d474f59606b707d869298a2a49993877e716c615a50505a616c717e879299a3a49993887e716c625a51483f372d23180c0100000000000002090e12141520202020202020201413110d080200000000000613202c3946535f6c7986929facb8ab9e9185786c60544a3f332d2c2c2d2f2f2e2b2620180f06000000000916222f3c4955626f7c88959f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9285796c5f5246392c1f1306000000000000000000000000000000000000000000000000000000000000000000000001070d111314191d1f201f1d191413110d0802000001070d1113142020201e1d1b17110b0400000000000000000000000000000000000916222f3c4955626f7c8895a2aca4978b7e7164584b3e3125180b000000000000000000000000000000000000000000000000000000000000000000000000000000000613202c3946535f6c7986929faca79a8d8174675a4e4134271b0e000c1925323f4c5865727f8b989f9f998d8073665a4d4033271a0d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d18232d373f464a4c5353535353534d4b4740382e24190e02000000000000000001080d11171c1f202326292a2b2c2c2b2a282522201f1c1712100c070000000000000000000000070d121618191514120e090300000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000000000000000000000000000003101c28343f4a5464707d8a98a2ada196887b6f6255483c31261a0f000000000000000000000000000000000000121f2c3845525f6b7885929eabada194877a6e6154473b2e211408000000000000000000000000000000000000000000000000000000000000000916232f3c4956626f7c8995a2aa9d9084776a5d5144372a1e1104000a1724303d4a5763707d8a96a3ab9e9285786b5f5245383d4a5763707d8a96a3ab9e9285786b5f5245382c1f0600000916232f3c4956626f7c86868686868685786b5c666c727b80858a8d8f9192929291908f8c8a86807b726d605c544a3f342b200f060000000006121e2a354049515759606060606060606060606060606060606060606060605e5c574f453a2f24180c00000000000000060f18212a333c454e53555957514940383b4246484b4e5051525252514f4c4847433c393f4850565854534d453b332920170e05000000000000000b162127333f49535b656c727b81868b8e9091929291908e8b87827c726d635c52473e30261c11060000000003101b27323d474f59606b707d869298a2a49a93877e716c615a504848505a616c717e879299a4a49a93887e716c625b51493f34291d11050000000000050d141a1e20212d2d2d2d2d2d2d2d21201d19130c05000000000613202c3946535f6c7986929facb4aba1978a7e71665b50443f3a39383a3b3b3a37312a22180e030000000916222f3c4955626f7c8893939393939393939393939393939393939393939393939393939393939285796c5f5246392c1f130600000000000000000000000000000000000000000000000000000000000000000000000000010406070c10121312100c070705010000000000000104060713131311100e0b06000000000000000000000000000000000000000916222f3c4955626f7c88959f9f9f978b7e7164584b3e3125180b000000000000000000000000000000000000000000000000000000000000000000000000000000000613202c3946535f6c7986929f9f9f9a8d8174675a4e4134271b0e000c1925323f4c5865727f8b939393938d8073665a4d4033271a0d00000000000000000000000000000000000000000000000000000000000000000000040613131313131313131312110e09040000000000000000000000000000000000040613131313131313131312110e0904000000000000000000000000000000000007111b252d343a3e3f464646464646403f3b362e261c1208000000000000000000000000060b10121316191c1e1f201f1f1d1b191613120f0b060400000000000000000000000000000106090b0c08080602000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000000000000000000000b17232e3a4753606d7985929faca8998c7f7366584e43372b1c11060000000000000000000000000000000000121f2c3845525f6b7885929eabada194877a6e6154473b2e21140800000000000000000000000000000000000000000000000000000000000000091623303c4956636f7c8996a2aa9e9184776b5e5144382b1e1105000a1724313d4a5764707d8a97a3ab9f9285786c5f52452e3d4a5764707d8a97a3ab9f9285786c5f52452e23170b00000815222e3b4754606a6f797979797979787368545b60696e74797d808284858685858482807d7a746e69625b504a42382e22190f00000000000a16232f3b46515b63666c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6b6861574c4034281b0f0000000000000000060f18212a333c4247484c4b463f372b31363a3b3e41444546464544423f3c3a37312c363f454a4b4846423b332920170e050000000000000000050b17222d384149535b606a6e757a7e81838585868584817f7b756f6a635b524940352c1e140a00000000000713202c38444f59606b707d869298a2a49a93887e716c615a50483e3e48505a616c717e879399a4a49a93887f726d625b51453a2e22150900000000050f171f252a2d2e39393939393939392e2d2a251e160e050000000613202c3946535f6c7986929facaea399929183786c6059504947454546484847433c342a20150a0000000916222f3c4955626f7c8686868686868686868686868686868686868686868686868686868686868686796c5f5246392c1f130600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916222f3c4955626f7c8893939393938b7e7164584b3e3125180b000000000000000000000000000000000000000000000000000000000000000000000000000000000613202c3946535f6c798692939393938d8174675a4e4134271b0e000c1925323f4c5865727f8686868686868073665a4d4033271a0d0000000000000000000000000000000000000000000000000000000000000001070c10132020202020202020201f1d1a150f080000000000000000000000000001070c10132020202020202020201f1d1a150f08000000000000000000000000000000000009131b23292e313239393939393933322f2a241c140a000000000000000000000000000000030607090c0f1112131312100e0c090606030000000000000000000000000000000000000000000000000000000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000000000000000000000000000006131f2c3845515d6774818e9ba8aa9d9184776a5f5347382e23170b0000000000000000000000000000000000121f2c3845525f6b7885929eabada194877a6e6154473b2e211408000000000000000000000000000000000000000000000000000000000000000a1623303d495663707c8996a3ab9e9184786b5e5145382b1e1205000b1824313e4b5764717e8a97a4ac9f9285796c5f4a3f343e4b5764717e8a97a4ac9f9285796c5f4a3f34281c10030006131f2b37434e5860626c6c6c6c6c6c6b68615750575e61676d7073767778797978777673706d67615e5751443f3830261c100700000000000c1925323e4b57636d73797979797979797979797979797979797979797979797873685c5044372b1e11000000000000000000060f18212a31373a3b3f3e3a352e25252a2d2e313437383939383735322f2e2b26242d343a3d3e3b3a36312921170e050000000000000000000006111b262f38414950575f62686e717477787979787775726e69625f58514940372e231a0c0200000000000916222f3b4854606b707d869298a2a49a93887e716c625a50483e36363e48505a616c717e879399a4a49a93887f726d62564a3d3124180b000000020d17212930363a3b4646464646464646463936302820160c0200000613202c3946535f6c7986929facac9f9286928c7f736b605b53535151535555534e463c31261a0f0200000815222e3b4754606a76797979797979797979797979797979797979797979797979797979797979797974695d5144382b1f120500000000000000000000000000000000000003080c0e0e131313131313130f0e0c09040000000000000000000000000000000000000000000000000000000000000003070b0d0e131313131313130e0e0c08030000000000000916222f3c4955626f7c868686868686867e7164584b3e3125180b000000000000000000000000000000000000000000000000000000000000000000000000000000000613202c3946535f6c79878686868686868074675a4e4134271b0e000b1825313e4a56626d72797979797979736e63584b3f3226190c000000000000000000000000000000000000000000000000000000000000030b12181c1f2d2d2d2d2d2d2d2d2c2c2a26201912090000000000000000000000030b12181c1f2d2d2d2d2d2d2d2d2c2c2a262019120900000000000000000000000000000000010911181e2225252d2d2d2d2d2d2726231f19120a020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000000000000000000000000000004101d2935404b5563707d8996a1aca095887b6f62544a3f34281c100300000000000000000000000000000000121f2c3845525f6b7885929eabada194877a6e6154473b2e211408000000000000000000000000000000000000000000000000000000000000000a1723303d4a5663707d8996a3ab9e9185786b5e5245382b1f1205000b1825313e4b5864717e8b97a4ac9f938679665c5044383e4b5864717e8b97a4ac9f938679665c5044382b1f120600030f1b27323d464e54566060606060605f5c574f444d53555c606367696b6b6c6c6b6a696663605d55534d453f342e261e140a0000000000000d192633404c5966737f8686868686868686868686868686868686868686868685786b5e5245382b1f1200000000000000000000060f1820262b2e2f33322f2a231c1a1e212125282a2b2c2c2b2a282522211f1b1b22292e31322e2d2a251f170f050000000000000000000000000a141d262f383f444e53565e6165686a6b6c6c6b6a6865615e57534e463f372e251c11080000000000000a1623303d495663707d869298a2a39f93887f716c625a50483e362c2c363e48505a616c717e879399a4a49a93887e7265584b3f3225180c00000009141f29333b42464853535353535353535346413a32281e1308000005121f2b3744505b657986939faca79a8d818d93877d726c6562605d5c6062625f584e43372b1f1206000006131f2b37434e5860626c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6962584d4135291c10030000000000000000000000000000000001090f14181a1b202020202020201c1b191510090200000000000000000000000000000000000000000000000000000001080e1317191a202020202020201b1a18140f0901000000000815212e3b47535f6a7679797979797979716c6256493d3024170a0000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2c3845525e6a7579797979797979746e64584c3f33261a0d000916222e3a46515b62656c6c6c6c6c6c66635c52473b2f23170a0000000000000000000000000000000000000000000000000000000000030d151d23292c3939393939393939393836312b241b1208000000000000000000030d151d23292c3939393939393939393836312b241b12080000000000000000000000000000000000070d121618192020202020201a1917130e08000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050a0d0f101313100f0d0a0500000000000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000000000000000000000000000000000c18242f394653606c7884919eaba7998c8073665c5044382b1f140900000000000000000000000000000000121f2c3845525f6b7885929eabada194877a6e6154473b2e211408000000000000000000000000000000000000000000000000000000000000000a1724303d4a5763707d8a96a3ab9e9285786b5f5245382c1f0600000b1825323e4b5865717e8b98a4afa49986796d6053463a3e4b5865717e8b98a4afa49986796d6053463a2d20130700000a16202b343d43474953535353535352504c453b42464b5153575a5c5e5f5f5f5e5d5c595754514c46423b3328231c140c020000000000000d192633404c5966737f8c93939393939393939393939393939393939393939185786b5e5245382b1f120000000000000000000000060e151a1e21222625221e18120e121415181b1d1e1f1f1f1e1c191515120f11181d21242521211e1a140d0500000000000000000000000000020b141d262d333c42474c5254585b5d5e5f5f5e5d5b5854524d47433c342d251c130a000000000000020f1c2935424f5c6875828f949fa39b918b7f726d625a50483e362d24242c363e48505a616c717e879399a49e938e8175685b4e4235281b0f0200020e1a25303b454d525f60606060606060605f524c443a3025190d01000613202d394653606c78869aa4afa396897d869292877f78726e6d67676d6e6e6a5f53473a2e2114080000030f1b27323c464e5455606060606060606060606060606060606060606060606060606060606060605f5d5850463b3025190d00000000000000000000000000000000030b131a202427282d2d2d2d2d2d2d292825211b140c0300000000000000000000000000000000000000000000000000020b12191f2326272d2d2d2d2d2d2d282724201a130b0300000006131f2b37434e585f626c6c6c6c6c6c6c64625a5045392d2115080000000000000000000000000000000000000000000000000000000000000000000000000000000004111d2a36424e59636a6c6c6c6c6c6c6c67645c52473c3024170b0006121e29343f495156586060606060605a58524a40362a1f130700000000000000000000000000000000000000000000000000000000010b151f272f343846464646464646464645423d352d24190f0400000000000000010b151f272f343846464646464646464645423d352d24190f0400000000000000000000000000000000000106090b0c1313131313130d0c0a07020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030a11161a1c1d20201d1c1a16110a030000000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000000000000000000000007121f2b3844505b6673808c99a3ab9e9184796d6053463b30251a0e01000000000000000000000000000000121f2c3845525f6b7885929eabada194877a6e6154473b2e211408000000000000000000000000000000000000000000000000000000000000000a1724313d4a5764707d8a97a3ab9f9285786c5f52452e23170b00000c1825323f4b5865727e8b98a5b5a093867a6d6053473a3f4b5865727e8b98a5b5a093867a6d6053473a2d2014070000040f19222b32373b3c4646464646464544403a3136394045474a4d4f5152535252514f4d4a4745413a3631292117110a02000000000000000d192633404c5966737f8c999999999999999da0a7a9a29f999999999999999185786b5e5245382b1f1200000000000000000000000003090e121415191816120d07020507080b0e1112131312110f0c09080603060c111517181514120e0903000000000000000000000000000000020b141b222731373b4146474b4e5152525352514e4c4846423b37312a221c130a01000000000000000714202d3a4753606d79828f949b918b7f726d625a50483f362d241b1a242c363e48505a626c717e87939a938e81786d6053463a2d201307000005121e2a36424d575e6c6c6c6c6c6c6c6c6c6c5e564c41362a1d1105000713202d3a4653606d798693a0b6a295887c818e99928c837f7b7a7979797b7c6e6255483b2f2215080000000a15202b343c4347495353535353535353535353535353535353535353535353535353535353535352514d463e342a1f1408000000000000000000000000000000010b151d252b303435393939393939393534312c261e150c000000000000000000000000000000000000000000000000000b141d242b303334393939393939393534302b251d150b010000030f1b26323c464e535560606060606060585650483e34291d110500000000000000000000000000000000000000000000000000000000000000000000000000000000010e1a26313d4751595e5f6060606060605a58524a41362b1f140800010d18232d373f464a4c5353535353534d4b4740382e24190e020000000000000000000000000000000000000000000000000000000007121d2731394045535353535353535353524e473f352b2015090000000000000007121d2731394045535353535353535353524e473f352b20150900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d151c2226292a2d2d2a2926221c150d0400000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000000000000000000000000000000030f1c28333f4a54616e7b87929faca1968a7d7063574d42362a1d1307000000000000000000000000000000121f2c3845525f6b7885929eabada194877a6e6154473b2e211408000000000000000000000000000000000000000000000000000000000000000b1824313e4b5764717e8a97a4ac9f9285796c5f4a3f34281c1003000c1925323f4c5865727f8b98a5ada093877a6d6054473a3f4c5865727f8b98a5ada093877a6d6054473a2d21140700000007101920272b2e2f3939393939393837342f252a2f34383a3d404344454646454443403d3a39352f2a251f170f060000000000000000000d192633404c5966737f8c8c8c8c8c8c8c8c9095a0a297928c8c8c8c8c8c8c8c85786b5e5245382b1f120000000000000000000000000000020608080c0c0a060200000000000001040506060504020000000000000105090b0b08070502000000000000000000000000000000000000020a111720262b3036393b3e41444546464544423f3b3a36302b262018100a01000000000000000006131f2c3845515c676d79828f918b7f726d625b51483f362d241b12121a242c363e48505a626c717e88938e81786d665c5044382b1f120600000714202d3a46525e6976797979797979797976685e5246392d201307000714202d3a4753606d7a8693a0ada194887b7c88949f95918c8886858586888073675a4d4034271a0d000000040f19222b32373b3c464646464646464646464646464646464646464646464646464646464646464644413b342c22180d0200000000000000000000000000000009131d272f373c40414646464646464642413d3730271e0e050000000000000000000000000000000000000000000000030d1d262e363c3f414646464646464641403c372f271d13090000000a15202a343c434749535353535353534b49453e362d22170c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000915202b353f474e52535353535353534e4c4741382f241a0e03000007111b252d343a3e3f464646464646403f3b362e261c120800000000000000000000000000000000000000000000000000000000000c18232f39434b515f606060606060605f5e5951473d31261a0e010000000000000c18232f39434b515f606060606060605f5e5951473d31261a0e0100000000000000000000000000000000000000000000000000000000000106090b0c131313130c0b09060100000000000000000000000000000000000000000000000000000000000000030d161f272d32353639393635322d271f160d03000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000000000000000000000000000000000b17222d3846525e6975828f9ba7a89b8f8275695e52463a2f24180d000000000000000000000000000000121f2c3845525f6b7885929eabada194877a6e6154473b2e211408000000000000000000000000000000000000000000000000000000000000000b1825313e4b5864717e8b97a4ac9f938679665c5044382b1f1206000c1926333f4c5966727f8c99a5ada094877a6d6154473a3f4c5966727f8c99a5ada094877a6d6154473a2e21140700000000070f161b1f22232d2d2d2d2d2d2c2b28241a1d23292c2d3034363838393938373633302d2c29241e1a140d0500000000000000000000091623303c4956636f7d808080808080808083909d9f928580808080808080807f7265594c3f3226190c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b151a1e252a2d2e323537383939383735322e2d2a251f1a150e060000000000000000000004101c2934404b555c676d79828a7f726d625b51493f362d241b120909121b242d363e48505a626c717e8681786d665c544a3f34281c100300000815212e3b4854616e7b86868686868686867a6d6154473a2e211407000714212d3a4754606d7a8793a0ada194877a76828f99a09d9895989292988d8073675a4d4034271a0d0000000007101920272b2e2f39393939393939393939393939393939393939393939393939393939393939393835302a221a1006000000000000000000000000000000030f1a252f3941484d4e535353535353534f4d4942393020170d02000000000000000000000000000000000000000000010b151f2e3840474c4d535353535353534e4d4841392f251a0f030000040e18222a32373b3c464646464646463e3d39342d241b1106000000000000000000000000000000000000000000000000000000000000000000000000000000000000040f19242d353d424546464646464646413f3c362f261d13080000000009131b23292e313239393939393933322f2a241c140a000000000000000000000000000000000000000000000000000000000004101c2934404b555c6c6c6c6c6c6c6c6c6c6a63594e42362a1d1104000000000004101c2934404b555c6c6c6c6c6c6c6c6c6c6a63594e42362a1d110400000000000000000000000000000000000000000000000000000000070d1216181920202020181815120c060000000000000000000000000000000000000000000000000000000000000a151f2831383e4243464643423e3831281f150a000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000000000000000000000000000000000006111c2a36424d5763707d89959fac9f92867b6e61554b4135291d12070000000000000000000000000000121f2c3845525f6b7885929eabada194877a6e6154473b2e211408000000000000000000000000000000000000000000000000000000000000000b1825323e4b5865717e8b98a4afa49986796d6053463a2d201307000d192633404c5966737f8c99a6ada194877a6e6154473b404c5966737f8c99a6ada194877a6e6154473b2e2114080000000000040a0f1315162020202020201f1e1c180e12181c1f202427292b2c2c2c2b2a29262421201d19130e090300000000000000000000000915222f3b4854606b6f7373737373737374818e9b9e91847873737373737373726d62574a3e3125180b0000000000000105090b0b1313131307060405090b0b131313130706040005090b0b13131313070604000000000000000000000000000000000000000000000000000000000000000003090e14191e202125282a2b2c2c2b2a282521201e1a140f0a030000000000000000000000000c18232f39434b555c676d797d726d625b51493f372d241b1209000009121b242d363f48505a626c717d786d665c544a42382e23170b0000000815212e3b4854616e7b87939393939393877a6d6154473a2e211407000814212e3b4754616e7a8794a1aca093877a6f7c87929fa5a5aaa29f9f9a8d8073675a4d4034271a0d0000000000070f151b1f22222d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2c2b29251f181008000000000000000000000000000000000814202b37414b53595b606060606060605c59544b4232291f140900000000000000000000000000000000000000000007121d2731404a52585a606060606060605b59534b41372b20140800000006101820262b2e2f3939393939393931302d29221b1209000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121b242b313638393939393939393433302b241d140b0100000000010911181e2225252d2d2d2d2d2d2726231f19120a02000000000000000000000000000000000000000000000000000000000006131f2c3845515c67767979797979797979756a5e5245382c1f1206000000000006131f2c3845515c67767979797979797979756a5e5245382c1f12060000000000000000000000000000000000000000000000000000010911181e2225252d2d2d2d2524221d1811090000000000000000000000000000000000000000000000000000000005111c27313a434a4e505353504e4a433a31271c11050000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000000000000000000000000000e1a25303b4854606b7683909da8a3998d8073675d5145392e23180c0000000000000000000000000000121f2c3845525f6b7885929eabada194877a6e6154473b2e211408000000000000000000000000000000000000000000000000000000000000000c1825323f4b5865727e8b98a5b5a093867a6d6053473a2d201407000d1a2633404d596673808c99a6aea194887b6e6155483b404d596673808c99a6aea194887b6e6155483b2e221508000000000000000306080913131313131312110f0c01070c101314171a1c1e1f201f1f1e1c1a171413110d0801000000000000000000000000000713202c38444f5960636666666666666874818e9b9e9184786b66666666666665625b51463a2e2216090000000000060c111517182020201f141310111517182020201f1413100c111517182020201f1413100c07010000000000000000000000000000000000000000000000000000000000000002080d111414181b1e1f1f201f1e1b191514120e0903000000000000000000000000000007121d273139434b555c676d716c625b51493f372d251b12090000000009121b242d363f48505a626b706d665c544a423830261c11060000000815212e3b4854616e7b87949f9f9f9f94877a6d6154473a2e211407000815222e3b4855616e7b88949f9fa39986796d73808c939fa2aaaaaba69a8d8073675a4d4034271a0d000000000000040a0f131516202020202020202020202020202020202020202020202020202020202020201f1f1c19140d0600000000000000000000000000000000000c1824303c48535d64686c6c6c6c6c6c6c68655d54443b3025190e0000000000000000000000000000000000000000000c18232f3943525c64676c6c6c6c6c6c6c68645d53483c3024180c00000000060e151b1f21222d2d2d2d2d2d2d2524211d1711090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009121920262a2c2c2d2d2d2d2d2d2726241f1a130b0200000000000000070d121618192020202020201a1917130e08000000000000000000000000000000000000000000000000000000000000000714202d3a4753606d798686868686868687796c5f5346392c20130600000000000714202d3a4753606d798686868686868687796c5f5346392c201306000000000000000000000000000000000000000000000000000009131b23292e31323939393932312e29231b13090000000000000000000000000000000000000000000000000000000a16222d38434c545a5d60605d5a544c43382d22160a0000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000000000000000000000000000000000009141f2c38444f5964717e8a96a0ab9f92857a6d60544b4034281d120700000000000000000000000000121f2c3845525f6b7885929eabada194877a6e6154473b2e211408000000000000000000000000000000000000000000000000000000000000000c1925323f4c5865727f8b98a5ada093877a6d6054473a2d211407000d1a2733404d5a6673808d99a6aea195887b6e6255483b404d5a6673808d99a6aea195887b6e6255483b2f2215080000000000000000000000060606060606050503000000000406070a0d10111213131211100d0a07060401000000000000000000000000000000030f1b27323d474f545659595959595b6874818e9b9e9184786b5e5959595959595751493f35291e1206000000000911181d2124252d2d2d2c201f1c1d2124252d2d2d2c201f1c181d2124252d2d2d2c201f1c18120b030000000000000000000000000000000000000000000000000000000000000000010507080b0e1112131312110f0c0807050200000000000000000000000000000000010b151f273139434b555c6064615a51493f372d251b130900000000000009121b242d363f4850596063605c544a423830261e140a000000000815212e3b4854616e7b8794a1acaca094877a6d6154473a2e211407000915222f3c4855626f7b8893939393928679666c77818c92989b9e9f9f9a8d8073675a4d4034271a0d000000000000000003060809131313131313131313131313131313131313131313131313131313131313131312100d08020000000000000000000000000000000000000e1a2734404d59646f7479797979797979756f65564d42362a1c11060000000000000000000000000000000000000004101c2934404b55646e7479797979797979746f64594d4034271a0e0000000000040a0f13151620202020202020181715110c06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080f151a1d1f202020202020201b1a17140e08010000000000000000000106090b0c1313131313130d0c0a070200000000000000000000000000000000000000000000000000000000000000000714202d3a4753606d7a8693939393939286796c5f5346392c20130600000000000714202d3a4753606d7a8693939393939286796c5f5346392c2013060000000000000000000000000000000000000000000000000007111b252d343a3e3f464646463f3d3a342d251b110600000000000000000000000000000000000000000000000000010d1a26323e4a545e66696c6c69665e544a3e32261a0d0100000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000000000000000000000000000000000002101b27323d4653606c7884919da8a2978b7f72665c5145392e23180c01000000000000000000000000121f2c3845525f6b7885929eabada194877a6e6154473b2e211408000000000000000000000000000000000000000000000000000000000000000c1926333f4c5966727f8c99a5ada094877a6d6154473a2e211407000d1a2734404d5a6773808d9aa6aea295887b6f6255483c404d5a6773808d9aa6aea295887b6f6255483c2f22150900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16212b353d4448494d4d4d4d4e5b6874818e9b9e9184786b5e514d4d4d4d4c4a463f372d23180d0100000009121b22292e3132393939392d2c29292e3132393939392d2c2923292e3132393939392d2c29231d150d03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d151f273139434b5153575550483f372d251b1309000000000000000009121b242d363f474f545653504a423830261e140c02000000000815212e3b4854616e7b8794a1acaca094877a6d6154473a2e211407000916222f3c4955626f7c86868686868685786c656c777f868b8e919292928d8073675a4d4034271a0d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1b2835414e5b687481868686868686868175695e5246382d22170b0000000000000000000000000000000000000006131f2c3845515c677480868686868686868174685b4e4135281b0e0000000000000003060809131313131313130b0a080500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004090e1112131313131313130e0d0b080300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202d3a4753606d7a86939f9f9f9f9286796c5f5346392c20130600000000000714202d3a4753606d7a86939f9f9f9f9286796c5f5346392c201306000000000000000000000000000000000000000000000000010d18232d373f464a4c535353534b4a463f372d23180c01000000000000000000000000000000000000000000000000030f1c2935424e5a66707679797670665a4e4235291c0f0300000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000000000000000000000000000000000000000b161f2b3844505b66717e8b96a0a99e9184796d60554b4034281e1308000000000000000000000000121f2c3845525f6b7885929eabada194877a6e6154473b2e211408000000000000000000000000000000000000000000000000000000000000000d192633404c5966737f8c99a6ada194877a6e6154473b2e211408000e1b2734414e5a6774818d9aa7afa295887c6f6255493c414e5a6774818d9aa7afa295887c6f6255493c2f2216090000000000000105080b0b1313131313130c0b090501000000000000000000000000000002070a0c0d1313131313130b0a08050000000000000000040f19232b32383b3c404040414e5b6874818e9b9e9184786b5e51454040403f3e3a352d251b110700000006111b242d343a3d3e464646463a3834343a3d3e464646463a38342f343a3d3e464646463a38342f271f150b0100000000000000000000000000000000000000030608090d1012131312110f0b0707050100000306060b0f121312110e080705020000000000000000000000000000030d151f2731394045474a49453e362d251b13090100000000000000000009121b242d353d44484a46443f3830261e140c0200000000000815212e3b4854616e7b87949f9f9f9f94877a6d6154473a2e211407000815222e3b4754606a767979797979797873695b656c727a7f8284858685837e7164574b3e3124180b00000000000004090c0e0f131313131313131313131313131313131313131313131313131313131313131313100f0d09050000000000000000000000000000000000000916232f3c4956626f7c89959393939392867b6e61544a3f33281c0f030000000000000000000000000000000000000714202d3a4753606d7985929393939395897c6f6356493c3023160900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050a0d0f101313100f0d0a05000000000000000000000000000714202d3a4753606d7a8693a0acac9f9286796c5f5346392c20130600000000000714202d3a4753606d7a8693a0acac9f9286796c5f5346392c20130600000000000000000000000000000000000000000000000006121e29343f4951565860606060585651493f34291d120600000000000000000000000000000000000000000000000003101d2a3643505d69768286868276695d5043362a1d100300000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000000000000000000000000000000000000030f1c28333f4a54606d7884919da7a1968b7e72675c51453a2f24190d030000000000000000000000121f2c3845525f6b7885929eabada194877a6e6154473b2e211408000000000000000000000000000000000000000000000000000000000000000d1a2633404d596673808c99a6aea194887b6e6155483b2e221508000e1b2834414e5b6774818e9aa7afa295897c6f6256493c414e5b6774818e9aa7afa295897c6f6256493c2f2316090000000000060c11151718202020202020181815110c06000000000000000000000000070e1316191a202020202020181715110c060000000000000007111921272c2f30333335414e5b6874818e9b9e9184786b5e514538333332312e29231b130a000000010c18222d363f454a4b535353524745403f454a4b53535352474540393f454a4b535353524745403931271d12070000000000000000000000000000000000040a0f1315161a1d1f1f201f1e1b181413110d080b0f1213181c1f201f1e1b1514120e090300000000000000000000000000030d151f272f34383a3e3c39332c241b130901000000000000000000000009121b232b33383c3d3a38342e261e140c020000000000000815212e3b4854616e7b87939393939393877a6d6154473a2e2114070006131f2b37434e5860626c6c6c6c6c6c6c6961535b60686d72757778797876716c6155493d3023170a0000000002091015191b1c2020202020202020202020202020202020202020202020202020202020202020201d1c1915100a03000000000000000000000000000000000915222e3b4854606a7783909daa9fa3998c7f73665b5044382b1f1409000000000000000000000000000000000006121f2b37434e5864717e8a97a29f9f9d9083776b6054483b2f22150900000000000000000000000000000000000000000406070a0c0f11111213131312110f0d0b070705010000000000000000000000000000000000000000000000000003060809131313131313130b0a08050000000000000000000000000000000000000000000000000000000000000000000000000000000000030a11161a1c1d20201d1c1a16110a0300000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130600000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013060000000000000000000000000000000000000000000000000916222e3a46515b62656c6c6c6c65625b51463a2e22150900000000000000000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000000000000000000000000000000000000000b17222d3844505c66717e8a95a0a89e9184796d60564c4135291f14090000000000000000000000121f2c3845525f6b7885929eabada194877a6e6154473b2e211408000000000000000000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99a6aea195887b6e6255483b2f221508000e1b2835414e5b6874818e9ba7afa396897c706356493d414e5b6874818e9ba7afa396897c706356493d3023160a000000000911171d2124252d2d2d2d2d2d2524221d181109000000000000000000010a12191e2325262d2d2d2d2d2d2524211d17110900000000000000070f161b202223262835414e5b6874818e9b9e9184786b5e5145382b262625221e18110a0100000005111d29343f485056586060605f53514b485056586060605f53514b43485056586060605f53514b43392f23180c00000000000000000000000000000003090e151b1f2222272a2b2c2c2c2a282521201d1913171c1f2024292b2c2c2a2821211e1a140d0500000000000000000000000000030d151d23292c2d31302d28221a1209010000000000000000000000000009111921272c2f302d2b28231c140c02000000000000000815212e3b4854616e7b86868686868686867a6d6154473a2e21140700030f1b27323c464e54556060606060605f5d574950565d6065686b6c6c6b6a64615a5045392d211408000000030c141b212528292d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d292826211b140c0400000000000000000000000000000007131f2c38434e5865727e8b98a2aeab9e9184786c6053463b30251a0e00000000000000000000000000000000000814212e3a47535f6a7683909ca9aea2988b7f7265594f43382c1f1307000000000000000000000000000000000001070c10131417191b1d1e1f20201f1f1e1c1a171413110d0804010000000000000000000000000000000000000000040a0f13151620202020202020181715110c060000000000000000000000000000000000000000000000000000000000000000000000000000040d151c2226292a2d2d2a2926221c150d04000000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130600000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013060000000000000000000000000000000000000000000000000b1825313e4a56626d7279797979726d62564a3d3124180b00000000000000000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000000000000000000000000000000000000000006111c28343f4a54606c7883909da6a1968c7f72685d52453b31261a0c0300000000000000000000121f2c3845525f6b7885929eabada194877a6e6154473b2e211408000000000000000000000000000000000000000000000000000000000000000d1a2734404d5a6773808d9aa6aea295887b6f6255483c2f221509000f1b2835424e5b6875818e9ba8b0a396897d7063564a3d424e5b6875818e9ba8b0a396897d7063564a3d3023170a00000009121b22292d303139393939393932312e29231b120900000000000000000a131c242a2f323339393939393931302d29221b120900000000000000040b0f1315161b2835414e5b6874818e9b9e9184786b5e5145382b1e191816120d0700000000000915212e3a45505a62656c6c6c6c605c55505a62656c6c6c6c605c554b505a62656c6c6c6c605c554b4034291c100400000000000000000000000000060e141a20262b2e2f3336383939383735322e2d2a251e22282b2d313638393937342e2d2a251f170f0500000000000000000000000000030b12181c1f202423211c17100800000000000000000000000000000000080f161c202223201f1c17110a0200000000000000000714202d3a46525e6976797979797979797976685e5246392d20130700000a15202b343c43474953535353535352514c3f444c5254585b5e5f5f5f5d575550483e33281d11050000020c151e262c3134353939393939393939393939393939393939393939393939393939393939393939393635322d261e160c030000000000000000000000000000030f1b27323d4754606d7a85929facaca1968a7d7063574d42362a1c110600000000000000000000000000000004101c2934404b55626e7b88949fabac9f92867a6d6054473d32271b0f03000000000000000000000000000000050b1012181c1f202326282a2b2c2c2c2c2c2a29272421201d1913100d07010000000000000000000000000000000000060e151b1f21222d2d2d2d2d2d2d2524211d171109000000000000000000000000000000000000000000000000000000000000000000000000030d161f272d32353639393635322d271f160d030000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130600000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013060000000000000000000000000000000000000000000000000c1925323f4c5865727f868686867f7265584b3f3225180c00000000000000000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000000000000000000000000000000000b17232e3844505b66707d89949fa89e92857a6d60574d42362a1e150a00000000000000000000121f2c3845525f6b7885929eabada194877a6e6154473b2e211408000000000000000000000000000000000000000000000000000000000000000e1b2734414e5a6774818d9aa7afa295887c6f6255493c2f221609000f1c2835424f5b6875828e9ba8b0a3968a7d7063574a3d424f5b6875828e9ba8b0a3968a7d7063574a3d3024170a000006111b242d34393d3e4646464646463f3d3a342d241b0b02000000000000030d1c252e353b3f404646464646463e3d39342d241b110600000000000000000307090e1b2835414e5b6874818e9b9e9184786b5e5145382b1e120b0906010000000000000b1724313d4a56626c71797979796d675c56626c71797979796d675c5156626c71797979796d675c5145382c1f1306000000000000000000000000080f181f262a32373b3c40434546464544423e3a3936302a2d3338393e4245464544413b3a36312921170d030000000000000000000000000001070c101314171714110c05000000000000000000000000000000000000050b101316171312100b060000000000000000000005121e2a36424d575e6c6c6c6c6c6c6c6c6c6c5e564c41362a1d11050000040f19222b32373b3c464646464646454441333a4145474b4f51525352504b49453e362c22170c00000009141e2730373d414246464646464646464646464646464646464646464646464646464646464646464643413e3830281e140a0000000000000000000000000000000a16202c3945515d6774818e9aa7b1a89b8f8275695e5246382e23170b00000000000000000000000000000006131f2c3845515c6774808d9aa6b0a79b8e8174685d5245392b21160a0000000000000000000000000000040b10161c1d23292c2d30333537383839393938373633312e2d2a25201d18120b0600000000000000000000000000000006101820262b2e2f3939393939393931302d29221b120900000000000000000000000000000000000000000000000000000000000000000000000a151f2831383e4243464643423e3831281f150a0000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130600000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013060000000000000000000000000000000000000000000000000c1926323f4c5965727f8c93938b7f7265584c3f3225190c00000000000000000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000000000000000000000000000000000000000006111c28333f4a54616b76828f99a4a1978d8073695f53463d30261c1106000000000000000000121f2c3845525f6b7885929eabada194877a6e6154473b2e211408000000000000000000000000000000000000000000000000000000000000000e1b2834414e5b6774818e9aa7afa295897c6f6256493c2f231609000f1c2936424f5c6975828f9ca8b0a3978a7d7064574a3d424f5c6975828f9ca8b0a3978a7d7064574a3d3124170a00010c17222d363f45494b5353535353534b4a453f372d1d140a0000000000010b151f2e3740474b4d5353535353534b49453e362d22170c00000000000000000000020e1b2835414e5b6874818e9b9e9184786b5e5145382b1e12050000000000000000000b1825323e4b5865717e86868686796d605865717e86868686796d60535865717e86868686796d6053473a2d20140a0000000000000000000000081119212a31363c4347494d5052525352514e4b4746413a36383f44464b4f525352514e4846423b33291f1409000000000000000000000000000000000406070b0a0805000000000000000000000000000000000000000000000407090a070603000000000000000000000000020e1a25303b454d525f60606060606060605f524c443a3025190d0100000007101920272b2e2f393939393939393835272f35393a3f4244454645433e3d39332c241a1006000004101b26303942494d4f535353535353535353535353535353535353535353535353535353535353535353504e49423a30261b1005000000000000000000000000000004111d2935414b55626f7c88959fabac9f92877b6e61544a3f34281c100300000000000000000000000000000714202d3a4753606d7985929eabaca095897c6f63564c413529190f0400000000000000000000000000060b161b21282c2f34383a3d3f42444445464646454442403e3a3936302c29241d17110a02000000000000000000000000040e18222a32373b3c464646464646463e3d39342d241b110600000000000000000000000000000000000000000000000000000000000000000005111c27313a434a4e505353504e4a433a31271c110500000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130600000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013060000000000000000000000000000000000000000000000000c1926333f4c5966727f8c99988c7f7265594c3f3226190c00000000000000000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000000000000000000000000000000000000000000000b17222d38424f59626f7c87939fa99f92867b6e61594f42382e23170c020000000000000000121f2c3845525f6b7885929eabada194877a6e6154473b2e211408000000000000000000000000000000000000000000000000000000000000000e1b2835414e5b6874818e9ba7afa396897c706356493d3023160a00101c2936434f5c6976828f9ca9aca4978a7d7164574a3e434f5c6976828f9ca9aca4978a7d7164574a3e3124170b0005111d29343f48505658606060606060585651493f2f261b11060000000007121d27314049525759606060606060585650483e34291d1105000000000000000205070e1b2835414e5b6874818e9b9e9184786b5e5145382b1e12050000000000000000000a1723303d4a5663707d8993988a7d70635763707d8993988a7d7063575663707d8993988a7d7063574a3d31261b0f03000000000000000000060f19232b333b42464e54555a5d5e5f5f5f5d5b5854524c4641424a5053575c5e5f5f5d5b54534d453b31251a0e020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141f29333b42464853535353535353535346413a32281e13080000000000070f151b1f22222d2d2d2d2d2d2c2b281e24292c2d3235383939383731302d28221a12080000000915212c37424b54595c6060606060606060606060606060606060606060606060606060606060606060605c5a544c42382d2115090000000000000000000000000000010d18242f3a47535f6a7683909da9afa3998c7f73665c5044382b1f14090a0a0a0a0a0a0a0a0a0a0a0a0a0a121f2b37434e5864717e8b97a2adaa9d9083776b6054443a2f241907000000000000000000000000020a111721272c3338394045474a4c4e50515253535252514f4d4a4746413a39352f28231c140c0600000000000000000000000a15202a343c434749535353535353534b49453e362d22170c0000000000000000000000000000000000000000000000000000000000000000000a16222d38434c545a5d60605d5a544c43382d22160a00000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130600000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013060000000000000000000000000000000000000000000000000d192633404c5966737f8c99998c7f7266594c3f3326190c00000000000000000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000000000000000000000000000000000006111c262f3d47535f6a74818e97a2a3988e82756b60544a3f34281f14090000000000000000121f2c3845525f6b7885929eabada194877a6e6154473b2e211408000000000000000000000000000000000000000000000000000000000000000f1b2835424e5b6875818e9ba8b0a396897d7063564a3d3023170a00101d293643505c6976838f9c9f9f9f978b7e7164584b3e43505c6976838f9c9f9f9f978b7e7164584b3e3125180b000815212d3945505a62646c6c6c6c6c6c65625b5141382d22170b000000000c18232f3943525b63666c6c6c6c6c6c64625a5045392d211508000000000002090e1114141b2835414e5b6874818e9b9e9184786b5e5145382b1e12050000000000000000000815222f3b4855626e7b88959a8d81746758626e7b88959a8d8174675855626e7b88959a8d817467584e43372b1f12060000000000000000030e18222b353d454d53585f6266696b6c6c6b6a6865615e56524c4c545b6064696b6c6c6a67615e574d42362a1e1205000000000000000000000000000000010406070b0e101213131312100e0b07060401000000000000000000000000000000000000000000000000000000000000020d17212930363a3b4646464646464646463936302820160c02000000000000040a0f1315162020202020201f1e1c13191d202125282b2c2c2c2a2423211d171008000000000c1925313d49545d65686c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c69665e54493e3226190d00000000000000000000000000000007131d2b37434e5864717e8b97a2adab9e9184786d6053463b31251a16161616161616161616161616161616212e3a47535f6a7683909ca9aea2988b7f7265594f4332281e13080000000000000000000000030b141c222832383e44484b515356595b5d5e5f5f5f5f5f5d5c5a5754524c47454039342e261e170f07000000000000000000030f1b26323c464e535560606060606060585650483e34291d110500000000000000000000000000000000000000000000000000000000000000000d1a26323e4a545e66696c6c69665e544a3e32261a0d00000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130600000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013060000000000000000000000000000000000000000000000000d1a2633404d596673808c99998c7f7366594c403326190d00000000000000000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000000000000000000000000000000000000000000000a141d2b37434e58616d7a85929fa79e93897d70665c50443b30251a0d0300000000000000121f2c3845525f6b7885929eabada194877a6e6154473b2e211408000000000000000000000000000000000000000000000000000000000000000f1c2835424f5b6875828e9ba8b0a3968a7d7063574a3d3024170a00101d2a3643505d6976839093939393938b7e7165584b3e43505d6976839093939393938b7e7165584b3e3225180b000b1724303d4956626c71797979797979726d6253493f33271b0f03000004101c2934404b55636e73797979797979716c6256493d3024170a00000000050d14191e2021272835414e5b6874818e9b9e9184786b5e5145382b1e12050000000000000000000714202d3a4753606d7a86979e9184786a5f606d7a86979e9184786a5f53606d7a86979e9184786a5f53473a2e21150800000000000000000a15202a343d474f575f616a6f7376787979787775716d68615e56565d666c717578797877746e695e53463a2d2114070000000000000000000000000001070d111314181b1d1f1f201f1f1d1b181413110d07010000000000000000000000000000000000000000000000000000000000050f171f252a2d2e39393939393939392e2d2a251e160e0500000000000000000003060809131313131313121210080d111314181c1e1f201f1d181714110c0600000000000e1b2834414d59656f757979797979797979797979797979797979797979797979797979797979797979797670665a4e4135281c0f000000000000000000000000000000010f1b26323c4753606d7985929fabada1968a7d7063574d42362a23232323232323232323232323232323232934404b55626e7b88949fabac9f92867a6d6054473d3221160c0100000000000000000000030c151d262d333d44484f55555c606366686a6b6b6c6c6c6b6a696664615e5653514b443f38302921191007000000000000000006131f2b37434e585f626c6c6c6c6c6c6c64625a5045392d21150800000000000000000000000000000000000000000000000000000000000000000f1c2935424e5a66707679797670665a4e4235291c0f00000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130600000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013060000000000000000000000000000000000000000000000000d1a2733404d5a6673808d99998c807366594d4033261a0d00000000000000000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000000000000000000000000000000000000020b1b26323c46525e68727f8c95a0a59d9083786d60574d42362a1f150b01000000000000121f2c3845525f6b7885929eabada194877a6e6154473b2e211408000000000000000000000000000000000000000000000000000000000000000f1c2936424f5c6975828f9ca8b0a3978a7d7064574a3d3124170a00101d2a3743505d6a7683868686868686867f7265584b3f43505d6a7683868686868686867e7265584b3f3225180c000b1825313e4b5864717e8686868686867f72655b5044372b1f150a000006131f2c3845515c6773808686868686867e7164584b3e3125180b000000050e171f252a2d2e342d35414e5b6874818e9b9e9184786b5e5145382b1e120500000000000000000006131f2c3945515d677885929e96887b6f625d677885929e96887b6f62555d677885929e96887b6f6255483c3025190d01000000000000020f1a26313c464f5960696e767c80838585868583817e7a746d68605d686d787e8285868584817b6e6154483b2e211508000000000000000000000002080e13181d202024272a2b2c2d2c2b2a272421201d18130e090300000000000000000000000000000000000000000000000000000000050d141a1e20212d2d2d2d2d2d2d2d21201d19130c05000000000000000000000000000006060606060606050300010406070c0f11121312100b0a0805000000000000000f1c2935424f5c6875828686868686868686868686868686868686868686868686868686868686868686868276695c504336291d10000000000000000000000000000000000a151f2c3845515d6774808d9aa6b0a89c8f8275695e5346382e3030303030303030303030303030303030303845515c6774808d9aa6b0a79b8e8174685d5245392c20130400000000000000000000000b151e272f383f444f54596163676d70727577777879797978777573716d6865605d55504a423b332a22190f06000000000000000815212e3b47535f6a7679797979797979716c6256493d3024170a0000000000000000000000000000000000000000000000000000000000000000101d2a3643505d69768386868376695d5043362a1d1000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130600000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013060000000000000000000000000000000000000000000000010d1a2734404d5a6773808d9a998d8073665a4d4033271a0d00000000000000000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000000000000000000000000000000000000000a15202a36414c56606d7883909aa4a0958c7f72695e52463e31271d1207000000000000121f2c3845525f6b7885929eabaca194877a6e6154473b2e21140800000000000000000000000000000000000000000000000000000000000000101c2936434f5c6976828f9ca9aca4978a7d7164574a3e3124170b00101c2936424f5b66717679797979797979726d62564a3d424f5b66717679797979797979726d62564a3d3124180b000713202d3a4653606d7984919393939184786c6053463c31261a0f02000714202d3a4753606d7985929393939184796d6053463a2d2013070000020d17202930363a3b413a38414e5b6874818e9b9e9184786b5e5145382b1e120500000000000000000004101d2935404b556a7783909d998c7f7266566a7783909d998c7f726656556a7783909d998c7f7266564c41362a1d110500000000000006121f2b37434e58606b707b82888d9091929292908e8b86817a706b606d7a828a8f91929290897d7063564a3d3023170a00000000000000000000050d14191d24292c2d31343738393939383634312d2c29241d1a140d050000000000000000000000000000000000000000000000000000000002090e12141520202020202020201413110d080200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2935424f5c6875828f939393939393939393939393939393939393939393939393939393939393938f8276695c504336291d100000000000000000000000000000000004101d2935404b55626e7b88949fabac9f93877b6e61544a3f3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d4753606d7985929eabaca095897c6f63564c4135291d11040000000000000000000007121d273039424a505960636b7075797d7f81838485868685858482807d7a76716d67605c544d453c342a21180c030000000000000916222f3c4955626f7c868686868686867e7164584b3e3125180b0000000000000000000000000000000000000000000000000000000000000000101d2a3643505d69768390908376695d5043362a1d1000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130600000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013060000000000000000000000000000000000000000000000010e1a2734414d5a6774808d9a9a8d8073675a4d4034271a0d01000000000000000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000000000000000000000000000000000000000000000000040d1925303a44515c666f7d88939fa79f92867b6e61594f43392f24180c020000000000121f2c3845525f6b7885929e9f9f9f94877a6e6154473b2e21140800000000000000000000000000000000000000000000000000000000000000101d293643505c6976838f9c9f9f9f978b7e7164584b3e3125180b000e1a26323e4a555f666a6c6c6c6c6c6c6c65625b51453a3e4a555f666a6c6c6c6c6c6c6c65625b51453a2e2215090006131f2c3845515c66727f8c97a2a0958a7d7063584e43372b1e13080714202c38444f5965717e8b97a1a2978c7f72665c5144382c1f1206000009141f29323b4246474d4745404e5b6874818e9b9e9184786b5e5145382b1e1205000000000000000000000c18242f424f5c6875828f9b9c908376685e6875828f9b9c908376685e5c6875828f9b9c908376685e5246392d2013070000000000000814212e3a47535f6a707d858f94999c9e9f9c9b9c9b98928e857d706b75828f949c9e9f9f96897d7063564a3d3023170a000000000000000000080e171e252a2f35393a3e4143454646464543413e3a39352f2a251f170f09000000000000000000000000000000000000000000000000000000000002050708131313131313131307070501000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2935424f5c6875828f9b9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9c8f8376695c504336291d1000000000000000000000000000000000000c18242f3947535f6a7683909ca9afa4998c8073665c504949494949494949494949494949494949494949494e5864717e8b97a2adaa9d9083776b6054443a2f24190d01000000000000000000040e18232e39434b545b606b70767d8185898c8e90919292929292908f8d8a86837e79726d665f574e463c332a1e150b0000000000000916222f3c4955626f7c8893939393938b7e7164584b3e3125180b0000000000000000000000000000000000000000000000000000000000000000101d2a3643505d69768390908376695d5043362a1d1000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130600000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013060000000000000000000000000000000000000000000000010e1b2734414e5a6774818d9a9a8d8074675a4d4134271a0e01000000000000000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000000000000030709090c0c0c0c0c0c0c0c0c0c0c0c0c0c08131e2834404a54606b74818e97a1a2988e81756b61554b4035291e140a0000000000121f2c3845525f6b7885929393939393877a6e6154473b2e21140800000000000000000000000000000000000000000000000000000000000000101d2a3643505d6976839093939393938b7e7165584b3e3225180b000a16222d38434d555b5d60606060606060585651493f3438434d555b5d60606060606060585651493f34291d11050004101c2834404b54606d7a85929fa89c8f82766a5f53473a3025190d0916232f3c4855606b7783909da99f92857a6d60544a4034281c100400020e1925303b444d52545a53514b4e5b6874818e9b9e9184786b5e5145382b1e120500000000000000000000071a2734414d5a6774808d9a9f93867a6d616774808d9a9f93867a6d615a6774808d9a9f93867a6d6154473a2e23180c000000000007131f2c38434e58626e7c8692989fa29f97928f8e8f9196999792877d707d89949ea69e989291897d7063564a3d3023170a00000000000000010a121a202930363a4045474b4e505252535252504e4b4745413a363029211b120a0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2935424f5c6875828f939393939393939393939393939393939393939393939393939393939393938f8376695c504336291d10000000000000000000000000000000000007121d2b37434e5864717e8a97a1adab9e9184796d6056565656565656565656565656565656565656565656565f6a7683909ca9aea2988b7f7265594f4332281e1308000000000000000000020c16202834404b555c666c737d838a8e9298999b9d9e9e9f9f9f9e9d9c999993908b857f786e695f584e453c30271d120700000000000916222f3c4955626f7c88959f9f9f978b7e7164584b3e3125180b0000000000000000000000000000000000000000000000000000000000000000101d2a3643505d69768390908376695d5043362a1d1000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130600000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013060000000000000000000000000000000000000000000000010e1b2834414e5b6774818e9a9a8d8174675a4e4134271b0e01000000000000000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000040b0f1315161919191919191919191919191919191918232e39424f59616d7a85929ea69e938a7d70675d51453c30261c110600000000121f2c3845525f6b7885868686868686867a6e6154473b2e21140800000000000000000000000000000000000000000000000000000000000000101d2a3743505d6a7683868686868686867e7265584b3f3225180c0005111c27313b434a4f50535353535353534b4a453f372d313b434a4f50535353535353534b4a453f372d23180c0100000c18232e3945515d6773808d98a39f94887c6f62564c41362a1c12121f2b37434e5863707d8995a0a3988c8073675d5142392e23180c000005111e2a36424d565e6167605c554e5b6874818e9b9e9184786b5e5145382b1e1205000000000000000000000c1926323f4c5965727f8c98a4998b7e716465727f8c98a4998b7e71645465727f8c98a4998b7e7164544a4034281c1004000000000915222e3b4854606a76828f98a2a298928b8583828284878c929792857b818e9aa69e948f8684867d7063564a3d3023170a000000000000000a131c242c323b41464b5153575a5d5e5f605f5e5d5a5754514b46423b332d241c140a01000000000000000000000000000000000000000000000000000106090b0c13131313131313090806030000000000000000000000000003060809131313131313130b0b0905010000000000000000000000000000000000000000000f1c2935424f5c6875828686868686868686868686868686868686868686868686868686868686868686868376695c504336291d100000000000000000000000000000000000010f1a26313c4653606d7985929eacada1968a7d70646363636363636363636363636363636363636363636363636e7b88949fabac9f92867a6d6054473d3221160c0100000000000000000008131e28323a45515c676d78808990959b9fa2aaaba39f9d9d9c9d9ea1a9aba49f9d97928b837b6f6a5f574d42392e23180c02000000000916222f3c4955626f7c8895a2aca4978b7e7164584b3e3125180b0000000000000000000000000000000000000000000000000000000000000000101d2a3643505d69768390908376695d5043362a1d1000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130600000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013060000000000000000000000000000000000000000000000020e1b2835414e5b6874818e9b9a8e8174675b4e4134281b0e01000000000000000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000000070f161b20222325252525252525252525252525252525252527303d46525e68717e8a949ea59e9184796d60584e42382e23170b02000000111e2b3744505d6873787979797979797976685e5246392d20140700000000000000000000000000000000000000000000000000000000000000101c2936424f5b66717679797979797979726d62564a3d3124180b00000a151f2931383e4243464646464646463f3d3a342d242931383e4243464646464646463f3d3a342d241b110600000007121d2935414c55616e7b86929fa69a8e8174685e5246392e231814212e3a47535f6a76828f9ca79f92867a6d61554b4030271c120700000714202d3a46525e696e746d675f585b6874818e9b9e9184786b5e5145382b1e1205000000000000000000000b1724313e4a5764717d8a97ab9b8e82756664717d8a97ab9b8e8275665c64717d8a97ab9b8e8275665c5144382c1f1206000000000916232f3c4956626f7c89949fa79f92867e79767576777b7f858f948f8283909daa9c8f82797779796d6053473a2d20140700000000000009121c252e363e444c52555d6064676a6b6c6c6c6b696764605d55524d453f362e261c1309000000000000000000000000000000000000000000000000060d12161819202020202020201615130f0a04000000000000000000040a0f13151620202020202020181715110c0600000000000000000000000000000000000000000e1b2834414d59656f757979797979797979797979797979797979797979797979797979797979797979797670665a4e4135281c0f00000000000000000000000000000000000009151f2c3845515c6673808d9aa4afa99c8f82757070707070707070707070707070707070707070707070707074808d9aa6b0a79b8e8174685d5245392c201304000000000000000000010d1925303a44515b606d79828d929d9fa7a8a19e999992919090919297979b9fa4a9a19e9590857c6f695f544b4034281e1408000000000916222f3c4955626f7c8895a2afa4978b7e7164584b3e3125180b0000000000000000000000000000000000000000000000000000000000000000101d2a3643505d69768390908376695d5043362a1d1000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130600000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013060000000000000000000000000000000000000000000000020f1b2835424e5b6875818e9b9b8e8174685b4e4135281b0e02000000000000000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000007111921272c2f30323232323232323232323232323232323232323235414c56616c75828f98a2a1968d80736a5f544a3f34281d140a0000000f1c2834404c5761686b6c6c6c6c6c6c6c6c5e564c41362a1e1105000000000000000000000000000000000000000000000000000000000000000e1a26323e4a555f666a6c6c6c6c6c6c6c65625b51453a2e2215090000030d171f272d3236373939393939393932312e29231b1f272d3236373939393939393932312e29231b120900000000000d19242f3a46525e6874818e9aa49f92867a6d61544a4034281c1d2a36414c56626e7b88949fa3998d8174685e52433a2f1e150b0000000814212e3b4754616e7b80796f6a605b6874818e9b9e9184786b5e5145382b1e1205000000000000000000000916232f3c4956626f7c8995ab9f9285796d626f7c8995ab9f9285796d60626f7c8995ab9f9285796d6053463a2d201309000000000d1a2733404d5a6673808d99a69f958a7d716d666869696e737a828e938f90959fa298887b6f676d6d675c5145382c1f13060000000000050f1b242e37404850565e61676d71747678797979787674716d67615e57504840382e251b0f06000000000000000000000000000000000000000000010911181e2224252d2d2d2d2d2d2d23221f1b160f0700000000000000070f161b1f22232d2d2d2d2d2d2d2524211d171109000000000000000000000000000000000000000c1925313d49545d65686c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c69665e54493e3226190d00000000000000000000000000000000000004101c2834404b54616e7b87939facac9f93877d7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7c7d85929fabaca095897c6f63564c4135291d110400000000000000000005111d2935414c56626d75818e949ca4aba39f96918c88868483838485878a8f939a9fa7a79f9791857b6e665c51453b3025190d000000000916222f3c4955626f7c8895a2afa4978b7e7164584b3e3125180b0000000000000000000000000000000000000000000000000000000000000000101d2a3643505d69768390908376695d5043362a1d1000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130600000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013060000000000000000000000000000000000000000000000020f1c2835424f5b6875828e9b9b8e8175685b4e4235281b0f02000000000000000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000040f19232b32383b3c3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f44505a616e7b86929fa69f92877c6f665c50443c2f261b110600000c18242f3b454f575d5f606060606060605f524c443b3025190e02000000000000000000000000000000000000000000000000000000000000000a16222d38434d555b5d60606060606060585651493f34291d1105000000040d151c2226292a2d2d2d2d2d2d2d2524221d1811151c2226292a2d2d2d2d2d2d2d2524221d18110900000000000008131e2a36414d56626e7b87939fa3988c7f73665c5144382c1f202d3946525e6874818e9aa69f92877b6e61564c4131281d0c030000000815212e3b4854616e7b87837c726c656874818e9b9e9184786b5e5145382b1e1205000000000000000000000814212e3b4754616e7a8799a3a297897c70636e7a8799a3a297897c7063616e7a8799a3a297897c706356493d31261a0e02000000101d293643505c6976838f9ca99d9083766c605c54575e61686d78818e949d9fa79f9285796a5f60605c554b4034291c100400000000030d17212d364049515a61686e747a7e8183858586858583817e7a746e69625a524a40372d21180e03000000000000000000000000000000000000000009131b23292e3132393939393939392f2e2b2720191007000000000007101920272b2e2f3939393939393932312e29221b12090000000000000000000000000000000000000915212c37424b54595c6060606060606060606060606060606060606060606060606060606060606060605c5a544c42382d211509000000000000000000000000000000000000000c18232e3946535f6976828f9ca9afa499938a89898989898989898989898989898989898989898989898989899297a2adaa9d9084776b6054443a2f24190d010000000000000000000713202d3946525e68727f8b939ea6aba399928c84807c7977767677787a7e828790959ea5a9a1979083796d60564c41362a1c11060000000916222f3c4955626f7c8895a2afa4978b7e7164584b3e3125180b0000000000000000000000000000000000000000000000000000000000000000101d2a3643505d69768390908376695d5043362a1d1000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130600000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013060000000000000000000000000000000000000000000000020f1c2935424f5c6875828f9b9b8e8275685b4f4235281c0f02000000000000000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000000000000000203101d2a3643505d69768390908376695d5043362a1d10030200000000000000000b16212b353d4448494c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c525e69727f8b949fa3999083786d60574d41382d22170b000007131e29333d454c5052535353535353535346413b32291e1408000000000000000000000000000000000000000000000000000000000000000005111c27313b434a4f50535353535353534b4a453f372d23180c0100000000030a11161a1c1d20202020202020181815110c060a11161a1c1d20202020202020181815110c0600000000000000010e1925303b47535f6975828f9ba69e9184796d6053463d32272834404b55616d7a86929fa69b8e8175695f53443a301f160c000000000815212e3b4854616e7b8790867f776e6974818e9b9e9184786b5e5145382b1e1205000000000000000000000613202d394653606c7986929fa99a8d8073676c7986929fa99a8d807367606c7986929fa99a8d807367574d42372b1e1206000000111e2b3744515e6a7784919da6998d80736659504a4d52565e666d78829099a3aa9e9184776b585353514b43392f23180c000000000009141f29333f48515b636c717a80868a8d909192939291908d8a86817b716d645c52493f332a2015090000000000000000000000000000000000000009121b252d343a3e3f464646464646463c3b38322b22190f04000000040f19222b32383b3c464646464646463e3d3a342d241b1108000000000000000000000000000000000004101b26303942494d4f535353535353535353535353535353535353535353535353535353535353535353504e49423a30261b10050000000000000000000000000000000000000007121d2a36424d5764707d8a96a1adaba49f9796969696969696969696969696969696969696969696969696969fa2a9aea2988b7f7265594f4332281e130800000000000000000003101c28343f4a54616d7a85929fa5aea39992877f79736f6d666a696a686e71757c838f939ea7a9a0958c8073685e5246382d22170b0000000916222f3c4955626f7c8895a2afa4978b7e7164584b3e3125180b0204050606060504020000000000000000000000000000000000000000000000101d2a3643505d69768390908376695d5043362a1d1000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130600000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013060000000000000000000000000000000000000000000000030f1c2936424f5c6975828f9c9b8f8275685c4f4235291c0f02000000000000000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000050a0f12101d2a3643505d69768390908376695d5043362a1d10120f0a050000000000030f1b27323d474f54565858585858585858585858585858585858585858585858585857606c77828f97a2a0958c7f72695f53493f33271b0f0300020d17212b333b404445464646464646463b3936302920170d020000000000000000000000000000000000000000000000000000000000000000000a151f2931383e4243464646464646463f3d3a342d241b110600000000000000050a0e1010131313131313130c0b0905010000050a0e1010131313131313130c0b09050100000000000000000008141f2b37424d57626f7c89949fa1978a7e7164594f44382c2c3845515c67737f8c98a39f94887c6f62574d4232291e0d04000000000815212e3b4854616e7b8798928c827b7174818e9b9e9184786b5e5145382b1e12050000000000000000000005121f2b3744505b657784919eaa9d91847769657784919eaa9d918477695f657784919eaa9d918477695f53473a2d211408000000121e2b3845515e6b7884919ea5988b7e7265584b3f42464c545c666f7c87929faa9d9084776a5d514745403931271d120700000000020e1a25313b45505a636d737e858d92989a9d9a9998999a9c9a98928d867e736e645b51463c31261a0f04000000000000000000000000000000000008111a242d373f464a4c535353535353534947433d342b20160a0000000a16202b343d434749535353535353534b4a453f362d241a1107000000000000000000000000000000000009141e2730373d414246464646464646464646464646464646464646464646464646464646464646464643413e3830281e140a0000000000000000000000000000000000000000000e1a26313b4653606d7984919eabb5afaca3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3abadb3ac9f92867a6d6054473d3221160c0100000000000000000006121f2b3844505c6673808d97a2aba79f92877d726d6762605c545d565e61646a6f79818f95a0aba79f92867a6e61544a3f33281c0f0300000916222f3c4955626f7c8895a2afa4978b7e7164584b3e3125180c0e101213131312100e0b08070502000000000000000000000000000000000000101d2a3643505d69768390908376695d5043362a1d1000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130600000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c201306000000000000000000000000000000000000000000000003101c2936434f5c6976828f9c9c8f8275695c4f4236291c0f03000000000000000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000000010910161b1e20202a3643505d69768390908376695d5043362a20201e1b161009010000000713202c38444f596063656565656565656565656565656565656565656565656565656565656e7b85929fa79f92867b6e655b5044372b1f12050000060f1921292f343738393939393939392e2d2a251e170e0500000000000000000000000000000000000000000000000000000000000000000000030d171f272d3236373939393939393932312e29231b12090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1a26313c4854606a7683909ca79d9083776b6054483b312d3a4653606d7985919ea79c8f82766a5f54453b3120170d00000000000815212e3b4854616e7b879298948f857e74818e9b9e9184786b5e5145382b1e120500000000000000000000030f1b27333f49536976838f9ca9a096887b6e6976838f9ca9a096887b6e616976838f9ca9a096887b6e6155483b2f24190d010000111e2a3744515d6a7784909da5988b7f7265544a413d3b424b545f6a75828f9ca89d9084776a5d514438342f271f150b010000000005121e2a36424d57626c737f8a92979f9f97918e8c8b8c8e91969e9f98928b80736d62584e43372b21160b0000000000000000000000000000000007101a232c363f495156586060606060606056544e463d32271b0f0300030f1b27323d464e545660606060606060585650483f362c2319100700000000000000000000000000000000020c151e262c3134353939393939393939393939393939393939393939393939393939393939393939393635322d261e160c0300000000000000000000000000000000000000000009141f2c3844505c6673808c99a3afbbb9b1acaa9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9fa7a9afb8bab1a79b8e8174685d5245392c201304000000000000000000000713202d3a4653606d7985929b9d9e9f958b7e716b605c5553514a504c5254585f676d78839099a3aea2988c8073665b5044382b1f120600000916222f3c4955626f7c8895a2afa4978b7e7164584b3e312518191b1d1f1f201f1f1d1b181414110e080200000000000000000000000000000000101d2a3643505d69768390908376695d5043362a1d1000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130600000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c201306000000000000000000000000000000000000000000000003101d293643505c6976838f9c9c8f8276695c4f4336291c1003000000000000000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000010a131b21272b2d2d2d3643505d69768390908376695d5043362d2d2d2b27211b130a0100000915222f3b4854606b6f7272727272727272727272727272727272727272727272727272727272727e8b97a1a3989082776c605346392d201306000000070f171e24282b2c2d2d2d2d2d2d2d21201e19140d05000000000000000000000000000000000000000000000000000000000000000000000000040d151c2226292a2d2d2d2d2d2d2d2524221d181109000000000000000000000105070810101010101010101010101010101010101010101008070501000000000000000000000000000000000915202c38434e5863707d8a95a0a095897c6f63574d423638444f5964717e8b97a1a095897d7063584e43332a1f0e0500000000000613202d394653606c787f86909597928a81818e9b9e9184786b5e5145382b1e120500000000000000000000000b17222d414e5b6874818e9ba7a8988c7f726874818e9ba7a8988c7f72656874818e9ba7a8988c7f7265554c4135291d11040000101c2936434f5c6976828f9ca79a8d8074665c524c4a4847464e5865717e8b98a49d9084776a5d51443729231d150d0300000000000714212d3a46535e69717e8b919fa297928b85817f7f8081848a9196a09f928c7f726a5f53473d32271b10010000000000000000000000000000061019222c353e48515b62656c6c6c6c6c6c6c6260584e43382b1f13060006131f2b38434e5860626c6c6c6c6c6c6c65625a50483e352b22190f0600000000000000000000000000000000030c141b212528292d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d292826211b140c040000000000000000000000000000000000000000000003101c28343f4a54616e7b87929facb9b1a7a0939393939393939393939393939393939393939393939b9ea5afb8aca095897c6f63564c4135291d1104000000000000000000000a1623303d495663707c898c8e9092979083786c6059514b464440434146474e555d666f7c86929facaa9e9184786c605346392d20130600000916222f3c4955626f7c8895a2afa4978b7e7164584b3e31252225282a2b2c2d2c2b2a282521201e19140f0a040000000000000000000000000000101d2a3643505d69768390908376695d5043362a1d1000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130600000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c201306000000000000000000000000000000000000000000000003101d2a3643505d697683909c9c8f8376695c504336291d1003000000000000000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000009131c252c33373939393943505d69768390908376695d50433939393937332c251c13090000091623303c4956636f7c7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f85919eaa9f948b7f7265584b3f3225180c00000000060d13181c1e1f202020202020201414110e08020000000000000000000000000000000000000000000000000000000000000000000000000000030a11161a1c1d20202020202020181815110c0600000000000000000002080d1114141c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1414110d08020000000000000000000000000000030f1b27323d4653606c7884919da79b8f8275695f53463a3c4854606b7783909da89d9083776b6054463c3221180e00000000000006121f2b3844505b666c727c838c9299938e8e939e9e9184786b5e5145382b1e12050000000000000000000000061a2633404d596673808c99a6a99c8f82766773808c99a6a99c8f8276676673808c99a6a99c8f8276675d5145392c20130600000c1926333f4c5966727f8c99a59e9184796d605d5656555453505663707c8996a39d9084776a5d5144372a18120b03000000000006121f2b37434e58616e7b86929fa29792857e787473727374787d849095a09f92867c6e62594f44382c1e130800000000000000000000000000060f18222b343e47505a626d72797979797979796f6a6054473b2e221508000815222e3b4754606a6f79797979797979716c625a50473d342b21180f050000000000000000000000000000000002091015191b1c2020202020202020202020202020202020202020202020202020202020202020201d1c1915100a030000000000000000000000000000000000000000000000000c17232e3846525e6975828f9ca8b2aca095898686868686868686868686868686868686868686868e939ea9b4aa9d9084776b6054443a2f24190d01000000000000000000000814212e3b4754616e7b7e7f81838587887e71655b5045403a38343036393c434b545f6a75818e9baaada196897c6f6256493c2f23160600000916222f3c4955626f7c8895a2afa4978b7e7164584b3e312d2e32353738393939383735312e2d2a251f1b150d0701000000000000000000000000101d2a3643505d69768390908376695d5043362a1d1000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130600000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c201306000000000000000000000000000000000000000000000004101d2a3743505d6a7683909d9c908376695d5043362a1d1003000000000000000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000005101b252e373e434646464646505d69768390908376695d504646464646433e372e251b1005000e1b2734414e5a6774808b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b9197a1ada69b8e8175685b4f4235281c0f000000000002070c0f11121313131313131308070502000000000000000000000000000000000000000000000000000000000000000000000000000000000000050a0e1010131313131313130c0b090501000000000000000000050d14191e202129292929292929292929292929292929292929292921201e19140d0500000000000000000000000000000a161f2b3744505b65717e8b96a19f93877b6e61554c41424e5763707d8995a0a0968a7e7164594f44342a200f06000000000000030f1c28333f4a545b606a6e787f8690959b9b9ea59e9184786b5e5145382b1e120500000000000000000000000b1825323e4b5865717e8b98a4ac9f92867a6d717e8b98a4ac9f92867a6d65717e8b98a4ac9f92867a6d6054473a2d22170b00000915222f3c4855626f7c88939ea0968c7f746d6865636261605c5f626f7b8895a29d9084776a5d5144372a1e07010000000000000815212e3a47535f6a76828f98a29f92857b716c66666566656c707a839099a3989083766b6054483a2f24190d010000000000000000000000050e17212a343d474f59616c727f868686868686867c6f6256493c2f231609000916232f3c4956626f7c868686868686867e716c61594f463c332a21170e05000000000000000000000000000000000004090c0e0f131313131313131313131313131313131313131313131313131313131313131313100f0d0905000000000000000000000000000000000000000000000000000006111c2a36424d5763707d8a96a1acaa9d9083797979797979797979797979797979797979797979818e9ba7aea2988b7f7265594f4332281e130800000000000000000000000714202d3a46525e696e71737476787a7c796d6053493f46464544423f3b3a39424e5863707d8998a2aea8998c7f7266594c3f2d22170b00000916222f3c4955626f7c8895a2afa4978b7e7164584b3e373a3b3f4143454646464543413e3b3936302b272018130c040000000000000000000000101d2a3643505d69768390908376695d5043362a1d1000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130600000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c201306000000000000000000000000000000000000000000000004111d2a3744505d6a7783909d9d9083766a5d5043372a1d1004000000000000000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000a16212c3740494f5353535353535d69768390908376695d5353535353534f4940372c21160a000e1b2734414e5a6774818d9898989898989898989898989898989898989898989898989898989898989ea1a9b3a89b8e8175685b4f4235281c0f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e171e252a2d2e3636363636363636363636363636363636363636362e2d2a251e170e0500000000000000000000000000030f1b27333f4953606d7984919ea4998d8074675d514547535f6a75828f9ca79e9184786d6053463d3320190e00000000000000000b17222d38424a50585f666d727c838c9299a0a79e9184786b5e5145382b1e120500000000000000000000000a1723303d4a5663707d8996a3aea3998a7d71707d8996a3aea3998a7d7164707d8996a3aea3998a7d7164544a3f33281c0f03000815212e3a47535f6a75828f97a29c918c807a7572706e6d6d666c6c6f7b8895a29d9084776a5d5144372a1e1104000000000003101c28343f4a54626f7c88949fa0958a7e7169605b5458535b60686e7b86929f9f95897d7063564c4135291d110400000000000000000000040d172029333c464f59616b717e88939393939791847a6d6154473a2e211407000714212e3a4754616d7a84919793939392877e706b60584e453c332920160d0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a25303b4653606c7884919eabaca095897c6f6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6d7a86929facac9f92867a6d6054473d3221160c01000000000000000000000005111e2a36424d575e616466686a686d6f6d675d515152535352514e4c4847423c4653606c7885929faba89b8f82756853493f33271b0f03000916222f3c4955626f7c8895a2afa4978b7e7164584b3e4246484c4e505252535252504e4b4746413b373229241d160d0500000000000000000000101d2a3643505d69768390908376695d5043362a1d1000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130600000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c201306000000000000000000000000000000000000000000000004111e2a3744515d6a7784909d9d9083776a5d5044372a1d1104000000000000000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000f1b27333e49525a5f60606060606069768390908376696060606060605f5a52493e33271b0f000e1b2734414e5a6774818d9aa5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5abadb3aca89b8e8275685b4f4235281c0f00000000000000020507080c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0b0906010000000000000000000000000000000000000000000000020d1720293036393b4343434343434343434343434343434343434343433b3936302920170d02000000000000000000000000000b17222d3844515c66727f8c97a29f92857a6d60544a4c56626e7b87939fa1978b7e72665c5044382b1f1207000000000000000006111c262f383f444e545c606a6f788087909593939184786b5e5145382b1e120500000000000000000000000815222f3b4855626e7b8895a99f9f9b8e81746e7b8895a99f9f9b8e8174666e7b8895a99f9f9b8e8174665b5044382b1f12060006121f2b37434e58616e7b8592979f9c928d86827f7d7b7a79797978787c8895a29d9084776a5d5144372a1e1104000000000006121f2b3844505c6674818d9aa69d9083786c6057504a4c4950565f6974818d9aa79b8e8175685d5245392c201306000000000000000000030d161f29323b454e58606b707d87929aa4a29791857b6e685e5246392d201307000713202d3946525e686e7b859197a2a39992867d706a60574e453b32281f160c030000000000000000000000000000060a0e1011131313131313130b0a08080b0d0e131313131313130e0d0b07030000000000000000000000000000000000000000000000000000000000000000000000000000000009141f2b3844505b66727f8c99a3aea79a8d8174675c606060606060606060606060605765717e8b98a2aea79b8e8174685d5245392c201304000000000000000000000000020e1a25303b454d525457595b565d6062605d555c5e5f5f5f5f5d5b5955534d4644505b6576838f9ca9aa9e918477655b5044372b1f1205000916222f3c4955626f7c8895a2afa4978b7e7164584b464d5355585b5d5e5f605f5e5d5b5854524d47433d352f281f170f05000000000000000000101d2a3643505d69768390908376695d5043362a1d1000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130600000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c201306000000000000000000000000000000000000000000000004111e2b3744515e6a7784919d9d9084776a5d5144372a1e1104000000000000000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000121e2b37434f5a646c6c6c6c6c6c6c6c7683909083766c6c6c6c6c6c6c6c645a4f43372b1e12000e1b2734414e5a6774818d9a9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9b8e8275685b4f4235281c0f000000000003090e12141519191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191816120d070000000000000000000000000000000000000000000008141e29323b4146474f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4746413b32291e14080000000000000000000000000006111b2834404a54606d7a85929fa2988b7f72665b50525e6874818d9aa49e9285796d60544a3f34281c10030000000000000000000a141d262d333c424a50585f666d737c838686868684786b5e5145382b1e120500000000000000000000000714202d3a4753606d7a8697939393939285796d7a8697939393939285796c6d7a8697939393939285796c605346392d20130600030f1b26313c46535e696f7c858f949c9f98928f8c898887868685858584919eaa9d9084776a5d5144372a1e110400000000000713202d3a4653606d7885929fa9988b7f72655b50443f3f3f444d57626f7c8897a19f92867a6d6054473a2d2114070000000000000000030c151f28313b444d575f6a6f7d869299a3a29892857c6f695f564c4135291d11050005111d2935414c565f696f7c859298a2a39892867c6f6a5f574d443a31281e150c020000000000000000000000040b11161a1d1e2020202020202018171514171a1b202020202020201a1a17130e08010000000000000000000000000000000000000000000000000000000000000000000000000000030f1c28333f4a54616e7a86929facab9f9285796d60535353535353535353535353535f697683909caaaca095897c6f63564c4135291d11040000000000000000000000000009141f29333b4246474a4c4e4c52545c606366696b6c6c6c6b6a6865625f5753504a536773808d9aa6ac9f9286796c605346392d201306000916222f3c4955626f7c8895a2afa4978b7e7164585053575f6165686a6b6c6c6c6b6a6864615e56544e45403a312921170f050000000000000000101d2a3643505d69768390908376695d5043362a1d1000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130600000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c201306000000000000000000000000000000000000000000000005111e2b3844515e6b7784919e9d9184776a5e5144372b1e1104000000000000000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000013202d3946535f6c767979797979797979839090837979797979797979766c5f5346392d2013000e1b2734414e5a6774808d9393939393939393939393939393939393939393939393939393939393939393939393938e8275685b4f4235281c0f00000000060d141a1e2122262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262626262525221e1811090100000000000000000000000000000000000000010d1925303b444c52545c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c54524c443b3025190d01000000000000000000000000000c18232e3945515d6773808d98a39e9184786c605354616d7a86929fa2988c7f73675c5142382e23170b00000000000000000000020b141c222830383f444e545c606a6f77797979797872685c5043372a1d1104000000000000000000000006131f2c3945515d677885868686868686867c6f7885868686868686867c6f677885868686868686867c6f6256493c2f23160900000a15202a36424d57606a6f7b828a8f9299999b9896959499929292919196a1aa9d9084776a5d5144372a1e110400000000000915222f3c4855626f7c8897a2a197887b6e6153493f332d333b4653606c7985929ea399897d706356493d3023160a00000000000000020b151e27313a434c565f696f7c859298a2a39992867d6f6a5f574d443a3025190d0100010d1925303a444d575f6a6f7d869299a3a29892857c6e695e564c433a30271e140a00000000000000000000050d151c2227292a2d2d2d2d2d2d2d2524211f2426272d2d2d2d2d2d2d2726231f19120b0200000000000000000000000000000000000000000000000000000000000000000000000000000b17222d3846525e6875828e9ba8ada2978a7e7164574d42464646464646463f4a54626e7b88949fabaa9d9084776b6054443a2f24190d0100000000000000000000000000020d17202930363a3b404850565d60666d70737677787979787775726e6964605c545966727f8c99a5aea399877a6d6154473a2e211407000916222f3c4955626f7c8895a2afa4978b7e7164545c6064696e72747678797979787674716e68626058514b433b332921170d0300000000000000101d2a3643505d69768390908376695d5043362a1d1000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130600000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c201306000000000000000000000000000000000000000000000005121e2b3845515e6b7884919e9e9184776b5e5144382b1e1105000000000000000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000013202d394653606c798686868686868686909494908686868686868686796c605346392d2013000e1b2734414e5a67748086868686868686868686868686868686868686868686868686868686868686868686868686868175685b4f4235281c0f000000060f181f262a2d2e3232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232312e29231b13090000000000000000000000000000000000000005111e2a36414c565e61696969696969696969696969696969696969696969615e564c41362a1e11050000000000000000000000000007121c2935414b55616e7a86929fa0968a7d7064585c66737f8c98a29f92857a6d60554b4030261c11060000000000000000000000020a11171e262e343c424a51585f626a6c6c6c6c6b6860564b3f33271b0f02000000000000000000000004101d2935404b55687378797979797979796f6a7378797979797979796f6a687378797979797979796f6a6054483b2e2215090000030e1a25313b454e5860696e767d8286898c8e8f90909191919292929399a4aa9d9084776a5d5144372a1e110400000000000b1825323e4b5865717e8b98a99e928578695f5341382d222b3744505b6575828f9cab998c7f7266594c3f3326190c000000000000000a141d263039434c565e686e7b859197a2a49a92877d706b60584e453b32281e130800000008131e28323b454e58606b707d879299a4a19791847b6e685e554b433930261c11060000000000000000040d171f272e3336373939393939393931302d2b303334393939393939393433302b241d140b010000000000000000000000000000000000000000000000000000000000000000000000000006111c2a36414c5663707d8996a0aca99c8f8276695e5246382d393939393844505c6673808d99a6aea2988b7f7265594f4332281e1308000000000000000000000000000000050e171f252a38404a525a61686d73797d8082848586868584817f7b77716d66605865717e8b98a4b4ab94887b6e6155483b2e221508000916222f3c4955626f7c8895a2afa4978b7e716460666d71777b7f8183858586858583817e7b756f6a605d554d453b33291f150b01000000000000101d2a3643505d69768390908376695d5043362a1d1000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130600000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c201306000000000000000000000000000000000000000000000005121f2b3845525e6b7885919e9e9184786b5e5145382b1e1205000000000000000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000013202d394653606c7986939393939393939c9f9f9c9393939393939386796c605346392d2013000d1a26333f4c58646e747979797979797979797979797979797979797979797979797979797979797979797979797979756f65594d4034271b0e0000030d18212931363a3b3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3e3a342d251b11070000000000000000000000000000000000000714202d3946525e686e7676767676767676767676767676767676767676766e685e5246392d20140700000000000000000000000000000d18242f3a46525e6874818e99a49c9083766a60606d7984919ea3998d8073685d5243392f1e140a0000000000000000000000000000060c141c2328303940444e54555d606060605e5c564e443a2f23170b000000000000000000000000000c18242f39435761686b6c6c6c6c6c6c6c6260686b6c6c6c6c6c6c6c626061686b6c6c6c6c6c6c6c6260584e43382c1f130700000009141f29333c464e575f626c70757a7d7f8182838484848585858687939faa9d9084776a5d5144372a1e110400000000000e1b2734414e5a6774808d9aa79d9083766a574d422f261b27333f49536774808d9aa79b8f8275685c4f4235291c0f00000000000006111b262f38424b555d686e7a849197a1a49f93887e716b61594f463c332a20160c02000000020c16202a333c464f59616b717e87939fa3a19691847a6d675d554b42382e2317130a000000000000000b151f2931393f4244464646464646463e3d39363c3f4146464646464646413f3c362f261d120800000000000000000000000000000000000000000000000000000000000000000000000000000d1925303b4854606b7784919daaac9f93877b6e6153493f33272d2d2d3a4653606d7984919eabac9f92867a6d6054473d3221160c01000000000000000000000000000000020c16202c36404a525c646c717a8085898d8f9192929292908e8c88837e786f6a6264717d8a97a4aea195887b6e6255483b2f221508000916222f3c4955626f7c8895a2afa4978b7e71646a6f787e83888b8e909192939291908e8b86827c746d675e574d453b31271d1207000000000000101d2a3643505d69768390908376695d5043362a1d1000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130600000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c201306000000000000000000000000000000000000000000000005121f2c3845525f6b7885929e9e9185786b5e5245382b1f1205000000000000000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000013202d394653606c798689898989898989909595908989898989898986796c605346392d2013000b1724303c47525c64676c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c68655d53483d3125180c000009141f29333b4246484c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4a463f372d23180d0100000000000000000000000000000000000814212e3b4754616e7a8282828282828282828282828282828282828282827a6e6154473b2e211408000000000000000000000000000007131d2a36414c56626e7b87939f9f94887c6f6264717e8b97a19f92867b6e61564c4131271d0c02000000000000000000000000000000020a11171e272e343c434749515353535351504b443c32281d12070000000000000000000000000007121d2731454f575d5f6060606060606056545d5f606060606060605654575d5f6060606060606056544e463d32271b0f030000020e1a25313b454d5354575a6164686d7072747576777778787878797c8895a29d9084776a5d5144372a1e110400000000000f1c2936424f5c6975828f9ca89b8e8175685b4e42312817222d3f4c5865727f8b98a59d9083766a5d5043372a1d100000000000091217222d38414a545d676d7a839096a0a49c928b7f726c61594f473d342a21180e040000000000040e18212a343d464f59616c727f8b919ca4a0969083796d675c544a3f3428251c1209000000000006111c27313b434a4f51535353535353534b494541474c4e535353535353534d4c4740382f24190e030000000000000000000000000000000000000000000000000000000000000000000000000008141e2c38444f5965727f8c98a3aea4998c7f73655b5044372b1f2a36414c5663707d8a97a1ada79b8e8174685d5245392c2013040000000000000000000000000000000008131e28323e48525c646e737e858d9297999c9e9f9f9f9e9d9b9895908b847c726d64717d8a97a4aea295887b6f6255483c2f221509000916222f3c4955626f7c8895a2afa4978b7e716c717c838b9095989b9d9e9f9f9f9e9d9b99928f8781796e695e574d43392f23180c030000000000101d2a3643505d69768390908376695d5043362a1d1000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130600000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c201306000000000000000000000000000000000000000000000006121f2c3945525f6c7885929f9e9285786b5f5245382c1f1205000000000000000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000a1723303d4a5663707d7d7d7d7d7d7d7d839090837d7d7d7d7d7d7d7d7063564a3d3023170a0008141f2b36414a52585a60606060606060606060606060606060606060606060606060606060606060606060606060605b59534b41372c20140800020e1a26313b454d535559595959595959595959595959595959595959595959595959595959595959595959595959595959595959595959595959585651493f34291e120600000000000000000000000000000000000815212e3b4854616e7b878f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f877b6e6154483b2e2115080000000000000000000000000000010e1925303b47535f6975828f9ba69b8e8175686b7783909da49a8e8174695e52443a301f150b000000000000000000000000000000000000060c151c232832373b3c444646464645433f3a322a20160c0100000000000000000000000000010b151f333d454c505253535353535353494850525353535353535349484c5052535353535353534948433d342b21160a00000005121e2a36424d575e6163646566676663666869696a6b6b6b6b6c6f7b8895a29d9084776a5d5144372a1e11040000000000101d2a3643505d697682909ca79a8d8174675a4e4134271b25313e4b5864717e8b97a49d9184776a5e5144372b1e110000000008121b2427333f49535c666d79829095a0a59d928c7f736d625a50473e352b22180f0600000000000000060f18222b343d47505a626d727f8c929da59f958f82796d665c504440372e241b1208000000000a16222e39434d555b5d606060606060605856504a52585a606060606060605a58524a40362b1f13070000000000000000000000000000000000000000000000000000000000000000000000000002101c27333d4754616d7a86929facab9e9184786c6053463a2f242d3946525e6875828f9ba9aca095897c6f63564c4135291d1104000000000000000000000000000000010d1925303a44505a646e73808a92979ea1a9a9a8a19e9c9b9a9b9d9f9d9591877f736e717d8a97a4afa295887c6f6255493c2f221609000916222f3c4955626f7c8895a2afa4978b7e71717e8790959da09e9c9b9a9b9c9ea1a9aba39f9a938e847b6e695e554b4034292015090000000000101d2a3643505d69768390908376695d5043362a1d1000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130600000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c201306000000000000000000000000000000000000000000000006131f2c3946525f6c7985929f9f9285786c5f5245392c1f1200000000000000000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000916222f3c4854606b70707070707070768390908376707070707070706b6054483c2f22160900030e1a242f3841474c4e53535353535353535353535353535353535353535353535353535353535353535353535353534f4d4841392f251a0f040005121e2a36424d575f616565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565625b51463a2e22160900000000000000000000000000000000000815212e3b4854616e7b87949c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c94877b6e6154483b2e21150800000000000000000000000000000008141e2b37424d57626f7c89949f9f92867b6e707d8995a09f93877c6f62574d4232281e0d0300000000000000000000000000000000000000030b121820262b2e2f37393939393837332f2820180f05000000000000000000000000000000030d212b333b404445464646464646463c3b4445464646464646463c3b404445464646464646463c3b38322b22190f040000000714212d3a46535e696e7071727374736d63545c5d5d5e5e5e5f626f7b8895a29d9084776a5d5144372a1e11040000000000111e2a3744515d6a7783909da69a8d8073675a4d4034271a24313e4a5764717d8a97a49e9185786b5e5245382b1f12000000060f1a242d363f44505b656d78828f949fa69e938d80746d635b51483e352c23191006000000000000000000061019222c353e48515b636d73808d939da59f948f81786d605c52493f362d241a0f060000000e1a27333f4a555f676a6c6c6c6c6c6c6c64625a525c64676c6c6c6c6c6c6c67645c52473c3023170b00000000000000000000000000000000000000000000000000000000000000000000000000000b16202d3946525d6875818e9ba7aca096897c7063554b4135292e3a4754616d7a86929facaa9d9084776b6054443a2f24190d0100000000000000000000000000000005111d2935414c56616c73808d929fa2a9aaa29f9996918f8e8d8e9092999d99928c8073717d8a97a4afa295887c6f6255493c2f221609000916222f3c4955626f7c8895a2afa4978a7e717e8892999e9896918f8e8d8e8f92979b9fa4aca49f9691847b6e675c51453c31261a0e0200000000101d2a3643505d69768390908376695d5043362a1d1000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130600000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130600000000000000000000000000000000000000000000000613202c3946535f6c7986929f9f9285796c5f52462e23170b00000000000000000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000713202c38444f5960636363636363697683909083766963636363636360594f44382c201307000008131d262f363c3f41464646464646464646464646464646464646464646464646464646464646464646464646464642403d372f271e130900000714212d3a46535f696e72727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272726d62564a3e3125180b00000000000000000000000000000000000815212e3b4854616e7b8794a1a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a194877b6e6154483b2e211508000000000000000000000000000000020e1a26313c4754606a7683909ca3998c807375828f9ca69c8f82756a5f53453b3020160c00000000000000000000000000000000000000000000070c151b1f22222a2d2d2d2d2b2a27231d160f0600000000000000000000000000000000000f1921292f343738393939393939392f2e3738393939393939392f2e343738393939393939392f2e2c2721191007000000000815212e3b4854616e7b7d7e7f7f807f73665b50505151515256636f7c8996a29c8f8376695c504336291d10030000000000111e2b3844515e6b7784919ea6998c807366594d4033261a24303d4a5763707d8a96a39f9285796c5f5246392c1f130000030e18212c363f48515b606c77818e949ea69e948e81776c605b52493f362c231a1007000000000000000000000007101a232c363f49515b646e74818e939ea69e938e81746e635b51483f362c21180e030000101d2936424f5b67717779797979797979716c6258646e7479797979797979746e64584c3f33261a0d000000000000000000000000000000000000000000000000000000000000000000000000000005111d2935414c56636f7c8995a0aca89b8e8174675d5145392c37434e5865727f8b99a3aea2988b7f7265594f4332281e1308000000000000000000000000000000000713202d3946525e68717e8a929da4ada79f98928d88848281818183868b91959f928b7f727d8a97a4afa295887c6f6255493c2f221609000916222f3c4955626f7c8895a2afa4978a7e7c86929a96918c8784828181818285898e939aa1a9a8a0969083796d60574e42372b1f140900000000101d2a3643505d69768390908376695d5043362a1d1000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130600000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c201306000000000000000000000000000000000000000000000006121f2b3844505c667986939f9f9286796c5f4a3f34281c1003000000000000000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000004101c27333d474f5456565656565d69768390908376695d5656565656544f473d33271c10040000010b141d242b30333439393939393939393939393939393939393939393939393939393939393939393939393939393534312c251e150c0200000815222e3b4855616e7b7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7265584c3f3225190c00000000000000000000000000000000000815212e3b4854616e7b87949f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f94877b6e6154483b2e211508000000000000000000000000000000000915202b38434e5863707d8a95a09e9285797b87939f9f94897c6f63584e4333291f0e040000000000000000000000000000000000000000000000040a0f1315161e202020201e1d1b17120c05000000000000000000000000000000000000070f171e24282b2c2d2d2d2d2d2d2d23222b2c2d2d2d2d2d2d2d2322282b2c2d2d2d2d2d2d2d23221f1b160f0700000000000b1724313e4a5764717d8a8b8b8c8d86786c60544c4a494a4e5764717e8b97a49b8e8275685b4f4235281c0f020000000000111e2a3744515d6a7783909da6998d8073665a4d4033271a24313d4a5764707d8a97a39f9285786c5f5245392c1f1200000915202a333e48505a636d73808d939ea69f948f82786d655b504940372d241a11080000000000000000000000000008111a242d374049525c606d78818f949fa59d938d80736d635a50483e332a2015090000111e2a3744515d6a7783868686868686867e71645a677480868686868686868074675a4d4134271a0e0000000000000000000000000000000000000000000000000000000000000000000000000000010d1924303a4854606b7783909daaac9f92857a6d6054473c313b4754606a7783909dabac9f92867a6d6054473d3221160c0100000000000000000000000000000004111d2935414c56616d7a85929ea4aea79f959086807b7875747475767a7e848c939992867c7d8a97a4afa295887c6f6255493c2f221609000916222f3c4955626f7c8895a2afa3978a7e839098938d847f7b777574747476797c81889297a1a9a89f958d80736a5f53473b30251a0e02000000101d2a3643505d69768390908376695d5043362a1d1000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130600000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130600000000000000000000000000000000000000000000000713202d3a4653606d79869aa49f938679665c5044382b1f1206000000000000000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000b16212b353d44484a4a4a4a505d69768390908376695d504a4a4a4a48443d352b21160b00000000020b131a1f2426272d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d282725201a130c030000000a1724303d4a5763707d8a8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c86796c5f5346392c201300000000000000000000000000000000000815212e3b4854616e7b8793939393939393939393939393939393939393877b6e6154483b2e21150800000000000000000000000000000000030f1b27323d4653606c7883909da1978b7e808d9aa49c9083766b6054463c3121170d000000000000000000000000000000000000000000000000000003060809111313131312110f0b07010000000000000000000000000000000000000000060d13181c1e1f2020202020202016151e1f2020202020202016151c1e1f202020202020201615130f0a040000000000000814212e3b4754616e7a8793989998897d70665e56565657585f6975818e9ba7998c7f7266594c3f3326190c000000000000101d2a3643505d697682909ca79a8d8174675a4e4134271b24313e4b5764717e8a97a49e9184786b5e5245382b1f1200020f1a26313c46505a626d727f8c929da5a0959082796d665c53493f372e251b120800000000000000000000000000000008121b242e374044505c666d79828f959fa59c928c7f726c625a50463c31261a0f0200111e2a3744515d6a77849093939393938b7e71645a6774818d93939393938d8074675a4d4134271a0e00000000000000000000000000000000000000000000000000000000000000000000000000000008131e2c38434f5965727f8b98a2aea2988b7e7165574d4237404b55626f7c8895a0aca79b8e8174685d5245392c201304000000000000000000000000000000000713202c3945525d6873808d97a1adaa9f9590837b736e6969686768676d71797f87929890837e8a97a4afa295887c6f6255493c2f221609000916222f3c4955626f7c8895a2afa89b8e818e9593878079726e6969686768656c6f757d859297a2ada79f92877b6e62574d42362a1e1105000000101d2a3643505d69768390908376695d5043362a1d1000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130600000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130600000000000000000000000000000000000000000000000714202d3a4753606d7a8693a0a49a86796d6053463a2d201307000000000000000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000050f19232b33383c3d3d3d43505d69768390908376695d50433d3d3d3c38332b23190f05000000000001080e14171a1b20202020202020202020202020202020202020202020202020202020202020202020202020201c1b18140f0902000000000a1724303d4a5763707d8a96989898989898989898989898989898989898989898989898989898989898989898989898989898989898989898989286796c5f5346392c201300000000000000000000000000000000000815212e3b4854616e7b8686868686868686868686868686868686868686867b6e6154483b2e21150800000000000000000000000000000000000a161f2b3744505b65717e8b96a19e918486929fa0958a7d7064594f43342a200f05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002070c0f111213131313131313090911121313131313131309090f1112131313131313130909070300000000000000000714202d3946525e6875828f9aa49d9083786e6865636363656a6e7b86929f9f95887c6f6255483c2f2215090000000000000f1c2935424f5c6875828f9ba79b8e8174685b4e4130251a25323f4b5865727e8b98a59d9083776a5d5144372a1e110006121f2b37434e58616c717f8b919ca4a09690837a6d675d544a41382d251c1309000000000000000000000000000000000009121c2528343f4a545c676d79839095a0a49c918b7e716c61584e43372b1f120600111e2a3744515d6a7784909d9f9f9f978b7e71645a6774818d9a9f9f9f9a8d8074675a4d4134271a0e000000000000000000000000000000000000000000000000000000000000000000000000000000020f1b27323d4754606d7a86929facaa9c908376695f53473845515c6774808d9aa7aca095897c6f63564c4135291d1104000000000000000000000000000000000714212d3a4754606d7a85929fa9aea2989083796e69625f575b5a555d60666d737e8692958f828f9ca8afa295887c6f6255493c2f221609000916222f3c4955626f7c8895a2afaa9e938e9393877e736d67615e575b5a535b60626b707c85929fa6afa3998e8175695e52463a2d201408000000101d2a3643505d69768390908376695d5043362a1d1000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130600000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130600000000000000000000000000000000000000000000000714212d3a4754606d7a8793a0a093867a6d6053473a2d201407000000000000000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000005101a232c33393c3d3d3d43505d69768390908376695d50433d3d3d3c39332c231a10050000000000000003080b0d0e13131313131313131313131313131313131313131313131313131313131313131313131313130f0e0c08040000000000000a1724303d4a5763707d8a969f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9286796c5f5346392c201300000000000000000000000000000000000714212d3a46535e697679797979797979797979797979797979797979797976695e53463a2d2114070000000000000000000000000000000000030f1b27333f4953606d7984919ea096919298a29d9184786c6053463d3220180e0000000000000000000000000000000000000000000000000000020507080c1011131311100c0807050200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111e2a36414c56626f7c87939f9f958f827a757270707072757c849198a39a9083766a5f53473a2e2115080000000000000e1b2734414e5a6774818d9aa79c90837669574d42362a1e2733404d5a6673808d99a69c8f8276695c4f4336291c10000814212e3a47535f6a717e87939fa3a19691847a6e685d554b42382f261b130a010000000000000000000000000000000000000a1317232e38424b555d676d7a839196a1a39f92877e716a5f53473a2e21140800111e2a3744515d6a7784909daaaca4978b7e71645a6774818d9aa7aca79a8d8074675a4d4134271a0e000000000000000000000000000000000000000000000000000000000000000000000000000000000a16202c3945515d6774818e9aa7ab9f94887b6e62544a3f4653606d7985929fabaa9d9084776b6054443a3024190d0100000000000000000000000000000004111d2935414c5665727e8b98a2aeab9f92867b6e675e57534d4e4e4b51545c606c717e8a92948f949eaaafa295887c6f6255493c2f221609000916222f3c4955626f7c8895a2afafa59e9b958c7f736c605c55524d4e4e49505359606a717e8a949fabab9f92877b6e6154473b3025190e020000101d2a3643505d69768390908376695d5043362a1d1000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130600000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130600000000000000000000000000000000000000000000000714212e3a4754616d7a8794a0a093877a6d6054473a2d211407000000000000000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000b17222c363e44494a4a4a4a505d69768390908376695d504a4a4a4a49443e362c22170b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1724303d4a5763707d8a93939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939286796c5f5346392c2013000000000000000000000000000000000005121e2a36424d575e6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c5e574d42362a1e12050000000000000000000000000000000000000b17222d3844515c66727f8c97a2a09e9fa2a1968b7e71655b5044372b1f120600000000000000000000000000000000000000000000000003090e121415191c1e1f1f1e1c191514120e090300000000000000000000000000000000000105090b0b1313131307060400000105090b0b13131313070604000000000000000000000000000000000000000000000000010d1925303b4754606a73808d939f9e948f86817e7d7c7d7f82879196a09f93887d6f63584e43372b1f12060000000000000b1825323e4b5865717e8b98a99e918578695e52463a2d232b37424d576875828e9ba79a8d8074675a4d4134271a0e000815222f3b4855626e7b869299a4a29891847b6e685e564c433930261d140a01000000000000000000000000000000000000000006111c263039434b555e686e7b849197a2a39992867b6e6255483b2f22150800111e2a3744515d6a7784909daab1a4978b7e71645a6774818d9aa7b3a79a8d8074675a4d4134271a0e0000000000000000000000000000000000000000000000000000000000000000000000000000000004111d2935414c55626f7c88959faba6998d8073665c50444d5764717e8a97a2ada2988b7f7265594f4332281e1308000000000000000000000000000000000713202c3945525d687683909caaaea3998c8073695e554d4742414140454a515a616c74808d979c9ea6b0afa295887c6f6255493c2f221609000916222f3c4955626f7c8895a2afb7afa89d9083786d605a514b464241413f44464f58616c76828f9ca9afa3998c7f7266564c41362a1e11050000101d2a3643505d69768390908376695d5043362a1d1000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130600000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130600000000000000000000000000000000000000000000000814212e3b4754616e7a8794a1a094877a6d6154473a2e211407000000000000000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000004101c28333e48505557575757575d69768390908376695d57575757575550483e33281c10040000000000000000000000000000000000000000000000000000000000000000050a0d0f101313100f0d0a05000000000000000000000000000000000a1724303d4a5763707d8686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686796c5f5346392c20130000000000000000000000000000000000020e1a25313b454d535f6060606060606060606060606060606060606060605f534d453b31251a0e0200000000000000000000000000000000000006111b2834404a54606d7a85929393939393939184796d6053493f33271b0f030000000000000000000000000000000000000000000002090e141a1e212226292b2c2c2b292521211e1a140e09020000000000000000000000000000060c111517182020201f1413100c070c111517182020201f1413100c07010000000000000000000000000000000000000000000008141e2b38434e58606d78818c92999f98928e8b89898a8b8f92999f98928b7f726b6054463c31261b0f030000000000000915222f3c4855626f7c8897a2a197877b6e6154483d342e303947535f697784919ea7978b7e7164584b3e3125180b000a1723303d4a5663707d8999a3ab9f92857b6f695e564c433a31271e150b02000000000000000000000000000000000000000000000a141e27303a434c565e696e7b85929faba398897d7063564a3d3023170a00111e2a3744515d6a7784909daaa89f978b7e71645a6774818d9aa7a09f9a8d8074675a4d4134271a0e00000000000000000000000000000000000000000000000000000000000000000000000000000000010d19242f3a47545f6a7783909da9ab9e9184796d605346525e6976828f9ca9ac9f92867a6d6054473d3221160c02000000000000000000000000000000000714212d3a4754606d7a86929facac9f92867a6d61574d433b37312f35394044505a606d7a85919eaab0b8afa295887c6f6255493c2f221609000916222f3c4955626f7c8895a2afb9ada1968a7d70665c5045403936302d33373d46505a63707d8a97a1adab9d908377685e5246392d2014070000101d2a3643505d69768390908376695d5043362a1d1000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130600000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130600000000000000000000000000000000000000000000000815212e3b4854616e7b8794a1a194877a6e6154473b2e211408000000000000000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000814202d3944505a616464646464646976839090837669646464646464615a5044392d201408000000000000000000000000000000000000000000000000000000000000030a11161a1c1d20201d1c1a16110a0300000000000000000000000000000916232f3c4855616b707979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979746a5e5145382b1f1200000000000000000000000000000000000009141f29333b4246485353535353535353535353535353535353535353534846423b33291f140900000000000000000000000000000000000000000c18232e3945515d67738086868686868686867f72665c5141382d22170b00000000000000000000000000000000000000000000050d141a1f262a2d2e32363839393836322e2d2a251f19140d050000000000000000000000000911181d2124252d2d2d2c201f1c1812181d2124252d2d2d2c201f1c18120b03000000000000000000000000000000000000000000020f1b27323d44505c666d777f868e92999a9b98969696989b9a98928e867f726d62594f44342a20150a000000000000000713202d3a4653606d7985929fa9988b7e7165594f443f3f3f424c56616e7b8896a0a095877b6e6154483b2e211508000a1723303d4a5663707d8996a1a9a2988b7e716b61584e463c332920160d03000000000000000000000000000000000000000000030c161f29323c454e58606b717e87939fa9a196897d7063564a3d3023170a00101d2a3743505d6a7683909d9e9b93938b7e71645a6773808d9aa19393938d8074675a4d4134271a0e000000000000000000000000000000000000000000000000000000000000000000000000000000000008131e2b37434e5865717e8b97a2ada1968a7d7063564c54616e7b87939faca79b8e8174685d5245392c20130400000000000000000000000000000000000a1724313d4a5764707d8a99a3afa99c8f8276685e52453b312b2624292e343e45525d68727f8c98a2aebaafa295887c6f6255493c2f221609000916222f3c4955626f7c8895a2afb7ab9e9184786c60544a3f342e2a2522272b343e4653606c7885919eabac9f93877a6e6154473b2e2114080000101d2a3643505d69768390908376695d5043362a1d1000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130600000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130600000000000000000000000000000000000000000000000815222e3b4855616e7b8894a1a194877b6e6154483b2e211508000000000000000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000a1623303c4955616c70707070707070768390908376707070707070706c6155493c3023160a0000000000000000000000000000000000000000000000000000000000040d151c2226292a2d2d2a2926221c150d04000000000000000000000000000714202c38444f5961636c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6a62584d4135291d10000000000000000000000000000000000000030d17212931363a3b4646464646464646464646464646464646464646463b3a36312921170d03000000000000000000000000000000000000000007121c2935414b55636e737979797979797979726d62544a402f261b1106000000000000000000000000000000000000000000080e171f252a31363a3b3f4344464644433f3b3a36312a251f170e070000000000000000000009121b22292e3132393939392d2c29231d22292e3132393939392d2c29231d150d030000000000000000000000000000000000000000000a162028343f4a545c656c737b82868b8e909192929291908d8b86817b726d625b51473d3222180e040000000000000006121f2b3844505c6674808d9aa69c9083766b6157504a4c4c4e545d68737f8c99a89d908377695e53463a2d211407000814212e3b4754616e7a849197a2aa9f92877d706a60584e453b32281f150c0200000000000000000000000000000000000000020b151e28313b444d57606a707d879299a4a29791847a6e6154473b2e21140800101d293643505c6976828f9c938e8686867e7164596673808c9997898686868074675a4d4134271a0e0000000000000000000000000000000000000000000000000000000000000000000000000000000000010f1b26323c4753606d7985929faba99b8e8275685d525966737f8c99a4aca095897c6f63564c4135291d110400000000000000000000000000000000000d1a2733404d5a6673808d99abb5ab988b7f7265564c4133291f1a181c232935414c56606d7a85929fabb8afa295887c6f6255493c2f221609000916222f3c4955626f7c8895a2afb6ac9a8d8073665b5042382e231d1a171b222b3744505b6574818e9ba7afa49a8a7e7164574b3e312418070000101d2a3643505d69768390908376695d5043362a1d1000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130600000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013060000000000000000000000000000010406070c0b0a09080815222f3b4855626e7b8895a1a194887b6e6155483b2e22150808090a0b0c07070501000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000a1724313d4a5764707d7d7d7d7d7d7d7d839191837d7d7d7d7d7d7d7d7064574a3d3124170a00000000000000000000000000000000000000000000000000000000030d161f272d32353639393635322d271f160d0300000000000000000000000004101c28333e474f5557606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060605f5e5850473c3125190d00000000000000000000000000000000000000050f171f252a2d2e3939393939393939393939393939393939393939392e2d2a251f170f05000000000000000000000000000000000000000000000d18242f3a43525c63666c6c6c6c6c6c6c6c65625b5142392e1d140a00000000000000000000000000000000000000000009111a202930363b4246484c4f515252514f4c4846423b36302920191109000000000000000006111b242d343a3d3e464646463a38342f272d343a3d3e464646463a38342f271f150b010000000000000000000000000000000000000000040b17232e38424a535b60696e757a7e8183848586858483817e7a756e69625b51493f352b211006000000000000000003101c28343f4a54626e7b88949e9f94897d7069605c5458595860666d7a85929fa1978b7f7265574d42362a1e1205000714202d3946525e686f7c859298a3a39992867d6f6a5f574d443a31271e140a000000000000000000000000000000000000000a141d27303a434c565f696f7c869299a3a29892857c6f685e5246392d201407000f1c2935424f5c6875828f9b8e81797979716c625965727f8c989285797979746e64584c3f33261a0d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000a151f2c3945515d6774808d9aa6ac9f92867a6d6154606b7784919eabaa9d9084776b6054443a3024190d010000000000000000000000000000000003101c28343f4a546975828f9ca8afa399887c6f6255493c3022170d0d1219242f3a45525d6875818e9ba8b4afa295887c6f6255493c2f221609000916222f3c4955626f7c8895a2afafa49a897d7063544a3f30261c120e0b0f1b27333f495364717e8b97abb5ac9a8d8073675a4d402e23180c0000101d2a3643505d69768390908376695d5043362a1d1000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130600000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130600000000000000000000000001080d11131419181716151415222f3c4855626f7b8895a2a195887b6e6255483b2f22151415161718181413110d080200000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000013202d394653606c79868a8a8a8a8a8a8a919595918a8a8a8a8a8a8a86796c605346392d2013000000000000000000000000000000000000000000000000000000000a151f2831383e4243464643423e3831281f150a000000000000000000000000000b16212c353e44484a5353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353514d473e352a1f14090000000000000000000000000000000000000000050d141a1e21212d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d21211e1a140d05000000000000000000000000000000000000000000000007131d2831404a52585a6060606060606060595751493f30271c0b02000000000000000000000000000000000000000009121b232b333b42464d5355595c5e5f5f5e5c5854534d46423b322b231b1209000000000000010c18222d363f454a4b535353524745403931363f454a4b535353524745403931271d120700000000000000000000000000000000000000000006111c263038414950575f62686d71747778787978787674716d68615f5751493f372d23190f000000000000000000000b17232e3847535f6a75828f97a29e92857b716d66666566676a6f78828f97a29e9285796d6053473b31251a0e020005111e2a36414c565f6a6f7d869299a3a29892857c6e695e564c433930261c1106000000000000000000000000000000000006111c262f39434c565e686e7b859298a2a39992867d6f6a5f564c41362a1e1105000f1b2835424e5b6875818e9b9083766c6c64625a5865727e8b989386796d6c67645c52473c3023170b00000000000000000000000000000000000000000000000000000000000000000000000000000000000004101d2935404b55626f7b88949faba3998b7e726557636f7c8996a0aca2988b7f7265594f4332281e1308000000000000000000000000000000000006121f2b3844505c667884919eabac9f9286796d6053463a2d2013070008131e2935414c5664717d8a97a8b2afa295887c6f6255493c2f221609000916222f3c4955626f7c8895a2afac9f93867a6d6053473a2d20140a00000b17222d3c4855626f7b8899a4afa99c8f837669554b4034281c100400101d2a3643505d69768390908376695d5043362a1d1000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130600000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013060000000000000000000000040c13191d20212524232221201f222f3c4955626f7c8895a2a295887b6f6255483c2f221f20212223242521201d19130c04000000000000000000000203101d2a3643505d69768390908376695d5043362a1d1003020000000000000013202d394653606c798693939393939393939393939393939393939386796c605346392d201300000000000000000000000000000000000000000000000000000005111c27313a434a4e505353504e4a433a31271c110500000000000000000000000005101a232c33383c3d464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464645413c352c23190e0300000000000000000000000000000000000000000003090e1214152020202020202020202020202020202020202020201514120e0903000000000000000000000000000000000000000000000000010c161f2e3840474b4d53535353535353534c4a463f372d1e150b000000000000000000000000000000000000000007111b242d353d454d52575f6165696b6c6c6b6965615e57524d443d352c241b1107000000000005111d29343f485056586060605f53514b43393f485056586060605f53514b43392f23180c000000000000000000000000000000000000000000000a141e262f383f444d53565e6165676a6b6c6c6c6b696764605d56534d453f372d251b11070000000000000000000006111c2b37434e58616e7b85929fa19792857e797573727274777c838f949f9e938b7e71675d514539291f14090000020e1925303b444e58606b707e87929fa3a29791847b6e685d554b42382e23171309000000000000000000000000000000091317222d38424b555d686e7a849197a1a39f92877d706b60584e443b3025190e02000d1a2633404d596673808c99918477695e5856505663707d89969a877b6e615a58524a40362b1f1307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18242f3947535f6a7683909ca9ab9d908376695f6774818e9aa8ac9f92867a6d6054473d3221160c0200000000000000000000000000000000000713202d3a4653606d7986929facaa9e918477665c5145382c1f130600010d19242f3a4754616d7a8796a0acafa295887c6f6255493c2f221609000916222f3c4955626f7c8895a2afaa9e918477675d5145392c20130200000613202d3a4653606d7986939facab9e918478675c5145382c1f130600101d2a3643505d69768390908376695d5043362a1d1000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130600000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130600000000000000000000040d161e24292c2d3231302f2e2d2c292f3c4956626f7c8995a2a295887b6f6255483c2f292c2d2e2f3031322e2d29241e160e0400000000000000050a0f12101d2a3643505d69768390908376695d5043362a1d10120f0a05000000000013202d394653606c798686868686868686868686868686868686868686796c605346392d20130000000000000000000000000000000000000000000000000000000a16222d38434c545a5d60605d5a544c43382d22160a0000000000000000000000000008111a21282c2f3039393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393835312a231a11070000000000000000000000000000000000000000000000000205070813131313131313131313131313131313131313131308070502000000000000000000000000000000000000000000000000000000040d1c262e363b3f4046464646464646463f3e3a352d251b0c0300000000000000000000000000000000000000050e19232d363e474f575e61696e72767779797776726e69615e564f473e362c23190e04000000000915212e3a45505a62656c6c6c6c605c554b4045505a62656c6c6c6c605c554b4034291c1004000000000000000000000000000000000000000000020c141d262d333c42474c5254585b5d5e5f5f5f5e5d5a5854524c46423b332d251b13090000000000000000000000000f1a26313c46525e69717e8a939aa197928b8581807f7f80848890959f9f948e81756c62554b403529170d0300000008141e29323c464f59616c717e8b919ca4a19691837a6d675d544a3f3428251b12080000000000000000000000000008121b2528333f4a545c676d7a839096a0a49c918b7e716b61594f463c32291e140800000b1724313e4a5764717d8a9796877b6e6154474754616e7a8797978a7e7164544a4740382f24190e030000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d2b37434e5864717e8a97a1ab9f95887b6e616d7985929faba79b8e8174685d5245392c2013040000000000000000000000000000000000000815212e3b4854616e7b8799a3afa99c8f827669544b4034281c100400000813202d3946525d687784919eaaafa295887c6f6255493c2f221609000916222f3c4955626f7c8895a2afa89c8f827569554b4035291d1104000006131f2c3845515c677884919eabac9f9386796d6053463a2d20130700101d2a3643505d69768390908376695d5043362a1d1000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130600000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c201306000000000000000000010c161f282f35393a3f3e3d3c3b3a38352f3c4956636f7c8996a2a295887c6f6255493c2f34383a3b3c3d3e3f3a3935302820160c0200000000010910161b1e20202a3643505d69768390908376695d5043362a20201e1b1610090100000013202d3946535f6c767979797979797979797979797979797979797979766c5f5346392d20130000000000000000000000000000000000000000000000000000010d1a26323e4a545e66696c6c69665e544a3e32261a0d01000000000000000000000000000810161c2023242d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2c2b29251f191108000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141c242a2f3233393939393939393932312e29231b130900000000000000000000000000000000000000020c17202b353e48505960696e747b7f8284858584827f7b746e69605950483e352b20160c020000000b1724313d4a56626c71797979796d675c51454a56626c71797979796d675c5145382c1f130600000000000000000000000000000000000000000000020b141b222731373a4146474b4e505152535251504e4b4745413a36312a211b1309010000000000000000000000000a15202a36424d57616c727f8892979f9e97928e8c8b8c8d90959d9f99938d82796d605a5043392f24180500000000020d17202a343d47505a626c737f8c929da5a0959082796d665c504440372d241a1107000000000000000000000007111a242d373f44505b666d79828f95a0a59d928c7f726c62594f463d342a20170d0200000815222f3b4855626e7b8897978b7e7164574d46525e697885929a8e8174665c5044382c261d12080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010f1a26313c4653606d7985929eaca7998c7f7366717d8a98a2aca095897c6f63564c4135291d11040000000000000000000000000000000000000916222f3c4955626f7c8895abb5a79b8e8174685b4e412e23180c00000005111d2935414c566875828f9ba8afa295887c6f6255493c2f221609000916222f3c4955626f7c8895a2afa79a8d8174675a4e412f24180d01000004101c2834404b556a7683909da9afa49a887b6e6155483b2e22150800101d2a3643505d69768390908376695d5043362a1d1000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130600000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130600000000000000000008131e28313a4145474c4b4a49484745404443495663707c8996a3a295897c6f625649434440454748494a4b4b4746413a32281e1308000000010a131b21272b2d2d2d3643505d69768390908376695d5043362d2d2d2b27211b130a010000121e2b37434f5a646c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c645a4f43372b1e120000000000000000000000000000000000000000000000000000030f1c2935424e5a66707679797670665a4e4235291c0f030000000000000000000000000000050b1014161720202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020201f1d19140e070000000000000000000000000000000000000000000002070a0c0d131313130e0d0b0803000407090a131313131006050300000000000000000000000000000000000000000000000000000000000000000000020a12191f2326272d2d2d2d2d2d2d2d2625221e181109010000000000000000000000000000000000000008131e29323d47505a626b707b81878c8f919292918f8b87817b706b615a50473d32281e13080000000b1825323e4b5865717e86868686796d6053474b5865717e86868686796d6053473a2d20140a0000000000000000000000000000000000000000000000020a11171f262b3035393a3e4144454546454543413e3a3935302a261f180f090100000000000000000000000000030e1a25303b45505a626d727e858d92989a9c9b9998999a9d9b99938f8780786d675c51483e31281d12070000000000050e18222b353e47505a636d74808d939ea69f948f82786d605c52493f362c23191007000000000000000000071019232c363f49525c606c78818f949fa69e938d80746d635a50473e342b22180e050000000713202d3a4653606d7985929b8f8275695f53464d566975828f9c9184796d6053463e31271d12070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a151f2c3845515c6773808d9aa4aa9d9184776a75828e9baaaa9d9084776b6054443a3024190d010000000000000000000000000000000000000a1623303d495663707c8996a3afa69a8d8073675a4d4034271a07000000010d192430414d5a6774808d9aa7afa295887c6f6255493c2f221609000916222f3c4955626f7c8895a2afa6998c807366594d4033261a07000000000c18232e424f5c6975828f9ca8b6ac95887c6f6255493c2f22160900101d2a3643505d69768390908376695d5043362a1d1000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130600000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013060000000000000000010d19242f3a434c5154585756555453514b504f4e5663707c8996a3a296897c6f63564e4f504b5153545556575854524c443a3024190d01000009131c252c33373939393943505d69768390908376695d50433939393937332c251c130900000f1b27333e49525a5f60606060606060606060606060606060606060605f5a52493e33271b0f000000000000000000000000000000000000000000000000000003101d2a3643505d69768286868276695d5043362a1d1003000000000000000000000000000000000407090a131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131312100d090300000000000000000000000000000000000000000000070e1316191a202020201b1a18140f0b10141617202020201d13120f0b0600000000000000000000000000000000000000000000000000000000000000000000080e1317191a2020202020202020191816120d070000000000000000000000000000000000000000010d1925303a444f59626c717d858e92999c9a98989a9c99928e857d716c61594f443a3024190d0200000a1723303d4a5663707d8993988a7d7063574a4a5663707d8993988a7d7063574a3d31261b0f03000000000000000000000000000000000000000000000000060b151a1e25292d2e32343738393939383634312d2c29241e1a140e060000000000000000000000000000000009141f29333e48515b626c707a80858a8d909192939291908e8b87827c736d665c554b40362d1f160c01000000000000061019232c353f48515b606c78818e949fa69e948e81746e635b51483e352b22190f0600000000000000060f18222b353e48515b636e74808d939ea69f948e81776c605b51483f352c221910060000000006121f2b3844505c6675818e9b93877b6e61574d4b5864717e8b98978a7e7164594f43392f23180c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c2834404b55616e7b87939faca095887b6f7985929faca3988b7f7265594f4332281e1308000000000000000000000000000000000000000a1724313d4a5764707d8a97a3b0a6998c807366594d4033261a0d00000000081926323f4c5965727f8c98a5afa295887c6f6255493c2f221609000916222f3c4955626f7c8895a2afa5988b7f7265584c3f3225190c00000000071b2835424e5b6875818e9ba8b0a396897d7063564a3d3023170a00101d2a3643505d69768390908376695d5043362a1d1000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130600000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c201306000000000000000004111d2935414c555d606564636261605d555d5c5b5a63707d8996a3a396897c70635a5b5c5d555c606162636465615d564c4135291d11050005101b252e373e434646464646505d69768390908376695d504646464646433e372e251b1005000a16212c3740494f535353535353535353535353535353535353535353534f4940372c21160a000000000000000000000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010a12191f2325262d2d2d2d282724201a161c2022232d2d2d2d2a201f1b17110a0200000000000000000000000000000000000000000000000000000000000000000002070a0c0d13131313131313130c0b09060100000000000000000000000000000000000000000005111d2a36414c56606b717e8792979e96918d8c8c8d91969e9792877e716b60564c4135291e130800000815222f3b4855626e7b88959a8d817467584e4855626e7b88959a8d817467584e43372b1f12060000000000000000000000000000000000000000000000000003090e13191d202125282a2b2c2c2c2b2a272521201d19130e09030000000000000000000000000000000000020d17202c363f49515a61686d73797d8083848586858583817e7b756f6a605c544b43392f241b0d04000000000000000007101a232d364044505b666d79828f95a0a69d938d80736d625a50473d342a21180d040000000000040d18212a343d47505a626d73808c929da59f958f82786d655b50493f362d231a1007000000000003101c28343f4a5463707d8995998d8074695e534754606d7a86929d9083766b61554b4034291c10040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18232e3946535f6976828f9ca9a7998c7f737d8a98a2ac9f92867a6d6054473d3221160c02000000000000000000000000000000000000000b1724313e4a5764717d8a97a4b0a5998c7f7266594c3f3326190c000000000b1825323e4b5865717e8b98a4afa295887c6f6255493c2f221609000916222f3c4955626f7c8895a2afa5988b7e7265584b3f3225180c000000010e1b2834414e5b6774818e9aa7b0a3978a7d7064574a3d3124170a00101d2a3643505d69768390908376695d5043362a1d1000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130600000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130600000000000000000613202c3945515d676d7271706f6e6d676b6a69686766707d8a96a3a396897d70666768696a6b676d6e6f7071726d685d5246392d201307000a16212c3740494f5353535353535d69768390908376695d5353535353534f4940372c21160a0005101b252e373e4346464646464646464646464646464646464646464646433e372e251b1005000000000000000000000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000000000000000000000000000000010406070a0d10111213131211100d0a07060400000000030505060606060606000000000000000000000000000000000000040613131313131313131312110e0904000000000000000a131c242a2f3233393939393433302b2521272c2f3039393939372d2b27221b140b0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3946525e68707d87929997918a84807f7f81848a92979992877d6f685d52453a3024190d01000714202d3a4753606d7a86979e9184786a5f534753606d7a86979e9184786a5f53473a2e21150800000000000000000000000000000000000000000000000000000002080d111314181b1d1e1f201f1e1d1b181413110d08020000000000000000000000000000000000000000050e1a242d373f4850565e61676d70747678797979787774716e68625f58504a423931271d12090000000000000000000008111b2428333f4a545c676d79839096a0a59c928b7f726c61594f463c332a1f160c01000000010c161f2a333c464f59616c727f8b929ca4a0969083796d665c53493f372e241b1108000000000000000b17232e394653606c7883909d92867b6e615a50515d6774818e99958a7d70675c5145382c1f130600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d2b37424d5764717d8a97a1aa9d908377818e9baaa79b8e8174685d5245392c20130400000000000000000000000000000000000000000b1824313e4b5764717e8a97a4b1a5988c7f7265594c3f3226190c000000000b1824313e4b5764717e8a97a4afa295887c6f6255493c2f221609000916222f3c4955626f7c8895a2afa4978b7e7164584b3e3125180b000000010e1b2734414e5a6774818d9aa7b1a4978a7e7164574b3e3124180b00101d2a3643505d69768390908376695d5043362a1d1000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130600000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130600000000000000000714212d3a4754606d797f7e7d7c7b7a79787776757473727d8a97a3a3968a7d72737475767778797a7b7c7d7e7f7a6d6154473a2e211407000f1b27333e49525a5f60606060606069768390908376696060606060605f5a52493e33271b0f000009131c252c33373939393939393939393939393939393939393939393937332c251c130900000000000000000000000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000000000000000001080d111314171a1d1e1f1f201f1e1c1a171413100c07010c0f111213131313131309090703000000000000000000000001070c10132020202020202020201f1d1a150f08000000000007121c252e353b3f404646464641403c362f2b33383c3d46464646433937332d261d140a00000000000000000000000000050a0d0f10131313130b0a0805050a0d0f10131313130b0a08050000000000000000000000000000000000000000000000000000000000000005111e2a36414c56616d7a8592999691857e7774727274787e8591969992857a6d60564c4135291d11040006131f2c3945515d677885929e96887b6f625548515d677885929e96887b6f6255483c3025190d0100000000000000000000000000000000000000000000000000000000010507070b0e111212131212100e0b07070401000000000000000000000000000000000000000000000008121b252d363e444c52555c606467696b6c6c6c6b6a6865615e56544e443f3830271f150b000000000000000000000000091217222d38424b555d676e7a849197a1a49f93887e716b60584e453b31281d130700000007131d28313b454e58606b717e87939fa4a19691847a6d675d544a41382d251c1209000000000000000006121f2b3744505b65717e8a94988f82756c61554c55616e7b8692939184796d6053473a2d201407000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1a26313c4653606d7984919eaba095887b85929faba095897c6f63564c4135291d110400000000000000000000000000000000000000000b1825313e4b5864717e8b97a4b1a5988b7f7265584c3f3225190c000000000b1724313e4a5764717d8a97a4afa295887c6f6255493c2f221609000916222f3c4955626f7c8895a2afa4988b7e7165584b3e3225180b000000010e1a2734414d5a6774808d9aa7b1a4978b7e7164584b3e3125180b00101d2a3643505d69768390908376695d5043362a1d1000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130600000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130600000000000000000815212e3b4854616e7b878a898887868584838281807f7e808d9aa7a79a8d807e7f808182838485868788898a887b6e6255483b2f22150800121e2b37434f5a646c6c6c6c6c6c6c6c7683909083766c6c6c6c6c6c6c6c645a4f43372b1e120000010a131b21272b2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2b27211b130a0100000000000000000000000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000000000000000000000003090e13191d20212427292b2b2c2c2c2b292724201f1c18120e181c1e1f2020202020201615130f0a040000000000000000030b12181c1f2d2d2d2d2d2d2d2d2c2c2a2620191209000000020e19242e3740474b4d535353534e4c484138353d44484a535353535046443f382f261b110600000000000000000000030a1016191c1d20202020181714111016191c1d20202020181714110c0600000000000000000000000000000000000000000000000000000000000714202d3946525e6874808d979891847b716c676565656c717b849198978d8073685d5245392c2013070004101d2935404b556a7783909d998c7f7266564c4b556a7783909d998c7f7266564c41362a1d1105000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009131b242c323a41464b5153575a5d5e5f605f5e5d5b5854524d47433c342e261e150d030000000000000000000000000006111c262f39434c555e686e7b859298a2a49a92877d706a5f574d433a2f24180d0100010d18242f3a434d575f6a707d869299a4a29791847b6e685e554b42392f261b130a000000000000000000030f1b27333f4953616c7682868686867d7064574a535e69748086868686807366594d4033261a0d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141f2c3844505c6673808c99a4a79c8f828f97a2aa9d9084776b6054443a3024190d0100000000000000000000000000000000000000000b1824313e4b5764717e8a97a4b1a5988c7f7265594c3f3226190c000000000b1825313e4b5864717e8b97a4afa295887c6f6255493c2f221609000916222f3c4955626f7c8895a2afa5988b7e7265584b3f3225180c000000010e1b2734414e5a6774818d9aa7b1a4978a7e7164574b3e3124180b00101d2a3643505d69768390908376695d5043362a1d1000000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130600000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130600000000000000000815212e3b4854616e7b8794969594989291908f8e8d8c8b8d929da9a99d928d8b8c8d8e8f9091929894959695887b6e6255483b2f2215080013202d3946535f6c767979797979797979839090837979797979797979766c5f5346392d2013000000010910161b1e202020202020202020202020202020202020202020201e1b161009010000000000000000000000000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000000000000000000060e141a1e24292c2d3033363738393939383634302d2c29231d1a24282b2c2d2d2d2d2d2d23221f1b160f07000000000000030d151d23292c3939393939393939393836312b241b1208000007131f2a354049525759606060605b59534a413d474f5456606060605d53504941382d22170b000000000000000000040d151b212628292d2d2d2d2423211d1b212628292d2d2d2d2423211d171008000000000000000000000000000000000000000000000000000000000814212e3b4754616e7a86929f92867c6e69615a59535b60696e7c86929f92867a6d6054473a2d21140700000c18242f424f5c6875828f9b9c908376685e524f5c6875828f9b9c908376685e5246392d20130700000000000000000000000106090b0c13131313130d0c0a070200050a0d0f1013131313130a0907040000000000000000000000000000000000000000000000000000000000000109111a20283035394045474a4d505152535252504e4b4746413b373228231c150c030000000000000000000000000000000a141d27303a434c565f696f7c869299a3a39992867c6f695f554b4035291d11040004111d2935404b555f696f7c869298a3a39892857c6f695e564c433930271d140a01000000000000000000000b17222d3841505a66707679797979706c6155494d57646e7479797979736e63574b3f3225190c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003101c28343f4a54616e7b87939fac9e948f949ea9a3988b7f7265594f4332281e13080000000000000000000000000000000000000000000b1724313e4a5764717d8a97a4b0a5998c7f7266594c3f3326190c000000000c1825323f4b5865727e8b98a5afa295887c6f6255493c2f221609000916222f3c4955626f7c8895a2afa5988b7f7265584c3f3225190c000000010e1b2834414e5b6774818e9aa7b0a4978a7d7164574a3e3124170b00101d2a3643505d69768390908376695d5043362a1d1000000000000000000714202d3a4753606d7a8693a0acac9f9286796c5f5346392c20130600000000000714202d3a4753606d7a8693a0acac9f9286796c5f5346392c20130600000000000000000815212e3b4854616e7b8794a1a2aaa29f9e9d9c9b9a99989a9da4aeaea49d9a98999a9b9c9d9e9fa2aaa2a195887b6e6255483b2f2215080013202d394653606c798686868686868686909494908686868686868686796c605346392d20130000000000050a0f1213131313131313131313131313131313131313131313120f0a0500000000000000000000000000000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000000000000000000070f181f262a2f35393a3d404344454646454443403d3a38342f2a252f3437383939393939392f2e2c272119100700000000010b151f272f343846464646464646464645423d352d24190f04000a16232f3b47525c63666c6c6c6c67645d5346444f5960636c6c6c6c6a605b53493f33271b110600000000000000000d161f262d3235363939393931302d28262d3235363939393931302d28221a12080000000000000000000000000000000000000000000000000000000b1825323e4b5865717e8b99998c7f736a5f57504c4950575f6a73808d99988a7e7164574b3e3124180b0000071a2734414d5a6774808d9a9f93867a6d61544d5a6774808d9a9f93867a6d6154473a2e23180c00000000000000000000070d1216181920202020201a1917130e0a1015191c1d2020202020161613100b05000000000000000000000000000000000000000000000000000000000000080e161e25292f34383a3d4143454646464544413e3b3936302b262017110a0300000000000000000000000000000000020b151e28313b444d57606a707d87929aa4a29892857b6e675d5145392c201306000613202c3945515d676e7b859198a2a39992867d6f6a5f574d443a31281e150b02000000000000000000000006111b262f3e48545e66696c6c6c6c64615a504445525c64676c6c6c6c66635b52473b2f23160a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c17232e3846535e6975828f9ca8a69e9c9ea6ac9f92867a6d6054473d3222170b020000000000000000000000000000000000000000000a1724303d4a5763707d8a96a3b0a6998d8073665a4d4033271a0d000000000d192633404c5966737f8c99a6afa295887c6f6255493c2f221609000916222f3c4955626f7c8895a2afa6998c7f7366594c4033261907000000020f1b2835424e5b6875818e9ba8b0a3978a7d7064574a3d3124170a00101d2a3643505d69768390908376695d5043362a1d1000000000000000000714202d3a4753606d7a86939f9f9f9f9286796c5f5346392c20130600000000000714202d3a4753606d7a86939f9f9f9f9286796c5f5346392c20130600000000000000000815212e3b4854616e7b8794a1aaa29f9e9d9c9b9a999796999ca4aeaea49c999697999a9b9c9d9e9fa2aaa195887b6e6255483b2f2215080013202d394653606c798693939393939393969696969393939393939386796c605346392d2013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000000000000030b1218212a31363a4145474a4d505152525352514f4d4a4745403936313a4044454646464646463c3b38322b22190f0400000007121d2731394045535353535353535353524e473f352b201509000c1925323f4b57636e7379797979746f64584e4854606b7079797979766c655b5044382d22170b0000000000000008111f2831383e4243464646463e3d393431383e4243464646463e3d39342c241a100600000000000000000000000000000000000000000000000000000f1c2835424f5b6875818e9b92867a6d61574e453f3f444e58616e7b87969b8e8174685b4e4135281b0e00000c1926323f4c5965727f8c98a4998b7e7164544a5965727f8c98a4998b7e7164544a4034281c100400000000000000010911181e2225262d2d2d2d2d2726231f19141b212628292d2d2d2d2d2322201c160f07000000000000000000000000000000000000000000000000000000000000040c13191d23292c2d31343638393939383735322e2d2a251f1b150c0600000000000000000000000000000000000000030c161f29323c454e58606b717e8893939393979184796d6053473a2d201407000714202d3a4753606d7984919793939392877e706b60584e453b32281f160c03000000000000000000000000000a141d2c36424c545a5c60606060575550483e414a52585a606060605957524940352a1e1307000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b151e2834404b545c66707d8a96a3b0aaa8aab0a79b8e8174685d544a3f33281d140a0000000000000000000000000000000000000000000916232f3c4956626f7c8995a2afa79a8d8174675a4e4134271b08000000010e1b2734414e5a6774818d9aa7afa295887c6f6255493c2f221609000916222f3c4955626f7c8895a2afa79a8d8174675a4e412e23180c000000030f1c2936424f5c6975828f9ca8afa296897c6f6356493c3023160900101d2a3643505d69768390908376695d5043362a1d1000000000000000000714202d3a4753606d7a8693939393939286796c5f5346392c20130000000000000714202d3a4753606d7a8693939393939286796c5f5346392c20130600000000000000000815212e3b4854616e7b87949594989291908f8e8d8c8b8a8c929ca8a89c928c8a8b8c8d8e8f90919298949595887b6e6255483b2f2215080013202d394653606c79868989898989898989898989898989898d929386796c605346392d2013000000000000000105070810101010101010101010101010101010101010101008070501000000000000000000000000000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000000000000030c151c2328333b42464c5254575a5c5e5e5f5f5f5e5c5a5753514b46423b454c50525353535353534948433d342b21160a0000000c18232f39434b515f606060606060605f5e5951473d31261a0e000d1a2633404d596673808686868681746a5f534a5663707d8686868683776c6053493f33271b0f030000000000050f1a23313a42494e50535353534b49453e3a42494e50535353534b49453e362c22170c0000000000000000000000000000000000000000000000000000111d2a3744505d6a7783909d908377685e52453c33333c46525e697784919c8f8276695c504336291d1000000b1724313e4a5764717d8a97ab9b8e8275665c515764717d8a97ab9b8e8275665c5144382c1f12060000000000000009131b23292e3132393939393933322f2a241f262d3235363939393939302f2c272119110700000000000000000000000000000000000000000000000000000000000002080d12181c1f2024272a2b2c2d2c2b2a282521201e19140f0a04000000000000000000000000000000000000000000040d17202a333c464f59616c727f868686868686867b6e6154483b2e211508000815212e3b4854616e7b868686868686867e716c61594f463c332920160d040000000000000000000000000000020b1a24313a42494e50535353534a49443e363841474c4e535353534d4b4740372e24190e0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d27303945515c666d78808d99a6a3a0a0a1a4a89c8f82756c665b50443e2f261b110600000000000000000000000000000000000000000815222e3b4855616e7b8894a9b3a89b8f8275685c4f423025190e02000005121e2a36424d576976828f9ca9afa295887c6f6255493c2f221609000916222f3c4955626f7c8895a2afa89b8f827568544a4034281c1004000004101c2934404b556a7683909da9b4aa95887b6f6255483c2f22150900101d2a3643505d69768390908376695d5043362a1d1000000000000000000714202d3a4753606d798686868686868687796c5f5346392c140c0200000000000714202d3a4753606d798686868686868687796c5f5346392c20130600000000000000000815212e3b4854616e7b878a8887868584838281807f7e7d808c99a6a6998c807d7e7f80818283848586878889887b6e6255483b2f221508000a1723303d4a5663707d7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d808d9386796c605346392d2013000000000002080d1114141c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1414110d080200000000000000000000000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000000000b151e272e343f454d53565d606366696a6b6c6c6c6b696763605c55534d444f575c5f60606060606056544e463d32271b0f030004101c2934404b555c6c6c6c6c6c6c6c6c6c6a63594e42362a1d11000714202d3a4753606d7984919392877b6e62564c54606b75818e98958a7e71655b5044372b1f120600000000000b16212b35424c545a5c6060606057555048424c545a5c60606060575550483e34281d110500000000000000000000000000000000000000000000000000121f2b3845525e6b7885919b8f827568564c41332a2a36424d566976838f9c9184776a5e5144372b1e1100000916232f3c4956626f7c8995ab9f9285796d605356626f7c8995ab9f9285796d6053463a2d20130900000000000007111b252d353a3e3f4646464646403f3b352e2830383e424346464646463d3b38332b23190f050000000000000000000000000000000000000000000000000000000000000001070c101314171a1d1e1f201f1f1d1b181414110e0802000000000000000000000000000000000000000000000000050e18212b343d47505a626d727979797979797976695e53463a2d211407000714212d3a46535e697679797979797979716c625a50473d342a21170e050000000000000000000000000000000008121f2831383e4243464646463d3c39332c2f363c3f4146464646403f3b352e251c1207000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c18232e3943505a606d78828d929c9c97949394979d9e948e81786c60594f41382d22170b00000000000000000000000000000000000000000714202d3a4753606d7a8697a1ada99d9083766a564d41362a1e110500000714202d3a46525e697885919eabafa295887c6f6255493c2f221609000916222f3c4955626f7c8895a2afaa9d908477665c5144382c1f1206000006131f2c3845515c677884919eabaea298877a6d6154473a2e21140700101d2a3643505d69768390908376695d5043362a1d10000000000000000006131f2c3845515c67767979797979797979756a5e52452e261e140a000000000006131f2c3845515c67767979797979797979756a5e5245382c1f120600000000000000000714212d3a4754606d797e7d7c7b7a7978767574737271727f8c98a5a5988b7f7271727374757678797a7b7c7d7e7a6d6054473a2d211407000916222f3c4854606b707070707070707070707070707070727e8b9386796c605346392d201300000000050d14191e202129292929292929292929292929292929292929292921201e19140d05000000000000000000000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000000000007121c273039404451575f61686d7073767778797978777673706d67615e57505761686b6c6c6c6c6c6c6260584e43382c1f13070006131f2c3845515c67767979797979797979756a5e5245382c1f120006131f2c3845515c67707d8a95998e8275685e524f59616e7b86929d9184786c605346392d22170b0000000004101c27333d47545e66696c6c6c6c64615a5047545e66696c6c6c6c64615a5045392d21140800000000000000000000000000000000000000000000000000121f2b3845525e6b7884919b8f827568564c4135292a36414c566976828f9c9184776a5e5144372b1e1100000814212e3b4754616e7a8799a3a297897c70635654616e7a8799a3a297897c706356493d31261a0e0200000000010d18232d373f464a4c53535353534d4b474038303a42494e5053535353534948443d352b21160b000000000000000000000000000000000000000000000000000000000000000000000406070a0e101213131312110e0b08070502000000000000000000000000000000000000000000000000000000060f19222b353e48515b62656c6c6c6c6c6c6c6c5e574d42362a1e12050005121e2a36424d575e6c6c6c6c6c6c6c6c65625a50473e352b22180f050000000000000000000000000000000000000d161f262d3235363939393931302d2822242b3033343939393933322f2a241c130a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c2834404b55616c75818e949c94908a8786878a90959d938d80746b6153493f33271b0f030000000000000000000000000000000000000006131f2c3945515d677885919eabab9f928578685e5246392d20140600000815212e3b4854616e7b8797a1adafa295887c6f6255493c2f221609000916222f3c4955626f7c8895a2afac9f9286796d6053463a2d20130900000714202d3a4753606d7a86939facac9f928579685e5246392d20130700101d2a3643505d69768390908376695d5043362a1d10000000000000000004101c2934404b555c6c6c6c6c6c6c6c6c6c6a6359443f3830261c110600000006111c263038404b555c6c6c6c6c6c6c6c6c6c6a63594e42362a1d110400000000000000000613202c3945515d676d71706f6e6d676b6a696867666673808c99a6a6998c7f7366666768696a6b676d6e6f70716d685d5245392c201307000713202c38444f5960636363636363636363636363636365727e8b9386796c605346392d2013000000050e171e252a2d2e3636363636363636363636363636363636363636362e2d2a251e170e050000000000000000000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000000000c18232e39424a515b63696e747a7d808384858586858482807d79746e69605b536873787979797979796f6a6054483b2e221509000714202d3a4753606d798686868686868687796c5f5346392c20130004101c2934404b55616b7683909d92867a6e615447525e6974808d9995897d7063544a3f33281c0f030000000714202c38444f5966707679797979716c61554f5966707679797979716c6155493d3023170a00000000000000000000000000000000000000000000000000111d2a3744505d6a7783909d908377685d52463c33333b46525e687784919c8f8276695c504336291d1000000613202d394653606c7986929fa99a8d8073675753606c7986929fa99a8d807367574d42372b1e12060000000006121e29353f4951575960606060605a57524a4038424c545a5c606060606056544f473d33271c10040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007101a232c363f49515658606060606060605f534d453b31251a0e0200020e1a25313b454d535f60606060606060585650483f352c2319100600000000000000000000000000000000000000040d151c212629292d2d2d2d2423201c171a1f2426272d2d2d2d2625231e19120a010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006131f2c3845515c67717e8b939c928c837d7a797a7e838e939d928a7d70655b5044372b1f12050000000000000000000000000000000000000004101d2935404b55697683909ca9ada297877a6e6154473b2d22170b0107111e2a36414d5665717e8b98a9b3afa295887c6f6255493c2f221609000916222f3c4955626f7c8895a2afaea399887c6f6255493c31261a0d06030615222f3c4855626f7b8899a4afaa9d9084776a564c41362a1e110500101d2a3643505d69768390908376695d5043362a1d100000000000000000000c18232f39434b515f6060606060606060605f5e504a42382e23170b0000000b17232e38424a505e5f60606060606060605f5e5951473d31261a0200000000000000000004111d2935414b555d6064636261605d555d5c5b5a5a6774818d9aa7a79a8d8074675a5a5b5c5d555d6061626364605d564c4135291d11040004101c27333d474f54565656565656565656565656565865727e8b9386796c605346392d20130000020d1720293036393b4343434343434343434343434343434343434343433b3936302920170d0200000000000000000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000004101c2834404a545c606d727b81868a8d8f9191929292918f8d8a85807b726c655c6b78858686868686867c6f6256493c2f231609000714202d3a4753606d7a8693939393939286796c5f5346392c201300000c18232f39434f5964717e8a97998b7f7265554b4d56616e7b87929b8e8175665b5044382b1f12060000000916222f3c4854606b7682868686867e71645754606b7682868686867e7164574b3e3124180b000000000000000000000000000000000000000000000000000f1c2835424f5b6875818e9b92867a6d61574d453f3f454e57616e7a87939b8e8174685b4e4135281b0e000005121f2b3744505b657784919eaa9d918477695f535b657784919eaa9d918477695f53473a2d211408000000000916222e3a46515b62656c6c6c6c6c66635c52473e49545e66696c6c6c6c6c6360594f44382c201307000000000000000000000000000000020507080c10121312110f0c080705020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008111a242d373f464a4c535353535353534846423b33291f140900000009141f29333b424648535353535353534b4a453f362d231a1107000000000000000000000000000000000000000000030a1016191c1d20202020171614100b0e14171a1b202020201a1916130e070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000713202d3a4653606d7984919e938c8076706d6d6e7178818e949d9083786c605346392d20130600000000000000000000000000000000000000000c18242f414d5a6774808d9aa7b3a9978a7d706453493f33271b100d1218252d3946525e6875828f9ca8b5afa295887c6f6255493c2f221609000916222f3c4955626f7c8895a2afb5ab998c7f7266574d42372b1f15120f121c2834404a5465717e8b98abb5a89b8e8175685b4e423025190d0100101d2a3643505d69768390908376695d5043362a1d100000000000000000040c131d2731394045534d545b60666c6c6c6c6c6a5c544a3f34281c10030003101c28343f4a545c6a6c6c6c6c6c66605b544d524e473f352019130c040000000000000000010d18242f3a434b51545857555453514b504f4e4f5b6875828e9ba8a89b8e8175685b4e4e4f504b51535455565854524c443a2f24190d0100000b16212b353d44484a4a4a4a4a4a4a4a4a4a4a4a4b5865727e8b9386796c605346392d2013000008141e29323b4146474f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4746413b32291e140800000000000000000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000000030e18212c3844515c666d757f878d9298999c9d9e9f9f9f9e9c9a98928d867f776d666679869293939393887b6e6255483b2f221508000714202d3a4753606d7a86939f9f9f9f9286796c5f5346392c2013000007121d27313e4653606d7984919d908376675d5146535e6975828f9b9285796c605346392d201306000006131f2b37434e5863707d8994998f82766c61555863707d8994998f82766c6155493d3023170a000000000000000000000000000000000000000000000000000b1825323e4b5865717e8b99998c7f72695f57504c4c50575f6a73808c9a988a7e7164574b3e3124180b0000030f1b27333f49536976838f9ca9a096887b6e6155536976838f9ca9a096887b6e6155483b2f24190d010000000b1825313e4a57626d727979797979736e63574b424e5a6670767979797979706b6054483b2f2216090000000000000000000000000003090e121415191d1e1f1f1e1c181414110e080200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008121b252d343a3e3f464646464646463b3a36312921170d03000000030d17212931363a3b464646464646463e3d3a342d241b1108000000000000000000000000000000000000000000000000050a0d0f10131313130a0a08040003080b0d0e131313130d0c0a0702000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1724303d4a5763707d8a96998e81756e64616061666d78828f9c95897c6f6256493c2f2316090000000000000000000000000000000000000000071825313e4b5864717e8b97a8b2a79a8d8074655b5044372b221c191d242a36414c56616e7b86929facb9afa295887c6f6255493c2f221609000916222f3c4955626f7c8895a2afb6a99c908376695f53473c3127201f1c1f232c3844515c6675818e9ba8b3a9988c7f7265594c3f322619080000101d2a3643505d69768390908376695d5043362a1d1000000000000001070e161e2529323b424651575f666c72797979797975665c5044382b1f12060006121f2b3844505c66757979797979726c665f575146423b3229251e160e07010000000000000007131d28313a4145474b4a4948474540434243505c6976838f9ca9a99c8f8276695c4f43424340454748494a4b4745413a32281e1308000000050f19232b33383c3d3d3d3d3d3d3d3d3d3d3d3f4b5865727e8b9386796c605346392d201300010d1925303b444c52545c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c54524c443b3025190d01000000000000000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000000915202c38434f59606d78818c92999fa2aaa9a8aaa29f9e9e9e9fa29f98928c81786d6d798699a39f9f94877a6e6154473b2e211408000714202d3a4753606d7a8693a0acac9f9286796c5f5346392c2013000008121d262c3844505c6674818e9b92867a6d6053474d5765717e8b9897887b6e6255483b2f22150800000815212e3b47535f6a7683909d92867b6e615a535f6a7683909d92867b6e615a5045392d211408000000000000000000000000000000000000000000000000000814212e3b4754616e7a86929f92857b6e69615a59595a61696e7c86929f92867a6d6154473a2e2114070000000b17222d414e5b6874818e9ba7a8988c7f7265555b6874818e9ba7a8988c7f7265554c4135291d11040000000c1926323f4c5965727f86868686868073665a4d43505c69768286868686867d706356493d3023160a000000000000000000000002080e141a1e212226292b2c2c2b292521201e19140d0801000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009131b23292e3132393939393939392e2d2a251f170f050000000000050f171f252a2d2e3939393939393932312e29221b12090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010e1b2734414e5a6774818d9a93877b6e615c5453545c666f7c8997998c807366594d4033261a0d00000000000000000000000000000000000000000815212e3b4854616e7b8796a0acab9e9184786c6053463e342c2924292f353e46525e6873808c99a3aebbafa295887c6f6255493c2f221609000916222f3c4955626f7c8895a2afb7ab9f94887b6e62574e4339312d2b282b2e343f4953606d7985929fabada297897c6f6356493c302316090000101d2a3643505d69768390908376695d5043362a1d100000000000040c1318202830353e444d525b62696e787f8686868687796d6053463a2d201307000713202d3a4653606d7987868686867f786e69625b524d443e3530282018130c04000000000000010c161f282f35393a3e3d3c3b3a38352f3744515d6a7784909daaaa9d9083776a5d50442e2f35383a3b3c3d3e3a39352f2820160c0100000005101a232c33393c3d3d3d3d3d3d3d3d3d3d3d3f4b5865727e8b9386796c605346392d20130005111e2a36414c565e61696969696969696969696969696969696969696969615e564c41362a1e1105000000000000000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000000020e1a26313b4854606b74808d939fa3ababa49f9b979892919192939a989d9f938f82786d7a8794abb4a094877a6d6154473a2e211407000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c201300030e19242f3840474a5464717e8a9799897c6f6256494854616e7b8796978a7d7164574a3e3124170b00000916222f3c4955626f7c88959b8e8174695f5355626f7c88959b8e8174695f53483e34281d1105000000000000000000000000000000000000000000000000000714202d3946525e6874808d979891837b706c676565676c717b849198978d8073685d5246392d201307000000061a2633404d596673808c99a6a99c8f8276675d596673808c99a6a99c8f8276675d5145392c2013060000000d192633404c5966737f8c9393938d8074675a4d43505d6a7683909393938a7d7064574a3d3124170a00000000000000000000050d14191f262a2d2e32363839393836322e2d2a251e19130c0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010911181e2225252d2d2d2d2d2d2d21211e1a140d0500000000000000050d141a1e21212d2d2d2d2d2d2d2524211d18110900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004060709090909090909090706030000000000000000000000000000000000000000000000000000000000000000000003101c2936434f5c6976828f9c908377695e5247464a54606a7885919b8e8175685b4e4235281b0f02000000000000000000000000000000000000000714212d3a46535e697784919eaaaca196897d70635a50463e38343035394045515b616e7a85929fabb2baafa295887c6f6255493c2f221609000916222f3c4955626f7c8895a2afbdb0a69a8d81746a5f554b433c39383338393f44505b65717e8a97a2adab9f9285796d6053463a2d2013070000101d2a3643505d69768390908376695d5043362a1d1000000000070d161d2429323a414650565e616d727b828c929992877e71665c5044382b1f12060006121f2b3844505c66717e879399928c827b726d615e565046413a3229241d160d07000000000000040d161d24292c2d31302f2e2d2c292935404b556b7884919eabaa9e9184776b544a403428292c2d2e2f30312d2c29241e160d04000000000b17222c363e44494a4a4a4a4a4a4a4a4a4a4a4a4b5865727e8b9386796c605346392d2013000714202d3946525e686e7676767676767676767676767676767676767676766e685e5246392d201407000000000000000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000006121e2b37424e57636f7c87939fa5afa9a199938f8a878584848586888c90959e948d80747b8794a1ada093877a6d6054473a2d211407000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130007131f2b36404a52585a616e7b879a978a7e7164575055575e69788491998c7f7366594c403326190d0005121e2a36424d576673808d9994887c6f62574d576673808d9994887c6f62574d42362c22170c000000000000000000000000000000000000000000000000000005111e2a36414c56616d7a8592999591847d7774727274777e8591969992857a6d61564c4135291d11050000000b1825323e4b5865717e8b98a4ac9f92867a6d605865717e8b98a4ac9f92867a6d6054473a2d22170b0000010d1a2734404d5a6773808d9a9f9b8e8174685b4e44515e6a7784919d9f978a7e7164574b3e3124180b000000000000000000070e171f252a31363a3b3f4345464544423f3b39363029241e160d060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070d12161819202020202020201514120e090300000000000000000003090e12141520202020202020181715110c060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070c10131316161616161616161312100c06000000000000000000000000000000000000000000000000000000000000000004111d2a3744505d6a7783909c8f827569574d423a424e586a7783909c8f8276695c4f4336291c10030000000000000000000000000000000000000005121e2a36424d576673808d99a6b0a89c9083766c6258504745404241464b515a626d75818e989ea0a8b2afa295887c6f6255493c2f221609000916222f3c4955626f7c8895a2afb5aba39f92877b6e675d554e4846443f44464a5059606c7883909da9b1a89b8e8175665c5044382b1f12060000101d2a3643505d69768390908376695d5043362a1d100000000710191f282f353e444c525a61696e767f8690949a93877e716c61544a3f34281c10030003101c28343f4a54616c717e87939a9490867f766e69615a524c443e352f281f191007000000000000040c13181d202125242221201f1f2c3845515d677985929facab9f928578665c5144382c1f1f202122232521201d19130c040000000004101c28333e485055575757575757575757575757575865727e8b9386796c605346392d2013000814212e3b4754616e7a8282828282828282828282828282828282828282827a6e6154473b2e211408000000000000000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000814212e3a47535f6a76828f9aa4afaba1979287827d7a79787778797b7f838a9196928a7e7b8895a1ada093867a6d6053473a2d201407000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013000b1723303c47525c64676c6d798693998c7f7266595a61646c6c7683909b8e8174685b4e4135281b0e000714212d3a46535e697884919c8f82766a5f53535e697884919c8f82766a5f53453c31241a10060000000000000000000000000000000000000000000000000000020e1925303b46525e68707d87929996918a84807f7f81848a91979992877d70685e52443a3024190d010000000a1723303d4a5663707d8996a3aea3998a7d71645463707d8996a3aea3998a7d7164544a3f33281c0f0300010e1b2734414e5a6774818d9aa79b8e8275685b4f45515e6b7884919ea5988b7e7265584b3f3225180c0000000000000000081019202930363b4246484c50515252514f4b4746413b352f282018100700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000106090b0c13131313131313080705020000000000000000000000000002050708131313131313130b0b09050100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b12181c1f202323232323232323201f1c17110a0300000000000000000000000000000000000000000000000000000000000003101d293643505c6976838f9c908376675d51464446535f697884919b8e8275685b4f4235281c0f0200000000000000000000000000000000000000020e1a25313b4855626e7b88949eacab9f948b7e716a615a53514b4e4c52555d606c727f8b93969196a0acafa295887c6f6255493c2f221609000916222f3c4955626f7c8895a2afafa39992999083796d6760585553504a5053545c606b727f8b95a0acaca095897d7063544a3f34281c10030000101d2a3643505d69768390908376695d5043362a1d100000040f19222b313a41454f565e616c717b828b92989a93887e716c615a5042382e23170b0000000b17232e3842505a616c717e88939a98928b827b716c615e564f45413a312b22190f0400000000000001070d111314181716151414202d3a4753606d7a8698a2aeaea29886796d6053463a2d201314151617181413110d080100000000000814202d3944505a61646464646464646464646464646465727e8b9386796c605346392d2013000815212e3b4854616e7b878f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f877b6e6154483b2e211508000000000000000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000815222f3b4855626e7b88949facaea39992857d75716e686b6b666d6e72767d84909492857d8996a3aca09386796d6053463a2d201307000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013000d1a26333f4c58646e7479797985929a8d8073675a616c71797979828f9b8f8275685c4f4235291c0f000815212e3b4854616e7b8796988c7f7265584e54616e7b8796988c7f7265584e433b33291f140900000000000000000000000000000000000000000000000000000008141e2a36414c56606b717e8792989e96918d8c8c8d91969e9892877e716b60564c4132281e1308000000000815222f3b4855626e7b8895a99f9f9b8e8174665b626e7b8895a99f9f9b8e8174665b5044382b1f120600020e1b2835414e5b6874818e9ba79c8f8276695c4f45525f6b7885929ea5988c7f7265594c3f3226190c0000000000000008111a222b323b41464d5355595c5e5f5f5e5c5854524c45413a322a2219100700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c151d23282c2d30303030303030302d2c28231c150c030000000000000000000000000000000000000000000000000000000000020f1b2835424e5b6875818e9b92867a6d605a5351535b616e7b88969a8d8073675a4d4034271a0d0100000000000000000000000000000000000000000914212e3a47535f6975828f9aa4afa69f92867d716c64605c555b565d61676d737e8792989184919eaaafa295887c6f6255493c2f221609000916222f3c4955626f7c8895a2afac9f928692958f81796f6a6462605b545b6062666d727d87929fa7b0a69d9184786c605346392e23170b000000101d2a3643505d69768390908376695d5043362a1d1000000a16212b343d434b515961686d757e858f949f9f93887f716c625a50483e30261c110600000006111c26303e48505a626c717f88939f9f948f857e756d686159514b433d342b21160a0000000000000000010406070b0a09080815212e3b4854616e7b8794aab4b3aa94877a6e6154473b2e21140808090a0b07070401000000000000000a1623303c4955616c707070707070707070707070707070727e8b9386796c605346392d2013000815212e3b4854616e7b87949c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c94877b6e6154483b2e211508000000000000000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000000d192633404c5966737f8c99a6b0ac9f92877c6f6b64615e56545c6062656c707a8290949083909daaaca09386796d6053463a2d201307000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013000e1a2734414d5a67748086868689979a8d8174675a64717e8686868f939c8f8276695c504336291d10000a1724313d4a5764707d8a9798887b6e6255525764707d8a9798887b6e6255524d453b30251a0e020000000000000000000000000000000000000000000000000000020d1925303a444f59626c717d868e93999c9a98989a9c99938e857d716c62594f443a3020160c02000000000714202d3a4753606d7a8697939393939285796c60606d7a8697939393939285796c605346392d20130600020f1c2935424f5c6875828f9ba89c908376695d5044505b667985929fa6998c807366594d4033261a0d00000000000006101a232c343d444d52575f6165696b6c6c6b6965615e56524c443c342b22190f0500000000000000000000050a0d0f1010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010100f0d09040000000000000000000000050a0d0f1010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010100f0d090400000000000000000b151e272e34383a3c3c3c3c3c3c3c3c3a38342e261e150a0000000000000000000000000000000000000000000000000000000000000b1825313e4b5864717e8b98988d80736d63605c60636d75818e9b97897d7063564a3d3023170a00000000000000000000000000000000000000000006121e2b37424d57626f7c87939fa7aea29892867e76706d67686869686d72798088929992867e8a97a4afa295887c6f6255493c2f221609000916222f3c4955626f7c8895a2afa6998c7f8c93938f837c76716e6c666b666c6e72787f879299a3aea99f948a7e71665b5044382b1c1106000000101d2a3643505d69768390908376695d5043362a1d1000030f1b27323d464e555d606b707a818a92979f9b918b7f726d625a50483e362c1e140a00000000000a141e2c363e48505a626d727f8b919b9e97928a817a706b605d554e463d32271b0f030000000000000000000000000000000915222f3c4855626f7b8895a2aeaea195887b6e6255483b2f2215080000000000000000000000000000000a1724313d4a5764707e7d7d7d7d7d7d7d7d7d7d7d7d7d7d7d808d9386796c605346392d2013000815212e3b4854616e7b8794a1a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a194877b6e6154483b2e211508000000000000000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d1003000000000000000005111e2a36424d576976838f9ca9b1a79a8d80736a605954524c4a5053555a61676d798290959095a0abaca09386796d6053463a2d201307000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013000e1a2734414d5a6774808d939393a19a8e8174675b64717d8a93939b9e9d9083766a5d5043372a1d10000c1926333f4c5966727f8c999285796a63615e5766727f8c999285796a63615e574d42362a1e110500000000000000000000000000000000000000000000000000000008131e29323d47505a626b707b81878c8f919292918f8c87817b706b625a50473d32281e0e04000000000006131f2c3945515d677885868686868686867c6f625d677885868686868686867c6f6256493c2f2316090003101c2936434f5c6976828f9ca99d9084776a5d514653606c798698a3a69a8d8073675a4d4034271a0d0100000000020c18222c353e474f565e61696e72767879787775726e68605d564e463d342b21170b0200000000000000030a1016191c1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1c1b1915100a0200000000000000030a1016191c1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1d1c1b1915100a02000000000007121d273039404546494949494949494946443f3830261c110600000000000000000000000000000000000000000000000000000000000714212e3a4754616d7a86929f93887f756f6d666d7076808c939e9185796d6053463a2d201307000000000000000000000000000000000000000000020e1a26313c4754606a74818d95a0a9aaa298928a827d7977757575777a7f848d939a948c7f7c8895a2afa295897c6f6256493c2f231609000916232f3c4956626f7c8995a2afa296897d818e96959087827e7b79787778797b7f848c9299a3abaaa2978f82776c60544a3f33281c0a00000000101d2a3643505d69768390908376695d5043362a1d100007131f2c38434e5860676d747d858e939fa29b918b7f726d625a50483f362d241a0c020000000000020c1a242d363f48505a626d727f8b919ba29f938e857d746d6760584e43382c1f13070000000000000000000000000000000a1623303d495663707c8996a3acaca296897c6f6356493c3023160900000000000000000000000000000013202d394653606c79868a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8d929386796c605346392d2013000815212e3b4854616e7b87949f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f94877b6e6154483b2e211508000000000000000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000714202d3a46525e697885929fabaca095877b6e61584f4746413f44464850555d676e7b85929da0a7b1aca09386796d6053463a2d201307000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013000e1a2734414d5a6774808d9a9fa0a79b8e8174685b64717d8a979fa8aa9d9084776a5d5144372a1e11000e1a2734414d5a6774808d9a91847770706e695e6774808d9a91847770706e695e52463a2d201407000000000000000000000000000000000000000000000000000000020d17202b353f48505961696e747b7f8284858584827f7b746e69615950483f352b20160c00000000000004101d2935404b55687378797979797979796f6a6055687378797979797979796f6a6054483b2e2215090003101d2a3643505d697683909ca99e9184776b5e514754606d7a8793aaa79a8d8174675a4e4134271b0e01000000000a141e2a343e474f5960686e747b7f8384858584827e7a736d685f584f473d33291d140a000000000000040d151c2126292929292929292929292929292929292929292929292929292929292929292929292929292929292929292929292929292825211b140c040000000000040d151c2126292929292929292929292929292929292929292929292929292929292929292929292929292929292929292929292929292825211b140c04000000000c18232e39424b5153565656565656565653504a42382e23170c00000000000000000000000000000000000000000000000000000000000713202d3946525e6873808c959a938b817c7978797d828c929c948b7e71665c5145382c1f13060000000000000000000000000000000000000000000009151f2b37434e58606d79839197a0a8aaa29f948f8a868382818284878b91969f958f82787b8894a1aea296897c6f6356493c3023160900091623303c4956636f7c8996a2aea295887c7a84919899938f8b888685848486888c91969fa3aba9a29892857b6e655b5042382d22170b00000000101d2a3643505d69768390908376695d5043362a1d10000915222e3b4854606a6f79818a91979ea39c918c7f726d625b51483f362d241b12080000000000000008121b242d363f48515b626d727f8c919ca39e97918a81796f6a6054483b2e2215090000000000000000000000000000000b1724313e4a5764717d8a979f9f9f9f978a7d7064574a3d3124170a00000000000000000000000000000013202d394653606c798693939393939393939393939393939393939386796c605346392d2013000815212e3b4854616e7b8793939393939393939393939393939393939393877b6e6154483b2e211508000000000000000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000814212e3b4754616e7b8798a2aeaa9d908377695e53463d393634383a3e434c555e69717e8b97a1adb9aca09386796d6053463a2d201307000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013000e1a2734414d5a6774808d9aa7b3a79b8e8174685b64717d8a97a4b0aa9d9084776a5d5144372a1e11000f1b2835424e5b6875818e9b91847d7d7d7b6e616875818e9b91847d7d7d7b6e6154473b2e21140800000000000000000000000000000000000000000000000000000000050e19232d363f474f575e61696e72767779797776726e69615e574f473f362d23190e05000000000000000c18242f39435761686b6c6c6c6c6c6c6c6260585761686b6c6c6c6c6c6c6c6260584e43382c1f13070004111e2a3744515d6a7784909daa9e9285786b5f4a4754616e7a8794a1a89b8e8175685b4e4235281b0f0200000006111c26303c464f59616b6f7a81878c8f919292918f8b86807a6f6a60594f453b2f261b110600000000030d161f262d323536363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363635312c261e160c02000000030d161f262d323536363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363635312c261e160c02000004101c2834404b545c606363636363636363605c544a3f34281c10030000000000000000000000000000000000000000000000000000000005111d2935414c56606d798390969f938e89868586898f949c958f82786c60544b4034281c100400000000000000000000000000000000000000000000030f1b27323d45515d676e7b8591969fa4aca69f9c9892908f8e8f90939a9e9f9490837a6d7a8794aab4a396897c706356493d3023160a000a1623303d495663707c8996a3aca194887b6f7d8692989f9c9799929291919298989ea0a8aba69f9792867d70695f53493f2f261c110600000000101d2a3643505d69768390908376695d5043362a1d10000916232f3c4956626f7c848e9393939393918c7f726d625b51493f362d241b120900000000000000000009121b242d363f49515b626d727f8c9193939393938e847c6f6256493c2f2316090000000000000000000000000000000c1825323f4b5865727e8b9393939393938b7e7165584b3e3225180b00000000000000000000000000000013202d394653606c798686868686868686868686868686868686868686796c605346392d2013000815212e3b4854616e7b8686868686868686868686868686868686868686867b6e6154483b2e211508000000000000000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d10030000000000000000091623303c4956636f7c8996aab4a79a8e817467574d42342d2a282b2d313a434d57606d7985929eabb8aca09386796d6053463a2d201307000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013000e1a2734414d5a6774808d9aa7aca79b8e8174685b64717d8a97a4acaa9d9084776a5d5144372a1e11000f1c2936424f5c6975828f9c95918989897e72656975828f9c95918989897e7265584b3f3225180c000000000000000000000000000000000000000000000000000000000007111b242d353e454d52575f6165696b6c6c6b6965615f57524d453d352d241b1107000000000000000007121d2731454f575d5f6060606060606056544e4f575d5f6060606060606056544e463d32271b0f030005111e2b3844515e6b7784919eaa9f928579665b504855616e7b8894a1a89b8f8275685c4f4235291c0f020000000b17232e38424e58616b707d858e92999c9e9f9f9e9c98928d847c6f6b60574d41382d22170b000000000a151f2831383e42434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343413d3830281e140a0000000a151f2831383e42434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343413d3830281e140a000006131f2c3845515c666d6f6f6f6f6f6f6f6f6d665c5044382c1f120600000000000000000000000000000000000000000000000000000000010d1925303a45515d676e7a848f949d9b99929292999c9d938e83796d665b5042392e23180c0000000000000000000000000000000000000000000000000a15202935414b555f696e7b848e939a9fa3aaaaa39f9d9b9b9c9d9f9f99928d827a6d6d798698a29f9f96897d7063564a3d3023170a000a1723303d4a5663707d89969f9fa49a877a6d707d8690959da0a39f9e9e9e9fa3aaa9a8a69f9c948f857d706b60574d41382d1d140a0000000000101d2a3643505d69768390908376695d5043362a1d10000e1b2734414e5a67748186868686868686867f736d635b51493f372d241b1209000000000000000000000009121b242d373f49515b636d737f86868686868686868174675a4e4134271b0e0000000000000000000000000000000d192633404c5966737f86868686868686867f7265594c3f3226190c00000000000000000000000000000013202d3946535f6c767979797979797979797979797979797979797979766c5f5346392d2013000714212d3a46535e697679797979797979797979797979797979797979797976695e53463a2d211407000000000000000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000a1724313d4a5764707d8a97a3b0a5988c7f7265594c3f31261e1c1f2028313b45515c6673808d99aab4aca09386796d6053463a2d201307000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013000e1a2734414d5a6774808d9a9f9f9f9b8e8174685b64717d8a979f9f9f9d9084776a5d5144372a1e1100101c2936434f5c6976828f9ca09d96968b7e72656976828f9ca09d96968b7e7265584b3f3225180c00000000000000000000000000000000000000000000000000000000000009121b232c333b42464d5355595c5e5f5f5e5c5955534d46423b332c231b1209000000000000000000010b151f333d454c505253535353535353494843454c5052535353535353534948433d342b21160a000005121f2b3845525e6b7885919eaba29886796c60534955626f7c8895a2a99c8f8376695c504336291d1003000003101c28343f4a545f6a707d8692979fa3ababacabaaaaa39f9691867d6f695e53493f33271b0f03000005101c26313a42494e50505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050504f4e49423a30261b10040005101c26313a42494e50505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050504f4e49423a30261b1004000713202d3a4653606d787c7c7c7c7c7c7c7c786d6053463a2d201307000000000000000000000000000000000000000000000000000000000008131e2935404b555e686e7a828a919598999a999795908981796d675d544a3f30271d1207000000000000000000000000000000000000000000000000040d18242f3a434d575f696e7981878e92989a9c9e9f9f9f9e9d9a98928e8680786d6866798592939393938a7d7164574a3e3124170b000b1724313e4a5764717d8a939393939386796d6b707c838b9195989b9d9e9f9f9f9e9d9b9894908a827b706b60594f453b2f261b0b020000000000101d2a3643505d69768390908376695d5043362a1d10000d1a2733404c58646e747979797979797979736d635b51493f372d251b12090000000000000000000000000009121b252d373f49515b636d737979797979797979746e64584c4033271a0d0000000000000000000000000000000c1825323e4b57636d737979797979797979726d63574a3e3125180c000000000000000000000000000000121e2b37434f5a646c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c645a4f43372b1e120005121e2a36424d575e6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c5e574d42362a1e1205000000000000000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000b1824313e4b5764717e8a97a4b0a4978a7d7164574a3e3124171012161f2834404b54626f7c8998a3aeaca09386796d6053463a2d201307000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013000e1a2734414d5a6774808d93939393938e8174685b64717d8a93939393939084776a5d5144372a1e1100101d293643505c6976838f9ca9aaa3988b7e72656976838f9ca9aaa3988b7e7265584b3f3225180c0000000000000000000000000000000000000000000000000000000000000009111a212930363b4246484c4f515252514f4c4846423b363029211a11090000000000000000000000030d212b333b404445464646464646463c3b383b404445464646464646463c3b38322b22190f04000005121f2b3744505b657985929facaa93877a6d60544956636f7c8996a2a99d9083766a5d5043372a1d1004000006121f2b3844505c666f7c869298a1a9afb5b7b8b8b7b4aea8a19892857b6e655b5044372b1f140900000a16212d38424c545a5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5a544c42382c211509000a16212d38424c545a5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5a544c42382c211509000815212e3b4854616e7b87898989898989877a6d6154473a2e2114070000000000000000000000000000000000000000000000000000000000020c18242f39434c565e686d777e84888b8c8d8c8b87837d746d675d554b42382d1e150b000000000000000000000000000000000000000000000000000007131d28313b454d575f676d747c81868a8d8f9192929291908d8a86817b736d665e6a77838686868686867e7165584b3e3225180b000b1825323e4b5865717e868686868686857866606a6e787e84888c8e909192929291908e8b88837d766e6960594f473d33291d140a000000000000101d2a3643505d69768390908376695d5043362a1d10000b1824303c48535c64676c6c6c6c6c6c6c6c66635b51493f372d251b130900000000000000000000000000000009131b252d373f49515b63666c6c6c6c6c6c6c6c67645c53483c3024180b0000000000000000000000000000000a16222f3b46515b63666c6c6c6c6c6c6c6c65635b51463a2e2216090000000000000000000000000000000f1b27333e49525a5f60606060606060606060606060606060606060605f5a52493e33271b0f00020e1a25313b454d535f6060606060606060606060606060606060606060605f534d453b31251a0e02000000000000000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000b1825313e4b5864717e8b97a4b0a396897d7063564a3d3023170a060d18232e3a4653606d7986929facaca09386796d6053463a2d201307000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013000e1a2734414d5a677480868686868686868174685b64717e8686868686868683776a5d5144372a1e1100101d293643505c6976838f9ca9b1a5988b7e72656976838f9ca9b1a5988b7e7265584b3f3225180c0000000000000000000000000000000000000000000000000000000000000000080f171f252a31363a3b3f4344464644433f3b3a36312a251f170f08000000000000000000000000000f1921292f343738393939393939392f2e2c2f343738393939393939392f2e2c27211910070000000613202d394653606c7986939faca194877a6e61544a5663707d8996a3aa9d9184776a5e5144372b1e070000000713202d3a4653606d78839198a2aab3bbc0c4c5c5c4bfbab2aaa1979083776c6053463b31261a0e02000d1926323e49545e66696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969655e54493d3125190d000d1926323e49545e66696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969696969655e54493d3125190d000815212e3b4854616e7b87949696969694877a6d6154473a2e21140700000000000000000000000000000000000000000000000000000000000007121d27313b444c565d656c71777b7e80807f7e7b76706b605c554b43392f261c0c030000000000000000000000000000000000000000000000000000010c161f2a333b454d555d606a6f757a7d8183848586858583817e7a746e69605c54677177797979797979716c62564a3d3124170b000b1724313d4a56626c71797979797979787368585f666d71777b7f8183858586858583817e7b76706b615e574f473d352b21180b02000000000000101d2a3643505d69768386868376695d5043362a1d10000814202b36414a53585a60606060606060605957514940372e251b1309000000000000000000000000000000000109131b252e37404951575960606060606060605a58534a41362b20140800000000000000000000000000000006121e2a3540495157596060606060606060595751493f352a1e12060000000000000000000000000000000a16212c3740494f535353535353535353535353535353535353535353534f4940372c21160a000009141f29333b4246485353535353535353535353535353535353535353534846423b33291f140900000000000000000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000b1825323e4b5865717e8b98a4afa296897c6f6356493c302316090007131f2c3845515c667683909da9aca09386796d6053463a2d201307000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013000d1a26333f4c58646e7479797979797979746f6459616c71797979797979797771675b4f4236291d1000101d293643505c6976838f9ca9aca5988b7e72656976838f9ca9aca5988b7e7265584b3f3225180c000000000000000000000000000000000000000000000000000000000000000000050d141a1f262a2d2e32363839393836322e2d2a261f1a140d050000000000000000000000000000070f171e24282b2c2d2d2d2d2d2d2d23221f24282b2c2d2d2d2d2d2d2d23221f1b160f07000000000714202d3a4753606d7a869aa4afa195887b6e62554a5764707d8a97a3ab9e9184786b5e51452f23180c000006121e2b37424e5765717e8b95a0aab4bcc5cbd1d2d2d0cbc4bcb3a99f958a7e7164574d42362a1e1205000f1c2935424e5a667076767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767670655a4e4135281b0f000f1c2935424e5a667076767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767670655a4e4135281b0f000815212e3b4854616e7b8794a1a2a2a094877a6d6154473a2e211407000000000000000000000000000000000000000000000000000000000000010b151f29323b444c535b6064696e71737473716e69636059514b433931281d140a00000000000000000000000000000000000000000000000000000000040d18212a333b434b51585f62686d71747678787979787674716d67615f5750555f676a6c6c6c6c6c6c65625a50453a2e211509000915212e3a45505a62656c6c6c6c6c6c6b686157545c60646a6e72757778787979787675726e69636159534d453d352b23190f06000000000000000f1c2935424e5a66707679797670665a4e4235291c0f00030f1a252f3841484c4e53535353535353534c4b4640372e251c1309010000000000000000000000000000000000010a131c252e3740464b4c53535353535353534e4c4841382f251a0f03000000000000000000000000000000020d19232e3740464b4c53535353535353534c4a463f372d23180d0100000000000000000000000000000005101b252e373e4346464646464646464646464646464646464646464646433e372e251b10050000030d17212931363a3b4646464646464646464646464646464646464646463b3a36312921170d0300000000000000000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f2316090004101c2834404b546875828f9ba8aca09386796d6053463a2d201307000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013000b1723303c47525c64676c6c6c6c6c6c6c68645d535a61646c6c6c6c6c6c6c6a675f554a3f33271a0e00101d293643505c6976838f9c9f9f9f988b7e72656976838f9c9f9f9f988b7e7265584b3f3225180c0000000000000000000000000000000000000000000000000000000000000000000003090e141a1e212226292b2c2c2b292622211e1a140e090300000000000000000000000000000000060d13181c1e1f20202020202020161513181c1e1f202020202020201615130f0a0400000000000814212e3b4754616e7a8794a1b6a295887c6f62554b5864717e8b97a4ab9f9285786c554b4034291c1004000814212e3a47535f6a7784919ea7b1bcc5cfd7dcdfdedcd6cec5bbb1a79d908377695f53463a2d21140700101d293643505c697683838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838276695c4f4336291c1000101d293643505c697683838383838383838383838383838383838383838383838383838383838383838383838383838383838383838383838276695c4f4336291c10000815212e3b4854616e7b8794a1aeada094877a6d6154473a2e21140700000000000000000000000000000000000000000000000000000000000000030d172029323a41495053575f626566676664615e57544f45403931281f160b020000000000000000000000000000000000000000000000000000000000060f182129313a40454e53565d606467696b6c6c6c6b6a6764605d55534d444d555b5e606060606060585650483f34291d11050005111d29343f485056586060606060605f5c574f4a5153585f6265686a6b6c6c6c6b6a6865615f57554f46423b332b2319110700000000000000000d1a26323e4a545e66696c6c69665e544a3e32261a0d000008131d262f363c40414646464646464646403e3b352e251c130a0100000000000000000000000000000000000000010a131c252e353b3e40464646464646464641403c362f261d1308000000000000000000000000000000000007121c252e353b3e4046464646464646463f3e3a352d251c1107000000000000000000000000000000000009131c252c33373939393939393939393939393939393939393939393937332c251c130900000000050f171f252a2d2e3939393939393939393939393939393939393939392e2d2a251f170f050000000000000000000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000c18232e414e5b6874818e9ba7aca09386796d6053463a2d201307000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130007131f2b36404a52585a606060606060605b59534b505557606060606060605d5b554d43392e22160a00101d293643505c6976828f93939393938b7e72656976838f93939393938b7e7265584b3f3225180c00000000000000000000000000000000000000000000000000000000000000000000000003090e121415191c1e1f1f1e1c191514120e09030000000000000000000000000000000000000002070c0f1112131313131313130909070c0f11121313131313131309090703000000000000000815222e3b4855616e7b8894a1aca396897c7063564b5865727e8b98a5ac9f928679675c5145382c1f1306000815222f3b4855626e7b8896a0acb9c3ced7e1e8ebebe7e0d6cdc2b8aca095887b6e6155483b2e2215080013202d394653606c79868f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f86796c5f5246392c1f130013202d394653606c79868f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f86796c5f5246392c1f13000815212e3b4854616e7b8794a1aeada094877a6d6154473a2e2114070000000000000000000000000000000000000000000000000000000000000000050e1720282f383f44464d535558595a595854534d48443d342f271f160d0400000000000000000000000000000000000000000000000000000000000000060f181f282f353c43474c5254575a5c5e5f5f5f5e5d5a5754514b46423b444a4f515353535353534b4a453f362d22180c0100010c18222d363f454a4b53535353535352504c454044464e5355595b5d5e5f5f5f5e5d5b5855534d48443e363129211911070000000000000000000a16222d38434c545a5d60605d5a544c43382d22160a0000010b141d252b303334393939393939393933322f2a231c130a01000000000000000000000000000000000000000000010a131c232a2f323339393939393939393433302b251d140b010000000000000000000000000000000000000a131c232a2f3233393939393939393932312e2a231c130a000000000000000000000000000000000000010a131b21272b2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2b27211b130a010000000000050d141a1e21212d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d21211e1a140d05000000000000000000000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f2316090000071a2734404d5a6773808d9aa6aca09386796d6053463a2d201307000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c201300030e19242f3840474c4d535353535353534e4d484145494a53535353535353514f4a433b31271c110600101d293643505c697682868686868686867f7265697682868686868686867e7265584b3f3225180c0000000000000000000000000000000000000000000000000000000000000000000000000000020507080c1011131311100c0807050200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915222f3c4855626f7b88959f9f9f968a7d7063574c5965727f8c989f9fa399867a6d6053473a2d201407000c1825323f4b5865727e8b98a8b2bdccd5e0e9f3f9f8f2e8dfd4c8bcb1a7988b7e7165584b3e3225180b0013202d394653606c7986939c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9286796c5f5246392c1f130013202d394653606c7986939c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9286796c5f5246392c1f13000815212e3b4854616e7b8794a1acaca094877a6d6154473a2e211407000000000000000000000000000000000000000000000000000000000000000000050e161d262d33373c4247484b4d4d4c4b4846423b383329231d150d04000000000000000000000000000000000000000000000000000000000000000000060d161d242932373a4145474a4e505152535252504e4b4745413a3631393f43444646464646463e3d3a342d241b110600000006111b242d343a3d3e4646464646464544403b34383c4347484c4e505252535252504e4b4846423b38332a251f170f070000000000000000000005111c27313a434a4e505353504e4a433a31271c1105000000020b131a202427272d2d2d2d2d2d2d2d2625231e19120a010000000000000000000000000000000000000000000000010a12191e2325262d2d2d2d2d2d2d2d272724201a130b0200000000000000000000000000000000000000010a12191e2225262d2d2d2d2d2d2d2d2625221e18110a0100000000000000000000000000000000000000010910161b1e202020202020202020202020202020202020202020201e1b161009010000000000000003090e1214152020202020202020202020202020202020202020201514120e090300000000000000000000000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d201307000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013000008121d262f363c3f414646464646464641403c37393c3e4646464646464644423f3931291f150b00000f1c2835414e5a66707679797979797979726d6266707679797979797979726d62564a3d3124180b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000091623303c4956636f7c8993939393938a7e7164574c5966737f8c9393939393877a6d6154473a2e211407000d1a2633404d596673808c99a6b3bfced9e7f2fbfffffaf1e4d9cebfb3a6998c807366594d4033261a0d0013202d394653606c7986939f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9285796c5f5246392c1f130013202d394653606c7986939f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9285796c5f5246392c1f13000815212e3b4854616e7b87949f9f9f9f94877a6d6154473a2e21140700000000000000000000000000000000000000000000000000000000000000000000040b141b22272b31373a3b3e4041403e3b3a36312c272118120b030000000000000000000000000000000000000000000000000000000000000000000000040c131820262b2f35393a3e4143454546464543413e3a39352f2a262e33363739393939393932312e29221b1209000000000009121b22292e31323939393939393837342f282c31373a3b3f4244454546464543423f3b3a36312c28211a140d050000000000000000000000000a151f2831383e4243464643423e3831281f150a000000000001080f14181a1b2020202020202020191916120d07000000000000000000000000000000000000000000000000000000070d1216191920202020202020201b1a18140f080100000000000000000000000000000000000000000000070d121618192020202020202020191816120d070000000000000000000000000000000000000000000000050a0f1213131313131313131313131313131313131313131313120f0a0500000000000000000000000205070813131313131313131313131313131313131313131308070502000000000000000000000000000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d201307000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130000010b141d242b303334393939393939393534302b2d3031393939393939393736332e271f170d0400000d1926323e49545e66696c6c6c6c6c6c6c65625b5e66696c6c6c6c6c6c6c65625b51453a2e2215090000000000000000000000000000000000000000000000000000000000000000050a0d0f10131313130b0a080500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1723303d4a5663707d868686868686867e7165584d5a677380868686868686867b6e6155483b2e221508000e1b2734414e5a6774818d9aa7b4c0cddae7f7fffffffff5e7dacdc0b4a79a8d8174675a4e4134271b0e0013202d394653606c79869393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939285796c5f5246392c1f130013202d394653606c79869393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939285796c5f5246392c1f13000815212e3b4854616e7b87939393939393877a6d6154473a2e2114070000000000000000000000000000000000000000000000000000000000000000000000020a11171b1f262b2e2f32333433312e2d2a251f1c160c07010000000000000000000000000000000000000000000000000000000000000000000000000001070d151b1e24292c2d31343638393939383734312d2c29241d1a22272a2b2d2d2d2d2d2d2524211d181109000000000000000911181d2124252d2d2d2d2d2d2c2b28241c1f262b2e2f32353738393939383735322e2d2a261f1c170e090300000000000000000000000000030d161f272d32353639393635322d271f160d030000000000000003080b0d0e13131313131313130d0c0a0602000000000000000000000000000000000000000000000000000000000002060a0c0d13131313131313130e0d0b08030000000000000000000000000000000000000000000000000002060a0c0d13131313131313130c0c09060100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d201307000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013000000020b12191f2326272d2d2d2d2d2d2d282724202123242d2d2d2d2d2d2d2a2927221c150d050000000915212d38424c545a5c60606060606060585651545a5c60606060606060585651493f34291d1105000000000000000000000000000000000000000000000000000000000000030a1016191c1d20202020181714110c060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000916232f3c4855606b7079797979797979716c62564b58646e737979797979797976695f53463a2d211407000d1a2733404d5a6673808d99a6b3c0cfdae6f3fcfffffbf2e9d9ccc0b3a6998d8073665a4d4033271a0d0013202d394653606c79868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686796c5f5246392c1f130013202d394653606c79868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686796c5f5246392c1f13000815212e3b4854616e7b86868686868686867a6d6154473a2e21140700000000000000000000000000000000000000000000000000000000000000000000000000060b0f151a1e2122252627262521211e1a14100b050000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0f13191d20212427292b2c2c2c2b2a272421201d18130e171b1d1e202020202020181715110c06000000000000000000060c111517182020202020201f1e1c1810151a1f212226282a2b2c2c2c2b2a282522211e1a14100b0500000000000000000000000000000000040d151c2226292a2d2d2a2926221c150d0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003060712131313131311110e0b0601000000000000000000000000060a0e1011131313131313100f0d0a050000000000000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d201307000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130000000001080e13171a1a202020202020201b1a1814141717202020202020201e1d1a16110b040000000005101b26303a42494e50535353535353534b4a45494e50535353535353534b4a453f372d23180c010000000000000000000000000000000000000000000000000000000000040d151b212628292d2d2d2d2423211d17100800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202c38444f5960636c6c6c6c6c6c6c65625a5047525c64676c6c6c6c6c6c6c6c5f574d42362a1e1205000c1925323f4c5865727f8b98a9b3bec9d5e1eaf4f9f8f3e9e0d5c9bdb2a8988b7f7265584c3f3225190c0013202d3946535f6c7679797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797974695d5144382b1f120013202d3946535f6c7679797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797974695d5144382b1f12000714202d3a46525e6976797979797979797976685e5246392d20130700000000000000000000000000000000000000000000000000000000000000000000000000000003090e121415181a1a19181514120e090300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001080d111314171b1d1e1f201f1f1d1b181413110d07010b0e10111313131313130b0b09050100000000000000000000000105090b0b13131313131312110f0c040a0f121415191b1d1f1f201f1f1d1b181514120e090300000000000000000000000000000000000000030a11161a1c1d20201d1c1a16110a030000000000000000000000000000000000000000000000000000000000000000000000000000000000020507080b0e111112131312110f0c0908060300000000000000000406070b0f1213131211100e0c0b09060100000000000000000000000000000000000000000000000000000406070a0d0f11121313131212100e0c09060603000000000000000000000000000000000000000000000000000000000000000000000000000000000000060c1012131f20202020201e1d1b17120c04000000000000000000040b11161a1d1e2020202020201d1c1916100a03000000000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d201307000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c201300000000000003070b0d0e131313131313130e0e0c08080a0b1313131313131311100e0a06000000000000000a141e2830383e4143464646464646463f3d3a3e4143464646464646463f3d3a342d241b11060000000000000000000000000000000000000000000000000000000000000d161f262d3235363939393931302d28221a12080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101c27333d474f55566060606060606058565048404a52585a606060606060605f534d453b31261a0e0200091623303c4956636f7c8997a1adb9c4cfd9e2e8ebebe7e1d7cec6b9ada196887c6f6255493c2f22160900121e2b37434f5a646c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6962584d4135291c1000121e2b37434f5a646c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6962584d4135291c100005121e2a36424d575e6c6c6c6c6c6c6c6c6c6c5e564c41362a1d11050000000000000000000000000000000000000000000000000000000000000000000000000000000000020608080b0d0e0d0b0807050200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010407070b0e101212131312100e0b07060401000000020404060606060606000000000000000000000000000000000000000000060606060606050503000000020608080c0f111212131312100f0c080705020000000000000000000000000000000000000000000000050a0d0f101313100f0d0a05000000000000000000000000000000000000000000000000000000000000000000000000000000000003090e121415181b1d1e1f201f1f1d1b191515120f0a0401000000070c101313181c1e1f201f1e1d1b181815120d060000000000000000000000000000000000000000000001070c10131416191c1d1f1f20201f1e1d1b191613120f0b060000000000000000000000000000000000000000000000000000000000000000000000000000030a11171c1f202c2d2d2d2d2d2b2a27231d160e0600000000000000050d151c2227292a2d2d2d2d2d2d292926211c150d040000000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d201307000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c161e262d3235363939393939393932312e3235363939393939393932312e29231b120900000000000000000000000000000000000000000000000000000000000008111f2831383e4243464646463e3d39342c241a1006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b16212c353d44484a535353535353534b4a453f3840474b4d535353535353534846423b33291f140900000613202d394653606c7885929ea9b3bdc7d0d8dddfdedcd7cfc6bcb2a89e9184776c605346392d201306000f1b27333e49525a5f60606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060605f5d5850463b3025190d000f1b27333e49525a5f60606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060605f5d5850463b3025190d00020e1a25303b454d525f60606060606060605f524c443a3025190d010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0f141a1e212125282a2b2c2c2c2b2a282622211f1b15110d08030b12181c1f2025292b2c2c2c2b2a272524221d18110901000000000000000000000000000000000000040a0f12181c1f202326282a2b2c2c2c2c2b2a282523201f1c17110f0a0300000000000000000000000000000000000000000000000000000000000000000000030c151c23282c2d3939393939393837332e2820180e040000000000040d171f272e3336373939393939393635322d261f160d0300000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d201307000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c201300000000000002070a0c0d131313130e0d0b080303070b0d0e131313130d0c0a06020000000000000000000000040c141b212628292d2d2d2d2d2d2d2524222628292d2d2d2d2d2d2d2524221d181109000000000000000000000000000000000000000000000000000000000000050f1a23313a42494e50535353534b49453e362c22170c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f1a232c33383c3d464646464646463e3d3a342e363b3f40464646464646463b3a36312921170d03000006121f2b3844505b6673808c97a1abb5bdc5ccd2d2d2d1cbc4bcb4aaa0968c7f72655b5044372b1f1205000a16212c3740494f53535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535352514d463e342a1f1408000a16212c3740494f53535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535352514d463e342a1f1408000009141f29333b42464853535353535353535346413a32281e13080000000000000000000000000000000000000000000000000000000000030608091313131313120707050100000000000000000000000000000003060809131313131313131313131313131313131313131313131313130b0a080400000000000000000000000000000306131313131313131308070502000000000000000000000005080a0b13131313130e0d0b0803000000000000000000000306080913131313131313130603000000000000000000000000000004090c0e0f13131313131313130908060300000000000000000000000000000000000000000000000000000000020507081213131313131313100706040000000000000000000000000000000000060c161b1f252a2d2e31343738393939383735322f2e2b26201d19130c151d23282c2d32353839393838363432312e29231b130900000000000000000000000000000000040a0f161b1d23292c2d303335373839393939383635322f2d2b28221c1b150e090300000000000000000000000000000000000000000000000000000000000000000a151e262e34383a45464646464644433f39322a20160c01000000000b151f2931393f424446464646464643423e3831281f150a00000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d201307000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130000000000070e1316191a202020201b1a18140f0e13171a1a20202020191916120d070000000000000000000000030a1015191c1d20202020202020181815191c1d20202020202020181815110c06000000000000000000000000000000000000000000000000000000000000000b16212b35424c545a5c60606060575550483e34281d11050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008111a21272c2f303939393939393932312e29242a2f3334393939393939392e2d2a261f170f06000000030f1c28333f4a54606d79859199a3abb3bbc0c4c5c5c4bfbab2aaa2989184796d6053493f33271b0f030005101b252e373e434646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464644413b342c22180d020005101b252e373e434646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464644413b342c22180d020000020d17212930363a3b4646464646464646463936302820160c02000000000000000000000000000000000000000000000000000000040a0f12151520202020201f1413110d08020000000000000000000000040a0f12151520202020202020202020202020202020202020202020202020171714110c0500000000000000000000060c101220202020202020201514120e090200000000000000060c1114171820202020201b1a18140f0801000000000000040a0f131516202020202020202012100c060000000000000000000002090f15191b1c20202020202020201615130f0a0400000000000000000000000000000000000000000000000002090e1114141f202020202020201d1312100c0700000000000000000000000000030a111720272b31363a3b3e4144444546464544423f3c3b37322c29241e191e272e34383a3e42454646454443413f3d3a342d251b11060000000000000000000000000000060b151b21272c2f34383a3d40424445464646454543413f3c3938332d2b26201a150b0600000000000000000000000000000000000000000000000000000000000006111c2630383f4446525353535353514f4b443c32281d120600000006111c27313b434a4f51535353535353504e49423a31261c1005000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d201307000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013000000010a12191f2325262d2d2d2d282724201a1a1f2426272d2d2d2d2625231e19120a01000000000000000000000005090d0f10131313131313130c0b090d0f10131313131313130c0b0905010000000000000000000000000000000000000000000000000000000000000004101c27333d47545e66696c6c6c6c64615a5045392d2114080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080f161c2023232d2d2d2d2d2d2d2524211d191f2326272d2d2d2d2d2d2d22211e1a140d0600000000000b17222d3845515d67707d879299a2aaafb6b7b8b8b7b4aea8a19892867c6f665c5141382d22170b00000009131c252c3337393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393835302a221a100600000009131c252c3337393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393835302a221a100600000000050f171f252a2d2e39393939393939392e2d2a251e160e05000000000000000000000000000000000000000000000000000000060e151b1f21222c2d2d2d2d2c21201d19130c04000000000000000000060e151b1f21222d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2423211c17100800000000000000030a11171c1f2d2d2d2d2d2d2d2d21201e1a140d0500000000000810171d2123242d2d2d2d2d272724201a130b0200000000070f151b1f22222d2d2d2d2d2d2d2d1f1c17110a0300000000000000030c141b202528282d2d2d2d2d2d2d2c22211f1b150e0700000000000000000000000000000000000000000000050d141a1e20212c2d2d2d2d2d2d2d2a201f1c18120b0300000000000000000000030c151c232832373b4246484b4e505152535252504e4c4847433c39352f28222b30394045464b4f5152535251504e4b4a463f372d23180d010000000000000000000000020a111720262b323839404547494c4f50525253535251504e4c4946443f3837312b262017110a02000000000000000000000000000000000000000000000000000000000c17232e38424a50535f60606060605e5c564e44392e23170b0000000a16222e39434d555b5d6060606060605c5a544c42382d21160a000000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d201307000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130000000a131c242a2f3233393939393433302b25242b3033343939393933322f2a231c130a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202c38444f5966707679797979716c6155493d3023170a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050b1014161720202020202020181715110e1317191a202020202020201514120e090300000000000006111c2935404b55606b717e8792989fa4acabacabaaaaa39f9691867d706a5f544b402f261b1106000000010a131b21272b2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2c2b29251f18100800000000010a131b21272b2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2c2b29251f181008000000000000050d141a1e20212d2d2d2d2d2d2d2d21201d19130c0500000000000000000000000000000000000000000000000000000006101820262b2e2f3939393939382e2d29251e160e040000000000000006101820262b2e2f3939393939393939393939393939393939393939393939393931302d28221a12080000000000030c151c23282c39393939393939392e2d2a251f170f0500000008121a22282d303139393939393433302b251d140b00000007101920272b2e2f39393939393939392c28231c150c030000000000020c151e252c31343539393939393939392f2e2b26201810070000000000000000000000000000000000000000050e171f252a2d2e3939393939393939372d2c28231c150c030000000000000000030d151e262e343d43474d5354585b5d5e5f5f5f5e5d5b5955534e4745413a3129343c424b5153585c5e5f5f5f5e5d5a585651493f34291d120600000000000000000000040b141c222832373d43484b515356595b5d5e5f5f5f5f5e5d5b585653504a47433c373127221b140b03000000000000000000000000000000000000000000000000000003101c28343f4a545c606c6c6c6c6c6c6b6760564b3f33271b0e0000010e1a27333f4a555f676a6c6c6c6c6c6c69665e54493e3226190d010000000000000000000000000000000003101d2a3643505d69768390908376695d5043362a1d100300000000000000000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d201307000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013000007121c252e353b3f404646464641403c362f2f363c3f4146464646403e3b352e251c0e0500000000000000000000060a0e1011121313131212100e0b07070501000000000000000000000000000000000000020507081313131313131313070705010000000000000000000916222f3c4854606b7682868686867e7164574b3e3124180b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000407090a131313131313130b0b090502070b0d0d13131313131313080705020000000000000000000d18242f3a434f59626c717d858e939a9c9e9f9f9d9c98928d847c706b61584e42392e1d140a0000000000010910161b1e2020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020201f1f1c19140d06000000000000010910161b1e2020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020201f1f1c19140d06000000000000000002090e12141520202020202020201413110d0802000000000000000000000000000000000000000000000000000000040e18222a31373a3c4646464646453a3935302820160c020000000000040e18222a32373b3c464646464646464646464646464646464646464646464646463e3c39332c241a1005000000000a151e262e343846464646464646463b3a36302921170d020006101a242c34393d3e464646464641403c362f261d0d0300040f19222b32373b3c464646464646464638342e261e150a000000000009141e2730373d414246464646464646463c3b37322a22180d03000000000000000000000000000000000000020b17202930363a3b4546464646464646433a38342e271e150b00000000000000010b151f2730383f444e54575e6164676a6b6c6c6c6b6a6865625f5854524c433f353c464e545c6065686b6c6c6b6b696765625b51463a2e221509000000000000000000040d161d262d333c43474f54555c606366686a6b6c6c6c6c6b69686562605b54534e47423c332d261d150d030000000000000000000000000000000000000000000000000006121f2c3844505c666d7879797979797772675c4f43372a1d11000003101d2936424f5b6771777979797979797670665a4e4235291c0f030000000000000000000000000000000203101d2a3643505d69768390908376695d5043362a1d100302000000000000000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d201307000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c201300020e19242e3740474b4d535353534e4c4841383840474c4d535353534c4b4640372e20170d0200000000000000040b11161a1d1e1f2020201f1e1d1b181413110d0802000000000000000000000000000002090e12141520202020202020201413110d080200000000000006131f2b37434e5863707d8994998f82766c6155493d3023170a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007131d28313d47505a626b707b81878c8f919292918f8b86807a6f6a61594f463c30271d0b0200000000000000050a0f121313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131312100d0802000000000000000000050a0f121313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131312100d080200000000000000000000000205070813131313131313130707050100000000000000000000000000000000000000000000000000000000000a15202a343c4347485353535353524746413a32281e130800000000000a15202a343c434748535353535353535353535353535353535353535353535353534a49453e362c22170c00000006111c2630383f4453535353535353534846423b33291f1409000c17222c363e45494b53535353534e4c4841382f1f150b010a15202b343c4347495353535353535353443f3830261c1106000000040f1b25303942484d4f53535353535353534947433c342a1f150b0100000000000000000000000000000000000a141d29333b4246475253535353535353504644403930271c120700000000000007121d273139424a50586062696e71747777787979787775726f6a66605d56504540454e5860666d717578797978777674726d62564a3d3124180b0000000000000000030c161f282f383f444e54596063676d707375777879797978787674726f6c66625f58534d443f382f271f150d030000000000000000000000000000000000000000000000000713202d3a4653606d7886868686868684776b5e5144382b1e11000004111e2a3744515d6a77838686868686868276695c504336291d100300000000000000000000000000050a0f12101d2a3643505d69768390908376695d5043362a1d10120f0a0500000000000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d201307000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130007131f2a354049525759606060605b58534a41404a52585a60606060595751494032291e1408000000000000050e161c2227292a2c2c2d2c2c2b29282521201d19130f0a030000000000000000000000050d141a1e20212d2d2d2d2d2d2d2d21201d19130c0500000000000815212e3b47535f6a7683909d92867b6e615a5045392d211408000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c161f2b353f48505961696e757b7f8384858584827e7b736d6860584f473e342a1e150b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1b26313c464e53555f606060605f54524c443a3025190c03000000030f1b26323c464e535560606060606060606060606060606060606060606060606060575550483e33281c110400000c17232e38424a505f606060606060605f524d453b30251a0e05111d28343e4850555760606060605a58534a4131271d12070f1b27323c464e5455606060606060605f504a42382e23170c0000000915202c37424b53595b606060606060605f55534e463c31271d12070000000000000000000000000000000006111b262f3b454d52545f606060606060605d53514a42392e23180c0000000000020c18242f39434b545c606a6f757b7e8183848586858583817f7c78726d68625a514b4d57606a6f797e82848586858483817f7265584b3f3225180c00000000000000000b151e283139424a50585f626b6f75797d7f828385858686858483817f7c79746f6a625f575049413931271f150b010000000000000000000000000000000000000000000000091623303c4956636f7c89989393938d8174675a4e4134271b0e000004111e2a3744515d6a778490939393938f8376695c504336291d10030000000000000000000000010910161b1e20202a3643505d69768390908376695d5043362a20201e1b161009010000000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d201307000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013000a16232f3b47525c63666c6c6c6c67645c534547525c64676c6c6c6c66635b51443b3025190e0100000000040e1720272e3336373939393939383634312e2d2a251e1a150e06000000000000000000050f171f252a2d2e39393939393939392e2d2a251e160e05000000000916222f3c4955626f7c88959b8e8174695f53483e34281d110500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d19232d363f474f575f61696e72767879787775726e69615e564e463e352c22190c0300000000000000000005090d0f101313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313130f0f0d09040000000000000000000000000205070813131313131311100e0b0600000407090a1313131313130e0d0b0803000000000000000000000001070c0f11121313131313070705010000000000000000000000000105090b0b13131313100f0d09050000000000000000000000000000000000000000000000000006121f2b37434e585f626c6c6c6c6c6b615e564c4135291e150b00000006121f2b37434e585f626c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c64615a5045392d2114080003101c28343f4a545c6c6c6c6c6c6c6c6c6c5e574d42362a1e120814212d3945505a61646c6c6c6c6c67645c5343392f23180c131f2b37434e5860626c6c6c6c6c6c6c6c5c544a3f34281c100300000c1925313d48535d65686c6c6c6c6c6c6c6c625f584e43392f24180e050000000000000000000000000000030c17222d38414d575e616c6c6c6c6c6c6c6c6a605c544a4034281c1004000000000a141e2935404b555d666d747c82878b8e909192929291908e8c88847f7a716d605d55535f696f7c848b8f9192929291908d86796c605346392d20130000000000000007121d273039434b545b606a6f767c8185898c8e90919292929291908e8b8985817c756e69605b534b433931271d12070000000000000000000000000000000000000000000004111d2935414c566673808c99aaa3998a7d7064574a3d3124170a000004111e2a3744515d6a7784909d9f9f9c8f8376695c504336291d100300000000000000000000010a131b21272b2d2d2d3643505d69768390908376695d5043362d2d2d2b27211b130a0100000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d201307000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013000c1925323f4b57636e7379797979746f64574d4c58646e7479797979736d63564c41362a1d1207000000000b16202932393f434445464646454543413e3a3936302b2620180f0900000000000000020d17212930363a3b4646464646464646463936302820160c02000005121e2a36424d576673808d9994887c6f62574d42362c22170c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007111b242d353e454d53575f6266696b6c6c6a6965615e56524c443d342c231a10070000000000000000020a1015191c1c2020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020201c1b1915100902000000000000000002080e1114142020202020201e1d1a17110b0b101316162020202020201b1a18140f08010000000000000000050c12181b1e1f20202020201413110d0802000000000000000000060c11151718202020201c1c1915100a0200000000000000000000000000000000000000000000000815212e3a47535f6a6f7979797979786d685e52463d30271c120700000815212e3b47535f6a7679797979797979797979797979797979797979797979797979716c6155493c3023170a0006121f2c3844505c66767979797979797976695e52463a2d20140a1723303d4955616c717979797979746e64554b4034291c1015222e3b4754606a767979797979797976665c5044382c1f120600020e1b2834414d59656f7579797979797979796f6a5f554b40352920170b02000000000000000000000000000b151e27333f49535e696e7879797979797979766d665c5144382c1f120600000006111c26303845515d676d7880898f93999a9d9e9f9f9f9e9d9b9896918c857e756d675d58626e7b8691969b9e9f9f9e9e9c9386796c605346392d2013000000000000040d18232e39434b555d666c737c83898e9298999b9d9e9f9f9f9f9e9c9b9897918d88827b736c655d554b43392f24180e050000000000000000000000000000000000000000000713202c3945525d687683909da99f92867a6d6054473a2d211407000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d10030000000000000000000009131c252c33373939393943505d69768390908376695d50433939393937332c251c130900000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d201307000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013000d1a2633404d59667380868686868174695f534d5a677480868686867f73685e5246392f23180c00000006111c27323b434a4f51525353535251504e4b4746413a37312a221b120900000000000009141f29333b42464853535353535353535346413a32281e130800000714212d3a46535e697884919c8f82766a5f53453c31241a10060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009121b232c333b42464d5355595c5e5f5f5e5c5854524d46413a322b221a11080000000000000000040c141b212528292d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d292825211b140c03000000000000050d14191e20212d2d2d2d2d2d2a2a27221d16161b2022232d2d2d2d2d2d272724201a130b02000000000000060f171e23282a2b2d2d2d2d2d21201d19130c04000000000000000911181d2124252d2d2d2d292826211b140c04000000000000000000000000000000000000000000000915222f3c4855626f7c8786868686857a6d61594f42392e23180c03000915222f3c4855626f7c868686868686868686868686868686868686868686868686867e7164574a3e3124170b000713202d3a4653606d78868686868686867b6e6154483b2e2115121e2a36424d5764717e86868686868074675c5145382c1f1416222f3c4955626f7c86868686868686786d6053463a2d20130700020f1c2835424f5b68758286868686868686867c6f675d51453e32291d140a00000000000000000000000007121d27303944505b656e7b858686868686868683796d6053463a2d2013070000000b17232e3842505a606d79828d929b9fa4ababa39f9d9c9b9c9d9fa19e97928b82796d685f6a76828f98a1a8aaa39f9995949386796c605346392d20130000000000010c161f2834404b555d676d78808790949b9fa2a9a29e9c9b9a9a9b9d9fa3a9a19e9a948f877f776d675d554b40352920170d0200000000000000000000000000000000000000000714212d3a4754606d7a86939fa99c908376675d5145392c201306000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d100300000000000000000005101b252e373e434646464646505d69768390908376695d504646464646433e372e251b1005000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d201307000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013000714202d3a4753606d7984919392877b6e62564c54606d7a85919392867a6e61554b4034291c100400000a16222e39434d555b5d5f5f605f5f5e5c5b5854524c47433c342d241b110800000000020e1a25303b454d525f60606060606060605f524c443a3025190d01000815212e3b4854616e7b8796988c7f7265584e433b33291f1409000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009111a212931363c4247484c50515252514f4b4746423b363028201910080000000000000000020c161e262c3235363939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393635312c261e150c0200000000050e171e252a2d2e3939393939393736332e272021272c2f303939393939393433302b251d140b0100000000050f1821292f3437383939393939392d29241e160e04000000000009121b22292e3132393939393635322d261e160c000000000000000000000000000000000000000000000815212e3a47535f6a73808d9693978e81746b60544a4034281f1409000916232f3c4956626f7c8993939393939393939393939393939393939393939393938a7d7164574a3e3124170b000713202d3a4653606d79869393939393877b6e6154483b2e211514212d3a46535e6976828f9393939285796d6053473b30251a16222f3c4955626f7c88939393939386796d6053463a2d20130700000714212d3a4754606d7a849199939393999183796d605a50443b2f261b110600000000000000000000040d18232e39424e58606c77828f979393939392867b6e665c5144382c1f1206000003101c28343f4a54616c74818e949da4aca7a09d9992908f8f8f9192999a9e9f948f837a6d666f7c88949faaaea398928c88878886796c605346392d2013000000000008131e28313a45515c676d79828d92999fa6a39f9a97928f8e8d8e8e9092989b9fa3a69e99928c82796d675d51453f32291e140800000000000000000000000000000000000000000b1724313e4a5764717d8a99a4a9998c7f7366554b4135291d1104000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d10030000000000000000000a16212c3740494f5353535353535d69768390908376695d5353535353534f4940372c21160a000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d201307000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130006131f2c3845515c67707d8a95998e8175685e52515d67717e8a96988d8073675c5145382c1f130600000e1a27333f4a555f676a6c6c6c6c6c6b696764615e56534e463e362d23190b0200000005121e2a36424d575e6c6c6c6c6c6c6c6c6c6c5e564c41362a1d1105000a1724313d4a5764707d8a9798887b6e6255524d453b30251a0e020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080f171f262a31373a3b3f4345464544423f3b3a36302a251e160e070000000000000000000a141e2830383d414346464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464642413d3730271e1409000000020d1720293036393b46464646464644433f3932292b32383b3d46464646464641403c362f261d1308000000010c17212a333a4044454646464646463935302820160c0200000006111b242d343a3d3e4646464643413e3830281e110700000000000000000000000000000000000000000006121f2b37434e58606d7984919e9f93887d6f665c51443b31261a0d04091623303c4956636f7c89969f9fa8a19e9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c978a7d7164574a3e3124170b000713202d3a4653606d7986939f9f9f94877b6e6154483b2e21151b27333f4953616e7b87939f9fa2978a7e7164574d42362a1e16222f3c4955626f7c88959f9f9f9386796d6053463a2d20130700000613202c3945525d686f7c87929fa69fa0958d81746c61564d41382d22170d030000000000000000010c161f2834404b545f6a727f8b949fa9a89e938b7e71695f544a4034281c1004000006121f2b3844505c66717e8b939ea6aea59d95908a86838282838486898d92979f959083786d73808d99a6b0a89f9286807c7a7b7d7063574a3d3024170a00000000010d19242f3a43505a606d79828f949fa3a7a099928e898583818181828386898e92999fa7a39f948f82796d605b51443b3025190e0200000000000000000000000000000000000006121e2b37424d576774818e9aaba297897c6f6256493c2f24180d01000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d10030000000000000000000f1b27333e49525a5f60606060606069768390908376696060606060605f5a52493e33271b0f000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d201307000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130004101c2934404b55616b7683909d92867a6d61544c55606c7884919d9285796d6053473a2d2014070000101d2936434f5b6771777879797978787674716d68625f5850483e352b1d140a0000000714202d3a46525e6976797979797979797976685e5246392d201307000c1926333f4c5966727f8c999285796a63615e574d42362a1e1105000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060d141a20262b2e2f33363839393736322e2d2a251f19130c0500000000000000000005101b26303a42494e4f5353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353534f4d49423930261b1004000008141e29323b414653535353535353514f4a443b32353d4448495353535353534e4c4841382f251a0f03000007121e29333c454b505253535353535346413a32281e13080000010c18222d363f454a4b535353534f4e49423a3023190f050000000000000000000000000000000000000000030f1b26313c45515d67707d8a939e9a9183786d60574d42362a1f160c0a1623303d495663707c899aa4aca196918f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8a7d7164574a3e3124170b000713202d3a4653606d798693a0aca194877b6e6154483b2e21151f2b3744505b65737f8c99a4afa99c8f8276695e52463a2d2016222f3c4955626f7c8895a2aca09386796d6053463a2d201307000004111d2935414c56606a727f8c949ea8a89d928a7d70695e53493f33271f150b010000000000000008131e28313a45515c666f7c86929fa6aba1968e81756c62574d42392e23180c0000000713202d3a4653606d7884919ea5afa69d938e837d797776757677797c80858c9298958e81747683909ca9aca0958a7e736f6e6e706b6155483c2f2316090000000004111d2935414c56616c74818e949ea6a69f959087817c79767474747577797d818790959ea5a69e948e81756d62564c41362a1e14080000000000000000000000000000000000000814212e3a47535f697884919eab9e9285796c605346392d20130700000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d1003000000000000000000121e2b37434f5a646c6c6c6c6c6c6c6c7683909083766c6c6c6c6c6c6c6c645a4f43372b1e12000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d201307000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c201300000c18232f39434f5964717e8a97998b7f7265554b505b65727e8b97978a7d7164574a3e2f24180c0000111e2a3744515d6a778385868686858483817e7a756e6a615a50473d2f261b110600000815212e3b4854616e7b86868686868686867a6d6154473a2e211407000e1a2734414d5a6774808d9a91847770706e695e52463a2d2014070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090e151a1e212226292b2c2c2b292521201e19140d0802000000000000000000000915212c38424c545a5c6060606060606060606060606060606060606060606060606060606060606060606060606060606060606060606060605c5a544c42372c21150900020e1925303b444c525f6060606060605d5b554d44393d474f54566060606060605a58534a41362b20140800000c18232f3a454e575c5e60606060605f524c443a3024190d010005111d29343f48505658606060605c5a544c42352b21160b0000000000000000000000000000000000000000000a15202935404b55616b75818e98a0958c7f72695f53463e31281e130815222f3b4855626e7b87939fa99e91848383838383838383838383838383838383827d706356493d3023160a000713202d3a4653606d798693a0aca194877b6e6154483b2e2115202d394653606c7884919eabb5ac9f93877b6e6154473d32271b222f3c4955626f7c8895a2aca09386796d6053463a2d2013070000010d19242f3a434e58606c77828f96a1aba49e92857b6e655b50443c31271d1207000000000000050e19242f3a434f59606d79839098a3aea39991847a6d605a50453c30271c12070000000b1824313e4b5764717e8a96a0acac9f948e8179716d67696869676d70747a7f869095938a7e7885929fabaa9d9184776c6261616361594f44382c201407000000000613202c3945525d68717e8a939da6a89f948f837c746f6c6668676768666d70757c838f939ea7a69e938b7f72685e52463b3025190d0100000000000000000000000000000000000815222f3b4855626e7b8896a1a89b8e8275665b5044382b1f120600000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d100300000000000000000013202d3946535f6c767979797979797979839090837979797979797979766c5f5346392d2013000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d201307000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013000007121d27313e4653606d7984919c908376675d514953606d7985929b8e817468554b4035291d100400121f2c3945525f6c78859292999292918f8e8b87827c716c61594f41382d22170b00000815212e3b4854616e7b87939393939393877a6d6154473a2e211407000f1b2835424e5b6875818e9b91847d7d7d7b6e6154473b2e21140800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090e121415191d1e1f1f1e1c181414110e09020000000000000000000000000d1925323d49545e66696c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c69655e54493d3125190d0005111e2a36414c565e6c6c6c6c6c6c6c6a675f554a3f444f5960636c6c6c6c6c6c67645c53483c3024180b00030f1b2834404b5760686b6c6c6c6c6c6c5d564c4135291d1105000915212e3a45505a62656c6c6c6c69665e54473d33271c10040000000000000000000000000000000000000000040c18242f39434f59616e7b85929f9f92867b6e615a50433a2f24190c14212e3a47535f6975818e97a29d9084787676767676767676767676767676767676706b6054483b2f221609000713202d3a4653606d798693a0aca194877b6e6154483b2e211d2935414c5563707d8996a0acacafa4998c7f7266584e43382c1d222f3c4955626f7c8895a2aca09386796d6053463a2d20130700000008131e28313d44505b656d7a849199a3ada1978f82776c60584e43392f24180e0500000000020b17202935414c56606b73808d95a0aaa69f92877d6f685d52483e332a1e150b00000005121e2a36424d576875818e9ba8afa49a8f82786d66605d555c555c6063676d727b838f9391857b8797a2ada79a8d8074675a545557554f473e33281c100400000004111d2935414c55606d7a85929ea5aca0968f82796e6a62605b545a5b545c60636a6e78818f959faba59f92857a6e61564c41362a1e11050000000000000000000000000000000003101c28343f4a5465727f8b98a8a7988b7e7165544a3f33281c0f0300000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d100300000000000000000013202d394653606c798686868686868686909494908686868686868686796c605346392d2013000b1825323e4b5865717e8b98a4afa295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d201307000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013000008121d262c3844505c6674818e9b92867a6d605347515d6775828f9b918477675d5145392c1f130600121f2c3945525f6c7885929493939496999a99938e867e716b6053493f33271b0f03000815212e3b4854616e7b87949f9f9f9f94877a6d6154473a2e211407000f1c2936424f5c6975828f9c95918989897e7265584b3f3225180c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020608080c10121312110f0c0807050200000000000000000000000000000f1c2835414e5a6670767979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797570655a4d4135281b0f000714202d3946525e68767979797979797771675b4f434854606b70797979797979746e64584c4033271a0d0004111e2a3744505c687278797979797976685d5246392d201307000b1724313d4a56626d7179797979767066594f44382c20150a00000000000000000000000000000000000000000007121d27313e46525e69727f8b959f988f82756c61554c4135291e14121e2b37424d57616e7b85929fa0958c80736c6969696969696969696969696969696360594f44382c201307000713202d3a4653606d798693a0aca194877b6e6154483b2e21202c3945515d6775818e9ba8a39fa3ab9d9184776a605448392f24222f3c4955626f7c8895a2aca09386796d6053463a2d201307000000010c161f27333f49535e686f7d87929fa6a99f948c7f726a5f554b40352920170b020000000a141d29333b45525d68707d87939fa7aa9f948c80736b60564c41362d21180c030000000714202d3a46525e697885919eabac9f93877c6f665c54514b4f4b5153555d60696e79818f949083909da9b3a4988b7e7165584b484a48443e352c21160b000000000613202c3945515d6773808d97a1ada69e91847a6d675f5853504a4e4e4b5153585f666d79839099a3ada2978d8174685e5246392d2014090000000000000000000000000000000006121f2c3844505c6675828f9ba8a095877b6e6154483b2d22170b0000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d100300000000000000000013202d394653606c7986939393939393939c9f9f9c9393939393939386796c605346392d2013000b1825323e4b5865717e8b98a4aca295897c6f6256493c2f23160900000d1a2733404d5a6673808d99a6aca09386796d6053463a2d201307000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c201300030e19242f3840474a5464717e8a9799897c6f6256494b5565727e8b9893867a6d6053473a2d20140700121f2c3945525f6c78858887868787898d92979f9892887d70655b5044372b1f1205000815212e3b4854616e7b8794a1acaca094877a6d6154473a2e21140700101c2936434f5c6976828f9ca09d96968b7e7265584b3f3225180c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101c2936434f5c6976828686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868275695c4f4236291c0f000814212e3b4754616e7a86868686868683776a5d5144495663707d8686868686868074675a4e4134271b0e0005121f2b3845525e6b788586868686867a6d6154473a2e211407000b1825323e4b5865717e8686868682766b6054483c32261b0f030000000000000000000000000000000000000000010b151f2a36424d56606c788390999e948a7e71675d51453c30261c111a26313c46525e68717e8a929c9f93887e716c605b535c5c5c5c5c5c5c5c5c5c5c56544f473d32271b1003000713202d3a4653606d798693a0aca194877b6e6154483b2e21212d3a4754606d7a86929fa3999299a3a096897c6f62554b403529222f3c4955626f7c8895a2aca09386796d6053463a2d20130700000000040d17222d38414c56606b737f8c949fa9a69f92867c6f675d51453e33291d140a000006111b262f3b45505a606d7a849199a4aea2989083786d60594f443a2f241b0f06000000000815212e3b4854616e7b8797a1adaa9d9083776a5f544b4540424045474b51575f676d78828f9590959fabb0a3968a7d7063574a3d3d3c38332c231a1005000000000714212d3a4754606d7a85929fa9aa9e94897d70685d554e46443f41414045464e545c676f7c87929faca99f92867a6e6154473c31261a0e020000000000000000000000000000000713202d3a4653606d7985929faa9d918477695e52463a2d1c11060000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d100300000000000000000013202d394653606c798689898989898989909595908989898989898986796c605346392d2013000b1825323e4b5865717e8b989f9f9f95897c6f6256493c2f23160900000d1a2733404d5a6673808d999f9f9f9386796d6053463a2d201307000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c20130007131f2b36404a52585a616e7b879a978a7e71645753595b626f7b889599887c6f6255493c2f221609000916232f3c4956626f7c7b7a7a7a7b7d808590959f9a9184796c605346392d201306000815212e3b4854616e7b8794a1aeada094877a6d6154473a2e21140700101d293643505c6976838f9ca9aaa3988b7e7265584b3f3225180c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101c2936434f5c6976828f939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393938f8275695c4f4236291c0f000814212e3b4754616e7a87939393939084776a5d5144495663707c89939393938d8174675a4e4134271b0e0004101d2935404b556c788592939393877b6e6154483b2e211508000613202d394653606c7883909994897d7063584e43372b1f1306000000000000000000000000000000000000000000030d1925303b44505b666f7c87929f9e91847a6d60584e42382e231715202a36414d56616c73808d939d9a92877e736c655d554e5050505050505050504948443d352b21160b00000713202d3a4653606d798693a0aca194877b6e6154483b2e212b37434e5865717e8b98a29f9286929fa89a8e8174675d5145382c222f3c4955626f7c8895a2aca09386796d6053463a2d201307000000000006111b262f3a444f59606c77828f97a1aba3999184796d605a50453b2f261b1106030c17222d38414d57616c75818e96a1aba59f92857b6e665c50473d32281e120900000000000916222f3c4955626f7c8895a9b3a79a8d817467584e4239352f34383a40454d555c666d7a85919d9fa7b1afa396897c706356493d302f2c28211a11080000000005111e2a36424d5765727f8b98a2aea99c8f82756b60564c433c38332d2e34383c424b555f6a74818e9ba8aea3988c7f7266574d42372b1e1205000000000000000000000000000000091623303c4956636f7c8998a2aa9a8d807467574d42362a1e0a000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d10030000000000000000000a1723303d4a5663707d7d7d7d7d7d7d7d839090837d7d7d7d7d7d7d7d7063564a3d3023170a000b1825323e4b5865717e8b9393939393897c6f6256493c2f23160900000d1a2733404d5a6673808d939393939386796d6053463a2d201307000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013000b1723303c47525c64676c6d798693998c7f7266595d64686c6d7a8799978a7d7164574a3e3124170b000815222e3b4754606a6f6e6d6d6d6e70737a83909da096897c6f6356493c30231609000815212e3b4854616e7b8794a1acaca094877a6d6154473a2e21140700101d293643505c6976838f9ca9b1a5988b7e7265584b3f3225180c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101c2936434f5c6976828f929292929292929292929292929292929292929292929292929292929292929292929292929292929292929292928f8275695c4f4236291c0f000814212e3b4754616e7a87949f9f9d9084776a5d5144495663707c89969f9f9a8d8174675a4e4134271b0e0006131f2c3945515d677986939f9f95887b6e6255483b2f2215080005121f2b3744505b656f7c87939d9083766a5f53473b2e2115090000000000000000000000000000000000000000000009141f28333f4a545f6a74808d96a1978d80746a60544a3f34281f141925303b44505a606c77818e939c99928b80776d675f585045414343434343433d3b38322b23190f0400000713202d3a4653606d798693a0aca194877b6e6154483b2e212e3a47535f6a7683909daa9b8e828e97a19f9285796d6053473b30252f3c4955626f7c8895a2aca09386796d6053463a2d2013070000000000000a141d28323d44505b656d7a859199a4aba0968e81746c61574d41382d22170d0b151e27333f49535e69717e8a939ea8a89e938a7e71695e544a3f352b20160c0000000000000a1723303d4a5663707d8996a3b0a6998c7f7366594c402f2924292c2f353b434b545d68707d8a959fabb7afa396897c706356493d3023201c16100800000000000714202d3a46525e697683909daaada196897d7063594f433a312b282223282c3039434e58626f7c8895a0acaa9d908477695f53463a2d211407000000000000000000000000000004111d2935414c566673808c99aaa3988a7d7063574a3d30251a0e000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d10030000000000000000000916222f3c4854606b70707070707070768390908376707070707070706b6054483c2f221609000b1825323e4b5865717e868686868686867c6f6256493c2f23160900000d1a2733404d5a66738086868686868686786d6053463a2d201307000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013000d1a26333f4c58646e7479797985929a8d8073675a646f747979778692988b7e7165584b3e3225180b0006131f2b38434e586062616160606163686f7c8899a4988b7e7265584b3f3225180c000815212e3b4854616e7b87949f9f9f9f94877a6d6154473a2e21140700101d293643505c6976838f9ca9aca5988b7e7265584b3f3225180c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2935424f5c6875828585858585858585858585858585858585858585858585858585858585858585858585858585858585858585858585858275685b4f4235281c0f000814212e3b4754616e7a8794a1aa9d9084776a5d5144495663707c8996a3a79a8d8174675a4e4134271b0e000714202d3a4753606d7a8699a4a295897c6f6256493c2f23160900030f1b27333f49535f6a75828f9b95887c6f6255493c31261a0e02000000000000000000000000000000000000000000020b17222d38424e58606d7984919e9f93877c6f665c50443b30251a141f29323e44505b656c78818d929f9f928c81796f6a625a514c433c34363636302f2c27211911070000000713202d3a4653606d798693a0aca194877b6e6154483b2e28343f4a54626e7b88959fa398897d85919ea2988a7e7164574d42362a2f3c4955626f7c8895a2aca09386796d6053463a2d201307000000000000020b162027333f49535e68707d87939fa6a89d928a7e70695e53493f33271f15121d27303944505b656e7b85929fa5aba0968e81746c61574d42382e23190d040000000000000a1724313d4a5764707d8a97a3b0a5988c7f7265594c3f2e23181c1f24293139424c56616c7683909da9b3afa396897c706356493d302316100b050000000000000814212e3b4754616e7b87959fabab9e9184786c6053463d31281f1c17181c1f27313c47535f6a7784919daaaca095887b6e6155483b2e22150600000000000000000000000000000713202c3945525d687683909da99f92867a6d6053473a2d201409000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d10030000000000000000000713202c38444f5960636363636363697683909083766963636363636360594f44382c201307000b1724313d4a56626c71797979797979796f6a6054473b2e22150800000c1926323f4b58636e737979797979797976665c5044382c1f1206000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013000e1a2734414d5a67748086868689979a8d8174675b6874818686868999988b7f7265584c3f3225190c00030f1b27323d464e5456555453545456606c7986939f998c807366594d4033261a0d000815212e3b4854616e7b87939393939393877a6d6154473a2e21140700101d293643505c6976838f9c9f9f9f988b7e7265584b3f3225180c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1b2834414d59656f75797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979797979756f65594d4134271b0e000814212e3b4754616e7a8794a1a99d9084776a5d5144495663707c8996a3a79a8d8174675a4e4134271b0e000714212e3a4754616d7a8794a0a396897c706356493d3023160a00000b17222d38414e58636f7c89959a8d807367574d42362a1e12050000000000000000000000000000000000000000000006111c262f3c45515d67707d8a949e999083786d60574d42362a1f15172027333f49535b666c74808b92989c938f847c716c605d554e463e362e292322201b160f07000000000713202d3a4653606d798693a0aca194877b6e6154483b2e2c3844505c6673808d9aa79f928679818e9baa9c8f8276695e52463a2d2f3c4955626f7c8895a2aca09386796d6053463a2d20130700000000000000040e17222d38414c56606b73808c949fa9a59e92857b6e655b50443c31271d18232e39424e58606c77828f97a2ada3999184796d605a50453b30261c1007000000000000000a1723303d4a5663707d8996abb5a6998d807366544a403428211e1a181f27303a44505a64707d8a97a2adafa396897c706356493d3023160a00000000000000000b1824313e4b5764717e8a97a7b1a79a8e8174665b5044382b1f160f0b0c10151f2b37434e586773808d9aa6b1a7988b7e7165584b3e2d22170b00000000000000000000000000000714212d3a4754606d7a86929fa99c8f8276675d5145392c1f1306000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d100300000000000000000004101c27333d474f5456565656565d69768390908376695d5656565656544f473d33271c1004000915212e3a45505a62656c6c6c6c6c6c6c6260584e43382b1f130600000a17232f3b47525c63666c6c6c6c6c6c6c6c5c544a3f34281c1003000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013000e1a2734414d5a6774808d939393a19a8e8174675b6874818e939394a3998c7f7366594c403326190d00000a162027333f49535b606060606062666e7b8799a4988c7f7265594c3f3226190c000815212e3b4854616e7b86868686868686867a6d6154473a2e21140700101d293643505c6976828f93939393938b7e7265584b3f3225180c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1925313d49545d65686c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c68655d53483d3125180c000814212e3b4754616e7a87949c9c9c9084776a5d5144495663707c89969c9c9a8d8174675a4e4134271b0e000815222e3b4855616e7b8894a1a3978a7d7064574a3d3124170a000006111b262f3c4854606b7783909d918478695f53463a2d21140700000000000000000000000000000000000000000000000a141d2935414b55616c75828f98a0958b7f72695e52463e31271d1217222d38414a545b606e737e8691969e9691867e756d675f58504840372e261c13100b0400000000000713202d3a4653606d798693a0aca194877b6e6154483b2e2d3a4653606d7985919ea99c8f82767e8a99a39f93877b6e6154483d322f3c4955626f7c8895a2aca09386796d6053463a2d201307000000000000000006111b262f3a444f59606d78828f97a1aca1978f82776c60584e43392f241f2834404b545f6a727f8c949fa9a69f92877c6f675d51483e33291e140a00000000000000000915222f3c4855626f7b8899a3afa89b8f8275665c51443a322d2b2627272628323e4653606d7985929fabafa396897c706356493d3023160a00000000000000010e1b2834414e5b6774818e9aa7b4aa978a7e7164544a3f3328190d040000040d1b26323d4a5764707d8a97aab4a79b8e81746853493f33271b0f03000000000000000000000000000b1724313e4a5764717d8a99a3a9988c7f7265554b4035291d1004000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d1003000000000000000000000b16212b353d44484a4a4a4a505d69768390908376695d504a4a4a4a48443d352b21160b000005111d29343f485056586060606060606056544e463d32271b0f03000007131f2a36404a52585a606060606060605f504a42382e23170c00000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013000e1a2734414d5a6774808d9a9fa0a79b8e8174685b6874818e9b9fa0a6998c807366594d4033261a0d000005121f2b3744505b656c6d6c6c6d6f7278818e9ba095897c6f6356493c30231609000714202d3a46525e6976797979797979797976685e5246392d20130700101d293643505c697682868686868686867e7265584b3f3225180c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915212c37424b54595c5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5b59534b42372c201509000814212e3b4754616e7a878f8f8f8f8f84776a5d5144495663707c898f8f8f8f8d8174675a4e4134271b0e000915222f3c4855626f7b8895a2a4978a7e7164574b3e3124180b000007111b252c38434f5966737f8c9996887b6e6155483b2e2215080000000000000000000000000000000000000000000000020b18242f3a43505a616e7b86929f9f92867b6e61594f43392f2418111b262f38424a505c636c717c848e939f98928b817a6f6a625a524940382e251c11080000000000000713202d3a4653606d798693a0aca194877b6e6154483b2e36414c5664707d8a97a1a8988c7f727a86929fa4998c7f7366594f43382f3c4955626f7c8895a2aca09386796d6053463a2d2013070000000000000000000a141d29323d44505c666e7b85929aa4a99f948c7f726a60554b40352928313a45515c666f7c86929fa6a99f948c7f736a60554b41362c21170c0200000000000000000714202d3a4753606d7a86929facab9e9285796d60564c443d3a373134333332323845515c6675828f9ca8afa396897c706356493d3023160a0000000000000005111e2a36414c566a7683909da9aea298887b6e6155483b2d221708000000000a15212e3b4854616e7b8798a2aeaa9d908377655b5044372b1f120500000000000000000000000006121e2b37424d576774818e9aaba197887c6f6255483c2f24180c00000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d100300000000000000000000050f19232b33383c3d3d3d43505d69768390908376695d50433d3d3d3c38332b23190f050000010c18222d363f454a4b535353535353534947433d342b20160a000000020e19242e3840474b4d5353535353535353443f3830261c110600000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013000e1a2734414d5a6774808d9aa7b3a79b8e8174685b6874818e9ba7b3a6998c807366594d4033261a0d00000613202d394653606c777979797a7b7e838e939e989083786c605346392d2013060005121e2a36424d575e6c6c6c6c6c6c6c6c6c6c5e564c41362a1d1105000f1c2835414e5a66707679797979797979726d62564a3d3124180b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101b26303942494d4f5252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252524f4d48423930251b0f04000714212d3a4754606d7a8283838383838174675b4e414855626f7c8283838383827f7265584c3f3225190c000916232f3c4956626f7c8995a2a5988b7e7265584b3f3225180c00010d18232d373f464956626f7c8999978a7d7164574a3e3124170b00000000000000000000000000000006060606060606060007131d28313e46535e69727f8c95a0988e81756b61554b4035291d14141d262f383f44525a616a6f7a818b92989f938e847c716c635b524a40372e231a0d0400000000000713202d3a4653606d798693a0aca194877b6e6154483b2e3946525e6875828f9ba9a196887b6f76828f9cab9e9184776b605448392f3c4955626f7c8895a2aca09386796d6053463a2d201307000000000000000000020b172028343f4a545e69707d88939fa7a69f92877c6f675d51453e332f3a434f59606d79839098a3ada2979082786c60584e433a2f241a0f0500000000000000000006131f2c3945515d677783909dabada1978a7e71685e564f484742424140403f3f3f404b546673808c99a6afa396897c706356493d3023160a000000000000000713202d3946525e687885929fabac9f9285796c605346392d201306000000000714212d3a46535e697985929facac9f9285796c605346392d2013060000000000000000000000000814212d3a47535f697884919eab9e9185786c605346392d20130700000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d10030000000000000000000005101a232c33393c3d3d3d43505d69768390908376695d50433630302f2c27211911080000000006111b242d343a3d3e464646464646463c3b38322b22190f040000000008121c262e363b3f40464646464646464638342e261e150a0000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013000e1a2734414d5a6774808d9aa7aca79b8e8174685b6874818e9ba7aca6998c807366594d4033261a0d00000613202d394653606c7984868687888b90959a9590867c6f665b5044382b1f120600020e1a25303b454d525f60606060606060605f524c443a3025190d01000d1926323e49545e66696c6c6c6c6c6c6c65625b51453a2e22150900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141e2730373d414246464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464642413d3730271e140900000713202c3945525d686d767676767676746f64584c4047535f6a6f767676767676726d62564a3e3125180b000a1723303d4a5663707d8996a3a5988c7f7265594c3f3226190c0006121e29353f49515759606d798692998c7f7366594c403326190d0000000000000000000002060a0c0d131313131313131313130c161f2a36424d57606d788390999e938a7d70675d51453c2f261b11141d262d33404850585f686d757e8690959d9691867e736d645c524940352c1f160c01000000000713202d3a4653606d798693a0aca194877b6e6154483b2e3a4754616d7a86929fab9e9184786a727f8b99a4a096897c6f63554b40353c4955626f7c8895a2aca09386796d6053463a2d20130700000000000000000000050e17232e38424d56616b73808d959fa9a3999184796d605a50453b35414c56606b73808d95a0aaa59f92857b6e665b50463d31281d12080000000000000000000004101d2935404b5566737f8c99a3aea99e91847a6d68615955534d4f4e4d4c4c4c4b4b4c5865727f8b98a5afa396897c706356493d3023160a000000000000000714212e3a4754616d7a8798a2aeaa9d918477665b5044382b1f12060000000005121e2a36424d576a7784919daaaea298877a6e6154473b2e2114080000000000000000000000000815222e3b4855616e7b8896a1ac9b8e8174655b5044372b1f120500000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d1003000000000000000000000b17222c363e44494a4a4a4a505d69768390908376695d5043362a2322201c160f0800000000000009121b22292e3132393939393939392f2e2b27201910070000000000000a141c242a2f323339393939393939392c28231c150c030000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013000e1a2734414d5a6774808d9a9f9f9f9b8e8174685b6874818e9b9f9f9f998c807366594d4033261a0d000006121f2b3844505b6673808c9993999292908d89837c6f6a5f544a3f33281c0f03000009141f29333b42464853535353535353535346413a32281e130800000915212d38424c545a5c60606060606060585651493f34291d1105000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c151e262c3134353939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393939393534312c251e150c02000004111d2935414c565d6069696969696967645c53483c434e585f6269696969696965625b51463a2e221609000a1724313d4a5764707d8a97a3a6998c807366594d4033261a0d000916222e3a46515b62656c667885919a8d8174675a4e4134271b0e000000000000000000070d121619192020202020202020202020201a25313b44505c666f7c87939f9e9184796d60584e41382d22170b141c2228363e464e565d606c717b838d929f98928b80736e645b51473d31281e1308000000000713202d3a4653606d798693a0aca194877b6e6154483b37434e5865727f8c99a3a99a8d8074676e7b87939fa89a8e8174675d5145393c4955626f7c8895a2aca09386796d6053463a2d201307000000000000000000000006111c26303b444f59606d78839097a2aba0968e81746c61574d423b45525d68707d87939fa7a89d938a7e71695e544a3f342b1f160c0000000000000000000000000c18242f3b4854616e7b86929fa8ada19690827a706b65615f575c5a5a5959585858585865717e8b98a4afa396897c706356493d3023160a000000000000000915222f3c4855626f7b8895aab4a99c8f837669544a3f33281c0f0300000000020e1a2531434f5c6976828f9ca9b4aa95887b6f6255483c2f221509000000000000000000000003101c28343f4a5465727f8b98a8a49a8a7e716453493f33271b0f0300000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d100300000000000000000004101c28333e48505557575757575d69768390908376695d5043362a1d1613100b0500000000000000000911181d2124252d2d2d2d2d2d2d23221f1b160f0700000000000000020a12191f2326272d2d2d2d2d2d2d2d1f1c17110a03000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013000e1a2734414d5a6774808d93939393938e8174685b6874818e93939393938c807366594d4033261a0d0000030f1c28333f4a54616e7b87939f92878583817d786f6a5f584e42382d22170b000000020d17212930363a3b4646464646464646463936302820160c02000005101b26303a42494e50535353535353534b4a453f372d23180c0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030c141b212528292c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c282725201b140c03000000010d1924303a444c52545c5c5c5c5c5c5b58534a41363c464e53555c5c5c5c5c5c585651493f34291e1206000b1824313e4b5764717e8a97a4a69a8d8073675a4d4034271a0d000b1825313e4a57626d7279797983909b8e8275685b4f4235281c0f00000000000000010a12191e2325262d2d2d2d2d2d2d2d2d2d2d2d2d2d28343f4a54606a74808d97a1968d80736a5f53493f33271e13111317242d343c444c525a62696e78808b92999f928c80736d63594f433a2f24190d010000000713202d3a4653606d798693a0aca194877b6e6154483b3b4754606a7784909daba197897c70636876838f9caa9f9285796d6053473b3c4955626f7c8895a2aca09386796d6053463a2d2013070000000000000000000000000a141e29323e44505c666e7b85929fa4a89d938a7e70695e544a45505a606d7a849199a4aba0968e81746c61574d42382d22190d040000000000000000000000000714202d3a46525e6974808d96a1a9a89f9590847d77726e696a6867666665656565646465717e8b98a4afa396897c706356493d3023160a000000000000000a1723303d4a5663707d8996a3b0a89b8e8275685b4f422d22170b000000000000091c2835424f5b6875828e9ba8b0a396897d7063564a3d3023170a000000000000000000000006121f2c3844505c6675828f9ba89f93877a6e6154473b2d22170b0000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d10030000000000000000000814202d3944505a6164646464646469768390908376695d5043362a1d1007040000000000000000000000060c11151718202020202020201615130f0a0400000000000000000000080e1317191a202020202020202012100c060000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013000e1a2734414d5a677480868686868686868174685b68748186868686868686807366594d4033261a0d0000000b17222d3846535e6976828f9b8f82787774706c655f584e463c2f261c110600000000050f171f252a2d2e39393939393939392e2d2a251e160e05000000000a141e2830383e4143464646464646463f3d3a342d241b110600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002091015191b1c1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1c1b18150f0902000000000008131e28323a4145475050505050504e4c4841382f343c4347485050505050504c4a463f372d23180d01000c1825323f4b5865727e8b98a5a79a8e8174675b4e4134281b0e000c1926323f4c5965727f86868689959c8f8275695c4f4236291c0f000000000000000a131c232a2f32333939393939393939393939393939392e38424e58606d7a85919e9f92877c6f655b50443a3025191d202021222a323a414550575f666d747e8792989c928c7f726b61564c4135291d13070000000713202d3a4653606d798693a0aca194877b6e6154483b404b55626f7c8995a0ab9e9184796d6064717e8b98a2a2988a7e7164574d423c4955626f7c8895a2aca09386796d6053463a2d201307000000000000000000000000020c172028343f4a545e69707d8a929da7a59e92857b6e665b504d57616c75818e96a1aba3999184796d605a50453b2f261c10070000000000000000000000000005121e2a36424d57606d79849197a1a9a79f969189837f7b78767574737372727271717171717e8b98a4afa396897c706356493d3023160a000000000000000a1724313d4a5764707d8a97a3b0a79a8e8174675b4e4134281b060000000000010e1b2834414e5b6774818e9aa7b0a3978a7d7064574a3d3124170a00000000000000000000000713202d3a4653606d7985929faa9d908377685e5246392d1b11060000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d10030000000000000000000a1623303c4955616c70707070707070768390908376695d5043362a1d1003000000000000000000000000000105090b0b13131313131313090806030000000000000000000000000002070a0c0d1313131313131313060300000000000000000714202d3a4753606d7a8693a0adac9f9286796c5f5346392c2013000d1a26333f4c58646e7479797979797979746f6459646f7479797979797979736e63574b3f3226190c00000006111c2a36424d5764717e8a9792877b6e6763605b534e463c342a1d140a000000000000050d141a1e20212d2d2d2d2d2d2d2d21201d19130c050000000000030c161e262d3235363939393939393932312e29231b120900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004090c0e0f1313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313130f0e0c090400000000000000020c1620283035393a43434343434341403c362f262a32373b3c4343434343433f3e3a342d251b110700000c1926323f4c5965727f8c98a5a89b8e8175685b4e4235281b0f000c1926323f4c5965727f8c93939d9f9c8f8276695c504336291d1000000000000007121c252e353b3e4046464646464646464646464646464646464645525d68717e8a949f999083776c60564c41362a24292c2d2e2f30302f353e454d545c606c717d8692999f93887d70685d52453a2f24180d0100000713202d3a4653606d798693a0aca194877b6e6154483b45515d6774818d9aa7a6998d8073665c606d7a85929faa9c8f8276695e53463c4955626f7c8895a2aca09386796d6053463a2d20130700000000000000000000000000050e17232e38424d57616c74808d959faaa2978f82786c6058535e69717e8a939ea8a69f92877c6f675d51483e33291d140a0000000000000000000000000000020e1a25303b45515d676f7c8591979ea5a8a09e95908b8885838281807f7f7f7e7e7e7e7d7d808d9aa7afa396897c706356493d3023160a000000000000000b1824313e4b5764717e8a97a4b1a79a8d8174675a4e4134271b0e0100000000010e1b2734414e5a6774818d9aa7b0a4978a7d7164574a3e3124170b0000000000000000000000091623303c4956636f7c8998a2aa998d807366564c41362a1e0a000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d10030000000000000000000a1724313d4a5764707d7d7d7d7d7d7d7d8391908376695d5043362a1d100300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202d3a4753606d7a8693a0acac9f9286796c5f5346392c2013000b1723303c47525c64676c6c6c6c6c6c6c68645d535d64686c6c6c6c6c6c6c66635c52473b2f23170a000000000e1a25313b4653606d798592998c8073665c535049413c342a22190b020000000000000002090e12141520202020202020201413110d080200000000000000040c141b212628292d2d2d2d2d2d2d2524221d18110900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040e161e24292c2d3636363636363433302b251d20262b2e2f36363636363632312e29231b13090000000d1a2633404d596673808c99a6a89c8f8275695c4f4236291c0f000c1926323f4c5965727f8c989faaa99c8f8376695c504336291d100000000000020d19232e3740464b4c535353535353535353535353535353535353534c56616c76828f989f948b7e71685e52463d302f35393a3b3c3c3d3d3c383b424a515a626b707e87939f9a92857a6d60554b4135291d110400000713202d3a4653606d798693a0aca194877b6e6154483b4753606d7985929fab9f94887b6e62545d6774818e9ba89f93877b6e6154483d4955626f7c8895a2aca09386796d6053463a2d201307000000000000000000000000000006111c26303b45505a606d78839098a2a99f948c7f726a605b656e7b85929fa5a99f948c7f726a60554b40362c21170b0200000000000000000000000000000009141f2935414b555f6a6f7c858f939c9fa4a79f9d989892908f8d8d8c8c8b8b8b8b8a8a8a8d929da9afa396897c706356493d3023160a000000000000000b1825313e4b5864717e8b97a4b1a79a8d8074675a4d4134271a0e0100000000010e1a2734414d5a6774808d9aa7b1a4978b7e7164584b3e3125180b0000000000000000000004111d2935414c566673808c99aaa298897d706356493d3025190d000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d100300000000000000000013202d394653606c79868a8a8a8a8a8a8a9195908376695d5043362a1d1003000000000000000000000000000000000000000000010406070d0b0a08050000000003080b0d0e0d070604000000000000000000000000000000000000000000000714202d3a4753606d7a86939f9f9f9f9286796c5f5346392c20130007131f2b36404a52585a606060606060605b59534b53595b606060606060605957524a40352a1f13070000000009141f2c3845515c67748086868685796d6053463f382f2a22191007000000000000000000000205070813131313131313130707050100000000000000000000030a1015191c1d20202020202020181815110c06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c13191d2021292929292929282724201a13151b1f21222929292929292525221e181109010000000d1a2734404d5a6773808d9aa6a99c8f8376695c504336291d10000c1926323f4c5965727f8c98a5b2a99c8f8376695c504336291d10000000000006121e2a3540495157596060606060606060606060606060606060606060605a616e7b86929f9e92857a6d61594f42393a4045474848494a4a48443d3940445059616c73808c96a0978d8073675d5145392c20130600000713202d3a4653606d798693a0aca194877b6e615448424d5764717e8a97a2aa9c908376695f535563707d8996a1a49a8c7f7366594f444955626f7c8895a2aca09386796d6053463a2d2013070000000000000000000000000000000a151e29333e45515c666e7b85929fa5a69f92877c6f67606c77828f97a2ada1978f82776c60584e43392f241a0f0500000000000000000000000000000000020d18242f3a434e585f6a6f7a82898f93999c9fa2aaa29f9d9b9a999998989898979797979a9da4aeafa396897c706356493d3023160a000000000000000b1824313e4b5764717e8a97a4b1a79a8d8174675a4e4134271b0e0100000000010e1b2734414e5a6774818d9aa7b1a4978a7e7164574b3e3124180b000000000000000000000713202c3945525d687683909da99f9285796d6053463a2d201308000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d100300000000000000000013202d394653606c7986939393939393939393908376695d5043362a1d10030000000000000000000000000000000000000001070d1113141a181715110c0601080f14181a1b191413100c0701000000000000000000000000000000000000000714202d3a4753606d798693939393939286796c5f5346392c201300030e19242f3840474c4d535353535353534e4d4841484d4e535353535353534d4b4740382e24190e020000000004101c2834404b55646e74797979786d665c5044382d261d18100700000000000000000000000000000000000000000000000000000000000000000000000000000005090d0f10131313131313130c0b090501000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080d1113141d1d1d1d1d1d1b1a18140f080a0f1215151d1d1d1d1d1d191816120d0700000000000e1b2734414e5a6774818d9aa7aa9d9083776a5d5044372a1d11000c1926323f4c5965727f8c98a5aca99c8f8376695c504336291d1000000000000a16232f3b46515b63666c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6b69727f8c95a0978e81746b60544b40434b51535455565756554f473d343f47505a606d7884919e9f92857a6d6054473a2d21140700000713202d3a4653606d798693a0aca194877b6e61544846535e6976828f9ca9a2988b7e7165574d53606c7884919eac9e9184776b6054484955626f7c8895a2aca09386796d6053463a2d201307000000000000000000000000000000030c17212834404b545f69717e8a929da7a3999184796d6a727f8c949fa9a49e92857b6e655b50463c31281d120800000000000000000000000000000000000007131d28313c464e585f686d757c82878b8f929897999a9b9c9d9d9d9e9e9e9e9f9f9f9fa3abacb5afa396897c706356493d3023160a000000000000000a1724313d4a5764707d8a97a3b0a79a8e8174675b4e4134281b0e0100000000010e1b2834414e5b6774818e9aa7b0a3978a7d7064574a3d3124170a000000000000000000000714212d3a4754606d7a86929fa89c8f8275665c5145382c1f1306000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d100300000000000000000013202d394653606c7986868686868686868686868276695d5043362a1d1003000000000000000000000000000000000000040c13181d2020272524211d17100b131a2024272726201f1c18120b030000000000000000000000000000000000000714202d3a4753606d798686868686868687796c5f5346392c2013000008121d262f363c3f414646464646464641403c373c404146464646464646403f3b352e261c12070000000000000c18232e3943525c64676c6c6c6b605c544a3f34281b140b0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010407071010101010100e0d0b08030000030608091010101010100c0b0906010000000000000f1b2835424e5b6875818e9b9f9f9d9184776a5e5144372b1e11000c1926323f4c5965727f8c989f9f9f9c8f8376695c504336291d1000000000000c1925323e4b57636d737979797979797979797979797979797979797979797978736d7883919a9e93897d70665c51454b555d60616263636360594f4438353e44505c66727f8b98a2988a7e7164574b3e3124180b00000713202d3a4653606d798693a0aca194877b6e6154484953616e7b87939fac9f92867a6d605447505b6573808c99a6a096897c6f63554b4955626f7c8895a2aca09386796d6053463a2d20130700000000000000000000000000000000050f18232e39424d57616c74818e95a0aaa0968e81746f7c86929fa6a79d928a7d70695e53493f342b1f160c00000000000000000000000000000000000000010c161f2a343c464e565e616b6f757b7f8285888a8c8d8f8f9090919191919292929292999ba3acafa396897c706356493d3023160a000000000000000a1723303d4a5663707d8996a3b0a89b8e8175685b4e4235281b090000000000020f1b2835424e5b6875818e9ba8b0a3968a7d7063574a3d3024170a000000000000000000000b1724313e4a5764717d8a99a3a8988b7f7265544b4034281c1004000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d100300000000000000000013202d3946535f6c7679797979797979797979797670665a4e4235291c0f030000000000000000000000000000000003090d161d24292c2d3431302d28221b141d252b303334332d2c29231d150d09030000000000000000000000000000000006131f2c3845515c67767979797979797979756a5e5245382c1f120000010b141d242b303334393939393939393534302b3034353939393939393933322f2a241c130a0000000000000007121d2730404a52585a6060605e53504a42382e23170a02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2935424f5c6875818f939393939184786b5e5245382b1f12000c1926323f4c5965727f8c93939393938f8376695c504336291d1000000000000d192633404c5966737f868686868686868686868686868686868686868686868578666f7d88939f9d9184796d60574d515d676d6e6f6f70706b6055483d32343f4a54616e7b8899a49a8d8174675a4e4134271b0e01000713202d3a4653606d798693a0aca194877b6e615448505b6573808c9aa4a89b8e8174675d51454953616e7b88949fa89a8e8174675d514955626f7c8895a2aca09386796d6053463a2d201307000000000000000000000000000000000007121d27303b45505a606d79839098a2a89d938a7e79839098a3aaa0958d80746c61564d41382d22190d040000000000000000000000000000000000000000040d18222a343c444c52596063696e7276797b7d7f81828383848484848585858585868b909ba7afa396897c706356493d3023160a000000000000000916222f3c4955626f7c8895aab4a99c8f8276695c4f4330251a0e0200000000030f1c2936424f5c6975828f9ca8b5ab95897c6f6256493c2f23160900000000000000000006121e2b37424d576774818e9aaba196887b6e6255483b2e23180c00000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d1003000000000000000000121e2b37434f5a646c6c6c6c6c6c6c6c6c6c6c6c69665e544a3e32261a0d01000000000000000000000000000000060e151a1f282f35393a403e3d39342d241d262f363c4041403a38342f271f1a140d0500000000000000000000000000000004101c2934404b555c6c6c6c6c6c6c6c6c6c6a63594e42362a1d11000000020b12191f2326272d2d2d2d2d2d2d282724202427282d2d2d2d2d2d2d2626231f19120a0100000000000000000b151e2f3840474c4d5353535246443f3830261c11060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101c2936434f5c69768286868686868685786c5f5245392c1f12000c1926323f4c5965727f868686868686868276695c504336291d1000000000000d192633404c5966737f8c93939393939393939393939393939393939393939185786b6b74818e97a0968c7f73695f5353606d797b7b7c7d7d7063584e4338313a4653606d7986939f9c8f8276695c4f4336291c1003000713202d3a4653606d798693a0aca194877b6e61544853606c7884919eaca096897c7063554b4146535f697683909caa9f92857a6d60534955626f7c8895a2aca09386796d6053463a2d2013070000000000000000000000000000000000000b151e2a333e45515c676e7b86929fa5a59e9285818e95a0aaa3989183796d60594f443b2f261b1007000000000000000000000000000000000000000000050e171e252a323a41464f54575e6165666d6f717374757676777777787878787879797e8b98a4afa396897c706356493d3023160a000000000000000814212e3b4754616e7b8798a3aeaa9d9084776a574d42362a1e12050000000005111d2935414c566a7783909daaafa399877b6e6154483b2e2115080000000000000000000814212d3a47535f697784919eaa9e9184786a5f53473a2e1d120700000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d10030000000000000000000f1b27333e49525a5f60606060606060606060605d5a544c43382d22160a000000000000000000000000000000060f1820262b313a4045474d4b49453e362d222f3841484c4e4c47454039312a251f170f050000000000000000000000000000000c18232f39434b515f606060606060605f5e5951473d31261a0e0000000001080e13171a1a202020202020201b1a1814181a1b202020202020201a1917130e0700000000000000000000030c1d262f363c3f41464646453a38342e261e150a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1c2835414e5a6670767979797979797873695d5144382b1e12000b1825313e4a57626d72797979797979797670665a4e4235291c0f00000000000d192633404c5966737f8c999999999999999da0a7a9a29f999999999999999185786b616d7a85929e9f92867b6e615a5c6976828788898a85786a605448423f404653606d798699a49c8f8376695c504336291d1003000713202d3a4653606d798693a0aca194877b6e61544c5663707d8996a1ab9e9184786c6053463a424d5765717e8b98a2a2988b7e7164574d55626f7c8895a2aca09386796d6053463a2d201307000000000000000000000000000000000000030c18212934404b555f69717e8b939ea7a297928e939da7a69f92867c6f675d51473e32291d140a000000000000000000000000000000000000000000020c1720293036393a3e3f44484d5354545c606264666768696a6a6a6b6b6b6b6c6c6c717e8b98a4afa396897c706356493d3023160a000000000000000713202d3a4653606d7986929facab9f928578695e52463a2d201407000000000713202d3946525d687885929eabac9f9286796d6053463a2d2013070000000000000000000815222e3b4855616e7b8896a0ab9a8e817467584e43372b1f0b0000000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d10030000000000000000000a16212c3740494f535353535353535353535353504e4a433a31271c11050000000000000000000000000000030e18212a31373e434b51535a585650483e322b34414a53585a5953514b433e36312921170d03000000000000000000000000000007121d2731394045535353535353535353524e473f352b20150900000000000003070b0d0e131313131313130e0e0c080c0e0e131313131313130d0c0a07020000000000000000000000000b141d242b303334393939382d2c28231c150c030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1926323e49545e66696c6c6c6c6c6c6c6961574c4135281c10000916222e3a46515b62656c6c6c6c6c6c6c69665e54493e3226190d00000000000d192633404c5966737f8c8c8c8c8c8c8c8c9095a0a297928c8c8c8c8c8c8c8c85786b5d68717e8b949f988f82766c61566673808d959697897c6f625b534d4c4d4f58626f7c8895ab9b8e8275685b4f4235281c0f02000713202d3a4653606d798693a0aca194877b6e6154525d6875818e9ba8a4998c7f73655b5044373b4754606d7a86929faa9c8f8276695e5355626f7c8895a2aca09386796d6053463a2d20130700000000000000000000000000000000000000060f18232f39434d57616c74818e95a0a9a29e9b9da5a99e948b7f726a5f554b40352c20170b0200000000000000000000000000000000000000000008131e29323a4146474b4c4d4e4f51524a50535557595a5c5c5d5d5e5e5e5e5f5f5f65717e8b98a4afa396897c706356493d3023160a0000000000000006121f2b3844505c667784909daaaea298877b6e6154483b2e21150a000000000714212e3a4754616d7a8797a1adaa9e918477665c5145382c1f1306000000000000000003101c28343f4a5465727e8b98a8a4998a7d7164574a3e31261a0f0000000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d100300000000000000000005101b252e373e4346464646464646464646464643423e3831281f150a0000000000000000000000000000000915202a333c424750555d606764615a50443a323d46535c646766605c554f46423b33291f14090000000000000000000000000000010b151f272f343846464646464646464645423d352d24190f0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b131a1f2426272d2d2d2b201f1c17110a03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000915212d38424c545a5c6060606060605f5d574f463b3024180c0006121e29353f49515759606060606060605c5a544c42382d21160a0000000000091623303c4956636f7d808080808080808083909d9f928580808080808080807f726556626c76828f989f948a7e71685d626f7c89959f9c8f82756d615e57595959616a73808d99a8998d8073665a4d4033271a0d00000713202d3a4653606d798693a0aca194877b6e615454606d7a86929fac9f93877b6e6153493f333945515d6775818e9ba89f93877b6e615355626f7c8895a2aca09386796d6053463a2d201307000000000000000000000000000000000000000007121d27313c45505a606d79839198a2adaba7a9ada1978f82776c60584e43392f231a0e05000000000000000000000000000000000000000000010d1925303a444c525457595a5b5c5d5e5b5953484a4c4e4f5050515151515252525965727f8c98a5afa396897c706356493d3023160a0000000000000003101c28343f4a546875818e9ba8b3aa978a7d7064574a3d32271b0d04000001081623303d495663707c8996a9b3a89c8f827569544b4034281c1004000000000000000006121f2c3844505c6675828f9ba89f93867a6d6054473a2d2114090000000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d10030000000000000000000009131c252c33373939393939393939393939393635322d271f160d030000000000000000000000000000020e1a26313c454e535a61676d73716c61564c4137434e58646e74736d676159534d453b31251a0e020000000000000000000000000000030d151d23292c3939393939393939393836312b241b120800000000000000000000000104060712131313130908060300000000000000000000000000000000000000000000000000000001080e13171a1a2020201f1312100c0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005101b26303a42494e4f53535353535352514c463d342a1f130800010d18232d373f464a4c53535353535353504e49423a31261c100500000000000915222f3b4854606b6f7373737373737374818e9b9e91847873737373737373726d62575a626e7b86929f9e91857a6d60606a7783909a9e948c7f756e69676666676b707c86929fa096897c6f6356493c3023160900000713202d3a4653606d798693a0aca194877b6e61545865727e8b98a3a99c8f8276695e5341382d35414b5563707d8996a1a49a8c7f73655b55626f7c8895a2aca09386796d6053463a2d2013070000000000000000000000000000000000000000010b151f2a333e45515d676f7c86929facb8b4b8ab9e92857a6d655b50463c31271d11080000000000000000000000000000000000000000000005111d2a36414c565e6164656768696a6b68655d534840414243434444444545454d596673808c99a6afa295897c6f6256493c2f23160900000000000000000b17232e3f4b5865727e8b98a8b2a69a8d807367584e43372b1f15100c090e131e2a36414c5666727f8c99a5b3aa998c7f7366594c402e23180c0000000000000000000713202d3a4653606d7985929fa99d908376685d5245392c2013070000000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d100300000000000000000000010a131b21272b2d2d2d2d2d2d2d2d2d2d2d2d2a2926221c150d0400000000000000000000000000000006121e2b37424e575f626c7179807e71685d52453c4754606a74817f79706b615e574d42362a1e1205000000000000000000000000000000030b12181c1f2d2d2d2d2d2d2d2d2c2c2a26201912090000000000000000000001070d1013141e202020201615130f0a0400000000000000000000000000000000000000000000000000000003070b0d0e131313120706030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141e2830383e41434646464646464544413b342b22180d02000007111b252d353a3e3f4646464646464643423e3831281f150a0000000000000713202c38444f5960636666666666666874818e9b9e9184786b66666666666665625b51535f6973808c96a0978d80746a6063707d88939f9c918c817b7673727374777d859298a29e9184786d6053463a2d20130700000713202d3a4653606d798693a0aca194877b6e61545f6a7683909daaa2978a7e7164574d422f262f3a4653606c7884919eac9e9184786c6055626f7c8895a2aca09386796d6053463a2d201307000000000000000000000000000000000000000000030d18212935404b555f6a737f8c99a6b2bdb0a3968a7d70685e53493f342a1f150b00000000000000000000000000000000000000000000000713202d3946525e686d71727374767778756f65594d3d323536373737383835404b556774818e9aa7b2a995887b6e6255483b2f22150800000000000000000615222f3c4855626f7b8896a0acaa9d9184776a6054473c31271f1c181b1a1e242d3946525e6876838f9ca9aea298897c706356493d30231607000000000000000000091623303c4956636f7c8998a2aa998c807366564c4135291d11040000000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d10030000000000000000000000010910161b1e2020202020202020202020201d1c1a16110a03000000000000000000000000000000000814212e3a47535f6a6e767e848d857a6d60584e43505a626f7c888c847d756e695e53463a2d2114070000000000000000000000000000000001070c10132020202020202020201f1d1a150f0800000000000000000000040c12181d20202b2d2d2d2d22211f1b150e070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020c161e262d323536393939393939393835302a22191006000000000a131b23292e3132393939393939393635322d261f160d03000000000000030f1b27323d474f545659595959595b6874818e9b9e9184786b5e5959595959595751494d57606d7984919e9f93877c6f66606b73808d939f9c938e8783807f8081848a9297a19f928a7d70665c5044382b1f120600000713202d3a4653606d798693a0aca194877b6e6154626f7c88959fab9f9285796d6053473b31202b3844505b6673808d99a7a096897c706355626f7c8895a2aca09386796d6053463a2d20130700000000000000000000000000000000000000000007121d27313c46505a606d7984919eaab7b9b1a4978b7e71695f554b40342820170b02000000000000000000000000000000000000000000000714212e3a4754616d7a7e7f8081828485817568584e43372e2c2823282c2f3945515d677783909daaada196877a6d6054473a2d21140700000000000000000815212e3a47535f6a7784919eabaca095887c6f62584e4339312c282327262b2f35414c56616d7a86929facab9f9285796d6053463a2d201307000000000000000004111d2935414c566673808c99aaa298897c6f6356493c3024190d010000000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d100300000000000000000000000000050a0f12131313131313131313131313100f0d0a050000000000000000000000000000000000000815222f3b4855626e7c828a91968d80746a5f534b55616c76839096918a827b6e6154483b2e21150800000000000000000000000000000000000000040613131313131313131312110e090400000000000000000000040d161d24292c2d38393939392f2e2b2620181007000000000000000000000004090d0f0f131313131313130d0c0a060200000000000000000000000105090b0b13131313100f0d0905000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c141b212628292d2d2d2d2d2d2c2b28241f1810070000000000010a11181e2225262d2d2d2d2d2d2d292926211c150d0400000000000000000b16212b353d4448494d4d4d4d4e5b6874818e9b9e9184786b5e514d4d4d4d4c4a463f45515c67707d89939e999083786d60606c77808c92989f9992908d8c8c8e91969e9f99928c80736b61544a3f34281c100300000713202d3a4653606d798693a0aca194877b6e615c6673808d9aa7a79a8d8174675c5145382c1f28333f4a54626e7b88959fa89b8e8174675d626f7c8895a2aca09386796d6053463a2d2013070000000000000000000000000000000000000000060f18242f39434e58626c75818e96a0acafacafac9f92867b6e675c51453e32291d140a000000000000000000000000000000000000000000000815212e3b4854616e7b878c8d8e8f909184786a6054473f3a38342e34383a404b55606d7a86929facab9e918578675d5145392c201306000000000000000006121f2b37434e586673808d99a3afa89b8e81756a5f554b433c38342e3431373a4145525d68737f8c99a3afa79b8e8175675c5145382c1f130600000000000000000713202c3945525d687683909da99f9285796d6053463a2d201308000000000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d1003000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010d1a2734404d5a6773808d949e9f92877c6f625a515c67717e8a949f9e93867d7063574a3d3024170a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010c161f282f35393a45464646463c3b37322a22180e04000000000000000002091015191b1c20202020202020191916120d07000000000000000000060c11151718202020201d1c1915100a030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a1015191c1c2020202020201f1e1c18130d060000000000000000070d12161819202020202020201d1c1916100a03000000000000000000040f19232b32383b3c404040414e5b6874818e9b9e9184786b5e51454040403f3e3a34404b55606b75818e97a0958c7f72695e656c777f868e92999b9c9a99999a9d9b99938f867f736e63594f42382e23170b0000000713202d3a4653606d798693a0aca194877b6e61606d7985929eaba095897c6f62554b4034291c222d3847535f697683909daa9f92857a6d60626f7c8895a2aca09386796d6053463a2d20130700000000000000000000000000000000000000030c18212935404b555f6a717e8b939ea8aba39fa3aba2989083796d60594f443b2f261c11060000000000000000000000000000000000000000000714212d3a46535e697884919a9b9c9d96897c6f625a504a464440434044464b515c67717e8b98a3aeaa9b8f827568554b4135291d11040000000000000000030f1a26313c4854616e7b87929faaac9f92877c6f675d554e46454041414142474c515b606d7a85929eabaca095897d7063554b4034281c100400000000000000000714212d3a4754606d7a86929fa89b8f8275665c5044382c1f1206000000000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d10030000000000000000000000000000000000000000000000000000000004080a0a131313130d0c0a070200000000000000000000000713202d3a4653606d78839097a2999083766c6156606d7984919e9f958d80736b6155483c2f23160900000000000000000002070c0f11121313130e0706040000000000000000000000000000000000000000000007121d28313940454751535353534947433c342a20150a00000000000000030c141b212528292d2d2d2d2d2d2d2625231e19120a010000000000000911181d2124252d2d2d2d292826211b140c0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005090d0f101313131313131212100c0802000000000000000000000106090b0c13131313131313100f0d0a0500000000000000000000000007111921272c2f30333335414e5b6874818e9b9e9184786b5e514538333332312e2e39434f59616d7a85929f9f92867b6e615b656c727b81868b8e9091929291908e8b87827c726d635c52473e30261c11060000000713202d3a4653606d798693a0aca194877b6e6164707d8a97a1ab9d9083776a605443392f23181c2b37424d5765727e8b98a3a2988b7e7164626f7c8895a2aca09386796d6053463a2d201307000000000000000000000000000000000000000b151e2a333c45515d676f7c86929fa5a79f999299a3aaa0958d80746b61564d42382d22170d04000000000000000000000000000000000000000005121e2a36424d576774818e9aa6a9a89b8e81756c605c5453514a504a5153555d606d7983919daaaea2988b7e7165584b3e2f24180d010000000000000000000a15212d3a46535e6975818e98a3aea3999083796d675f5853514b4e4e4e4d53555d606d74818e97a1ada69d9083776b605443392e23180c0000000000000000000b1724313e4a5764717d8a99a3a8988b7e7265544a3f34281c1003000000000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d10030000000000000000000000000000000000000000000000000000050b101416171f2020201a1917130e070000000000000000000006131f2c3845515c666e7b85929a9f948b7e71675e68737f8c96a1989083796d60594f44382c2014070000000000000000060d13181c1e1f2020201b1313100c0700000000000000000000000000000000000000010d18242f39434b51535e6060606055534e463c32261b0f040000000000020c151e262c3135363939393939393933322f2a231c130a000000000009121b22292e3132393939393635322d261e160c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070f161b202223262835414e5b6874818e9b9e9184786b5e5145382b2626251d27303d46525e68717e8b949f988f82756c615b606a6e757a7e81838585868584817f7b756f6a635b524940352c1e140a000000000713202d3a4653606d798693a0aca194877b6e616875828f9ca9a3998c7f7265584e4331271d121a26313c4754606d7a86929faa9c8f837669626f7c8895a2aca09386796d6053463a2d20130700000000000000000000000000000000000007121d27303c45505a606d79839198a2aa9f9590869299a4a79d928a7d70695e544a3f332820160c0100000000000000000000000000000000000000020e1a25313c4855626f7c88949faaaa9e938a7e726d6662605c545d545c6062676d75808d95a0aca99f92867a6d6154473a2e2114070000000000000000000005121e2a36424d57616e7b86929fa6aba0958f82796f6a63605c555b5a5b575f62676d747f8c939ea9a99f948a7d7064594f4430271d1207000000000000000005121e2b37424d576774818e9aaba096887b6e6155483b2e23170c00000000000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d1003000000000000000000000000000000000000000000000000000810171c2023242c2d2d2d2726231f19120a01000000000000000004101c2834404b545e69707d88939f9e91857a6d616e7b86929f9f92867b6e665c51473e33281c1004000000000000000710171e24282b2c2d2d2d28201f1c18120b03000000000000000000000000000000000004101d2935404b555d606b6c6c6c6c625f584e43372b21160a000000000009141e2730373d414246464646464646403e3b352e251c120700000006111b242d343a3d3e4646464643413e3830281e1108000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040b0f1315161b2835414e5b6874818e9b9e9184786b5e5145382b1e1918151e2a36414c56606c778390999e938a7d70675d575f62686e717477787979787775726e69625f58514940372e231a0c02000000000713202d3a4653606d798693a0aca194877b6e616e7a86929fac9f92867a6d6154473d3221150b15202c3945525d6875818e9ba99f93877b6e626f7c8895a2aca09386796d6053463a2d2013070000000000000000000000000000000000060f18232e39434d57616c74818e95a0aaa29890837d87939fa7a49e92857b6e665b50443d32281e130800000000000000000000000000000000000000000915212e3b47535f6a76828f98a2aea59f92877f78726f6d666a696a666d6f7379818d929da7aca2978d8074685d5246392d20130700000000000000000000020e1a25313b46535f69737f8c949fa7a79f948f837c75706d676867676869696e737a818c919ca5aaa1978f82766c6155473d331e150b0000000000000000000714212d3a46535f697784919eaa9e918477695f53463a2d1c110600000000000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d100300000000000000000000000000000000000000000000000006111a22282d30313939393933322f2a241c140a0000000000000000000c18232e39424d57616b73808d949f978d80746a74818e989d938a7e71695f544b40352c21160b0000000000000006101922292f343738393939352d2c28231d150c05000000000000000000000000000000000613202c3945515d676d78797979796f6a5f53473d32271b0f0100000004101b26303942494d4f535353535353534c4b4640372e23190d0200010c18222d363f454a4b53535353504e49423a30231a0f05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000307090e1b2835414e5b6874818e9b9e9184786b5e5145382b1e120b0c1925303a44505b656f7c87929f9e9184796d605853565e6165686a6b6c6c6b6a6865615e57534e463f372e251c110800000000000713202d3a4653606d798693a0aca194877b6e66727f8c99a3a99b8f8275685e5246392d201304111d2935414c5663707d8a97a1a49a8c8073656f7c8895a2aca09386796d6053463a2d20130700000000000000000000000000000000030c17212834404b555f69717e8a939da7a59f92867b73808d95a0aaa1978f82786c60594f443a2f241910060000000000000000000000000000000000000006121f2b37434e58626f7c86929fa4aca399928b837f7b797777767777797c80858e939da4aea49a92857a6d61564c4135291d1105000000000000000000000009141f2a36424d57606d78828f959fa7a69f959087817d79777574747476787b80858e939ca3aaa29892857b6e615a5044352b210c030000000000000000000815222e3b4855616e7b8896a0ab9a8d817467574d42362a1e0a0000000000000000000000000004111e2a3744515d6a7784909daaa99c8f8376695c504336291d100300000000000000000000000000000000000000000000030a1117242c33393c3d46464646403f3b352e261c120700000000000000050c121d27303b454f59606d788290979f92877c6f7c87939f958e81746c61574d42392e231a110c060000000000020d17222b333b404445464646413a38342e271e170e060000000000000000000000000000000714202d3a4753606d7a84868686877c6f62594f44382c1d12070000000915212c37424c545a5c606060606060605957514940352a1e12060005111d29343f48505658606060605c5a544c42352b21160b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1b2835414e5b6874818e9b9e9184786b5e5145382b1e120008131e27333f49535f6a73808d96a0968d80736a5f534c5254585b5d5e5f5f5e5d5b5854524d47433c342d251c130a0000000000000713202d3a4653606d798693a0aca194877b6e6a7784919daba1978a7d7064564c41362a1e11050d19242f3a4653606d7984919eac9e9184786c6f7c8895a2aca09386796d6053463a2d201307000000000000000000000000000000000b151e29333b45515c676e7b86929fa5a89e938b7e716d79839098a3a99f948c7f736b60564c41352922180d03000000000000000000000000000000000000030f1b26323c47535f6a717e8b939aa2aaa39f95918c8886848483838485898c92979ea5aaa39f93887d70685e52443a3024190d010000000000000000000000030e1a26313b44505c666d7a8390959da5a7a099938e898683828181818385888c92979da5a7a09892867d70695e52483e3323190f00000000000000000003101c28343f4a5465727e8b98a8a3998a7d7064574a3d31261a0e0200000000000000000000000004111e2a3744515d6a7784909d9f9f9c8f8376695c504336291d1003000000000000000000000000000000000000000000040c151c2328363e44494a525353534d4b4740382e24190e0200000000000810171d1e252a333e44505c666e7b85929a9990827982909a989183796d605a50453c302a251e1d1710090000000007131e29333d454c50525353534e4645403930292018100800000000000000000000000000000613202c3945515d67707d8a949a8f82766b605448392f24180c0000000d1925313d49545e65696c6c6c6c6c6c6c66635b51463b2f23160a000915212e3a45505a62656c6c6c6c69665e54473d33271c10040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000205070e1b2835414e5b6874818e9b9e9184786b5e5145382b1e1205020b17222d38414e58606d7984919e9f92877c6f655b5046474b4e5152525352514e4c4846423b37312a221c130a010000000000000713202d3a4653606d798693a0aca194877a6e6f7c8995a0ab9e9185796d6053463a3025190d0108131f2b3844505c6673808d9aa7a196897d706f7c8895a2aca09386796d6053463a2d20130700000000000000000000000000000007121c27303b45505a606d79839098a2aba0968e81756c666e7c86929fa6a69f92877c6f685d52453f342a1f150b010000000000000000000000000000000000000a15202b37434e58616c727f8892989fa3a7a09d99999291909090919298999ea2a9a69f98928b7f726c61564c4132281e13080000000000000000000000000009141f28343f4a545e686d7a838e929d9fa7a49f9b9892908e8e8d8e8f9197999ea1a9a29e9590867d706b60574d42362c22110800000000000000000006121f2c3844505c6675828f9ba89f92867a6d6054473a2d2114090000000000000000000000000004111e2a3744515d6a778490939393938f8376695c504336291d10030000000000000000000000000000000000000000060d161e262e343f485055575f6060605a57524a40352a1f13070000000008121a22282d3036393a3f4a545e69707d88939f948e828e949f92867c6f675d51483e3a3936302d28221b12090000000c18242f3b454f575d5f6060605b53514b423a322a221a11070000000000000000000000000004101d2935404b55616c75828f9c94897c6f63554b4035291d100400000f1b2835414d5a65707579797979797979736d63574b3e3225190c000b1724313d4a56626d7179797979767066594f44382c20150a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002090e1114141b2835414e5b6874818e9b9e9184786b5e5145382b1e12050006111b262f3c45515d67707d8a939e999083776c60564c413e41444546464544423f3b3a36302b262018100a01000000000000000713202d3a4653606d798693a0aca094877a6d74818d9aa8a79a8d8073665c504438291e13080003101c28343f4a54626e7b88959fa89b8e81746f7c8895a2aca09386796d6053463a2d2013070000000000000000000000000000050f18232e39424d57616c74808d95a0aaa39991847a6d605f6a727f8b949fa9a39991847a6d605a50463c31271d1207000000000000000000000000000000000000040f1a26313c46505a636d727e868e92999da0a8aba39f9e9d9c9d9e9fa2aaaaa29f9b948f867e726d62594f443a3020160c0200000000000000000000000000030b17232e38424c565e686d79818990959b9fa2aaa39f9d9b9a9a9b9c9ea1a9a49f9c97928c837b706b60594f453b30241a10000000000000000000000713202d3a4653606d7985929fa99c908376675d5145392c2013060000000000000000000000000004111e2a3744515d6a77838686868686868276695c504336291d100300000000000000000000000000000000000000070f18202830383f44515a61646c6c6c6c66635c52473b2f23170a00000005101a242c33393a4146474a4d5357606b73808c949e938e939e938b7f726a5f55534d4b4746413a39342c241b100600000f1c2834404c5761696b6c6c6c68605c544c443c342c2318120b030000000000000000000000010d18242f3943505a626f7c89949b8e8175675d5145392c1f130600000f1c2936424f5c697582868686868686867f7366594c403326190d000b1825323e4b5865717e8686868682766b6054483c32271b0f030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050d14191e2021272835414e5b6874818e9b9e9184786b5e5145382b1e120500000a141d2935404b55616b75818e989f958b7e72685e52463d3037383939383735322e2d2a251f1a150e060000000000000000000713202d3a4653606d798693a0aca093877a6d7985919eab9f95887b6e62544a3f3428170d0200000b17232e3847535f6a7783909dab9f9285796f7b8895a2aca09386796d6053463a2d20130700000000000000000000000000020c17212834404a545f69717e8a929da7a69f92877c6f675d58606c77828f97a1aba1968e81756d62584e43392f23180f050000000000000000000000000000000000000a15202a343e48515b636c717b81878c919597999c9d9e9e9f9f9f9e9d9b9998928e89827b716c625b51473e32281e0e0400000000000000000000000000000006111c26303a444c565e676d747c83898e9298999b9d9e9f9f9f9f9e9d9b999993908b857f786e6960594f473d33291f120800000000000000000000091623303c4956636f7c8998a2a9998c7f7366554b4135291d1104000000000000000000000000020d17222b36424f5b6771777979797979797670665a4e4235291c0f030000000000000000000000000000000000000810192129323a424a505b636c7079797979736e63574b3f3226190c0000000c17222c363e45494c525457575f6165656d78828f9c9e9b9e9b8f82756d6865615e575754524c49453e362c22170c0000111e2b3744505d697378797979746d665e564e463e3528231c150c04000000000000000000000007121d28313e4754606a7683909c9285796d6053473a2d20140700000f1c2936424f5c6975828f93939393938c7f7366594c403326190d000613202d394653606c7883909994897d7063584e43372b1f130600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050e171f252a2d2e342d35414e5b6874818e9b9e9184786b5e5145382b1e12050000020b18242f39434f59616e7b85929f9f92857a6e61594f43392e232c2c2b2a282521201e1a140f0a03000000000000000000000713202d3a4653606d798693a0aca093867a6f7c8997a1aa9d9083766a5f5342382e23170500000006111c2b37434e5865727f8b99a3a2988a7e717b8895a1aca09386796d6053463a2d201307000000000000000000000000000a141e29333b44515c666e7b85929fa4a99f948c7f726a6055505b656e7a85929ea5a89e938b7e716a5f554b40342921170c020000000000000000000000000000000000030e18222d363f49515a61696e747b8084888b8d8f90919292929291908e8c8985817c766e69615a51493f352c20160c00000000000000000000000000000000000a141e28323a444c555c606b6f777d8185898c8e90919292929291908f8d8a86837e79726d665f574f473d352b20170d0000000000000000000004111d2935414c566673808c99aaa197897c6f6256493c2f24180d0100000000000000000000000007131e29333d454c555f676a6c6c6c6c6c6c69665e54493e3226190d01000000000000000000000000000000000007121a222b333b444c545c606d727e868686868073665a4d4033271a0d000005111d28333e485055565e616467696e7175787c808d99a6a8a6998c807c7875716e696764615e565550483e34281d110500121f2c3845525f6b788586868681786d685f584f473f342e271e160e0600000000000000000000010c161f2b37434e5864717e8a99988a7e7164574a3e3124170700000f1c2936424f5c6975828f9c9f9f9f998c7f7366594c403326190d0005121f2b3744505b656f7c87939d9083776a6054473b2e221509000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d17202930363a3b413a38414e5b6874818e9b9e9184786b5e5145382b1e120500000007121d27313e46525e68727f8b959f978e81756b60554b4034281f201f1e1b191514120e09030000000000000000000000000713202d3a4653606d798693a0aca093867974808d9aa9a3988b7e7265584e4330261c1106000000000f1a26313c4754616d7a86929faa9b8f82757b8894a1aca09386796d6053463a2d20130700000000000000000000000006111c26303b454f59606d78839097a2ada1978f82786c60584e49535e68707e8a939da8a59f92867c6f675c51453e33291e140a00000000000000000000000000000000000006101b242e373f4850575e61696e73777b7e80828484858686858583827f7d79756f6b625f5750483f372d231a0e040000000000000000000000000000000000020c162029323a434b515960636b7075797c7f82838485868685858382807d7a76726d67605c544d453d352b23190e05000000000000000000000713202c3945525d687683909da99e9285796c605346392d201307000000000000000000000000000c18242f3b454f575d5f60606060606060605c5a544c42382d21160a00000000000000000000000000000000030b1218242c343d454d565d666d747f87929892857b6e6154473b2e21140800000814212d3945505a6164686d7174777b7e8185888d929ca8b3a89c928c8885817e7b7774716d6864615a5045392d211508000c1926323f4c5965727f8c93938e827a6f6a615951444039302820180f0700000000000000000000040d1b27323d4754606d7a86929a8d8174675a4e412f24180d01000f1c2936424f5c6975828f9ca8aca6998c7f7366594c403326190d00030f1b27333f49535f6a75828f9b95887c6f6255493c31261a0e02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009141f29323b4246474d4745404e5b6874818e9b9e9184786b5e5145382b1e1205000000010b151f2a36414d56606c788390999e93897d70675c51453c31261a0e110f0c0807050200000000000000000000000000000713202d3a4653606d798693a0afa39986797884919eab9f92867a6d6054473c3121150a00000000000a15202d3946525d6875828f9ba99f92867a7b8894a1aca09386796d6053463a2d2013070000000000000000000000050e17232e38424d57616b73808d959fa9a49e92857b6e665b5046414d56616c74818e96a0aba2989083796d605a50453b30261c110600000000000000000000000000000000000009121c25333d45454d52575f62666a6e71737577787879797978777573706d67636059534d453e362d251b110800000000000000000000000000000000000000050e1720333d454c504f54596063676d70727576787879797878777573706d6865605d55504a423c332b2319110700000000000000000000000714212d3a4754606d7a86929fa89b8e8175665b5044382b1f1206000000000000000000000000000f1c2834404c5761696b6c6c6c68605c544c504e49423a31261c1005000000000000000000000000000000050c151d2328363e464f575f686d78818c939993877d70695e52463a2d20140700000a1723303d4955616c71777a7e8184888b8e9297999e9ea1a9a39f9e9997918e8b8784817e7a77716c6155493d3024170a000b1825313e4a56626d75818f969490847c706b625b514a423a322a2119110600000000000000000915202b353f4745515d677683909c9083766a554b4035291d1004000f1c2936424f5c6975828f9ca8b2a6998c7f7366594c403326190d00000b17222d38414e58636f7c89959a8d807367574d42372b1e120600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020e1925303b444d52545a53514b4e5b6874818e9b9e9184786b5e5145382b1e120500000000030d1925303b44505b666f7c87929f9e9184796d60574d42372b20160c02000000000000000000000000000000000000000713202d3a4653606d798693a0ac9f9286797c8996a1a89b8e8175685d5245392c201303000000000005111d2935414c5663707d8a97a1a2988a7d7b8794a1aca09386796d6053463a2d20130700000000000000000000020b172028343f4a545e69707d8a929da7a79d928a7d70695e544a3f3b44505a606d79849199a3aaa0958d80746c61574d42382e23170e0400000000000000000000000000000000000c18242f3a454f575c5f606059575f626466696a6b6b6c6c6c6b6a686663605d55544f47423c332d241b130900000000000000000000000000000000000000000c18242f3a454f575c5f606059555c606366686a6b6c6c6c6c6b6a686664615e5653514b443f38302a211911080000000000000000000000000a1724313d4a5764707d8a99a3a7988b7e7165544a3f33281c0f0300000000000000000000000000111e2b3744505d697378797979746d665e564e463e3528231c150c040000000000000000000000000000060e161e272e344048505960696e7a828e939f948c7f736b60574d42362a1e110500000b1724313e4a5764717e83878a8e9196989b9e9c97919197a1989292979c9e9b9896918e8a87837e7164574b3e3124180b000916222e3a46515b606d7a8491989691867d726d605c544c443c332b2317110a020000000000010e1a26313d4751595e556673808d99928578675d5145392c201306000f1c2936424f5c6975828f9ca8aa9f998c7f7366594c403326190d000006111b262f3c4854606b7783909d918478695f53473a2d2114080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005111e2a36424d565e6167605c554e5b6874818e9b9e9184786b5e5145382b1e1205000000000008141f28333f4a545f6a73808d96a0968c8073695f53473e32281e1308000000000000000000000000000000000000000713202d3a4653606d798693a0ac9f928579808d9aa8a196897d7063564c4135291d11040000000000010d1924303a4653606d7985929eaa9b8e817a8794a0b5a09386796d6053463a2d201307000000000000000000000a141d29323b44505c666e7b85929ea4aaa0958d80746c61574d4238323e45515d676f7c87929fa7a79d928a7e70695e544a3f342820160c02000000000000000000000000000000030f1c2834404c5761686b6c6c66635b55585a5c5d5e5f565e61666a6c6c6a66605d564e463c322a211b12090100000000000000000000000000000000000000030f1c2834404c5761686b6c6c66635b5356595b5d5e5f565e61666a6c6c6a66605d564e463c342e261e180f0800000000000000000000000005121e2b37424d576774818d9aaba095877b6e6154483b2d22170b0000000000000000000000000000121f2c3845525f6b788586868681786d685f584f473f342e271e160e06000000000000000000000000070f18202830394045525a616b6f7b838f949d968f82776c60594f453b30251a0e0200000a1724313d4a5764707d8a939a9a9ea09e9a938f8a8585919e9286858a8f93999ea09e9a9a938a7d7164574a3e3124170b0006121e29353f45525d686f7c86929f9892877f746d665d564d453d3528231c140c030000000004111d2a36424e59636a6c6c727f8b9897867a6d6053473a2d201407000f1c2935424f5c6875828f9b9f9d93938c7f7366594c403326190d000007111b252c38444f596673808c9996887b6e6155483b2e221508000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000714202d3a46525e696e746d675f585b6874818e9b9e9184786b5e5145382b1e12050000000000020b17222d38424e58606d7984919e9f92867b6e625a50443a3024190c030000000000000000000000000000000000000713202d3a4653606d798693a0ab9f92857884919eac9e9184786c6053463a2f24190d0100000000000008131f2c3844505c6673808d9aa79e9285798699a3afa09386796d6053463a2d20130700000000000000000006111c262f3b444f59606d78829097a1ada3989083796d605a50453b2f2935404b55606a73808c959faaa49f92857b6e665c50443d32281e130800000000000000000000000000000005111e2b3744505c6873787979736d63574b4d4f50555d60686d7276787977736d685f584e443b3025190e02000000000000000000000000000000000000000005111e2b3744505c6873787979736d6357494c4f50555d60686d7276787977736d685f584e443b3025190c06000000000000000000000000000714212d3a46535f697784919eaa9d918477695e52463a2d1c110600000000000000000000000000000c1926323f4c5965727f8c93938e827a6f6a615951444039302820180f0700000000000000000000071019212a323a434b515b636c717d8591959f9991847a6d655b50473d33291f14090000000713202d3a4653606d7985929f9f9c97928d87827d7883909c9285787d82878c91969b9f9f9285796d6053473a2d20140700010d18232935414c565f6a727e8b939e99938c81786d685f574f473f342e261e150c0300000006121f2c3845525e6a757979797e8a9794877b6e6154483b2e211508000e1b2835414e5b6874818e9b95898686867f7366594c403326190d00010d18232d373f464956636f7c8999978a7d7164574a3e3124170b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000814212e3b4754616e7b80796f6a605b6874818e9b9e9184786b5e5145382b1e120500000000000006111c262f3c45515d67707d8a939e988f82766c61564c4135291e150a0000000000000000000000000000000000000713202d3a4653606d798693a0ab9e92857b8896a1a49a8c8073655b504437281e13080000000000000003101c28343f4a54626f7c8895a0a197897c86929faca09386796d6053463a2d2013070000000000000000050e17222d38424c56606b73808d949fa9a69f92867c6f675d51473e3329242f3a434e58606d78839098a2ada2979082786d60594f443a3025191006000000000000000000000000000005121f2c3845525f6b788586867f7366574d4e535a61676d727a7f83858584807a6f6a5f564d42362a1f1408000000000000000000000000000000000000000005121f2c3845525f6b788586867f7366574d4e535a61676d727a7f83858584807a6f6a5f564d42362a1f1408000000000000000000000000000815222e3b4855616e7b8896a0aa9a8d807467574d42362a1e0a0000000000000000000000000000000b1825313e4a56626d75818f969490847c706b625b514a423a322a211911060000000000000000040f19222b333c444c555c606d737e869297a09f92877c6f685d53493f352b20170d0200000006131f2c3845515c6775818e9a948f8a85807b76717783909d92857971767b80848a8f92998e8175675d5145382c1f13060000070d19242f3a434e58626d75818e95a09f928e827a6e69605951443f3830271e150b0000000613202c3946535f6c798786868a909a95887b6e6255483b2f221508000e1b2734414e5a6774818d9a9083797979736d63574b3e3225190c0006121e29353f49515759606d798692998c7f7366594c403326190d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815212e3b4854616e7b87837c726c656874818e9b9e9184786b5e5145382b1e1205000000000000000a141d2935404b55616c75828f989f948a7e71685d52453d30261c110600000000000000000000000000000000000713202d3a4653606d798693a0ab9e91847f8c99a89f93877b6e6153493f3327160c0100000000000000000c17232e3847535f6a7783909da9998c7f85929faba09386796d6053463a2d20130700000000000000020b162028333f4a545e68707d88939fa6a99e938b7f726a5f554b40352c201d28313d44505c666e7b86929fa6a99f948c80736b60564c41352922180d030000000000000000000000000004101d2a3743505d6a7683908f8276695e54585f626c71797f858c909292908c857c6f695e52463b3025190e020000000000000000000000000000000000000004101d2a3743505d6a7683908f8276695e54585f626c71797f858c909292908c857c6f695e52463b3025190e02000000000000000000000003101c28343f4a5465727e8b98a8a398897d7063564a3d30251a0e0000000000000000000000000000000916222e3a46515b606d7a8491989691867d726d605c544c443c332b2317110a020000000000000a16212b343d454d565e676d757f8a9298a19e938b7f726a60564c41382d23190e050000000004101c2834404b5564707d8a8d88837e79736e696a7784919d9886796d696e73787d82868c8a7d7064554b4035291d100400000008131e28313c46515b606d79839198a29d948f847b706b625b504a423930271d120700000613202c3946535f6c79869293979aa295887c6f6255493c2f221609000d1a2733404d5a6673808d99918578666c66635b51463b2f23160a000916222e3a46515b62656c667885919a8d8174675a4e4134271b0e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815212e3b4854616e7b8790867f776e6974818e9b9e9184786b5e5145382b1e120500000000000000020b18242f3a43505a616e7b86929f9e92857a6d60594f42382e23170c03000000000000000000000000000000000713202d3a4653606d798693a0aa9e918482909caa9c8f8276695f5341382d22170400000000000000000006111c2b37434e5865727f8b99a39d908384919eaba09386796d6053463a2d201307000000000000000a141d28323a44505b666e7a85929aa4aba1968f82756d62584e43392f231a161f28343f4a545f69717e8b939ea9a69f93877d70685e52463f342a1f150b01000000000000000000000000020f1b2835424e5b6875818e92877b6e6663646a6f767e848c92989d9f9f9d9791857b6e61564d41362a1e110500000000000000000000000000000000000000020f1b2835424e5b6875818e92877b6e6663646a6f767e848c92989d9f9f9d9791857b6e61564d41362a1e1105000000000000000000000006121f2c3844505c6675828f9ba89f9286796d6053473a2d20140900000000000000000000000000000006121e29353f45525d686f7c86929f9892877f746d665d564d453d3528231c140c0300000000030f1b27323d464e575f686d79818c929fa3a0958e81756d62584e443a2f261b11080000000000000c18232e3a4653606d7984807b76716d66615f6b7884919e93877a6d6061666c70757a7f83796d6053463a2f24180c00000000010c161f2a343f45515d676e7c86929fa59f9691857d726d605c544b42392e23180c00000613202c3946535f6c7986929fa4a6a295887c6f6255493c2f221609000b1825323e4b5865717e8b989286796d605957514940352a1e1206000b1825313e4a57626d7279797983909b8e8275685b4f4235281c0f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815212e3b4854616e7b8798928c827b7174818e9b9e9184786b5e5145382b1e1205000000000000000007131d28313e46525e69727f8c95a0978e81746b60544a3f34281f1409000000000000000000000000000000000713202d3a4653606d798693a0ab9e918587929fa2988b7e7164574d422f261b1106000000000000000000000f1b26313c4754616d7a86929f9f928785929eaba09386796d6053463a2d20130700000000000006111b262f3a444f59606c78828f97a1aca49991847a6d615b51463c31271d110d17232e38424d57626d75828f97a1ada49991847a6d615b51463c31271d1207000000000000000000000000000c1926333f4c5966727f8c998f8279727071757c838a91969fa2aaa3a3a9a1978e8174685e5246392d20140600000000000000000000000000000000000000000c1926333f4c5966727f8c998f8279727071757c838a91969fa2aaa3a3a9a1978e8174685e5246392d20140600000000000000000000000713202d3a4653606d7985929fa99c8f8276675d5145382c1f1306000000000000000000000000000000010d18232935414c565f6a727e8b939e99938c81786d685f574f473f342e261e150c0300000007131f2c38434e5860696e7a828e939ca4a2989183796d605b51463d32281d140a0000000000000007131f2c3845515c676d78746e6a64605c545f6b7885929e94877b6e61545b6063686e72776d675c5145382c1d12070000000000040d18222935404b555f6a717e8a939da7a09792877f746d665c544b4034281c1004000613202c3946535f6c7986929facafa295887c6f6255493c2f221609000916232f3c4956626f7c899a99897c6f6356494640372e23190d02000c1926323f4c5965727f86868689959c8f8275695c4f4236291c0f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000815212e3b4854616e7b879298948f857e74818e9b9e9184786b5e5145382b1e12050000000000000000010c161f2a36424d57606d788390999f93887c6f665c50443b31251a0d040000000000000000000000000000000713202d3a4653606d798693a0ada197919299a39f9285796d6053473b3120140a00000000000000000000000a15202d3946525e6875828f9ba399929297a1ada09386796d6053463a2d2013070000000000040e17222d38414c56606b737f8c949fa9a79f93877d70685e52493f342a1f150b06111c26303c45505a616d7a85919ea4aba1968f82756d62584e43392f24180f060000000000000000000000000a1623303d495663707c8998948f837e7d7e828790949ea1a19e9996979a9f9f92877b6e6154473b2d22170b00000000000000000000000000000000000000000a1623303d495663707c8998948f837e7d7e828790949ea1a19e9996979a9f9f92877b6e6154473b2d22170b0000000000000000000000091623303c4956636f7c8997a2a9988c7f7265554b4035291d100400000000000000000000000000000000070d19242f3a434e58626d75818e95a09f928e827a6e69605951443f3830271e150b0000000915222e3b4854606a6f7b8490949ea5a49f92867c6e675d51493f342b20160b020000000000000004101c2834404b555c666c66625f575351505b657985929f95887b6e62555053565e61666a605c554b4034281c0b01000000000000071018242f39434e58616c74818e95a0a9a299928b80786d665c5145382c1f1306000613202c3946535f6c7986929facafa295887c6f6255493c2f221609000714202d3a4753606d7a8693998c807366594f44382c251c120700000c1926323f4c5965727f8c93939da09c8f8276695c504336291d10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000613202d394653606c787f86909597928a81818e9b9e9184786b5e5145382b1e1205000000000000000000040d1a25303b44505c666f7c87939f9a9083786d60574d42362a1f160c0100000000000000000000000000000713202d3a4653606d798693a0b3a9a19e9fa3a89a8e8174675d5145392c1f1302000000000000000000000005111d2a36414c5664707d8a97a1a39f9ea1a9b3a09386796d6053463a2d20130700000000020c162027333f49535e686f7d87929fa6aa9f958d80736b60564c41372d22180d03000a151e2a333f46525e68707d8a929da8a89e938b7f726a5f554b40352921170d0300000000000000000000000713202d3a4653606d7985929f95908b898b8f93999fa39f97918c8a8a8e9299998c7f7265544a3f33281c0f03000000000000000000000000000000000000000713202d3a4653606d7985929f95908b898b8f93999fa39f97918c8a8a8e9299998c7f7265544a3f33281c0f0300000000000000000004111d2935414c566673808c99a9a197887c6f6255483c2f24180c00000000000000000000000000000000000008131e28313c46515b606d79839198a29d948f847b706b625b504a423930271d120700000916232f3c4956626f7c85919693939393928a7e716a5f554b40372d22190e040000000000000000000c18232e39434b545b605b54534e464653606c7986939f95897c6f625649464c5254595d53514b43392e23180c000000000000000007121d28313c46505a606d7983909893939393928d82796d6053463a2d201307000613202c3946535f6c7986929facaca295887c6f6255493c2f221609000613202c3945515d677783909d9083776b6054483d30261c110600000c1926323f4c5965727f8c989faaa99c8f8376695c504336291d100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006121f2b3844505b666c727c838c9299938e8e939e9e9184786b5e5145382b1e12050000000000000000000009141f28343f4a54606a74808d97a0958c7f72695e53463e31281d130700000000000000000000000000000713202d3a4653606d798693a0acb3adabacaca095897c6f62554b4035291d10040000000000000000000000010d1925303a4653606d7985929eabacabadb3aca09386796d6053463a2d2013070000000008131e28323a44505b656d7a849199a3aea2989083786d60594f443a30251b10060000030c18212a36414c56616b74808d95a0aba69f92867c6f675d51453e33291f1409000000000000000000000006131f2c3845515c6774818d98a09d9896979b9fa49f99928d85807d7d818792998f8276665b5044382b1f12060000000000000000000000000000000000000006131f2c3845515c6774818d98a09d9896979b9fa49f99928d85807d7d818792998f8276665b5044382b1f12060000000000000000000613202c3945525d687683909da99e9185786c605346392d201307000000000000000000000000000000000000010c161f2a343f45515d676e7c86929fa59f9691857d726d605c544b42392e23180c00000d1a2633404d59667380868686868686868680746c61574e43392f251b10070000000000000000000007121d273039424a5053504a47423c4753606d7a869aa496897c706356493d4146474c504645403930271d12070000000000000000010c161f2a343e45515c676e7b8586868686868686867a6e6154473b2e211408000613202c3946535f6c7986929f9f9f9f95887c6f6255493c2f2216090004101d2935404b556673808c9995897d7063584e42382e23170b00000c1926323f4c5965727f8c98a5b2a99c8f8376695c504336291d1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030f1c28333f4a545b606a6e787f8690959b9b9ea59e9184786b5e5145382b1e120500000000000000000000030b17232e38424e58606d7a84919e9f92867b6e615a50433a2f24180d01000000000000000000000000000713202d3a4653606d798693a0acacacacb5ab9d9184776a605443392f24180c0000000000000000000000000008131f2c3844515c6674808d9aa7b1acacacaca09386796d6053463a2d201307000000010d1924303a444e58606c77828f96a1aba59f92857b6e665c50473d32281e130900000000060f1925303a444f59606d79839199a3aea3989183796d605a50453b31261a0e020000000000000000000004101c2834404b55616e7b86929fa4a5a3a4a7a09d948f868079737070747d87939285796c605346392d2013060000000000000000000000000000000000000004101c2834404b55616e7b86929fa4a5a3a4a7a09d948f868079737070747d87939285796c605346392d2013060000000000000000000714212d3a4754606d7a86929fac9b8e8174655b5044372b1f120500000000000000000000000000000000000000040d18222935404b555f6a717e8a939da7a09792877f746d665c544b4034281c1004000c1925323f4b57636d737979797979797979746e645a50453c31281d12090000000000000000000000000b151e272f383f4446443f38373a4754616d7a8794a0978a7d7064574a3d36393b3f443a38342e271e150b00000000000000000000040d18222934404b555f696e78797979797979797976685e5246392d201407000613202c3946535f6c7986929393939393887c6f6255493c2f22160900010d18242f3b4855616e7b88949c8f82756a60544a3f34281c1003000c1926323f4c5965727f8c98a5aca99c8f8376695c504336291d1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b17222d38424a50585f666d727c838c9299a0a79e9184786b5e5145382b1e1205000000000000000000000006111c26303d45515d67717e8a949e988f82756c61554b4035291d1104000000000000000000000000000713202d3a4653606d7986939f9f9f9f9f9fa3998c7f7266584e4331271d12070000000000000000000000000004101c2834404a54626f7c8895a09f9f9f9f9f9f9386796d6053463a2d20130700000004111d2935414c56606a727f8c949ea8a89e938a7e71695f544a3f352b20160c00000000000008131e29323e45515d676f7c87929fa69fa0958e81746c61574d42362a1e120500000000000000000000000c18232e3946525e69727f8b929b9e9f9e9b959089827b736d6763646b74818e98887b6e6255483b2f22150800000000000000000000000000000000000000000c18232e3946525e69727f8b929b9e9f9e9b959089827b736d6763646b74818e98887b6e6255483b2f2215080000000000000000000a1724313d4a5764707d8a99a3a49a8a7e716453493f33271b0f030000000000000000000000000000000000000000071018242f39434e58616c74818e95a0a9a299928b80786d665c5145382c1f1306000a16232f3b47525b63666c6c6c6c6c6c6c6c67645c52483e332a1f160c00000000000000000000000000030c151d262d33383938332d2e3b4854616e7b87949f978a7e7164574b3e312d2e33372d2c28231d150c030000000000000000000000060f18232f39434d575f616c6c6c6c6c6c6c6c6c6c5e564c41362a1e1105000613202c3946535f6c7987868686868686867c6f6255493c2f22160900000714212d3a47535f6975828f9c93877c6f665c5044382b1f1206000c1926323f4c5965727f8c989f9f9f9c8f8376695c504336291d10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006111c262f383f444e545c606a6f788087909593939184786b5e5145382b1e12050000000000000000000000000a141e2935414c55616c75828f9893948a7d70675d5145392c201306000000000000000000000000000713202d3a4653606d7986939393939393939392867b6e6154473d3221150b0100000000000000000000000000000c18232e394754606a778390939393939393939386796d6053463a2d2013070000000713202c3945525d686f7c879293939393968e81746c61574d42382e23190e04000000000000020c17202935404b55606a727f8c9493939393938a7e71695f53463a2d211407000000000000000000000007121d2a36424d56626d7380898f9292918f8a837d766e69605d5559626f7c89988a7d7063574a3d3024170a000000000000000000000000000000000000000007121d2a36424d56626d7380898f9292918f8a837d766e69605d5559626f7c89988a7d7063574a3d3024170a0000000000000000000e1b2734414e5a6774818d93939393877a6d6154473a2d22170b0000000000000000000000000000000000000000000007121d28313c46505a606d7983909893939393928d82796d6053463a2d2013070007131e2a35404952575960606060606060605a58524a40362c21180d040000000000000000000000000000030b141c22282b2d2b28222f3b4855626e7b889393938b7e7265584b3f322521262a201f1c18120b030000000000000000000000000007121d27313c454d53555f60606060606060605f524c443b3025190e020006121f2c3845525e6a757979797979797979766a6054473b2e221508000006121e2b37424d57626f7c89939a9083786d6053463a2d201307000c1926323f4c5965727f8c93939393938f8376695c504336291d100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a141d262d333c424a50585f666d737c838686868684786b5e5145382b1e1205000000000000000000000000020c19242f3a43505a616e7b8686868686847a6d6053473a2d201407000000000000000000000000000713202d3a4653606d78868686868686868686868275685e5246392d20140300000000000000000000000000000007121c2b37434e5865727f86868686868686868686786d6053463a2d2013070000000714212d3a4754606d7a848686868686868684796d605a50453b30261c11070000000000000000050e18242f39434e58606c788286868686868686857b6e6155483b2e2215080000000000000000000000000e1925303b44515b636e737d82858684827d78706b625f57514b53606d788686867f7265584c3f3225190c0000000000000000000000000000000000000000000e1925303b44515b636e737d82858684827d78706b625f57514b53606d788686867f7265584c3f3225190c000000000000000000111e2b3844515e6b778486868686868377685e5246392d1b110600000000000000000000000000000000000000000000010c161f2a343e45515c676e7b8586868686868686867a6e6154473b2e21140800020d19242e3740474b4d53535353535353534d4c4740382f241a0f0600000000000000000000000000000000020a11171c1f201f1c222f3c4955626f7c86868686867f7265594c3f322619191d1313100c07000000000000000000000000000000010b151f2a333c4246485253535353535353535346413b32291e1408000004111d2a36424e59636a6c6c6c6c6c6c6c6c6260584e43372b1f13060000020e1a26313c4754606a7581868686867f7265584c3f3225190c000c1926323f4c5965727f868686868686868276695c504336291d10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020b141c222830383f444e545c606a6f77797979797872685c5043372a1d11040000000000000000000000000008131e28313e46535f696e7979797979786d675d5145392c2013060000000000000000000000000006121f2c3844505c667679797979797979797979757065564d41362a1e1105000000000000000000000000000000000f1b27323c4a57626d727979797979797979797976665c5044382c1f12060000000713202c3945525d686d7879797979797979776d675d51483e33291e150a0000000000000000000007121d27313c44505b666c7679797979797979786e695f53463a2d21140700000000000000000000000009141f29323f49525c636b707578797875706c656059534d4544505c6674797979726d62564a3e3124180b00000000000000000000000000000000000000000009141f29323f49525c636b707578797875706c656059534d4544505c6674797979726d62564a3e3124180b000000000000000000111d2a37434f5c6772777979797979777167564c41362a1e0a000000000000000000000000000000000000000000000000040d18222934404b555f696e78797979797979797976685e5246392d201407000007121c252e353b3f404646464646464646413f3c362f261d120800000000000000000000000000000000000000060b0f12131215222e3b4754606a767979797979726d63574a3e3125180c11070604000000000000000000000000000000000000030d18212a31373a3b4546464646464646463b3936302920170d020000010e1a26313d4751595e5f6060606060606055544e463c32271b0f0300000009151f2b38434e58656f7579797979726d62564a3e3125180b000b1825313e4a57626d72797979797979797670665a4e4235291c0f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a11171e262e343c424a51585f626a6c6c6c6c6b6860564b3f33271b0f0200000000000000000000000000010c161f2a36424d575f616c6c6c6c6c6b605d554b4035291d11040000000000000000000000000003101c28343f4a545c6c6c6c6c6c6c6c6c6c6c6c69655e54443b3025190e02000000000000000000000000000000000a15202e3a46515b62656c6c6c6c6c6c6c6c6c6c6c5c544a3f34281c100300000004111d2935414c565d606b6c6c6c6c6c6c6c6b605d554b40362c21170c0300000000000000000000010b151f28333f4a545b60696c6c6c6c6c6c6c6c615f574d42362a1e1205000000000000000000000000020d17202d37404952596063686b6c6b6864605b534f47423c3f4a545c6a6c6c6c65625b51463a2e221509000000000000000000000000000000000000000000020d17202d37404952596063686b6c6b6864605b534f47423c3f4a545c6a6c6c6c65625b51463a2e2215090000000000000000000f1b27333f4b5660676b6c6c6c6c6c6a675f55443a3025190d00000000000000000000000000000000000000000000000000060f18232f39434d575f616c6c6c6c6c6c6c6c6c6c5e564c41362a1e11050000000a131c242a2f323339393939393939393433302b241d140b0000000000000000000000000000000000000000000003060606131f2b37434e5860626c6c6c6c6c65635b51463a2e2216090400000000000000000000000000000000000000000000060f181f262b2d2e3939393939393939392e2d2a251e170e05000000000915202b353f474e5253535353535353534947433c342b20150a00000000030f1b27323d46535d65686c6c6c6c65625b51463a2e221609000916222e3a46515b62656c6c6c6c6c6c6c69665e54493e3226190d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060c141c2328303940444e54555d606060605e5c564e443a2f23170b000000000000000000000000000000040d1a26313b454d53555f606060605e53514b433a2f24180d0100000000000000000000000000000c17232e38424a505f606060606060606060605c5a544c4232291f1408000000000000000000000000000000000004121e29353f49515759606060606060606060605f504a42382e23170c00000000010d1924303a444c52545e606060606060605e53514b433a2f241a0f06000000000000000000000000030d17222d38424a50535d606060606060605f55534d453b31261a0e0200000000000000000000000000050e1b252e3740474f54565c5f5f5e5c57535049413d373138424a50535f6060585651493f34291e120600000000000000000000000000000000000000000000050e1b252e3740474f54565c5f5f5e5c57535049413d373138424a50535f6060585651493f34291e12060000000000000000000b17232e3a444e565c5e60606060605d5b554d4332291e1308000000000000000000000000000000000000000000000000000007121d27313c454d53555f60606060606060605f524c443b3025190e02000000010a12191e2325262d2d2d2d2d2d2d2d2726241f19130b0200000000000000000000000000000000000000000000000000030f1b27323c464e54556060606060595751493f352a1e1206000000000000000000000000000000000000000000000000060e141a1e21222c2d2d2d2d2d2d2d2d21201e19140d050000000000040f19242d353d424546464646464646463c3b37322b22190f0400000000000a16202b34414b53595b60606060585651493f34291e12060006121e29353f49515759606060606060605c5a544c42382d21160a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020a11171e272e343c434749515353535351504b443c32281d12070000000000000000000000000000000009141f29333b4246485253535353514745403a31281d130700000000000000000000000000000006111c2630383f4453535353535353535353534f4d4942393020170d020000000000000000000000000000000000010d18232d373f464a4c5353535353535353535353443f3830261c1106000000000008131e28323a4145475153535353535353514745403a31281d1208000000000000000000000000000006111c262f383f44465053535353535353524846423b33291f140900000000000000000000000000000009131c252e353d4448494f5253514f4a46443f382f2b2630383f44465353534c4a463f372d23180d01000000000000000000000000000000000000000000000009131c252e353d4448494f5253514f4a46443f382f2b2630383f44465353534c4a463f372d23180d0100000000000000000006121d28323c444b4f515353535353504f4a433b3120170d020000000000000000000000000000000000000000000000000000010b151f2a333c4246485253535353535353535346413b32291e1408000000000000070d1316191a20202020202020201a1a17130e08010000000000000000000000000000000000000000000000000000000a15202b343c43474953535353534c4a463f372d23180d010000000000000000000000000000000000000000000000000003090e1214151f20202020202020201414110e08020000000000000008121b242b31363839393939393939392f2e2b2720191007000000000000040f19222f3941484d4e535353534c4a463f372d23180d0100010d18232d373f464a4c53535353535353504e49423a31261c1005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060c151c232832373b3c444646464645433f3a322a20160c0100000000000000000000000000000000030d17212931363a3b4646464646453a39352f281f160c01000000000000000000000000000000000a151e262e3438464646464646464646464642413d3730271e0e050000000000000000000000000000000000000007111b252d353a3e3f464646464646464646464638342e261e150a000000000000020c1620283035393a4546464646464646443a39352f281f160c000000000000000000000000000000000a141d262d3338394346464646464646453b3a36312921170d03000000000000000000000000000000010a131c232b33383c3d42454645423d3937332d261d1e262e34383a4646463f3e3a342d251b1106000000000000000000000000000000000000000000000000010a131c232b33383c3d42454645423d3937332d261d1e262e34383a4646463f3e3a342d251b110600000000000000000000010c16202a323a3f4344464646464644423e3931291f0e0500000000000000000000000000000000000000000000000000000000030d18212a31373a3b4546464646464646463b3936302920170d020000000000000002070a0c0d13131313131313130e0d0b07030000000000000000000000000000000000000000000000000000000000040e19222b32373b3c46464646463f3e3a352d251c11070000000000000000000000000000000000000000000000000000000002050708121313131313131313080705020000000000000000000009121920262a2c2c2d2d2d2d2d2d2d22221f1b150f07000000000000000007101d272f373d4042464646463f3e3a342d251b110700000007111b252d353a3e3f4646464646464643423e3831281f150a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030b121820262b2e2f37393939393837332f2820180f05000000000000000000000000000000000000060f171f262a2d2e3939393939382d2c29241d160d040000000000000000000000000000000000030c151c23282c39393939393939393939393635312c261e150c0000000000000000000000000000000000000000000a131b23292e313239393939393939393939392c28231c150c0300000000000000040e161e24292c2d3839393939393939382d2c29241d160d0400000000000000000000000000000000020b141c22282b2d3639393939393939392e2d2a261f170f060000000000000000000000000000000000010a111921272c2f303538393835312d2b27221b14151c23282c2d39393932312e29231b13090000000000000000000000000000000000000000000000000000010a111921272c2f303538393835312d2b27221b14151c23282c2d39393932312e29231b1309000000000000000000000000040e1820282e33373839393939393736332e271f170d000000000000000000000000000000000000000000000000000000000000060f181f262b2d2e3939393939393939392e2d2a251e170e05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007101920272b2e2f393939393932312e2a231c130a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080f151a1d1f20202020202020201615130f0a04000000000000000000000b151d252c3134353939393932312e29231b130900000000000a131b23292e3132393939393939393635322d261f160d0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070c151b1f22222a2d2d2d2d2b2a27231d160f060000000000000000000000000000000000000000060d141a1e21222c2d2d2d2d2b20201d18130c0400000000000000000000000000000000000000030a11171c1f2d2d2d2d2d2d2d2d2d2d2d292825211b140c03000000000000000000000000000000000000000000010a11181e2225262d2d2d2d2d2d2d2d2d2d2d1f1c17110a03000000000000000000040c13191d20212b2d2d2d2d2d2d2d2b20201d18130c04000000000000000000000000000000000000020a11171c1f202a2d2d2d2d2d2d2d2c22211e1a140d060000000000000000000000000000000000000000070f161c202223292c2c2b2924201f1b17110a0a11171c1f202c2d2d2524221e1811090100000000000000000000000000000000000000000000000000000000070f161c202223292c2c2b2924201f1b17110a0a11171c1f202c2d2d2524221e1811090100000000000000000000000000060e161d23272a2b2d2d2d2d2d2a2926221c150d0500000000000000000000000000000000000000000000000000000000000000060e141a1e21222c2d2d2d2d2d2d2d2d21201e19140d0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070e151b1f22222d2d2d2d2d2625221e18110a010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004090e1112131313131313131309080603000000000000000000000000030b131a202427282d2d2d2d2525221e181109010000000000010a11181e2225262d2d2d2d2d2d2d292926211c150d04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0f1315161e202020201e1d1b17120c050000000000000000000000000000000000000000000003090e1214151f202020201e1413110d070100000000000000000000000000000000000000000000060c101220202020202020202020201c1b1915100902000000000000000000000000000000000000000000000000070d12161819202020202020202020202012100c0600000000000000000000000002080d1113141e202020202020201e1413110d0701000000000000000000000000000000000000000000060b0f12131d202020202020201f1514120e090300000000000000000000000000000000000000000000050b101316161c1f201e1c1713120f0b060000060c101213202020191815120d0600000000000000000000000000000000000000000000000000000000000000050b101316161c1f201e1c1713120f0b060000060c101213202020191815120d0600000000000000000000000000000000040c12171b1d1e20202020201d1d1a16110b0300000000000000000000000000000000000000000000000000000000000000000003090e1214151f20202020202020201414110e0802000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0f1315162020202020191816120d0700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001090f14181b1b20202020191816120d07000000000000000000070d12161819202020202020201d1c1916100a0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003060809111313131312110f0b07010000000000000000000000000000000000000000000000000002050708131313131312070604010000000000000000000000000000000000000000000000000000030613131313131313131313130f0f0d09040000000000000000000000000000000000000000000000000000000106090b0c13131313131313131313130603000000000000000000000000000000000104070712131313131313131107060401000000000000000000000000000000000000000000000000000306061013131313131313120807050200000000000000000000000000000000000000000000000000000407090a0f1213120f0a0605030000000000000306071313130c0b090601000000000000000000000000000000000000000000000000000000000000000000000407090a0f1213120f0a0605030000000000000306071313130c0b09060100000000000000000000000000000000000001060b0f1111131313131311100e0a06000000000000000000000000000000000000000000000000000000000000000000000000000205070812131313131313131308070502000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000306080913131313130c0c09060100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004080c0e0f131313130c0b09060100000000000000000000000106090b0c13131313131313100f0d0a05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + m_StreamData: + offset: 0 + size: 0 + path: diff --git a/Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF.asset.meta b/Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF.asset.meta new file mode 100644 index 0000000..66e69d1 --- /dev/null +++ b/Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8f586378b4e144a9851e7b34d9b748ee +timeCreated: 1484171803 +licenseType: Pro +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Resources/LineBreaking Following Characters.txt b/Assets/TextMesh Pro/Resources/LineBreaking Following Characters.txt new file mode 100644 index 0000000..a52cc38 --- /dev/null +++ b/Assets/TextMesh Pro/Resources/LineBreaking Following Characters.txt @@ -0,0 +1 @@ +)]}〕〉》」』】〙〗〟’”⦆»ヽヾーァィゥェォッャュョヮヵヶぁぃぅぇぉっゃゅょゎゕゖㇰㇱㇲㇳㇴㇵㇶㇷㇸㇹㇺㇻㇼㇽㇾㇿ々〻‐゠–〜?!‼⁇⁈⁉・、%,.:;。!?]):;=}¢°"†‡℃〆%,. \ No newline at end of file diff --git a/Assets/TextMesh Pro/Resources/LineBreaking Following Characters.txt.meta b/Assets/TextMesh Pro/Resources/LineBreaking Following Characters.txt.meta new file mode 100644 index 0000000..73ed660 --- /dev/null +++ b/Assets/TextMesh Pro/Resources/LineBreaking Following Characters.txt.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: fade42e8bc714b018fac513c043d323b +timeCreated: 1425440388 +licenseType: Store +TextScriptImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Resources/LineBreaking Leading Characters.txt b/Assets/TextMesh Pro/Resources/LineBreaking Leading Characters.txt new file mode 100644 index 0000000..ccbb4ae --- /dev/null +++ b/Assets/TextMesh Pro/Resources/LineBreaking Leading Characters.txt @@ -0,0 +1 @@ +([{〔〈《「『【〘〖〝‘“⦅«$—…‥〳〴〵\[({£¥"々〇$¥₩ # \ No newline at end of file diff --git a/Assets/TextMesh Pro/Resources/LineBreaking Leading Characters.txt.meta b/Assets/TextMesh Pro/Resources/LineBreaking Leading Characters.txt.meta new file mode 100644 index 0000000..cc684b3 --- /dev/null +++ b/Assets/TextMesh Pro/Resources/LineBreaking Leading Characters.txt.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d82c1b31c7e74239bff1220585707d2b +timeCreated: 1425440388 +licenseType: Store +TextScriptImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Resources/Sprite Assets.meta b/Assets/TextMesh Pro/Resources/Sprite Assets.meta new file mode 100644 index 0000000..5171f1b --- /dev/null +++ b/Assets/TextMesh Pro/Resources/Sprite Assets.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 512a49d95c0c4332bdd98131869c23c9 +folderAsset: yes +timeCreated: 1441876896 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Resources/Sprite Assets/EmojiOne.asset b/Assets/TextMesh Pro/Resources/Sprite Assets/EmojiOne.asset new file mode 100644 index 0000000..98e6d27 --- /dev/null +++ b/Assets/TextMesh Pro/Resources/Sprite Assets/EmojiOne.asset @@ -0,0 +1,659 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2103686 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: TextMeshPro/Sprite + m_Shader: {fileID: 4800000, guid: cf81c85f95fe47e1a27f6ae460cf182c, type: 3} + m_ShaderKeywords: UNITY_UI_CLIP_RECT + m_LightmapFlags: 5 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _MainTex: + m_Texture: {fileID: 2800000, guid: dffef66376be4fa480fb02b19edbe903, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _ColorMask: 15 + - _CullMode: 0 + - _Stencil: 0 + - _StencilComp: 8 + - _StencilOp: 0 + - _StencilReadMask: 255 + - _StencilWriteMask: 255 + - _UseUIAlphaClip: 0 + m_Colors: + - _ClipRect: {r: -32767, g: -32767, b: 32767, a: 32767} + - _Color: {r: 1, g: 1, b: 1, a: 1} +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 84a92b25f83d49b9bc132d206b370281, type: 3} + m_Name: EmojiOne + m_EditorClassIdentifier: + hashCode: -1836805472 + material: {fileID: 2103686} + materialHashCode: 0 + m_Version: 1.1.0 + m_FaceInfo: + m_FamilyName: + m_StyleName: + m_PointSize: 0 + m_Scale: 0 + m_LineHeight: 0 + m_AscentLine: 0 + m_CapLine: 0 + m_MeanLine: 0 + m_Baseline: 0 + m_DescentLine: 0 + m_SuperscriptOffset: 0 + m_SuperscriptSize: 0 + m_SubscriptOffset: 0 + m_SubscriptSize: 0 + m_UnderlineOffset: 0 + m_UnderlineThickness: 0 + m_StrikethroughOffset: 0 + m_StrikethroughThickness: 0 + m_TabWidth: 0 + spriteSheet: {fileID: 2800000, guid: dffef66376be4fa480fb02b19edbe903, type: 3} + m_SpriteCharacterTable: + - m_ElementType: 2 + m_Unicode: 128522 + m_GlyphIndex: 0 + m_Scale: 1 + m_Name: Smiling face with smiling eyes + m_HashCode: -1318250903 + - m_ElementType: 2 + m_Unicode: 128523 + m_GlyphIndex: 1 + m_Scale: 1 + m_Name: 1f60b + m_HashCode: 57188339 + - m_ElementType: 2 + m_Unicode: 128525 + m_GlyphIndex: 2 + m_Scale: 1 + m_Name: 1f60d + m_HashCode: 57188341 + - m_ElementType: 2 + m_Unicode: 128526 + m_GlyphIndex: 3 + m_Scale: 1 + m_Name: 1f60e + m_HashCode: 57188340 + - m_ElementType: 2 + m_Unicode: 128512 + m_GlyphIndex: 4 + m_Scale: 1 + m_Name: Grinning face + m_HashCode: -95541379 + - m_ElementType: 2 + m_Unicode: 128513 + m_GlyphIndex: 5 + m_Scale: 1 + m_Name: 1f601 + m_HashCode: 57188256 + - m_ElementType: 2 + m_Unicode: 128514 + m_GlyphIndex: 6 + m_Scale: 1 + m_Name: Face with tears of joy + m_HashCode: 239522663 + - m_ElementType: 2 + m_Unicode: 128515 + m_GlyphIndex: 7 + m_Scale: 1 + m_Name: 1f603 + m_HashCode: 57188258 + - m_ElementType: 2 + m_Unicode: 128516 + m_GlyphIndex: 8 + m_Scale: 1 + m_Name: 1f604 + m_HashCode: 57188261 + - m_ElementType: 2 + m_Unicode: 128517 + m_GlyphIndex: 9 + m_Scale: 1 + m_Name: 1f605 + m_HashCode: 57188260 + - m_ElementType: 2 + m_Unicode: 128518 + m_GlyphIndex: 10 + m_Scale: 1 + m_Name: 1f606 + m_HashCode: 57188263 + - m_ElementType: 2 + m_Unicode: 128521 + m_GlyphIndex: 11 + m_Scale: 1 + m_Name: 1f609 + m_HashCode: 57188264 + - m_ElementType: 2 + m_Unicode: 0 + m_GlyphIndex: 12 + m_Scale: 1 + m_Name: .notdef + m_HashCode: -600915428 + - m_ElementType: 2 + m_Unicode: 129315 + m_GlyphIndex: 13 + m_Scale: 1 + m_Name: 1f923 + m_HashCode: 57200239 + - m_ElementType: 2 + m_Unicode: 9786 + m_GlyphIndex: 14 + m_Scale: 1 + m_Name: 263a + m_HashCode: 1748406 + - m_ElementType: 2 + m_Unicode: 9785 + m_GlyphIndex: 15 + m_Scale: 1 + m_Name: 2639 + m_HashCode: 1748462 + m_SpriteGlyphTable: + - m_Index: 0 + m_Metrics: + m_Width: 128 + m_Height: 128 + m_HorizontalBearingX: 0 + m_HorizontalBearingY: 115.6 + m_HorizontalAdvance: 128 + m_GlyphRect: + m_X: 0 + m_Y: 384 + m_Width: 128 + m_Height: 128 + m_Scale: 1 + m_AtlasIndex: 0 + sprite: {fileID: 0} + - m_Index: 1 + m_Metrics: + m_Width: 128 + m_Height: 128 + m_HorizontalBearingX: 0 + m_HorizontalBearingY: 115.6 + m_HorizontalAdvance: 128 + m_GlyphRect: + m_X: 128 + m_Y: 384 + m_Width: 128 + m_Height: 128 + m_Scale: 1 + m_AtlasIndex: 0 + sprite: {fileID: 0} + - m_Index: 2 + m_Metrics: + m_Width: 128 + m_Height: 128 + m_HorizontalBearingX: 0 + m_HorizontalBearingY: 115.6 + m_HorizontalAdvance: 128 + m_GlyphRect: + m_X: 256 + m_Y: 384 + m_Width: 128 + m_Height: 128 + m_Scale: 1 + m_AtlasIndex: 0 + sprite: {fileID: 0} + - m_Index: 3 + m_Metrics: + m_Width: 128 + m_Height: 128 + m_HorizontalBearingX: 0 + m_HorizontalBearingY: 115.6 + m_HorizontalAdvance: 128 + m_GlyphRect: + m_X: 384 + m_Y: 384 + m_Width: 128 + m_Height: 128 + m_Scale: 1 + m_AtlasIndex: 0 + sprite: {fileID: 0} + - m_Index: 4 + m_Metrics: + m_Width: 128 + m_Height: 128 + m_HorizontalBearingX: 0 + m_HorizontalBearingY: 115.6 + m_HorizontalAdvance: 128 + m_GlyphRect: + m_X: 0 + m_Y: 256 + m_Width: 128 + m_Height: 128 + m_Scale: 1 + m_AtlasIndex: 0 + sprite: {fileID: 0} + - m_Index: 5 + m_Metrics: + m_Width: 128 + m_Height: 128 + m_HorizontalBearingX: 0 + m_HorizontalBearingY: 115.6 + m_HorizontalAdvance: 128 + m_GlyphRect: + m_X: 128 + m_Y: 256 + m_Width: 128 + m_Height: 128 + m_Scale: 1 + m_AtlasIndex: 0 + sprite: {fileID: 0} + - m_Index: 6 + m_Metrics: + m_Width: 128 + m_Height: 128 + m_HorizontalBearingX: 0 + m_HorizontalBearingY: 115.6 + m_HorizontalAdvance: 128 + m_GlyphRect: + m_X: 256 + m_Y: 256 + m_Width: 128 + m_Height: 128 + m_Scale: 1 + m_AtlasIndex: 0 + sprite: {fileID: 0} + - m_Index: 7 + m_Metrics: + m_Width: 128 + m_Height: 128 + m_HorizontalBearingX: 0 + m_HorizontalBearingY: 115.6 + m_HorizontalAdvance: 128 + m_GlyphRect: + m_X: 384 + m_Y: 256 + m_Width: 128 + m_Height: 128 + m_Scale: 1 + m_AtlasIndex: 0 + sprite: {fileID: 0} + - m_Index: 8 + m_Metrics: + m_Width: 128 + m_Height: 128 + m_HorizontalBearingX: 0 + m_HorizontalBearingY: 115.6 + m_HorizontalAdvance: 128 + m_GlyphRect: + m_X: 0 + m_Y: 128 + m_Width: 128 + m_Height: 128 + m_Scale: 1 + m_AtlasIndex: 0 + sprite: {fileID: 0} + - m_Index: 9 + m_Metrics: + m_Width: 128 + m_Height: 128 + m_HorizontalBearingX: 0 + m_HorizontalBearingY: 115.6 + m_HorizontalAdvance: 128 + m_GlyphRect: + m_X: 128 + m_Y: 128 + m_Width: 128 + m_Height: 128 + m_Scale: 1 + m_AtlasIndex: 0 + sprite: {fileID: 0} + - m_Index: 10 + m_Metrics: + m_Width: 128 + m_Height: 128 + m_HorizontalBearingX: 0 + m_HorizontalBearingY: 115.6 + m_HorizontalAdvance: 128 + m_GlyphRect: + m_X: 256 + m_Y: 128 + m_Width: 128 + m_Height: 128 + m_Scale: 1 + m_AtlasIndex: 0 + sprite: {fileID: 0} + - m_Index: 11 + m_Metrics: + m_Width: 128 + m_Height: 128 + m_HorizontalBearingX: 0 + m_HorizontalBearingY: 115.6 + m_HorizontalAdvance: 128 + m_GlyphRect: + m_X: 384 + m_Y: 128 + m_Width: 128 + m_Height: 128 + m_Scale: 1 + m_AtlasIndex: 0 + sprite: {fileID: 0} + - m_Index: 12 + m_Metrics: + m_Width: 128 + m_Height: 128 + m_HorizontalBearingX: 0 + m_HorizontalBearingY: 115.6 + m_HorizontalAdvance: 128 + m_GlyphRect: + m_X: 0 + m_Y: 0 + m_Width: 128 + m_Height: 128 + m_Scale: 1 + m_AtlasIndex: 0 + sprite: {fileID: 0} + - m_Index: 13 + m_Metrics: + m_Width: 128 + m_Height: 128 + m_HorizontalBearingX: 0 + m_HorizontalBearingY: 115.6 + m_HorizontalAdvance: 128 + m_GlyphRect: + m_X: 128 + m_Y: 0 + m_Width: 128 + m_Height: 128 + m_Scale: 1 + m_AtlasIndex: 0 + sprite: {fileID: 0} + - m_Index: 14 + m_Metrics: + m_Width: 128 + m_Height: 128 + m_HorizontalBearingX: 0 + m_HorizontalBearingY: 115.6 + m_HorizontalAdvance: 128 + m_GlyphRect: + m_X: 256 + m_Y: 0 + m_Width: 128 + m_Height: 128 + m_Scale: 1 + m_AtlasIndex: 0 + sprite: {fileID: 0} + - m_Index: 15 + m_Metrics: + m_Width: 128 + m_Height: 128 + m_HorizontalBearingX: 0 + m_HorizontalBearingY: 115.6 + m_HorizontalAdvance: 128 + m_GlyphRect: + m_X: 384 + m_Y: 0 + m_Width: 128 + m_Height: 128 + m_Scale: 1 + m_AtlasIndex: 0 + sprite: {fileID: 0} + spriteInfoList: + - id: 0 + x: 0 + y: 384 + width: 128 + height: 128 + xOffset: 0 + yOffset: 115.6 + xAdvance: 128 + scale: 1 + name: Smiling face with smiling eyes + hashCode: -1318250903 + unicode: 128522 + pivot: {x: 0.5, y: 0.5} + sprite: {fileID: 0} + - id: 1 + x: 128 + y: 384 + width: 128 + height: 128 + xOffset: 0 + yOffset: 115.6 + xAdvance: 128 + scale: 1 + name: 1f60b + hashCode: 57188339 + unicode: 128523 + pivot: {x: 0.5, y: 0.5} + sprite: {fileID: 0} + - id: 2 + x: 256 + y: 384 + width: 128 + height: 128 + xOffset: 0 + yOffset: 115.6 + xAdvance: 128 + scale: 1 + name: 1f60d + hashCode: 57188341 + unicode: 128525 + pivot: {x: 0.5, y: 0.5} + sprite: {fileID: 0} + - id: 3 + x: 384 + y: 384 + width: 128 + height: 128 + xOffset: 0 + yOffset: 115.6 + xAdvance: 128 + scale: 1 + name: 1f60e + hashCode: 57188340 + unicode: 128526 + pivot: {x: 0.5, y: 0.5} + sprite: {fileID: 0} + - id: 4 + x: 0 + y: 256 + width: 128 + height: 128 + xOffset: 0 + yOffset: 115.6 + xAdvance: 128 + scale: 1 + name: Grinning face + hashCode: -95541379 + unicode: 128512 + pivot: {x: 0.5, y: 0.5} + sprite: {fileID: 0} + - id: 5 + x: 128 + y: 256 + width: 128 + height: 128 + xOffset: 0 + yOffset: 115.6 + xAdvance: 128 + scale: 1 + name: 1f601 + hashCode: 57188256 + unicode: 128513 + pivot: {x: 0.5, y: 0.5} + sprite: {fileID: 0} + - id: 6 + x: 256 + y: 256 + width: 128 + height: 128 + xOffset: 0 + yOffset: 115.6 + xAdvance: 128 + scale: 1 + name: Face with tears of joy + hashCode: 239522663 + unicode: 128514 + pivot: {x: 0.5, y: 0.5} + sprite: {fileID: 0} + - id: 7 + x: 384 + y: 256 + width: 128 + height: 128 + xOffset: 0 + yOffset: 115.6 + xAdvance: 128 + scale: 1 + name: 1f603 + hashCode: 57188258 + unicode: 128515 + pivot: {x: 0.5, y: 0.5} + sprite: {fileID: 0} + - id: 8 + x: 0 + y: 128 + width: 128 + height: 128 + xOffset: 0 + yOffset: 115.6 + xAdvance: 128 + scale: 1 + name: 1f604 + hashCode: 57188261 + unicode: 128516 + pivot: {x: 0.5, y: 0.5} + sprite: {fileID: 0} + - id: 9 + x: 128 + y: 128 + width: 128 + height: 128 + xOffset: 0 + yOffset: 115.6 + xAdvance: 128 + scale: 1 + name: 1f605 + hashCode: 57188260 + unicode: 128517 + pivot: {x: 0.5, y: 0.5} + sprite: {fileID: 0} + - id: 10 + x: 256 + y: 128 + width: 128 + height: 128 + xOffset: 0 + yOffset: 115.6 + xAdvance: 128 + scale: 1 + name: 1f606 + hashCode: 57188263 + unicode: 128518 + pivot: {x: 0.5, y: 0.5} + sprite: {fileID: 0} + - id: 11 + x: 384 + y: 128 + width: 128 + height: 128 + xOffset: 0 + yOffset: 115.6 + xAdvance: 128 + scale: 1 + name: 1f609 + hashCode: 57188264 + unicode: 128521 + pivot: {x: 0.5, y: 0.5} + sprite: {fileID: 0} + - id: 12 + x: 0 + y: 0 + width: 128 + height: 128 + xOffset: 0 + yOffset: 115.6 + xAdvance: 128 + scale: 1 + name: 1f618 + hashCode: 57188168 + unicode: 128536 + pivot: {x: 0.5, y: 0.5} + sprite: {fileID: 0} + - id: 13 + x: 128 + y: 0 + width: 128 + height: 128 + xOffset: 0 + yOffset: 115.6 + xAdvance: 128 + scale: 1 + name: 1f923 + hashCode: 57200239 + unicode: 129315 + pivot: {x: 0.5, y: 0.5} + sprite: {fileID: 0} + - id: 14 + x: 256 + y: 0 + width: 128 + height: 128 + xOffset: 0 + yOffset: 115.6 + xAdvance: 128 + scale: 1 + name: 263a + hashCode: 1748406 + unicode: 9786 + pivot: {x: 0.5, y: 0.5} + sprite: {fileID: 0} + - id: 15 + x: 384 + y: 0 + width: 128 + height: 128 + xOffset: 0 + yOffset: 115.6 + xAdvance: 128 + scale: 1 + name: 2639 + hashCode: 1748462 + unicode: 9785 + pivot: {x: 0.5, y: 0.5} + sprite: {fileID: 0} + fallbackSpriteAssets: [] +--- !u!21 &1369835458 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: TextMeshPro/Sprite + m_Shader: {fileID: 4800000, guid: cf81c85f95fe47e1a27f6ae460cf182c, type: 3} + m_ShaderKeywords: + m_LightmapFlags: 5 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: [] + m_Floats: [] + m_Colors: [] diff --git a/Assets/TextMesh Pro/Resources/Sprite Assets/EmojiOne.asset.meta b/Assets/TextMesh Pro/Resources/Sprite Assets/EmojiOne.asset.meta new file mode 100644 index 0000000..c7ac83f --- /dev/null +++ b/Assets/TextMesh Pro/Resources/Sprite Assets/EmojiOne.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c41005c129ba4d66911b75229fd70b45 +timeCreated: 1480316912 +licenseType: Pro +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Resources/Style Sheets.meta b/Assets/TextMesh Pro/Resources/Style Sheets.meta new file mode 100644 index 0000000..4958550 --- /dev/null +++ b/Assets/TextMesh Pro/Resources/Style Sheets.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 4aecb92fff08436c8303b10eab8da368 +folderAsset: yes +timeCreated: 1441876950 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Resources/Style Sheets/Default Style Sheet.asset b/Assets/TextMesh Pro/Resources/Style Sheets/Default Style Sheet.asset new file mode 100644 index 0000000..ceb609b --- /dev/null +++ b/Assets/TextMesh Pro/Resources/Style Sheets/Default Style Sheet.asset @@ -0,0 +1,68 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ab2114bdc8544297b417dfefe9f1e410, type: 3} + m_Name: Default Style Sheet + m_EditorClassIdentifier: + m_StyleList: + - m_Name: H1 + m_HashCode: 2425 + m_OpeningDefinition: <#40ff80>* + m_ClosingDefinition: '*' + m_OpeningTagArray: 3c00000073000000690000007a000000650000003d00000032000000650000006d0000003e0000003c000000620000003e0000003c000000230000003400000030000000660000006600000038000000300000003e0000002a000000 + m_ClosingTagArray: 2a0000003c0000002f00000073000000690000007a000000650000003e0000003c0000002f000000620000003e0000003c0000002f000000630000006f0000006c0000006f000000720000003e000000 + - m_Name: Quote + m_HashCode: 92254330 + m_OpeningDefinition: + m_ClosingDefinition: + m_OpeningTagArray: 3c000000690000003e0000003c00000073000000690000007a000000650000003d0000003700000035000000250000003e0000003c0000006d000000610000007200000067000000690000006e0000003d0000003100000030000000250000003e000000 + m_ClosingTagArray: 3c0000002f000000690000003e0000003c0000002f00000073000000690000007a000000650000003e0000003c0000002f00000077000000690000006400000074000000680000003e0000003c0000002f0000006d000000610000007200000067000000690000006e0000003e000000 + - m_Name: Link + m_HashCode: 2687968 + m_OpeningDefinition: <#40a0ff> + m_ClosingDefinition: + m_OpeningTagArray: 3c000000750000003e0000003c000000230000003400000030000000610000003000000066000000660000003e0000003c0000006c000000690000006e0000006b0000003d0000002200000049000000440000005f0000003000000031000000220000003e000000 + m_ClosingTagArray: 3c0000002f000000750000003e0000003c0000002f000000630000006f0000006c0000006f000000720000003e0000003c0000002f0000006c000000690000006e0000006b0000003e000000 + - m_Name: Title + m_HashCode: 98732960 + m_OpeningDefinition: + m_ClosingDefinition: + m_OpeningTagArray: 3c00000073000000690000007a000000650000003d000000310000003200000035000000250000003e0000003c000000620000003e0000003c000000610000006c00000069000000670000006e0000003d00000063000000650000006e0000007400000065000000720000003e000000 + m_ClosingTagArray: 3c0000002f00000073000000690000007a000000650000003e0000003c0000002f000000620000003e0000003c0000002f000000610000006c00000069000000670000006e0000003e000000 + - m_Name: H2 + m_HashCode: 2426 + m_OpeningDefinition: <#4080FF> + m_ClosingDefinition: + m_OpeningTagArray: 3c00000073000000690000007a000000650000003d000000310000002e00000035000000650000006d0000003e0000003c000000620000003e0000003c000000230000003400000030000000380000003000000046000000460000003e000000 + m_ClosingTagArray: 3c0000002f00000073000000690000007a000000650000003e0000003c0000002f000000620000003e0000003c0000002f000000630000006f0000006c0000006f000000720000003e000000 + - m_Name: H3 + m_HashCode: 2427 + m_OpeningDefinition: <#FF8040> + m_ClosingDefinition: + m_OpeningTagArray: 3c00000073000000690000007a000000650000003d000000310000002e0000003100000037000000650000006d0000003e0000003c000000620000003e0000003c000000230000004600000046000000380000003000000034000000300000003e000000 + m_ClosingTagArray: 3c0000002f00000073000000690000007a000000650000003e0000003c0000002f000000620000003e0000003c0000002f000000630000006f0000006c0000006f000000720000003e000000 + - m_Name: C1 + m_HashCode: 2194 + m_OpeningDefinition: + m_ClosingDefinition: + m_OpeningTagArray: 3c000000630000006f0000006c0000006f000000720000003d000000230000006600000066000000660000006600000034000000300000003e000000 + m_ClosingTagArray: 3c0000002f000000630000006f0000006c0000006f000000720000003e000000 + - m_Name: C2 + m_HashCode: 2193 + m_OpeningDefinition: + m_ClosingDefinition: + m_OpeningTagArray: 3c000000630000006f0000006c0000006f000000720000003d000000230000006600000066000000340000003000000046000000460000003e0000003c00000073000000690000007a000000650000003d000000310000003200000035000000250000003e000000 + m_ClosingTagArray: 3c0000002f000000630000006f0000006c0000006f000000720000003e0000003c0000002f00000073000000690000007a000000650000003e000000 + - m_Name: C3 + m_HashCode: 2192 + m_OpeningDefinition: + m_ClosingDefinition: + m_OpeningTagArray: 3c000000630000006f0000006c0000006f000000720000003d000000230000003800000030000000410000003000000046000000460000003e0000003c000000620000003e000000 + m_ClosingTagArray: 3c0000002f000000630000006f0000006c0000006f000000720000003e0000003c0000002f000000620000003e000000 diff --git a/Assets/TextMesh Pro/Resources/Style Sheets/Default Style Sheet.asset.meta b/Assets/TextMesh Pro/Resources/Style Sheets/Default Style Sheet.asset.meta new file mode 100644 index 0000000..95fd96e --- /dev/null +++ b/Assets/TextMesh Pro/Resources/Style Sheets/Default Style Sheet.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f952c082cb03451daed3ee968ac6c63e +timeCreated: 1432805430 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Resources/TMP Settings.asset b/Assets/TextMesh Pro/Resources/TMP Settings.asset new file mode 100644 index 0000000..c09a92f --- /dev/null +++ b/Assets/TextMesh Pro/Resources/TMP Settings.asset @@ -0,0 +1,46 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2705215ac5b84b70bacc50632be6e391, type: 3} + m_Name: TMP Settings + m_EditorClassIdentifier: + m_enableWordWrapping: 1 + m_enableKerning: 1 + m_enableExtraPadding: 0 + m_enableTintAllSprites: 0 + m_enableParseEscapeCharacters: 1 + m_EnableRaycastTarget: 1 + m_GetFontFeaturesAtRuntime: 1 + m_missingGlyphCharacter: 0 + m_warningsDisabled: 0 + m_defaultFontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_defaultFontAssetPath: Fonts & Materials/ + m_defaultFontSize: 36 + m_defaultAutoSizeMinRatio: 0.5 + m_defaultAutoSizeMaxRatio: 2 + m_defaultTextMeshProTextContainerSize: {x: 20, y: 5} + m_defaultTextMeshProUITextContainerSize: {x: 200, y: 50} + m_autoSizeTextContainer: 0 + m_fallbackFontAssets: [] + m_matchMaterialPreset: 1 + m_defaultSpriteAsset: {fileID: 11400000, guid: c41005c129ba4d66911b75229fd70b45, + type: 2} + m_defaultSpriteAssetPath: Sprite Assets/ + m_enableEmojiSupport: 1 + m_MissingCharacterSpriteUnicode: 0 + m_defaultColorGradientPresetsPath: Color Gradient Presets/ + m_defaultStyleSheet: {fileID: 11400000, guid: f952c082cb03451daed3ee968ac6c63e, + type: 2} + m_StyleSheetsResourcePath: + m_leadingCharacters: {fileID: 4900000, guid: d82c1b31c7e74239bff1220585707d2b, type: 3} + m_followingCharacters: {fileID: 4900000, guid: fade42e8bc714b018fac513c043d323b, + type: 3} + m_UseModernHangulLineBreakingRules: 0 diff --git a/Assets/TextMesh Pro/Resources/TMP Settings.asset.meta b/Assets/TextMesh Pro/Resources/TMP Settings.asset.meta new file mode 100644 index 0000000..32db384 --- /dev/null +++ b/Assets/TextMesh Pro/Resources/TMP Settings.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3f5b5dff67a942289a9defa416b206f3 +timeCreated: 1436653997 +licenseType: Pro +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Shaders.meta b/Assets/TextMesh Pro/Shaders.meta new file mode 100644 index 0000000..29a90a6 --- /dev/null +++ b/Assets/TextMesh Pro/Shaders.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e9f693669af91aa45ad615fc681ed29f +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Shaders/TMP_Bitmap-Custom-Atlas.shader b/Assets/TextMesh Pro/Shaders/TMP_Bitmap-Custom-Atlas.shader new file mode 100644 index 0000000..bab2b2c --- /dev/null +++ b/Assets/TextMesh Pro/Shaders/TMP_Bitmap-Custom-Atlas.shader @@ -0,0 +1,143 @@ +Shader "TextMeshPro/Bitmap Custom Atlas" { + +Properties { + _MainTex ("Font Atlas", 2D) = "white" {} + _FaceTex ("Font Texture", 2D) = "white" {} + [HDR]_FaceColor ("Text Color", Color) = (1,1,1,1) + + _VertexOffsetX ("Vertex OffsetX", float) = 0 + _VertexOffsetY ("Vertex OffsetY", float) = 0 + _MaskSoftnessX ("Mask SoftnessX", float) = 0 + _MaskSoftnessY ("Mask SoftnessY", float) = 0 + + _ClipRect("Clip Rect", vector) = (-32767, -32767, 32767, 32767) + _Padding ("Padding", float) = 0 + + _StencilComp("Stencil Comparison", Float) = 8 + _Stencil("Stencil ID", Float) = 0 + _StencilOp("Stencil Operation", Float) = 0 + _StencilWriteMask("Stencil Write Mask", Float) = 255 + _StencilReadMask("Stencil Read Mask", Float) = 255 + + _CullMode("Cull Mode", Float) = 0 + _ColorMask("Color Mask", Float) = 15 +} + +SubShader{ + + Tags { "Queue" = "Transparent" "IgnoreProjector" = "True" "RenderType" = "Transparent" } + + Stencil + { + Ref[_Stencil] + Comp[_StencilComp] + Pass[_StencilOp] + ReadMask[_StencilReadMask] + WriteMask[_StencilWriteMask] + } + + + Lighting Off + Cull [_CullMode] + ZTest [unity_GUIZTestMode] + ZWrite Off + Fog { Mode Off } + Blend SrcAlpha OneMinusSrcAlpha + ColorMask[_ColorMask] + + Pass { + CGPROGRAM + #pragma vertex vert + #pragma fragment frag + + #pragma multi_compile __ UNITY_UI_CLIP_RECT + #pragma multi_compile __ UNITY_UI_ALPHACLIP + + + #include "UnityCG.cginc" + + struct appdata_t { + float4 vertex : POSITION; + fixed4 color : COLOR; + float2 texcoord0 : TEXCOORD0; + float2 texcoord1 : TEXCOORD1; + }; + + struct v2f { + float4 vertex : SV_POSITION; + fixed4 color : COLOR; + float2 texcoord0 : TEXCOORD0; + float2 texcoord1 : TEXCOORD1; + float4 mask : TEXCOORD2; + }; + + uniform sampler2D _MainTex; + uniform sampler2D _FaceTex; + uniform float4 _FaceTex_ST; + uniform fixed4 _FaceColor; + + uniform float _VertexOffsetX; + uniform float _VertexOffsetY; + uniform float4 _ClipRect; + uniform float _MaskSoftnessX; + uniform float _MaskSoftnessY; + + float2 UnpackUV(float uv) + { + float2 output; + output.x = floor(uv / 4096); + output.y = uv - 4096 * output.x; + + return output * 0.001953125; + } + + v2f vert (appdata_t v) + { + float4 vert = v.vertex; + vert.x += _VertexOffsetX; + vert.y += _VertexOffsetY; + + vert.xy += (vert.w * 0.5) / _ScreenParams.xy; + + float4 vPosition = UnityPixelSnap(UnityObjectToClipPos(vert)); + + fixed4 faceColor = v.color; + faceColor *= _FaceColor; + + v2f OUT; + OUT.vertex = vPosition; + OUT.color = faceColor; + OUT.texcoord0 = v.texcoord0; + OUT.texcoord1 = TRANSFORM_TEX(UnpackUV(v.texcoord1), _FaceTex); + float2 pixelSize = vPosition.w; + pixelSize /= abs(float2(_ScreenParams.x * UNITY_MATRIX_P[0][0], _ScreenParams.y * UNITY_MATRIX_P[1][1])); + + // Clamp _ClipRect to 16bit. + float4 clampedRect = clamp(_ClipRect, -2e10, 2e10); + OUT.mask = float4(vert.xy * 2 - clampedRect.xy - clampedRect.zw, 0.25 / (0.25 * half2(_MaskSoftnessX, _MaskSoftnessY) + pixelSize.xy)); + + return OUT; + } + + fixed4 frag (v2f IN) : SV_Target + { + fixed4 color = tex2D(_MainTex, IN.texcoord0) * tex2D(_FaceTex, IN.texcoord1) * IN.color; + + // Alternative implementation to UnityGet2DClipping with support for softness. + #if UNITY_UI_CLIP_RECT + half2 m = saturate((_ClipRect.zw - _ClipRect.xy - abs(IN.mask.xy)) * IN.mask.zw); + color *= m.x * m.y; + #endif + + #if UNITY_UI_ALPHACLIP + clip(color.a - 0.001); + #endif + + return color; + } + ENDCG + } +} + + CustomEditor "TMPro.EditorUtilities.TMP_BitmapShaderGUI" +} diff --git a/Assets/TextMesh Pro/Shaders/TMP_Bitmap-Custom-Atlas.shader.meta b/Assets/TextMesh Pro/Shaders/TMP_Bitmap-Custom-Atlas.shader.meta new file mode 100644 index 0000000..0a416c8 --- /dev/null +++ b/Assets/TextMesh Pro/Shaders/TMP_Bitmap-Custom-Atlas.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 48bb5f55d8670e349b6e614913f9d910 +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Shaders/TMP_Bitmap-Mobile.shader b/Assets/TextMesh Pro/Shaders/TMP_Bitmap-Mobile.shader new file mode 100644 index 0000000..006a271 --- /dev/null +++ b/Assets/TextMesh Pro/Shaders/TMP_Bitmap-Mobile.shader @@ -0,0 +1,145 @@ +Shader "TextMeshPro/Mobile/Bitmap" { + +Properties { + _MainTex ("Font Atlas", 2D) = "white" {} + [HDR]_Color ("Text Color", Color) = (1,1,1,1) + _DiffusePower ("Diffuse Power", Range(1.0,4.0)) = 1.0 + + _VertexOffsetX("Vertex OffsetX", float) = 0 + _VertexOffsetY("Vertex OffsetY", float) = 0 + _MaskSoftnessX("Mask SoftnessX", float) = 0 + _MaskSoftnessY("Mask SoftnessY", float) = 0 + + _ClipRect("Clip Rect", vector) = (-32767, -32767, 32767, 32767) + + _StencilComp("Stencil Comparison", Float) = 8 + _Stencil("Stencil ID", Float) = 0 + _StencilOp("Stencil Operation", Float) = 0 + _StencilWriteMask("Stencil Write Mask", Float) = 255 + _StencilReadMask("Stencil Read Mask", Float) = 255 + + _CullMode("Cull Mode", Float) = 0 + _ColorMask("Color Mask", Float) = 15 +} + +SubShader { + + Tags { "Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent" } + + Stencil + { + Ref[_Stencil] + Comp[_StencilComp] + Pass[_StencilOp] + ReadMask[_StencilReadMask] + WriteMask[_StencilWriteMask] + } + + + Lighting Off + Cull [_CullMode] + ZTest [unity_GUIZTestMode] + ZWrite Off + Fog { Mode Off } + Blend SrcAlpha OneMinusSrcAlpha + ColorMask[_ColorMask] + + Pass { + CGPROGRAM + #pragma vertex vert + #pragma fragment frag + #pragma fragmentoption ARB_precision_hint_fastest + + #pragma multi_compile __ UNITY_UI_CLIP_RECT + #pragma multi_compile __ UNITY_UI_ALPHACLIP + + + #include "UnityCG.cginc" + + struct appdata_t { + float4 vertex : POSITION; + fixed4 color : COLOR; + float2 texcoord0 : TEXCOORD0; + float2 texcoord1 : TEXCOORD1; + }; + + struct v2f { + float4 vertex : POSITION; + fixed4 color : COLOR; + float2 texcoord0 : TEXCOORD0; + float4 mask : TEXCOORD2; + }; + + sampler2D _MainTex; + fixed4 _Color; + float _DiffusePower; + + uniform float _VertexOffsetX; + uniform float _VertexOffsetY; + uniform float4 _ClipRect; + uniform float _MaskSoftnessX; + uniform float _MaskSoftnessY; + + v2f vert (appdata_t v) + { + v2f OUT; + float4 vert = v.vertex; + vert.x += _VertexOffsetX; + vert.y += _VertexOffsetY; + + vert.xy += (vert.w * 0.5) / _ScreenParams.xy; + + OUT.vertex = UnityPixelSnap(UnityObjectToClipPos(vert)); + OUT.color = v.color; + OUT.color *= _Color; + OUT.color.rgb *= _DiffusePower; + OUT.texcoord0 = v.texcoord0; + + float2 pixelSize = OUT.vertex.w; + //pixelSize /= abs(float2(_ScreenParams.x * UNITY_MATRIX_P[0][0], _ScreenParams.y * UNITY_MATRIX_P[1][1])); + + // Clamp _ClipRect to 16bit. + float4 clampedRect = clamp(_ClipRect, -2e10, 2e10); + OUT.mask = float4(vert.xy * 2 - clampedRect.xy - clampedRect.zw, 0.25 / (0.25 * half2(_MaskSoftnessX, _MaskSoftnessY) + pixelSize.xy)); + + return OUT; + } + + fixed4 frag (v2f IN) : COLOR + { + fixed4 color = fixed4(IN.color.rgb, IN.color.a * tex2D(_MainTex, IN.texcoord0).a); + + // Alternative implementation to UnityGet2DClipping with support for softness. + #if UNITY_UI_CLIP_RECT + half2 m = saturate((_ClipRect.zw - _ClipRect.xy - abs(IN.mask.xy)) * IN.mask.zw); + color *= m.x * m.y; + #endif + + #if UNITY_UI_ALPHACLIP + clip(color.a - 0.001); + #endif + + return color; + } + ENDCG + } +} + +SubShader { + Tags { "Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent" } + Lighting Off Cull Off ZTest Always ZWrite Off Fog { Mode Off } + Blend SrcAlpha OneMinusSrcAlpha + BindChannels { + Bind "Color", color + Bind "Vertex", vertex + Bind "TexCoord", texcoord0 + } + Pass { + SetTexture [_MainTex] { + constantColor [_Color] combine constant * primary, constant * texture + } + } +} + +CustomEditor "TMPro.EditorUtilities.TMP_BitmapShaderGUI" +} diff --git a/Assets/TextMesh Pro/Shaders/TMP_Bitmap-Mobile.shader.meta b/Assets/TextMesh Pro/Shaders/TMP_Bitmap-Mobile.shader.meta new file mode 100644 index 0000000..d5fb125 --- /dev/null +++ b/Assets/TextMesh Pro/Shaders/TMP_Bitmap-Mobile.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 1e3b057af24249748ff873be7fafee47 +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Shaders/TMP_Bitmap.shader b/Assets/TextMesh Pro/Shaders/TMP_Bitmap.shader new file mode 100644 index 0000000..8ce4937 --- /dev/null +++ b/Assets/TextMesh Pro/Shaders/TMP_Bitmap.shader @@ -0,0 +1,143 @@ +Shader "TextMeshPro/Bitmap" { + +Properties { + _MainTex ("Font Atlas", 2D) = "white" {} + _FaceTex ("Font Texture", 2D) = "white" {} + [HDR]_FaceColor ("Text Color", Color) = (1,1,1,1) + + _VertexOffsetX ("Vertex OffsetX", float) = 0 + _VertexOffsetY ("Vertex OffsetY", float) = 0 + _MaskSoftnessX ("Mask SoftnessX", float) = 0 + _MaskSoftnessY ("Mask SoftnessY", float) = 0 + + _ClipRect("Clip Rect", vector) = (-32767, -32767, 32767, 32767) + + _StencilComp("Stencil Comparison", Float) = 8 + _Stencil("Stencil ID", Float) = 0 + _StencilOp("Stencil Operation", Float) = 0 + _StencilWriteMask("Stencil Write Mask", Float) = 255 + _StencilReadMask("Stencil Read Mask", Float) = 255 + + _CullMode("Cull Mode", Float) = 0 + _ColorMask("Color Mask", Float) = 15 +} + +SubShader{ + + Tags { "Queue" = "Transparent" "IgnoreProjector" = "True" "RenderType" = "Transparent" } + + Stencil + { + Ref[_Stencil] + Comp[_StencilComp] + Pass[_StencilOp] + ReadMask[_StencilReadMask] + WriteMask[_StencilWriteMask] + } + + + Lighting Off + Cull [_CullMode] + ZTest [unity_GUIZTestMode] + ZWrite Off + Fog { Mode Off } + Blend SrcAlpha OneMinusSrcAlpha + ColorMask[_ColorMask] + + Pass { + CGPROGRAM + #pragma vertex vert + #pragma fragment frag + + #pragma multi_compile __ UNITY_UI_CLIP_RECT + #pragma multi_compile __ UNITY_UI_ALPHACLIP + + + #include "UnityCG.cginc" + + struct appdata_t { + float4 vertex : POSITION; + fixed4 color : COLOR; + float2 texcoord0 : TEXCOORD0; + float2 texcoord1 : TEXCOORD1; + }; + + struct v2f { + float4 vertex : SV_POSITION; + fixed4 color : COLOR; + float2 texcoord0 : TEXCOORD0; + float2 texcoord1 : TEXCOORD1; + float4 mask : TEXCOORD2; + }; + + uniform sampler2D _MainTex; + uniform sampler2D _FaceTex; + uniform float4 _FaceTex_ST; + uniform fixed4 _FaceColor; + + uniform float _VertexOffsetX; + uniform float _VertexOffsetY; + uniform float4 _ClipRect; + uniform float _MaskSoftnessX; + uniform float _MaskSoftnessY; + + float2 UnpackUV(float uv) + { + float2 output; + output.x = floor(uv / 4096); + output.y = uv - 4096 * output.x; + + return output * 0.001953125; + } + + v2f vert (appdata_t v) + { + float4 vert = v.vertex; + vert.x += _VertexOffsetX; + vert.y += _VertexOffsetY; + + vert.xy += (vert.w * 0.5) / _ScreenParams.xy; + + float4 vPosition = UnityPixelSnap(UnityObjectToClipPos(vert)); + + fixed4 faceColor = v.color; + faceColor *= _FaceColor; + + v2f OUT; + OUT.vertex = vPosition; + OUT.color = faceColor; + OUT.texcoord0 = v.texcoord0; + OUT.texcoord1 = TRANSFORM_TEX(UnpackUV(v.texcoord1), _FaceTex); + float2 pixelSize = vPosition.w; + pixelSize /= abs(float2(_ScreenParams.x * UNITY_MATRIX_P[0][0], _ScreenParams.y * UNITY_MATRIX_P[1][1])); + + // Clamp _ClipRect to 16bit. + float4 clampedRect = clamp(_ClipRect, -2e10, 2e10); + OUT.mask = float4(vert.xy * 2 - clampedRect.xy - clampedRect.zw, 0.25 / (0.25 * half2(_MaskSoftnessX, _MaskSoftnessY) + pixelSize.xy)); + + return OUT; + } + + fixed4 frag (v2f IN) : SV_Target + { + fixed4 color = tex2D(_MainTex, IN.texcoord0); + color = fixed4 (tex2D(_FaceTex, IN.texcoord1).rgb * IN.color.rgb, IN.color.a * color.a); + + // Alternative implementation to UnityGet2DClipping with support for softness. + #if UNITY_UI_CLIP_RECT + half2 m = saturate((_ClipRect.zw - _ClipRect.xy - abs(IN.mask.xy)) * IN.mask.zw); + color *= m.x * m.y; + #endif + + #if UNITY_UI_ALPHACLIP + clip(color.a - 0.001); + #endif + + return color; + } + ENDCG + } +} + + CustomEditor "TMPro.EditorUtilities.TMP_BitmapShaderGUI" +} diff --git a/Assets/TextMesh Pro/Shaders/TMP_Bitmap.shader.meta b/Assets/TextMesh Pro/Shaders/TMP_Bitmap.shader.meta new file mode 100644 index 0000000..7eb1870 --- /dev/null +++ b/Assets/TextMesh Pro/Shaders/TMP_Bitmap.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 128e987d567d4e2c824d754223b3f3b0 +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Shaders/TMP_SDF Overlay.shader b/Assets/TextMesh Pro/Shaders/TMP_SDF Overlay.shader new file mode 100644 index 0000000..c50c593 --- /dev/null +++ b/Assets/TextMesh Pro/Shaders/TMP_SDF Overlay.shader @@ -0,0 +1,317 @@ +Shader "TextMeshPro/Distance Field Overlay" { + +Properties { + _FaceTex ("Face Texture", 2D) = "white" {} + _FaceUVSpeedX ("Face UV Speed X", Range(-5, 5)) = 0.0 + _FaceUVSpeedY ("Face UV Speed Y", Range(-5, 5)) = 0.0 + [HDR]_FaceColor ("Face Color", Color) = (1,1,1,1) + _FaceDilate ("Face Dilate", Range(-1,1)) = 0 + + [HDR]_OutlineColor ("Outline Color", Color) = (0,0,0,1) + _OutlineTex ("Outline Texture", 2D) = "white" {} + _OutlineUVSpeedX ("Outline UV Speed X", Range(-5, 5)) = 0.0 + _OutlineUVSpeedY ("Outline UV Speed Y", Range(-5, 5)) = 0.0 + _OutlineWidth ("Outline Thickness", Range(0, 1)) = 0 + _OutlineSoftness ("Outline Softness", Range(0,1)) = 0 + + _Bevel ("Bevel", Range(0,1)) = 0.5 + _BevelOffset ("Bevel Offset", Range(-0.5,0.5)) = 0 + _BevelWidth ("Bevel Width", Range(-.5,0.5)) = 0 + _BevelClamp ("Bevel Clamp", Range(0,1)) = 0 + _BevelRoundness ("Bevel Roundness", Range(0,1)) = 0 + + _LightAngle ("Light Angle", Range(0.0, 6.2831853)) = 3.1416 + [HDR]_SpecularColor ("Specular", Color) = (1,1,1,1) + _SpecularPower ("Specular", Range(0,4)) = 2.0 + _Reflectivity ("Reflectivity", Range(5.0,15.0)) = 10 + _Diffuse ("Diffuse", Range(0,1)) = 0.5 + _Ambient ("Ambient", Range(1,0)) = 0.5 + + _BumpMap ("Normal map", 2D) = "bump" {} + _BumpOutline ("Bump Outline", Range(0,1)) = 0 + _BumpFace ("Bump Face", Range(0,1)) = 0 + + _ReflectFaceColor ("Reflection Color", Color) = (0,0,0,1) + _ReflectOutlineColor("Reflection Color", Color) = (0,0,0,1) + _Cube ("Reflection Cubemap", Cube) = "black" { /* TexGen CubeReflect */ } + _EnvMatrixRotation ("Texture Rotation", vector) = (0, 0, 0, 0) + + + [HDR]_UnderlayColor ("Border Color", Color) = (0,0,0, 0.5) + _UnderlayOffsetX ("Border OffsetX", Range(-1,1)) = 0 + _UnderlayOffsetY ("Border OffsetY", Range(-1,1)) = 0 + _UnderlayDilate ("Border Dilate", Range(-1,1)) = 0 + _UnderlaySoftness ("Border Softness", Range(0,1)) = 0 + + [HDR]_GlowColor ("Color", Color) = (0, 1, 0, 0.5) + _GlowOffset ("Offset", Range(-1,1)) = 0 + _GlowInner ("Inner", Range(0,1)) = 0.05 + _GlowOuter ("Outer", Range(0,1)) = 0.05 + _GlowPower ("Falloff", Range(1, 0)) = 0.75 + + _WeightNormal ("Weight Normal", float) = 0 + _WeightBold ("Weight Bold", float) = 0.5 + + _ShaderFlags ("Flags", float) = 0 + _ScaleRatioA ("Scale RatioA", float) = 1 + _ScaleRatioB ("Scale RatioB", float) = 1 + _ScaleRatioC ("Scale RatioC", float) = 1 + + _MainTex ("Font Atlas", 2D) = "white" {} + _TextureWidth ("Texture Width", float) = 512 + _TextureHeight ("Texture Height", float) = 512 + _GradientScale ("Gradient Scale", float) = 5.0 + _ScaleX ("Scale X", float) = 1.0 + _ScaleY ("Scale Y", float) = 1.0 + _PerspectiveFilter ("Perspective Correction", Range(0, 1)) = 0.875 + _Sharpness ("Sharpness", Range(-1,1)) = 0 + + _VertexOffsetX ("Vertex OffsetX", float) = 0 + _VertexOffsetY ("Vertex OffsetY", float) = 0 + + _MaskCoord ("Mask Coordinates", vector) = (0, 0, 32767, 32767) + _ClipRect ("Clip Rect", vector) = (-32767, -32767, 32767, 32767) + _MaskSoftnessX ("Mask SoftnessX", float) = 0 + _MaskSoftnessY ("Mask SoftnessY", float) = 0 + + _StencilComp ("Stencil Comparison", Float) = 8 + _Stencil ("Stencil ID", Float) = 0 + _StencilOp ("Stencil Operation", Float) = 0 + _StencilWriteMask ("Stencil Write Mask", Float) = 255 + _StencilReadMask ("Stencil Read Mask", Float) = 255 + + _CullMode ("Cull Mode", Float) = 0 + _ColorMask ("Color Mask", Float) = 15 +} + +SubShader { + + Tags + { + "Queue"="Overlay" + "IgnoreProjector"="True" + "RenderType"="Transparent" + } + + Stencil + { + Ref [_Stencil] + Comp [_StencilComp] + Pass [_StencilOp] + ReadMask [_StencilReadMask] + WriteMask [_StencilWriteMask] + } + + Cull [_CullMode] + ZWrite Off + Lighting Off + Fog { Mode Off } + ZTest Always + Blend One OneMinusSrcAlpha + ColorMask [_ColorMask] + + Pass { + CGPROGRAM + #pragma target 3.0 + #pragma vertex VertShader + #pragma fragment PixShader + #pragma shader_feature __ BEVEL_ON + #pragma shader_feature __ UNDERLAY_ON UNDERLAY_INNER + #pragma shader_feature __ GLOW_ON + + #pragma multi_compile __ UNITY_UI_CLIP_RECT + #pragma multi_compile __ UNITY_UI_ALPHACLIP + + #include "UnityCG.cginc" + #include "UnityUI.cginc" + #include "TMPro_Properties.cginc" + #include "TMPro.cginc" + + struct vertex_t { + UNITY_VERTEX_INPUT_INSTANCE_ID + float4 position : POSITION; + float3 normal : NORMAL; + fixed4 color : COLOR; + float2 texcoord0 : TEXCOORD0; + float2 texcoord1 : TEXCOORD1; + }; + + + struct pixel_t { + UNITY_VERTEX_INPUT_INSTANCE_ID + UNITY_VERTEX_OUTPUT_STEREO + float4 position : SV_POSITION; + fixed4 color : COLOR; + float2 atlas : TEXCOORD0; // Atlas + float4 param : TEXCOORD1; // alphaClip, scale, bias, weight + float4 mask : TEXCOORD2; // Position in object space(xy), pixel Size(zw) + float3 viewDir : TEXCOORD3; + + #if (UNDERLAY_ON || UNDERLAY_INNER) + float4 texcoord2 : TEXCOORD4; // u,v, scale, bias + fixed4 underlayColor : COLOR1; + #endif + float4 textures : TEXCOORD5; + }; + + // Used by Unity internally to handle Texture Tiling and Offset. + float4 _FaceTex_ST; + float4 _OutlineTex_ST; + + pixel_t VertShader(vertex_t input) + { + pixel_t output; + + UNITY_INITIALIZE_OUTPUT(pixel_t, output); + UNITY_SETUP_INSTANCE_ID(input); + UNITY_TRANSFER_INSTANCE_ID(input,output); + UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(output); + + float bold = step(input.texcoord1.y, 0); + + float4 vert = input.position; + vert.x += _VertexOffsetX; + vert.y += _VertexOffsetY; + + float4 vPosition = UnityObjectToClipPos(vert); + + float2 pixelSize = vPosition.w; + pixelSize /= float2(_ScaleX, _ScaleY) * abs(mul((float2x2)UNITY_MATRIX_P, _ScreenParams.xy)); + float scale = rsqrt(dot(pixelSize, pixelSize)); + scale *= abs(input.texcoord1.y) * _GradientScale * (_Sharpness + 1); + if (UNITY_MATRIX_P[3][3] == 0) scale = lerp(abs(scale) * (1 - _PerspectiveFilter), scale, abs(dot(UnityObjectToWorldNormal(input.normal.xyz), normalize(WorldSpaceViewDir(vert))))); + + float weight = lerp(_WeightNormal, _WeightBold, bold) / 4.0; + weight = (weight + _FaceDilate) * _ScaleRatioA * 0.5; + + float bias =(.5 - weight) + (.5 / scale); + + float alphaClip = (1.0 - _OutlineWidth*_ScaleRatioA - _OutlineSoftness*_ScaleRatioA); + + #if GLOW_ON + alphaClip = min(alphaClip, 1.0 - _GlowOffset * _ScaleRatioB - _GlowOuter * _ScaleRatioB); + #endif + + alphaClip = alphaClip / 2.0 - ( .5 / scale) - weight; + + #if (UNDERLAY_ON || UNDERLAY_INNER) + float4 underlayColor = _UnderlayColor; + underlayColor.rgb *= underlayColor.a; + + float bScale = scale; + bScale /= 1 + ((_UnderlaySoftness*_ScaleRatioC) * bScale); + float bBias = (0.5 - weight) * bScale - 0.5 - ((_UnderlayDilate * _ScaleRatioC) * 0.5 * bScale); + + float x = -(_UnderlayOffsetX * _ScaleRatioC) * _GradientScale / _TextureWidth; + float y = -(_UnderlayOffsetY * _ScaleRatioC) * _GradientScale / _TextureHeight; + float2 bOffset = float2(x, y); + #endif + + // Generate UV for the Masking Texture + float4 clampedRect = clamp(_ClipRect, -2e10, 2e10); + float2 maskUV = (vert.xy - clampedRect.xy) / (clampedRect.zw - clampedRect.xy); + + // Support for texture tiling and offset + float2 textureUV = UnpackUV(input.texcoord1.x); + float2 faceUV = TRANSFORM_TEX(textureUV, _FaceTex); + float2 outlineUV = TRANSFORM_TEX(textureUV, _OutlineTex); + + + output.position = vPosition; + output.color = input.color; + output.atlas = input.texcoord0; + output.param = float4(alphaClip, scale, bias, weight); + output.mask = half4(vert.xy * 2 - clampedRect.xy - clampedRect.zw, 0.25 / (0.25 * half2(_MaskSoftnessX, _MaskSoftnessY) + pixelSize.xy)); + output.viewDir = mul((float3x3)_EnvMatrix, _WorldSpaceCameraPos.xyz - mul(unity_ObjectToWorld, vert).xyz); + #if (UNDERLAY_ON || UNDERLAY_INNER) + output.texcoord2 = float4(input.texcoord0 + bOffset, bScale, bBias); + output.underlayColor = underlayColor; + #endif + output.textures = float4(faceUV, outlineUV); + + return output; + } + + + fixed4 PixShader(pixel_t input) : SV_Target + { + UNITY_SETUP_INSTANCE_ID(input); + + float c = tex2D(_MainTex, input.atlas).a; + + #ifndef UNDERLAY_ON + clip(c - input.param.x); + #endif + + float scale = input.param.y; + float bias = input.param.z; + float weight = input.param.w; + float sd = (bias - c) * scale; + + float outline = (_OutlineWidth * _ScaleRatioA) * scale; + float softness = (_OutlineSoftness * _ScaleRatioA) * scale; + + half4 faceColor = _FaceColor; + half4 outlineColor = _OutlineColor; + + faceColor.rgb *= input.color.rgb; + + faceColor *= tex2D(_FaceTex, input.textures.xy + float2(_FaceUVSpeedX, _FaceUVSpeedY) * _Time.y); + outlineColor *= tex2D(_OutlineTex, input.textures.zw + float2(_OutlineUVSpeedX, _OutlineUVSpeedY) * _Time.y); + + faceColor = GetColor(sd, faceColor, outlineColor, outline, softness); + + #if BEVEL_ON + float3 dxy = float3(0.5 / _TextureWidth, 0.5 / _TextureHeight, 0); + float3 n = GetSurfaceNormal(input.atlas, weight, dxy); + + float3 bump = UnpackNormal(tex2D(_BumpMap, input.textures.xy + float2(_FaceUVSpeedX, _FaceUVSpeedY) * _Time.y)).xyz; + bump *= lerp(_BumpFace, _BumpOutline, saturate(sd + outline * 0.5)); + n = normalize(n- bump); + + float3 light = normalize(float3(sin(_LightAngle), cos(_LightAngle), -1.0)); + + float3 col = GetSpecular(n, light); + faceColor.rgb += col*faceColor.a; + faceColor.rgb *= 1-(dot(n, light)*_Diffuse); + faceColor.rgb *= lerp(_Ambient, 1, n.z*n.z); + + fixed4 reflcol = texCUBE(_Cube, reflect(input.viewDir, -n)); + faceColor.rgb += reflcol.rgb * lerp(_ReflectFaceColor.rgb, _ReflectOutlineColor.rgb, saturate(sd + outline * 0.5)) * faceColor.a; + #endif + + #if UNDERLAY_ON + float d = tex2D(_MainTex, input.texcoord2.xy).a * input.texcoord2.z; + faceColor += input.underlayColor * saturate(d - input.texcoord2.w) * (1 - faceColor.a); + #endif + + #if UNDERLAY_INNER + float d = tex2D(_MainTex, input.texcoord2.xy).a * input.texcoord2.z; + faceColor += input.underlayColor * (1 - saturate(d - input.texcoord2.w)) * saturate(1 - sd) * (1 - faceColor.a); + #endif + + #if GLOW_ON + float4 glowColor = GetGlowColor(sd, scale); + faceColor.rgb += glowColor.rgb * glowColor.a; + #endif + + // Alternative implementation to UnityGet2DClipping with support for softness. + #if UNITY_UI_CLIP_RECT + half2 m = saturate((_ClipRect.zw - _ClipRect.xy - abs(input.mask.xy)) * input.mask.zw); + faceColor *= m.x * m.y; + #endif + + #if UNITY_UI_ALPHACLIP + clip(faceColor.a - 0.001); + #endif + + return faceColor * input.color.a; + } + + ENDCG + } +} + +Fallback "TextMeshPro/Mobile/Distance Field" +CustomEditor "TMPro.EditorUtilities.TMP_SDFShaderGUI" +} diff --git a/Assets/TextMesh Pro/Shaders/TMP_SDF Overlay.shader.meta b/Assets/TextMesh Pro/Shaders/TMP_SDF Overlay.shader.meta new file mode 100644 index 0000000..56284e9 --- /dev/null +++ b/Assets/TextMesh Pro/Shaders/TMP_SDF Overlay.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: dd89cf5b9246416f84610a006f916af7 +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Shaders/TMP_SDF SSD.shader b/Assets/TextMesh Pro/Shaders/TMP_SDF SSD.shader new file mode 100644 index 0000000..ed48574 --- /dev/null +++ b/Assets/TextMesh Pro/Shaders/TMP_SDF SSD.shader @@ -0,0 +1,310 @@ +Shader "TextMeshPro/Distance Field SSD" { + +Properties { + _FaceTex ("Face Texture", 2D) = "white" {} + _FaceUVSpeedX ("Face UV Speed X", Range(-5, 5)) = 0.0 + _FaceUVSpeedY ("Face UV Speed Y", Range(-5, 5)) = 0.0 + [HDR]_FaceColor ("Face Color", Color) = (1,1,1,1) + _FaceDilate ("Face Dilate", Range(-1,1)) = 0 + + [HDR]_OutlineColor ("Outline Color", Color) = (0,0,0,1) + _OutlineTex ("Outline Texture", 2D) = "white" {} + _OutlineUVSpeedX ("Outline UV Speed X", Range(-5, 5)) = 0.0 + _OutlineUVSpeedY ("Outline UV Speed Y", Range(-5, 5)) = 0.0 + _OutlineWidth ("Outline Thickness", Range(0, 1)) = 0 + _OutlineSoftness ("Outline Softness", Range(0,1)) = 0 + + _Bevel ("Bevel", Range(0,1)) = 0.5 + _BevelOffset ("Bevel Offset", Range(-0.5,0.5)) = 0 + _BevelWidth ("Bevel Width", Range(-.5,0.5)) = 0 + _BevelClamp ("Bevel Clamp", Range(0,1)) = 0 + _BevelRoundness ("Bevel Roundness", Range(0,1)) = 0 + + _LightAngle ("Light Angle", Range(0.0, 6.2831853)) = 3.1416 + [HDR]_SpecularColor ("Specular", Color) = (1,1,1,1) + _SpecularPower ("Specular", Range(0,4)) = 2.0 + _Reflectivity ("Reflectivity", Range(5.0,15.0)) = 10 + _Diffuse ("Diffuse", Range(0,1)) = 0.5 + _Ambient ("Ambient", Range(1,0)) = 0.5 + + _BumpMap ("Normal map", 2D) = "bump" {} + _BumpOutline ("Bump Outline", Range(0,1)) = 0 + _BumpFace ("Bump Face", Range(0,1)) = 0 + + _ReflectFaceColor ("Reflection Color", Color) = (0,0,0,1) + _ReflectOutlineColor("Reflection Color", Color) = (0,0,0,1) + _Cube ("Reflection Cubemap", Cube) = "black" { /* TexGen CubeReflect */ } + _EnvMatrixRotation ("Texture Rotation", vector) = (0, 0, 0, 0) + + + [HDR]_UnderlayColor ("Border Color", Color) = (0,0,0, 0.5) + _UnderlayOffsetX ("Border OffsetX", Range(-1,1)) = 0 + _UnderlayOffsetY ("Border OffsetY", Range(-1,1)) = 0 + _UnderlayDilate ("Border Dilate", Range(-1,1)) = 0 + _UnderlaySoftness ("Border Softness", Range(0,1)) = 0 + + [HDR]_GlowColor ("Color", Color) = (0, 1, 0, 0.5) + _GlowOffset ("Offset", Range(-1,1)) = 0 + _GlowInner ("Inner", Range(0,1)) = 0.05 + _GlowOuter ("Outer", Range(0,1)) = 0.05 + _GlowPower ("Falloff", Range(1, 0)) = 0.75 + + _WeightNormal ("Weight Normal", float) = 0 + _WeightBold ("Weight Bold", float) = 0.5 + + _ShaderFlags ("Flags", float) = 0 + _ScaleRatioA ("Scale RatioA", float) = 1 + _ScaleRatioB ("Scale RatioB", float) = 1 + _ScaleRatioC ("Scale RatioC", float) = 1 + + _MainTex ("Font Atlas", 2D) = "white" {} + _TextureWidth ("Texture Width", float) = 512 + _TextureHeight ("Texture Height", float) = 512 + _GradientScale ("Gradient Scale", float) = 5.0 + _ScaleX ("Scale X", float) = 1.0 + _ScaleY ("Scale Y", float) = 1.0 + _PerspectiveFilter ("Perspective Correction", Range(0, 1)) = 0.875 + _Sharpness ("Sharpness", Range(-1,1)) = 0 + + _VertexOffsetX ("Vertex OffsetX", float) = 0 + _VertexOffsetY ("Vertex OffsetY", float) = 0 + + _MaskCoord ("Mask Coordinates", vector) = (0, 0, 32767, 32767) + _ClipRect ("Clip Rect", vector) = (-32767, -32767, 32767, 32767) + _MaskSoftnessX ("Mask SoftnessX", float) = 0 + _MaskSoftnessY ("Mask SoftnessY", float) = 0 + + _StencilComp ("Stencil Comparison", Float) = 8 + _Stencil ("Stencil ID", Float) = 0 + _StencilOp ("Stencil Operation", Float) = 0 + _StencilWriteMask ("Stencil Write Mask", Float) = 255 + _StencilReadMask ("Stencil Read Mask", Float) = 255 + + _CullMode ("Cull Mode", Float) = 0 + _ColorMask ("Color Mask", Float) = 15 +} + +SubShader { + Tags + { + "Queue" = "Transparent" + "IgnoreProjector" = "True" + "RenderType" = "Transparent" + } + + Stencil + { + Ref[_Stencil] + Comp[_StencilComp] + Pass[_StencilOp] + ReadMask[_StencilReadMask] + WriteMask[_StencilWriteMask] + } + + Cull[_CullMode] + ZWrite Off + Lighting Off + Fog { Mode Off } + ZTest[unity_GUIZTestMode] + Blend One OneMinusSrcAlpha + ColorMask[_ColorMask] + + Pass { + CGPROGRAM + #pragma target 3.0 + #pragma vertex VertShader + #pragma fragment PixShader + #pragma shader_feature __ BEVEL_ON + #pragma shader_feature __ UNDERLAY_ON UNDERLAY_INNER + #pragma shader_feature __ GLOW_ON + #pragma shader_feature __ FORCE_LINEAR + + #pragma multi_compile __ UNITY_UI_CLIP_RECT + #pragma multi_compile __ UNITY_UI_ALPHACLIP + + #include "UnityCG.cginc" + #include "UnityUI.cginc" + #include "TMPro_Properties.cginc" + #include "TMPro.cginc" + + struct vertex_t { + UNITY_VERTEX_INPUT_INSTANCE_ID + float4 position : POSITION; + float3 normal : NORMAL; + float4 color : COLOR; + float2 texcoord0 : TEXCOORD0; + float2 texcoord1 : TEXCOORD1; + }; + + + struct pixel_t { + UNITY_VERTEX_INPUT_INSTANCE_ID + UNITY_VERTEX_OUTPUT_STEREO + float4 position : SV_POSITION; + float4 color : COLOR; + float2 atlas : TEXCOORD0; + float weight : TEXCOORD1; + float2 mask : TEXCOORD2; // Position in object space(xy) + float3 viewDir : TEXCOORD3; + + #if (UNDERLAY_ON || UNDERLAY_INNER) + float2 texcoord2 : TEXCOORD4; + float4 underlayColor : COLOR1; + #endif + float4 textures : TEXCOORD5; + }; + + // Used by Unity internally to handle Texture Tiling and Offset. + float4 _FaceTex_ST; + float4 _OutlineTex_ST; + + float4 SRGBToLinear(float4 rgba) { + return float4(lerp(rgba.rgb / 12.92f, pow((rgba.rgb + 0.055f) / 1.055f, 2.4f), step(0.04045f, rgba.rgb)), rgba.a); + } + + pixel_t VertShader(vertex_t input) + { + pixel_t output; + + UNITY_INITIALIZE_OUTPUT(pixel_t, output); + UNITY_SETUP_INSTANCE_ID(input); + UNITY_TRANSFER_INSTANCE_ID(input,output); + UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(output); + + float bold = step(input.texcoord1.y, 0); + + float4 vert = input.position; + vert.x += _VertexOffsetX; + vert.y += _VertexOffsetY; + + float4 vPosition = UnityObjectToClipPos(vert); + + float weight = lerp(_WeightNormal, _WeightBold, bold) / 4.0; + weight = (weight + _FaceDilate) * _ScaleRatioA * 0.5; + + #if (UNDERLAY_ON || UNDERLAY_INNER) + float4 underlayColor = _UnderlayColor; + underlayColor.rgb *= underlayColor.a; + + float x = -(_UnderlayOffsetX * _ScaleRatioC) * _GradientScale / _TextureWidth; + float y = -(_UnderlayOffsetY * _ScaleRatioC) * _GradientScale / _TextureHeight; + float2 bOffset = float2(x, y); + #endif + + // Generate UV for the Masking Texture + float4 clampedRect = clamp(_ClipRect, -2e10, 2e10); + + // Support for texture tiling and offset + float2 textureUV = UnpackUV(input.texcoord1.x); + float2 faceUV = TRANSFORM_TEX(textureUV, _FaceTex); + float2 outlineUV = TRANSFORM_TEX(textureUV, _OutlineTex); + + float4 color = input.color; + #if (FORCE_LINEAR && !UNITY_COLORSPACE_GAMMA) + color = SRGBToLinear(input.color); + #endif + + output.position = vPosition; + output.color = color; + output.atlas = input.texcoord0; + output.weight = weight; + output.mask = half2(vert.xy * 2 - clampedRect.xy - clampedRect.zw); + output.viewDir = mul((float3x3)_EnvMatrix, _WorldSpaceCameraPos.xyz - mul(unity_ObjectToWorld, vert).xyz); + #if (UNDERLAY_ON || UNDERLAY_INNER) + output.texcoord2 = input.texcoord0 + bOffset; + output.underlayColor = underlayColor; + #endif + output.textures = float4(faceUV, outlineUV); + + return output; + } + + + fixed4 PixShader(pixel_t input) : SV_Target + { + UNITY_SETUP_INSTANCE_ID(input); + + float c = tex2D(_MainTex, input.atlas).a; + + float2 pixelSize = float2(ddx(input.atlas.y), ddy(input.atlas.y)); + pixelSize *= _TextureWidth * .75; + float scale = rsqrt(dot(pixelSize, pixelSize)) * _GradientScale * (_Sharpness + 1); + + float weight = input.weight; + float bias = (.5 - weight) + (.5 / scale); + float sd = (bias - c) * scale; + + float outline = (_OutlineWidth * _ScaleRatioA) * scale; + float softness = (_OutlineSoftness * _ScaleRatioA) * scale; + + half4 faceColor = _FaceColor; + half4 outlineColor = _OutlineColor; + + faceColor.rgb *= input.color.rgb; + + faceColor *= tex2D(_FaceTex, input.textures.xy + float2(_FaceUVSpeedX, _FaceUVSpeedY) * _Time.y); + outlineColor *= tex2D(_OutlineTex, input.textures.zw + float2(_OutlineUVSpeedX, _OutlineUVSpeedY) * _Time.y); + + faceColor = GetColor(sd, faceColor, outlineColor, outline, softness); + + #if BEVEL_ON + float3 dxy = float3(0.5 / _TextureWidth, 0.5 / _TextureHeight, 0); + float3 n = GetSurfaceNormal(input.atlas, weight, dxy); + + float3 bump = UnpackNormal(tex2D(_BumpMap, input.textures.xy + float2(_FaceUVSpeedX, _FaceUVSpeedY) * _Time.y)).xyz; + bump *= lerp(_BumpFace, _BumpOutline, saturate(sd + outline * 0.5)); + n = normalize(n - bump); + + float3 light = normalize(float3(sin(_LightAngle), cos(_LightAngle), -1.0)); + + float3 col = GetSpecular(n, light); + faceColor.rgb += col * faceColor.a; + faceColor.rgb *= 1 - (dot(n, light) * _Diffuse); + faceColor.rgb *= lerp(_Ambient, 1, n.z * n.z); + + fixed4 reflcol = texCUBE(_Cube, reflect(input.viewDir, -n)); + faceColor.rgb += reflcol.rgb * lerp(_ReflectFaceColor.rgb, _ReflectOutlineColor.rgb, saturate(sd + outline * 0.5)) * faceColor.a; + #endif + + #if (UNDERLAY_ON || UNDERLAY_INNER) + float bScale = scale; + bScale /= 1 + ((_UnderlaySoftness * _ScaleRatioC) * bScale); + float bBias = (0.5 - weight) * bScale - 0.5 - ((_UnderlayDilate * _ScaleRatioC) * 0.5 * bScale); + #endif + + #if UNDERLAY_ON + float d = tex2D(_MainTex, input.texcoord2.xy).a * bScale; + faceColor += input.underlayColor * saturate(d - bBias) * (1 - faceColor.a); + #endif + + #if UNDERLAY_INNER + float d = tex2D(_MainTex, input.texcoord2.xy).a * bScale; + faceColor += input.underlayColor * (1 - saturate(d - bBias)) * saturate(1 - sd) * (1 - faceColor.a); + #endif + + #if GLOW_ON + float4 glowColor = GetGlowColor(sd, scale); + faceColor.rgb += glowColor.rgb * glowColor.a; + #endif + + // Alternative implementation to UnityGet2DClipping with support for softness. + #if UNITY_UI_CLIP_RECT + float2 maskZW = 0.25 / (0.25 * half2(_MaskSoftnessX, _MaskSoftnessY) + (1 / scale)); + half2 m = saturate((_ClipRect.zw - _ClipRect.xy - abs(input.mask.xy)) * maskZW); + faceColor *= m.x * m.y; + #endif + + #if UNITY_UI_ALPHACLIP + clip(faceColor.a - 0.001); + #endif + + return faceColor * input.color.a; + } + + ENDCG + } +} + +Fallback "TextMeshPro/Mobile/Distance Field" +CustomEditor "TMPro.EditorUtilities.TMP_SDFShaderGUI" +} diff --git a/Assets/TextMesh Pro/Shaders/TMP_SDF SSD.shader.meta b/Assets/TextMesh Pro/Shaders/TMP_SDF SSD.shader.meta new file mode 100644 index 0000000..08cd8ae --- /dev/null +++ b/Assets/TextMesh Pro/Shaders/TMP_SDF SSD.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 14eb328de4b8eb245bb7cea29e4ac00b +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Shaders/TMP_SDF-Mobile Masking.shader b/Assets/TextMesh Pro/Shaders/TMP_SDF-Mobile Masking.shader new file mode 100644 index 0000000..7019aaf --- /dev/null +++ b/Assets/TextMesh Pro/Shaders/TMP_SDF-Mobile Masking.shader @@ -0,0 +1,247 @@ +// Simplified SDF shader: +// - No Shading Option (bevel / bump / env map) +// - No Glow Option +// - Softness is applied on both side of the outline + +Shader "TextMeshPro/Mobile/Distance Field - Masking" { + +Properties { + [HDR]_FaceColor ("Face Color", Color) = (1,1,1,1) + _FaceDilate ("Face Dilate", Range(-1,1)) = 0 + + [HDR]_OutlineColor ("Outline Color", Color) = (0,0,0,1) + _OutlineWidth ("Outline Thickness", Range(0,1)) = 0 + _OutlineSoftness ("Outline Softness", Range(0,1)) = 0 + + [HDR]_UnderlayColor ("Border Color", Color) = (0,0,0,.5) + _UnderlayOffsetX ("Border OffsetX", Range(-1,1)) = 0 + _UnderlayOffsetY ("Border OffsetY", Range(-1,1)) = 0 + _UnderlayDilate ("Border Dilate", Range(-1,1)) = 0 + _UnderlaySoftness ("Border Softness", Range(0,1)) = 0 + + _WeightNormal ("Weight Normal", float) = 0 + _WeightBold ("Weight Bold", float) = .5 + + _ShaderFlags ("Flags", float) = 0 + _ScaleRatioA ("Scale RatioA", float) = 1 + _ScaleRatioB ("Scale RatioB", float) = 1 + _ScaleRatioC ("Scale RatioC", float) = 1 + + _MainTex ("Font Atlas", 2D) = "white" {} + _TextureWidth ("Texture Width", float) = 512 + _TextureHeight ("Texture Height", float) = 512 + _GradientScale ("Gradient Scale", float) = 5 + _ScaleX ("Scale X", float) = 1 + _ScaleY ("Scale Y", float) = 1 + _PerspectiveFilter ("Perspective Correction", Range(0, 1)) = 0.875 + _Sharpness ("Sharpness", Range(-1,1)) = 0 + + _VertexOffsetX ("Vertex OffsetX", float) = 0 + _VertexOffsetY ("Vertex OffsetY", float) = 0 + + _ClipRect ("Clip Rect", vector) = (-32767, -32767, 32767, 32767) + _MaskSoftnessX ("Mask SoftnessX", float) = 0 + _MaskSoftnessY ("Mask SoftnessY", float) = 0 + _MaskTex ("Mask Texture", 2D) = "white" {} + _MaskInverse ("Inverse", float) = 0 + _MaskEdgeColor ("Edge Color", Color) = (1,1,1,1) + _MaskEdgeSoftness ("Edge Softness", Range(0, 1)) = 0.01 + _MaskWipeControl ("Wipe Position", Range(0, 1)) = 0.5 + + _StencilComp ("Stencil Comparison", Float) = 8 + _Stencil ("Stencil ID", Float) = 0 + _StencilOp ("Stencil Operation", Float) = 0 + _StencilWriteMask ("Stencil Write Mask", Float) = 255 + _StencilReadMask ("Stencil Read Mask", Float) = 255 + + _CullMode ("Cull Mode", Float) = 0 + _ColorMask ("Color Mask", Float) = 15 +} + +SubShader { + Tags + { + "Queue"="Transparent" + "IgnoreProjector"="True" + "RenderType"="Transparent" + } + + + Stencil + { + Ref [_Stencil] + Comp [_StencilComp] + Pass [_StencilOp] + ReadMask [_StencilReadMask] + WriteMask [_StencilWriteMask] + } + + Cull [_CullMode] + ZWrite Off + Lighting Off + Fog { Mode Off } + ZTest [unity_GUIZTestMode] + Blend One OneMinusSrcAlpha + ColorMask [_ColorMask] + + Pass { + CGPROGRAM + #pragma vertex VertShader + #pragma fragment PixShader + #pragma shader_feature __ OUTLINE_ON + #pragma shader_feature __ UNDERLAY_ON UNDERLAY_INNER + + #pragma multi_compile __ UNITY_UI_CLIP_RECT + #pragma multi_compile __ UNITY_UI_ALPHACLIP + + + #include "UnityCG.cginc" + #include "UnityUI.cginc" + #include "TMPro_Properties.cginc" + + struct vertex_t { + float4 vertex : POSITION; + float3 normal : NORMAL; + fixed4 color : COLOR; + float2 texcoord0 : TEXCOORD0; + float2 texcoord1 : TEXCOORD1; + }; + + struct pixel_t { + float4 vertex : SV_POSITION; + fixed4 faceColor : COLOR; + fixed4 outlineColor : COLOR1; + float4 texcoord0 : TEXCOORD0; // Texture UV, Mask UV + half4 param : TEXCOORD1; // Scale(x), BiasIn(y), BiasOut(z), Bias(w) + half4 mask : TEXCOORD2; // Position in clip space(xy), Softness(zw) + #if (UNDERLAY_ON | UNDERLAY_INNER) + float4 texcoord1 : TEXCOORD3; // Texture UV, alpha, reserved + half2 underlayParam : TEXCOORD4; // Scale(x), Bias(y) + #endif + }; + + float _MaskWipeControl; + float _MaskEdgeSoftness; + fixed4 _MaskEdgeColor; + bool _MaskInverse; + + pixel_t VertShader(vertex_t input) + { + float bold = step(input.texcoord1.y, 0); + + float4 vert = input.vertex; + vert.x += _VertexOffsetX; + vert.y += _VertexOffsetY; + float4 vPosition = UnityObjectToClipPos(vert); + + float2 pixelSize = vPosition.w; + pixelSize /= float2(_ScaleX, _ScaleY) * abs(mul((float2x2)UNITY_MATRIX_P, _ScreenParams.xy)); + + float scale = rsqrt(dot(pixelSize, pixelSize)); + scale *= abs(input.texcoord1.y) * _GradientScale * (_Sharpness + 1); + if(UNITY_MATRIX_P[3][3] == 0) scale = lerp(abs(scale) * (1 - _PerspectiveFilter), scale, abs(dot(UnityObjectToWorldNormal(input.normal.xyz), normalize(WorldSpaceViewDir(vert))))); + + float weight = lerp(_WeightNormal, _WeightBold, bold) / 4.0; + weight = (weight + _FaceDilate) * _ScaleRatioA * 0.5; + + float layerScale = scale; + + scale /= 1 + (_OutlineSoftness * _ScaleRatioA * scale); + float bias = (0.5 - weight) * scale - 0.5; + float outline = _OutlineWidth * _ScaleRatioA * 0.5 * scale; + + float opacity = input.color.a; + #if (UNDERLAY_ON | UNDERLAY_INNER) + opacity = 1.0; + #endif + + fixed4 faceColor = fixed4(input.color.rgb, opacity) * _FaceColor; + faceColor.rgb *= faceColor.a; + + fixed4 outlineColor = _OutlineColor; + outlineColor.a *= opacity; + outlineColor.rgb *= outlineColor.a; + outlineColor = lerp(faceColor, outlineColor, sqrt(min(1.0, (outline * 2)))); + + #if (UNDERLAY_ON | UNDERLAY_INNER) + + layerScale /= 1 + ((_UnderlaySoftness * _ScaleRatioC) * layerScale); + float layerBias = (.5 - weight) * layerScale - .5 - ((_UnderlayDilate * _ScaleRatioC) * .5 * layerScale); + + float x = -(_UnderlayOffsetX * _ScaleRatioC) * _GradientScale / _TextureWidth; + float y = -(_UnderlayOffsetY * _ScaleRatioC) * _GradientScale / _TextureHeight; + float2 layerOffset = float2(x, y); + #endif + + // Generate UV for the Masking Texture + float4 clampedRect = clamp(_ClipRect, -2e10, 2e10); + float2 maskUV = (vert.xy - clampedRect.xy) / (clampedRect.zw - clampedRect.xy); + + // Structure for pixel shader + pixel_t output = { + vPosition, + faceColor, + outlineColor, + float4(input.texcoord0.x, input.texcoord0.y, maskUV.x, maskUV.y), + half4(scale, bias - outline, bias + outline, bias), + half4(vert.xy * 2 - clampedRect.xy - clampedRect.zw, 0.25 / (0.25 * half2(_MaskSoftnessX, _MaskSoftnessY) + pixelSize.xy)), + #if (UNDERLAY_ON | UNDERLAY_INNER) + float4(input.texcoord0 + layerOffset, input.color.a, 0), + half2(layerScale, layerBias), + #endif + }; + + return output; + } + + + // PIXEL SHADER + fixed4 PixShader(pixel_t input) : SV_Target + { + half d = tex2D(_MainTex, input.texcoord0.xy).a * input.param.x; + half4 c = input.faceColor * saturate(d - input.param.w); + + #ifdef OUTLINE_ON + c = lerp(input.outlineColor, input.faceColor, saturate(d - input.param.z)); + c *= saturate(d - input.param.y); + #endif + + #if UNDERLAY_ON + d = tex2D(_MainTex, input.texcoord1.xy).a * input.underlayParam.x; + c += float4(_UnderlayColor.rgb * _UnderlayColor.a, _UnderlayColor.a) * saturate(d - input.underlayParam.y) * (1 - c.a); + #endif + + #if UNDERLAY_INNER + half sd = saturate(d - input.param.z); + d = tex2D(_MainTex, input.texcoord1.xy).a * input.underlayParam.x; + c += float4(_UnderlayColor.rgb * _UnderlayColor.a, _UnderlayColor.a) * (1 - saturate(d - input.underlayParam.y)) * sd * (1 - c.a); + #endif + + // Alternative implementation to UnityGet2DClipping with support for softness. + //#if UNITY_UI_CLIP_RECT + half2 m = saturate((_ClipRect.zw - _ClipRect.xy - abs(input.mask.xy)) * input.mask.zw); + c *= m.x * m.y; + //#endif + + float a = abs(_MaskInverse - tex2D(_MaskTex, input.texcoord0.zw).a); + float t = a + (1 - _MaskWipeControl) * _MaskEdgeSoftness - _MaskWipeControl; + a = saturate(t / _MaskEdgeSoftness); + c.rgb = lerp(_MaskEdgeColor.rgb*c.a, c.rgb, a); + c *= a; + + #if (UNDERLAY_ON | UNDERLAY_INNER) + c *= input.texcoord1.z; + #endif + + #if UNITY_UI_ALPHACLIP + clip(c.a - 0.001); + #endif + + return c; + } + ENDCG + } +} + +CustomEditor "TMPro.EditorUtilities.TMP_SDFShaderGUI" +} diff --git a/Assets/TextMesh Pro/Shaders/TMP_SDF-Mobile Masking.shader.meta b/Assets/TextMesh Pro/Shaders/TMP_SDF-Mobile Masking.shader.meta new file mode 100644 index 0000000..3cbdbbb --- /dev/null +++ b/Assets/TextMesh Pro/Shaders/TMP_SDF-Mobile Masking.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: bc1ede39bf3643ee8e493720e4259791 +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Shaders/TMP_SDF-Mobile Overlay.shader b/Assets/TextMesh Pro/Shaders/TMP_SDF-Mobile Overlay.shader new file mode 100644 index 0000000..ce82bed --- /dev/null +++ b/Assets/TextMesh Pro/Shaders/TMP_SDF-Mobile Overlay.shader @@ -0,0 +1,240 @@ +// Simplified SDF shader: +// - No Shading Option (bevel / bump / env map) +// - No Glow Option +// - Softness is applied on both side of the outline + +Shader "TextMeshPro/Mobile/Distance Field Overlay" { + +Properties { + [HDR]_FaceColor ("Face Color", Color) = (1,1,1,1) + _FaceDilate ("Face Dilate", Range(-1,1)) = 0 + + [HDR]_OutlineColor ("Outline Color", Color) = (0,0,0,1) + _OutlineWidth ("Outline Thickness", Range(0,1)) = 0 + _OutlineSoftness ("Outline Softness", Range(0,1)) = 0 + + [HDR]_UnderlayColor ("Border Color", Color) = (0,0,0,.5) + _UnderlayOffsetX ("Border OffsetX", Range(-1,1)) = 0 + _UnderlayOffsetY ("Border OffsetY", Range(-1,1)) = 0 + _UnderlayDilate ("Border Dilate", Range(-1,1)) = 0 + _UnderlaySoftness ("Border Softness", Range(0,1)) = 0 + + _WeightNormal ("Weight Normal", float) = 0 + _WeightBold ("Weight Bold", float) = .5 + + _ShaderFlags ("Flags", float) = 0 + _ScaleRatioA ("Scale RatioA", float) = 1 + _ScaleRatioB ("Scale RatioB", float) = 1 + _ScaleRatioC ("Scale RatioC", float) = 1 + + _MainTex ("Font Atlas", 2D) = "white" {} + _TextureWidth ("Texture Width", float) = 512 + _TextureHeight ("Texture Height", float) = 512 + _GradientScale ("Gradient Scale", float) = 5 + _ScaleX ("Scale X", float) = 1 + _ScaleY ("Scale Y", float) = 1 + _PerspectiveFilter ("Perspective Correction", Range(0, 1)) = 0.875 + _Sharpness ("Sharpness", Range(-1,1)) = 0 + + _VertexOffsetX ("Vertex OffsetX", float) = 0 + _VertexOffsetY ("Vertex OffsetY", float) = 0 + + _ClipRect ("Clip Rect", vector) = (-32767, -32767, 32767, 32767) + _MaskSoftnessX ("Mask SoftnessX", float) = 0 + _MaskSoftnessY ("Mask SoftnessY", float) = 0 + + _StencilComp ("Stencil Comparison", Float) = 8 + _Stencil ("Stencil ID", Float) = 0 + _StencilOp ("Stencil Operation", Float) = 0 + _StencilWriteMask ("Stencil Write Mask", Float) = 255 + _StencilReadMask ("Stencil Read Mask", Float) = 255 + + _CullMode ("Cull Mode", Float) = 0 + _ColorMask ("Color Mask", Float) = 15 +} + +SubShader { + Tags + { + "Queue"="Overlay" + "IgnoreProjector"="True" + "RenderType"="Transparent" + } + + + Stencil + { + Ref [_Stencil] + Comp [_StencilComp] + Pass [_StencilOp] + ReadMask [_StencilReadMask] + WriteMask [_StencilWriteMask] + } + + Cull [_CullMode] + ZWrite Off + Lighting Off + Fog { Mode Off } + ZTest Always + Blend One OneMinusSrcAlpha + ColorMask [_ColorMask] + + Pass { + CGPROGRAM + #pragma vertex VertShader + #pragma fragment PixShader + #pragma shader_feature __ OUTLINE_ON + #pragma shader_feature __ UNDERLAY_ON UNDERLAY_INNER + + #pragma multi_compile __ UNITY_UI_CLIP_RECT + #pragma multi_compile __ UNITY_UI_ALPHACLIP + + #include "UnityCG.cginc" + #include "UnityUI.cginc" + #include "TMPro_Properties.cginc" + + struct vertex_t { + UNITY_VERTEX_INPUT_INSTANCE_ID + float4 vertex : POSITION; + float3 normal : NORMAL; + fixed4 color : COLOR; + float2 texcoord0 : TEXCOORD0; + float2 texcoord1 : TEXCOORD1; + }; + + struct pixel_t { + UNITY_VERTEX_INPUT_INSTANCE_ID + UNITY_VERTEX_OUTPUT_STEREO + float4 vertex : SV_POSITION; + fixed4 faceColor : COLOR; + fixed4 outlineColor : COLOR1; + float4 texcoord0 : TEXCOORD0; // Texture UV, Mask UV + half4 param : TEXCOORD1; // Scale(x), BiasIn(y), BiasOut(z), Bias(w) + half4 mask : TEXCOORD2; // Position in clip space(xy), Softness(zw) + #if (UNDERLAY_ON | UNDERLAY_INNER) + float4 texcoord1 : TEXCOORD3; // Texture UV, alpha, reserved + half2 underlayParam : TEXCOORD4; // Scale(x), Bias(y) + #endif + }; + + + pixel_t VertShader(vertex_t input) + { + pixel_t output; + + UNITY_INITIALIZE_OUTPUT(pixel_t, output); + UNITY_SETUP_INSTANCE_ID(input); + UNITY_TRANSFER_INSTANCE_ID(input, output); + UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(output); + + float bold = step(input.texcoord1.y, 0); + + float4 vert = input.vertex; + vert.x += _VertexOffsetX; + vert.y += _VertexOffsetY; + float4 vPosition = UnityObjectToClipPos(vert); + + float2 pixelSize = vPosition.w; + pixelSize /= float2(_ScaleX, _ScaleY) * abs(mul((float2x2)UNITY_MATRIX_P, _ScreenParams.xy)); + + float scale = rsqrt(dot(pixelSize, pixelSize)); + scale *= abs(input.texcoord1.y) * _GradientScale * (_Sharpness + 1); + if(UNITY_MATRIX_P[3][3] == 0) scale = lerp(abs(scale) * (1 - _PerspectiveFilter), scale, abs(dot(UnityObjectToWorldNormal(input.normal.xyz), normalize(WorldSpaceViewDir(vert))))); + + float weight = lerp(_WeightNormal, _WeightBold, bold) / 4.0; + weight = (weight + _FaceDilate) * _ScaleRatioA * 0.5; + + float layerScale = scale; + + scale /= 1 + (_OutlineSoftness * _ScaleRatioA * scale); + float bias = (0.5 - weight) * scale - 0.5; + float outline = _OutlineWidth * _ScaleRatioA * 0.5 * scale; + + float opacity = input.color.a; + #if (UNDERLAY_ON | UNDERLAY_INNER) + opacity = 1.0; + #endif + + fixed4 faceColor = fixed4(input.color.rgb, opacity) * _FaceColor; + faceColor.rgb *= faceColor.a; + + fixed4 outlineColor = _OutlineColor; + outlineColor.a *= opacity; + outlineColor.rgb *= outlineColor.a; + outlineColor = lerp(faceColor, outlineColor, sqrt(min(1.0, (outline * 2)))); + + #if (UNDERLAY_ON | UNDERLAY_INNER) + layerScale /= 1 + ((_UnderlaySoftness * _ScaleRatioC) * layerScale); + float layerBias = (.5 - weight) * layerScale - .5 - ((_UnderlayDilate * _ScaleRatioC) * .5 * layerScale); + + float x = -(_UnderlayOffsetX * _ScaleRatioC) * _GradientScale / _TextureWidth; + float y = -(_UnderlayOffsetY * _ScaleRatioC) * _GradientScale / _TextureHeight; + float2 layerOffset = float2(x, y); + #endif + + // Generate UV for the Masking Texture + float4 clampedRect = clamp(_ClipRect, -2e10, 2e10); + float2 maskUV = (vert.xy - clampedRect.xy) / (clampedRect.zw - clampedRect.xy); + + // Populate structure for pixel shader + output.vertex = vPosition; + output.faceColor = faceColor; + output.outlineColor = outlineColor; + output.texcoord0 = float4(input.texcoord0.x, input.texcoord0.y, maskUV.x, maskUV.y); + output.param = half4(scale, bias - outline, bias + outline, bias); + output.mask = half4(vert.xy * 2 - clampedRect.xy - clampedRect.zw, 0.25 / (0.25 * half2(_MaskSoftnessX, _MaskSoftnessY) + pixelSize.xy)); + #if (UNDERLAY_ON || UNDERLAY_INNER) + output.texcoord1 = float4(input.texcoord0 + layerOffset, input.color.a, 0); + output.underlayParam = half2(layerScale, layerBias); + #endif + + return output; + } + + + // PIXEL SHADER + fixed4 PixShader(pixel_t input) : SV_Target + { + UNITY_SETUP_INSTANCE_ID(input); + + half d = tex2D(_MainTex, input.texcoord0.xy).a * input.param.x; + half4 c = input.faceColor * saturate(d - input.param.w); + + #ifdef OUTLINE_ON + c = lerp(input.outlineColor, input.faceColor, saturate(d - input.param.z)); + c *= saturate(d - input.param.y); + #endif + + #if UNDERLAY_ON + d = tex2D(_MainTex, input.texcoord1.xy).a * input.underlayParam.x; + c += float4(_UnderlayColor.rgb * _UnderlayColor.a, _UnderlayColor.a) * saturate(d - input.underlayParam.y) * (1 - c.a); + #endif + + #if UNDERLAY_INNER + half sd = saturate(d - input.param.z); + d = tex2D(_MainTex, input.texcoord1.xy).a * input.underlayParam.x; + c += float4(_UnderlayColor.rgb * _UnderlayColor.a, _UnderlayColor.a) * (1 - saturate(d - input.underlayParam.y)) * sd * (1 - c.a); + #endif + + // Alternative implementation to UnityGet2DClipping with support for softness. + #if UNITY_UI_CLIP_RECT + half2 m = saturate((_ClipRect.zw - _ClipRect.xy - abs(input.mask.xy)) * input.mask.zw); + c *= m.x * m.y; + #endif + + #if (UNDERLAY_ON | UNDERLAY_INNER) + c *= input.texcoord1.z; + #endif + + #if UNITY_UI_ALPHACLIP + clip(c.a - 0.001); + #endif + + return c; + } + ENDCG + } +} + +CustomEditor "TMPro.EditorUtilities.TMP_SDFShaderGUI" +} diff --git a/Assets/TextMesh Pro/Shaders/TMP_SDF-Mobile Overlay.shader.meta b/Assets/TextMesh Pro/Shaders/TMP_SDF-Mobile Overlay.shader.meta new file mode 100644 index 0000000..e6b149e --- /dev/null +++ b/Assets/TextMesh Pro/Shaders/TMP_SDF-Mobile Overlay.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: a02a7d8c237544f1962732b55a9aebf1 +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Shaders/TMP_SDF-Mobile SSD.shader b/Assets/TextMesh Pro/Shaders/TMP_SDF-Mobile SSD.shader new file mode 100644 index 0000000..df4d5b0 --- /dev/null +++ b/Assets/TextMesh Pro/Shaders/TMP_SDF-Mobile SSD.shader @@ -0,0 +1,106 @@ +// Simplified SDF shader: +// - No Shading Option (bevel / bump / env map) +// - No Glow Option +// - Softness is applied on both side of the outline + +Shader "TextMeshPro/Mobile/Distance Field SSD" { + +Properties { + [HDR]_FaceColor ("Face Color", Color) = (1,1,1,1) + _FaceDilate ("Face Dilate", Range(-1,1)) = 0 + + [HDR]_OutlineColor ("Outline Color", Color) = (0,0,0,1) + _OutlineWidth ("Outline Thickness", Range(0,1)) = 0 + _OutlineSoftness ("Outline Softness", Range(0,1)) = 0 + + [HDR]_UnderlayColor ("Border Color", Color) = (0,0,0,.5) + _UnderlayOffsetX ("Border OffsetX", Range(-1,1)) = 0 + _UnderlayOffsetY ("Border OffsetY", Range(-1,1)) = 0 + _UnderlayDilate ("Border Dilate", Range(-1,1)) = 0 + _UnderlaySoftness ("Border Softness", Range(0,1)) = 0 + + _WeightNormal ("Weight Normal", float) = 0 + _WeightBold ("Weight Bold", float) = .5 + + _ShaderFlags ("Flags", float) = 0 + _ScaleRatioA ("Scale RatioA", float) = 1 + _ScaleRatioB ("Scale RatioB", float) = 1 + _ScaleRatioC ("Scale RatioC", float) = 1 + + _MainTex ("Font Atlas", 2D) = "white" {} + _TextureWidth ("Texture Width", float) = 512 + _TextureHeight ("Texture Height", float) = 512 + _GradientScale ("Gradient Scale", float) = 5 + _ScaleX ("Scale X", float) = 1 + _ScaleY ("Scale Y", float) = 1 + _PerspectiveFilter ("Perspective Correction", Range(0, 1)) = 0.875 + _Sharpness ("Sharpness", Range(-1,1)) = 0 + + _VertexOffsetX ("Vertex OffsetX", float) = 0 + _VertexOffsetY ("Vertex OffsetY", float) = 0 + + _ClipRect ("Clip Rect", vector) = (-32767, -32767, 32767, 32767) + _MaskSoftnessX ("Mask SoftnessX", float) = 0 + _MaskSoftnessY ("Mask SoftnessY", float) = 0 + _MaskTex ("Mask Texture", 2D) = "white" {} + _MaskInverse ("Inverse", float) = 0 + _MaskEdgeColor ("Edge Color", Color) = (1,1,1,1) + _MaskEdgeSoftness ("Edge Softness", Range(0, 1)) = 0.01 + _MaskWipeControl ("Wipe Position", Range(0, 1)) = 0.5 + + _StencilComp ("Stencil Comparison", Float) = 8 + _Stencil ("Stencil ID", Float) = 0 + _StencilOp ("Stencil Operation", Float) = 0 + _StencilWriteMask ("Stencil Write Mask", Float) = 255 + _StencilReadMask ("Stencil Read Mask", Float) = 255 + + _CullMode ("Cull Mode", Float) = 0 + _ColorMask ("Color Mask", Float) = 15 +} + +SubShader { + Tags { + "Queue"="Transparent" + "IgnoreProjector"="True" + "RenderType"="Transparent" + } + + Stencil + { + Ref [_Stencil] + Comp [_StencilComp] + Pass [_StencilOp] + ReadMask [_StencilReadMask] + WriteMask [_StencilWriteMask] + } + + Cull [_CullMode] + ZWrite Off + Lighting Off + Fog { Mode Off } + ZTest [unity_GUIZTestMode] + Blend One OneMinusSrcAlpha + ColorMask [_ColorMask] + + Pass { + CGPROGRAM + #pragma vertex VertShader + #pragma fragment PixShader + #pragma shader_feature __ OUTLINE_ON + #pragma shader_feature __ UNDERLAY_ON UNDERLAY_INNER + + #pragma multi_compile __ UNITY_UI_CLIP_RECT + #pragma multi_compile __ UNITY_UI_ALPHACLIP + + #include "UnityCG.cginc" + #include "UnityUI.cginc" + #include "TMPro_Properties.cginc" + + #include "TMPro_Mobile.cginc" + + ENDCG + } +} + +CustomEditor "TMPro.EditorUtilities.TMP_SDFShaderGUI" +} diff --git a/Assets/TextMesh Pro/Shaders/TMP_SDF-Mobile SSD.shader.meta b/Assets/TextMesh Pro/Shaders/TMP_SDF-Mobile SSD.shader.meta new file mode 100644 index 0000000..9b84c13 --- /dev/null +++ b/Assets/TextMesh Pro/Shaders/TMP_SDF-Mobile SSD.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: c8d12adcee749c344b8117cf7c7eb912 +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Shaders/TMP_SDF-Mobile.shader b/Assets/TextMesh Pro/Shaders/TMP_SDF-Mobile.shader new file mode 100644 index 0000000..d3f5866 --- /dev/null +++ b/Assets/TextMesh Pro/Shaders/TMP_SDF-Mobile.shader @@ -0,0 +1,240 @@ +// Simplified SDF shader: +// - No Shading Option (bevel / bump / env map) +// - No Glow Option +// - Softness is applied on both side of the outline + +Shader "TextMeshPro/Mobile/Distance Field" { + +Properties { + [HDR]_FaceColor ("Face Color", Color) = (1,1,1,1) + _FaceDilate ("Face Dilate", Range(-1,1)) = 0 + + [HDR]_OutlineColor ("Outline Color", Color) = (0,0,0,1) + _OutlineWidth ("Outline Thickness", Range(0,1)) = 0 + _OutlineSoftness ("Outline Softness", Range(0,1)) = 0 + + [HDR]_UnderlayColor ("Border Color", Color) = (0,0,0,.5) + _UnderlayOffsetX ("Border OffsetX", Range(-1,1)) = 0 + _UnderlayOffsetY ("Border OffsetY", Range(-1,1)) = 0 + _UnderlayDilate ("Border Dilate", Range(-1,1)) = 0 + _UnderlaySoftness ("Border Softness", Range(0,1)) = 0 + + _WeightNormal ("Weight Normal", float) = 0 + _WeightBold ("Weight Bold", float) = .5 + + _ShaderFlags ("Flags", float) = 0 + _ScaleRatioA ("Scale RatioA", float) = 1 + _ScaleRatioB ("Scale RatioB", float) = 1 + _ScaleRatioC ("Scale RatioC", float) = 1 + + _MainTex ("Font Atlas", 2D) = "white" {} + _TextureWidth ("Texture Width", float) = 512 + _TextureHeight ("Texture Height", float) = 512 + _GradientScale ("Gradient Scale", float) = 5 + _ScaleX ("Scale X", float) = 1 + _ScaleY ("Scale Y", float) = 1 + _PerspectiveFilter ("Perspective Correction", Range(0, 1)) = 0.875 + _Sharpness ("Sharpness", Range(-1,1)) = 0 + + _VertexOffsetX ("Vertex OffsetX", float) = 0 + _VertexOffsetY ("Vertex OffsetY", float) = 0 + + _ClipRect ("Clip Rect", vector) = (-32767, -32767, 32767, 32767) + _MaskSoftnessX ("Mask SoftnessX", float) = 0 + _MaskSoftnessY ("Mask SoftnessY", float) = 0 + + _StencilComp ("Stencil Comparison", Float) = 8 + _Stencil ("Stencil ID", Float) = 0 + _StencilOp ("Stencil Operation", Float) = 0 + _StencilWriteMask ("Stencil Write Mask", Float) = 255 + _StencilReadMask ("Stencil Read Mask", Float) = 255 + + _CullMode ("Cull Mode", Float) = 0 + _ColorMask ("Color Mask", Float) = 15 +} + +SubShader { + Tags + { + "Queue"="Transparent" + "IgnoreProjector"="True" + "RenderType"="Transparent" + } + + + Stencil + { + Ref [_Stencil] + Comp [_StencilComp] + Pass [_StencilOp] + ReadMask [_StencilReadMask] + WriteMask [_StencilWriteMask] + } + + Cull [_CullMode] + ZWrite Off + Lighting Off + Fog { Mode Off } + ZTest [unity_GUIZTestMode] + Blend One OneMinusSrcAlpha + ColorMask [_ColorMask] + + Pass { + CGPROGRAM + #pragma vertex VertShader + #pragma fragment PixShader + #pragma shader_feature __ OUTLINE_ON + #pragma shader_feature __ UNDERLAY_ON UNDERLAY_INNER + + #pragma multi_compile __ UNITY_UI_CLIP_RECT + #pragma multi_compile __ UNITY_UI_ALPHACLIP + + #include "UnityCG.cginc" + #include "UnityUI.cginc" + #include "TMPro_Properties.cginc" + + struct vertex_t { + UNITY_VERTEX_INPUT_INSTANCE_ID + float4 vertex : POSITION; + float3 normal : NORMAL; + fixed4 color : COLOR; + float2 texcoord0 : TEXCOORD0; + float2 texcoord1 : TEXCOORD1; + }; + + struct pixel_t { + UNITY_VERTEX_INPUT_INSTANCE_ID + UNITY_VERTEX_OUTPUT_STEREO + float4 vertex : SV_POSITION; + fixed4 faceColor : COLOR; + fixed4 outlineColor : COLOR1; + float4 texcoord0 : TEXCOORD0; // Texture UV, Mask UV + half4 param : TEXCOORD1; // Scale(x), BiasIn(y), BiasOut(z), Bias(w) + half4 mask : TEXCOORD2; // Position in clip space(xy), Softness(zw) + #if (UNDERLAY_ON | UNDERLAY_INNER) + float4 texcoord1 : TEXCOORD3; // Texture UV, alpha, reserved + half2 underlayParam : TEXCOORD4; // Scale(x), Bias(y) + #endif + }; + + + pixel_t VertShader(vertex_t input) + { + pixel_t output; + + UNITY_INITIALIZE_OUTPUT(pixel_t, output); + UNITY_SETUP_INSTANCE_ID(input); + UNITY_TRANSFER_INSTANCE_ID(input, output); + UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(output); + + float bold = step(input.texcoord1.y, 0); + + float4 vert = input.vertex; + vert.x += _VertexOffsetX; + vert.y += _VertexOffsetY; + float4 vPosition = UnityObjectToClipPos(vert); + + float2 pixelSize = vPosition.w; + pixelSize /= float2(_ScaleX, _ScaleY) * abs(mul((float2x2)UNITY_MATRIX_P, _ScreenParams.xy)); + + float scale = rsqrt(dot(pixelSize, pixelSize)); + scale *= abs(input.texcoord1.y) * _GradientScale * (_Sharpness + 1); + if(UNITY_MATRIX_P[3][3] == 0) scale = lerp(abs(scale) * (1 - _PerspectiveFilter), scale, abs(dot(UnityObjectToWorldNormal(input.normal.xyz), normalize(WorldSpaceViewDir(vert))))); + + float weight = lerp(_WeightNormal, _WeightBold, bold) / 4.0; + weight = (weight + _FaceDilate) * _ScaleRatioA * 0.5; + + float layerScale = scale; + + scale /= 1 + (_OutlineSoftness * _ScaleRatioA * scale); + float bias = (0.5 - weight) * scale - 0.5; + float outline = _OutlineWidth * _ScaleRatioA * 0.5 * scale; + + float opacity = input.color.a; + #if (UNDERLAY_ON | UNDERLAY_INNER) + opacity = 1.0; + #endif + + fixed4 faceColor = fixed4(input.color.rgb, opacity) * _FaceColor; + faceColor.rgb *= faceColor.a; + + fixed4 outlineColor = _OutlineColor; + outlineColor.a *= opacity; + outlineColor.rgb *= outlineColor.a; + outlineColor = lerp(faceColor, outlineColor, sqrt(min(1.0, (outline * 2)))); + + #if (UNDERLAY_ON | UNDERLAY_INNER) + layerScale /= 1 + ((_UnderlaySoftness * _ScaleRatioC) * layerScale); + float layerBias = (.5 - weight) * layerScale - .5 - ((_UnderlayDilate * _ScaleRatioC) * .5 * layerScale); + + float x = -(_UnderlayOffsetX * _ScaleRatioC) * _GradientScale / _TextureWidth; + float y = -(_UnderlayOffsetY * _ScaleRatioC) * _GradientScale / _TextureHeight; + float2 layerOffset = float2(x, y); + #endif + + // Generate UV for the Masking Texture + float4 clampedRect = clamp(_ClipRect, -2e10, 2e10); + float2 maskUV = (vert.xy - clampedRect.xy) / (clampedRect.zw - clampedRect.xy); + + // Populate structure for pixel shader + output.vertex = vPosition; + output.faceColor = faceColor; + output.outlineColor = outlineColor; + output.texcoord0 = float4(input.texcoord0.x, input.texcoord0.y, maskUV.x, maskUV.y); + output.param = half4(scale, bias - outline, bias + outline, bias); + output.mask = half4(vert.xy * 2 - clampedRect.xy - clampedRect.zw, 0.25 / (0.25 * half2(_MaskSoftnessX, _MaskSoftnessY) + pixelSize.xy)); + #if (UNDERLAY_ON || UNDERLAY_INNER) + output.texcoord1 = float4(input.texcoord0 + layerOffset, input.color.a, 0); + output.underlayParam = half2(layerScale, layerBias); + #endif + + return output; + } + + + // PIXEL SHADER + fixed4 PixShader(pixel_t input) : SV_Target + { + UNITY_SETUP_INSTANCE_ID(input); + + half d = tex2D(_MainTex, input.texcoord0.xy).a * input.param.x; + half4 c = input.faceColor * saturate(d - input.param.w); + + #ifdef OUTLINE_ON + c = lerp(input.outlineColor, input.faceColor, saturate(d - input.param.z)); + c *= saturate(d - input.param.y); + #endif + + #if UNDERLAY_ON + d = tex2D(_MainTex, input.texcoord1.xy).a * input.underlayParam.x; + c += float4(_UnderlayColor.rgb * _UnderlayColor.a, _UnderlayColor.a) * saturate(d - input.underlayParam.y) * (1 - c.a); + #endif + + #if UNDERLAY_INNER + half sd = saturate(d - input.param.z); + d = tex2D(_MainTex, input.texcoord1.xy).a * input.underlayParam.x; + c += float4(_UnderlayColor.rgb * _UnderlayColor.a, _UnderlayColor.a) * (1 - saturate(d - input.underlayParam.y)) * sd * (1 - c.a); + #endif + + // Alternative implementation to UnityGet2DClipping with support for softness. + #if UNITY_UI_CLIP_RECT + half2 m = saturate((_ClipRect.zw - _ClipRect.xy - abs(input.mask.xy)) * input.mask.zw); + c *= m.x * m.y; + #endif + + #if (UNDERLAY_ON | UNDERLAY_INNER) + c *= input.texcoord1.z; + #endif + + #if UNITY_UI_ALPHACLIP + clip(c.a - 0.001); + #endif + + return c; + } + ENDCG + } +} + +CustomEditor "TMPro.EditorUtilities.TMP_SDFShaderGUI" +} diff --git a/Assets/TextMesh Pro/Shaders/TMP_SDF-Mobile.shader.meta b/Assets/TextMesh Pro/Shaders/TMP_SDF-Mobile.shader.meta new file mode 100644 index 0000000..2ac6e76 --- /dev/null +++ b/Assets/TextMesh Pro/Shaders/TMP_SDF-Mobile.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: fe393ace9b354375a9cb14cdbbc28be4 +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Shaders/TMP_SDF-Surface-Mobile.shader b/Assets/TextMesh Pro/Shaders/TMP_SDF-Surface-Mobile.shader new file mode 100644 index 0000000..be764ae --- /dev/null +++ b/Assets/TextMesh Pro/Shaders/TMP_SDF-Surface-Mobile.shader @@ -0,0 +1,138 @@ +// Simplified version of the SDF Surface shader : +// - No support for Bevel, Bump or envmap +// - Diffuse only lighting +// - Fully supports only 1 directional light. Other lights can affect it, but it will be per-vertex/SH. + +Shader "TextMeshPro/Mobile/Distance Field (Surface)" { + +Properties { + _FaceTex ("Fill Texture", 2D) = "white" {} + [HDR]_FaceColor ("Fill Color", Color) = (1,1,1,1) + _FaceDilate ("Face Dilate", Range(-1,1)) = 0 + + [HDR]_OutlineColor ("Outline Color", Color) = (0,0,0,1) + _OutlineTex ("Outline Texture", 2D) = "white" {} + _OutlineWidth ("Outline Thickness", Range(0, 1)) = 0 + _OutlineSoftness ("Outline Softness", Range(0,1)) = 0 + + [HDR]_GlowColor ("Color", Color) = (0, 1, 0, 0.5) + _GlowOffset ("Offset", Range(-1,1)) = 0 + _GlowInner ("Inner", Range(0,1)) = 0.05 + _GlowOuter ("Outer", Range(0,1)) = 0.05 + _GlowPower ("Falloff", Range(1, 0)) = 0.75 + + _WeightNormal ("Weight Normal", float) = 0 + _WeightBold ("Weight Bold", float) = 0.5 + + // Should not be directly exposed to the user + _ShaderFlags ("Flags", float) = 0 + _ScaleRatioA ("Scale RatioA", float) = 1 + _ScaleRatioB ("Scale RatioB", float) = 1 + _ScaleRatioC ("Scale RatioC", float) = 1 + + _MainTex ("Font Atlas", 2D) = "white" {} + _TextureWidth ("Texture Width", float) = 512 + _TextureHeight ("Texture Height", float) = 512 + _GradientScale ("Gradient Scale", float) = 5.0 + _ScaleX ("Scale X", float) = 1.0 + _ScaleY ("Scale Y", float) = 1.0 + _PerspectiveFilter ("Perspective Correction", Range(0, 1)) = 0.875 + _Sharpness ("Sharpness", Range(-1,1)) = 0 + + _VertexOffsetX ("Vertex OffsetX", float) = 0 + _VertexOffsetY ("Vertex OffsetY", float) = 0 + + _CullMode ("Cull Mode", Float) = 0 + //_MaskCoord ("Mask Coords", vector) = (0,0,0,0) + //_MaskSoftness ("Mask Softness", float) = 0 +} + +SubShader { + + Tags { + "Queue"="Transparent" + "IgnoreProjector"="True" + "RenderType"="Transparent" + } + + LOD 300 + Cull [_CullMode] + + CGPROGRAM + #pragma surface PixShader Lambert alpha:blend vertex:VertShader noforwardadd nolightmap nodirlightmap + #pragma target 3.0 + #pragma shader_feature __ GLOW_ON + + #include "TMPro_Properties.cginc" + #include "TMPro.cginc" + + half _FaceShininess; + half _OutlineShininess; + + struct Input + { + fixed4 color : COLOR; + float2 uv_MainTex; + float2 uv2_FaceTex; + float2 uv2_OutlineTex; + float2 param; // Weight, Scale + float3 viewDirEnv; + }; + + #include "TMPro_Surface.cginc" + + ENDCG + + // Pass to render object as a shadow caster + Pass + { + Name "Caster" + Tags { "LightMode" = "ShadowCaster" } + Offset 1, 1 + + Fog {Mode Off} + ZWrite On ZTest LEqual Cull Off + + CGPROGRAM + #pragma vertex vert + #pragma fragment frag + #pragma multi_compile_shadowcaster + #include "UnityCG.cginc" + + struct v2f { + V2F_SHADOW_CASTER; + float2 uv : TEXCOORD1; + float2 uv2 : TEXCOORD3; + float alphaClip : TEXCOORD2; + }; + + uniform float4 _MainTex_ST; + uniform float4 _OutlineTex_ST; + float _OutlineWidth; + float _FaceDilate; + float _ScaleRatioA; + + v2f vert( appdata_base v ) + { + v2f o; + TRANSFER_SHADOW_CASTER(o) + o.uv = TRANSFORM_TEX(v.texcoord, _MainTex); + o.uv2 = TRANSFORM_TEX(v.texcoord, _OutlineTex); + o.alphaClip = o.alphaClip = (1.0 - _OutlineWidth * _ScaleRatioA - _FaceDilate * _ScaleRatioA) / 2; + return o; + } + + uniform sampler2D _MainTex; + + float4 frag(v2f i) : COLOR + { + fixed4 texcol = tex2D(_MainTex, i.uv).a; + clip(texcol.a - i.alphaClip); + SHADOW_CASTER_FRAGMENT(i) + } + ENDCG + } +} + +CustomEditor "TMPro.EditorUtilities.TMP_SDFShaderGUI" +} diff --git a/Assets/TextMesh Pro/Shaders/TMP_SDF-Surface-Mobile.shader.meta b/Assets/TextMesh Pro/Shaders/TMP_SDF-Surface-Mobile.shader.meta new file mode 100644 index 0000000..bff8b7a --- /dev/null +++ b/Assets/TextMesh Pro/Shaders/TMP_SDF-Surface-Mobile.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 85187c2149c549c5b33f0cdb02836b17 +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Shaders/TMP_SDF-Surface.shader b/Assets/TextMesh Pro/Shaders/TMP_SDF-Surface.shader new file mode 100644 index 0000000..bcb2bb2 --- /dev/null +++ b/Assets/TextMesh Pro/Shaders/TMP_SDF-Surface.shader @@ -0,0 +1,158 @@ +Shader "TextMeshPro/Distance Field (Surface)" { + +Properties { + _FaceTex ("Fill Texture", 2D) = "white" {} + _FaceUVSpeedX ("Face UV Speed X", Range(-5, 5)) = 0.0 + _FaceUVSpeedY ("Face UV Speed Y", Range(-5, 5)) = 0.0 + [HDR]_FaceColor ("Fill Color", Color) = (1,1,1,1) + _FaceDilate ("Face Dilate", Range(-1,1)) = 0 + + [HDR]_OutlineColor ("Outline Color", Color) = (0,0,0,1) + _OutlineTex ("Outline Texture", 2D) = "white" {} + _OutlineUVSpeedX ("Outline UV Speed X", Range(-5, 5)) = 0.0 + _OutlineUVSpeedY ("Outline UV Speed Y", Range(-5, 5)) = 0.0 + _OutlineWidth ("Outline Thickness", Range(0, 1)) = 0 + _OutlineSoftness ("Outline Softness", Range(0,1)) = 0 + + _Bevel ("Bevel", Range(0,1)) = 0.5 + _BevelOffset ("Bevel Offset", Range(-0.5,0.5)) = 0 + _BevelWidth ("Bevel Width", Range(-.5,0.5)) = 0 + _BevelClamp ("Bevel Clamp", Range(0,1)) = 0 + _BevelRoundness ("Bevel Roundness", Range(0,1)) = 0 + + _BumpMap ("Normalmap", 2D) = "bump" {} + _BumpOutline ("Bump Outline", Range(0,1)) = 0.5 + _BumpFace ("Bump Face", Range(0,1)) = 0.5 + + _ReflectFaceColor ("Face Color", Color) = (0,0,0,1) + _ReflectOutlineColor ("Outline Color", Color) = (0,0,0,1) + _Cube ("Reflection Cubemap", Cube) = "black" { /* TexGen CubeReflect */ } + _EnvMatrixRotation ("Texture Rotation", vector) = (0, 0, 0, 0) + [HDR]_SpecColor ("Specular Color", Color) = (0,0,0,1) + + _FaceShininess ("Face Shininess", Range(0,1)) = 0 + _OutlineShininess ("Outline Shininess", Range(0,1)) = 0 + + [HDR]_GlowColor ("Color", Color) = (0, 1, 0, 0.5) + _GlowOffset ("Offset", Range(-1,1)) = 0 + _GlowInner ("Inner", Range(0,1)) = 0.05 + _GlowOuter ("Outer", Range(0,1)) = 0.05 + _GlowPower ("Falloff", Range(1, 0)) = 0.75 + + _WeightNormal ("Weight Normal", float) = 0 + _WeightBold ("Weight Bold", float) = 0.5 + + // Should not be directly exposed to the user + _ShaderFlags ("Flags", float) = 0 + _ScaleRatioA ("Scale RatioA", float) = 1 + _ScaleRatioB ("Scale RatioB", float) = 1 + _ScaleRatioC ("Scale RatioC", float) = 1 + + _MainTex ("Font Atlas", 2D) = "white" {} + _TextureWidth ("Texture Width", float) = 512 + _TextureHeight ("Texture Height", float) = 512 + _GradientScale ("Gradient Scale", float) = 5.0 + _ScaleX ("Scale X", float) = 1.0 + _ScaleY ("Scale Y", float) = 1.0 + _PerspectiveFilter ("Perspective Correction", Range(0, 1)) = 0.875 + _Sharpness ("Sharpness", Range(-1,1)) = 0 + + _VertexOffsetX ("Vertex OffsetX", float) = 0 + _VertexOffsetY ("Vertex OffsetY", float) = 0 + + _CullMode ("Cull Mode", Float) = 0 + //_MaskCoord ("Mask Coords", vector) = (0,0,0,0) + //_MaskSoftness ("Mask Softness", float) = 0 +} + +SubShader { + + Tags { "Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent" } + + LOD 300 + Cull [_CullMode] + + CGPROGRAM + #pragma surface PixShader BlinnPhong alpha:blend vertex:VertShader nolightmap nodirlightmap + #pragma target 3.0 + #pragma shader_feature __ GLOW_ON + #pragma glsl + + #include "TMPro_Properties.cginc" + #include "TMPro.cginc" + + half _FaceShininess; + half _OutlineShininess; + + struct Input + { + fixed4 color : COLOR; + float2 uv_MainTex; + float2 uv2_FaceTex; + float2 uv2_OutlineTex; + float2 param; // Weight, Scale + float3 viewDirEnv; + }; + + + #define BEVEL_ON 1 + #include "TMPro_Surface.cginc" + + ENDCG + + // Pass to render object as a shadow caster + Pass + { + Name "Caster" + Tags { "LightMode" = "ShadowCaster" } + Offset 1, 1 + + Fog {Mode Off} + ZWrite On + ZTest LEqual + Cull Off + + CGPROGRAM + #pragma vertex vert + #pragma fragment frag + #pragma multi_compile_shadowcaster + #include "UnityCG.cginc" + + struct v2f { + V2F_SHADOW_CASTER; + float2 uv : TEXCOORD1; + float2 uv2 : TEXCOORD3; + float alphaClip : TEXCOORD2; + }; + + uniform float4 _MainTex_ST; + uniform float4 _OutlineTex_ST; + float _OutlineWidth; + float _FaceDilate; + float _ScaleRatioA; + + v2f vert( appdata_base v ) + { + v2f o; + TRANSFER_SHADOW_CASTER(o) + o.uv = TRANSFORM_TEX(v.texcoord, _MainTex); + o.uv2 = TRANSFORM_TEX(v.texcoord, _OutlineTex); + o.alphaClip = (1.0 - _OutlineWidth * _ScaleRatioA - _FaceDilate * _ScaleRatioA) / 2; + return o; + } + + uniform sampler2D _MainTex; + + float4 frag(v2f i) : COLOR + { + fixed4 texcol = tex2D(_MainTex, i.uv).a; + clip(texcol.a - i.alphaClip); + SHADOW_CASTER_FRAGMENT(i) + } + ENDCG + } +} + +CustomEditor "TMPro.EditorUtilities.TMP_SDFShaderGUI" +} + diff --git a/Assets/TextMesh Pro/Shaders/TMP_SDF-Surface.shader.meta b/Assets/TextMesh Pro/Shaders/TMP_SDF-Surface.shader.meta new file mode 100644 index 0000000..26e814c --- /dev/null +++ b/Assets/TextMesh Pro/Shaders/TMP_SDF-Surface.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: f7ada0af4f174f0694ca6a487b8f543d +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Shaders/TMP_SDF.shader b/Assets/TextMesh Pro/Shaders/TMP_SDF.shader new file mode 100644 index 0000000..011ee19 --- /dev/null +++ b/Assets/TextMesh Pro/Shaders/TMP_SDF.shader @@ -0,0 +1,317 @@ +Shader "TextMeshPro/Distance Field" { + +Properties { + _FaceTex ("Face Texture", 2D) = "white" {} + _FaceUVSpeedX ("Face UV Speed X", Range(-5, 5)) = 0.0 + _FaceUVSpeedY ("Face UV Speed Y", Range(-5, 5)) = 0.0 + [HDR]_FaceColor ("Face Color", Color) = (1,1,1,1) + _FaceDilate ("Face Dilate", Range(-1,1)) = 0 + + [HDR]_OutlineColor ("Outline Color", Color) = (0,0,0,1) + _OutlineTex ("Outline Texture", 2D) = "white" {} + _OutlineUVSpeedX ("Outline UV Speed X", Range(-5, 5)) = 0.0 + _OutlineUVSpeedY ("Outline UV Speed Y", Range(-5, 5)) = 0.0 + _OutlineWidth ("Outline Thickness", Range(0, 1)) = 0 + _OutlineSoftness ("Outline Softness", Range(0,1)) = 0 + + _Bevel ("Bevel", Range(0,1)) = 0.5 + _BevelOffset ("Bevel Offset", Range(-0.5,0.5)) = 0 + _BevelWidth ("Bevel Width", Range(-.5,0.5)) = 0 + _BevelClamp ("Bevel Clamp", Range(0,1)) = 0 + _BevelRoundness ("Bevel Roundness", Range(0,1)) = 0 + + _LightAngle ("Light Angle", Range(0.0, 6.2831853)) = 3.1416 + [HDR]_SpecularColor ("Specular", Color) = (1,1,1,1) + _SpecularPower ("Specular", Range(0,4)) = 2.0 + _Reflectivity ("Reflectivity", Range(5.0,15.0)) = 10 + _Diffuse ("Diffuse", Range(0,1)) = 0.5 + _Ambient ("Ambient", Range(1,0)) = 0.5 + + _BumpMap ("Normal map", 2D) = "bump" {} + _BumpOutline ("Bump Outline", Range(0,1)) = 0 + _BumpFace ("Bump Face", Range(0,1)) = 0 + + _ReflectFaceColor ("Reflection Color", Color) = (0,0,0,1) + _ReflectOutlineColor("Reflection Color", Color) = (0,0,0,1) + _Cube ("Reflection Cubemap", Cube) = "black" { /* TexGen CubeReflect */ } + _EnvMatrixRotation ("Texture Rotation", vector) = (0, 0, 0, 0) + + + [HDR]_UnderlayColor ("Border Color", Color) = (0,0,0, 0.5) + _UnderlayOffsetX ("Border OffsetX", Range(-1,1)) = 0 + _UnderlayOffsetY ("Border OffsetY", Range(-1,1)) = 0 + _UnderlayDilate ("Border Dilate", Range(-1,1)) = 0 + _UnderlaySoftness ("Border Softness", Range(0,1)) = 0 + + [HDR]_GlowColor ("Color", Color) = (0, 1, 0, 0.5) + _GlowOffset ("Offset", Range(-1,1)) = 0 + _GlowInner ("Inner", Range(0,1)) = 0.05 + _GlowOuter ("Outer", Range(0,1)) = 0.05 + _GlowPower ("Falloff", Range(1, 0)) = 0.75 + + _WeightNormal ("Weight Normal", float) = 0 + _WeightBold ("Weight Bold", float) = 0.5 + + _ShaderFlags ("Flags", float) = 0 + _ScaleRatioA ("Scale RatioA", float) = 1 + _ScaleRatioB ("Scale RatioB", float) = 1 + _ScaleRatioC ("Scale RatioC", float) = 1 + + _MainTex ("Font Atlas", 2D) = "white" {} + _TextureWidth ("Texture Width", float) = 512 + _TextureHeight ("Texture Height", float) = 512 + _GradientScale ("Gradient Scale", float) = 5.0 + _ScaleX ("Scale X", float) = 1.0 + _ScaleY ("Scale Y", float) = 1.0 + _PerspectiveFilter ("Perspective Correction", Range(0, 1)) = 0.875 + _Sharpness ("Sharpness", Range(-1,1)) = 0 + + _VertexOffsetX ("Vertex OffsetX", float) = 0 + _VertexOffsetY ("Vertex OffsetY", float) = 0 + + _MaskCoord ("Mask Coordinates", vector) = (0, 0, 32767, 32767) + _ClipRect ("Clip Rect", vector) = (-32767, -32767, 32767, 32767) + _MaskSoftnessX ("Mask SoftnessX", float) = 0 + _MaskSoftnessY ("Mask SoftnessY", float) = 0 + + _StencilComp ("Stencil Comparison", Float) = 8 + _Stencil ("Stencil ID", Float) = 0 + _StencilOp ("Stencil Operation", Float) = 0 + _StencilWriteMask ("Stencil Write Mask", Float) = 255 + _StencilReadMask ("Stencil Read Mask", Float) = 255 + + _CullMode ("Cull Mode", Float) = 0 + _ColorMask ("Color Mask", Float) = 15 +} + +SubShader { + + Tags + { + "Queue"="Transparent" + "IgnoreProjector"="True" + "RenderType"="Transparent" + } + + Stencil + { + Ref [_Stencil] + Comp [_StencilComp] + Pass [_StencilOp] + ReadMask [_StencilReadMask] + WriteMask [_StencilWriteMask] + } + + Cull [_CullMode] + ZWrite Off + Lighting Off + Fog { Mode Off } + ZTest [unity_GUIZTestMode] + Blend One OneMinusSrcAlpha + ColorMask [_ColorMask] + + Pass { + CGPROGRAM + #pragma target 3.0 + #pragma vertex VertShader + #pragma fragment PixShader + #pragma shader_feature __ BEVEL_ON + #pragma shader_feature __ UNDERLAY_ON UNDERLAY_INNER + #pragma shader_feature __ GLOW_ON + + #pragma multi_compile __ UNITY_UI_CLIP_RECT + #pragma multi_compile __ UNITY_UI_ALPHACLIP + + #include "UnityCG.cginc" + #include "UnityUI.cginc" + #include "TMPro_Properties.cginc" + #include "TMPro.cginc" + + struct vertex_t { + UNITY_VERTEX_INPUT_INSTANCE_ID + float4 position : POSITION; + float3 normal : NORMAL; + fixed4 color : COLOR; + float2 texcoord0 : TEXCOORD0; + float2 texcoord1 : TEXCOORD1; + }; + + + struct pixel_t { + UNITY_VERTEX_INPUT_INSTANCE_ID + UNITY_VERTEX_OUTPUT_STEREO + float4 position : SV_POSITION; + fixed4 color : COLOR; + float2 atlas : TEXCOORD0; // Atlas + float4 param : TEXCOORD1; // alphaClip, scale, bias, weight + float4 mask : TEXCOORD2; // Position in object space(xy), pixel Size(zw) + float3 viewDir : TEXCOORD3; + + #if (UNDERLAY_ON || UNDERLAY_INNER) + float4 texcoord2 : TEXCOORD4; // u,v, scale, bias + fixed4 underlayColor : COLOR1; + #endif + float4 textures : TEXCOORD5; + }; + + // Used by Unity internally to handle Texture Tiling and Offset. + float4 _FaceTex_ST; + float4 _OutlineTex_ST; + + pixel_t VertShader(vertex_t input) + { + pixel_t output; + + UNITY_INITIALIZE_OUTPUT(pixel_t, output); + UNITY_SETUP_INSTANCE_ID(input); + UNITY_TRANSFER_INSTANCE_ID(input,output); + UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(output); + + float bold = step(input.texcoord1.y, 0); + + float4 vert = input.position; + vert.x += _VertexOffsetX; + vert.y += _VertexOffsetY; + + float4 vPosition = UnityObjectToClipPos(vert); + + float2 pixelSize = vPosition.w; + pixelSize /= float2(_ScaleX, _ScaleY) * abs(mul((float2x2)UNITY_MATRIX_P, _ScreenParams.xy)); + float scale = rsqrt(dot(pixelSize, pixelSize)); + scale *= abs(input.texcoord1.y) * _GradientScale * (_Sharpness + 1); + if (UNITY_MATRIX_P[3][3] == 0) scale = lerp(abs(scale) * (1 - _PerspectiveFilter), scale, abs(dot(UnityObjectToWorldNormal(input.normal.xyz), normalize(WorldSpaceViewDir(vert))))); + + float weight = lerp(_WeightNormal, _WeightBold, bold) / 4.0; + weight = (weight + _FaceDilate) * _ScaleRatioA * 0.5; + + float bias =(.5 - weight) + (.5 / scale); + + float alphaClip = (1.0 - _OutlineWidth * _ScaleRatioA - _OutlineSoftness * _ScaleRatioA); + + #if GLOW_ON + alphaClip = min(alphaClip, 1.0 - _GlowOffset * _ScaleRatioB - _GlowOuter * _ScaleRatioB); + #endif + + alphaClip = alphaClip / 2.0 - ( .5 / scale) - weight; + + #if (UNDERLAY_ON || UNDERLAY_INNER) + float4 underlayColor = _UnderlayColor; + underlayColor.rgb *= underlayColor.a; + + float bScale = scale; + bScale /= 1 + ((_UnderlaySoftness*_ScaleRatioC) * bScale); + float bBias = (0.5 - weight) * bScale - 0.5 - ((_UnderlayDilate * _ScaleRatioC) * 0.5 * bScale); + + float x = -(_UnderlayOffsetX * _ScaleRatioC) * _GradientScale / _TextureWidth; + float y = -(_UnderlayOffsetY * _ScaleRatioC) * _GradientScale / _TextureHeight; + float2 bOffset = float2(x, y); + #endif + + // Generate UV for the Masking Texture + float4 clampedRect = clamp(_ClipRect, -2e10, 2e10); + float2 maskUV = (vert.xy - clampedRect.xy) / (clampedRect.zw - clampedRect.xy); + + // Support for texture tiling and offset + float2 textureUV = UnpackUV(input.texcoord1.x); + float2 faceUV = TRANSFORM_TEX(textureUV, _FaceTex); + float2 outlineUV = TRANSFORM_TEX(textureUV, _OutlineTex); + + + output.position = vPosition; + output.color = input.color; + output.atlas = input.texcoord0; + output.param = float4(alphaClip, scale, bias, weight); + output.mask = half4(vert.xy * 2 - clampedRect.xy - clampedRect.zw, 0.25 / (0.25 * half2(_MaskSoftnessX, _MaskSoftnessY) + pixelSize.xy)); + output.viewDir = mul((float3x3)_EnvMatrix, _WorldSpaceCameraPos.xyz - mul(unity_ObjectToWorld, vert).xyz); + #if (UNDERLAY_ON || UNDERLAY_INNER) + output.texcoord2 = float4(input.texcoord0 + bOffset, bScale, bBias); + output.underlayColor = underlayColor; + #endif + output.textures = float4(faceUV, outlineUV); + + return output; + } + + + fixed4 PixShader(pixel_t input) : SV_Target + { + UNITY_SETUP_INSTANCE_ID(input); + + float c = tex2D(_MainTex, input.atlas).a; + + #ifndef UNDERLAY_ON + clip(c - input.param.x); + #endif + + float scale = input.param.y; + float bias = input.param.z; + float weight = input.param.w; + float sd = (bias - c) * scale; + + float outline = (_OutlineWidth * _ScaleRatioA) * scale; + float softness = (_OutlineSoftness * _ScaleRatioA) * scale; + + half4 faceColor = _FaceColor; + half4 outlineColor = _OutlineColor; + + faceColor.rgb *= input.color.rgb; + + faceColor *= tex2D(_FaceTex, input.textures.xy + float2(_FaceUVSpeedX, _FaceUVSpeedY) * _Time.y); + outlineColor *= tex2D(_OutlineTex, input.textures.zw + float2(_OutlineUVSpeedX, _OutlineUVSpeedY) * _Time.y); + + faceColor = GetColor(sd, faceColor, outlineColor, outline, softness); + + #if BEVEL_ON + float3 dxy = float3(0.5 / _TextureWidth, 0.5 / _TextureHeight, 0); + float3 n = GetSurfaceNormal(input.atlas, weight, dxy); + + float3 bump = UnpackNormal(tex2D(_BumpMap, input.textures.xy + float2(_FaceUVSpeedX, _FaceUVSpeedY) * _Time.y)).xyz; + bump *= lerp(_BumpFace, _BumpOutline, saturate(sd + outline * 0.5)); + n = normalize(n- bump); + + float3 light = normalize(float3(sin(_LightAngle), cos(_LightAngle), -1.0)); + + float3 col = GetSpecular(n, light); + faceColor.rgb += col*faceColor.a; + faceColor.rgb *= 1-(dot(n, light)*_Diffuse); + faceColor.rgb *= lerp(_Ambient, 1, n.z*n.z); + + fixed4 reflcol = texCUBE(_Cube, reflect(input.viewDir, -n)); + faceColor.rgb += reflcol.rgb * lerp(_ReflectFaceColor.rgb, _ReflectOutlineColor.rgb, saturate(sd + outline * 0.5)) * faceColor.a; + #endif + + #if UNDERLAY_ON + float d = tex2D(_MainTex, input.texcoord2.xy).a * input.texcoord2.z; + faceColor += input.underlayColor * saturate(d - input.texcoord2.w) * (1 - faceColor.a); + #endif + + #if UNDERLAY_INNER + float d = tex2D(_MainTex, input.texcoord2.xy).a * input.texcoord2.z; + faceColor += input.underlayColor * (1 - saturate(d - input.texcoord2.w)) * saturate(1 - sd) * (1 - faceColor.a); + #endif + + #if GLOW_ON + float4 glowColor = GetGlowColor(sd, scale); + faceColor.rgb += glowColor.rgb * glowColor.a; + #endif + + // Alternative implementation to UnityGet2DClipping with support for softness. + #if UNITY_UI_CLIP_RECT + half2 m = saturate((_ClipRect.zw - _ClipRect.xy - abs(input.mask.xy)) * input.mask.zw); + faceColor *= m.x * m.y; + #endif + + #if UNITY_UI_ALPHACLIP + clip(faceColor.a - 0.001); + #endif + + return faceColor * input.color.a; + } + + ENDCG + } +} + +Fallback "TextMeshPro/Mobile/Distance Field" +CustomEditor "TMPro.EditorUtilities.TMP_SDFShaderGUI" +} diff --git a/Assets/TextMesh Pro/Shaders/TMP_SDF.shader.meta b/Assets/TextMesh Pro/Shaders/TMP_SDF.shader.meta new file mode 100644 index 0000000..e1cf3f3 --- /dev/null +++ b/Assets/TextMesh Pro/Shaders/TMP_SDF.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 68e6db2ebdc24f95958faec2be5558d6 +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Shaders/TMP_Sprite.shader b/Assets/TextMesh Pro/Shaders/TMP_Sprite.shader new file mode 100644 index 0000000..e8283a7 --- /dev/null +++ b/Assets/TextMesh Pro/Shaders/TMP_Sprite.shader @@ -0,0 +1,116 @@ +Shader "TextMeshPro/Sprite" +{ + Properties + { + [PerRendererData] _MainTex ("Sprite Texture", 2D) = "white" {} + _Color ("Tint", Color) = (1,1,1,1) + + _StencilComp ("Stencil Comparison", Float) = 8 + _Stencil ("Stencil ID", Float) = 0 + _StencilOp ("Stencil Operation", Float) = 0 + _StencilWriteMask ("Stencil Write Mask", Float) = 255 + _StencilReadMask ("Stencil Read Mask", Float) = 255 + + _CullMode ("Cull Mode", Float) = 0 + _ColorMask ("Color Mask", Float) = 15 + _ClipRect ("Clip Rect", vector) = (-32767, -32767, 32767, 32767) + + [Toggle(UNITY_UI_ALPHACLIP)] _UseUIAlphaClip ("Use Alpha Clip", Float) = 0 + } + + SubShader + { + Tags + { + "Queue"="Transparent" + "IgnoreProjector"="True" + "RenderType"="Transparent" + "PreviewType"="Plane" + "CanUseSpriteAtlas"="True" + } + + Stencil + { + Ref [_Stencil] + Comp [_StencilComp] + Pass [_StencilOp] + ReadMask [_StencilReadMask] + WriteMask [_StencilWriteMask] + } + + Cull [_CullMode] + Lighting Off + ZWrite Off + ZTest [unity_GUIZTestMode] + Blend SrcAlpha OneMinusSrcAlpha + ColorMask [_ColorMask] + + Pass + { + Name "Default" + CGPROGRAM + #pragma vertex vert + #pragma fragment frag + #pragma target 2.0 + + #include "UnityCG.cginc" + #include "UnityUI.cginc" + + #pragma multi_compile __ UNITY_UI_CLIP_RECT + #pragma multi_compile __ UNITY_UI_ALPHACLIP + + struct appdata_t + { + float4 vertex : POSITION; + float4 color : COLOR; + float2 texcoord : TEXCOORD0; + UNITY_VERTEX_INPUT_INSTANCE_ID + }; + + struct v2f + { + float4 vertex : SV_POSITION; + fixed4 color : COLOR; + float2 texcoord : TEXCOORD0; + float4 worldPosition : TEXCOORD1; + UNITY_VERTEX_OUTPUT_STEREO + }; + + sampler2D _MainTex; + fixed4 _Color; + fixed4 _TextureSampleAdd; + float4 _ClipRect; + float4 _MainTex_ST; + + v2f vert(appdata_t v) + { + v2f OUT; + UNITY_SETUP_INSTANCE_ID(v); + UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(OUT); + OUT.worldPosition = v.vertex; + OUT.vertex = UnityObjectToClipPos(OUT.worldPosition); + + OUT.texcoord = TRANSFORM_TEX(v.texcoord, _MainTex); + + OUT.color = v.color * _Color; + return OUT; + } + + fixed4 frag(v2f IN) : SV_Target + { + half4 color = (tex2D(_MainTex, IN.texcoord) + _TextureSampleAdd) * IN.color; + + #ifdef UNITY_UI_CLIP_RECT + color.a *= UnityGet2DClipping(IN.worldPosition.xy, _ClipRect); + #endif + + #ifdef UNITY_UI_ALPHACLIP + clip (color.a - 0.001); + #endif + + return color; + } + ENDCG + } + } +} diff --git a/Assets/TextMesh Pro/Shaders/TMP_Sprite.shader.meta b/Assets/TextMesh Pro/Shaders/TMP_Sprite.shader.meta new file mode 100644 index 0000000..50ba195 --- /dev/null +++ b/Assets/TextMesh Pro/Shaders/TMP_Sprite.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: cf81c85f95fe47e1a27f6ae460cf182c +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Shaders/TMPro.cginc b/Assets/TextMesh Pro/Shaders/TMPro.cginc new file mode 100644 index 0000000..5898130 --- /dev/null +++ b/Assets/TextMesh Pro/Shaders/TMPro.cginc @@ -0,0 +1,84 @@ +float2 UnpackUV(float uv) +{ + float2 output; + output.x = floor(uv / 4096); + output.y = uv - 4096 * output.x; + + return output * 0.001953125; +} + +fixed4 GetColor(half d, fixed4 faceColor, fixed4 outlineColor, half outline, half softness) +{ + half faceAlpha = 1-saturate((d - outline * 0.5 + softness * 0.5) / (1.0 + softness)); + half outlineAlpha = saturate((d + outline * 0.5)) * sqrt(min(1.0, outline)); + + faceColor.rgb *= faceColor.a; + outlineColor.rgb *= outlineColor.a; + + faceColor = lerp(faceColor, outlineColor, outlineAlpha); + + faceColor *= faceAlpha; + + return faceColor; +} + +float3 GetSurfaceNormal(float4 h, float bias) +{ + bool raisedBevel = step(1, fmod(_ShaderFlags, 2)); + + h += bias+_BevelOffset; + + float bevelWidth = max(.01, _OutlineWidth+_BevelWidth); + + // Track outline + h -= .5; + h /= bevelWidth; + h = saturate(h+.5); + + if(raisedBevel) h = 1 - abs(h*2.0 - 1.0); + h = lerp(h, sin(h*3.141592/2.0), _BevelRoundness); + h = min(h, 1.0-_BevelClamp); + h *= _Bevel * bevelWidth * _GradientScale * -2.0; + + float3 va = normalize(float3(1.0, 0.0, h.y - h.x)); + float3 vb = normalize(float3(0.0, -1.0, h.w - h.z)); + + return cross(va, vb); +} + +float3 GetSurfaceNormal(float2 uv, float bias, float3 delta) +{ + // Read "height field" + float4 h = {tex2D(_MainTex, uv - delta.xz).a, + tex2D(_MainTex, uv + delta.xz).a, + tex2D(_MainTex, uv - delta.zy).a, + tex2D(_MainTex, uv + delta.zy).a}; + + return GetSurfaceNormal(h, bias); +} + +float3 GetSpecular(float3 n, float3 l) +{ + float spec = pow(max(0.0, dot(n, l)), _Reflectivity); + return _SpecularColor.rgb * spec * _SpecularPower; +} + +float4 GetGlowColor(float d, float scale) +{ + float glow = d - (_GlowOffset*_ScaleRatioB) * 0.5 * scale; + float t = lerp(_GlowInner, (_GlowOuter * _ScaleRatioB), step(0.0, glow)) * 0.5 * scale; + glow = saturate(abs(glow/(1.0 + t))); + glow = 1.0-pow(glow, _GlowPower); + glow *= sqrt(min(1.0, t)); // Fade off glow thinner than 1 screen pixel + return float4(_GlowColor.rgb, saturate(_GlowColor.a * glow * 2)); +} + +float4 BlendARGB(float4 overlying, float4 underlying) +{ + overlying.rgb *= overlying.a; + underlying.rgb *= underlying.a; + float3 blended = overlying.rgb + ((1-overlying.a)*underlying.rgb); + float alpha = underlying.a + (1-underlying.a)*overlying.a; + return float4(blended, alpha); +} + diff --git a/Assets/TextMesh Pro/Shaders/TMPro.cginc.meta b/Assets/TextMesh Pro/Shaders/TMPro.cginc.meta new file mode 100644 index 0000000..0d6eb56 --- /dev/null +++ b/Assets/TextMesh Pro/Shaders/TMPro.cginc.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 407bc68d299748449bbf7f48ee690f8d +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Shaders/TMPro_Mobile.cginc b/Assets/TextMesh Pro/Shaders/TMPro_Mobile.cginc new file mode 100644 index 0000000..5969fec --- /dev/null +++ b/Assets/TextMesh Pro/Shaders/TMPro_Mobile.cginc @@ -0,0 +1,157 @@ +struct vertex_t { + UNITY_VERTEX_INPUT_INSTANCE_ID + float4 position : POSITION; + float3 normal : NORMAL; + float4 color : COLOR; + float2 texcoord0 : TEXCOORD0; + float2 texcoord1 : TEXCOORD1; +}; + +struct pixel_t { + UNITY_VERTEX_INPUT_INSTANCE_ID + UNITY_VERTEX_OUTPUT_STEREO + float4 position : SV_POSITION; + float4 faceColor : COLOR; + float4 outlineColor : COLOR1; + float4 texcoord0 : TEXCOORD0; + float4 param : TEXCOORD1; // weight, scaleRatio + float2 mask : TEXCOORD2; + #if (UNDERLAY_ON || UNDERLAY_INNER) + float4 texcoord2 : TEXCOORD3; + float4 underlayColor : COLOR2; + #endif +}; + +float4 SRGBToLinear(float4 rgba) { + return float4(lerp(rgba.rgb / 12.92f, pow((rgba.rgb + 0.055f) / 1.055f, 2.4f), step(0.04045f, rgba.rgb)), rgba.a); +} + +pixel_t VertShader(vertex_t input) +{ + pixel_t output; + + UNITY_INITIALIZE_OUTPUT(pixel_t, output); + UNITY_SETUP_INSTANCE_ID(input); + UNITY_TRANSFER_INSTANCE_ID(input, output); + UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(output); + + float bold = step(input.texcoord1.y, 0); + + float4 vert = input.position; + vert.x += _VertexOffsetX; + vert.y += _VertexOffsetY; + + float4 vPosition = UnityObjectToClipPos(vert); + + float weight = lerp(_WeightNormal, _WeightBold, bold) / 4.0; + weight = (weight + _FaceDilate) * _ScaleRatioA * 0.5; + + // Generate UV for the Masking Texture + float4 clampedRect = clamp(_ClipRect, -2e10, 2e10); + float2 maskUV = (vert.xy - clampedRect.xy) / (clampedRect.zw - clampedRect.xy); + + float4 color = input.color; + #if (FORCE_LINEAR && !UNITY_COLORSPACE_GAMMA) + color = SRGBToLinear(input.color); + #endif + + float opacity = color.a; + #if (UNDERLAY_ON | UNDERLAY_INNER) + opacity = 1.0; + #endif + + float4 faceColor = float4(color.rgb, opacity) * _FaceColor; + faceColor.rgb *= faceColor.a; + + float4 outlineColor = _OutlineColor; + outlineColor.a *= opacity; + outlineColor.rgb *= outlineColor.a; + + output.position = vPosition; + output.faceColor = faceColor; + output.outlineColor = outlineColor; + output.texcoord0 = float4(input.texcoord0.xy, maskUV.xy); + output.param = float4(0.5 - weight, 1.3333 * _GradientScale * (_Sharpness + 1) / _TextureWidth, _OutlineWidth * _ScaleRatioA * 0.5, 0); + + float2 mask = float2(0, 0); + #if UNITY_UI_CLIP_RECT + mask = vert.xy * 2 - clampedRect.xy - clampedRect.zw; + #endif + output.mask = mask; + + #if (UNDERLAY_ON || UNDERLAY_INNER) + float4 underlayColor = _UnderlayColor; + underlayColor.rgb *= underlayColor.a; + + float x = -(_UnderlayOffsetX * _ScaleRatioC) * _GradientScale / _TextureWidth; + float y = -(_UnderlayOffsetY * _ScaleRatioC) * _GradientScale / _TextureHeight; + + output.texcoord2 = float4(input.texcoord0 + float2(x, y), input.color.a, 0); + output.underlayColor = underlayColor; + #endif + + return output; +} + +float4 PixShader(pixel_t input) : SV_Target +{ + UNITY_SETUP_INSTANCE_ID(input); + + float d = tex2D(_MainTex, input.texcoord0.xy).a; + + float2 UV = input.texcoord0.xy; + float scale = rsqrt(abs(ddx(UV.x) * ddy(UV.y) - ddy(UV.x) * ddx(UV.y))) * input.param.y; + + #if (UNDERLAY_ON | UNDERLAY_INNER) + float layerScale = scale; + layerScale /= 1 + ((_UnderlaySoftness * _ScaleRatioC) * layerScale); + float layerBias = input.param.x * layerScale - .5 - ((_UnderlayDilate * _ScaleRatioC) * .5 * layerScale); + #endif + + scale /= 1 + (_OutlineSoftness * _ScaleRatioA * scale); + + float4 faceColor = input.faceColor * saturate((d - input.param.x) * scale + 0.5); + + #ifdef OUTLINE_ON + float4 outlineColor = lerp(input.faceColor, input.outlineColor, sqrt(min(1.0, input.param.z * scale * 2))); + faceColor = lerp(outlineColor, input.faceColor, saturate((d - input.param.x - input.param.z) * scale + 0.5)); + faceColor *= saturate((d - input.param.x + input.param.z) * scale + 0.5); + #endif + + #if UNDERLAY_ON + d = tex2D(_MainTex, input.texcoord2.xy).a * layerScale; + faceColor += float4(_UnderlayColor.rgb * _UnderlayColor.a, _UnderlayColor.a) * saturate(d - layerBias) * (1 - faceColor.a); + #endif + + #if UNDERLAY_INNER + float bias = input.param.x * scale - 0.5; + float sd = saturate(d * scale - bias - input.param.z); + d = tex2D(_MainTex, input.texcoord2.xy).a * layerScale; + faceColor += float4(_UnderlayColor.rgb * _UnderlayColor.a, _UnderlayColor.a) * (1 - saturate(d - layerBias)) * sd * (1 - faceColor.a); + #endif + + #ifdef MASKING + float a = abs(_MaskInverse - tex2D(_MaskTex, input.texcoord0.zw).a); + float t = a + (1 - _MaskWipeControl) * _MaskEdgeSoftness - _MaskWipeControl; + a = saturate(t / _MaskEdgeSoftness); + faceColor.rgb = lerp(_MaskEdgeColor.rgb * faceColor.a, faceColor.rgb, a); + faceColor *= a; + #endif + + // Alternative implementation to UnityGet2DClipping with support for softness + #if UNITY_UI_CLIP_RECT + float2 maskZW = 0.25 / (0.25 * half2(_MaskSoftnessX, _MaskSoftnessY) + (1 / scale)); + float2 m = saturate((_ClipRect.zw - _ClipRect.xy - abs(input.mask.xy)) * maskZW); + faceColor *= m.x * m.y; + #endif + + #if (UNDERLAY_ON | UNDERLAY_INNER) + faceColor *= input.texcoord2.z; + #endif + + #if UNITY_UI_ALPHACLIP + clip(faceColor.a - 0.001); + #endif + + return faceColor; +} diff --git a/Assets/TextMesh Pro/Shaders/TMPro_Mobile.cginc.meta b/Assets/TextMesh Pro/Shaders/TMPro_Mobile.cginc.meta new file mode 100644 index 0000000..4415e50 --- /dev/null +++ b/Assets/TextMesh Pro/Shaders/TMPro_Mobile.cginc.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: c334973cef89a9840b0b0c507e0377ab +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Shaders/TMPro_Properties.cginc b/Assets/TextMesh Pro/Shaders/TMPro_Properties.cginc new file mode 100644 index 0000000..2e96258 --- /dev/null +++ b/Assets/TextMesh Pro/Shaders/TMPro_Properties.cginc @@ -0,0 +1,85 @@ +// UI Editable properties +uniform sampler2D _FaceTex; // Alpha : Signed Distance +uniform float _FaceUVSpeedX; +uniform float _FaceUVSpeedY; +uniform fixed4 _FaceColor; // RGBA : Color + Opacity +uniform float _FaceDilate; // v[ 0, 1] +uniform float _OutlineSoftness; // v[ 0, 1] + +uniform sampler2D _OutlineTex; // RGBA : Color + Opacity +uniform float _OutlineUVSpeedX; +uniform float _OutlineUVSpeedY; +uniform fixed4 _OutlineColor; // RGBA : Color + Opacity +uniform float _OutlineWidth; // v[ 0, 1] + +uniform float _Bevel; // v[ 0, 1] +uniform float _BevelOffset; // v[-1, 1] +uniform float _BevelWidth; // v[-1, 1] +uniform float _BevelClamp; // v[ 0, 1] +uniform float _BevelRoundness; // v[ 0, 1] + +uniform sampler2D _BumpMap; // Normal map +uniform float _BumpOutline; // v[ 0, 1] +uniform float _BumpFace; // v[ 0, 1] + +uniform samplerCUBE _Cube; // Cube / sphere map +uniform fixed4 _ReflectFaceColor; // RGB intensity +uniform fixed4 _ReflectOutlineColor; +//uniform float _EnvTiltX; // v[-1, 1] +//uniform float _EnvTiltY; // v[-1, 1] +uniform float3 _EnvMatrixRotation; +uniform float4x4 _EnvMatrix; + +uniform fixed4 _SpecularColor; // RGB intensity +uniform float _LightAngle; // v[ 0,Tau] +uniform float _SpecularPower; // v[ 0, 1] +uniform float _Reflectivity; // v[ 5, 15] +uniform float _Diffuse; // v[ 0, 1] +uniform float _Ambient; // v[ 0, 1] + +uniform fixed4 _UnderlayColor; // RGBA : Color + Opacity +uniform float _UnderlayOffsetX; // v[-1, 1] +uniform float _UnderlayOffsetY; // v[-1, 1] +uniform float _UnderlayDilate; // v[-1, 1] +uniform float _UnderlaySoftness; // v[ 0, 1] + +uniform fixed4 _GlowColor; // RGBA : Color + Intesity +uniform float _GlowOffset; // v[-1, 1] +uniform float _GlowOuter; // v[ 0, 1] +uniform float _GlowInner; // v[ 0, 1] +uniform float _GlowPower; // v[ 1, 1/(1+4*4)] + +// API Editable properties +uniform float _ShaderFlags; +uniform float _WeightNormal; +uniform float _WeightBold; + +uniform float _ScaleRatioA; +uniform float _ScaleRatioB; +uniform float _ScaleRatioC; + +uniform float _VertexOffsetX; +uniform float _VertexOffsetY; + +//uniform float _UseClipRect; +uniform float _MaskID; +uniform sampler2D _MaskTex; +uniform float4 _MaskCoord; +uniform float4 _ClipRect; // bottom left(x,y) : top right(z,w) +//uniform float _MaskWipeControl; +//uniform float _MaskEdgeSoftness; +//uniform fixed4 _MaskEdgeColor; +//uniform bool _MaskInverse; + +uniform float _MaskSoftnessX; +uniform float _MaskSoftnessY; + +// Font Atlas properties +uniform sampler2D _MainTex; +uniform float _TextureWidth; +uniform float _TextureHeight; +uniform float _GradientScale; +uniform float _ScaleX; +uniform float _ScaleY; +uniform float _PerspectiveFilter; +uniform float _Sharpness; diff --git a/Assets/TextMesh Pro/Shaders/TMPro_Properties.cginc.meta b/Assets/TextMesh Pro/Shaders/TMPro_Properties.cginc.meta new file mode 100644 index 0000000..7b37f2f --- /dev/null +++ b/Assets/TextMesh Pro/Shaders/TMPro_Properties.cginc.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 3997e2241185407d80309a82f9148466 +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Shaders/TMPro_Surface.cginc b/Assets/TextMesh Pro/Shaders/TMPro_Surface.cginc new file mode 100644 index 0000000..622ae87 --- /dev/null +++ b/Assets/TextMesh Pro/Shaders/TMPro_Surface.cginc @@ -0,0 +1,101 @@ +void VertShader(inout appdata_full v, out Input data) +{ + v.vertex.x += _VertexOffsetX; + v.vertex.y += _VertexOffsetY; + + UNITY_INITIALIZE_OUTPUT(Input, data); + + float bold = step(v.texcoord1.y, 0); + + // Generate normal for backface + float3 view = ObjSpaceViewDir(v.vertex); + v.normal *= sign(dot(v.normal, view)); + +#if USE_DERIVATIVE + data.param.y = 1; +#else + float4 vert = v.vertex; + float4 vPosition = UnityObjectToClipPos(vert); + float2 pixelSize = vPosition.w; + + pixelSize /= float2(_ScaleX, _ScaleY) * mul((float2x2)UNITY_MATRIX_P, _ScreenParams.xy); + float scale = rsqrt(dot(pixelSize, pixelSize)); + scale *= abs(v.texcoord1.y) * _GradientScale * (_Sharpness + 1); + scale = lerp(scale * (1 - _PerspectiveFilter), scale, abs(dot(UnityObjectToWorldNormal(v.normal.xyz), normalize(WorldSpaceViewDir(vert))))); + data.param.y = scale; +#endif + + data.param.x = (lerp(_WeightNormal, _WeightBold, bold) / 4.0 + _FaceDilate) * _ScaleRatioA * 0.5; // + + v.texcoord1.xy = UnpackUV(v.texcoord1.x); + data.viewDirEnv = mul((float3x3)_EnvMatrix, WorldSpaceViewDir(v.vertex)); +} + +void PixShader(Input input, inout SurfaceOutput o) +{ + +#if USE_DERIVATIVE + float2 pixelSize = float2(ddx(input.uv_MainTex.y), ddy(input.uv_MainTex.y)); + pixelSize *= _TextureWidth * .75; + float scale = rsqrt(dot(pixelSize, pixelSize)) * _GradientScale * (_Sharpness + 1); +#else + float scale = input.param.y; +#endif + + // Signed distance + float c = tex2D(_MainTex, input.uv_MainTex).a; + float sd = (.5 - c - input.param.x) * scale + .5; + float outline = _OutlineWidth*_ScaleRatioA * scale; + float softness = _OutlineSoftness*_ScaleRatioA * scale; + + // Color & Alpha + float4 faceColor = _FaceColor; + float4 outlineColor = _OutlineColor; + faceColor *= input.color; + outlineColor.a *= input.color.a; + faceColor *= tex2D(_FaceTex, float2(input.uv2_FaceTex.x + _FaceUVSpeedX * _Time.y, input.uv2_FaceTex.y + _FaceUVSpeedY * _Time.y)); + outlineColor *= tex2D(_OutlineTex, float2(input.uv2_OutlineTex.x + _OutlineUVSpeedX * _Time.y, input.uv2_OutlineTex.y + _OutlineUVSpeedY * _Time.y)); + faceColor = GetColor(sd, faceColor, outlineColor, outline, softness); + faceColor.rgb /= max(faceColor.a, 0.0001); + +#if BEVEL_ON + float3 delta = float3(1.0 / _TextureWidth, 1.0 / _TextureHeight, 0.0); + + float4 smp4x = {tex2D(_MainTex, input.uv_MainTex - delta.xz).a, + tex2D(_MainTex, input.uv_MainTex + delta.xz).a, + tex2D(_MainTex, input.uv_MainTex - delta.zy).a, + tex2D(_MainTex, input.uv_MainTex + delta.zy).a }; + + // Face Normal + float3 n = GetSurfaceNormal(smp4x, input.param.x); + + // Bumpmap + float3 bump = UnpackNormal(tex2D(_BumpMap, input.uv2_FaceTex.xy)).xyz; + bump *= lerp(_BumpFace, _BumpOutline, saturate(sd + outline * 0.5)); + bump = lerp(float3(0, 0, 1), bump, faceColor.a); + n = normalize(n - bump); + + // Cubemap reflection + fixed4 reflcol = texCUBE(_Cube, reflect(input.viewDirEnv, mul((float3x3)unity_ObjectToWorld, n))); + float3 emission = reflcol.rgb * lerp(_ReflectFaceColor.rgb, _ReflectOutlineColor.rgb, saturate(sd + outline * 0.5)) * faceColor.a; +#else + float3 n = float3(0, 0, -1); + float3 emission = float3(0, 0, 0); +#endif + +#if GLOW_ON + float4 glowColor = GetGlowColor(sd, scale); + glowColor.a *= input.color.a; + emission += glowColor.rgb*glowColor.a; + faceColor = BlendARGB(glowColor, faceColor); + faceColor.rgb /= max(faceColor.a, 0.0001); +#endif + + // Set Standard output structure + o.Albedo = faceColor.rgb; + o.Normal = -n; + o.Emission = emission; + o.Specular = lerp(_FaceShininess, _OutlineShininess, saturate(sd + outline * 0.5)); + o.Gloss = 1; + o.Alpha = faceColor.a; +} diff --git a/Assets/TextMesh Pro/Shaders/TMPro_Surface.cginc.meta b/Assets/TextMesh Pro/Shaders/TMPro_Surface.cginc.meta new file mode 100644 index 0000000..41ef4b1 --- /dev/null +++ b/Assets/TextMesh Pro/Shaders/TMPro_Surface.cginc.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: d930090c0cd643c7b55f19a38538c162 +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Sprites.meta b/Assets/TextMesh Pro/Sprites.meta new file mode 100644 index 0000000..8b699e5 --- /dev/null +++ b/Assets/TextMesh Pro/Sprites.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d0603b6d5186471b96c778c3949c7ce2 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Sprites/EmojiOne Attribution.txt b/Assets/TextMesh Pro/Sprites/EmojiOne Attribution.txt new file mode 100644 index 0000000..384180a --- /dev/null +++ b/Assets/TextMesh Pro/Sprites/EmojiOne Attribution.txt @@ -0,0 +1,3 @@ +This sample of beautiful emojis are provided by EmojiOne https://www.emojione.com/ + +Please visit their website to view the complete set of their emojis and review their licensing terms. \ No newline at end of file diff --git a/Assets/TextMesh Pro/Sprites/EmojiOne Attribution.txt.meta b/Assets/TextMesh Pro/Sprites/EmojiOne Attribution.txt.meta new file mode 100644 index 0000000..0d30e65 --- /dev/null +++ b/Assets/TextMesh Pro/Sprites/EmojiOne Attribution.txt.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 381dcb09d5029d14897e55f98031fca5 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Sprites/EmojiOne.json b/Assets/TextMesh Pro/Sprites/EmojiOne.json new file mode 100644 index 0000000..6c4e50b --- /dev/null +++ b/Assets/TextMesh Pro/Sprites/EmojiOne.json @@ -0,0 +1,156 @@ +{"frames": [ + +{ + "filename": "1f60a.png", + "frame": {"x":0,"y":0,"w":128,"h":128}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":128,"h":128}, + "sourceSize": {"w":128,"h":128}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "1f60b.png", + "frame": {"x":128,"y":0,"w":128,"h":128}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":128,"h":128}, + "sourceSize": {"w":128,"h":128}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "1f60d.png", + "frame": {"x":256,"y":0,"w":128,"h":128}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":128,"h":128}, + "sourceSize": {"w":128,"h":128}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "1f60e.png", + "frame": {"x":384,"y":0,"w":128,"h":128}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":128,"h":128}, + "sourceSize": {"w":128,"h":128}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "1f600.png", + "frame": {"x":0,"y":128,"w":128,"h":128}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":128,"h":128}, + "sourceSize": {"w":128,"h":128}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "1f601.png", + "frame": {"x":128,"y":128,"w":128,"h":128}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":128,"h":128}, + "sourceSize": {"w":128,"h":128}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "1f602.png", + "frame": {"x":256,"y":128,"w":128,"h":128}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":128,"h":128}, + "sourceSize": {"w":128,"h":128}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "1f603.png", + "frame": {"x":384,"y":128,"w":128,"h":128}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":128,"h":128}, + "sourceSize": {"w":128,"h":128}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "1f604.png", + "frame": {"x":0,"y":256,"w":128,"h":128}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":128,"h":128}, + "sourceSize": {"w":128,"h":128}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "1f605.png", + "frame": {"x":128,"y":256,"w":128,"h":128}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":128,"h":128}, + "sourceSize": {"w":128,"h":128}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "1f606.png", + "frame": {"x":256,"y":256,"w":128,"h":128}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":128,"h":128}, + "sourceSize": {"w":128,"h":128}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "1f609.png", + "frame": {"x":384,"y":256,"w":128,"h":128}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":128,"h":128}, + "sourceSize": {"w":128,"h":128}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "1f618.png", + "frame": {"x":0,"y":384,"w":128,"h":128}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":128,"h":128}, + "sourceSize": {"w":128,"h":128}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "1f923.png", + "frame": {"x":128,"y":384,"w":128,"h":128}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":128,"h":128}, + "sourceSize": {"w":128,"h":128}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "263a.png", + "frame": {"x":256,"y":384,"w":128,"h":128}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":128,"h":128}, + "sourceSize": {"w":128,"h":128}, + "pivot": {"x":0.5,"y":0.5} +}, +{ + "filename": "2639.png", + "frame": {"x":384,"y":384,"w":128,"h":128}, + "rotated": false, + "trimmed": false, + "spriteSourceSize": {"x":0,"y":0,"w":128,"h":128}, + "sourceSize": {"w":128,"h":128}, + "pivot": {"x":0.5,"y":0.5} +}], +"meta": { + "app": "http://www.codeandweb.com/texturepacker", + "version": "1.0", + "image": "EmojiOne.png", + "format": "RGBA8888", + "size": {"w":512,"h":512}, + "scale": "1", + "smartupdate": "$TexturePacker:SmartUpdate:196a26a2e149d875b91ffc8fa3581e76:fc928c7e275404b7e0649307410475cb:424723c3774975ddb2053fd5c4b85f6e$" +} +} diff --git a/Assets/TextMesh Pro/Sprites/EmojiOne.json.meta b/Assets/TextMesh Pro/Sprites/EmojiOne.json.meta new file mode 100644 index 0000000..762cf15 --- /dev/null +++ b/Assets/TextMesh Pro/Sprites/EmojiOne.json.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8f05276190cf498a8153f6cbe761d4e6 +timeCreated: 1480316860 +licenseType: Pro +TextScriptImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Sprites/EmojiOne.png b/Assets/TextMesh Pro/Sprites/EmojiOne.png new file mode 100644 index 0000000..c0de66d Binary files /dev/null and b/Assets/TextMesh Pro/Sprites/EmojiOne.png differ diff --git a/Assets/TextMesh Pro/Sprites/EmojiOne.png.meta b/Assets/TextMesh Pro/Sprites/EmojiOne.png.meta new file mode 100644 index 0000000..c9fa1a7 --- /dev/null +++ b/Assets/TextMesh Pro/Sprites/EmojiOne.png.meta @@ -0,0 +1,431 @@ +fileFormatVersion: 2 +guid: dffef66376be4fa480fb02b19edbe903 +TextureImporter: + fileIDToRecycleName: + 21300000: EmojiOne_0 + 21300002: EmojiOne_1 + 21300004: EmojiOne_2 + 21300006: EmojiOne_3 + 21300008: EmojiOne_4 + 21300010: EmojiOne_6 + 21300012: EmojiOne_7 + 21300014: EmojiOne_8 + 21300016: EmojiOne_9 + 21300018: EmojiOne_10 + 21300020: EmojiOne_11 + 21300022: EmojiOne_12 + 21300024: EmojiOne_13 + 21300026: EmojiOne_5 + 21300028: EmojiOne_14 + externalObjects: {} + serializedVersion: 5 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 2 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 512 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: Standalone + maxTextureSize: 512 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: iPhone + maxTextureSize: 512 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: Android + maxTextureSize: 512 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: + - serializedVersion: 2 + name: EmojiOne_0 + rect: + serializedVersion: 2 + x: 0 + y: 384 + width: 128 + height: 128 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: 4bcc36da2108f2c4ba3de5c921d25c3c + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: EmojiOne_1 + rect: + serializedVersion: 2 + x: 128 + y: 384 + width: 128 + height: 128 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: e9eea8093eaeaee4d901c4553f572c22 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: EmojiOne_2 + rect: + serializedVersion: 2 + x: 256 + y: 384 + width: 128 + height: 128 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: 49451da35411dcc42a3692e39b0fde70 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: EmojiOne_3 + rect: + serializedVersion: 2 + x: 384 + y: 384 + width: 128 + height: 128 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: f65709664b924904790c850a50ca82bc + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: EmojiOne_4 + rect: + serializedVersion: 2 + x: 0 + y: 256 + width: 128 + height: 128 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: 5b92c568a5ec9ad4b9ed90e271f1c9a8 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: EmojiOne_6 + rect: + serializedVersion: 2 + x: 256 + y: 256 + width: 128 + height: 128 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: b10f2b48b7281594bb8a24a6511a35af + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: EmojiOne_7 + rect: + serializedVersion: 2 + x: 384 + y: 256 + width: 128 + height: 128 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: 10a600f9329dc2246a897e89f4d283cd + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: EmojiOne_8 + rect: + serializedVersion: 2 + x: 0 + y: 128 + width: 128 + height: 128 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: 66cffa363b90ab14787d8a5b90cf4502 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: EmojiOne_9 + rect: + serializedVersion: 2 + x: 128 + y: 128 + width: 128 + height: 128 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: 55cf3d409c9b89349b1e1bdc1cc224ad + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: EmojiOne_10 + rect: + serializedVersion: 2 + x: 256 + y: 128 + width: 128 + height: 128 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: 2a9e58eaf96feef42bcefa1cf257193f + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: EmojiOne_11 + rect: + serializedVersion: 2 + x: 384 + y: 128 + width: 128 + height: 128 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: 2489120affc155840ae6a7be2e93ce19 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: EmojiOne_12 + rect: + serializedVersion: 2 + x: 0 + y: 0 + width: 128 + height: 128 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: 412349a150598d14da4d7140df5c0286 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: EmojiOne_13 + rect: + serializedVersion: 2 + x: 128 + y: 0 + width: 128 + height: 128 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: a937464b42bb3634782dea34c6becb6c + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: EmojiOne_5 + rect: + serializedVersion: 2 + x: 256 + y: 0 + width: 128 + height: 128 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: b0f933b217682124dbfc5e6b89abe3d0 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: EmojiOne_14 + rect: + serializedVersion: 2 + x: 128 + y: 256 + width: 128 + height: 128 + alignment: 0 + pivot: {x: 0, y: 0} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: f7235c763afe4434e8bb666750a41096 + vertices: [] + indices: + edges: [] + weights: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 3e32d8f5477abfc43b19066e8ad5032e + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/manifest.json b/Packages/manifest.json index 8e51b88..79d2a34 100644 --- a/Packages/manifest.json +++ b/Packages/manifest.json @@ -13,6 +13,7 @@ "com.unity.test-framework": "1.1.30", "com.unity.textmeshpro": "2.1.6", "com.unity.timeline": "1.2.18", + "com.unity.toolchain.win-x86_64-linux-x86_64": "2.0.4", "com.unity.ugui": "1.0.0", "com.unity.modules.ai": "1.0.0", "com.unity.modules.androidjni": "1.0.0", diff --git a/Packages/packages-lock.json b/Packages/packages-lock.json index 68f44a3..917a13c 100644 --- a/Packages/packages-lock.json +++ b/Packages/packages-lock.json @@ -117,6 +117,22 @@ "dependencies": {}, "url": "https://packages.unity.com" }, + "com.unity.sysroot": { + "version": "2.0.5", + "depth": 1, + "source": "registry", + "dependencies": {}, + "url": "https://packages.unity.com" + }, + "com.unity.sysroot.linux-x86_64": { + "version": "2.0.4", + "depth": 1, + "source": "registry", + "dependencies": { + "com.unity.sysroot": "2.0.5" + }, + "url": "https://packages.unity.com" + }, "com.unity.test-framework": { "version": "1.1.30", "depth": 0, @@ -149,6 +165,16 @@ }, "url": "https://packages.unity.com" }, + "com.unity.toolchain.win-x86_64-linux-x86_64": { + "version": "2.0.4", + "depth": 0, + "source": "registry", + "dependencies": { + "com.unity.sysroot": "2.0.5", + "com.unity.sysroot.linux-x86_64": "2.0.4" + }, + "url": "https://packages.unity.com" + }, "com.unity.ugui": { "version": "1.0.0", "depth": 0, diff --git a/ProjectSettings/EditorBuildSettings.asset b/ProjectSettings/EditorBuildSettings.asset index 0147887..7047949 100644 --- a/ProjectSettings/EditorBuildSettings.asset +++ b/ProjectSettings/EditorBuildSettings.asset @@ -4,5 +4,11 @@ EditorBuildSettings: m_ObjectHideFlags: 0 serializedVersion: 2 - m_Scenes: [] + m_Scenes: + - enabled: 1 + path: Assets/Scenes/MainMenuScene.unity + guid: 259302c6bbed6234a948cfc4202af8f6 + - enabled: 1 + path: Assets/Scenes/PrototypeScene.unity + guid: 22fd93c991ecfed42a89b618f6cb386b m_configObjects: {} diff --git a/ProjectSettings/TagManager.asset b/ProjectSettings/TagManager.asset index 1c92a78..8e4cc4e 100644 --- a/ProjectSettings/TagManager.asset +++ b/ProjectSettings/TagManager.asset @@ -13,7 +13,7 @@ TagManager: - UI - - - - + - L_Player - - - @@ -41,3 +41,21 @@ TagManager: - name: Default uniqueID: 0 locked: 0 + - name: SL_Background + uniqueID: 615634947 + locked: 0 + - name: SL_BackFX + uniqueID: 564588061 + locked: 0 + - name: SL_Player + uniqueID: 662872267 + locked: 0 + - name: SL_FrontFX + uniqueID: 3802972149 + locked: 0 + - name: SL_UI + uniqueID: 801317867 + locked: 0 + - name: SL_Transition + uniqueID: 1794223569 + locked: 0