From d19a1dd13a6ac685657ff27abe8b1afc71e22566 Mon Sep 17 00:00:00 2001 From: cho0o0 Date: Sat, 28 Sep 2019 14:55:57 +0900 Subject: [PATCH 01/56] add ZH locale --- .../templates/zh.email.auth.confirm.tpl | 24 +++ .../templates/zh.email.auth.invitation.tpl | 27 +++ .../templates/zh.email.auth.recovery.tpl | 25 +++ app/config/locale/zh.continents.php | 11 + app/config/locale/zh.countries.php | 198 ++++++++++++++++++ app/config/locale/zh.php | 21 ++ app/init.php | 3 +- 7 files changed, 308 insertions(+), 1 deletion(-) create mode 100644 app/config/locale/templates/zh.email.auth.confirm.tpl create mode 100644 app/config/locale/templates/zh.email.auth.invitation.tpl create mode 100644 app/config/locale/templates/zh.email.auth.recovery.tpl create mode 100644 app/config/locale/zh.continents.php create mode 100644 app/config/locale/zh.countries.php create mode 100644 app/config/locale/zh.php diff --git a/app/config/locale/templates/zh.email.auth.confirm.tpl b/app/config/locale/templates/zh.email.auth.confirm.tpl new file mode 100644 index 000000000..a557d451c --- /dev/null +++ b/app/config/locale/templates/zh.email.auth.confirm.tpl @@ -0,0 +1,24 @@ + + +
+ {{name}} 你好, +
+
+ 请点击下方的链接验证你的电子邮箱地址。 +
+ {{redirect}} +
+
+ 如果你没有请求验证本邮箱,请忽略这份邮件。 +
+
+ 谢谢。 +
+ 来自 {{project}} +
\ No newline at end of file diff --git a/app/config/locale/templates/zh.email.auth.invitation.tpl b/app/config/locale/templates/zh.email.auth.invitation.tpl new file mode 100644 index 000000000..7ee56a401 --- /dev/null +++ b/app/config/locale/templates/zh.email.auth.invitation.tpl @@ -0,0 +1,27 @@ + + +
+ 你好, +
+
+ {{owner}}邀请您加入{{project}}项目的{{team}}小组。 +
+
+ 请点击下方的链接加入{{team}}小组: +
+ {{redirect}} +
+
+ 如果您没有加入该小组的计划,请忽略本邮件。 +
+
+ 谢谢。 +
+ 来自 {{project}} +
diff --git a/app/config/locale/templates/zh.email.auth.recovery.tpl b/app/config/locale/templates/zh.email.auth.recovery.tpl new file mode 100644 index 000000000..8a473b553 --- /dev/null +++ b/app/config/locale/templates/zh.email.auth.recovery.tpl @@ -0,0 +1,25 @@ + + +
+ {{name}} 你好, +
+
+ 请点击下方的链接重新设置{{project}}的密码。 + Follow this link to reset your {{project}} password. +
+ {{redirect}} +
+
+ 如果您未曾申请重设密码,请忽略本邮件。 +
+
+ 谢谢。 +
+ 来自 {{project}} +
diff --git a/app/config/locale/zh.continents.php b/app/config/locale/zh.continents.php new file mode 100644 index 000000000..625302189 --- /dev/null +++ b/app/config/locale/zh.continents.php @@ -0,0 +1,11 @@ + '非洲', + 'AN' => '南极洲', + 'AS' => '亚洲', + 'EU' => '欧洲', + 'NA' => '北美洲', + 'OC' => '大洋洲', + 'SA' => '南美洲', +]; diff --git a/app/config/locale/zh.countries.php b/app/config/locale/zh.countries.php new file mode 100644 index 000000000..c5c722458 --- /dev/null +++ b/app/config/locale/zh.countries.php @@ -0,0 +1,198 @@ + '阿富汗', + 'AO' => '安哥拉', + 'AL' => '阿尔巴尼亚', + 'AD' => '安道尔', + 'AE' => '阿拉伯联合酋长国', + 'AR' => '阿根廷', + 'AM' => '亚美尼亚', + 'AG' => '安提瓜和巴布达', + 'AU' => '澳大利亚', + 'AT' => '奥地利', + 'AZ' => '阿塞拜疆', + 'BI' => '布隆迪', + 'BE' => '比利时', + 'BJ' => '贝宁', + 'BF' => '布基纳法索', + 'BD' => '孟加拉国', + 'BG' => '保加利亚', + 'BH' => '巴林', + 'BS' => '巴哈马', + 'BA' => '波黑', + 'BY' => '白罗斯', + 'BZ' => '伯利兹', + 'BO' => '玻利维亚', + 'BR' => '巴西', + 'BB' => '巴巴多斯', + 'BN' => '文莱', + 'BT' => '不丹', + 'BW' => '博茨瓦纳', + 'CF' => '中非共和国', + 'CA' => '加拿大', + 'CH' => '瑞士', + 'CL' => '智利', + 'CN' => '中国', + 'CI' => '象牙海岸', + 'CM' => '喀麦隆', + 'CD' => '刚果民主共和国', + 'CG' => '刚果共和国', + 'CO' => '哥伦比亚', + 'KM' => '科摩', + 'CV' => '佛得角', + 'CR' => '哥斯达黎加', + 'CU' => '古巴', + 'CY' => '塞浦路斯', + 'CZ' => '捷克', + 'DE' => '德国', + 'DJ' => '吉布提', + 'DM' => '多米尼克', + 'DK' => '丹麦', + 'DO' => '多明尼加共和国', + 'DZ' => '阿尔及利亚', + 'EC' => '厄瓜多尔', + 'EG' => '埃及', + 'ER' => '厄立特里亚', + 'ES' => '西班牙', + 'EE' => '爱沙尼亚', + 'ET' => '埃塞俄比亚', + 'FI' => '芬兰', + 'FJ' => '斐济', + 'FR' => '法国', + 'FM' => '密克罗尼西亚', + 'GA' => '加蓬', + 'GB' => '英国', + 'GE' => '格鲁吉亚', + 'GH' => '加纳', + 'GN' => '几内亚', + 'GM' => '冈比亚', + 'GW' => '几内亚比绍', + 'GQ' => '赤道几内亚', + 'GR' => '希腊', + 'GD' => '格林纳达', + 'GT' => '危地马拉', + 'GY' => '圭亚那', + 'HN' => '洪都拉斯', + 'HR' => '克罗地亚', + 'HT' => '海地', + 'HU' => '匈牙利', + 'ID' => '印度尼西亚', + 'IN' => '印度', + 'IE' => '爱尔兰', + 'IR' => '伊朗', + 'IQ' => '伊拉克', + 'IS' => '冰岛', + 'IL' => '以色列', + 'IT' => '意大利', + 'JM' => '牙买加', + 'JO' => '约旦', + 'JP' => '日本', + 'KZ' => '哈萨克斯坦', + 'KE' => '肯尼亚', + 'KG' => '吉尔吉斯斯坦', + 'KH' => '柬埔寨', + 'KI' => '基里巴斯', + 'KN' => '圣基茨和尼维斯', + 'KR' => '韩国', + 'KW' => '科威特', + 'LA' => '老挝', + 'LB' => '黎巴嫩', + 'LR' => '利比里亚', + 'LY' => '利比亚', + 'LC' => '圣卢西亚', + 'LI' => '列支敦士登', + 'LK' => '斯里兰卡', + 'LS' => '莱索托', + 'LT' => '立陶宛', + 'LU' => '卢森堡', + 'LV' => '拉脱维亚', + 'MA' => '摩洛哥', + 'MC' => '摩纳哥', + 'MD' => '摩尔多瓦', + 'MG' => '马达加斯加', + 'MV' => '马尔代夫', + 'MX' => '墨西哥', + 'MH' => '马绍尔群岛', + 'MK' => '马其顿共和国', + 'ML' => '马里', + 'MT' => '马耳他', + 'MM' => '缅甸', + 'ME' => '黑山', + 'MN' => '蒙古', + 'MZ' => '莫桑比克', + 'MR' => '毛里塔尼亚', + 'MU' => '毛里求斯', + 'MW' => '马拉维', + 'MY' => '马来西亚', + 'NA' => '纳米比亚', + 'NE' => '尼日尔', + 'NG' => '尼日利亚', + 'NI' => '尼加拉瓜', + 'NL' => '荷兰', + 'NO' => '挪威', + 'NP' => '尼泊尔', + 'NR' => '瑙鲁', + 'NZ' => '新西兰', + 'OM' => '阿曼', + 'PK' => '巴基斯坦', + 'PA' => '巴拿马', + 'PE' => '秘鲁', + 'PH' => '菲律宾', + 'PW' => '帕劳', + 'PG' => '巴布亚新几内亚', + 'PL' => '波兰', + 'KP' => '北朝鲜', + 'PT' => '葡萄牙', + 'PY' => '巴拉圭', + 'QA' => '卡塔尔', + 'RO' => '罗马尼亚', + 'RU' => '俄罗斯', + 'RW' => '卢旺达', + 'SA' => '沙特阿拉伯', + 'SD' => '苏丹', + 'SN' => '塞内加尔', + 'SG' => '新加坡', + 'SB' => '所罗门群岛', + 'SL' => '塞拉利昂', + 'SV' => '萨尔瓦多', + 'SM' => '圣马力诺', + 'SO' => '索马里', + 'RS' => '塞尔维亚', + 'SS' => '南苏丹', + 'ST' => '圣多美和普林西比', + 'SR' => '苏里南', + 'SK' => '斯洛伐克', + 'SI' => '斯洛文尼亚', + 'SE' => '瑞典', + 'SZ' => '斯威士兰', + 'SC' => '塞舌尔', + 'SY' => '叙利亚', + 'TD' => '乍得', + 'TG' => '多哥', + 'TH' => '泰国', + 'TJ' => '塔吉克斯坦', + 'TM' => '土库曼斯坦', + 'TL' => '东帝汶', + 'TO' => '汤加', + 'TT' => '特立尼达和多巴哥', + 'TN' => '突尼斯', + 'TR' => '土耳其', + 'TV' => '图瓦卢', + 'TZ' => '坦桑尼亚', + 'UG' => '乌干达', + 'UA' => '乌克兰', + 'UY' => '乌拉圭', + 'US' => '美国', + 'UZ' => '乌兹别克斯', + 'VA' => '梵蒂冈', + 'VC' => '圣文森特和格林纳丁斯', + 'VE' => '委内瑞拉', + 'VN' => '越南', + 'VU' => '瓦努阿图', + 'WS' => '萨摩亚', + 'YE' => '也门', + 'ZA' => '南非', + 'ZM' => '赞比亚', + 'ZW' => '津巴布韦', +]; diff --git a/app/config/locale/zh.php b/app/config/locale/zh.php new file mode 100644 index 000000000..b4499416f --- /dev/null +++ b/app/config/locale/zh.php @@ -0,0 +1,21 @@ + '"懂得取舍,方显睿智。"', // This is the line printed in the homepage and console 'view-source' + 'settings.locale' => 'zh', + 'settings.direction' => 'ltr', + + // Service - Users + 'auth.emails.team' => '%s 小组', + 'auth.emails.confirm.title' => '账户确认', + 'auth.emails.confirm.body' => 'zh.email.auth.confirm.tpl', + 'auth.emails.recovery.title' => '重设密码', + 'auth.emails.recovery.body' => 'zh.email.auth.recovery.tpl', + 'auth.emails.invitation.title' => '邀请加入%s小组(%s)', // I used brackets to keep the order + 'auth.emails.invitation.body' => 'zh.email.auth.invitation.tpl', + + 'locale.country.unknown' => '未知', + + 'countries' => include 'zh.countries.php', + 'continents' => include 'zh.continents.php', +]; diff --git a/app/init.php b/app/init.php index fb23c9bdf..8f55ef455 100644 --- a/app/init.php +++ b/app/init.php @@ -24,7 +24,7 @@ const APP_EMAIL_TEAM = 'team@' . APP_DOMAIN; const APP_EMAIL_SECURITY = 'security@' . APP_DOMAIN; const APP_USERAGENT = APP_NAME . '-Server/%s Please report abuse at ' . APP_EMAIL_SECURITY; const APP_MODE_ADMIN = 'admin'; -const APP_LOCALES = ['en', 'he']; +const APP_LOCALES = ['en', 'he', 'zh']; const APP_PAGING_LIMIT = 15; $register = new Registry(); @@ -128,6 +128,7 @@ Locale::$exceptions = false; Locale::setLanguage('en', include __DIR__ . '/config/locale/en.php'); Locale::setLanguage('he', include __DIR__ . '/config/locale/he.php'); +Locale::setLanguage('zh', include __DIR__ . '/config/locale/zh.php'); if(in_array($locale, APP_LOCALES)) { Locale::setDefault($locale); From 09d47851211ef533d1d04eef80f53fe772805c99 Mon Sep 17 00:00:00 2001 From: Sandor Nagy Date: Tue, 1 Oct 2019 00:43:07 +0200 Subject: [PATCH 02/56] Added hungarian translations --- app/config/locale/hu.continents.php | 11 + app/config/locale/hu.countries.php | 198 ++++++++++++++++++ app/config/locale/hu.php | 21 ++ .../templates/hu.email.auth.confirm.tpl | 24 +++ .../templates/hu.email.auth.invitation.tpl | 27 +++ .../templates/hu.email.auth.recovery.tpl | 24 +++ docker-compose.yml | 140 ++++++------- 7 files changed, 370 insertions(+), 75 deletions(-) create mode 100644 app/config/locale/hu.continents.php create mode 100644 app/config/locale/hu.countries.php create mode 100644 app/config/locale/hu.php create mode 100644 app/config/locale/templates/hu.email.auth.confirm.tpl create mode 100644 app/config/locale/templates/hu.email.auth.invitation.tpl create mode 100644 app/config/locale/templates/hu.email.auth.recovery.tpl diff --git a/app/config/locale/hu.continents.php b/app/config/locale/hu.continents.php new file mode 100644 index 000000000..57a88d6f7 --- /dev/null +++ b/app/config/locale/hu.continents.php @@ -0,0 +1,11 @@ + 'Afrika', + 'AN' => 'Antarktika', + 'AS' => 'Ázsia', + 'EU' => 'Európa', + 'NA' => 'Észak-Amerika', + 'OC' => 'Óceánia', + 'SA' => 'Dél-Amerika', +]; diff --git a/app/config/locale/hu.countries.php b/app/config/locale/hu.countries.php new file mode 100644 index 000000000..949313c35 --- /dev/null +++ b/app/config/locale/hu.countries.php @@ -0,0 +1,198 @@ + 'Afganisztán', + 'AO' => 'Angola', + 'AL' => 'Albánia', + 'AD' => 'Andorra', + 'AE' => 'Egyesült Arab Emírségek', + 'AR' => 'Argentína', + 'AM' => 'Örményország', + 'AG' => 'Antigua és Barbuda', + 'AU' => 'Ausztrália', + 'AT' => 'Ausztria', + 'AZ' => 'Azerbajdzsán', + 'BI' => 'Burundi', + 'BE' => 'Belgium', + 'BJ' => 'Benin', + 'BF' => 'Burkina Faso', + 'BD' => 'Banglades', + 'BG' => 'Bulgaria', + 'BH' => 'Bahrein', + 'BS' => 'Bahamák', + 'BA' => 'Bosznia-Hercegovina', + 'BY' => 'Fehéroroszország', + 'BZ' => 'Belize', + 'BO' => 'Bolívia', + 'BR' => 'Brazília', + 'BB' => 'Barbadosz', + 'BN' => 'Brunei', + 'BT' => 'Bhután', + 'BW' => 'Botswana', + 'CF' => 'Közép-afrikai Köztársaság', + 'CA' => 'Kanada', + 'CH' => 'Svájc', + 'CL' => 'Chile', + 'CN' => 'Kína', + 'CI' => 'Elefántcsontpart', + 'CM' => 'Kamerun', + 'CD' => 'Kongói Demokratikus Köztársaság', + 'CG' => 'Kongói Köztársaság', + 'CO' => 'Kolumbia', + 'KM' => 'Comoros', + 'CV' => 'Zöld-foki Köztársaság', + 'CR' => 'Costa Rica', + 'CU' => 'Kuba', + 'CY' => 'Ciprus', + 'CZ' => 'Csehország', + 'DE' => 'Németország', + 'DJ' => 'Djibouti', + 'DM' => 'Dominika', + 'DK' => 'Dánia', + 'DO' => 'Dominikai Köztársaság', + 'DZ' => 'Algíria', + 'EC' => 'Ecuador', + 'EG' => 'Egyiptom', + 'ER' => 'Eritrea', + 'ES' => 'Spanyolország', + 'EE' => 'Észtország', + 'ET' => 'Etiópia', + 'FI' => 'Finnország', + 'FJ' => 'Fidzsi-szigetek', + 'FR' => 'Franciaország', + 'FM' => 'Mikronéziai Szövetségi Államok', + 'GA' => 'Gabon', + 'GB' => 'Egyesült Királyság', + 'GE' => 'Grúzia', + 'GH' => 'Ghána', + 'GN' => 'Guinea', + 'GM' => 'Gambia', + 'GW' => 'Guinea-Bissau', + 'GQ' => 'Egyenlítői-Guinea', + 'GR' => 'Görögország', + 'GD' => 'Grenada', + 'GT' => 'Guatemala', + 'GY' => 'Guyana', + 'HN' => 'Honduras', + 'HR' => 'Horvátország', + 'HT' => 'Haiti', + 'HU' => 'Magyarország', + 'ID' => 'Indonézia', + 'IN' => 'India', + 'IE' => 'Írország', + 'IR' => 'Irán', + 'IQ' => 'Iraq', + 'IS' => 'Izland', + 'IL' => 'Izrael', + 'IT' => 'Olaszország', + 'JM' => 'Jamaika', + 'JO' => 'Jordánia', + 'JP' => 'Japán', + 'KZ' => 'Kazakhsztán', + 'KE' => 'Kenya', + 'KG' => 'Kirgizisztán', + 'KH' => 'Kambodzsa', + 'KI' => 'Kiribati', + 'KN' => 'Saint Kitts és Nevis', + 'KR' => 'Dél Korea', + 'KW' => 'Kuwait', + 'LA' => 'Laosz', + 'LB' => 'Libanon', + 'LR' => 'Libéria', + 'LY' => 'Líbia', + 'LC' => 'Saint Lucia', + 'LI' => 'Liechtenstein', + 'LK' => 'Sri Lanka', + 'LS' => 'Lesotho', + 'LT' => 'Litvánia', + 'LU' => 'Luxembourg', + 'LV' => 'Lettország', + 'MA' => 'Marokkó', + 'MC' => 'Monaco', + 'MD' => 'Moldova', + 'MG' => 'Madagaszkár', + 'MV' => 'Maldív-szigetek', + 'MX' => 'Mexikó', + 'MH' => 'Marshall-szigetek', + 'MK' => 'Macedónia', + 'ML' => 'Mali', + 'MT' => 'Málta', + 'MM' => 'Mianmar', + 'ME' => 'Montenegró', + 'MN' => 'Mongólia', + 'MZ' => 'Mozambik', + 'MR' => 'Mauritánia', + 'MU' => 'Mauritius', + 'MW' => 'Malawi', + 'MY' => 'Malajzia', + 'NA' => 'Namíbia', + 'NE' => 'Niger', + 'NG' => 'Nigeria', + 'NI' => 'Nikaragua', + 'NL' => 'Hollandia', + 'NO' => 'Norvégia', + 'NP' => 'Nepál', + 'NR' => 'Nauru', + 'NZ' => 'Új-Zéland', + 'OM' => 'Omán', + 'PK' => 'Pakisztán', + 'PA' => 'Panama', + 'PE' => 'Peru', + 'PH' => 'Fülöp-szigetek', + 'PW' => 'Palau', + 'PG' => 'Pápua Új-Guinea', + 'PL' => 'Lengyelország', + 'KP' => 'Észak-Korea', + 'PT' => 'Portugália', + 'PY' => 'Paraguay', + 'QA' => 'Qatar', + 'RO' => 'Románia', + 'RU' => 'Oroszország', + 'RW' => 'Rwanda', + 'SA' => 'Szaúd-Arábia', + 'SD' => 'Szudán', + 'SN' => 'Szenegál', + 'SG' => 'Szingapúr', + 'SB' => 'Salamon-szigetek', + 'SL' => 'Sierra Leone', + 'SV' => 'El Salvador', + 'SM' => 'San Marino', + 'SO' => 'Szomália', + 'RS' => 'Szerbia', + 'SS' => 'Dél-Szudán', + 'ST' => 'São Tomé és Príncipe', + 'SR' => 'Szurinám', + 'SK' => 'Szlovákia', + 'SI' => 'Szlovénia', + 'SE' => 'Svédország', + 'SZ' => 'Swaziland', + 'SC' => 'Seychelles-szigetek', + 'SY' => 'Szíria', + 'TD' => 'Csád', + 'TG' => 'Togo', + 'TH' => 'Tájföld', + 'TJ' => 'Tádzsikisztán', + 'TM' => 'Türkmenisztán', + 'TL' => 'Timor-Leste', + 'TO' => 'Tonga', + 'TT' => 'Trinidad és Tobago', + 'TN' => 'Tunézia', + 'TR' => 'Törökország', + 'TV' => 'Tuvalu', + 'TZ' => 'Tanzania', + 'UG' => 'Uganda', + 'UA' => 'Ukraina', + 'UY' => 'Uruguay', + 'US' => 'Egyesült Államok', + 'UZ' => 'Üzbegisztán', + 'VA' => 'Vatikánváros', + 'VC' => 'Saint Vincent és a Grenadine-szigetek', + 'VE' => 'Venezuela', + 'VN' => 'Vietnám', + 'VU' => 'Vanuatu', + 'WS' => 'Szamoa', + 'YE' => 'Yemen', + 'ZA' => 'Dél-Afrikai Köztársaság', + 'ZM' => 'Zambia', + 'ZW' => 'Zimbabwe', +]; diff --git a/app/config/locale/hu.php b/app/config/locale/hu.php new file mode 100644 index 000000000..a4ca49b5c --- /dev/null +++ b/app/config/locale/hu.php @@ -0,0 +1,21 @@ + '"The art of being wise is the art of knowing what to overlook."', // This is the line printed in the homepage and console 'view-source' + 'settings.locale' => 'hu', + 'settings.direction' => 'ltr', + + // Service - Users + 'auth.emails.team' => '%s Csapat', + 'auth.emails.confirm.title' => 'Fiók megerősítés', + 'auth.emails.confirm.body' => 'hu.email.auth.confirm.tpl', + 'auth.emails.recovery.title' => 'Jelszó Visszaállítás', + 'auth.emails.recovery.body' => 'hu.email.auth.recovery.tpl', + 'auth.emails.invitation.title' => 'Meghívás a %s Csapathoz %s', + 'auth.emails.invitation.body' => 'hu.email.auth.invitation.tpl', + + 'locale.country.unknown' => 'Ismeretlen', + + 'countries' => include 'hu.countries.php', + 'continents' => include 'hu.continents.php', +]; diff --git a/app/config/locale/templates/hu.email.auth.confirm.tpl b/app/config/locale/templates/hu.email.auth.confirm.tpl new file mode 100644 index 000000000..680e0da2e --- /dev/null +++ b/app/config/locale/templates/hu.email.auth.confirm.tpl @@ -0,0 +1,24 @@ + + +
+ Szia {{name}}, +
+
+ Kattints erre a linkre, hogy megerősítsd az e-mail címed. +
+ {{redirect}} +
+
+ Ha nem kérelmezted, hogy megerősítsük ezt a címet, ignoráld ezt a levelet. +
+
+ Köszönettel, +
+ {{project}} csapat +
diff --git a/app/config/locale/templates/hu.email.auth.invitation.tpl b/app/config/locale/templates/hu.email.auth.invitation.tpl new file mode 100644 index 000000000..6dce55a63 --- /dev/null +++ b/app/config/locale/templates/hu.email.auth.invitation.tpl @@ -0,0 +1,27 @@ + + +
+ Szia, +
+
+ Azért küldtük ezt az e-mailt {{owner}} mert meg szeretnénk hívni a {{team}} csapatba a következő projektre {{project}}. +
+
+ Kattints erre a linkre, hogy a {{team}} csapat tagja legyél: +
+ {{redirect}} +
+
+ Ha nem vegy ebben érdekelt ignoráld ezt az üzenetet. +
+
+ Köszönettel, +
+ {{project}} csapat +
diff --git a/app/config/locale/templates/hu.email.auth.recovery.tpl b/app/config/locale/templates/hu.email.auth.recovery.tpl new file mode 100644 index 000000000..564d55bd0 --- /dev/null +++ b/app/config/locale/templates/hu.email.auth.recovery.tpl @@ -0,0 +1,24 @@ + + +
+ Szia {{name}}, +
+
+ Kattints erre a linkre, hogy visszaállítsuk a {{project}} jelszavad. +
+ {{redirect}} +
+
+ Ha nem kérvényezted, hogy visszaállítsuk a jelszavad ignoráld ezt a levelet. +
+
+ Köszönettel, +
+ {{project}} csapat +
diff --git a/docker-compose.yml b/docker-compose.yml index c45a3294f..979800482 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,81 +1,71 @@ -version: '3' +version: "3" services: - appwrite: - build: . - restart: unless-stopped - volumes: - - ./app:/usr/share/nginx/html/app - - ./public:/usr/share/nginx/html/public - - ./src:/usr/share/nginx/html/src - - ./vendor:/usr/share/nginx/html/vendor - - ./docker/nginx.conf:/etc/nginx/nginx.conf:rw - - ./storage/uploads:/storage/uploads:rw - - ./storage/cache:/storage/cache:rw - ports: - - "80:80" - - "443:443" - depends_on: - - mariadb - - redis - - smtp - - clamav - - influxdb - - telegraf - environment: - - _APP_ENV=development - - _APP_OPENSSL_KEY_V1=your-secret-key - - _APP_REDIS_HOST=redis - - _APP_REDIS_PORT=6379 - - _APP_DB_HOST=mariadb - - _APP_DB_PORT=3306 - - _APP_DB_SCHEMA=appwrite - - _APP_DB_USER=user - - _APP_DB_PASS=password - - _APP_INFLUXDB_HOST=influxdb - - _APP_INFLUXDB_PORT=8086 - - _APP_STATSD_HOST=telegraf - - _APP_STATSD_PORT=8125 - - mariadb: - image: appwrite/mariadb:1.0.0 # fix issues when upgrading using: mysql_upgrade -u root -p - restart: unless-stopped - environment: - - MYSQL_ROOT_PASSWORD=rootsecretpassword - - MYSQL_DATABASE=appwrite - - MYSQL_USER=user - - MYSQL_PASSWORD=password - volumes: - - ./storage/db:/var/lib/mysql:rw - ports: - - 3306:3306/tcp + appwrite: + image: appwrite/appwrite + restart: unless-stopped + volumes: + - ./storage:/storage:rw + ports: + - "80:80" + depends_on: + - mariadb + - redis + - smtp + - clamav + - influxdb + - telegraf + environment: + - _APP_ENV=development + - _APP_OPENSSL_KEY_V1=your-secret-key + - _APP_REDIS_HOST=redis + - _APP_REDIS_PORT=6379 + - _APP_DB_HOST=mariadb + - _APP_DB_PORT=3306 + - _APP_DB_SCHEMA=appwrite + - _APP_DB_USER=root + - _APP_DB_PASS=password + - _APP_INFLUXDB_HOST=influxdb + - _APP_INFLUXDB_PORT=8086 + - _APP_STATSD_HOST=telegraf + - _APP_STATSD_PORT=8125 - smtp: - image: appwrite/smtp:1.0.0 - environment: - - MAILNAME=appwrite - - RELAY_NETWORKS=:192.168.0.0/24:10.0.0.0/16 - ports: - - "25:25" + mariadb: + image: appwrite/mariadb:1.0.0 + restart: unless-stopped + environment: + - MYSQL_ROOT_PASSWORD=password + volumes: + - ./storage/db:/var/lib/mysql:rw + ports: + - 3306:3306/tcp - clamav: - image: appwrite/clamav:1.0.4 - restart: unless-stopped - volumes: - - ./storage:/storage:rw - - redis: - image: redis:5.0 - restart: unless-stopped + smtp: + image: appwrite/smtp:1.0.0 + environment: + - MAILNAME=appwrite + - RELAY_NETWORKS=:192.168.0.0/24:10.0.0.0/16 + ports: + - "25:25" - influxdb: - image: influxdb:1.6 - volumes: - - ./storage/influxdb:/var/lib/influxdb - ports: - - "8086:8086" + clamav: + image: appwrite/clamav:1.0.4 + restart: unless-stopped + volumes: + - ./storage:/storage:rw + + redis: + image: redis:5.0 + restart: unless-stopped - telegraf: - image: appwrite/telegraf:1.0.0 - ports: - - "8125:8125/udp" \ No newline at end of file + influxdb: + image: influxdb:1.6 + volumes: + - ./storage/influxdb:/var/lib/influxdb + ports: + - "8086:8086" + + telegraf: + image: appwrite/telegraf:1.0.0 + ports: + - "8125:8125/udp" \ No newline at end of file From a069aabc6354951f02e64dd8207cb7546d822052 Mon Sep 17 00:00:00 2001 From: Mattia Panzeri Date: Tue, 1 Oct 2019 01:09:55 +0200 Subject: [PATCH 03/56] Improve IT translations --- app/config/locale/it.countries.php | 388 +++++++++--------- app/config/locale/it.php | 11 +- .../templates/it.email.auth.confirm.tpl | 2 +- .../templates/it.email.auth.invitation.tpl | 6 +- .../templates/it.email.auth.recovery.tpl | 4 +- 5 files changed, 207 insertions(+), 204 deletions(-) diff --git a/app/config/locale/it.countries.php b/app/config/locale/it.countries.php index 6d539332a..1afb65947 100644 --- a/app/config/locale/it.countries.php +++ b/app/config/locale/it.countries.php @@ -2,197 +2,197 @@ return [ 'AF' => 'Afghanistan', - 'AO' => 'Angola', - 'AL' => 'Albania', - 'AD' => 'Andorra', - 'AE' => 'Emirati Arabi Uniti', - 'AR' => 'Argentina', - 'AM' => 'Armenia', - 'AG' => 'Antigua e Barbuda', - 'AU' => 'Australia', - 'AT' => 'Austria', - 'AZ' => 'Azerbaigian', - 'BI' => 'Burundi', - 'BE' => 'Belgio', - 'BJ' => 'Benin', - 'BF' => 'Burkina Faso', - 'BD' => 'Bangladesh', - 'BG' => 'Bulgaria', - 'BH' => 'Bahrein', - 'BS' => 'Bahamas', - "BA" => "Bosnia ed Erzegovina", - 'BY' => 'Bielorussia', - 'BZ' => 'Belize', - 'BO' => 'Bolivia', - 'BR' => 'Brasile', - 'BB' => 'Barbados', - 'BN' => 'Brunei', - 'BT' => 'Bhutan', - 'BW' => 'Botswana', - "CF" => "Repubblica centrafricana", - 'CA' => 'Canada', - 'CH' => 'Svizzera', - 'CL' => 'Cile', - 'CN' => 'Cina', - 'CI' => 'Costa d\'Avorio', - 'CM' => 'Camerun', - 'CD' => 'DR Congo', - 'CG' => 'Repubblica del Congo', - 'CO' => 'Colombia', - 'KM' => 'Comore', - 'CV' => 'Capo Verde', - 'CR' => 'Costa Rica', - 'CU' => 'Cuba', - 'CY' => 'Cipro', - 'CZ' => 'Czechia', - 'DE' => 'Germania', - 'DJ' => 'Gibuti', - 'DM' => 'Dominica', - 'DK' => 'Danimarca', - 'DO' => 'Repubblica Dominicana', - 'DZ' => 'Algeria', - 'EC' => 'Ecuador', - 'EG' => 'Egitto', - 'ER' => 'Eritrea', - 'ES' => 'Spagna', - 'EE' => 'Estonia', - 'ET' => 'Etiopia', - 'FI' => 'Finlandia', - 'FJ' => 'Figi', - 'FR' => 'France', - 'FM' => 'Micronesia', - 'GA' => 'Gabon', - 'GB' => 'Regno Unito', - 'GE' => 'Georgia', - 'GH' => 'Ghana', - 'GN' => 'Guinea', - 'GM' => 'Gambia', - 'GW' => 'Guinea-Bissau', - 'GQ' => 'Guinea equatoriale', - 'GR' => 'Grecia', - 'GD' => 'Grenada', - 'GT' => 'Guatemala', - 'GY' => 'Guyana', - 'HN' => 'Honduras', - 'HR' => 'Croazia', - 'HT' => 'Haiti', - 'HU' => 'Ungheria', - 'ID' => 'Indonesia', - 'IN' => 'India', - 'IE' => 'Irlanda', - 'IR' => 'Iran', - 'IQ' => 'Iraq', - 'IS' => 'Islanda', - 'IL' => 'Israele', - 'IT' => 'Italia', - 'JM' => 'Giamaica', - 'JO' => 'Jordan', - 'JP' => 'Giappone', - 'KZ' => 'Kazakistan', - 'KE' => 'Kenya', - 'KG' => 'Kirghizistan', - 'KH' => 'Cambogia', - 'KI' => 'Kiribati', - 'KN' => 'Saint Kitts e Nevis', - "KR" => "Corea del Sud", - 'KW' => 'Kuwait', - 'LA' => 'Laos', - 'LB' => 'Libano', - 'LR' => 'Liberia', - 'LY' => 'Libia', - 'LC' => 'Santa Lucia', - 'LI' => 'Liechtenstein', - 'LK' => 'Sri Lanka', - 'LS' => 'Lesotho', - 'LT' => 'Lituania', - 'LU' => 'Lussemburgo', - 'LV' => 'Lettonia', - 'MA' => 'Marocco', - 'MC' => 'Monaco', - 'MD' => 'Moldavia', - 'MG' => 'Madagascar', - 'MV' => 'Maldive', - 'MX' => 'Messico', - 'MH' => 'Isole Marshall', - 'MK' => 'Macedonia', - 'ML' => 'Mali', - 'MT' => 'Malta', - 'MM' => 'Myanmar', - 'ME' => 'Montenegro', - 'MN' => 'Mongolia', - 'MZ' => 'Mozambico', - 'MR' => 'Mauritania', - 'MU' => 'Mauritius', - 'MW' => 'Malawi', - 'MY' => 'Malaysia', - 'NA' => 'Namibia', - 'NE' => 'Niger', - 'NG' => 'Nigeria', - 'NI' => 'Nicaragua', - 'NL' => 'Paesi Bassi', - 'NO' => 'Norvegia', - 'NP' => 'Nepal', - 'NR' => 'Nauru', - 'NZ' => 'Nuova Zelanda', - 'OM' => 'Oman', - 'PK' => 'Pakistan', - 'PA' => 'Panama', - 'PE' => 'Perù', - 'PH' => 'Filippine', - 'PW' => 'Palau', - 'PG' => 'Papua New Guinea', - 'PL' => 'Polonia', - 'KP' => 'Corea del Nord', - 'PT' => 'Portogallo', - 'PY' => 'Paraguay', - 'QA' => 'Qatar', - 'RO' => 'Romania', - 'RU' => 'Russia', - 'RW' => 'Ruanda', - 'SA' => 'Arabia Saudita', - 'SD' => 'Sudan', - 'SN' => 'Senegal', - 'SG' => 'Singapore', - 'SB' => 'Isole Salomone', - 'SL' => 'Sierra Leone', - 'SV' => 'El Salvador', - 'SM' => 'San Marino', - 'SO' => 'Somalia', - 'RS' => 'Serbia', - 'SS' => 'Sudan del Sud', - 'ST' => 'São Tomé and Príncipe', - 'SR' => 'Suriname', - 'SK' => 'Slovacchia', - 'SI' => 'Slovenia', - 'SE' => 'Svezia', - 'SZ' => 'Swaziland', - 'SC' => 'Seychelles', - 'SY' => 'Siria', - 'TD' => 'Chad', - 'TG' => 'Togo', - 'TH' => 'Thailand', - 'TJ' => 'Tagikistan', - 'TM' => 'Turkmenistan', - 'TL' => 'Timor Est', - 'TO' => 'Tonga', - 'TT' => 'Trinidad e Tobago', - 'TN' => 'Tunisia', - 'TR' => 'Turchia', - 'TV' => 'Tuvalu', - 'TZ' => 'Tanzania', - 'UG' => 'Uganda', - 'UA' => 'Ucraina', - 'UY' => 'Uruguay', - 'US' => 'Stati Uniti', - 'UZ' => 'Uzbekistan', - 'VA' => 'Città del Vaticano', - 'VC' => 'Saint Vincent e Grenadine', - 'VE' => 'Venezuela', - 'VN' => 'Vietnam', - 'VU' => 'Vanuatu', - 'WS' => 'Samoa', - 'YE' => 'Yemen', - 'ZA' => 'Sudafrica', - 'ZM' => 'Zambia', - 'ZW' => 'Zimbabwe', -]; \ No newline at end of file + 'AO' => 'Angola', + 'AL' => 'Albania', + 'AD' => 'Andorra', + 'AE' => 'Emirati Arabi Uniti', + 'AR' => 'Argentina', + 'AM' => 'Armenia', + 'AG' => 'Antigua e Barbuda', + 'AU' => 'Australia', + 'AT' => 'Austria', + 'AZ' => 'Azerbaigian', + 'BI' => 'Burundi', + 'BE' => 'Belgio', + 'BJ' => 'Benin', + 'BF' => 'Burkina Faso', + 'BD' => 'Bangladesh', + 'BG' => 'Bulgaria', + 'BH' => 'Bahrein', + 'BS' => 'Bahamas', + "BA" => "Bosnia ed Erzegovina", + 'BY' => 'Bielorussia', + 'BZ' => 'Belize', + 'BO' => 'Bolivia', + 'BR' => 'Brasile', + 'BB' => 'Barbados', + 'BN' => 'Brunei', + 'BT' => 'Bhutan', + 'BW' => 'Botswana', + "CF" => "Repubblica Centrafricana", + 'CA' => 'Canada', + 'CH' => 'Svizzera', + 'CL' => 'Cile', + 'CN' => 'Cina', + 'CI' => 'Costa d\'Avorio', + 'CM' => 'Camerun', + 'CD' => 'Repubblica Democratica del Congo', + 'CG' => 'Repubblica del Congo', + 'CO' => 'Colombia', + 'KM' => 'Unione delle Comore', + 'CV' => 'Capo Verde', + 'CR' => 'Costa Rica', + 'CU' => 'Cuba', + 'CY' => 'Cipro', + 'CZ' => 'Repubblica Ceca', + 'DE' => 'Germania', + 'DJ' => 'Gibuti', + 'DM' => 'Dominica', + 'DK' => 'Danimarca', + 'DO' => 'Repubblica Dominicana', + 'DZ' => 'Algeria', + 'EC' => 'Ecuador', + 'EG' => 'Egitto', + 'ER' => 'Eritrea', + 'ES' => 'Spagna', + 'EE' => 'Estonia', + 'ET' => 'Etiopia', + 'FI' => 'Finlandia', + 'FJ' => 'Figi', + 'FR' => 'Francia', + 'FM' => 'Micronesia', + 'GA' => 'Gabon', + 'GB' => 'Regno Unito', + 'GE' => 'Georgia', + 'GH' => 'Ghana', + 'GN' => 'Guinea', + 'GM' => 'Gambia', + 'GW' => 'Guinea-Bissau', + 'GQ' => 'Guinea equatoriale', + 'GR' => 'Grecia', + 'GD' => 'Grenada', + 'GT' => 'Guatemala', + 'GY' => 'Guyana', + 'HN' => 'Honduras', + 'HR' => 'Croazia', + 'HT' => 'Haiti', + 'HU' => 'Ungheria', + 'ID' => 'Indonesia', + 'IN' => 'India', + 'IE' => 'Irlanda', + 'IR' => 'Iran', + 'IQ' => 'Iraq', + 'IS' => 'Islanda', + 'IL' => 'Israele', + 'IT' => 'Italia', + 'JM' => 'Giamaica', + 'JO' => 'Jordan', + 'JP' => 'Giappone', + 'KZ' => 'Kazakistan', + 'KE' => 'Kenya', + 'KG' => 'Kirghizistan', + 'KH' => 'Cambogia', + 'KI' => 'Kiribati', + 'KN' => 'Saint Kitts e Nevis', + "KR" => "Corea del Sud", + 'KW' => 'Kuwait', + 'LA' => 'Laos', + 'LB' => 'Libano', + 'LR' => 'Liberia', + 'LY' => 'Libia', + 'LC' => 'Santa Lucia', + 'LI' => 'Liechtenstein', + 'LK' => 'Sri Lanka', + 'LS' => 'Lesotho', + 'LT' => 'Lituania', + 'LU' => 'Lussemburgo', + 'LV' => 'Lettonia', + 'MA' => 'Marocco', + 'MC' => 'Monaco', + 'MD' => 'Moldavia', + 'MG' => 'Madagascar', + 'MV' => 'Maldive', + 'MX' => 'Messico', + 'MH' => 'Isole Marshall', + 'MK' => 'Macedonia', + 'ML' => 'Mali', + 'MT' => 'Malta', + 'MM' => 'Myanmar', + 'ME' => 'Montenegro', + 'MN' => 'Mongolia', + 'MZ' => 'Mozambico', + 'MR' => 'Mauritania', + 'MU' => 'Mauritius', + 'MW' => 'Malawi', + 'MY' => 'Malaysia', + 'NA' => 'Namibia', + 'NE' => 'Niger', + 'NG' => 'Nigeria', + 'NI' => 'Nicaragua', + 'NL' => 'Paesi Bassi', + 'NO' => 'Norvegia', + 'NP' => 'Nepal', + 'NR' => 'Nauru', + 'NZ' => 'Nuova Zelanda', + 'OM' => 'Oman', + 'PK' => 'Pakistan', + 'PA' => 'Panama', + 'PE' => 'Perù', + 'PH' => 'Filippine', + 'PW' => 'Palau', + 'PG' => 'Papua Nuova Guinea', + 'PL' => 'Polonia', + 'KP' => 'Corea del Nord', + 'PT' => 'Portogallo', + 'PY' => 'Paraguay', + 'QA' => 'Qatar', + 'RO' => 'Romania', + 'RU' => 'Russia', + 'RW' => 'Ruanda', + 'SA' => 'Arabia Saudita', + 'SD' => 'Sudan', + 'SN' => 'Senegal', + 'SG' => 'Singapore', + 'SB' => 'Isole Salomone', + 'SL' => 'Sierra Leone', + 'SV' => 'El Salvador', + 'SM' => 'San Marino', + 'SO' => 'Somalia', + 'RS' => 'Serbia', + 'SS' => 'Sudan del Sud', + 'ST' => 'São Tomé e Príncipe', + 'SR' => 'Suriname', + 'SK' => 'Slovacchia', + 'SI' => 'Slovenia', + 'SE' => 'Svezia', + 'SZ' => 'Swaziland', + 'SC' => 'Seychelles', + 'SY' => 'Siria', + 'TD' => 'Chad', + 'TG' => 'Togo', + 'TH' => 'Thailand', + 'TJ' => 'Tagikistan', + 'TM' => 'Turkmenistan', + 'TL' => 'Timor Est', + 'TO' => 'Tonga', + 'TT' => 'Trinidad e Tobago', + 'TN' => 'Tunisia', + 'TR' => 'Turchia', + 'TV' => 'Tuvalu', + 'TZ' => 'Tanzania', + 'UG' => 'Uganda', + 'UA' => 'Ucraina', + 'UY' => 'Uruguay', + 'US' => 'Stati Uniti', + 'UZ' => 'Uzbekistan', + 'VA' => 'Città del Vaticano', + 'VC' => 'Saint Vincent e Grenadine', + 'VE' => 'Venezuela', + 'VN' => 'Vietnam', + 'VU' => 'Vanuatu', + 'WS' => 'Samoa', + 'YE' => 'Yemen', + 'ZA' => 'Sudafrica', + 'ZM' => 'Zambia', + 'ZW' => 'Zimbabwe', +]; diff --git a/app/config/locale/it.php b/app/config/locale/it.php index 071a17b8f..4be58ed8b 100644 --- a/app/config/locale/it.php +++ b/app/config/locale/it.php @@ -4,15 +4,18 @@ return [ 'settings.inspire' => '"L\'arte di essere saggi è l\'arte di sapere cosa trascurare."', // Questa è la riga stampata nella homepage e nella console 'view-source' 'settings.locale' => 'it', 'settings.direction' => 'ltr', + // Servizio - Utenti - 'auth.emails.team' => '%s Squadra', + 'auth.emails.team' => 'Team %s', 'auth.emails.confirm.title' => 'Conferma dell\'account', 'auth.emails.confirm.body' => 'en.email.auth.confirm.tpl', - 'auth.emails.recovery.title' => 'Reimpostazione della password', + 'auth.emails.recovery.title' => 'Recupero password', 'auth.emails.recovery.body' => 'en.email.auth.recovery.tpl', - 'auth.emails.invitation.title' => 'Invito a %s squadra %s', + 'auth.emails.invitation.title' => 'Invito al team %s di %s', 'auth.emails.invitation.body' => 'en.email.auth.invitation.tpl', + 'locale.country.unknown' => 'Sconosciuto', + 'countries' => include 'it.countries.php', 'continents' => include 'it.continents.php', -]; \ No newline at end of file +]; diff --git a/app/config/locale/templates/it.email.auth.confirm.tpl b/app/config/locale/templates/it.email.auth.confirm.tpl index 8106722d8..fedbe8018 100644 --- a/app/config/locale/templates/it.email.auth.confirm.tpl +++ b/app/config/locale/templates/it.email.auth.confirm.tpl @@ -21,5 +21,5 @@
Grazie,
- {{project}} squadra + Il team di {{project}} \ No newline at end of file diff --git a/app/config/locale/templates/it.email.auth.invitation.tpl b/app/config/locale/templates/it.email.auth.invitation.tpl index be7becac4..9ec03cf39 100644 --- a/app/config/locale/templates/it.email.auth.invitation.tpl +++ b/app/config/locale/templates/it.email.auth.invitation.tpl @@ -11,10 +11,10 @@ Ciao,

- Questa mail ti stata inviata perch {{owner}} volevo invitarti a diventare un membro del team al {{team}} squadra a {{project}}. + Questa mail ti è stata inviata perchè {{owner}} vuole invitarti a diventare un membro del team {{team}} del progetto {{project}}.

- Segui questo link per unirti a {{team}} squadra: + Segui questo link per unirti al team {{team}}:
{{redirect}}
@@ -24,5 +24,5 @@
Grazie,
- {{project}} squadra + Il team di {{project}} \ No newline at end of file diff --git a/app/config/locale/templates/it.email.auth.recovery.tpl b/app/config/locale/templates/it.email.auth.recovery.tpl index 6a5adb5cb..2756b1569 100644 --- a/app/config/locale/templates/it.email.auth.recovery.tpl +++ b/app/config/locale/templates/it.email.auth.recovery.tpl @@ -10,7 +10,7 @@ Ciao {{name}},

- Segui questo link per reimpostare la tua {{project}} password. + Segui questo link per reimpostare la tua password per {{project}}.
{{redirect}}
@@ -20,5 +20,5 @@
Grazie,
- {{project}} squadra + Il team di {{project}} \ No newline at end of file From 03537f2f399ab7fe29349a9854fff82e9a20f65d Mon Sep 17 00:00:00 2001 From: Mattia Panzeri Date: Tue, 1 Oct 2019 10:13:22 +0200 Subject: [PATCH 04/56] Fix PR conflicts --- app/config/locale/it.continents.php | 18 +- app/config/locale/it.countries.php | 396 ++++++++++++++-------------- app/config/locale/it.php | 42 +-- 3 files changed, 228 insertions(+), 228 deletions(-) diff --git a/app/config/locale/it.continents.php b/app/config/locale/it.continents.php index 22672575b..c69f11e5e 100644 --- a/app/config/locale/it.continents.php +++ b/app/config/locale/it.continents.php @@ -1,10 +1,10 @@ - 'Africa', - 'AN' => 'Antartide', - 'AS' => 'Asia', - 'EU' => 'Europa', - 'NA' => 'Nord America', - 'OC' => 'Oceania', - 'SA' => 'Sud America', + 'Africa', + 'AN' => 'Antartide', + 'AS' => 'Asia', + 'EU' => 'Europa', + 'NA' => 'Nord America', + 'OC' => 'Oceania', + 'SA' => 'Sud America', ]; \ No newline at end of file diff --git a/app/config/locale/it.countries.php b/app/config/locale/it.countries.php index 1afb65947..23a37e273 100644 --- a/app/config/locale/it.countries.php +++ b/app/config/locale/it.countries.php @@ -1,198 +1,198 @@ - 'Afghanistan', - 'AO' => 'Angola', - 'AL' => 'Albania', - 'AD' => 'Andorra', - 'AE' => 'Emirati Arabi Uniti', - 'AR' => 'Argentina', - 'AM' => 'Armenia', - 'AG' => 'Antigua e Barbuda', - 'AU' => 'Australia', - 'AT' => 'Austria', - 'AZ' => 'Azerbaigian', - 'BI' => 'Burundi', - 'BE' => 'Belgio', - 'BJ' => 'Benin', - 'BF' => 'Burkina Faso', - 'BD' => 'Bangladesh', - 'BG' => 'Bulgaria', - 'BH' => 'Bahrein', - 'BS' => 'Bahamas', - "BA" => "Bosnia ed Erzegovina", - 'BY' => 'Bielorussia', - 'BZ' => 'Belize', - 'BO' => 'Bolivia', - 'BR' => 'Brasile', - 'BB' => 'Barbados', - 'BN' => 'Brunei', - 'BT' => 'Bhutan', - 'BW' => 'Botswana', - "CF" => "Repubblica Centrafricana", - 'CA' => 'Canada', - 'CH' => 'Svizzera', - 'CL' => 'Cile', - 'CN' => 'Cina', - 'CI' => 'Costa d\'Avorio', - 'CM' => 'Camerun', - 'CD' => 'Repubblica Democratica del Congo', - 'CG' => 'Repubblica del Congo', - 'CO' => 'Colombia', - 'KM' => 'Unione delle Comore', - 'CV' => 'Capo Verde', - 'CR' => 'Costa Rica', - 'CU' => 'Cuba', - 'CY' => 'Cipro', - 'CZ' => 'Repubblica Ceca', - 'DE' => 'Germania', - 'DJ' => 'Gibuti', - 'DM' => 'Dominica', - 'DK' => 'Danimarca', - 'DO' => 'Repubblica Dominicana', - 'DZ' => 'Algeria', - 'EC' => 'Ecuador', - 'EG' => 'Egitto', - 'ER' => 'Eritrea', - 'ES' => 'Spagna', - 'EE' => 'Estonia', - 'ET' => 'Etiopia', - 'FI' => 'Finlandia', - 'FJ' => 'Figi', - 'FR' => 'Francia', - 'FM' => 'Micronesia', - 'GA' => 'Gabon', - 'GB' => 'Regno Unito', - 'GE' => 'Georgia', - 'GH' => 'Ghana', - 'GN' => 'Guinea', - 'GM' => 'Gambia', - 'GW' => 'Guinea-Bissau', - 'GQ' => 'Guinea equatoriale', - 'GR' => 'Grecia', - 'GD' => 'Grenada', - 'GT' => 'Guatemala', - 'GY' => 'Guyana', - 'HN' => 'Honduras', - 'HR' => 'Croazia', - 'HT' => 'Haiti', - 'HU' => 'Ungheria', - 'ID' => 'Indonesia', - 'IN' => 'India', - 'IE' => 'Irlanda', - 'IR' => 'Iran', - 'IQ' => 'Iraq', - 'IS' => 'Islanda', - 'IL' => 'Israele', - 'IT' => 'Italia', - 'JM' => 'Giamaica', - 'JO' => 'Jordan', - 'JP' => 'Giappone', - 'KZ' => 'Kazakistan', - 'KE' => 'Kenya', - 'KG' => 'Kirghizistan', - 'KH' => 'Cambogia', - 'KI' => 'Kiribati', - 'KN' => 'Saint Kitts e Nevis', - "KR" => "Corea del Sud", - 'KW' => 'Kuwait', - 'LA' => 'Laos', - 'LB' => 'Libano', - 'LR' => 'Liberia', - 'LY' => 'Libia', - 'LC' => 'Santa Lucia', - 'LI' => 'Liechtenstein', - 'LK' => 'Sri Lanka', - 'LS' => 'Lesotho', - 'LT' => 'Lituania', - 'LU' => 'Lussemburgo', - 'LV' => 'Lettonia', - 'MA' => 'Marocco', - 'MC' => 'Monaco', - 'MD' => 'Moldavia', - 'MG' => 'Madagascar', - 'MV' => 'Maldive', - 'MX' => 'Messico', - 'MH' => 'Isole Marshall', - 'MK' => 'Macedonia', - 'ML' => 'Mali', - 'MT' => 'Malta', - 'MM' => 'Myanmar', - 'ME' => 'Montenegro', - 'MN' => 'Mongolia', - 'MZ' => 'Mozambico', - 'MR' => 'Mauritania', - 'MU' => 'Mauritius', - 'MW' => 'Malawi', - 'MY' => 'Malaysia', - 'NA' => 'Namibia', - 'NE' => 'Niger', - 'NG' => 'Nigeria', - 'NI' => 'Nicaragua', - 'NL' => 'Paesi Bassi', - 'NO' => 'Norvegia', - 'NP' => 'Nepal', - 'NR' => 'Nauru', - 'NZ' => 'Nuova Zelanda', - 'OM' => 'Oman', - 'PK' => 'Pakistan', - 'PA' => 'Panama', - 'PE' => 'Perù', - 'PH' => 'Filippine', - 'PW' => 'Palau', - 'PG' => 'Papua Nuova Guinea', - 'PL' => 'Polonia', - 'KP' => 'Corea del Nord', - 'PT' => 'Portogallo', - 'PY' => 'Paraguay', - 'QA' => 'Qatar', - 'RO' => 'Romania', - 'RU' => 'Russia', - 'RW' => 'Ruanda', - 'SA' => 'Arabia Saudita', - 'SD' => 'Sudan', - 'SN' => 'Senegal', - 'SG' => 'Singapore', - 'SB' => 'Isole Salomone', - 'SL' => 'Sierra Leone', - 'SV' => 'El Salvador', - 'SM' => 'San Marino', - 'SO' => 'Somalia', - 'RS' => 'Serbia', - 'SS' => 'Sudan del Sud', - 'ST' => 'São Tomé e Príncipe', - 'SR' => 'Suriname', - 'SK' => 'Slovacchia', - 'SI' => 'Slovenia', - 'SE' => 'Svezia', - 'SZ' => 'Swaziland', - 'SC' => 'Seychelles', - 'SY' => 'Siria', - 'TD' => 'Chad', - 'TG' => 'Togo', - 'TH' => 'Thailand', - 'TJ' => 'Tagikistan', - 'TM' => 'Turkmenistan', - 'TL' => 'Timor Est', - 'TO' => 'Tonga', - 'TT' => 'Trinidad e Tobago', - 'TN' => 'Tunisia', - 'TR' => 'Turchia', - 'TV' => 'Tuvalu', - 'TZ' => 'Tanzania', - 'UG' => 'Uganda', - 'UA' => 'Ucraina', - 'UY' => 'Uruguay', - 'US' => 'Stati Uniti', - 'UZ' => 'Uzbekistan', - 'VA' => 'Città del Vaticano', - 'VC' => 'Saint Vincent e Grenadine', - 'VE' => 'Venezuela', - 'VN' => 'Vietnam', - 'VU' => 'Vanuatu', - 'WS' => 'Samoa', - 'YE' => 'Yemen', - 'ZA' => 'Sudafrica', - 'ZM' => 'Zambia', - 'ZW' => 'Zimbabwe', -]; + 'Afghanistan', + 'AO' => 'Angola', + 'AL' => 'Albania', + 'AD' => 'Andorra', + 'AE' => 'Emirati Arabi Uniti', + 'AR' => 'Argentina', + 'AM' => 'Armenia', + 'AG' => 'Antigua e Barbuda', + 'AU' => 'Australia', + 'AT' => 'Austria', + 'AZ' => 'Azerbaigian', + 'BI' => 'Burundi', + 'BE' => 'Belgio', + 'BJ' => 'Benin', + 'BF' => 'Burkina Faso', + 'BD' => 'Bangladesh', + 'BG' => 'Bulgaria', + 'BH' => 'Bahrein', + 'BS' => 'Bahamas', + 'BA' => 'Bosnia ed Erzegovina', + 'BY' => 'Bielorussia', + 'BZ' => 'Belize', + 'BO' => 'Bolivia', + 'BR' => 'Brasile', + 'BB' => 'Barbados', + 'BN' => 'Brunei', + 'BT' => 'Bhutan', + 'BW' => 'Botswana', + 'CF' => 'Repubblica Centrafricana', + 'CA' => 'Canada', + 'CH' => 'Svizzera', + 'CL' => 'Cile', + 'CN' => 'Cina', + 'CI' => 'Costa d\'Avorio', + 'CM' => 'Camerun', + 'CD' => 'Repubblica Democratica del Congo', + 'CG' => 'Repubblica del Congo', + 'CO' => 'Colombia', + 'KM' => 'Unione delle Comore', + 'CV' => 'Capo Verde', + 'CR' => 'Costa Rica', + 'CU' => 'Cuba', + 'CY' => 'Cipro', + 'CZ' => 'Repubblica Ceca', + 'DE' => 'Germania', + 'DJ' => 'Gibuti', + 'DM' => 'Dominica', + 'DK' => 'Danimarca', + 'DO' => 'Repubblica Dominicana', + 'DZ' => 'Algeria', + 'EC' => 'Ecuador', + 'EG' => 'Egitto', + 'ER' => 'Eritrea', + 'ES' => 'Spagna', + 'EE' => 'Estonia', + 'ET' => 'Etiopia', + 'FI' => 'Finlandia', + 'FJ' => 'Figi', + 'FR' => 'Francia', + 'FM' => 'Micronesia', + 'GA' => 'Gabon', + 'GB' => 'Regno Unito', + 'GE' => 'Georgia', + 'GH' => 'Ghana', + 'GN' => 'Guinea', + 'GM' => 'Gambia', + 'GW' => 'Guinea-Bissau', + 'GQ' => 'Guinea equatoriale', + 'GR' => 'Grecia', + 'GD' => 'Grenada', + 'GT' => 'Guatemala', + 'GY' => 'Guyana', + 'HN' => 'Honduras', + 'HR' => 'Croazia', + 'HT' => 'Haiti', + 'HU' => 'Ungheria', + 'ID' => 'Indonesia', + 'IN' => 'India', + 'IE' => 'Irlanda', + 'IR' => 'Iran', + 'IQ' => 'Iraq', + 'IS' => 'Islanda', + 'IL' => 'Israele', + 'IT' => 'Italia', + 'JM' => 'Giamaica', + 'JO' => 'Jordan', + 'JP' => 'Giappone', + 'KZ' => 'Kazakistan', + 'KE' => 'Kenya', + 'KG' => 'Kirghizistan', + 'KH' => 'Cambogia', + 'KI' => 'Kiribati', + 'KN' => 'Saint Kitts e Nevis', + 'KR' => 'Corea del Sud', + 'KW' => 'Kuwait', + 'LA' => 'Laos', + 'LB' => 'Libano', + 'LR' => 'Liberia', + 'LY' => 'Libia', + 'LC' => 'Santa Lucia', + 'LI' => 'Liechtenstein', + 'LK' => 'Sri Lanka', + 'LS' => 'Lesotho', + 'LT' => 'Lituania', + 'LU' => 'Lussemburgo', + 'LV' => 'Lettonia', + 'MA' => 'Marocco', + 'MC' => 'Monaco', + 'MD' => 'Moldavia', + 'MG' => 'Madagascar', + 'MV' => 'Maldive', + 'MX' => 'Messico', + 'MH' => 'Isole Marshall', + 'MK' => 'Macedonia', + 'ML' => 'Mali', + 'MT' => 'Malta', + 'MM' => 'Myanmar', + 'ME' => 'Montenegro', + 'MN' => 'Mongolia', + 'MZ' => 'Mozambico', + 'MR' => 'Mauritania', + 'MU' => 'Mauritius', + 'MW' => 'Malawi', + 'MY' => 'Malaysia', + 'NA' => 'Namibia', + 'NE' => 'Niger', + 'NG' => 'Nigeria', + 'NI' => 'Nicaragua', + 'NL' => 'Paesi Bassi', + 'NO' => 'Norvegia', + 'NP' => 'Nepal', + 'NR' => 'Nauru', + 'NZ' => 'Nuova Zelanda', + 'OM' => 'Oman', + 'PK' => 'Pakistan', + 'PA' => 'Panama', + 'PE' => 'Perù', + 'PH' => 'Filippine', + 'PW' => 'Palau', + 'PG' => 'Papua Nuova Guinea', + 'PL' => 'Polonia', + 'KP' => 'Corea del Nord', + 'PT' => 'Portogallo', + 'PY' => 'Paraguay', + 'QA' => 'Qatar', + 'RO' => 'Romania', + 'RU' => 'Russia', + 'RW' => 'Ruanda', + 'SA' => 'Arabia Saudita', + 'SD' => 'Sudan', + 'SN' => 'Senegal', + 'SG' => 'Singapore', + 'SB' => 'Isole Salomone', + 'SL' => 'Sierra Leone', + 'SV' => 'El Salvador', + 'SM' => 'San Marino', + 'SO' => 'Somalia', + 'RS' => 'Serbia', + 'SS' => 'Sudan del Sud', + 'ST' => 'São Tomé e Príncipe', + 'SR' => 'Suriname', + 'SK' => 'Slovacchia', + 'SI' => 'Slovenia', + 'SE' => 'Svezia', + 'SZ' => 'Swaziland', + 'SC' => 'Seychelles', + 'SY' => 'Siria', + 'TD' => 'Chad', + 'TG' => 'Togo', + 'TH' => 'Thailand', + 'TJ' => 'Tagikistan', + 'TM' => 'Turkmenistan', + 'TL' => 'Timor Est', + 'TO' => 'Tonga', + 'TT' => 'Trinidad e Tobago', + 'TN' => 'Tunisia', + 'TR' => 'Turchia', + 'TV' => 'Tuvalu', + 'TZ' => 'Tanzania', + 'UG' => 'Uganda', + 'UA' => 'Ucraina', + 'UY' => 'Uruguay', + 'US' => 'Stati Uniti', + 'UZ' => 'Uzbekistan', + 'VA' => 'Città del Vaticano', + 'VC' => 'Saint Vincent e Grenadine', + 'VE' => 'Venezuela', + 'VN' => 'Vietnam', + 'VU' => 'Vanuatu', + 'WS' => 'Samoa', + 'YE' => 'Yemen', + 'ZA' => 'Sudafrica', + 'ZM' => 'Zambia', + 'ZW' => 'Zimbabwe', +]; \ No newline at end of file diff --git a/app/config/locale/it.php b/app/config/locale/it.php index 4be58ed8b..77f593f25 100644 --- a/app/config/locale/it.php +++ b/app/config/locale/it.php @@ -1,21 +1,21 @@ - '"L\'arte di essere saggi è l\'arte di sapere cosa trascurare."', // Questa è la riga stampata nella homepage e nella console 'view-source' - 'settings.locale' => 'it', - 'settings.direction' => 'ltr', - - // Servizio - Utenti - 'auth.emails.team' => 'Team %s', - 'auth.emails.confirm.title' => 'Conferma dell\'account', - 'auth.emails.confirm.body' => 'en.email.auth.confirm.tpl', - 'auth.emails.recovery.title' => 'Recupero password', - 'auth.emails.recovery.body' => 'en.email.auth.recovery.tpl', - 'auth.emails.invitation.title' => 'Invito al team %s di %s', - 'auth.emails.invitation.body' => 'en.email.auth.invitation.tpl', - - 'locale.country.unknown' => 'Sconosciuto', - - 'countries' => include 'it.countries.php', - 'continents' => include 'it.continents.php', -]; + '"L\'arte di essere saggi è l\'arte di sapere cosa trascurare."', // Questa è la riga stampata nella homepage e nella console 'view-source' + 'settings.locale' => 'it', + 'settings.direction' => 'ltr', + + // Servizio - Utenti + 'auth.emails.team' => 'Team %s', + 'auth.emails.confirm.title' => 'Conferma dell\'account', + 'auth.emails.confirm.body' => 'en.email.auth.confirm.tpl', + 'auth.emails.recovery.title' => 'Recupero password', + 'auth.emails.recovery.body' => 'en.email.auth.recovery.tpl', + 'auth.emails.invitation.title' => 'Invito al team %s di %s', + 'auth.emails.invitation.body' => 'en.email.auth.invitation.tpl', + + 'locale.country.unknown' => 'Sconosciuto', + + 'countries' => include 'it.countries.php', + 'continents' => include 'it.continents.php', +]; \ No newline at end of file From b83dade16c5101784f56cd00800a7a0808b9ad8f Mon Sep 17 00:00:00 2001 From: Carike Blignaut-Staden Date: Tue, 1 Oct 2019 16:36:10 +0200 Subject: [PATCH 05/56] Created new PHP pages for Afrikaans and updated them. af.countries.php stil in progress --- .vs/appwrite/v16/.suo | Bin 0 -> 23040 bytes .vs/slnx.sqlite | Bin 0 -> 217088 bytes app/config/locale/af.continents.php | 11 + app/config/locale/af.countries.php | 198 ++++++++++++++++++ app/config/locale/af.php | 21 ++ .../templates/af.email.auth.confirm.tpl | 24 +++ .../templates/af.email.auth.invitation.tpl | 27 +++ .../templates/af.email.auth.recovery.tpl | 24 +++ 8 files changed, 305 insertions(+) create mode 100644 .vs/appwrite/v16/.suo create mode 100644 .vs/slnx.sqlite create mode 100644 app/config/locale/af.continents.php create mode 100644 app/config/locale/af.countries.php create mode 100644 app/config/locale/af.php create mode 100644 app/config/locale/templates/af.email.auth.confirm.tpl create mode 100644 app/config/locale/templates/af.email.auth.invitation.tpl create mode 100644 app/config/locale/templates/af.email.auth.recovery.tpl diff --git a/.vs/appwrite/v16/.suo b/.vs/appwrite/v16/.suo new file mode 100644 index 0000000000000000000000000000000000000000..778ec426b1f93edef8a3a7402b49953d0ab39445 GIT binary patch literal 23040 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 U$p4#Vvb~f$`X(HjbpPf50r{6?J^%m! literal 0 HcmV?d00001 diff --git a/.vs/slnx.sqlite b/.vs/slnx.sqlite new file mode 100644 index 0000000000000000000000000000000000000000..b77903a9763386620c65deb696b7d2306bb6741f GIT binary patch literal 217088 zcmeFa2YegH(Kmd+9S%4EcPEmf*hQ+7l0Xt9!6I3fD3X$>LN!vdEXgzofFvZ4pa4+C zHFPg=jpHK6l5M&7?!+~5w__)99LJ8G>bR#TPO+Wx&d%HccSkDrlYCFU_kAAlC+&ZC zc6M)Ow%pz9;&$Wu)zMU>qCcJ(3Z^RRxk;SO#x1F+;5e=o{s-W{{+9<4K~DhM4DrK7 zTe)gStAjDCpE90Y^;7Rn-btQS?(?N{U2i&haXo*L{bTzE`^v*rk){8?VF6JUQP8oO zinCy|&o;I`IvkGd-MDY4FCJ@;^hbxIsc3w-m!iW1%c8MJXSla>A||zMLq}_OM@45> zd&f}~TR&GF+hunJ{H^U8&%eE*a;y2W+pEU%WoJPfh`D@XF}s38k%@&bGDTf2HS)3s}DTkFP-s?!&FodrIh?Hpe!*cXdfRkx;PO_=W1rK>w8&|G#`l3m6b zu`|3K?AzV3ykkSfx(%IcS~qN|SkE8&J*!vG*J@dpi0_Vu zBMD<^orhRhBW&nc*0G_ZtF2>W#a6vU$8ai|+PA$jO@Jz@GDV=>de*fwLx36DTH8BJ zS?wLGJ2F|iFl4~4O|2W+R+CZm1P7*jEARx6vO502x@sBAPK8z>w1B~y{1v3_wR ztK*>{8=o8Edk(LF&eRrKRUK`)G}UL02_X(%{697(hVLxYjt@uJfx zvoddBj<>;rjZBvt}8`%;y+! zT7ym`^SGX48gY2t&+ah)UVqVtwNWX(zni4d8PlCtCyX2a6A$w4eIqbS>NAyo34P>s zM~5QGRB&iydj*?3x;xjvObYWA>xn+eSx{4DJ4MBws9%=V*UJK(K!UloX6@e%-XHpQkWuvIS0OL5ELoGHXZfT^CG5hEu(4 z+P3DoCTu?|m$3#zQ(D>B1H(jj=lO6uLlLY6SYIAnDmn{x!pyfXGxHfnp?2xzdGf5k) zWtG!m9w63i!w|7%{cA&oWX|;R&+#O3*fz+_bvTc)=PCC0FFX?bdoz4zlG$c^#nR64 zkAbU$$<*4uWF)aW0*^(RnOA#StZ468*4neWyCO82z!96$r)e1Eao$Il&l(CZgUotl-N#*V4a$58rV&BY}KfSE~iocV?AwCFg6P9Xz86j z@V1uYmLU}6$(;JW`nY-{M6!Qb3uG;jwLsPaSqo$>khMV80$B@WEs(Xq{~`;VK1pzJ z3(p>9FS(tW<*AM2#!l91e?EqmAd?sA3%7(L4Zga%P{h|z*X;KN1K~zrsIRuExv8Zg z(g5VTKy71VI8^6r?DL0xet)>d*Afo&u{y&o^?~M=V1J{puCXrQ@AEesn1cObD^p)X zLrWOA4K+1HLgt$4Bau*TV_nGSZ)mLdH8eHX`hxYLurJaW@JDJ}0!@t(AotbRg&Lci zd?0ej*AQw9`+{{rzpp;r+|8tWs$<~m<6QU`j60=`hBt`?ZW zL0^kMSPPeHXb3hn20)g6U#PLJxv?n}@-;REn|%!}p+;Y@C0y&P>x=Z)H@1YE`}&)F zAWuVcBv9)MHMhX!LV<{{xv{a)*VO2b)P+IfT7SeBZmILvg#uw;OH&{SHASGNra--~ zu0PP+*w^3JU)uyV^@o}QE&di?b2tdv^)-Ziec^_H&)*mb*Y$<^8~YpmzDR#dbEL1O z*4NkH(g$q^P2JZQsPok}*Vfk6)`nVwaP9uO`fy*Mug=#Lu5G3U4mQ=cXwA~s7-^^v z`TCo}5hf#CBn(|8QWx|E{q=D5x;kk0rWUYQWC|~EH7a&S@U61NrndO#aLPZ&E^xm3 zwnQYDiiFoDdPc%5;;*f#_1DzZ`dcdejSFg<7t{u(*aU7)!A4kt847A%S$}nXbwF0n z;hbtaul_;(p?XlgS3O!ys_p-a276Z3tOc?b$XXz4fvg3x7RXv4Yk{lWL7ZJFIA8zTJ?*a{Jf*mFg`%8=0>Oa(>tc@F;NOV(O)dEnJ| zQ_)T^ezE|U!-@_2DmQ_wc~a(btk!%x@3Ut}R9tx0W8+I~+8zYK4dn#&CQf}reM-Ga z{mti8Im?!{K-L0T3uG;jwLsPaSqo$>khMV80$B@WEs(W9)&lc61Q0wwl8>VCk4s4c%N~mCHRTkIIYe$6K*hqq zn;81wXD23x@-e%}`7$*GVpXv0vG~9~-$){|I~v(zlB;Zp+Jq|dMdL|R_S6`)$*$2< zq%RTQ18SS{i*}M6BcuKBsR&b6$qwqFBk>r>kusa3G)l%A3C1E||G2qm;UF0~o&qD8 zDlHzM#*QcYqN&j#Q(j@eR%#@YFb|`t5z->ga(t=yXlT$>vMfwSp#0&8MVzvbF?(Dm zo8BjK^gM z-cII%j+Puvn1|bxZ8SDOU{h_yTdB-YbTAc<$IN+0Yk9%FsX>brrCX>;W6^=Z)G+)w z&{VSUD3WnUG8{KIThV6fLeWqJzGYx4G<6fTTQn5xn`o34_E4q$@zAJ6@oo~dKbnYG zXUFLqsV%fT-!Kz6X6~Q!H_#x`dD1QBi-hrmC?+|}*VA;ObB}AgqIINWe=xSwVzz>{ zG}A;zqUL$6q>IK+Bo+y!64p{{v{K;#^TaiEHJK~|8Q2YdbtX}#uCnI)P5DJDNz!mU z4&N~`WfgalO~Y}xPgy$6)D={1=w}aK6!KwcDqFOistqMZ;dlS0to&s(t%uCrqOgP7 zHWZ8QI?hy}q@4^C8cf88qLxXZs7<>N%QVYhu~g)0V4PyPh!2)wf(di0Pi@t-z{2B4 zalsO@dI)~bZW5_zFNb}rMcqHl3mk91Q%Tu^W%ZWvk=9^5>5n6ST;7-dVQMix_ z1$PH6GR#>Za*IGccv4BkqhTLBGO*cxycW}2sQ(9tg2%;&C%zLEH&a^&!+o)M$Shrc z6EzsSRSb^I)}Mz88%eVMSa86cGdUn~1vZz6ImrL~yn@Q|1{yS>1RGM&9Eq^GSV=u= zXP0PXNMEg_jyi#MQ!yomo&# zEuReUG-nk0Nb5vAW+_rSU%SO=-`+8oE1E}5JOb0GrC|PCW?z>GhKIW&itv2p#?t&M zGJ9myBz9RP-8JYp+o7nXvZ-^lE*+1tc?519W;v$JW_JOX2>mG)OeE6^7tbO~!Dvmv z+`1zfA1=`?RWOr`Q9Te%?Tkc5(iu}`P-T1K3Fx;;2P^P=rBE_?I&}cn9}U!LL`?;g zJ2TY03X#hPftaP!6%>@y71`IQnD&^#9^G@Mid+tGhx>?k_6ye+modqq+r)=q+61k2 zK_D-`luQeG{n3GREt5+~k`VjWO`1BTm~N24krC51^NN6*bBQVVgh>)roL!g=lU*jyhohLaqRxF zfE#jrq4>~9JQ=Cpml1!mm-HnLR_=MIvCIP<7Rt4)?dsmpxwNOdvunA*NF{CDMfgESW}yD_kT{+uHVy-nGkm;R5YFZQX{t3*jx1DFdIS>RR5h(U3ERy&ytP z-)J-zu1*f>7tDdzL)N^|MbadAD`ceV-D$%W!FwQU!s-;<1ENXI2Jp68dsY{O)n^Vs zIQNW`A)Ir@TnJ~Lz7WD0r>%f+>ZwOTSa!;B5Eh;S0aq~Qw5uyQQH2SM<7TVf>N{$U zI-*{seofpZM#L@R8nM;;vhyVGePTfUx^lW$C6+mNiaDag@v-*?`4h*l96y71@8=zl z!u$92-pd?Uz+3p3W7H9KZ1y6uSS&- zwMRKtSS0)9QqQjhzx;|YODGa#c+3Bz=LgCb{sZR%XC?n5{$>7Y{%h(=wO*a6mUy1` zJjCD5U*oyKbFt@i{>%K?{E42Fv&1vN@8bLTP5esvIsQn`QGA`J%`?p-xj*J-^Tl$m zEbt0%cmKlvC;Nx?H|#IiAF|(KKVZMueun)x`>?&wzRAAQex$w5KHFYwSL}A%pHz?2 z<$lfmoU&T{)cuh15BE*-qvCt+%iU+WPY}QFj=7I_hacs zC5sR%5&0b@>i5crBNxU+$oe}RLbJe(J%Eu}-;+I_>=cmpOoIg}%IG=Ie?fi=Ki>%o> z&chek2k^mz`v~JOl@AYaf514tOK`u(_%5XX4&yL)0ncwSjt~0WZ!nHeTimZPjt}|V zuP}};liV*cj!!b&FEEae^W29R#}^6i1B~M{4fj6A(XGP0hjH{*aPO-8H2XlGZ%>S5 zeMd_tL!`&sT6#E2^8Z{*N9gr|dkgEr2S)B^EZ$FiKgBq{fO9{=IO+3ajN|hP_alt& zK>dG+ankKg7H4-+u*(}5Cs}@gagy_Og)g^9l0Hq$*D#AN{e6s+X*e_w6>U@#KLsZW z#_pm+Vw}3mBN(SH@-W89J`Z7>n)quh-bXrq72~AigBT~h9>6&1bw9?b`R>CwHQ&7$ zCmrv>I1P!rF;4p4g>lmNPK=YjcVL|Ky&dD!7Pn!X^t~11r0*>lCw*_mIO%&6#;NUY z#5n1G1IB51T#s?m{W=y8lJ18vPHlQE#!2^UFi!1wHO5KzgBT~>4`7^hzY61|`&Ted zx?hQL(sw_`N#83lPC8zWankEDjFVoMVx08)GR8@-OJu&x4!1Yb=1YZqy&WD{-~}TD zFN;CnNRXQH;vzm^heypF;0^VG<8fp}a}{tGP2y+R;hiivyo2hvFpsaY55dnlBMIGS z%U$5*OYA#BWWMur`8oE%C^%Bm`RB2GaIRpt|6&e5%N~vu$D^VfC+$ zdigS&?o&<4e7P;{M@{DNb0B5#ohF!SR#zx%#a(6m;&B=2_uLVMp9ZTdYk>9Lriar&ojpA&G&(H$@DS!(>hrZiw|uDE0Xb>EoZ}zd}Yg+ZPNa+4kn<{C)SPy(|)iv zw%|C<_q7zSX!dutGR<@!*AiAs#;>)QT{G>=IucX5|7sDkrhQgNu*|fdYGEnA$aXm2 z)B@Iy6ZoTAn0*XBsAi@-`JI|r?P*_Aqr?|bD!>}n=rUsO?hR-ggQKaQ5p?$ujXc$tieZA%eakxp&G`m`+};OBx(PT52pd6&u2a}OUBPLkLdt!t>D|4%cA7ZsbZtj z?8B+VrZM|%=CIMH`D$h}DGmOaSxhM1Co_{VYJQj*%sA+Kna*M<=5Lwi;`3313RX(@ ztCWj;jxF3bmDOzUpOj&rL!U`0s{#EaB`6B{MvAds<_{@iRLu!e=;ZTk;Q1(E21>g- zrm)J$$C1yjV{mLtW_C7uGxAuU)d(3EMlQRC=C{aURT!KVlbBx2L!mOOYiJqPu}a}!i~Eu?*!xtC4T>3dTjt3OtMpngyNHmv_Yt$tm7SbadfTfI%a zQN0#C1DC5`QqNbt;QunF}HKz8f$HG?wy45aqg}PKdLTyxQ)w%G_Jyk7Kb5*Y@ zs+{tP@{#gu<$dKX<%i1mmG6L;;0(vfj=hdujvbDWW1FML(dAg~SOVUHI>$W6Oh=hx zibHj{95&$-;Sa(u!CUZS;Wgnq!t=rt!o$LS!tKHh!a?D3;UeK2;Z)%SVN@6v283gU zEy4z2mC!CM5*mdXp;DM86e}+%PbrTnUsdi=Zc}bhu2%Ldmni2eXDO#BCn&p>5oL!G zR*q4QQZ^{7m1W8jWr5P5R4bLR-=S2QqD)fUiXi`8{)_y3`Iqv$@=xVA}7jrV=;&%AGVU-7;OJ18FWKIpy6d$adi@0H$5yytn(@Sg15>)qwu z;SG7Wd3(HF-sRpU-WG42cb<2qx6C`mt9o5to97eHA3VSGyyN+?=QYoFz|--B=V8x% zp4-9KanN(Q=OWmHajNG8&!}hEGvGPav&FN)v&z%%S>$Q-)Oaev+fnSv^LRZD_ut)r zcK_D>f%`4@o9^$qUvfX=e%$?4_ucMW+=tv>aevu;zWYq~7u@^Y3HMHS*uCAo$-UOS z!rkg#;I4Pi2am>7cY%A7TXNf_PoOqIE2N91 zbEVUy6Q$i!TpE;u($UgJX|>cL9Vssi;=!S`{G>sHrwuB%*^x-I~}$C&FlSJD-8MO??YHoMljI$cX$3tbH^pKG?O+*Rnx zak*W*^RLc7I)Cka&-qj551ikH9VJgWA9X(9ywiD;^BU)V=a-ycbe`@!$+^cl;*2`` zoLimU&Na?u&c)7Vr{6i(Im21%%y%kIr;`&u7Jo1PLVR2Nk@$V_+v0QLH^hg;d&S$t z>%{}&W#Wb6+2SeU@nT9G68pto@hEYJRz z@Swfnc*XIe<7vlZjt3ogIc|1b>$uW!iI6L}1v~!<|9k#J{w@9u{=57O{1f~`Y^bt7 zClB7HCvC54_&p6@(eS$(zO3PQH2k)P-_r0U4PVson;O0#@;3Wi+w%m^5j;!q48hX` zPZ2yx@C3m(2)<76IKg8Cj}kmW@G!wc1YaZgD#3#U4-ni>a38_F1osf!O>h^%odkCf z+)i*C!L0%Rf@=w`A-J00Ai)8Gs|dbAa3#Thf-49vC%BB@ zQi3lNT*4q=`x3#$1Q!upNN@qc`2^f^!JYCOC`WOoB5APA52x;8cQB2*wD$ zKyWg_NdzYnoIr3q!Eprp2=)@}A=phYN{}K*5+n$A5sVPT35E%V2x0^~33d=f2?hxU z2>J;k1Yv>@K_5Yo;8=oQf@27_6Ko^cN^ms67J{P)HWO?j=ppDP*hsK}U_HS)g0%!) z1ZxOZ6RaXwNzh5Kf?zqpGJ+0*c7is7r39@6O9&Pd97(W<;0S_+1PcgS2$~6+2pS0j z1PuiB1a$;{f?9$af@%UE!F+;w1ak?h2r3EY5X>f+MKF_K2ElZKX#^DnJt@CLyT2wo?6jo|wPuM&KZ z;1z=J61+_C9fEHYe2d^Ef)@$CN$>)}^90WkJWKEl!P5j!5j;uo1i?25zE1Es!D9rE z5Ff{a|q5RIE&y+f-@NSxzhb7*=992gBJcESZJjOcpw3 zU^pGaX&6>uSdQUT49hSq#jpg!Vu9yuMJy;}K>-V~-?b@eirD^SAK__zU?{ z_>>q?j^X=xct`U5ggn>`;BV+v z)~hR(#r7AyZ+l6{aX7aup+AgF8dODoqD7?Tb-hM zJ?lJ+?KACDJXP?nE7)DOPi((*|4uA*zh(Qe?Iqje@&)df-4D4hb)Vqg;r)j9Zuim3 zr=ru{?ygtnIR4_Eq5Rsd%BMKqlKv+BLi&;8+tN3shvAnCmr5r{ebO4K8QxiQCC+=D z>$l2l%G0hN%Da^NT+hqfm782&bzQ4mA+K?r2dnc(xtd*NN~wILOOod~KX!iTd_}oX zepNZuaW8lp_Bx+--s`-nK;%Ekq&0QY@L;aX#WdzDhSDi`3sM=4y33vjPc z3RhJF+;=fW>&^l0WlG_)Sb+NurEvW(zi!TX}Ui^DNXnLDTS-H0q#CZX&vESN@+)OFWE;mt1>jgJbO0&`pl)?qs z0Czp5G%H<)DO%GGaEBOZ*{jIL8mtK*M|t^Fc)G3c3G;$l68ifX4<(*1*IOv75be}Fjj)pUP9Uf;5w?vJ3T<`s2+ z*g(|R)cv6%7|9c@s{8v4Iq8*U>}^3qMd=QGED5Hst^0d1onBq{AA_nG*4O>pv0rE_ z?EY<-Z&+jZZzW1*mEC_dn#{D$?%#sfNw2i~k3!RD*4q7>(L$EhcK;?UmR@i7_u$10 zEAIYo)L&mYH>|n)H)3bebJDgkuDbg-U^mx!(pFlJ(q&fO{p+yb>uc}+wb)OLtMC3U z;?RHpvIf<$tibzMTd24O?_Y&i%dEotSE81Nb$EX#7PPFy`&VGW%v!vEISz4JjrT7@ z+ojjz{T(Q@aYf$WP8For z{YO$-U!V6cq5|m^djAo~kY1zrFPthYvK@An-oF6beu8y+e+ydBuu|`DM$>4&5oyBf zq*v=_H+qBu8?D#R4q%tCuGr6RAnO^{>}S^_NnfOAi>}i%wjaeXtlXE@Vj1Jw zeQ6Dr(O2(Ft5LS}`hBU7CLrSqe(8KPTxJcwbRKF)tN5jJF`@k~qY7sM^GbecB{ipc zEx&XQj&yA`zjQXrZdlJRnT3MtEBYlfkzN07#SAnd{i0$z#&KQWG0iRH!<5Z_JyC(> z^|gIRxl72g!Ro$aDqhL3zV9fbeoViLD8<_7w-6;HqV@}jVz*Gh+3ieYk&FbfEV-!9}$5o$CFyd)LRWI?&G&~6XI z$cH8QQE0}bFUihqhM&X10{l&E?VSr02{m^6KqQ3>>{qV+Y|fRbSqo$>khMV80$B@WEs(W9)&f}zWG#@j zK-L0T3;Y`vXn+I!dS-o|^8o#g)pgbWhU%7{j4>ia+6AoRdzJp$o|=18E{7iw;4@HK=25npp-W23LB(I2S`H}%!m z`Xh$-fBQV4Cr|pE@BeK5f0J|}2jBgFQ+-aoAAaM1fqH@(RX3?^@H_r8)vf$ld0Tl| zc~rSoxlB1t*`;h(I+cJjO_Ak~<#*(lfG^8q@{oMAyj*UOr^$-yj`DPP>fn3;ulr;7yY5%q zUw7Z`-VeVtPr)exUG9bMN_Rf|qWm|~52fd&2c$zFZ1yi}fvg3x7RXv4Yk{l^sokoO1M%95|Z-Nvkp>IFtfOD>EcGivmfV84?^lfut1~5}YrA zq~#eBoG5{$Wf>BjB!Q%k3<=JVKvH{#1SdxzsVzf-Gb50+G(&=8B9PRokvzT}I2i&- zOEM%l5dukzGbA_&0!c?^NO1N8k``r1aOMM&j>wSUyayyL%#h%q2P7@Xkl=U+B(-En zaI6E8nu#>|R*@mW zi3mt4&ye6K1SCz(kl_3SB$Z`IaP9$;N;4!l^8iUj84{d#fTTi=^yo+qoN<7p0*!RZ z`W!gc07>~75}atjNbqeY9HW!J(2@fO86fFnBIPZs&4D8fko1={DHl#JK)r9&^ai$E zIJ*F8*K0J_S<7;dtvi8*5<&$1W1~% zkrGGe!hr;=Bygo^li(l%8K$1eF1rJ}40|yBpNzRbq_y8n% zGbA`P07)K=v@DSWrvxC$t&z&ZIdD7xl3W=QoD6^@Cy|=pQ*+>C07kO!*GQNDIR{P# zK+@$zYV_QlW7kNR5vk^#zfH1%aiE~4;=Iluv-ST?@-3YDDSX%O4E2lfO}~%SU#ah^ zC#$>EpQx{^FT+;=pHv?K&%hn<1;DG-E7Tq8HZ`R7!1w-^t4q`twN9M}U;8Ul9){o9 ztEx-2!Pox&p!`yKNBJ@Q7XCZR^U4#-eah|d?Y)D_<;q3MIm)T<<-Jj5SQ$``Rkpx) z_f{$G$|9vvse!NVO;d`MJjJUx;G27YmVYaMAipKQ318fMNq$CtT>h$jHwc^k%UU37 zfvg3x7RXv4Yk{l*N`%Fo2uH3!ShO7Bh-C;1I}jGMBeb+3G%rPHYDH*Vf)H4Y z&~PL|{UU_ABM|%x5o#A8RJR~hH6v6uAocv)qpUw9$`iu!gN2vv|0xI4KS~Wt}H;fVhRKMRrv_>CsQhqeFrcvmuNYdn8Xr1 z9F)iaycG;4$q1?!LGd8SZUnD{;Bg_iod_-w!RcUN-!C9s&LdoA7kHaA$pK@=rhdvs zP6PM=zM!sy@8xmI>+rq&i{ab&o0KM{T(QZo$#=>p%Uj{hJ*W3a-lx1bdC&1~@>Y7i zo)0~bc=mga^Q`vx;0yAv!rJ}0?g965_iXqA{MX@2@5e}UU4M1G=(^UGaJ9N-I{yw| zUq9dsI~$$(;s@fx;+No@!6q>eP7-{{aie3*(eB6>-WI+loF!})Y6T~JJ@8@vVtzYc z3*Rez-F`Eiy0_IHu*s9)D(VHUf&vM-x)}oo{Plu!?lF)xXAV^WpMdCPhcooDuVR=I5`SH(5Go;x^8ET@_E3hU*6!`L_nVW&n zWNbXi0*#F^;1Z>>O~6%BLdM=mr!*0)^vieat+4gJIyJHKV;h^ z`MM44nra%mImOsJq&XXb9gPRIGbJ@%LzFQtkbD~q^=gW0yyg^RpDWE<5A4`Ypk7p1 zW2UaACm3^uRKE_GvDGypMiTKIaCUC*XcA6YWulk}tk4u`&RT=ynkCo=SqxFe=#l1h z85lJiFh)ZZ7`Z=7)7AhZHoPVV<6>85$XI?U%~@@zOVgX>8lsHx2hyxnz=%z+>(AJ< zamHed?b}k#N?@Be&(ydhv0$n{o*2>;(UYveQ<*p@61=&S6Qi0{2T*E1ZHHX;NJilr-KpG9@Fuqvm2jfHH;B+(sy)D{5jfC4g6zW(I&)?|dwqzC)FX z0hcJ1Gyqpo5t(B(o;O7yf34uGsfSFS{Kk6EJ@(sCe5z_e!UZ8m(aPXPoz`8y+W$1 z25!AAG|fWk?{JMHK$#<@I-jA8rd+1XI0BUMN%Q9$q@pI%4_r5=fP02iH_vbdP07p^ z#u1=Qo>V&*%IJ?TsCT9WX>LeE2^bJnP(mLN?Qp((UoaWbk-tW8POSt6Qt*Nk)dl=9I)A+$Bw|z{*HnEnfr3@0TjdAzy!7OGF0XnKqKp z5jZwW^QRiFmx$omr2FuKDRTU~IulB*UaRew+DwP&NnW7@PI~4kf&$3P&!_pR6~t!$`GbP9atdS^rw&bkBx_hbF7XGtrONzqoG_(F zQ+WGKMko%PtE9@w22O1Rsmao}u~rsn~tvCktLyEI0Cr&+4b1s=Vp>NNzDN%%Hj z*pdW(xHskizdiyqhGF<-t|1D1Go;E%@MSnJgOOl3lE}n>D_^P+em%=X@h! zOA`2HsX_pL-5$NY>=TQ<@J9$74yl9(4*l-i7K_43f)w)m1!sl*pBBH;A(h#HLvN{# zkpxVb5dwJSuZOp0j!U{i9Gv_29d)e==guo->Q?nf$`MMHe2zTR9rOIfbDnpVCm{U* zzIDIY^^yA}`F`~Xd6oAU?!}&OdAhy%9+z~R6m)&bb)5S$bvgVlV2}54IK}Ql`D5>i za-RHwyVqUip6s^EKa{`a`K9+|&k4%M-i7Yp%TK`mfM-0F(u>k%uJ_=4wCRuyCCJL79G$^jnH0$UIJK=clF_PZuITTSR4 ziVXDueK0zrDG_BH+Do>TgI@dwi}@B^O$)~W%bK`wKRel($!jbUVRCC0WArdf8^jCg zO0vv8gOV&AOe@J!$zz$4-7MCt8!Nruag2U(q<}@)BFJ{#_(;^(DYh9zVi{WvBC+(* zx=1Xs#UK((AC(q~rIMT3S=`$Cz$VtHnyQ*hy@!!BZ8cIitB_eqOK-%JTG(gvm- zwyj1;uGbaOUI@q+zs{ftb7-$MD8kZRx*{yG#-IpGuTCq%Qpr{9v~^8*-BY}h(KP9G zS|>ZBoQba!R^T!1B)?8u&U8WrbV_nr5#N-qi=30aFRgjnfjFNrYAupsoX5r@UME9K&Sgf_ zy>C@|tAeYok~Je!9-V4)^ghe{XS4Oz(p+Y}QBx_OoK9tI@z^z^{nO0~uq2E-iCvJzwZY>%Iq(3C#!w7lVUcOLrd#OhC<7V5HmKe2JvF0`UFc`$JCsrTUKgWA!!g z0z9uip+2nMr{1o9qW(d>0lo`(xq1auS8nsfL zrWUJts#kR=e~0e{{8sruc}say`JVEU@{IC0>?OEcxkWjod`0=Pa=vn=@&#p|l2CRk zVfdE7CS|R%LTObNDD}#GWtK8kDS(skB*iX&Dt{#ZN`6=ViTpZzW#9$*N%;}^e)$gh zM(_|^Azv(?E1xExDDRfz@}L}qZx3vgSIZspk#dtEqa(b zgq#2QL%8{$KZKkA`9td|Zyf<{{^t+j=70VWZvN*F;pTtX#78W+`JX@3NvRbCxcQ$y zgq#2QL%8{$KZKkA`9rw*pFf0~|6y|<6~N8^{2|=@&mY3g|NJ4`{Ldf4&Hwx%-2BfU z!p;BuwYd48zZN(D^Vj0$fBstB{Lf#DoB#Q1aq~Za4Q~GDuffg#{55{O-ZixZxcQ&I z1~>o1-YFvD=70Vg-2Bg9gPZ^PYpO8s>PiCK{Lf!aoByw-&Hq=^=Krf{^Z(Vf`Trno z{y#{Y{}0mU|AVyo{~&GtKWN(ge~>o+AEeFy2Wj*FLE8L(05|{h2XOO0e*icC^9S-! zqyxD7pFfa8sYwL1{r>=M|35(6|M%1O|NXT6e?M*i-!EZ-{VoF9{=c8L|L@1`|FBzt z@^Je-=_WeJ*x}Q^DgdqEuwLsPaSqo$>khMV80$B@WEs(W9)&f}zWG#@j zK-L2PVGGpSCC+B&TFMG+cKcPqk&$i5@XqA6Vc0~lEjk>I?5*CB)UiF%H#%UigP+2) z64O|T`RNinlG~Dr5GxHOAXY;$D#PCY-A+rH=Vq=p1;Wc zv3-Mm<$qZ9?B)I+w!qj-#aXb~XB%6Oy>sKfp}u&mJ<`v9(h`ji_fm9tU>R)s>kRjH zvaW1pQrk9kw03t?bau6O996N^nmu71+hunJ{H^U8&%eE*a;y2W+pEU%WoJPfh`D@X zF}q;P&&0whpCMePDslnt#xBZ)#;18&I0&x<~ct2m1QhqRo$AF zHDS72m#*%ZKy%q$Np=}$#Ln<`uy1$A@{SD^>o#<*Y2C1;VpYeMiq@X)wVhp1?V66R zZjcK8_pDw$U#kW7?(L4k52TExbsl12jj*9(S;vNsuC|Vi6B-oGy$rp z$`pZi>si;%3;||nYi;i^Wwm##?#N{6!jJ*GHnnbOThY3qvMvy)N(*eUt6pT;Xe_pG z{b(>2?T<#n6IEbt553$f=p`9@=^E>~@Y6T89l0+WV=AW2YGt$Z!Et;Um5l~u17+hr z`1R*d+JsgTGi61l^uJtW&kgZChgU#nYKzB4hla=V$?mGL8jrJ}7seI*h7CqG zN*W3d4@VMh!O&o&cf9B{%B+lD^C+`sAGRLDn6s9FzBm5r+pA9PapQ^yGYbk5m zV;*tVY`DHY;;dQ5G4nY_oYtTd$vm#-m_{64_p>|9zt>;%VQo}O@9!pQbjEb&)d}Oq z|HOm5d*2AmlKM=gUqT;w-O-^4{GecHWP1ghJi0sAz)TAB73+yU$yrcSWjjU1o~U1z z)z`}coj`)QwPx+<>RjKGzVqlj=|YC?rRQmi!97N&kjR#aB%QknenJ2PZQRU%3g>bb zz|Y4|U5NcquZ*fUrzCS9G-n!mpq^oDq|edwsAr@FCUr8?Z0%>xvifz?s(zlrtjQKQ zodq2}y~(T{xp!SK5gAVPvT56z=bEtntX#$#3{7ceV-E}y-JR#d?F>b*7GQmOY^mrh z*aopw`i&*Cau_=Qd?;Bpw%q0{fX|(r62Uq(*)*`5>e#AL z4P8#7{KtCQreJIo+R@TG=_ZNq|J?bU+T}gp^C!<*m*07U_$-`0a}5yx<9}yNn(WN? z`CR92X1_UO&+6-fsX@F0Mk7gUTC?+}&W_C$*1U>fQg(0d>|O!mrmbhg#?DP0<9S*) zYL9Acd~JkRjJEEI@$*4N>&A+u!KCRKyfZw%;&20)@wbh_r&@+n#6ov)R)kFxrtH*U z#j*`+*NnSrX5_;2$l9(#e)7dhUFS+{tvuklp`G*v}&*h90AayS~myYWy=#%0GLP z%G?G%`#Jt!c&yQGHr*XZnH@*nLH0qgiS9y&@zk`%hf|TgpQi+Saj44yuS31b>wu4k z8zTJ?m<&RZ-gJ!h2i@_Q=^N?n$%h*(X^x4jnsB(J%Rp;>G*q`=_&X%4r2{dZPR7s;}YxfBg)= z|LZ$>R=}(UvKGi%AZvlF1+o^%S|DqItOc?b$XXz4fvg3x7GM^jJ^pz9pZzL4|IdCE zp8sc`kLUk^BZQs*XP?j3|If75aO%(1=hZvZE7h~q5p|Q=pcW{fC~qoHD~FV`l~Ltr zrA?Wxi1IJwSLH|Ko8^n;6Xl4!R&JI{Wy$+n@0;GIy?1&q^Pc4G^RD#H^?E!Xd4A-1 z!gHPH9M3LKx2M@t?yc61Q0V2;E6m5w<@ZjMb7+1IRwL%~G2dSrN@-u2qD zz0dy4_F=)8C~{>idkD^FFy<7EIYe$6A*n-IuOCIzYz`nDX=Yl2D@|6S;T~DLWeS z4Z&#zro1V;$$Y7J!bC40CBrA<1MyMcP#iu1Z*IGS6!nN?G`7=JvM?!f<)9+_h^kq; z(ggLfWF$BgAKn?+XDT;i7nwa797>K35BQ?+nY6@k#BBD;5s_QWDz`BC#&w;dIQ7e9 zus@hE>pXv0vG~9~-$)|DKG12Bt89qcgevky<4IHY)EKqNuF+Ja zFA?7ZYMb(lc9I+;qy2DHgej|J2lddAcnsu7naxoeC1Z^QV-c`_++4J9kc=Epfsss= z77tKk#}j?g)aZ~YudrV$H4;gfhtbpsX%S~RzEpfPG-xVW7A7N5{&2)1PFcv9J+6~Y z?-RLtFgTTF+2h-5deF!dj_i)a7`s`DV~v*?*W`u0ntH?V8FEv>!ec0Bcn>(&O*zHe z$z0IUlA{UpaGSD?#s&y%F0+-&3`GZ1@p#OfceIul+?yJ-NKv|lnlu(27)%Yr$AL{H z3y&fhcO=7cbF&p~rY;l>Mc^z0Q=zGwsNJHWVBbWew6KRN?T?2>EsA%Op#9NA#5y}p z-$-qt<@tu0z%g_GoWFqvk8vJ`MIZyap|8%Izsj2LH{}`6g3zgjQW7xYII86fUGf!QJqA zNt0RTED*UxpdLJ_B;wJq4;~rVY(HL$=`Ga%gG0gN;=>c)iHe)4t%KpdSUhBwF29Ky zjNK{*M`r8KLxqhbS$`}zV9uEw5V-=IOT?Tse|ZB9noxobDQJ#F*j%inp0%?}G%}=1 zm()=w&~8fRk_CR&PA*Z;OqVLICAD_bVGd0GQeFO%8mf`q**?iC}oRJ2DaWU3&245A&Var#XCyL`&X_WTD%%rJK)+2o^a7KoQwL!E(LkL>)KoCJGega*5V?F1 zh*>&aK|wiPk)1}x)JtdNOcl8t;12htNyTMMa_BbjC0b~em{E}YQZg;%^+yL-5j5@O z5|Sju&bmogG^LnskZ>fM>6&>(z|FbD6dYla)K$zc1ZE&6;ZYM-xpi_*fym`Caw4RY z3Z_7h;Up2x%4%QJQ9TsaGbZPQaKJk<+82wa*^4HFI=~KEk23A|4#o5W#d*+US(agC zUC%4eg~=|H=fhFVT2W`n&tU>f;_A+}j;@UzI=N^PU2b4BHqy_Yig%<{%vGUfK)!H1 zl%^Fb(2b#%c9Bq6;;S0=Z75Nh8$lgJ~R?fMymH^#GmXXeThRaSLT5Z3+39@ zc6D#)T-wv!*|pqYq!KrbD#+IAOH?z(^s*(ACDW*Ig^L7gTif2zyLMSGT%f(Dt=mv{ zA-p9rW#Cwg1q)!5nx!WX%g*1W4GIa^S6yk*as6jZ_5h zfvgFuQ*aN6CXF^Igf~ETNj8+=r6-<9+ph%P{FtKEWFB)Sd;i}jtmV{q)MwRO)$`Pp z+M^z!mMZ^HexTf^>{m`vb|@Q^1@QLomVYn5AwMDC0&oAv$$j!lxlS&Y?cNW)-}OG^ zz1Dk}0+!wo#bN9Jd zy6fD00R=DIpy#EtTdoiawZYZoDt9@Zzj40i zeB5~>_yYDgd!5Uj^PH;q2k|xWaq&j+0&$PnD=rsn!~(}Z9Pc^4?Rd~}&~c_C?%3>D z?3m+Fg+GH=;922L;WFW5VL(_bGzsN`lm89)1|H{ci%fJtl4$|@E!$4xUVI(b-+gWCxf}kZ$cKFrOgZYEPI{kiN@O z56mn`x5^3A3ev51hDinKR{1%Nj<0(eeaBAL=oY=kPSWV;NHg%CNc2I=co{oEqg(7S zcDzQn=sR|tMz_d6wojv5Y!A@~Ed6}qUtXHF3#@pC28r|9++cmniUvAUrJIv#GY^z4M zw$sr>XV3n|d1P#hMmO6df9xoYZnk0J*k*cLi6ng%6XuU?(u!DB?$PMhF4C>htzBfJ zMz?l_4I15Y>l#~6^swbtG`3EoTTQ)IqgzegrO~aXUZc^ire3Ylt#Ym+ddMozN{w!v zN;)+i(jc)BHM`(2GRI*T`Tc?Z#8r|A|S~R+K2sabG&)SYn8r|BC zjT+tBUIC46ZLbE6ZXJ5{8r?kf^2h2ly0sns8r^zJsMYA!_N~$A*7mK|=+^f2X>@D* z&e!PHaWPM$TibW8Mz^+al}5L=Z>2`Jw(lH`ZXI{CHM+IkXK8fvts;MHrbf56`wXH7 zt?fQtqg%)6G>vX;ckPuRXdRE*D*?Hx4dY#VB?wyEU3(=6TH9TFB?wyEU3(=6TH9TF zB?wyES9>K0TH9B9B?wyEQF|o_TH8x|B?wyEOM4{qA#foFeIr2}hH0i5WAKK+mM6g(wFA~meXuk+GNLUeq`8X6 z;C+EDaDoRnIK0Drow6}_X<)06LvY$*Br$Hacgh&NJg_y@9U<&e=~_$2;O&8}5)VdU zX=Z|Q@Djnw!O{)83#ZGKjKNz3TZ;`xlc6}c7EQTDWAHA)mXO0yI87NlhoL0APq32U zP)^2^qiD)>Zs8cbRj{>2SpA^ZO=r1n4{?v#ZsF8lt3Ou1seV)oyH zT6eiymHr{UBYjhPSh`WVLONU8Cq<=hsa2|$N+hT2BiGMduehFeJ?OgGb%pC3SHiW$ zwaT@~RpXlKn&h%OKXSh7eBJqi^C9PL&I8U1ohLhYIYZ8k&UUBYS>eoe3gVx{_r*70 z&%tBjUE)FUOX3+~Ox!5eif+fdj@KN|J05o2=(yZ*j^hN_e{hUrjibp??ofnJg%5-` zg_nfKgU7arxNy4F4;1q-M4HM@;HTN7Q$8TSnC(O`l z8$f@uut6B`3Pm=X=8Y|tg#yMfU1$Z9^;buRg3(xYa5OboorvJT+E<+#iP@eMo}DRl zSXrXOyQAQ%W^1Fw^vpD2v6Tt01g0U5r(HrGX9M4zqd@T4*d;^pQE(b-KJ>Z5lZ8T! zMjwXbPGQvt#_!j_}LWLN0=wn<5g%AMSy#XQgqwro}?7r47exAj+pW%^i=A?Sei9HE>QVCm{aAAc)E%y+OX7*$O zoy>OW451C01(Jsy3APt!3CqXvScih`n>eH_HJQeO?FH=WjKw?#Y+o)C{GbG8mLR|x$AKzV`rXf zzv#sI4#xU}1;RYLon^G?_b!|R9>6Z!2MbW6BgsPHdYoBUk_{!Fu#9Tg8vZ&=X%FWA zhrRa>ud3+UhtHn9Pj6rdNeBsqDuDn216WXzCeoCmU;zRI2&9>WYA5H!j$*-15k>4B zdspmTQS`C*-n-)Op0#Gzoa5{7yWa1g?|YK#n)}R}wP(+sK5N#j@oi=wPse?ivriTL zChA($o}}!OZq#pak&bcL=bF@AN>JGn@UoAj_A zqaoLPkb0`FqB{@Y{060_T+RgR(x0Gisp-?ex3ML&UA|zxfosX4*g#Jb=%Wf?{0aJL7QyP08t(_ay22-m1iuW zp1pD@w*IM(b=N!7DRnSJ$ukyn1>x10ZzKCu>)*gW)%w?SNj5fD&%+!` zHPItG7`^euF8xp6$^4vZq8iO6rEU2%S>TmRBeHRs>`4C=vEtjc! zfu5(I>f#W2`Z_MOh6Zz{ssF{*Q|)JWN*D$7IZJZnd#nUBr_RkVO4x|`l?|i`iH@PhSlx!U*l4D2RD9q$$>m>cG;tDCr+*$7 z)I*BaM*N!J*>dU8B?wZQ|HgS6GS+56yC2IsqjYm0Fs%|C4trsq%u zaOnZa^Z#q~K|W)b@rCiK@vw1&vCcTfScQ_GZHza{jXeD?{d25TAJuQrH=x{>>+`YB zAC!DI`9$*8k@W$j->Kk^3UoMJ|b)7FijY7nvN{Gtx8CKKy6+lkm&o2f{aow}dYZuMMvV&k64v zE(rY``ZV-L=wYn**M?Sv=7lDP28MEiKL_6oJ{Y_*xCYt-bAks2_XrjTb*$~54cr>I zC~!hxQQ(lkUV(i7&;D2Z_xZQ@&w}oNJWr6sGPM9_2L8q>{VnmdxLaI@<>|TNIIPoW zh=asFSg99^nD(poruMM5MO&lQXf-|`4NFyZU3VYUNA_f;#-p^1tg3TP!rfEn7ijee z4$sW_l0u_G6HdAvE3Ygm%sr{TxU(@-J!A&hPd!X^yQ;Q9YE#qd{yzN!nt_=zDc>11 z({<^LPNKG7rDl$=vQKqXudq*bO)pbxkgB7yk1n4`>m{!y=>!k8oOs7`L~14TQpCu? zR}88uFnDIJc6WR)(%jUcTzU|7c}|tmanw_cf=X{KEu^T=OVK=HJ~WR+N4h&|4L=*vPorX z8=CZ=jEPD{BYpSkI~~5e^#^H*f@sbQMvK-_{u9V92&ql>Y(5c5&#o2$x}LVvTVtVyMycD@)U&i00z z!A(+{RjQx#PvK&#`1>Ejhl#UD%%k4ljN>0N+CKWK3}kVY_%#!Gs5piC8Al{#wNb9^iRnFCS(@;`746(_r14#i6ub#MKM3}kVo*qMo3A*yL*qLSLcrhhn|!!w5< zs@JoGRER}1Q#NC(scc?Q4+$M5Yi5=p#P?dZpbD{&Dw2v&p2MNIX0)XunjIOa6=H$& zyGaWYQS7eQXCR9$;;T&LA>ue^3ehETcZP_1>SMD6iOu4%Y(ay?^v*_wRm~mJMv8Jw z)<8u1X!gLtVw%bVvgc$CEALY;tn4z;lo+l5U|P8-Vp(HzjTtbRn!Yn&UQ?6)i~gtU zftqHtbTmxFG|BaV4B!X;pkV|8P>eqnzGp0-l!skJQY?gJ7l%Dhf?+pH8)?{cs+Bn7 zagXTF(uj^|JR|yrBqSrcIXKfKLAxMgv`5j*HLf(S4IAw>{LDADhVV;+W^yr2Tj%4X zp6stW89k^&guikw1S&lLzST{msq7{m2~9psM=-x@X+zY{(9b4GqZK1Ki-h5h5w)a) zUdUx_#;8_0bKIOXUyr*v)r7qVb-m_$Fk^qnP3WxmbP+IT-|Qv~5QAwMH%g@;&!{1( zfP6t$k;4*N&mocnsTwGS4Byl2Qv$=M*r%jOPqI%*k)B|m5+6R^!RP}C<!hbGLSKt{G5qA zRJ2m-Q7Ms;v>B(C|1$@o{^@_<7%I}c8xtYd=G^nV#jz9BM_=}@81c>@{~hB{k#c>v zHAEhofs7)1B@?+q%y*WgYlxhlIRsI?oF$|}%%ed;Rh@6%s2=Tp?EvQ1wrPi$? zw1&v3ZK;Un#SGL6QR)0{dx)&dK*kXHWhU|vajY|i?jdq?mLQB~k7NrPET+;xr@qTO zM2^ZDh)5sK9ynM`;a)t#cRIC#yMIDU3a?j6o zs3EFm%(U)stViyl38z}En38x$_}vlc_r9-v;!A#m75xjz2a`7?HzvAf&gkROd!jc+FNO7h2Ss;>MnDIgB={rpb>zLs z%aO;FPC#p<9vT4$M@B`4MoJ?^k!bjj@E74X!cT_p3SS+*46=bV^a5(av%?34_XzJE z?i_9x)Py6rnU+>@OKgXZ)uk_dYEB({`2l~tXMgE}igYl8^vhg5fFPA~~a-7kK z^9e^n`m%>n1fvZ<>mTbo^hfk<`WDzQXwe(>!}Pr{_iL|f;z#HWye{q+SBTR@BjgaB zP@I|miuL_G8{v+5it!j8DOGjdY=Lz-dLOgfR5bBrj^0Hd;fct(qi#H2qL223yJtTp3Mm9U97sAgi ztOC*_^q~cPiK8^lh~$V-Q7taY6f~_1b4O5U1}SK?jk_s zje_lo^sxwmQoM-2fGL>xb>}Z2zkc^_dT+_@(A0QC@tbNI_(+)p%z}mNtsei#j`{#I z+%YEZk&!HJ$xJ>#eFu)iq3f!zGZsel0;Q4BIf7F)a*f_(OtgOLJMEtjau&N6{1?j@ zovZ!x+UvbNOMU)$$4Xz%aWT;{Kdu+y?P`_3hb&>chS8o;?_9l1a@g7xQsL!U*#t&9 zsSU;%9rf}|3Kv`=n9!qm22P!dS&=)0eOlhDz3AN{7i5#PNry~t9S*q@q^Llw?C=W{n8no%EZQH@-XQH!Wv;+vqnfW_-8HY_l{W zD1f#?eYeqX+6eXCDvQHbg4j=%x~cCVS1p4m5;p45R4yy9rT(xlMZ+EOE%cjqMSVBR z^0pKoW>E;Yn49P~x0oC0H@BD@C|*@3=7Hrye5Ft1v}Hd(u*5(9J^j4Mr# z>?6idgj{A<$lt8Y;M+{UX%XtXoPKkeZIUg|)G5Gj@hwh2TK`7boJTkm7|xOe^8u8R z5Y8vC=IiA2qeF6h-eLQ?ESYa;IldR4+6&6?)lk<-ztSS!#HUl@#`t zm0xaFx>XcT&rCj*-U4nZ*tps9;A=O?+9Ttk#q@HgPhTT_l`2eV)?@hO0?UK%jmkzu zeDty1!g?-6X)KYyWPtv<^{c!2OKh@!l~V>Bx z8{0s?xs9!-?02df94W^(m!5&|WO{&G(`EFVThpcVu&FqJeSSluf-ot_zw0PAlR%$b zB>Nmw5x`a~FnqFtTXa*a;O~5WuuXNS6zrl5H`NEOb@|p&(U@VUQkGk41b@;{e?z$UD3zc`3)Of;HZ#&qb;=x#hv`A?^UjxroI#^N z|3=P}9r^^rWa^#T1gpJ-X8G}^9>GaYPZPb6JJ$24Jm*>Z12;MSXzA-IS{06NOh1#d z%_az+^9eNae5W7nJVI?lJwWxogo=eJ`U6f+H-|@Tbb1EL*E;nBF!ga0E|WD;Y6i%h zaw-PM!BOtPO9K}@Wa8`%d4p!+4nKA44*$&_e##z4_>G?M8$5o@5liUheCl7c(|ddN z|BaQtJGFOxVgUBAgW3<;yUDMTZzLa1UW0Q0$0X+`C*l-9&t&_=7qA7mA#q}&GI2nn zf1(p?0e&BUJN^{b`Ikb|zd1e|Yy1P^L*m`zdD!9q8|(Z}VlQKze^2cC*oN5JSWB!S zHaj*Uws)*gEHCDVeZUW*JEG5HrT;*5YxJCGQ}mE%d9)|?{0*$_cS76$=E(X;DzX@> z`eBi-kx=-@@Vnt>u%6!%J~w+praIZRiZF+-HVHhsr}8g1-dc z2;LXm7;FjF1g8i0#ag{HpsUsegxmJM0Hs>%ZK;&c7OZ{c^QF&OhAWk97NgG2Sya7>B`vKwl%@i0NPJ z@9D2XL*jOQy?%;b4J!h@^+G+V>*81OrFc)gEFOim!L8zAak^MZS_5OnSnV$Du1rgH z(7Nm6?BxQ_6L7#Pu?EXftm{-*x zRqu_o?0TzKRMtZ2tV!?e^a&dN%`h>59$aQ_@vkLT@?tC*C`aMZ(r47lZimmk`reSs zFSdWvhsZo2@1);6Air+@Ueus%kdu1Y!^u!0l-sY$+;)e1mIbd!35=V=xhi;BcGw7Z zZ4+thWrs~vXNRp_CO_CZcU@L~lC}TYuHQFVVv6AY_SQ0om zm0~`SLx9qV@tq-;Jx+a?Nt7eJzIc^>^Qim^{pJDnWy*i02QyJFd_7t)6Wlb?ff-K` z@B;Ovke(y;UkqB1vG$AaMcKS;-Is&pkmJyN87CXpD08D21!kn=tQF$6CcT6COI&3A zDh=tmtm`6&4?L(;U5tn1du)F~Hh;w8F~eirFNGp)=`;;vvT>hmaQr(azivLy&R(G3 zJau}WezVZwIr_~@x@Re!)lJR%ck;WOXXAXQ%LLo!;e4mb0viS6lrXzxtfQ|X53Li< zr^l-raQKKf?usE3S5X_mtI0sRuYV=8nur7H?!GFP4Ht6^U2n zL|^?+fxdqT6lZ$^U79K<{X?Mm`=0{OlB0)8t-0~Hsx3|Ynt^tTY|V~mJ^Ott|1ntn z^3TC1J71{w+Ky;T6FW1|svRZc*kU_8BU!wjnY@S^2dfS_ch+WRri<6I&=<_RM-scv}BodAvEPHsT!U$0(OL2^oDz!rXbh4T{B*r8stEoWp2X#Q)hd*Qf z#>jV(9QoX8AO3P%SQkdi7!D1}#;-S@84>?~m-)_`MpP5?yA(yYG(^+tS3Y474>4n%SwZ zXiF16XP~vp>a5=DQLm5#=<uhD-eTueegqPgKLmp>1j6 zl?=4`j*@W={(AO3~Foq>&kQvwZv8G-#_U%#FISO2^IC;T_zl>3SPMgD{R!~9+SA>&)) zb?jMhHO@9x7;}=JLVMs&=nlyH17;-mPwt*<2fG39;yl1ji3=e&Sd=(8F)YzF5yE+Z z*W(Yyx5m$ouZYiy9~d7P&yV|JpT=H@-5J{$I|Xur8L|CiyT{r^e~rEyeIj~O^up+g z(M8dNaf?9LXejb+8<&ig+Y+={dQD}rn@8RO>{*L z>n<{K(6gl+c3x!U#E~U(W%6Ya22NMxF!@4}dlezgZ|m9u<1ZAs?#N+AMn>+HDp>WYYYPm@$jIAB7%Z0D7G+xoi)?q~uq{K8 zdsf!glU-Y2Wd@P|*B~a}43fKAS-<(OK}@!iw3q|{w$-E6FkmAMN-id0fP)UxHAJVm zxPu;Ky6l0ShU``c6rH4a4t~F)lU&R}Hx!+A(j0VM(Y@(}hSmRtK}?Jn1Bt(xm50p^ zFL(7Z98a@1{i_t+o6ePr?oH1MMJK_lBmK%?WwSRwmBC7=+`IE_sfvfqXV~d%R&WuUUjTaL;=Ws|oYm4QkeH*m+J3{*CG%kfB+9&b4wq39lKY^x7f zbT;*1m)A_DH?m5;O`oCYta)$KVW3jBQ#O?4s8`B5Wuv!TrYnB$cTHpZ(cbh-WjfRd z-T5#@(Y@(BMA5zV>R?6p)~m^i?yXmo6x~~YCMvqO{!CDGZ~Yms=-&EskfM9*!#G9v z)`tTX-P^9mD!Mm6$0)itKSwj2?{smL*C?jfdE5I)MfaBb0gCR;H)Wl&&SMyNwX#lG z=dBOQI%SJ=6s#P97_vFsqax1OlAMyaDj=6(7r`jz?$eF9`}-(s)*e6a|p^5fdO z+HG1|o1yjd{l)8ckK3;WlY`L$)*ow};#iNs_7QVT>C=Ka!+vepozh#2x3mTGh!Nn$ z{50FHvBli41(OSz4mWf5bYRXQ)8S^%k`By6C>`_vO*$|+p>(*Iv!?@d7D|VUJxe+; zkCEws^x$9Q2PQW%9d73A>A;*vro+viB^{UtQ9AzN^ruA;*zro+viB^{WD$#g(`@h{SW$(c-tn>kZDa#tVA z{nNi(_ms9^9!Kf;SM>vvJ4%O(Ia501t(<*YFz1u`;ntVQk{_4{%5*>|@-OlOlS7#f zH*@xMV9qGh;bza04$LDd9WLz$*ItvO|G?yu(&1vxo({}8DIG5MEa|{JRHnndrmgtxva9s zb8RW$p#$B5GrPL97vdKAUgF63-uxCwUZk=5hUT&ccN^{20^y4^{Lev|U(vk< zk{D_D-(<@27RY7PTjsiRuUiX5GwLk}%Jvq>Y1CVYDdStZv_NVjGX&D5%<*(>f&4~h z2ytYLB)3J0a-=BAmD>>IP~PW+MhD)A0Z|38|zj?VtqCFaAv-$9AtiQN+&6Mn4Kzr<;PC*rrn zH^SjmqSs&?Y8+_n z1rxtrjNJ?krbxck-_f7b_t7WmcfmU8dHON>ywKKAOK1-60UQNOe1@1Ori*XH8^*21 z523P98219c6?{JUQ1EtG_qzb6^H&;|8}oznjSpba@T}nY;9%(fe;If(a8KZRV+CyZ zpBXp?TK|Uy#s&5clm&{7#{voexBi{}hoSMm*1z0;lz)Hzj~*4>KiWMSi~JOMJMwho z&d8OKGb2kQM@2?Q$|AWDE&LVa9ruMd!MecF;iJOi!UMy3pR6&no0>=fZnUB zrluZ*DU|J~PtuMpjwO6>gn2$JsJi4us~L*h3si(Q=?=S^zq6 zJ@o@KhroKw_ADWT1)B|$v8kiiQoXK+zAqWXag)X6;@(W;L1F?~uN+%dKLJ*x2bGPa zM8mFK?fkhSDcX}kEi<%OB*`ME%Gho?-!Z@@Ju7^lQXwy7v9#|K_9^S{ACvJ@$K89r zk4%br$P{-nCa(65{xjlO)2HF+eo+aJgo;Pz-WgFalLgzvKX|mqF0IJs1X3D4Y z*YM_r?;ZB>l+^b&^IEr|51|_p_zv_6=HyKY-&^eCtzX}N$aWBnfK)BO4Fkxu@@Zt~ zT2YYk3l}x>en9!u?#5VjFw6@>-OF(51$P&f$s5(l04JWFLMF>h9_!kRL-?h=`?U;~Ll?+XO=7DqtS03S z879slqk`5mHTAe|9*wG0Z^;;dxU|dx!^B$ZeW2KzdTg1Vqsz!#T@QVvhlC#QAunl=IK=7% z9qPEf^*I^H$cnc!kt;-<)y1nwP{D97yZn^i`s}QMi14lKffb^bdIkAWW>rPb^lL*z zwp`PeI8f|m<&{%OxVJtl6CG*!Peyu$s3DtdG8wr3yb`k=d{!@g3Q>C*XN3mf+_7{tc7tH)hV&EpZc#U?f=K7v~i8uLu8_Uly&4VK_>b5pdjW{ zWY|ewbB}%A`{}Z)wn1@P1u-3L_eG5YvfPbRiZL3D_^e@t?*;a$QT2KDsgd(J_NkHc zS+*pKGl#kQcWe>Wc_W|ibegHy=MD$^PNP|-dGfHqSVz4P`)R$Y^!ZM683e`GWcxF~jR?9AB7v6EuQ#FobDW7V;Fv7=&# z#SV#$kByG)7uz#7I93+x9V>|y;zq<|EF9Be5Am1ichN7RA4T7RUBs88&%$EDL$Ho` zJM1G~joT70i(Y_R6Hbq&qbK0r#HMI%bYZj-_7bN@Cr8IcM@EN7hr+HxUszV?0^15X z(OA?U*%kQ(nj4=*-jBQ)c?B9A+anJ^wsA9VSKJ)AG;)4qP2}XriMVN@F|s5wAJUFP zapS^)xNUK-$lypn+`Ld6$&0j$gd+l07Jq~cw4=)N=h7S)<4NnM<#vKhqAt~t-?uHv0JA~t~;qW)kYJ3;^JoG{6 zKcQDc&xIZjJqVkOx4^2y6`{*Q>q2LRP6?e9S`}&v)j*SER_HLC<`@T!lD$KFKmyb& z)FqT3Y9ES(^x&Vc*7$Ysli<6-oxzuaPX`}`9f)ng8*$!aQ}E*8xxq7n>EQ9W0iq#T z9h@6HA~-ELF*qi;UvL=idn^rh4|Wdb!meWwCt-dId>{BC@F6Tl>}My z-2%~o;r|P_M0^7~5%2lm@W1ST1{x{%!(PNq{;Odz;u8OP{xkip{uBHw{73s2`{((O zg!PC?{;`lL?dc!n@9XaYtB)Q1N#j^!sR28A#vEfNjOC9vMj6A6A-ExOccTOg)f^*c z`1M^de*LZfnf|{1CbV3h)wk;p=yz(Z0T_R*(9U2uo#8ZwQyETSIGI5`kY-QlMdJd~&sAZ^OSi-PaLWMS(VHCqi zh65NzFznB;AH%*3!x{Er*qdQ5hCLaEF$`rG!cf7m2g6{7K@8;#0~rP|^k*nz=*Q5P zp_HKy!|n{d8G14FWaz=rouL~;2}4(gE)2yCMGT!K$9)`Oml<0R!sL%=-Ix!S5LA;u78h%kg1LJUEM0E3^wV9*%^gT~+^@cqrOi{USZ zKNbIhFuct062prOFEBjM@EpUl49_q;&F~b%lMGKVJkGG4;W36s86IJH znBgIY2N@n1IE~>{hEo_$W@wdA?n^VI7+M%s zGn~Y5qF>jv@)O8Cp4{WeJ(k>K$X!M5N^)0_yPVu*{zdJD=Qn$(=#& zVdNf4?sRgekvo;#DdZkP?!n|vCU+9K6Um)G?s#$!B6l3Q2a-FM+%e>iCU+FMBgs90 z+!5sNPwsx??n~})a`z#3Z*un{cTaMM$zm(jsMVHg)M`sLYPF>rwc1jRT5YLDt+rI7 zR$Ho3t1Z>2)s|}1YD+b0wWS)h+ER^LZK+1Bwp625TdGm3E!C*imTJ^$OEqe>r5d%` zQjJ<|sYb1~RHIf~s!^*g)u`2$YSd~=HEOk`8nxO|jaqG~My<9~qgGq0QL8Q0sMVHg z)M`sLYPF>rwOR2)#4&yCQ_>{)y|Xo-)ktjL&&WlcMoz0lRJpqa`{|WkQsg7WO2!hjjhj$?ZmN3AtU#?Luxbxkco5Cby8>PKNH&3Z#=SojmDuluoX6 zI!Gr+I=e{+SI7IbcG5{oCn24FClCy6y`{LMyc8 z##z45(V@k-DeuV8^w6Zx*wFr=Jwt;+eM3D$MWK$NWGDnH_`e5#2!0v-DEM~pwcrcE zCxZ_M?+M-(ygs-kxFL99aBc83Slc@`xHMQ7T!{PiX2L@L_~5AE@ZbO(58F&S^?`;n}0E+`R2d)Wh4qO^IKd>fna`HFGBECp|h!X-k zlFuc#C+~+0;)djw%`+@IK%xB)VQ^@(+fHHp^5@rh-S7%WK4N*tP)lo*rP7m|VgiC&OI zTwt7)D27f$0u~N;#ea@}9sd}b4Ljn`K{jxId|Uj6_?Gzk_&P`iTI0vZm&NPi3vhSf z@<4rHA!Hth1t#ORgG1w!;$!0b!Wv@#crVBZI>r<6Kx|j+=h)Yf5WJ2151xx{kKG^J z7P}#~1veqCi>-;Z#*U9I!%YYaVzXk0;$Fltv3+AhV*O*iV#TqJu|zBo-4*>g`gQc< z=-aTH_*`^5?n~Sjy&<|Kx<0xtx+dC+n-Z2q>u^`XtmvW9NzpOUeWOF7{iD5bV?xJh zA{xM||7TcM{1}=HJ0j0v&3}JnTjYkw7FbzahZTQoWER%@lOkgx`{G1L z|41*a_B%!rkwAD?_~-D~SnIzX-VuH-yghtBPI}w`YmDo|>%wcot>NRb&aVqE2+s;1 z8lDs$gH`^JaQ|?xaB;X}IDs|(F5Jubb?9SQYuteq{`S!Qp>3fXLR&)XvA$muY7HG9 z7>ipIhT`6Y-mt}(2WyN$|KI*!u+IL(|BnAP|MULG{SRQ3eWU*>{|5gBxS#Q4tg)B- z>-`J;v;BwRuEw$c{rp35V`FbvY0UE{akIkT#xKS<#wW%*kU2dMqlpg~cNjMsR~ciB zeX-K+Z}c*XaZh^!9mOu(v+%Y4vHmvhT6j+1uHTRQ7H-hDz%s--eU09#AFnUd>+}Ws zEd5Yuri{_|m1jwUx)8X|>u7}y3hNct5%$(=71k(RqHwXoYK4mwE>yTcVU@!93g;=D ztFThx9EGzL&Qf@k!Xp(Pq402pGZoHIc$mUN6;4+;P2p5RY!fIvMB%{-Co7yp2)io^ zCny}R@F0cb6do9qKjfZ*!tDwllZYL!pB4V3@JGTe;s=G_EBsF3w+g>e__e~X6n;r~ zrT9YO=L$bl_^HBA6n?DmBZVI-{6OLR3g1)suEKW|zOC>rh5u3brouNA?o{}?!q*h; zQ246CR}{Xi@Fj&W5?&!*Q24yU=M+Ax@EO9*;%S9XDST4l6AGz31hf;BpUVT+!72YE z3LhrS*RN4{wZg50dHO{PFH{KoRVY_nFfGUA3XNv<{~wZSRcQ76VRa0(3^fc(7#1^B zGc00Q$gqH+ieWy(JchXpl?-zjW;4uUIEvv&h9ejbXPC(_gW)iSLm8$sOkmv`P@z%rW9wGog9;x|c)!B?6y8g?N!+9GZiRO# zyi?&F3b!e|UEysCZ&i2;;YM+@!kZM{sPG1b*DJhE;k636nqx19{2K&U^9|xE<=>+4 zN`+S_+^q0&g_{&^B)miqD-0-;q;R3a1q!Pa&Q~~3;ar84gnNiN z3TG>%aTy9?G%ia;F`^F^G%kz5g2rXwOhuoe@GymkDx9uxn!>3Hrw~H_LE*s)Co7z! zaH7Hqgymwq!h;l!Q+S}lu?oj19IbGa!jTFOARH)0DBNG+ehT+hI9%aA3inpHm%=>> z2Z&(`hbkPRutMP;3I{73q_AA!K*IjwLWLI)Liv%ftLUR}cZIzb_EOkWVGo7f6?Rit zLRcWWD(s@LSYZ)iM?FtrM}@fxJ1EQ{%oXbuUZ(I;g_kJ2Sm8y49YlYHWeWQ#?5nVp zFh_J&Sg5d*!UDo}VmCtQ0TPBqLSbB@_K5bk!d(jgQuwFBKNSA1@Hd6OD*Q#^&kBE1 z_@lxf6n?MpJB8mW{6^u|3cphLrNS>1ey;E{g`X6s)SwBP{sh8`$V8K2telb2X zb{daDpZ+vs74|CU8Z(T8uyz_`^uW5wum6A*)0_I!`fXSzouD6uz1t^4_xVSMZVqh< zt;LS*(b%n>8JZZ{-#;_dGZYE_9DG0cT<{K9=07!956k>}2a9os-iLwbAOW~Ma9W@- za5yvu`UP+n3%BO&fJXie{)=ICaDlch`3WQewwebt$E%AEXQ7}2aU%WJ)3wwiKU={vQ z>?Z8WufbmYk+G4nLD+Y17yUi@Ay(ISL^noHjn-oqeeY-~_RT|)A0zKZo`K!L+hBR{ zQrI3$!TR7lf3L{Y$Vh)j?2Gq~6h@N%K=|+Q58+Q>i}3F7CAe{LW_V(Fgnvl50=wNs z*y+ZdgT}A=0s0Uq85ZH9H^2A|77IQRZ;O}2V>l0StynMCiWKhhnYw~vEq3D&#tEI(Usj~$w=&G{$^~>vO>MQ3(Y8EA9>U+ zm*#ZwJKIrf^BMz3xJMc6HEBWA9fMO7Y=<2>PoS4tzcrpmoB zMPA`#X(~^r40@bdzD< zbg=1nY9>!D(Z^c!jC#paq>){(R`MZ~8#~wcJU@EjrB=gw% z`h}_xk0*b1b4?}m*>N1?IORWZDf^F=ku7Y5eNH;gFkRY$b)RK0rpYWfk0kWV)?UTe zSwoJOky0C1*J_}3@86at?$1CYi`Md4vlEbA!#HW?+CvnNXCji}Vae&Z;u;YgBI{in zvUol-dA77mOWd}lW0{QoGSkIxisj;XtBO-~Vd)%toj%u#cy^4H1#7DP<@Zk{O zC$iZuq@y9ek7ZM`4~FO~1(^mhUTiMs<#OhVC`P z^;U~y=Lmm$6>j`7GZT^qY=c`#z`NbZp)C8U3zm zmQ8km{aeu0kErpWi{WOiwoh>BbKBCyyBTN=atM?y$26VZ>Lrl5dk2R&&uq(ds>FFx zBAqn^r&oF6=6yz-Yqn_D85KR1nJhAr#W`mGN0FGvSz0nuwMm3=0R1x%#dVp8``ASLgi2Wk zqPR8_ac`>Y_;z(LWu)6L9`g7PF{_^AJj$H5H1T!@TAf*U+8jffoh?MXl{KVR&H`nr zS*K6>c`4$WHk7^0OmH4LnU#Sk{*#GVBMs2Ym)d7drnDi67uu5MnE9wI*&pThi#I*~ zC1%R2Yt>Pm1H2URU>nN8X62F-S6PEccnIPFFJZDpkV6I@Y4Q-ncV5CtX2X-COxd#P zs^#*z#!OW4ZAR*eX8WNSP=ID6M`sBT-((9oLE8Uo@cr$J{DIZ&hDcLnR3tC_1+=)& z!VPfoZ_q~M-7k^f8JJ?#G9LF@kJ zz^uTiK+izf|C#@3|8+Qp-{?OSd%1bWZ;(ISZCqxYXjB`Mje$l7?9_gsKdIlMU#K4k zoBiYT0a&N~Ek1zVzsn)NSSUt|9@^j9Tex5EQtc$|aBW|$6FxBWUw#T^IErBSsh)0v z#VAs4n#d?gN&6dSP#F$K)ySKCQCK!lK?(*qx`0OxY)fervYzjef)S1iE39npO7l3K zD~kLSEOE#bAPOvzow0XH!O&C*g3NK>8Ca5n4Gx(+6=>gwVJELk3ideqf@f(1u2iYA z+PWBMeq^^4>~WMkI4YZ(me)5*S%S?}oPtG;J~mUGJSOjC=#qk64##_VweIBTn3CpE z5d~Vm=TX?ZWau&MDa9=&9l``!hSZAO#~FvXHC;HFj8T z3g$QRL?|Ff%qB6w%$M90Y;H)p9Ml~2ycBG16oTH=T;GVU#eO0`1zQ_M2vOa$yYU_OXBSGjmd~rkaDGrp9@qgGnt&!IrAbuqmTQjG8!FmX{UQIn|Hzx&duL_N|MX z>g(*_yc8^b72?qe<3^62GVzWFv;f1N50bh57tFg%a=Au*&e%dS<&(ob#-TCFJ zcs#)cscxKu_Wjbs7IZ5(ptg!sjggFsE~AxohUG~qjRc@`eF{^ms-Jvsbc=3 zc{SBA0^$iRN)_=JnHM{I!V6NJy@j4*zqpWJ+^}?RQ$y9f{wphMYlIb?m+Is$bSoq$ z1yf$Ke$`aZwfS>WFyxgB1A2{1=dQFqJU0d7T?L>vti=7`bryZM6fAb-Ncy4%iXlNlsb77Bw#gb6m2X%4?*Xj;;~y%x~?Pf;6N*h@UJBN^ia<0Uc7(t_mwX`>CsL*)!uB(;&_zj6w^v&s z|20p`$9>J5>esS>%}YY?mR%rhS;g$rQpM&a-R$OIid%Fwi?_68J{y2^n~-%a*)8UN zE%P`XZf4K=-D2<4GMCfgX3vt2N|g?m3E6Dvn4{9+V$Pn9*(x0__AKd`#p!ShAhM<7 zC{Bl)IeR*e}NR zm$n?s>41g2f02%3I2~^0?CDs=>2R}WNykb~2Q23Oi*&5ubhw$br(-#%!_A&C9c3-c z*rYC-)%zclGN5H?z&9QPUK{>wsp;3!%!zOFM3w|KSqXv#zJHORMk_&X{_F`l+Def7 ziHr#N##VbGD@PX{qCqaC1Qr6U0fkr#4OnV&)5FI4FGp(muV}t zS=wG&XMCpTuQ0tgdLmTP#;S$bG>1VktaUb-J$qpq>q-t)y9dtDk~Ef;ash5;EUmz4 zb!)|tpT_diC0?+CO43+iW)?44JOyd2Hr?U{E38Kv>&>j<1&b{|jkTvsykG@&N@Mlu z5ieMQC26cbGm952o-S#uL>ZZBK$kR@tG4ilQCqVYz86U~Tcj1~XrB(^$LO;suMIm&T&iDPFKb^3zzZy2J}sP{%aZst)mj6_B6C zBGn~cu!8c^SfDz^3sy*nG?u59c)=p)rLin^iWjVq{4`djF7d)e=4Te9u_AQ~5^~M3 z&S|ViWv;pe3081k8p~0qAi)aBNf+8{N{gDG#u`-C^J-k~z5-GSVFh(aV-ade9xQUF zG*+Rq`ZvvoP!FOvJk#GyUB|RsjH*CqK+iN*qjGtuL~69t($rkp3_EV9R>RB)iqcr1 zO7R2f(eSL%8D5yiQdRaXQtl;#T~GH&W6>%bw;AdZjae@#Nn;f&8>z)+H9?D~YZ~j> zGAEDP7qZjZJB_96-e6G{Vkoud8(rz@oyPjs!)Y?QzrQ$*^{#Bx?kkDymlmh7>~*wy zIeV7x8fxa?z%-`Z6A^>TX~|&PMq5@<0>!Oys z6Y{~1Q1flBWEH0|J(uZLnbjtmK55L*_j5CtF(KWa$S`AfktrI8CIOe?A}obwDFA`8)6nhQ5rLRD@SE86|)syn8qaE%+WSacTHoWZ`M89 ztWY}@_6xeFFx@vZomlMs44bP*3iEukJrI{e>CI*KZ&un2B`HkV9g(PooGf`OlHF67sSmebqya zoXslNChv<=m?)c%XUg~4!Q`^)+QYMQ{^&FY9 zy*LF4nWO2n$@!8Lq+*UpGN%@zFjyf` zC3Tox(anfF?>f|xpDsN#>s{Sa(_PgtV?;et)A-v|HMEoDdSAEHR97X*64w-tOI4CA zadk=^VmDG&(h!5pyzZPj*q+#%ngVukVQRA7(I}MwJG3}8$?j-OW8EksEB0=wiToK< ze_TqCHdAqGf*p%PL(ht(Fg2bN;as6wd(4HYgUnESg=&SCq{eZq$lsF+#l^CC>NOUpYOhn>8 zg`R*s;i1qC@vZT*Lg&M}-n`HW@rm)F#$)l4c+|Kt_I+$;Xo1)idm47q7DAuk#@I&a z6dV^@5}O$tYg~$x2orENzGtk1*a_=+Z$$5lUK_nAdNS+zufpk`wW&5hX#rQA^#8lxBSog z@4+dD_5QQ{D^VE#3x8yavH|AOv7~`{^u5I@-)cd2eka5B2bhdeuT`%OSKHCln6qYQdI{XixvGbqUfLNUppxC8k<4+ip+X4j})!N z^v}pF=n}SVttHtxk4c3CjD;xQ4Ye90GPwqVr0L2anpRh+qQg0 z*l4c_>`@A&8D{er^Hru=lx&7Bu9qhz7B$z_=&$Q+O;PjN8n9mw7be?v-WD^-Jeby)CcmVDvGmbyfAG>{~wH zL4+)X>U;S-vKG(JOJbR2@_nu$8fNvw24WUgbMNx0zKkX%)+y51h-8HBDsUiVj!)6eYH9Im&~+XcmX^ z9T?h3_VFDA+5zlS?RNxO4JM5Qk;@@$&tKc0TAW*U?`d)0Qj2r5v}tkQklkxHlWPw^ z`l=W%Yi z(&o;sFF3cn_a|xFIJer|nxx&%`J={zec7i*fZ^=pd)BmlsCm{^H8(A7BvScN9IpE7 zz1hdNplN&UW^~s?U1eis-C}CIgMDW+gX#+QB%iwETN}nczWPiX%09l(TN}bYzOhT= z`ytfj-P#@;rt0!w_Ng&q5c{aoS7_zzQ}uix`}ituZ29gGuU?)Kcz~d8~M~V z+FA+w_;PfuEBjRbc442&-(vQu{4HXi%HPgvFjPvU=*Nb+Dd@kpc_`Baols;6%C zQbaH`YarsfJ$qoe;QrWDM@3XasQWbuc>FdupnU)W>HI5u3%6 zSwdj?g6=k<4&7ebtN0Ge7KRv~$Qm|S%*Zi%Yg&!G^`@@6jyjL>nXXA^M?Kf&&lQ)t z{2c_}CS^`(b3~_@QRvf@zr8iT%@vnezjH(ZH+D5@bYh?Cgj5(!+bgtu4pUuC9{HB= zjgneN_Nh*vCm2gqH_r=+C8|5gVNTUS^PF;t>XO@Ym|8=$gZ+Qs3!=gY>;GTC@;@vW zB%d>eCLd1T0&9C0g`NsLWn3ZNO`aUwJ@7+vnZLJK0FC@-#RVc|1oc0RlH_9j5`7Tt z@J&gM(c6o!^fk$TVn?!@agk98TYQnk-=PNr4Tl_Npk@(tpTKoxl z!QA+Scv(D(GyLyB7vYiEow4imYs7L$3C@chqkkEz42=qmij52P3-pWa5!w*g5bGK| z(|=|x9x4bFM1KpN9ymSvUZ^S16n!$J1+?gGp;>`h(RINO{2xS52tMO~Cb}eer~l6A z=-@*C!f1JLs()(ewcs%SuxO{?CjTaVL^NSciRz)-0=F4!B0mIUf!87*`oqRs#?6t} zagIXX6L=2n=`}?bio3)$ILUu#RXk0Fj<5=D%<3f1`W-4pU6aNMB*y!|eqsVi%Jnu8LxpC>d=B14owjpFVt1am? z_bXc6-c|C5s+lCCF|6l`Y3OW?qvea#n~etfOmpR2zFW?yl1G%9S2olyY^-cpw31hN zhs&gbr>aJA&6MBL+*rMEAr@g+;Z2Z{G%c@g#&QbY(bBuLf$T59dw@K+)eNDA+-;Lr z41zX79@Zn;d|akq7_fMjLLwlM!P4lk*rONlC4f*Dy(MLLQ@RYF>$jtxl(4)$gBV zRxV$@T-p~{pnoY(AT=$;8gf~6lROwg)GtDMj%aGC(La|}!5UyubowXs7P=uxdOwz4 zp4&?=9rvY8K$dX4N-wLLyQsc?Nt6DhOgRm{`V;aeJ*Ph|KSF6x>f7Z5JU&CjaHsU~ z2n^pHvZzc|OZd0hybv&Kv3cRU(#Z=y)!^y!5QwaR`uQ^1)3D>r-t#;aSU*>umR2Hq znHqaHT0ccr0Tm>ZCf6b-zy_j|=GYH*JV{6X)st#xQeP@7kD{r3mJ!xEU&8xFdX0nC z-h9!Q6zRjw7!=vwWz-kTWA`e4b4?{*P%UexqGLrRNsAn;<_It86XhX8#cGe$GGu~m zVP@p&LNxC9BTLO42Yw7wSvPPtC@rUcAKXRsA#Wlh5(dXI0l zjGHfP*VaV!LJddnaBEdlccRmJRy)(th5JsjJUBs;puQL9`Wn^sj=mG+b9|w@b_V^X zNuPGQG;FY}dRb-7e42xvkgr#m{<5aJ%7&&z^|VSoURHW^^qjnNr4bhzNV-vE^sIIo z{ifNob}B`T6q96cQNutA4O=D%v)XE>i!O?H*zC5|S$@*kV* z3P+=`TGa?=t8%pCE)neC(jtdD+#|@`B`tEeIh^9ezvNU2!7jBNq&nrU z+T${1&9t)9j;G(WlGBc(-y}}bj-}t!FtuaoH?8lqRpxJe)pq$+?qdY5uliGdl{?(? zRe#8@a&tJp>Ua572zGzfWAdwr>iVijWhaJtzHHpfD3#QJHENp8T%;?A&YdomRWnKW zH0CGqjkc6{$WWBlOutF+r!~=Ut^$qpn>)#)Wlx1I!sey|ns2JLNt5;nd(}KnL}lBT z&9;e8KkjaiA44fRlK5#2^qae`dWstDwW&l_<>t!9#Z}FfW#};*8k7*hN8?2k7iOJ& zwuyV5TKY|LS*?bCbHOf=(@AqSf$64*$gbQZP_NY6Ih+lV*{Xu`Wp!7&k8;PTC&kN^ zWHJ5b{;OI|You|=91Z7t^C*yO&>|U#ZC=q%>i^ek_xh6WU|0X5)GA7H)yn%JqaD%@GuHTq}tO<2pjIJzQwNOWLy zH|YPr1gr9=X+$b^v`j`3( z*lN8@Z-G_z1NAa2kA4t4#67TL*edG9bg`Ex5drN>?G^1_Z6hoJ%+`i$Jv8B626t(N zj(P^|a=n|WC(^MM3hK6YxgF4@wZE-9<2bzTJ0QPR zX{4Ly#_XWHR%oO5;=eI&7 zT?TQ3b_R87g-$x@b}ONSGqA7~TIo`OP>r}GRkUI)XoX(7%y1>mc0QTk3Z-+!?=BM*9rJ`P`4$3(n%V~v*x_NfL zqgnO^t-0zHoB!EZ;^{yp@vSHczhA76oBBgzZIU} z3jK4taHLS*OhR=t!zr_6fPOZ=qr*Bk8^>K#4 z3M^=ahPW&vbx_|K*0U8F;n~j@Y&Bm{)C$FLSu`XfHyekr!V6oW3@&p+YM;qqxk9u; zd$dCD+tgT;p)MtUi>;&;+TW%oC9zraO^c^%D>T4OO-kayMv-h%_S<^5LJeGMQYyVa z$<<`O(ao8LHn@k=WOT<_oQ6iYLmgGd>58g2t#rZFB-fm*UuEXtz%+EhCn8l2hKzC< zVLeimhIY7>>1MZMhZm-y8E$5Jn-_LZLoIx;DiRrLzD=gvdPi{@isACZRA#k_rcWB` z;QP55%$U^q0!L)f3U}mEhRC26E+bQFl+I*%BO928ez?rA%)E~C1&;SaWn8{r<*~Vh z*kTq!Q5p*4R*uSGDrPIZFb!pKGe_Gz-8BteakK8pP}7`}up;Q5hPJqw>BQnVUtn?d zNY~lzfw-LK3oN$cG<3%uWz!}>#c61bJMy~?LrEG+`Q`K$GokL+bWTHk zyv_Ln>n+7;XphU>l^tWI>@Q41ecY^aZSuZ24aITu@k|-tBMr52vuibT-8x@jC8J9k zI^*WV(EJeD5m+3Z(oh$dLx@bMH@i#HP!pFKp?Zl-A5xr#j<`&!*^?-tgY|}zG!(=g zk!1RuZfU58OO1UMNyelWrJ*4%OI9(pO)a#;<%?9$kvX+c4wtDldzZGUg<7~HlFX@v zR(O{41=eR5rJ)lpQ>)(OO>I#cYT+_mX1p~E6jzw-vm_0@aG4Mp?mk~&@pMg3vU?_b z>5THVSbC?SA1=o_iYCMP0*kXp8cO13m9io;&lgy1-O^AMcbpS)ieWaJiSLny#<+}2 zwPTmSURZ1;X{9<&4b6;+8k)t^J$+#I^92@Hm-JY>qMH%Pif(a~q{le&({;YU;^~$i z?W%?uBkGYJ#owl?VU};}mLBP&XdLGYEQW6B;rtm?f86H_ET-c0K6WgQ^92?|L`?HNsBP9^ zeg3B8=g{tdJb7#K(qs#6*P8}O0BQ7V&m{H4Pl-zVV{ChCA;bid__Iip|BXc71V^-P_SS zqgO#=|4c{?7Di`A$K#gz0kE*N^ziU-A?}rXIrLcQj?h)1^Ft?xR)%Urv&HDpA)$S6D|`@l z!9NqcKX?=Fe?JG-2b+Uc!9#;1ao>BNU;(TS{1W&8w-4MC*cv!5a8jTya8zJIVDCU_ zpa9zWKlwlMzv6$ye~bSL*djQ^zsg_bKNx2Q2K#&Bez~ymhw+uM!+6@bPsEI^IG3=- zXu*x{^TaTbYYa7d8+p)?_+EcUe@4GczfxSPpQE3keW-2IkJjhXnTk?9UytBS!Pnvq zQ6&x&+XTAg#3+^xo% z4BTnsG*ZW!0=xXQ#c7;moDwo}d?YC%&FHDTbjJ1Rs3Pr*E}FoWcK!cp?@OSpDz3Hf zJ?Grv+!2JHM`i>XXs`uGKvcjH2N1`m>2B!8p6G56j2awrhd2*W9Ab z#k`pCGMZNtc-TYA9hRyCcLY<$j zbmMf!%zwwnVqpC3g&kpDVqVRFQJoVHy2gn4a?)0TS?6QXx2rjVJ4u{LIn3KEzgVZN<8 zhc_^rf}M<@qR50eImfxiX*YN~Y#vZbT|iGATnhsCJbSq-vW=39_(NrFe6?DYzsr5i# zi4(_b4%6e=@mp1lV8U8dN=1S)lxN3)fL&KA8Si>G1)CXrInX{xH`s);^RD+W00)_7 z9jX~P9byf6qx^so?f5|6z)f!)*vp!LI;))te*3FuNFEh((0t#j^fT@?@AosVHE&|Z z2~vugH!tyN7&ykv&%pUeYB?OwQK{s2)L!~KrMjFr6Kxhc=pE2g+ z>N!igdV0(%K^Gz!l16!gNElnxI}a9WT4_!8Bypz8b?Qa}Nj_b@O0E5!eS-t$-^~wr z@*Pm=67zkPw-sI(1DL^9sJv{NXbPUDQi2^kwbE)ronYKp-?OHnvj>J@z|VQ)udB1> z6^mSdj=mAr7?Q7s#|mfY9cL}l3ZiQS>g9onA60rtJXQS0+@+e{-rc)_!Ch0W14YY;PXs{r zL4`bEvY#m8;XF6?sdE~y=c89e)o~d`k@_|c4@G{rP|s*Ij$p*DF475kgc1%IT7q&O z--D#lSi&=eE)D)}zv1?~d)GKhw187)ZYkiDnxzFCoS;^~8ErHaaBv!0%Bl+loqH*G zEddZ|3@&5esdX5Fdeuy$yNe&-IvL$3a!SIL8Vao2C(DTwluSnc@%(=EtzW%b930N% znaUqd)u@VF74QjLzpAUVRl$4v2{U5sOeyyUa zzo)D2*Yj8X@4D(xDyaGsy6PH&$?lv9)OV#R^vtm_u)hPTj8?GWP>!SY5ysoSD^LSyG=4HN< zS5|ft`3=)tcvMXCF|d}q!_SyuH1Q8>Uw`L7x5C68XRQ_;V&NyP)KZQveX{gAmgkwi z-mXp9@D$)IeymR7bq3h@RZ*bR#@O_SmW?&bo2o* zGB|x>ch_iM?SWBml&Y6Y9q9v3^;CY<0kVQgma03$I#LxT3#ubjN)}X0R7$*u7W2=s z$9dY9F13_TPoK;Zi_}BZxEkCXzUiBJy3^1$Y|WGVCaN*j+F!l(2>00oqfDP-?#Hej zeTv!dnfd3cUR44O?wxAQQG>1pyWQQr;C|{@+J8HeB<~IWd%t-x>cJ z@cW}9b)l`HRiQ=k^Wq)xCGkn|2+lNs=YRP3v0ubqj6EHDD6~9wSL_-@CTxuz7Mm8U zkBtsJ7uhQkibd^D!`tk?*l*asjC>7y43CB1x9^O;8NLQ57X~8F*jsR7{k+I~k%z;- zva|N4$cE5Aq9g2Xy9N6XOCpCvX4(fLD!_QV+)mhm==;8}_u<5F4-EIfe}NvLv*6_C zx@fcNNrIU<+hf)v1hta=u&)#3OfC6o{bOBC=*hxOy2~iPyBC)uIM`C}uL>i3RVh|4 zmFW3-Ud_NR{z9}?5MI;&Lu{Qyg}c9oM-s+Y?H}NW;ZVYS;)lcYtFTZtMt_1FNJupO zgLnYp{)&Iv_NNNVPnh~$+mB#_ML%kDxqALzv^fNZqZ;Vnszz#`>`u^66fg*4CnjXVOiLGuId0C!z!evien)nGm@V%jC;_2eVo#+mnf zdkb4C-{zsD5AHDU@#V(K^EO}Zo4mOpy-{k$n@i^P{<604u=K82uOfA43+NKMm!xQ{ zn->$q6S&AcNHLs`O!Gh*Pr6^+ugL?bTxZcb$=3!ffNTBrD)q^+7*6}zXnWfTX_Uth z?;Ql!@U;S_s`p3%Q`?!ZfT?YKt$?Yme64_~s}g37v-8I&)d7W&Z($|g%QI|sO&^uP zm3*zxtIc#=Dh+b32TqNe;Mieem#w^d4nlKrV1o!uED=8qY!gQZPRZ?3@!IR0+k2aKya^~`OQg8)d^JiP|BvZug~E3 zdGr(4`{5bfUhvu&PZTnaR1D`mGQL~LIAX{b%XoZf_7dLgmKSm$0T?n>8kw_gW^WeX3_dA!^>1PL2H-!Wu6~t*y1plM^(%RY;oqgM(D2vw38^a!e0BXU_py4JmeQ<) zY1!TG;6nrTL`{t`qP(EcKN7qPG0{7l8+Z6pd_1(;M+o9Dy$M0@b^+tr`_$}w4A(== z&PVgLnw^j0Yc)F`N!WN)!r3Gsm^)Rfln0fwLok)|D3^jG_*zZMOZZy36fEXzHLe$N zyS-oBoiro+%#dF%;!NY_c#g>$RbtK1B)2rpgd+MN(uA)87p_X}KJ*{Cy zitI#l*=l<43gSGq(=4iZI?7X<%hJv=t;x_yfn~vG0-*y!)rhkHvh}p}b@m0=g2;X+ zr4LM(q&|Y(|GTMcQyWvKr1ndVPW~hLi{y8b*C+cCvu`4-`>!URNPI1^4yOT3h<_IU zdHey`^}FLo$0x_F*cjk6JvZ(pM{_(t%V;5UP31&c27GpoUdtRp~IDpsjX$^tK20AKY2UA>w>%@$~Sfv&D*Z5H5J4=zf8t{#O9 zFtel}h#tXsntSV7&CCEQd$eD{0~qxRm|S(O2H*1^a@?30em z04A$3mtI7vPpdWquq@SE!_x|j**gQg>=y!E-3rxa1T`ygouW?IJ0qxBkAkNYd^MYy z0cw^yY-n8<=<2;caI~I>Aiz&^vVI6P8GvV<9wjmNs3Wh+04b|`v?zCd1~6GY_DHIM zuI>%SWq_2`oz5!SR)+`Y+-7_Rh*=FKV=WKR)m5v_05$7*HboVx%>Xb<3erVI3S%;W z%F-Jpqtb=^nUi#%)Mf-Nt4FSa{J9GM|GMS`0>-2NWn6PAvZIy1!ihW);0M*bL_fo- zEL=or+@2twHa=-}77ikW#g&Z{v2*Cmm03865XAK;Pmo6~tj@wsg!1a$7XGC4+*lk% z7Hj}?NWwNa(()`EMaca`M=ABzSo}m5xTjCK(()|)M98PZ`Krz93RPv{CBjXWFEMJW zBdyGer^rHe`l3%*o)u4#1$}*I!5GqRmg!O_WZ@~YM~4r0ny<;iX~da8=vROz5a+k2 zDhtOEJ%JScNQ}?IT|~e4{Nv?yS91y(lkvmTWo1XRqx05I&H$eNMaXhjb!-Mebq^xd z10HsjYBE5oQ^RByP;gvVUY`Lxo#wtmWVx$SlM!$_t7v4oE3eOZ!RgL&)!V8u8GzGi zzA8eNyTw#z08lSPmb>EG48Z9$ClVlYsQIoc17x~>M1m~$X7>QohwAw8835DuGZY0Z zaIkacdp>m;Ak>FImb-VV%mAY9N0z(7F&O~UsUzfPd8mfeW&ln1{5%x3WlY8oPamo| zV>5uK4~;B$Yg3Z}M4bkQ4_WTY$7BFcr`pQz(9pF7I^FYIHAHRw@bsZ;3wZj_$a1$f zH5owEskTy^!l7J~0X&`LG(sF?xj9kK1!FQmrc-Me(!0JNcEZ+9wNP+$>N7y6>!pDE z5r?tts7%TLp#BBOa#wSF1~7F!q@2P8S?;Qh%>b(Id5=AaX>)?E{P>KZ)a5<)A*Nlm zF&UuLofl1)#B-Tb)VK^l>a>>Om(eZAuT_@;MqLkdT@bwrPB~*TK&U(Y=|z^iI%6}y zr+bFskOhs;0HRL)G!(MjTb7{I<@xWSEJ3M@lG{9A-77Odsq2?iAsB(dfhMoy@fvz|!?R|-+krc;;jF!UkIU8UNL2cN#GzxOQs zB2fdJ+f-$MPp3+FH-N|K7F1;bOjlB87t3^{V=@P*2d6hd+^u0pr#!R2`iXZV2kXMe zWcE|pi=zFyx2VX>)vlyY)J>g#d}fY%-1x$S*`P4CrdBJ@?5k=3HSGSQ@lNF`GfnF0 z>D?Eva7<<&RXq`UJ}8_5>N2y{;Fh;ZJ6^ip-(xegd@rT8%1}MV>MGV|8r8FwVsv07 zM zO$v=ny_$MHWLp2U{%HNo`hoSRb+>h6=)v&q;cLU^My^c%HvM?|+HkLZLF$|79G?)d zB9#Z4pfO#M`Y_R(I4W^)VrHT?F*0FVSELS$|1V$6t4(L1d9!5_yrM~*R$jkiZ;8~a4R3Y^SC@uMSEMs>8)vVvDdk2T*mu87Vx ze`fqV@>_G08H~JOu8LTZyUjzxe~8usfj=enaC}}kjCg+M8W)6H;rYC!1LgN*p0EvVw(|#a2d`!JQrwzw%GBpLu31fj|oo*T_3BoKezvCzh?it z{gnMJ`{vO0aAW8_`-*UxJsA3(eVTn3qV`qWDc}I!i@q8CWjjG8SM$U*)|_2wH5yJp zEN$PT=ViM467|+Wu8!JAbG`Nu)p)J15I58dM4gQBC|F0C9o`JSDakyVC*VVg&> zKS9y>`=VCNV#rG2STh^FCFzhcX!K0u(}2Zc`*}SJbkY>Y&N%mE*8m#Olgu+2g5<1w zN5e+=srPQq7brreS$jJ@==|85U7i9MFtu0cE<|ddY#r??pzCB4g$IU*>^+jMQ6P2&ET$Z zkl{~XIO3r2mUjSo*6dMh=cHlp}S(%Nc3eVKujvi^q_#l z&SI373KfIcRVpRmFoo+M6h!_YgP#UH5fUpcM3+V!YC5liu$==cCHOCe`yLehmx_4n z56d{!nisRm0uo?`@r;8y!pxN5vplY7!%5J7k9rsk^}B=dXr7N}^BO6H^58?U#)y0J zV7QMq0kA7GR1`G{mO$p-o3HWghSjZqJV{MBBV2 z>8M(_825Wi($gQ*zwP!7aF|;Y*95}GAY;l4<1I}I{$S5dfVNuQBkI zQXHsJ81Sz#aFLg-L;f`eF62j981%0(Z~@;_h5c&^UdAaraGsjZRx+84E@fX3dAl0} z=esXEY+AN~_~}3kpXG@F*cjN%1*jN+O~Ff4N+yeo*%QkX2e9$W>@p%8UnIcB^LXCS zu>fZWuI5RA9`!&-1-;)OzDr+KH<9TyuWo|vDTxVKtqu=>KLfWgr?ka`C96{MG%_5| zUBw1$#Q7~ay`&&IVB*!U&Q^h5}3JX`1Y#t3ZO#5Yt?0-J(gQ7OUfUnJ9@ zK)Gv-1kYz`Y7sm&en~JdGs~D^%vJd@jneN59ylB@oyCh<_8Bvc1>TYBoiSz_^S$qp zo-t+`^SmWFGsaBg;649(&NfbAl=~17^=1dupjR>Vnu2Nos;GKR!Shuc zHR2?vaY1ivy+-vjj39U1;4iDJNRi{si|lygkB_In-^3x|b4Kg?RSJyQ&jvqBZ3;a2 z1#$MC4gQPYtin)xQ-VAA2Zi}w8}^jo3tUkZZm%hLo=S;t#KuNa6V~u3LwnCb89T-OewNW|mp~{Ildl#kSU2xAO3EI0JB%-QrmX@FI02 z>!{U*3_%=zfg#8&teDk+u*V1k;o-BCpISf5*>+^i4}>Z ziN%TeiMjZmpB#NFQJ*MJj7UTif%tCV^xul_ioYD+39SBhc>HgRZ;js)-x9wfo{MjW z=YJn?`YYor;!ER;18VlIF?RV|B>|KaIxYOQY zZ?_+_x7l0mTkI`}9+0y)+Z*jZMA=_yudtWei|zULTp;)-+x5WkkFcZodfy#=7tsn| zj_!=^h;ENQ7Tp%z8oedDC3;0P7u_7)810L8L{~;vM3+VvN9RZ9MrTGRN9z%9U_>+u zpMl+xcO!2_c12!}?2PP)Y>zyK_yb!bw?wu?u88C!nV`y$@W@vJ#K2#nW z5sHQa)^6)vL}T0qtjJDlhqc{$%-V+N2e(*T5S=lHQw%m@9_z4H0?o11T5Qd?=2|nY z$yU8pZjG>_R>0hCzH7c^?t-`9PIHI3-F(cPpWdB*H~m(6SNi4jPMj~f9eya=;E8fe zdQ19>bYFUNdSiNJdVYFodPHhxYIo}0)LW^?Qn#c!QY%v{QX^7}le<%Mle?0SCAX$K z(sR=@)05Nn>GE_mwIj7XwG9y~wxq5|~ZZ#Zchc0+mcr# zHz)g&9m$o+70IQ^TykS_adLigZt|AomekDD?gs6o>D}{~{x|h(ALPs#gcfHV*(4^3W&^S># z_EM-V6dS0_j|dG54GBen5|*1n4WU7y0Y%Nvg?=XVUrawVKNb23(+|v#g?=P-H&cYY z5c&brx6Qu^{VUU_%r}Joj_I$>*O|f}n(52tYeIi3^i`q15&DYI|6uy0`D>vsGkwDR z71I~ZUoyqEgwUTeeZl-0)91~fGW~)1?@XUFcQSp({0Yccw5c<5(9|(O;=(9qf5&C_h+l4;O^nUX(p^pmvj?hPhJ}mShp$`guKDYRMW8A4ANdYaHvg`OhxWT7jBo+Na+ z&}BkT6nX;FiRSS_j}y97=&?eNVTw5XLXQ%9q|hUTE)lv|=pvzq3q4Hep-jh{3xysc zbb-+MLgxuRm?xBy^V0Mxir>&Ja3XXoJvc zLZ>o?T}9~LLMIEIBy^(C2|~vU9Vc`wQy5)@)(fo@S}U|hXtmHPp_M`_gqAb4&Ao(< z6gom^T4+jWQfNYGTxg6aj_C^v4GFb`nnDesL7@Rfjn9RC#uR25p`Qx>f>y2pBm`FC3nGTmxD!1OL_8`C?j`ZccUT@vV^cw4W;q&}! zU1QzA=|`-mm?9>Z&?iLiI+1@*(ma3DfybOiq%x*BYMg1ebtO}55eU6p=w(7L6?%!# ziaxDVX~ZrQ%JVt+=X3gL>-$2tGwrf25_+M~3(|`NQAZ!X`^?Ao z1XG-KF7!O1=L$VX=$Dw{%=7dLl%wF=a(PhXnekZw*dNzYE#;QYQ1Q*Yv|zVAifNZp&-65W})Ak~#x9$k_;BJ$_RhSa>& zY{dVoO2v|&05$L%d?`N=y*2sc5kEM3RrJE>V0>1*DjtgcA@*GCcI*^f z5?dc@#@;}!{h9q9b_0Hcy@2NsLGYgFsS!Gr;2gW%KFMBU9}v02o?(xPd>Z+2QL0^JCN)Y7)fdYb${+2?_6MK_W2?y-ICJtv%S z6f>?O`O%vY%aW5>N*=2{8LUloXb~r^jef-qbQ3Aa>LIuH?%uYRE)~V8jqXC{lme#- z@1p^$m9*g@*h4`Ujv%j0rH#}Q67}F1QxYwrjHvpVItI}sisGOd4T#4CrCM@-q%-ga z`r6yuh*Lw=WB{fWqrwSGNoGUKrb_n!F}ZO%0Mh2)++=J2p!rv-wvv*m!u%771uG4_ z$HSf^&>no!EcYbL%fNbEN#3W78dg?YU}>@rOIgvtI=9T6ExwU$?Hk&=$W4-}*5W!y zYBT;ycC@5Z%1EJ^d^LNO6Y62qCM0-nMq5gt^KEem=Rq_w|GtDu(Oq36&;Twg6Ywo8u+^l&iOQuz)a#MjDq_(1a3 zMeNOi_5IA?hzdBZ7Y{3V0PCsf3j5QW)zi}7(zBK=>H$7%vWKsO`;lU|df;>UdJ`AG z2bFcJL&b0~7<825JbO}is{_XNVZIs?v-w&%$u^v5tBV*qORpJ+>*#SI*db)1hVXGp0gMqYmlr>=^9rWyMojPdQ*u z=4;i7llWS7;zYhyoyLcpb*sbK#xq}a;5aU~W#b@RyXiissF`U15!YHaRM!R{d4W*Q&p2_*(T>wVH)AaD1*WX?(|@Je+*%heVRk z*^|V0WRDV_b{xR@zB02i{M>lhmpYVYQkgmN+8Ghg)QL&3#*+lpAf6FN#Jayf{bu^b^!@3pVUwk^0>`JrsXwKDl6o+84Mzw# z2+{o_$v-83mV7+<_2dQk{$Gr5{}DJf@Yjha6E`O=NVFvuC8i}t#y`Y406&P|AHO!f zDc&4k6rUC^iG2u*{|{pK#;%Ti3AX)1V&h_#{kr|EeFx(1bs}m&gPjJh{^y7V_zgt* zUlTndIwP8jyaOxygORHv1CeFc)v!OGZq0+e*+L|Nm&}LE>&!2i%gt$KsqvZdhVet= zL1T;YWn-0bm@&Xw(D0pY^!r&RfdBN`B3BftRYQ4@Y&s8d4P(VpHbRzD(`M&n6 zsK`~Y_egaPe*EN!(;|+Y(+4)JG2hc_V{>rcCr=tJZaAxh&I$G@)o0Z$%28R}+e=|3eFary;k8faia|?-Ja=nSmxaeZIZL&*uWni2h4blwrEVR- z(eJvhby;}rdo{WM9Pw$CX5q0<=OChdtUb&Rbk@o&JoU*}34(^U_Cg_C^R=+0tILgz>V@#zB{j<_ld=iCWYm-ba1y}g1Z(*>7j;g?H2??TI65nOUf#E4Q_7CNp^6SijG(${~cV>|341NQk8|HI5{`MON1OT*caj{J@jj`@Do=)%{&zs z%B!<*6Q|#lj&}Z7SJ{89vsY!|C$2mvJ(1(Jv^onXamqa44N~~BD~5Bp7CR9O9dT_I zp5f#g>U;*On>z~SS$Kz2cm%CrI-<%foWg0IUyDgX+T;jpvTz7z&uDzpclP7Uf&0Xf zmt^4#PDj?Z;-t|5^GRLb(OLL^JLknZ?5Zr>zPW?@`^ig$3wuIms>;IQo1}WeN3d@5 zMJ=t&!rPnb>Gf05!m2FXybH7LaHa6?E|k9DO5xpID1F|Q!neCn`U6)AukJ$WbFLH) z-G$O;Tq&Hm3#H%J()uiXw`q0Z@iSKa<)~C=;kjKj;I``$s5M{jq#o2fhtw`#hLKI7LFm1N;l z?T%lkq_Qkrsre*iIoQ~dRA%8nJr2Ke__lB&%IoTtX5l+cYniT=O>jUSaNKoAW#KkW z3lplD!!6CiU7FO_wD%w+SeHitA88U`6Jr3UXE=hgEIg!X4dI+{qHkTEg{Rc7G|O)r%`Sja1^%EB3%I@|e-@=7bR@P?+Pj(ntK~qlM z;~Y<4*QYWI4`^OlN(dNl*0L--pR15np{G5~sLalkY!U#*o2@)MLp@_>&3~_ZyXn$K ziT{Fpj<6!zpjshk`g&zm*=ed3di74N*s6;y&rVf$)KXVek)5Inb)qdAC(!x6TMH}FPh+e>RwT0cD((LS!YeD!;scW2B^8O8PIA(>tH_oYK6OV{mM!x? zbw^U3Emf7&!^m4;i7IfJ>l3MOM)v>SNP8gt2BQDpo&H+-d_?|Vj_>-(=?Yl?KS}*H z^&0H|&qg1J+!wt$x-4>i^pMmesk>6wM>5eFsf$zRrrJ_RrKY4p$=@Y^o_s#C8z}61 zk~bwUPM(|WjjT^D$0>l-i4PM$Pdp#__rwEbb>gKxmC z*ayf*p2l9lneo%($Hw=IPmboJ8zaAur?D&W3!wim#d(115W9a_Y*B2#*wk1hp9=W8 z{gVAS_6M%C&&3YGGJ8R!Jz8havd2d|>{7%S{5bl0^hNzeKTL;vV7Lc{dtkT+hI`=u zU=Oe-XlKvruJs$+R+U@#u#@MaQb zl;DHx4NHgLlIwO@rP#XH6bz{p+e4dzh){#zA)OL`!sLS>xl8a^Lh5u$-$sM^OMV7k z-VXEUMLam26!GAIQpAHZN)Zo^DMdUusTA?xuu{Z>lS&cqyC$NT;DldY=e`p2ALh{3LDy3ps1U^zJ6$U4;d$ctvXmoS}%%Y9ovjdkZ z72p-9hri7|+|l_3J^Uv3uwSL9hu`2H_AB{&_;=jH&?tBxzr{Vwe18w$$I&)0adlCc z9_o^invr~)pyunvOn70bM)KS_C3vrDWcwF1@^#fnpGr|9cd17Dl>Ci+O*OK;u#xwu zMiSrO$h*0sYZ!pg6!=i3R2+i92Ykfcn)O|M9Drr*zz8Ll!Sqj+lEL)8N~zf^@DG)e zp`~8NHMA{?N4}MN1F1c~RKMlk@T(N{#;e>LekFfz{Dyl28U>I1F76HH`+MU~Rc$rR z2L7&63_NKHysJ_&?B7u-8TNluDK)Iy)`Of zikT_o!I{M>;>|U#;m994uRm10`IS8iQJT4D;auZtvj4BK&I-U2{lLhiNGSa0@K3@I zg)a-YA>Q4-;i|9^dK=#4kA`jl4xlY`2>ie;>$lbu*0t7I=|8|%`yNF2J2QP0V*8b* zK7)t!^Qo<=OH%!*6H@!8Dw3ZjUrj!jyaOK9J;~$Y1%Trd6TeS9m$(Or|8jTuR<(<8S%Yh|BC$%82-Csm&XQUr^F79)z}}~uh@^;U$@T(X8%Zg zsvU{`A^OAUJ<-df1JRSC^Wb|Qf=9wnfCIQ8a+Y-rP7)XcC!lxDUztziG=VG34d!X) z!FbMLME(1j@hHv|ILBx<4lyPe;ou*GF9q)pUJ+auTo&9fSmUe=EAkPwapGbz&(|9# z75Om9qG2a~ht=iELP~bn#@6<}L4XHcS#{o0yXlAawyq}wGOzBOtkro_#E5FWs)Y{p z!Q#&mSLF@0QMI70rH=prK51DVXaw4A7O9)BIu9TM?cp!gQ3omG*}B5jIY1Cdd{igS z!){wb_8Y81wYV~Op4#Q|E>T?}PzSUNyU4Rxb%lT(h|pQKYGHK_hy%Lo;VrH0t6)9$ z-?btKxPiZi&(v8fazGr=)|v~8bz~(u01jv`USVV%et8a91KM(PkhG4dA_ueq73V(a z0rytG8<1=PnWMRiYqhK@2h0KOPkSGSBQ47Tc;I~;9tm&?@LEDqFb4tI18I07n$JH=sFOGHqzQ*#{s|*Rp(%&rMK3BTodp_P z30rIJ@G6{ugxv$nkyPYht))5+oYgtl+Cj2uI#+oP=33V*;uY28V6r6$f&a8hCu>Cx zMq4V@6B$YuTbqOBmT(P)F`~4>m>lf46e)a&Xi-|HCI?$CRe*JPkxO--s^w)lSahi` zoXA*OQjvo>*WY3%S49pMU6Of@e%ATQa%9(qOdr4L0Q81eRF;FmS7mDBBdVQSmFHmW50D=_mSha)V_!OTl|MLCbu5tQX%xI5?#fTmkeo`Z3h9+q>iYpE8M<;1kBUj|1~n}cbW zhN*70_#`Wheu!`5B~Q*0SylK>l0^P z*l<}6rd{e!XG>MLt}+M1F7>B+lc>+!Y}Gl~b|;_~z}B{7M~+X0aK)uL*mpg+TnD9G zog1y&P0Mx+pi>rJsJ#GEH*c0?g zOL8&wc-cG4MN60GY&8ts9cEpT@?2Dj+|6q(s?Onak%pOn8(WJjbNFJUN33?QsV43n z>vH&Ha@N=SH8#_x#E5|DTnvPW>zOO6rN!{n1^in-D?mA|U*GQf<*~spY97QU|AI zrD{{@dM0X;Z+B3=9lIJH|;P1aAc~G)3IU!k*OeQ`@B*E7bKTbTAxDS5*UrlU6 z+`y9(het0=><2G^ddI{6<@hu4+v4ZPTjI;&OX3G28sK=u0*uB!jlB* zuSVaN^q0wL)!kg|B&Ss`*kKjG)oH*~W`Q zvrndTw7C!$RnNs7u?K;%V^4w=%5&4RJ|9h|O*06ir?ZDmS0_`a2+r5M+ncz~n<()l zjGMfPsoq2-Ic7^~Bk6=};DmuWRu{&N`l5pUe3hd+vcOkb`CKbLFWrOXRIXsu&8JvN zIa>4S?q@3J^-|)WshqAk`oNjWVSP07*=QLY#n;N|d@sJ{ZGe+(yuh!4 z@$G;a-Xh0ih#V1|Q^_@h4I+%-5>>Lwv3L|1D~kM(QM3p!&f~m^DES ze5qqC1q`yv={3~Y5puTqWg+9|g^ZsSGJaaf`1eA_&O*jd3K>5xWc;v@@hr_Bx~6^R zKh)gQ*1i$n+r|ytST*nrzGirf`JTGwXB*^e740Cv*E|>kpYyefIPjUi#`AxGpZ}gA zEq~aKl{()yVn2wxAF5Y#IXeL=k_8yp{}ebO+DUkRSO{k#&}RJ zC(*g`1sIp*)HsE33H*z%dC&(wuF@srx-=?1RLr}C+8lN`tCiSdeUeL2|P|x}`ygmCndb1$* z_w2W*XPN7Jv+kn_#6_nZsuH{>Y1|*!WTegHE6FF5Ur!An4tjHPVRB+Jl=ut2+V4wThV%N4 zOYEDdh<_A+CH_?W8}SPeb#F<0YCM4m{lAVq3oHFqu}!fSMB$$mD@UZgU5K%_)xOkT zZ=Y-*WY^k3oP+lQqUYzMz0u>Mv!bISA4Xn@JdHR4+tatC&q<$}UXZR!eV+P#>P5sD zye#rfU}ZV&p#_z9D>GxHWuecxrewV%@(PdMWf!=;lx+ z)EPP|G$XVZ&Leyo$b>tsi>*%UaBFWX2b%aPzQ|NjDu3J{`@h9t9>_~08cE^H8r{!VdIjl&zU|cHodoTZJ z?>y{2^NQ5HgH-8W`NO)BJnTRf+Y(|!zx4@a)4r-+1^jEE6Z_QEX%_pL|e5KvS46cmsbKi z5N)PmyP3mzIi9^^^RNK%S+ZPU139zy0>ZJWyUTh+@8gx`VGJS@0v4LMt1Fn4hb8C$ z+!4V7*0#3}>T}OeY#>gNJnyb$Qr@XtQvk+I%n8n3RWoh{_TTDRQ7#b3z_gB07Iu zG#4`huUM}#4|5T9)DW+(w{vfQyLFGwQJELtK#%Zl zR|tbqK~BdXuQD(0fu5XqxjA7mD#&@KD-_F-C+B^x5SF8YocC&BNgmcCwh>XR7V8ep z-zyK>5gDiuG|pj`$I#o4?_`^dN>+$;-)_SowT;NVpxi__=L{0i^Q-N zY4I^F0Laq^rIWin50eqqi3<0NO7k!lku~Ln*(|tL-?1VOGZ7g(kD}m5epz`Qb|Naz zMfK}!b$NIJs+YAJ#|RGSbJ478v_@qfzJO!!loxcZ>FvkYRw$+_$@WlvR z=kZ!vnOm*qcV)TetjB3#MXp^<9l&(T&eYLbR+(#489lK&9br|jRo&AYxYHwDrKH|1 zFpsoFNhNLrSILpq$&tt8yo+{OITQF7554rKPzQ zYUMQmND88PIgqN_+)09S>FwHt-_D|(mAU1rGu*93H+MyDnR>V$cPf3$+T4k%rM zJOcglI3Q*mLa6Irl?Nn&Ov(Z}!ZwHU}~d0ifm1p4t_+TP#Y$-mv$J;O@E(J0FUm_TLg zO>0L|n+GU?U?~fGySlKR=NPiytYh-PCJ=~=ptbnnKf9$^rzQ`CLU9GZqANHi52V7- zWjHz&c|aDZYmNs7L{;B`u@nA(Wnf1j{d)T8^sP8)ZE1R9I*@u9=c`?Xv(lEQ=A`OU z!Q`)!_b0!cJQY^`Na9uC_qW25zdSKHk%+$?e=>dpko!l)8xVQ_7qM@}E{?5%hyFxZ z;BWzbRL#wRJW~~$H$Zq~)-eEv=Ar*I?J5480nBI8YbqTWSi8arVR& zo|0Po+X4FGl028t8)c6_33|THrp_AR&gLsCQ$9u|^hKjB~ zMe0-RsmDQ`hY8B%28*(4y-tvFy*+y=l=-PkB_se&GsnZDs`wa`snniytf%JE6BH!R zb4iMEd(tr;Md<@l^jtzQ@S#2CXejc7muip}-JK|@{KcMhl&36dH%UF0r1)!l!jVwq zN3YvYYO3*kMQT5>XB+{wsZ)Iqw@(iBmWJpgWq8h>vBZ->TA(!wl9b^Qd+)`_Fkyna z19znq@4Y6~d+ZsDJY`FZblC+-%5bCIa5ysPp~(+ftE+}ODN?`EKHxB@&zYmDqARQR zaGHCYDgMxqOv-$bJ^oN+*6)&Z4GdWB71TD_;}?3gq%>%`SJ3LRYY%}|6+Y4R8x9rf z4iLy&?C}dcrAW&mbFZMa%pN-*T6Nfnai&t}sD{%8bdI#A&4Uj25ats7Kvk3dDQGXS zrycCk_ViV;z7{X^BzA zB>~;AUAI4UYiiWYrMI&*HE**b)AsY+n(EcMzQ13=GW{vrymg8_cP_M>n%u|Y>{vGU zA#ip30O#plj|iKc?E}I?&N23^Imqe#*>H2VH?Q|+0|R-=?J4^rk8Y?>#g~9?+8*Bo zT|M|ntYUDvSI`RERr^4zqC#~CZ+^6^zviu0WX5a=3*K~XLYJYSleYQIK;E7{OJ~5) zk;kt!3X;gM$)4N@eSXp9XG<$nE%h}td+g~mJtfN!&&i4*f#teQ8b2Z(5Ps$x!glJnNeKskR`t zdCNk3>?FwboI(N)xa(X%2l&j1d=vLIS>4sLhE#|`V~Ra-0yMlcgFsGGUx~R?lqHJJn4Fp&>v+_99K~8s{Y=y05m3Dxr828G-IKsS2PP$&^aOI zEtnO?K&;0T>Owa9W^CC3vh7dV<~P>awe?(>YOctIK)%|puY+7K*ZSMnU`^YONk&m< zoMca{_1sTe3;BkF{uH#2u zEcet6{7x*K@dvW7T~-EJNr{@D=v#{Zo8Pb^lS?7+P90JKo^bWGZQgvMJ-MVv6H|KU zApd+0w5w}q9%)Y=?a`Ds7%TnN2)Rs75?ImU8k!62v7?~r9rG-rF{O3p+SB)fjvlGH z1aZ+VNTN*qHjae8egj0I2fN#zOX!WWCyywuB|}g|k*}dyZda$Fsk>dxV(KrXX}dH9 z=_puUWJQ76gO4{M3BL0twDQl=0!7T5tw?zS;u3g`QZ^bV^xrmbz(+_N5q+g zUU)+kg~s0Y_!uU$`4?$BuP?8R`cdc%wV7%>Z1xe^9 z?RpFPx<7PiMopm+va3vJ=wDxDd{ckT8>~pZ@rBuM4B0h7Xy_+(f{I)z#Jtgp(D(nS z#OVQ?y#Af^W$D%FeNrFb+rJAZo`;gJB_BBS#%jG@E`L|D{@39M2i;r9wAv) zo4eb)S3wc@eE-uNS_tcFw|zv1r!1*yp}K6BDcj@FLX_2FAGii(?YEz*mps-2^`W`Q zz1%)7m*?Z~b7PwBCEZ(Nv0j)U!qZOEY?m#1EyOX%%mPi*z*$qPe; zdoH1e0kR5u-T^{N`p(e60BP}*`pTl&KE+VpYhx#^m; zk@{omrPM>I>r>~aI#b7`_D_vVC6ezXf0}$Gc|BtLx8PjA8OhS5k@#EUKN8O;9>m#x z`NUwNIdK#``zIzw#6OO|iP-)R$8U;fP{`>P| zlVc<7-S(UIPWwsw7W*Q*!#>fTZ%?yFaqRvVP`TlM!#yzE1H(Nq+ylcsFx&(GeS4t7 znqe4N=5YMv23}huiZWsx8+(w;b3$#4flu|r$|2b3ir)^!ZZdkD5ZO`)1{gvKs-l|rC`5s; z?pfGmbaSkF8n1e&qKBsyG0`pe6fnJ? zLkdvJyF&~1H8wjhFc*b^;Fh*-Pcjtv&K_m^8eet>9ha#=!>WyadlaJ7zwKGLuW_F9 za_9(i{J7>1!A75dZz%RG;}~ZUYV;IUYl69CD86x<@xqY&*~UrEjP63~sHBPJaYIWm zcz?17$v#GNrPZij0et@g3Dm#`WN`E5?LmYlKD8&&EaPbBc{_+aRlB7_3Q)Np4=vco rIHS%wK 'Afrika', + 'AN' => 'Antarktika', + 'AS' => 'Asi', + 'EU' => 'Europa', + 'NA' => 'Noord-Amerika', + 'OC' => 'Oseani', + 'SA' => 'Suid-Amerika', +]; diff --git a/app/config/locale/af.countries.php b/app/config/locale/af.countries.php new file mode 100644 index 000000000..34cbef452 --- /dev/null +++ b/app/config/locale/af.countries.php @@ -0,0 +1,198 @@ + 'Afghanistan', + 'AO' => 'Angola', + 'AL' => 'Albanië', + 'AD' => 'Andorra', + 'AE' => 'Verenigde Arabiese Emirate', + 'AR' => 'Argentinië', + 'AM' => 'Armenië', + 'AG' => 'Antigua and Barbuda', + 'AU' => 'Australia', + 'AT' => 'Austria', + 'AZ' => 'Azerbaijan', + 'BI' => 'Burundi', + 'BE' => 'Belgium', + 'BJ' => 'Benin', + 'BF' => 'Burkina Faso', + 'BD' => 'Bangladesh', + 'BG' => 'Bulgaria', + 'BH' => 'Bahrain', + 'BS' => 'Bahamas', + 'BA' => 'Bosnia and Herzegovina', + 'BY' => 'Belarus', + 'BZ' => 'Belize', + 'BO' => 'Bolivia', + 'BR' => 'Brazil', + 'BB' => 'Barbados', + 'BN' => 'Brunei', + 'BT' => 'Bhutan', + 'BW' => 'Botswana', + 'CF' => 'Central African Republic', + 'CA' => 'Kanada', + 'CH' => 'Switserland', + 'CL' => 'Chile', + 'CN' => 'China', + 'CI' => 'Ivory Coast', + 'CM' => 'Cameroon', + 'CD' => 'DR Congo', + 'CG' => 'Republic of the Congo', + 'CO' => 'Colombia', + 'KM' => 'Comoros', + 'CV' => 'Cape Verde', + 'CR' => 'Costa Rica', + 'CU' => 'Cuba', + 'CY' => 'Cyprus', + 'CZ' => 'Czechia', + 'DE' => 'Germany', + 'DJ' => 'Djibouti', + 'DM' => 'Dominica', + 'DK' => 'Denmark', + 'DO' => 'Dominican Republic', + 'DZ' => 'Algeria', + 'EC' => 'Ecuador', + 'EG' => 'Egypt', + 'ER' => 'Eritrea', + 'ES' => 'Spain', + 'EE' => 'Estonia', + 'ET' => 'Ethiopia', + 'FI' => 'Finland', + 'FJ' => 'Fiji', + 'FR' => 'France', + 'FM' => 'Micronesia', + 'GA' => 'Gabon', + 'GB' => 'United Kingdom', + 'GE' => 'Georgia', + 'GH' => 'Ghana', + 'GN' => 'Guinea', + 'GM' => 'Gambia', + 'GW' => 'Guinea-Bissau', + 'GQ' => 'Equatorial Guinea', + 'GR' => 'Greece', + 'GD' => 'Grenada', + 'GT' => 'Guatemala', + 'GY' => 'Guyana', + 'HN' => 'Honduras', + 'HR' => 'Croatia', + 'HT' => 'Haiti', + 'HU' => 'Hungary', + 'ID' => 'Indonesia', + 'IN' => 'India', + 'IE' => 'Ireland', + 'IR' => 'Iran', + 'IQ' => 'Iraq', + 'IS' => 'Iceland', + 'IL' => 'Israel', + 'IT' => 'Italy', + 'JM' => 'Jamaica', + 'JO' => 'Jordan', + 'JP' => 'Japan', + 'KZ' => 'Kazakhstan', + 'KE' => 'Kenya', + 'KG' => 'Kyrgyzstan', + 'KH' => 'Cambodia', + 'KI' => 'Kiribati', + 'KN' => 'Saint Kitts and Nevis', + 'KR' => 'South Korea', + 'KW' => 'Kuwait', + 'LA' => 'Laos', + 'LB' => 'Lebanon', + 'LR' => 'Liberia', + 'LY' => 'Libya', + 'LC' => 'Saint Lucia', + 'LI' => 'Liechtenstein', + 'LK' => 'Sri Lanka', + 'LS' => 'Lesotho', + 'LT' => 'Lithuania', + 'LU' => 'Luxembourg', + 'LV' => 'Latvia', + 'MA' => 'Morocco', + 'MC' => 'Monaco', + 'MD' => 'Moldova', + 'MG' => 'Madagascar', + 'MV' => 'Maldives', + 'MX' => 'Mexico', + 'MH' => 'Marshall Islands', + 'MK' => 'Macedonia', + 'ML' => 'Mali', + 'MT' => 'Malta', + 'MM' => 'Myanmar', + 'ME' => 'Montenegro', + 'MN' => 'Mongolia', + 'MZ' => 'Mozambique', + 'MR' => 'Mauritania', + 'MU' => 'Mauritius', + 'MW' => 'Malawi', + 'MY' => 'Malaysia', + 'NA' => 'Namibia', + 'NE' => 'Niger', + 'NG' => 'Nigeria', + 'NI' => 'Nicaragua', + 'NL' => 'Netherlands', + 'NO' => 'Norway', + 'NP' => 'Nepal', + 'NR' => 'Nauru', + 'NZ' => 'New Zealand', + 'OM' => 'Oman', + 'PK' => 'Pakistan', + 'PA' => 'Panama', + 'PE' => 'Peru', + 'PH' => 'Philippines', + 'PW' => 'Palau', + 'PG' => 'Papua New Guinea', + 'PL' => 'Poland', + 'KP' => 'North Korea', + 'PT' => 'Portugal', + 'PY' => 'Paraguay', + 'QA' => 'Qatar', + 'RO' => 'Romania', + 'RU' => 'Russia', + 'RW' => 'Rwanda', + 'SA' => 'Saudi Arabia', + 'SD' => 'Sudan', + 'SN' => 'Senegal', + 'SG' => 'Singapore', + 'SB' => 'Solomon Islands', + 'SL' => 'Sierra Leone', + 'SV' => 'El Salvador', + 'SM' => 'San Marino', + 'SO' => 'Somalia', + 'RS' => 'Serbia', + 'SS' => 'South Sudan', + 'ST' => 'São Tomé and Príncipe', + 'SR' => 'Suriname', + 'SK' => 'Slovakia', + 'SI' => 'Slovenia', + 'SE' => 'Sweden', + 'SZ' => 'Swaziland', + 'SC' => 'Seychelles', + 'SY' => 'Syria', + 'TD' => 'Chad', + 'TG' => 'Togo', + 'TH' => 'Thailand', + 'TJ' => 'Tajikistan', + 'TM' => 'Turkmenistan', + 'TL' => 'Timor-Leste', + 'TO' => 'Tonga', + 'TT' => 'Trinidad and Tobago', + 'TN' => 'Tunisia', + 'TR' => 'Turkey', + 'TV' => 'Tuvalu', + 'TZ' => 'Tanzania', + 'UG' => 'Uganda', + 'UA' => 'Ukraine', + 'UY' => 'Uruguay', + 'US' => 'United States', + 'UZ' => 'Uzbekistan', + 'VA' => 'Vatican City', + 'VC' => 'Saint Vincent and the Grenadines', + 'VE' => 'Venezuela', + 'VN' => 'Vietnam', + 'VU' => 'Vanuatu', + 'WS' => 'Samoa', + 'YE' => 'Yemen', + 'ZA' => 'South Africa', + 'ZM' => 'Zambia', + 'ZW' => 'Zimbabwe', +]; diff --git a/app/config/locale/af.php b/app/config/locale/af.php new file mode 100644 index 000000000..ae66ae30e --- /dev/null +++ b/app/config/locale/af.php @@ -0,0 +1,21 @@ + '"Wie nie waag nie, sal nie wen nie."', // This is the line printed in the homepage and console 'view-source' + 'settings.locale' => 'af', + 'settings.direction' => 'ltr', + + // Service - Users + 'auth.emails.team' => '%s span', + 'auth.emails.confirm.title' => 'Profiel Bevestiging', + 'auth.emails.confirm.body' => 'af.email.auth.confirm.tpl', + 'auth.emails.recovery.title' => 'Verander Wagwoord', + 'auth.emails.recovery.body' => 'af.email.auth.recovery.tpl', + 'auth.emails.invitation.title' => 'Uitnodiging na %s span by %s', + 'auth.emails.invitation.body' => 'af.email.auth.invitation.tpl', + + 'locale.country.unknown' => 'Onbekend', + + 'countries' => include 'af.countries.php', + 'continents' => include 'af.continents.php', +]; diff --git a/app/config/locale/templates/af.email.auth.confirm.tpl b/app/config/locale/templates/af.email.auth.confirm.tpl new file mode 100644 index 000000000..e0a6c4035 --- /dev/null +++ b/app/config/locale/templates/af.email.auth.confirm.tpl @@ -0,0 +1,24 @@ + + + \ No newline at end of file diff --git a/app/config/locale/templates/af.email.auth.invitation.tpl b/app/config/locale/templates/af.email.auth.invitation.tpl new file mode 100644 index 000000000..eed6cf69d --- /dev/null +++ b/app/config/locale/templates/af.email.auth.invitation.tpl @@ -0,0 +1,27 @@ + + +
+ Hallo, +
+
+ Hierdie epos is vir jou gestuur omdat {{owner}} jou graag wou nooi om 'n spanlid te word van {{team}} by {{project}}. +
+
+ Om by die {{team}} span aan te sluit: +
+ {{redirect}} +
+
+ As jy nie belangstel nie, kan jy die boodskap ignoreer. +
+
+ Baie dankie, +
+ {{project}} span +
diff --git a/app/config/locale/templates/af.email.auth.recovery.tpl b/app/config/locale/templates/af.email.auth.recovery.tpl new file mode 100644 index 000000000..0b5cec7b2 --- /dev/null +++ b/app/config/locale/templates/af.email.auth.recovery.tpl @@ -0,0 +1,24 @@ + + +
+ Hallo {{name}}, +
+
+ Volg hierdie web adres om jou wagwoord te verander vir {{project}}. +
+ {{redirect}} +
+
+ As jy nie gevra het om you wagwoord te verander nie, kan jy die boodskap ignoreer. +
+
+ Baie dankie, +
+ {{project}} span +
From f6fd091da660e6a2fc3ada7f04b5a8095224bc94 Mon Sep 17 00:00:00 2001 From: Carike Blignaut-Staden Date: Tue, 1 Oct 2019 17:14:00 +0200 Subject: [PATCH 06/56] Updated the Afrikaans-translation of the remaining countries. --- .vs/appwrite/v16/.suo | Bin 23040 -> 19456 bytes app/config/locale/af.countries.php | 206 ++++++++++++++--------------- 2 files changed, 103 insertions(+), 103 deletions(-) diff --git a/.vs/appwrite/v16/.suo b/.vs/appwrite/v16/.suo index 778ec426b1f93edef8a3a7402b49953d0ab39445..a03af2a26673e7d6dfbba0e484f98ef4443dc9c8 100644 GIT binary patch delta 2292 zcmds2YfPJE6#m|?S4zuDfl`5uG76M!uyWmoT&k2?J78qQkVwoX)C89l#$^Gvg)i~P zVuBg;cz4Of7^1<=5ulWF3N$>t9e6a8ftBT*N%KBwzTh~f{8Ka6kk=a7kj+WG1+q1%w?lRSK~8xH%3+`r=mNR{s?T!MVAh5CW9F!DTvX76rJL4`KH;Mc z%Zza^LJkU=u9!A*N%M>}t=nyAQ6`m2S}+w_EpRgRaK!{Y3=J?orzu@wBIrOOhzrdD zJeWg<2jF;VGpL4x_)J3p{$)ychG;$G>;Hbf($=laU1pE`H2R_X6D!k)2`-&R=8jpR zyQv*EgeyVaAW_YK>h+3L$i8sv&mjQpMR+ml4jb+4U{ZfMz zsPt`9LraO7ZzLD|TlEWM)JKsXrUvsyZjbcbuqoVhxCuz_mi*9~t${RaAdy)43=@rL z)uoU9WX%!eaC}FaE-%5a>IA>IiSToj`x$Cre6h)|Dk{(&H5`KPcI@XGlj^#i-8~E| z5zlMnAeY0du83&Kis#&5|2tPdEBfX=&$*ZVb&uTIHXKw|FAMS)Urwt%zp!WY(#6hK z7c#HCeY-F1zYT1JviogI@GS_5oCq=qBq1H%)M@zJ3$ z&9=8YxgXve=G6iy%=m!Zxh&>x%@FyE$q2A~^$K(@E_Z)sGX|v}&BY^OOH-O@rg4Ji znnuX(b?d@Pgr00F<6vb}8BoGXzw(MxZ|b|jL|16I_z-EOUb?#1B~s{0=?CgEC;UY^ z=5<+@ysw|_Y9D;zUEQ}|MRT0r!Jh*e8;S z-U$c4s@Y@_ob+hls^|D)D0yUjC=!m0kClJO|J6Ugjr8CiaSEx=;jKMWr%g3W>r+oX zyz$JUJ9MXH+a*VGi_}>`TH|cx$>YD=+`oR;9zW3$JDb(gzFmBHbgX~i)L8%6@Wkjq f7)SZ-``*a@a&78~AJ3N#Jr{iX*2S1Tct`vWUv~O> delta 2282 zcmdUwUu;uV9LIa^`j6Y&_0MWoy1&pl%V=vmHmq8dYPXfU!M4D|96of>5t@vyk+N*_ zfub)ykjVBknF&OV4?-d@TaAf^M3NC>j7DRk4~U5x2t~%!RhpAt72}9x zn661tL~_Jh8O6jfUb?~-G!BiM5#ztmo6wtq1y}+5Wo#HLzz*tx1K^YlF5m_Yzylru zi0wnMsHCkN4c2OV7l-JSGOY0Cw^f=C(k39!p=EJ{WZGUWh~up_6u^mR}?+0joF*-VO~vzrXyC4QJ*mJX03FmZBXHD z@%HqoQlay#c)wMUuO~&<90_XI`rl6T`G-IlM8M-93Syue>;XNX7wiR3fH-&(JO!Qx z39t`51D*x@0iW}8=${8E&Mm%}|JZ0+_j7+=sQ7Dks=f<>e4 zJnoLK$7uMJzE%e)8VS;f+Cg$SD6UjkeD&GfOtvsl$WG@Xh5VHE!Y7q4*j}2>9m~FQ zLZ79t)OYB5xL#C$*h&kL&uiHIG_Lx|ua1M22fA-5q7nZtQF>kJIS8=xF*y^iF!s(Ooz8jf{2sXn#CN zosv(O=uG^x&97kPOzNz(V%RhVyr@cLjl*r|a^p{{bFcsT=C16L`qq!{lB;JL`J5?} zTy(y1urixEvF0%l1eImyVbWgv&hqGPlz@Wh&{VG%0$o}npsAjfZ8bvm^X4`Tz0P%! zH?qh}vz|d=*Tl#*Ltn}Azun^3M9zZcYN5~3P4~A7*Mw?;m+rJ#q-rfESRmy?8=+j^ zPVEMAeKIu<@Xd_dyr?rQ9<$+tvJx`lVtEv{ 'Verenigde Arabiese Emirate', 'AR' => 'Argentinië', 'AM' => 'Armenië', - 'AG' => 'Antigua and Barbuda', - 'AU' => 'Australia', - 'AT' => 'Austria', + 'AG' => 'Antigua en Barbuda', + 'AU' => 'Australië', + 'AT' => 'Oostenryk', 'AZ' => 'Azerbaijan', 'BI' => 'Burundi', - 'BE' => 'Belgium', + 'BE' => 'België', 'BJ' => 'Benin', 'BF' => 'Burkina Faso', - 'BD' => 'Bangladesh', - 'BG' => 'Bulgaria', + 'BD' => 'Bangladesj', + 'BG' => 'Bulgarye', 'BH' => 'Bahrain', 'BS' => 'Bahamas', - 'BA' => 'Bosnia and Herzegovina', + 'BA' => 'Bosnië en Herzegovina', 'BY' => 'Belarus', 'BZ' => 'Belize', 'BO' => 'Bolivia', - 'BR' => 'Brazil', + 'BR' => 'Brasilië', 'BB' => 'Barbados', 'BN' => 'Brunei', - 'BT' => 'Bhutan', + 'BT' => 'Bhoetan', 'BW' => 'Botswana', 'CF' => 'Central African Republic', 'CA' => 'Kanada', 'CH' => 'Switserland', 'CL' => 'Chile', - 'CN' => 'China', - 'CI' => 'Ivory Coast', - 'CM' => 'Cameroon', - 'CD' => 'DR Congo', - 'CG' => 'Republic of the Congo', + 'CN' => 'Sjina', + 'CI' => 'Ivoorkus', + 'CM' => 'Kameroen', + 'CD' => 'Demokratiese Republiek van die Kongo', + 'CG' => 'Republiek van die Kongo', 'CO' => 'Colombia', 'KM' => 'Comoros', - 'CV' => 'Cape Verde', + 'CV' => 'Kaap Verde', 'CR' => 'Costa Rica', - 'CU' => 'Cuba', - 'CY' => 'Cyprus', - 'CZ' => 'Czechia', - 'DE' => 'Germany', - 'DJ' => 'Djibouti', + 'CU' => 'Kuba', + 'CY' => 'Ciprus', + 'CZ' => 'Tsjeggiese Republiek', + 'DE' => 'Duitsland', + 'DJ' => 'Djiboeti', 'DM' => 'Dominica', - 'DK' => 'Denmark', - 'DO' => 'Dominican Republic', - 'DZ' => 'Algeria', + 'DK' => 'Denemarke', + 'DO' => 'Dominikaanse Republiek', + 'DZ' => 'Algerië', 'EC' => 'Ecuador', - 'EG' => 'Egypt', + 'EG' => 'Egipte', 'ER' => 'Eritrea', - 'ES' => 'Spain', - 'EE' => 'Estonia', - 'ET' => 'Ethiopia', + 'ES' => 'Spanje', + 'EE' => 'Estland', + 'ET' => 'Ethiopië', 'FI' => 'Finland', - 'FJ' => 'Fiji', - 'FR' => 'France', - 'FM' => 'Micronesia', - 'GA' => 'Gabon', - 'GB' => 'United Kingdom', + 'FJ' => 'Fidji', + 'FR' => 'Frankryk', + 'FM' => 'Mikronesië', + 'GA' => 'Gaboen', + 'GB' => 'Verenigde Koninkryk', 'GE' => 'Georgia', 'GH' => 'Ghana', - 'GN' => 'Guinea', - 'GM' => 'Gambia', - 'GW' => 'Guinea-Bissau', - 'GQ' => 'Equatorial Guinea', - 'GR' => 'Greece', + 'GN' => 'Guinee', + 'GM' => 'Gambië', + 'GW' => 'Guinee-Bissau', + 'GQ' => 'Ekwatoriaal-Guinee', + 'GR' => 'Griekeland', 'GD' => 'Grenada', 'GT' => 'Guatemala', 'GY' => 'Guyana', 'HN' => 'Honduras', - 'HR' => 'Croatia', + 'HR' => 'Kroasië', 'HT' => 'Haiti', - 'HU' => 'Hungary', - 'ID' => 'Indonesia', - 'IN' => 'India', + 'HU' => 'Hongarye', + 'ID' => 'Indonesië', + 'IN' => 'Indië', 'IE' => 'Ireland', 'IR' => 'Iran', - 'IQ' => 'Iraq', - 'IS' => 'Iceland', + 'IQ' => 'Irak', + 'IS' => 'Ysland', 'IL' => 'Israel', - 'IT' => 'Italy', + 'IT' => 'Italië', 'JM' => 'Jamaica', 'JO' => 'Jordan', 'JP' => 'Japan', - 'KZ' => 'Kazakhstan', - 'KE' => 'Kenya', + 'KZ' => 'Kazakstan', + 'KE' => 'Kenia', 'KG' => 'Kyrgyzstan', - 'KH' => 'Cambodia', + 'KH' => 'Kambodja', 'KI' => 'Kiribati', - 'KN' => 'Saint Kitts and Nevis', - 'KR' => 'South Korea', + 'KN' => 'Saint Kitts en Nevis', + 'KR' => 'Suid-Korea', 'KW' => 'Kuwait', 'LA' => 'Laos', - 'LB' => 'Lebanon', - 'LR' => 'Liberia', - 'LY' => 'Libya', + 'LB' => 'Libanon', + 'LR' => 'Liberië', + 'LY' => 'Libië', 'LC' => 'Saint Lucia', 'LI' => 'Liechtenstein', 'LK' => 'Sri Lanka', 'LS' => 'Lesotho', - 'LT' => 'Lithuania', - 'LU' => 'Luxembourg', + 'LT' => 'Litaue', + 'LU' => 'Luxemburg', 'LV' => 'Latvia', - 'MA' => 'Morocco', + 'MA' => 'Marokko', 'MC' => 'Monaco', - 'MD' => 'Moldova', - 'MG' => 'Madagascar', + 'MD' => 'Moldawië', + 'MG' => 'Madagaskar', 'MV' => 'Maldives', - 'MX' => 'Mexico', - 'MH' => 'Marshall Islands', - 'MK' => 'Macedonia', + 'MX' => 'Meksiko', + 'MH' => 'Marshall-eilande', + 'MK' => 'Macedonië', 'ML' => 'Mali', 'MT' => 'Malta', 'MM' => 'Myanmar', 'ME' => 'Montenegro', - 'MN' => 'Mongolia', - 'MZ' => 'Mozambique', - 'MR' => 'Mauritania', + 'MN' => 'Mongolië', + 'MZ' => 'Mosambiek', + 'MR' => 'Mauritanië', 'MU' => 'Mauritius', 'MW' => 'Malawi', - 'MY' => 'Malaysia', - 'NA' => 'Namibia', + 'MY' => 'Maleisië', + 'NA' => 'Namibië', 'NE' => 'Niger', - 'NG' => 'Nigeria', + 'NG' => 'Nigerië', 'NI' => 'Nicaragua', - 'NL' => 'Netherlands', - 'NO' => 'Norway', + 'NL' => 'Nederland', + 'NO' => 'Noorweë', 'NP' => 'Nepal', 'NR' => 'Nauru', - 'NZ' => 'New Zealand', + 'NZ' => 'Nieu-Seeland', 'OM' => 'Oman', 'PK' => 'Pakistan', 'PA' => 'Panama', 'PE' => 'Peru', - 'PH' => 'Philippines', + 'PH' => 'Filippyne', 'PW' => 'Palau', - 'PG' => 'Papua New Guinea', - 'PL' => 'Poland', - 'KP' => 'North Korea', + 'PG' => 'Papoea-Nieu-Guinee', + 'PL' => 'Pole', + 'KP' => 'Noord-Korea', 'PT' => 'Portugal', 'PY' => 'Paraguay', - 'QA' => 'Qatar', - 'RO' => 'Romania', - 'RU' => 'Russia', + 'QA' => 'Katar', + 'RO' => 'Roemenië', + 'RU' => 'Rusland', 'RW' => 'Rwanda', - 'SA' => 'Saudi Arabia', - 'SD' => 'Sudan', + 'SA' => 'Saoedi-Arabië', + 'SD' => 'Soedan', 'SN' => 'Senegal', 'SG' => 'Singapore', - 'SB' => 'Solomon Islands', + 'SB' => 'Salomo-eilande', 'SL' => 'Sierra Leone', 'SV' => 'El Salvador', 'SM' => 'San Marino', - 'SO' => 'Somalia', - 'RS' => 'Serbia', - 'SS' => 'South Sudan', - 'ST' => 'São Tomé and Príncipe', + 'SO' => 'Somalië', + 'RS' => 'Serwië', + 'SS' => 'Suid-Soedan', + 'ST' => 'São Tomé en Príncipe', 'SR' => 'Suriname', - 'SK' => 'Slovakia', - 'SI' => 'Slovenia', - 'SE' => 'Sweden', + 'SK' => 'Slowakye', + 'SI' => 'Slowenië', + 'SE' => 'Swede', 'SZ' => 'Swaziland', - 'SC' => 'Seychelles', - 'SY' => 'Syria', + 'SC' => 'Seychelle', + 'SY' => 'Sirië', 'TD' => 'Chad', 'TG' => 'Togo', 'TH' => 'Thailand', - 'TJ' => 'Tajikistan', + 'TJ' => 'Tadjikistan', 'TM' => 'Turkmenistan', - 'TL' => 'Timor-Leste', + 'TL' => 'Oos-Timor', 'TO' => 'Tonga', - 'TT' => 'Trinidad and Tobago', - 'TN' => 'Tunisia', - 'TR' => 'Turkey', + 'TT' => 'Trinidad en Tobago', + 'TN' => 'Tunisië', + 'TR' => 'Turkye', 'TV' => 'Tuvalu', - 'TZ' => 'Tanzania', + 'TZ' => 'Tanzanië', 'UG' => 'Uganda', - 'UA' => 'Ukraine', + 'UA' => 'Oekraïne', 'UY' => 'Uruguay', - 'US' => 'United States', - 'UZ' => 'Uzbekistan', - 'VA' => 'Vatican City', - 'VC' => 'Saint Vincent and the Grenadines', + 'US' => 'Verenigde State', + 'UZ' => 'Oesbekistan', + 'VA' => 'Vatikaanstad', + 'VC' => 'Sint Vincent en die Grenadines', 'VE' => 'Venezuela', - 'VN' => 'Vietnam', + 'VN' => 'Viëtnam', 'VU' => 'Vanuatu', 'WS' => 'Samoa', - 'YE' => 'Yemen', - 'ZA' => 'South Africa', + 'YE' => 'Jemen', + 'ZA' => 'Suid-Afrika', 'ZM' => 'Zambia', 'ZW' => 'Zimbabwe', -]; +]; \ No newline at end of file From cfb3e024a6edae0093b5e77d55d9693f84516239 Mon Sep 17 00:00:00 2001 From: Sibi Bose <30630364+the-bose@users.noreply.github.com> Date: Tue, 1 Oct 2019 21:14:25 +0530 Subject: [PATCH 07/56] Create ta.continents.php --- app/config/locale/ta.continents.php | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 app/config/locale/ta.continents.php diff --git a/app/config/locale/ta.continents.php b/app/config/locale/ta.continents.php new file mode 100644 index 000000000..4b16c1b80 --- /dev/null +++ b/app/config/locale/ta.continents.php @@ -0,0 +1,11 @@ + 'ஆப்பிரிக்கா', + 'AN' => 'அந்தாட்டிக்கா', + 'AS' => 'ஆசியா', + 'EU' => 'ஐரோப்பா', + 'NA' => 'வட அமெரிக்கா', + 'OC' => 'ஓசியானியா', + 'SA' => 'தென் அமெரிக்கா', +]; From 70e8d9559eb5cf2db7bff1849f151d320cb35324 Mon Sep 17 00:00:00 2001 From: Sibi Bose <30630364+the-bose@users.noreply.github.com> Date: Tue, 1 Oct 2019 22:30:40 +0530 Subject: [PATCH 08/56] Create ta.countries.php --- app/config/locale/ta.countries.php | 198 +++++++++++++++++++++++++++++ 1 file changed, 198 insertions(+) create mode 100644 app/config/locale/ta.countries.php diff --git a/app/config/locale/ta.countries.php b/app/config/locale/ta.countries.php new file mode 100644 index 000000000..83d83b29d --- /dev/null +++ b/app/config/locale/ta.countries.php @@ -0,0 +1,198 @@ + 'ஆப்கானித்தான்', + 'AO' => 'அங்கோலா', + 'AL' => 'அல்பேனியா', + 'AD' => 'அந்தோரா', + 'AE' => 'ஐக்கிய அரபு அமீரகம்', + 'AR' => 'அர்கெந்தீனா', + 'AM' => 'ஆர்மீனியா', + 'AG' => 'அன்டிகுவா பர்புடா', + 'AU' => 'ஆத்திரேலியா', + 'AT' => 'ஆஸ்திரியா', + 'AZ' => 'அசர்பைஜான்', + 'BI' => 'புருண்டி', + 'BE' => 'பெல்ஜியம்', + 'BJ' => 'பெனின்', + 'BF' => 'புர்கினா பாசோ', + 'BD' => 'வங்காளதேசம்', + 'BG' => 'பல்கேரியா', + 'BH' => 'பஹ்ரேய்ன்', + 'BS' => 'பகாமாசு', + 'BA' => 'பொஸ்னியாவும், ஹெர்ஸகொவினாவும்', + 'BY' => 'பெலாருஸ்', + 'BZ' => 'பெலிசு', + 'BO' => 'பொலீவியா', + 'BR' => 'பிரேஸில்', + 'BB' => 'பார்படோஸ்', + 'BN' => 'புரூணை', + 'BT' => 'பூட்டான்', + 'BW' => 'பொட்ஸ்வானா', + 'CF' => 'மத்திய ஆபிரிக்கக் குடியரசு', + 'CA' => 'கனடா', + 'CH' => 'சுவிட்சர்லாந்து', + 'CL' => 'சிலி', + 'CN' => 'சீனா', + 'CI' => 'ஐவரி கோஸ்ட்', + 'CM' => 'கமரூன்', + 'CD' => 'காங்கோ மக்களாட்சிக் குடியரசு', + 'CG' => 'காங்கோ குடியரசு', + 'CO' => 'கொலம்பியா', + 'KM' => 'கொமொரோசு', + 'CV' => 'கேப் வர்டி', + 'CR' => 'கோஸ்ட்டா ரிக்கா', + 'CU' => 'கியூபா', + 'CY' => 'சைப்பிரசு', + 'CZ' => 'செக் குடியரசு', + 'DE' => 'ஜெர்மனி', + 'DJ' => 'ஜிபூட்டி', + 'DM' => 'டொமினிக்கா', + 'DK' => 'டென்மார்க்', + 'DO' => 'டொமினிகன் குடியரசு', + 'DZ' => 'அல்ஜீரியா', + 'EC' => 'எக்குவடோர்', + 'EG' => 'எகிப்து', + 'ER' => 'எரித்திரியா', + 'ES' => 'ஸ்பெயின்', + 'EE' => 'எசுத்தோனியா', + 'ET' => 'எதியோப்பியா', + 'FI' => 'பின்லாந்து', + 'FJ' => 'பிஜி', + 'FR' => 'பிரான்ஸ்', + 'FM' => 'மைக்குரோனீசியக் கூட்டு நாடுகள்', + 'GA' => 'காபொன்', + 'GB' => 'ஐக்கிய இராச்சியம்', + 'GE' => 'ஜோர்ஜியா', + 'GH' => 'கானா', + 'GN' => 'கினியா', + 'GM' => 'கம்பியா', + 'GW' => 'கினி-பிசாவு', + 'GQ' => 'எக்குவடோரியல் கினி', + 'GR' => 'கிரேக்க நாடு', + 'GD' => 'கிரெனடா', + 'GT' => 'குவாத்தமாலா', + 'GY' => 'கயானா', + 'HN' => 'ஹொண்டூராஸ்', + 'HR' => 'குரோவாசியா', + 'HT' => 'ஹைத்தி', + 'HU' => 'ஹங்கேரி', + 'ID' => 'இந்தோனேசியா', + 'IN' => 'இந்தியா', + 'IE' => 'அயர்லாந்து', + 'IR' => 'ஈரான்', + 'IQ' => 'ஈராக்', + 'IS' => 'ஐசுலாந்து', + 'IL' => 'இசுரேல்', + 'IT' => 'இத்தாலி', + 'JM' => 'ஜமேக்கா', + 'JO' => 'ஜோர்தான்', + 'JP' => 'ஜப்பான்', + 'KZ' => 'கசக்கஸ்தான்', + 'KE' => 'கென்யா', + 'KG' => 'கிர்கிசுத்தான்', + 'KH' => 'கம்போடியா', + 'KI' => 'கிரிபட்டி', + 'KN' => 'செயிண்ட். கிட்ஸ் நெவிஸ்', + 'KR' => 'தென் கொரியா', + 'KW' => 'குவைத்', + 'LA' => 'லாவோஸ்', + 'LB' => 'லெபனான்', + 'LR' => 'லைபீரியா', + 'LY' => 'லிபியா', + 'LC' => 'செயிண்ட். லூசியா', + 'LI' => 'லெய்செஸ்டீன்', + 'LK' => 'இலங்கை', + 'LS' => 'லெசோத்தோ', + 'LT' => 'லித்துவேனியா', + 'LU' => 'லக்சம்பர்க்', + 'LV' => 'லாத்வியா', + 'MA' => 'மொரோக்கோ', + 'MC' => 'மொனாகோ', + 'MD' => 'மோல்டோவா', + 'MG' => 'மடகாஸ்கர்', + 'MV' => 'மாலைதீவுகள்', + 'MX' => 'மெக்சிகோ', + 'MH' => 'மார்ஷல் தீவுகள்', + 'MK' => 'மசிடோனியக் குடியரசு', + 'ML' => 'மாலி', + 'MT' => 'மால்ட்டா', + 'MM' => 'மியன்மார்', + 'ME' => 'மொண்டெனேகுரோ', + 'MN' => 'மங்கோலியா', + 'MZ' => 'மொசாம்பிக்', + 'MR' => 'மௌரித்தானியா', + 'MU' => 'மொரிசியசு', + 'MW' => 'மலாவி', + 'MY' => 'மலேசியா', + 'NA' => 'நமீபியா', + 'NE' => 'நைஜர்', + 'NG' => 'நைஜீரியா', + 'NI' => 'நிக்கராகுவா', + 'NL' => 'நெதர்லாந்து', + 'NO' => 'நோர்வே', + 'NP' => 'நேபாளம்', + 'NR' => 'நவூரு', + 'NZ' => 'நியூசிலாந்து', + 'OM' => 'ஓமான்', + 'PK' => 'பாகிஸ்தான்', + 'PA' => 'பனாமா', + 'PE' => 'பெரு', + 'PH' => 'பிலிப்பைன்ஸ்', + 'PW' => 'பலாவு', + 'PG' => 'பப்புவா நியூகினியா', + 'PL' => 'போலந்து', + 'KP' => 'வட கொரியா', + 'PT' => 'போர்த்துக்கல்', + 'PY' => 'பராகுவே', + 'QA' => 'கட்டார்', + 'RO' => 'உருமேனியா', + 'RU' => 'ரஷ்யா', + 'RW' => 'ருவாண்டா', + 'SA' => 'சவூதி அரேபியா', + 'SD' => 'சூடான்', + 'SN' => 'செனிகல்', + 'SG' => 'சிங்கப்பூர்', + 'SB' => 'சொலமன் தீவுகள்', + 'SL' => 'சியேரா லியோனி', + 'SV' => 'எல் சல்வடோர்', + 'SM' => 'சான் மரீனோ', + 'SO' => 'சோமாலியா', + 'RS' => 'செர்பியா', + 'SS' => 'தென் சூடான்', + 'ST' => 'சாவோ தொமே மற்றும் பிரின்சிப்பி', + 'SR' => 'சுரிநாம்', + 'SK' => 'சிலவாக்கியா', + 'SI' => 'சுலோவீனியா', + 'SE' => 'சுவீடன்', + 'SZ' => 'சுவாசிலாந்து', + 'SC' => 'சீசெல்சு', + 'SY' => 'சிரியா', + 'TD' => 'சாட்', + 'TG' => 'டோகோ', + 'TH' => 'தாய்லாந்து', + 'TJ' => 'தாஜிக்ஸ்தான்', + 'TM' => 'துருக்மெனிஸ்தான்', + 'TL' => 'திமோர்-லெஸ்தே', + 'TO' => 'டொங்கா', + 'TT' => 'ட்ரினிடாட்டும் டொபாகோவும்', + 'TN' => 'துனீசியா', + 'TR' => 'துருக்கி', + 'TV' => 'துவாலு', + 'TZ' => 'தான்ஸானியா', + 'UG' => 'உகாண்டா', + 'UA' => 'உக்ரைன்', + 'UY' => 'உருகுவை', + 'US' => 'ஐக்கிய அமெரிக்கா', + 'UZ' => 'உஸ்பெகிஸ்தான்', + 'VA' => 'வத்திக்கான் நகர்', + 'VC' => 'செயின்ட் வின்செண்டு மற்றும் கிரெனடீன்கள்', + 'VE' => 'வெனிசுவேலா', + 'VN' => 'வியட்நாம்', + 'VU' => 'வனுவாட்டு', + 'WS' => 'சமோவா', + 'YE' => 'யேமன்', + 'ZA' => 'தென்னாபிரிக்கா', + 'ZM' => 'சாம்பியா', + 'ZW' => 'ஸிம்பாப்வே', +]; From e55019e8a54d81c5d122b35b775d8173c2efeaa5 Mon Sep 17 00:00:00 2001 From: Alexey Pyltsyn Date: Tue, 1 Oct 2019 20:10:16 +0300 Subject: [PATCH 09/56] Replace Github with GitHub --- README.md | 46 ++++++++++++++-------------- app/views/console/comps/footer.phtml | 2 +- 2 files changed, 24 insertions(+), 24 deletions(-) diff --git a/README.md b/README.md index d6568bc8e..a82d9c2a2 100644 --- a/README.md +++ b/README.md @@ -100,26 +100,26 @@ We really ❤️ pull requests! If you wish to help, you can learn more about ho Created by [Eldad Fux](https://twitter.com/eldadfux) with the amazing help of our **amazing contributors:** -* 🇺🇸 Justin Dorfman ([Github](https://github.com/jdorfman), [Twitter](https://twitter.com/jdorfman)) -* 🇺🇳 0xflotus ([Github](https://github.com/0xflotus)) -* 🇳🇴 Petter Charles Redfern ([Github](https://github.com/Chaaarles)) -* 🇧🇷 Jessé Souza ([Github](https://github.com/jessescn)) -* 🇪🇸 Esther Álvarez Feijoo ([Github](https://github.com/EstherAF)) -* 🇮🇳 Christy Jacob ([Github](https://github.com/christyjacob4), [Linkedin](https://www.linkedin.com/in/christyjacob4/)) -* 🇺🇦 Dmitriy Danilov ([Github](https://github.com/daniloff200), [Twitter](https://twitter.com/daniloff200)) -* 🇮🇩 Zeet ([Github](https://github.com/Kiy4h)) -* 🇫🇮 Pessi Päivärinne ([Github](https://github.com/pessip)) -* 🇺🇳 Sergi Vos ([Github](https://github.com/sergivb01), [Twitter](https://twitter.com/sergivb01), [Linkedin](https://www.linkedin.com/in/sergivb01/)) -* 🇮🇱 Tomer Cohen ([Github](https://github.com/tomer), [Twitter](https://twitter.com/tomer)) -* 🇧🇷 Tatiana ([Github](https://github.com/tacoelho)) -* 🇬🇷 Panagiotis Skarlas ([Github](https://github.com/1qk1), [Twitter](https://twitter.com/qktweets)) -* 🇷🇺 Alexey Pyltsyn ([Github](https://github.com/lex111)) -* 🇩🇪 Robin C ([Github](https://github.com/Taminoful)) -* 🇮🇳 Parikshit Hooda ([Github](https://github.com/Parikshit-Hooda)) -* 🇫🇷 Corentin Le Fur ([Github](https://github.com/crtlf)) -* 🇬🇧 Callum Lowry ([Github](https://github.com/Girxffe)) -* 🇷🇴 Bogdan Covrig ([Github](https://github.com/BogDAAAMN), [Twitter](https://twitter.com/BogdanCovrig)) -* 🇳🇱 Kolkies ([Github](https://github.com/kolkies.dev)) -* 🇹🇷 Mustafa Dur ([Github](https://github.com/tosbaha)) -* 🇵🇹 Luís Pinto ([Github](https://github.com/LiTO773)) -* 🇮🇳 Saksham Saxena ([Github](https://github.com/sakkshm)) +* 🇺🇸 Justin Dorfman ([GitHub](https://github.com/jdorfman), [Twitter](https://twitter.com/jdorfman)) +* 🇺🇳 0xflotus ([GitHub](https://github.com/0xflotus)) +* 🇳🇴 Petter Charles Redfern ([GitHub](https://github.com/Chaaarles)) +* 🇧🇷 Jessé Souza ([GitHub](https://github.com/jessescn)) +* 🇪🇸 Esther Álvarez Feijoo ([GitHub](https://github.com/EstherAF)) +* 🇮🇳 Christy Jacob ([GitHub](https://github.com/christyjacob4), [Linkedin](https://www.linkedin.com/in/christyjacob4/)) +* 🇺🇦 Dmitriy Danilov ([GitHub](https://github.com/daniloff200), [Twitter](https://twitter.com/daniloff200)) +* 🇮🇩 Zeet ([GitHub](https://github.com/Kiy4h)) +* 🇫🇮 Pessi Päivärinne ([GitHub](https://github.com/pessip)) +* 🇺🇳 Sergi Vos ([GitHub](https://github.com/sergivb01), [Twitter](https://twitter.com/sergivb01), [Linkedin](https://www.linkedin.com/in/sergivb01/)) +* 🇮🇱 Tomer Cohen ([GitHub](https://github.com/tomer), [Twitter](https://twitter.com/tomer)) +* 🇧🇷 Tatiana ([GitHub](https://github.com/tacoelho)) +* 🇬🇷 Panagiotis Skarlas ([GitHub](https://github.com/1qk1), [Twitter](https://twitter.com/qktweets)) +* 🇷🇺 Alexey Pyltsyn ([GitHub](https://github.com/lex111)) +* 🇩🇪 Robin C ([GitHub](https://github.com/Taminoful)) +* 🇮🇳 Parikshit Hooda ([GitHub](https://github.com/Parikshit-Hooda)) +* 🇫🇷 Corentin Le Fur ([GitHub](https://github.com/crtlf)) +* 🇬🇧 Callum Lowry ([GitHub](https://github.com/Girxffe)) +* 🇷🇴 Bogdan Covrig ([GitHub](https://github.com/BogDAAAMN), [Twitter](https://twitter.com/BogdanCovrig)) +* 🇳🇱 Kolkies ([GitHub](https://github.com/kolkies.dev)) +* 🇹🇷 Mustafa Dur ([GitHub](https://github.com/tosbaha)) +* 🇵🇹 Luís Pinto ([GitHub](https://github.com/LiTO773)) +* 🇮🇳 Saksham Saxena ([GitHub](https://github.com/sakkshm)) diff --git a/app/views/console/comps/footer.phtml b/app/views/console/comps/footer.phtml index 13b1b3e78..bde82eeb0 100644 --- a/app/views/console/comps/footer.phtml +++ b/app/views/console/comps/footer.phtml @@ -4,7 +4,7 @@ $home = $this->getParam('home', '');
-
\ No newline at end of file + diff --git a/docker/nginx.conf b/docker/nginx.conf index d92e24fbb..db1dc8c20 100644 --- a/docker/nginx.conf +++ b/docker/nginx.conf @@ -88,7 +88,7 @@ http { add_header Cache-Control "public"; } - # CSS and Javascript + # CSS and JavaScript location ~* \.(?:css|js)$ { expires 1y; access_log off; @@ -145,4 +145,4 @@ http { deny all; } } -} \ No newline at end of file +} From 753bbd9995614ba97a1b61f5d1fc615114894a33 Mon Sep 17 00:00:00 2001 From: eldadfux Date: Wed, 2 Oct 2019 22:04:19 +0300 Subject: [PATCH 35/56] Updated credits --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index f026c6c26..e3590efe1 100644 --- a/README.md +++ b/README.md @@ -124,3 +124,4 @@ Created by [Eldad Fux](https://twitter.com/eldadfux) with the amazing help of ou * 🇵🇹 Luís Pinto ([GitHub](https://github.com/LiTO773)) * 🇮🇳 Saksham Saxena ([GitHub](https://github.com/sakkshm)) * 🇮🇱 Dima Vishnevetsky ([GitHub](https://github.com/dimshik100), [Twitter](https://twitter.com/dimshik100)) +* 🇭🇺 lacexd ([GitHub](https://github.com/lacexd)) From 0f992ce41757dc3cf7fc574c45ec77184fc23fb2 Mon Sep 17 00:00:00 2001 From: Bogdan Covrig Date: Thu, 3 Oct 2019 00:30:52 +0200 Subject: [PATCH 36/56] Add Slack logo icon --- public/images/oauth/slack.png | Bin 0 -> 20144 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 public/images/oauth/slack.png diff --git a/public/images/oauth/slack.png b/public/images/oauth/slack.png new file mode 100644 index 0000000000000000000000000000000000000000..13f9ae1ffd1d9d954ab9c15637fb6176ca708de6 GIT binary patch literal 20144 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 a2^1V=87Td1GP?DzqBM?aA+wdw`Tai|ojeZ! literal 0 HcmV?d00001 From 5997df1417381d2952e005d5c5d4571cc3db90f8 Mon Sep 17 00:00:00 2001 From: Bogdan Covrig Date: Thu, 3 Oct 2019 00:34:53 +0200 Subject: [PATCH 37/56] Updated Slack logo icon transparancy --- public/images/oauth/slack.png | Bin 20144 -> 22351 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/public/images/oauth/slack.png b/public/images/oauth/slack.png index 13f9ae1ffd1d9d954ab9c15637fb6176ca708de6..9de2cbc5b3a4be8b5dc01d97b35bd3d0b1935093 100644 GIT binary patch delta 6576 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 delta 4351 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 Date: Thu, 3 Oct 2019 00:36:57 +0200 Subject: [PATCH 38/56] Add Swedish templates --- .../templates/sv.email.auth.confirm.tpl | 24 +++++++++++++++++ .../templates/sv.email.auth.invitation.tpl | 27 +++++++++++++++++++ .../templates/sv.email.auth.recovery.tpl | 24 +++++++++++++++++ 3 files changed, 75 insertions(+) create mode 100644 app/config/locale/templates/sv.email.auth.confirm.tpl create mode 100644 app/config/locale/templates/sv.email.auth.invitation.tpl create mode 100644 app/config/locale/templates/sv.email.auth.recovery.tpl diff --git a/app/config/locale/templates/sv.email.auth.confirm.tpl b/app/config/locale/templates/sv.email.auth.confirm.tpl new file mode 100644 index 000000000..0b1e4451f --- /dev/null +++ b/app/config/locale/templates/sv.email.auth.confirm.tpl @@ -0,0 +1,24 @@ + + +
+ Hej {{name}}, +
+
+ Vänligen följ länken nedan för att verifiera din epostadress. +
+ {{redirect}} +
+
+ Om du inte vill verifiera din epostadress så kan du ignorera detta meddelande. +
+
+ Tack, +
+ {{project}}-teamet +
\ No newline at end of file diff --git a/app/config/locale/templates/sv.email.auth.invitation.tpl b/app/config/locale/templates/sv.email.auth.invitation.tpl new file mode 100644 index 000000000..604e94227 --- /dev/null +++ b/app/config/locale/templates/sv.email.auth.invitation.tpl @@ -0,0 +1,27 @@ + + +
+ Hej, +
+
+ {{owner}} vill bjuda in dig att bli del av {{team}}-teamet inom {{project}}. +
+
+ Följ denna länk för att bli del av {{team}}-teamet: +
+ {{redirect}} +
+
+ Om du inte är intresserad så kan du ignorera detta meddelande. +
+
+ Tack, +
+ {{project}}-teamet +
diff --git a/app/config/locale/templates/sv.email.auth.recovery.tpl b/app/config/locale/templates/sv.email.auth.recovery.tpl new file mode 100644 index 000000000..dba922155 --- /dev/null +++ b/app/config/locale/templates/sv.email.auth.recovery.tpl @@ -0,0 +1,24 @@ + + +
+ Hej {{name}}, +
+
+ Följ denna länk för att ändra ditt {{project}} lösenord. +
+ {{redirect}} +
+
+ Om du inte bett om att ändr ditt lösenord så kan du ignorera detta meddelande. +
+
+ Tack, +
+ {{project}}-teamet +
From 594aec163afc66b0d0fa69bc7d08d721b7cff6da Mon Sep 17 00:00:00 2001 From: Simon B Date: Thu, 3 Oct 2019 01:28:56 +0200 Subject: [PATCH 39/56] Add Swedish country and continent names, and link up the new translations --- app/config/locale/sv.continents.php | 11 ++ app/config/locale/sv.countries.php | 198 ++++++++++++++++++++++++++++ app/config/locale/sv.php | 21 +++ 3 files changed, 230 insertions(+) create mode 100644 app/config/locale/sv.continents.php create mode 100644 app/config/locale/sv.countries.php create mode 100644 app/config/locale/sv.php diff --git a/app/config/locale/sv.continents.php b/app/config/locale/sv.continents.php new file mode 100644 index 000000000..ba158cccf --- /dev/null +++ b/app/config/locale/sv.continents.php @@ -0,0 +1,11 @@ + 'Afrika', + 'AN' => 'Antarktis', + 'AS' => 'Asien', + 'EU' => 'Europa', + 'NA' => 'Nordamerika', + 'OC' => 'Oceanien', + 'SA' => 'Sydamerika', +]; diff --git a/app/config/locale/sv.countries.php b/app/config/locale/sv.countries.php new file mode 100644 index 000000000..7bfc8f22a --- /dev/null +++ b/app/config/locale/sv.countries.php @@ -0,0 +1,198 @@ + 'Afganistan', + 'AO' => 'Angola', + 'AL' => 'Albanien', + 'AD' => 'Andorra', + 'AE' => 'Förenade Arabemiraterna', + 'AR' => 'Argentina', + 'AM' => 'Armenien', + 'AG' => 'Antigua och Barbuda', + 'AU' => 'Australien', + 'AT' => 'Österrike', + 'AZ' => 'Azerbajdzjan', + 'BI' => 'Burundi', + 'BE' => 'Belgien', + 'BJ' => 'Benin', + 'BF' => 'Burkina Faso', + 'BD' => 'Bangladesh', + 'BG' => 'Bulgarien', + 'BH' => 'Bahrain', + 'BS' => 'Bahamas', + 'BA' => 'Bosnien och Hercegovina', + 'BY' => 'Vitrysslnd', + 'BZ' => 'Belize', + 'BO' => 'Bolivien', + 'BR' => 'Brasilien', + 'BB' => 'Barbados', + 'BN' => 'Brune', + 'BT' => 'Butan', + 'BW' => 'Botswana', + 'CF' => 'Centralafrikanska republiken', + 'CA' => 'Kanada', + 'CH' => 'Schweiz', + 'CL' => 'Chile', + 'CN' => 'Kina', + 'CI' => 'Elfenbenskusten', + 'CM' => 'Kamerun', + 'CD' => 'Kongo-Kinshasa', + 'CG' => 'Kongo-Brazzaville', + 'CO' => 'Colombia', + 'KM' => 'Komorerna', + 'CV' => 'Kap Verde', + 'CR' => 'Costa Rica', + 'CU' => 'Kuba', + 'CY' => 'Cypern', + 'CZ' => 'Tjeckien', + 'DE' => 'Tyskland', + 'DJ' => 'Djibouti', + 'DM' => 'Dominica', + 'DK' => 'Danmark', + 'DO' => 'Dominikanska republiken', + 'DZ' => 'Algeriet', + 'EC' => 'Ekvador', + 'EG' => 'Egypten', + 'ER' => 'Eritrea', + 'ES' => 'Spanien', + 'EE' => 'Estonia', + 'ET' => 'Etiopien', + 'FI' => 'Finland', + 'FJ' => 'Fiji', + 'FR' => 'Frankrike', + 'FM' => 'Mikronesien', + 'GA' => 'Gabon', + 'GB' => 'Storbrittannien', + 'GE' => 'Georgien', + 'GH' => 'Ghana', + 'GN' => 'Guinea', + 'GM' => 'Gambia', + 'GW' => 'Guinea-Bissau', + 'GQ' => 'Ekvatorialguinea', + 'GR' => 'Grekland', + 'GD' => 'Grenada', + 'GT' => 'Guatemala', + 'GY' => 'Guyana', + 'HN' => 'Honduras', + 'HR' => 'Kroatien', + 'HT' => 'Haiti', + 'HU' => 'Ungern', + 'ID' => 'Indonesien', + 'IN' => 'Indien', + 'IE' => 'Irland', + 'IR' => 'Iran', + 'IQ' => 'Irak', + 'IS' => 'Island', + 'IL' => 'Israel', + 'IT' => 'Italien', + 'JM' => 'Jamaika', + 'JO' => 'Jordanien', + 'JP' => 'Japan', + 'KZ' => 'Kazakstan', + 'KE' => 'Kenya', + 'KG' => 'Kirgizistan', + 'KH' => 'Kambodja', + 'KI' => 'Kiribati', + 'KN' => 'Saint Kitts och Nevis', + 'KR' => 'Sydkorea', + 'KW' => 'Kuwait', + 'LA' => 'Laos', + 'LB' => 'Libanon', + 'LR' => 'Liberien', + 'LY' => 'Libyen', + 'LC' => 'Saint Lucia', + 'LI' => 'Liechtenstein', + 'LK' => 'Sri Lanka', + 'LS' => 'Lesotho', + 'LT' => 'Litauen', + 'LU' => 'Luxemburg', + 'LV' => 'Latvien', + 'MA' => 'Marocko', + 'MC' => 'Monaco', + 'MD' => 'Moldavien', + 'MG' => 'Madagaskar', + 'MV' => 'Maldiverna', + 'MX' => 'Mexiko', + 'MH' => 'Marshall Islands', + 'MK' => 'Nordmakedonien', + 'ML' => 'Mali', + 'MT' => 'Malta', + 'MM' => 'Myanmar', + 'ME' => 'Montenegro', + 'MN' => 'Mongolien', + 'MZ' => 'Moçambique', + 'MR' => 'Mauritanien', + 'MU' => 'Mauritius', + 'MW' => 'Malawi', + 'MY' => 'Malaysia', + 'NA' => 'Namibia', + 'NE' => 'Niger', + 'NG' => 'Nigeria', + 'NI' => 'Nicaragua', + 'NL' => 'Nederländerna', + 'NO' => 'Norge', + 'NP' => 'Nepal', + 'NR' => 'Nauru', + 'NZ' => 'Nya Zealand', + 'OM' => 'Oman', + 'PK' => 'Pakistan', + 'PA' => 'Panama', + 'PE' => 'Peru', + 'PH' => 'Filppinerna', + 'PW' => 'Palau', + 'PG' => 'Papua New Guinea', + 'PL' => 'Polen', + 'KP' => 'Nordkorea', + 'PT' => 'Portugal', + 'PY' => 'Paraguay', + 'QA' => 'Qatar', + 'RO' => 'Rumänien', + 'RU' => 'Ryssland', + 'RW' => 'Rwanda', + 'SA' => 'Saudiarabien', + 'SD' => 'Sudan', + 'SN' => 'Senegal', + 'SG' => 'Singapor', + 'SB' => 'Solomonöarna', + 'SL' => 'Sierra Leone', + 'SV' => 'El Salvador', + 'SM' => 'San Marino', + 'SO' => 'Somalien', + 'RS' => 'Serbien', + 'SS' => 'Sydsudan', + 'ST' => 'São Tomé och Príncipe', + 'SR' => 'Surinam', + 'SK' => 'Slovakien', + 'SI' => 'Slovenien', + 'SE' => 'Sverige', + 'SZ' => 'Swaziland', + 'SC' => 'Seychellerna', + 'SY' => 'Syrien', + 'TD' => 'Tchad', + 'TG' => 'Togo', + 'TH' => 'Thailand', + 'TJ' => 'Tadzjikistan', + 'TM' => 'Turkmenistan', + 'TL' => 'Timor-Leste', + 'TO' => 'Tonga', + 'TT' => 'Trinidad och Tobago', + 'TN' => 'Tunisien', + 'TR' => 'Turkiet', + 'TV' => 'Tuvalu', + 'TZ' => 'Tanzania', + 'UG' => 'Uganda', + 'UA' => 'Ukraina', + 'UY' => 'Uruguay', + 'US' => 'Amerikas Förenta Stater', + 'UZ' => 'Uzbekistan', + 'VA' => 'Vatikanstaten', + 'VC' => 'Sankt Vincent och Grenadinerna', + 'VE' => 'Venezuela', + 'VN' => 'Vietnam', + 'VU' => 'Vanuatu', + 'WS' => 'Samoa', + 'YE' => 'Jemen', + 'ZA' => 'Sydafrika', + 'ZM' => 'Zambia', + 'ZW' => 'Zimbabwe', +]; diff --git a/app/config/locale/sv.php b/app/config/locale/sv.php new file mode 100644 index 000000000..9f34de341 --- /dev/null +++ b/app/config/locale/sv.php @@ -0,0 +1,21 @@ + '"The art of being wise is the art of knowing what to overlook."', // This is the line printed in the homepage and console 'view-source' + 'settings.locale' => 'sv', + 'settings.direction' => 'ltr', + + // Service - Users + 'auth.emails.team' => '%s-teamet', + 'auth.emails.confirm.title' => 'Kontobekräftelse', + 'auth.emails.confirm.body' => 'sv.email.auth.confirm.tpl', + 'auth.emails.recovery.title' => 'Ändra lösenord', + 'auth.emails.recovery.body' => 'sv.email.auth.recovery.tpl', + 'auth.emails.invitation.title' => 'Inbjudan till %s-teamet i %s', + 'auth.emails.invitation.body' => 'sv.email.auth.invitation.tpl', + + 'locale.country.unknown' => 'Okänt', + + 'countries' => include 'sv.countries.php', + 'continents' => include 'sv.continents.php', +]; From 6d2af65bbc6bb2012dd2c6ee987c94a9679ff019 Mon Sep 17 00:00:00 2001 From: Bogdan Covrig Date: Thu, 3 Oct 2019 01:43:54 +0200 Subject: [PATCH 40/56] Add Slack provider --- app/config/providers.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/app/config/providers.php b/app/config/providers.php index 01b7b6b42..7b7402f71 100644 --- a/app/config/providers.php +++ b/app/config/providers.php @@ -46,4 +46,9 @@ return [ 'icon' => 'icon-linkedin', 'enabled' => true, ], + 'slack' => [ + 'developers' => 'https://api.slack.com/', + 'icon' => 'icon-slack', + 'enabled' => true, + ], ]; From 2d1ff748f23b07449336dd04f7f60c86ba6d5b45 Mon Sep 17 00:00:00 2001 From: Bogdan Covrig Date: Thu, 3 Oct 2019 01:45:06 +0200 Subject: [PATCH 41/56] [WIP] Add Slack accestoken and code functions --- src/Auth/OAuth/Slack.php | 125 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 125 insertions(+) create mode 100644 src/Auth/OAuth/Slack.php diff --git a/src/Auth/OAuth/Slack.php b/src/Auth/OAuth/Slack.php new file mode 100644 index 000000000..a50f82e33 --- /dev/null +++ b/src/Auth/OAuth/Slack.php @@ -0,0 +1,125 @@ +appID). + '&scope='.urlencode("identity.avatar,identity.basic,identity.email,identity.team"). + '&redirect_uri='.urlencode($this->callback); + } + + /** + * @param string $code + * + * @return string + */ + public function getAccessToken(string $code):string + { + $accessToken = $this->request( + 'GET', + 'https://slack.com/api/oauth.access'. + '?client_id='.urlencode($this->appID). + '&client_secret='.urlencode($this->appSecret). + '&redirect_uri='.urlencode($this->callback). + '&code='.urlencode($code) + ); + + $accessToken = json_decode($accessToken, true); // + + if (isset($accessToken['access_token'])) { + return $accessToken['access_token']; + } + + return ''; + } + + /** + * @param string $accessToken + * + * @return string + */ + public function getUserID(string $accessToken):string + { + $user = $this->getUser($accessToken); + + if (isset($user['user']['id'])) { + return $user['user']['id']; + } + + return ''; + } + + /** + * @param string $accessToken + * + * @return string + */ + public function getUserEmail(string $accessToken):string + { + $user = $this->getUser($accessToken); + + if (isset($user['user']['email'])) { + return $user['user']['email']; + } + + return ''; + } + + /** + * @param string $accessToken + * + * @return string + */ + public function getUserName(string $accessToken):string + { + $user = $this->getUser($accessToken); + + if (isset($user['user']['name'])) { + return $user['user']['name']; + } + + return ''; + } + + /** + * @param string $accessToken + * + * @return array + */ + protected function getUser(string $accessToken):array + { + if (empty($this->user)) { + $user = $this->request( + 'GET', + 'https://slack.com/api/users.identity&token='.urlencode($accessToken)); + + $this->user = json_decode($user, true); + } + + return $this->user; + } +} + +//http://localhost:8080/v1/auth/oauth/slack?project=5d94eda5e2b8a&success=http://localhost:8080/?success=1&failure=http://localhost:8080/auth/signin?failure=2 From c6f6cdca0a65dfa86cc387d82a766a3ce39c51c7 Mon Sep 17 00:00:00 2001 From: eldadfux Date: Thu, 3 Oct 2019 06:51:55 +0300 Subject: [PATCH 42/56] Updated docs --- CONTRIBUTING.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 7242dcdd3..a1d0e90ec 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -93,10 +93,10 @@ This is also important for the Appwrite lead developers to be able to give techn ## Setup -To set up a working development environment just clone the project git repository and install the backend and frontend dependencies using the proper package manager and create run the docker-compose stack. +To set up a working development environment just fork the project git repository and install the backend and frontend dependencies using the proper package manager and create run the docker-compose stack. ```bash -git clone git@github.com:appwrite/appwrite.git +git clone git@github.com:[YOUR_FORK_HERE]/appwrite.git cd appwrite From 581b2ef4c6ba223ead844053a6d5d647c14f9b8b Mon Sep 17 00:00:00 2001 From: Carike Blignaut-Staden Date: Thu, 3 Oct 2019 16:37:25 +0200 Subject: [PATCH 43/56] Delete .vs/slnx.sqlite Not required --- .vs/slnx.sqlite | Bin 217088 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 .vs/slnx.sqlite diff --git a/.vs/slnx.sqlite b/.vs/slnx.sqlite deleted file mode 100644 index b77903a9763386620c65deb696b7d2306bb6741f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 217088 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 rIHS%wK Date: Thu, 3 Oct 2019 16:38:52 +0200 Subject: [PATCH 44/56] Delete .suo Not required --- .vs/appwrite/v16/.suo | Bin 19456 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 .vs/appwrite/v16/.suo diff --git a/.vs/appwrite/v16/.suo b/.vs/appwrite/v16/.suo deleted file mode 100644 index a03af2a26673e7d6dfbba0e484f98ef4443dc9c8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19456 zcmeHOZ;Ts96(1)w{lmYMwn-=ft|e{Ll67{yzO#L4Lwx5mN!#m{T+$R_A?>Z#7bm{6 zYx^!av3kV^QN+c8s6(Ip-HF#e z?|SX?IhWwE-p=go%)FU5Z{EE3X8ilt@BGW<@80{iXbDHfPVvtA?P8ZFKZ5iQ`Mz6- zcOlKZch=X}nY|N$bE_O*k=PrMaTLJz9K z0?dLI2EcO5`9%kS|AYAWJ^=gSSI(RNZoFJ^GiJmRu#`j*<0s5}FlUfc^;T??CVs9% zNrN^;He|(+^AA=+xC8KCS-B0KnUapgO~Ey-}c_>;L_jub@!b^}FA4{d2waas4;(R1kjo?Iv6Q zU60?p{w3Gk0^(2(aJ}7*v|M+b)7t>DoQx^!Df2$o=9?@d<9ktNzgzCZh(7}OC}0FY znQ%Yg0N_4=#4GC#n|05gE60iOb#1k3_X0Zs#+0h|HI zzM%`-HcUX{DU0)B0oqO#aag?v!?VMF=pPZJq)y;w2Sysca&8$;0dEa>pMaPdtWI4%Rd@V% zA#9$Cy=2R=ho!$4hm=u_hw^`Y{r^q=XCQaxAb;lZqZB-2 zTfHWvFlAupFw%qkqr9N5z|e|+0)4R1hx4$;%eE}^N?WIn_jwTOpLQnol(76y+0VV2 zp%p)6o{1h*0;R4~m(K?=e(KKDg~H;$6=miA(+mL7%twFYLL+0KO{FIyYfrQ0RyNUZH z!z4ye4X6gKu?T8k*w727oZnOKKhpQ=SI(R7rGFpvKidb)H63>RH<|tyk-Q&v{QcJd zDEr9MVe$7{|0C~F286{w)c>}R{@1$y+=%->WvSc)kn9+4vi)Ds_M<)(cK!8x|0iA< zIuaiRy!%f-_J8VsoKyB84E}!a|MY!a$Nk?Pcdzu{xc+$xMNf=#5|)N0T!DT>?*}~* z%=HH7pIzgp>w`KIgV*0N4NZt%7{?Nc!vDd(EZTZ-*472-C26)wsQ;4p$+e9n=_V%xLl{9cO74HE*_e*L2y|s6y%yzsqWIF8n|6ycOjEfxn z-j1zUL)sL}c*_AAJd^`3(W<6LGlw-!sd52%lquG=9M+|zaqPbw=APCm{jw~>k_)Iu zi-~Ecr2@_am~Wu164HikO`b)HoV;vfV0p)ij3UJrUdZQu@QXh@@YkOlc;V~E#y|UJ zI~p*rQ~1s{9)E+DRnSL{eC*}Rk5s??%Jerb-~FqfuD0@@!)aZ~e|!CRJ6oNOY?As?kM6af zr2lb%|1R#;1amm+4%)@L@5N^4pSB#q<>Co9!DjchY8g>z95w9zfgex1EgV;Iw(9*U z*WQ9t-a1TgZJ^#g4UMN{YdFs7eHG~?j8mRq3-K84=2GiCV&9RtB+@w7&Ejk!f%hq) z;a0_joz{`k@XMgz3QF-?8Yzw=4VV-uJhS$1Qs`n0T16gIZN@tT+;w0hRtDa^@C!VL zrvGAxxDv^XtN2|?$Fft2_>`thB;vZFX&F^XPibjIRnzKZO3h}ollt1~qtnHjnJt#A z+R@d?@!aW}RjuXBP3~Tq zWOr-Dsh-x-*0gfSuwn^gY)-{&#z&QSESXeNWBGzIY8eGR6}K#XEEQGNn64*RTLsKM z5rGciYz_Q&+t2R9ldi&nPfo9EVRviA-X>>jTIs{&$TL_@&d)J1^a)WPb#@IAV7)tK zp2vRVuebEu`(VH;5w-mjOXwN@DZ%sF8uBW*Em6Vk!ZMz`A9fU{VRsC$XT;e}&p=|= zvzN2!O?~Kkg?`}PjIQ6V?jUI~)c-d}?V z=}d7N_s7JRG5>67Eba{kBhVgUAjd(}G0F6XAwAbZr9qxOD2=dPijJ-Z!j*7o;) z Date: Thu, 3 Oct 2019 18:19:39 +0200 Subject: [PATCH 45/56] Add Slack provider. Fix getUser request path --- src/Auth/OAuth/Slack.php | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/src/Auth/OAuth/Slack.php b/src/Auth/OAuth/Slack.php index a50f82e33..120dd4233 100644 --- a/src/Auth/OAuth/Slack.php +++ b/src/Auth/OAuth/Slack.php @@ -24,10 +24,12 @@ class Slack extends OAuth */ public function getLoginURL():string { + // https://api.slack.com/docs/oauth#step_1_-_sending_users_to_authorize_and_or_install return 'https://slack.com/oauth/authorize'. '?client_id='.urlencode($this->appID). - '&scope='.urlencode("identity.avatar,identity.basic,identity.email,identity.team"). - '&redirect_uri='.urlencode($this->callback); + '&scope=identity.avatar+identity.basic+identity.email+identity.team'. + '&redirect_uri='.urlencode($this->callback). + '&state='.urlencode(json_encode($this->state)); } /** @@ -37,13 +39,14 @@ class Slack extends OAuth */ public function getAccessToken(string $code):string { + // https://api.slack.com/docs/oauth#step_3_-_exchanging_a_verification_code_for_an_access_token $accessToken = $this->request( 'GET', 'https://slack.com/api/oauth.access'. '?client_id='.urlencode($this->appID). '&client_secret='.urlencode($this->appSecret). - '&redirect_uri='.urlencode($this->callback). - '&code='.urlencode($code) + '&code='.urlencode($code). + '&redirect_uri='.urlencode($this->callback) ); $accessToken = json_decode($accessToken, true); // @@ -110,10 +113,13 @@ class Slack extends OAuth */ protected function getUser(string $accessToken):array { + if (empty($this->user)) { + // https://api.slack.com/methods/users.identity $user = $this->request( 'GET', - 'https://slack.com/api/users.identity&token='.urlencode($accessToken)); + 'https://slack.com/api/users.identity?token='.urlencode($accessToken), + ); $this->user = json_decode($user, true); } @@ -121,5 +127,3 @@ class Slack extends OAuth return $this->user; } } - -//http://localhost:8080/v1/auth/oauth/slack?project=5d94eda5e2b8a&success=http://localhost:8080/?success=1&failure=http://localhost:8080/auth/signin?failure=2 From 44869a00e6c7ecb1331be9b380e281b697c691b2 Mon Sep 17 00:00:00 2001 From: eldadfux Date: Thu, 3 Oct 2019 20:58:18 +0300 Subject: [PATCH 46/56] Updated docs examples --- app/sdks/dart/README.md | 6 +- app/sdks/dart/lib/services/auth.dart | 20 +- app/sdks/dart/lib/services/locale.dart | 6 +- app/sdks/js/README.md | 10 +- .../js/docs/examples/projects/create-task.md | 2 +- .../docs/examples/projects/create-webhook.md | 2 +- .../js/docs/examples/projects/update-task.md | 2 +- .../docs/examples/projects/update-webhook.md | 2 +- app/sdks/js/src/sdk.js | 602 +++++++++--------- app/sdks/node/README.md | 8 +- app/sdks/node/docs/examples/account/delete.md | 2 +- .../node/docs/examples/account/get-prefs.md | 2 +- .../docs/examples/account/get-security.md | 2 +- .../docs/examples/account/get-sessions.md | 2 +- app/sdks/node/docs/examples/account/get.md | 2 +- .../docs/examples/account/update-email.md | 2 +- .../node/docs/examples/account/update-name.md | 2 +- .../docs/examples/account/update-password.md | 2 +- .../docs/examples/account/update-prefs.md | 2 +- .../node/docs/examples/auth/confirm-resend.md | 2 +- app/sdks/node/docs/examples/auth/confirm.md | 2 +- app/sdks/node/docs/examples/auth/login.md | 2 +- .../docs/examples/auth/logout-by-session.md | 2 +- app/sdks/node/docs/examples/auth/logout.md | 2 +- app/sdks/node/docs/examples/auth/oauth.md | 2 +- .../node/docs/examples/auth/recovery-reset.md | 2 +- app/sdks/node/docs/examples/auth/recovery.md | 2 +- app/sdks/node/docs/examples/auth/register.md | 2 +- .../node/docs/examples/avatars/get-browser.md | 2 +- .../docs/examples/avatars/get-credit-card.md | 2 +- .../node/docs/examples/avatars/get-favicon.md | 2 +- .../node/docs/examples/avatars/get-flag.md | 2 +- .../node/docs/examples/avatars/get-image.md | 2 +- .../node/docs/examples/avatars/get-q-r.md | 2 +- .../examples/database/create-collection.md | 2 +- .../docs/examples/database/create-document.md | 2 +- .../examples/database/delete-collection.md | 2 +- .../docs/examples/database/delete-document.md | 2 +- .../docs/examples/database/get-collection.md | 2 +- .../docs/examples/database/get-document.md | 2 +- .../examples/database/list-collections.md | 2 +- .../docs/examples/database/list-documents.md | 2 +- .../examples/database/update-collection.md | 2 +- .../docs/examples/database/update-document.md | 2 +- .../docs/examples/locale/get-countries-e-u.md | 2 +- .../examples/locale/get-countries-phones.md | 2 +- .../docs/examples/locale/get-countries.md | 2 +- .../docs/examples/locale/get-currencies.md | 2 +- .../node/docs/examples/locale/get-locale.md | 2 +- .../node/docs/examples/projects/create-key.md | 2 +- .../docs/examples/projects/create-platform.md | 2 +- .../docs/examples/projects/create-project.md | 2 +- .../docs/examples/projects/create-task.md | 2 +- .../docs/examples/projects/create-webhook.md | 2 +- .../node/docs/examples/projects/delete-key.md | 2 +- .../docs/examples/projects/delete-platform.md | 2 +- .../docs/examples/projects/delete-project.md | 2 +- .../docs/examples/projects/delete-task.md | 2 +- .../docs/examples/projects/delete-webhook.md | 2 +- .../node/docs/examples/projects/get-key.md | 2 +- .../docs/examples/projects/get-platform.md | 2 +- .../examples/projects/get-project-usage.md | 2 +- .../docs/examples/projects/get-project.md | 2 +- .../node/docs/examples/projects/get-task.md | 2 +- .../docs/examples/projects/get-webhook.md | 2 +- .../node/docs/examples/projects/list-keys.md | 2 +- .../docs/examples/projects/list-platforms.md | 2 +- .../docs/examples/projects/list-projects.md | 2 +- .../node/docs/examples/projects/list-tasks.md | 2 +- .../docs/examples/projects/list-webhooks.md | 2 +- .../node/docs/examples/projects/update-key.md | 2 +- .../docs/examples/projects/update-platform.md | 2 +- .../projects/update-project-o-auth.md | 2 +- .../docs/examples/projects/update-project.md | 2 +- .../docs/examples/projects/update-task.md | 4 +- .../docs/examples/projects/update-webhook.md | 4 +- .../node/docs/examples/storage/create-file.md | 2 +- .../node/docs/examples/storage/delete-file.md | 2 +- .../examples/storage/get-file-download.md | 2 +- .../docs/examples/storage/get-file-preview.md | 2 +- .../docs/examples/storage/get-file-view.md | 2 +- .../node/docs/examples/storage/get-file.md | 2 +- .../node/docs/examples/storage/list-files.md | 2 +- .../node/docs/examples/storage/update-file.md | 2 +- .../teams/create-team-membership-resend.md | 2 +- .../examples/teams/create-team-membership.md | 2 +- .../node/docs/examples/teams/create-team.md | 2 +- .../examples/teams/delete-team-membership.md | 2 +- .../node/docs/examples/teams/delete-team.md | 2 +- .../docs/examples/teams/get-team-members.md | 2 +- app/sdks/node/docs/examples/teams/get-team.md | 2 +- .../node/docs/examples/teams/list-teams.md | 2 +- .../teams/update-team-membership-status.md | 2 +- .../node/docs/examples/teams/update-team.md | 2 +- .../node/docs/examples/users/create-user.md | 2 +- .../examples/users/delete-user-sessions.md | 2 +- .../examples/users/delete-users-session.md | 2 +- .../node/docs/examples/users/get-user-logs.md | 2 +- .../docs/examples/users/get-user-prefs.md | 2 +- .../docs/examples/users/get-user-sessions.md | 2 +- app/sdks/node/docs/examples/users/get-user.md | 2 +- .../node/docs/examples/users/list-users.md | 2 +- .../docs/examples/users/update-user-status.md | 2 +- app/sdks/node/lib/services/auth.js | 36 +- app/sdks/node/lib/services/locale.js | 6 +- app/sdks/php/README.md | 8 +- app/sdks/php/docs/auth.md | 1 + .../docs/examples/projects/update-webhook.md | 2 +- app/sdks/php/docs/locale.md | 2 +- app/sdks/php/src/Appwrite/Services/Auth.php | 18 +- app/sdks/php/src/Appwrite/Services/Locale.php | 6 +- app/sdks/python/README.md | 4 +- app/sdks/ruby/README.md | 4 +- composer.lock | 65 +- 114 files changed, 499 insertions(+), 503 deletions(-) diff --git a/app/sdks/dart/README.md b/app/sdks/dart/README.md index e7f5e5a81..2e742434d 100644 --- a/app/sdks/dart/README.md +++ b/app/sdks/dart/README.md @@ -1,7 +1,7 @@ # [Appwrite SDK for Dart](https://appwrite.io)   [![Tweet](https://img.shields.io/twitter/url/http/shields.io.svg?style=social)](https://twitter.com/intent/tweet?text=Appwrite%20is%20a%20backend%20as%20a%20service%20for%20building%20web%20or%20mobile%20apps&url=http%3A%2F%2Fappwrite.io&via=appwrite_io&hashtags=JS%2Cjavascript%2Creactjs%2Cangular%2Cios%2Candroid) ![License](https://img.shields.io/github/license/appwrite/sdk-for-dart.svg?v=1) -![Version](https://img.shields.io/badge/api%20version-0.1.15-blue.svg?v=1) +![Version](https://img.shields.io/badge/api%20version-latest-blue.svg?v=1) **WORK IN PROGRESS - NOT READY FOR USAGE - Want to help us improve this client SDK? Send a pull request to Appwrite [SDK generator repository](https://github.com/appwrite/sdk-generator).** @@ -11,7 +11,7 @@ Appwrite backend as a service cuts up to 70% of the time and costs required for ![Appwrite](https://appwrite.io/images/github.png) -**API Version: 0.1.15** +**API Version: latest** ## Installation @@ -30,4 +30,4 @@ pub get ## License -Please see the [BSD-3-Clause license](https://raw.githubusercontent.com/appwrite/appwrite/master/LICENSE) file for more information. +Please see the [BSD-3-Clause license](https://raw.githubusercontent.com/appwrite/appwrite/master/LICENSE) file for more information. \ No newline at end of file diff --git a/app/sdks/dart/lib/services/auth.dart b/app/sdks/dart/lib/services/auth.dart index c1b1a18d5..0db9f429d 100644 --- a/app/sdks/dart/lib/services/auth.dart +++ b/app/sdks/dart/lib/services/auth.dart @@ -3,18 +3,18 @@ import "package:appwrite/client.dart"; import 'package:dio/dio.dart'; class Auth extends Service { - + Auth(Client client): super(client); /// Allow the user to login into his account by providing a valid email and /// password combination. Use the success and failure arguments to provide a - /// redirect URL\'s back to your app when login is completed. - /// + /// redirect URL\'s back to your app when login is completed. + /// /// Please notice that in order to avoid a [Redirect /// Attacks](https://github.com/OWASP/CheatSheetSeries/blob/master/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) /// the only valid redirect URL's are the once from domains you have set when /// added your platforms in the console interface. - /// + /// /// When accessing this route using JavaScript from the browser, success and /// failure parameter URLs are required. Appwrite server will respond with a /// 301 redirect status code and will set the user session cookie. This @@ -84,7 +84,7 @@ class Auth extends Service { /// **userId** and **token** arguments will be passed as query parameters to /// the redirect URL you have provided when sending your request to the /// /auth/recovery endpoint. - /// + /// /// Please notice that in order to avoid a [Redirect /// Attacks](https://github.com/OWASP/CheatSheetSeries/blob/master/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) /// the only valid redirect URL's are the once from domains you have set when @@ -104,18 +104,18 @@ class Auth extends Service { /// Use this endpoint to allow a new user to register an account in your /// project. Use the success and failure URL's to redirect users back to your /// application after signup completes. - /// + /// /// If registration completes successfully user will be sent with a /// confirmation email in order to confirm he is the owner of the account email /// address. Use the confirmation parameter to redirect the user from the /// confirmation email back to your app. When the user is redirected, use the /// /auth/confirm endpoint to complete the account confirmation. - /// + /// /// Please notice that in order to avoid a [Redirect /// Attacks](https://github.com/OWASP/CheatSheetSeries/blob/master/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) /// the only valid redirect URL's are the once from domains you have set when /// added your platforms in the console interface. - /// + /// /// When accessing this route using JavaScript from the browser, success and /// failure parameter URLs are required. Appwrite server will respond with a /// 301 redirect status code and will set the user session cookie. This @@ -152,7 +152,7 @@ class Auth extends Service { /// This endpoint allows the user to request your app to resend him his email /// confirmation message. The redirect arguments acts the same way as in /// /auth/register endpoint. - /// + /// /// Please notice that in order to avoid a [Redirect /// Attacks](https://github.com/OWASP/CheatSheetSeries/blob/master/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) /// the only valid redirect URL's are the once from domains you have set when @@ -166,4 +166,4 @@ class Auth extends Service { return await this.client.call('post', path: path, params: params); } -} +} \ No newline at end of file diff --git a/app/sdks/dart/lib/services/locale.dart b/app/sdks/dart/lib/services/locale.dart index 29f87ac5e..406d25bbb 100644 --- a/app/sdks/dart/lib/services/locale.dart +++ b/app/sdks/dart/lib/services/locale.dart @@ -49,9 +49,9 @@ class Locale extends Service { return await this.client.call('get', path: path, params: params); } - /// List of all currencies, including currency symol, name, plural, and decimal - /// digits for all major and minor currencies. You can use the locale header to - /// get the data in supported language. + /// List of all currencies, including currency symbol, name, plural, and + /// decimal digits for all major and minor currencies. You can use the locale + /// header to get the data in supported language. Future getCurrencies() async { String path = '/locale/currencies'; diff --git a/app/sdks/js/README.md b/app/sdks/js/README.md index 0a0a4bf1d..e415254ed 100644 --- a/app/sdks/js/README.md +++ b/app/sdks/js/README.md @@ -1,9 +1,9 @@ -# [Appwrite SDK for JavaScript](https://appwrite.io)   [![Tweet](https://img.shields.io/twitter/url/http/shields.io.svg?style=social)](https://twitter.com/intent/tweet?text=Appwrite%20is%20a%20backend%20as%20a%20service%20for%20building%20web%20or%20mobile%20apps&url=http%3A%2F%2Fappwrite.io&via=appwrite_io&hashtags=JS%2Cjavascript%2Creactjs%2Cangular%2Cios%2Candroid) +# [Appwrite SDK for Javascript](https://appwrite.io)   [![Tweet](https://img.shields.io/twitter/url/http/shields.io.svg?style=social)](https://twitter.com/intent/tweet?text=Appwrite%20is%20a%20backend%20as%20a%20service%20for%20building%20web%20or%20mobile%20apps&url=http%3A%2F%2Fappwrite.io&via=appwrite_io&hashtags=JS%2Cjavascript%2Creactjs%2Cangular%2Cios%2Candroid) ![License](https://img.shields.io/github/license/appwrite/sdk-for-js.svg?v=1) -![Version](https://img.shields.io/badge/api%20version-0.1.15-blue.svg?v=1) +![Version](https://img.shields.io/badge/api%20version-latest-blue.svg?v=1) -This SDK is compatible with Appwrite server version 0.2.0 for older versions check previous releases. +This SDK is compitable with Appwrite server version 0.2.0 for older versions check previous releases. Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https://appwrite.io/docs](https://appwrite.io/docs) @@ -11,7 +11,7 @@ Appwrite backend as a service cuts up to 70% of the time and costs required for ![Appwrite](https://appwrite.io/images/github.png) -**API Version: 0.1.15** +**API Version: latest** ## Installation @@ -23,4 +23,4 @@ npm install appwrite --save ## License -Please see the [BSD-3-Clause license](https://raw.githubusercontent.com/appwrite/appwrite/master/LICENSE) file for more information. +Please see the [BSD-3-Clause license](https://raw.githubusercontent.com/appwrite/appwrite/master/LICENSE) file for more information. \ No newline at end of file diff --git a/app/sdks/js/docs/examples/projects/create-task.md b/app/sdks/js/docs/examples/projects/create-task.md index 433819846..3262b4d9f 100644 --- a/app/sdks/js/docs/examples/projects/create-task.md +++ b/app/sdks/js/docs/examples/projects/create-task.md @@ -4,7 +4,7 @@ sdk .setProject('') ; -let promise = sdk.projects.createTask('[PROJECT_ID]', '[NAME]', 'play', '', 1, 'GET', 'https://example.com'); +let promise = sdk.projects.createTask('[PROJECT_ID]', '[NAME]', 'play', '', 0, 'GET', 'https://example.com'); promise.then(function (response) { console.log(response); diff --git a/app/sdks/js/docs/examples/projects/create-webhook.md b/app/sdks/js/docs/examples/projects/create-webhook.md index 66a76c26c..1136c5eed 100644 --- a/app/sdks/js/docs/examples/projects/create-webhook.md +++ b/app/sdks/js/docs/examples/projects/create-webhook.md @@ -4,7 +4,7 @@ sdk .setProject('') ; -let promise = sdk.projects.createWebhook('[PROJECT_ID]', '[NAME]', [], '[URL]', 0); +let promise = sdk.projects.createWebhook('[PROJECT_ID]', '[NAME]', [], '[URL]', 1); promise.then(function (response) { console.log(response); diff --git a/app/sdks/js/docs/examples/projects/update-task.md b/app/sdks/js/docs/examples/projects/update-task.md index 3544916e3..54116a41d 100644 --- a/app/sdks/js/docs/examples/projects/update-task.md +++ b/app/sdks/js/docs/examples/projects/update-task.md @@ -4,7 +4,7 @@ sdk .setProject('') ; -let promise = sdk.projects.updateTask('[PROJECT_ID]', '[TASK_ID]', '[NAME]', 'play', '', 1, 'GET', 'https://example.com'); +let promise = sdk.projects.updateTask('[PROJECT_ID]', '[TASK_ID]', '[NAME]', 'play', '', 0, 'GET', 'https://example.com'); promise.then(function (response) { console.log(response); diff --git a/app/sdks/js/docs/examples/projects/update-webhook.md b/app/sdks/js/docs/examples/projects/update-webhook.md index f58095253..ce876d5a6 100644 --- a/app/sdks/js/docs/examples/projects/update-webhook.md +++ b/app/sdks/js/docs/examples/projects/update-webhook.md @@ -4,7 +4,7 @@ sdk .setProject('') ; -let promise = sdk.projects.updateWebhook('[PROJECT_ID]', '[WEBHOOK_ID]', '[NAME]', [], '[URL]', 1); +let promise = sdk.projects.updateWebhook('[PROJECT_ID]', '[WEBHOOK_ID]', '[NAME]', [], '[URL]', 0); promise.then(function (response) { console.log(response); diff --git a/app/sdks/js/src/sdk.js b/app/sdks/js/src/sdk.js index 8b5ca9f3e..5c21f8af5 100644 --- a/app/sdks/js/src/sdk.js +++ b/app/sdks/js/src/sdk.js @@ -133,7 +133,7 @@ let addGlobalHeader = function(key, value) { globalHeaders[key] = {key: key.toLowerCase(), value: value.toLowerCase()}; }; - + let addGlobalParam = function(key, value) { globalParams.push({key: key, value: value}); }; @@ -346,17 +346,17 @@ if(email === undefined) { throw new Error('Missing required parameter: "email"'); } - + if(password === undefined) { throw new Error('Missing required parameter: "password"'); } - + let path = '/account/email'; return http .patch(path, {'content-type': 'application/json'}, { - 'email': email, + 'email': email, 'password': password }); }, @@ -373,7 +373,7 @@ if(name === undefined) { throw new Error('Missing required parameter: "name"'); } - + let path = '/account/name'; return http @@ -397,17 +397,17 @@ if(password === undefined) { throw new Error('Missing required parameter: "password"'); } - + if(oldPassword === undefined) { throw new Error('Missing required parameter: "oldPassword"'); } - + let path = '/account/password'; return http .patch(path, {'content-type': 'application/json'}, { - 'password': password, + 'password': password, 'old-password': oldPassword }); }, @@ -441,7 +441,7 @@ if(prefs === undefined) { throw new Error('Missing required parameter: "prefs"'); } - + let path = '/account/prefs'; return http @@ -493,13 +493,13 @@ * * Allow the user to login into his account by providing a valid email and * password combination. Use the success and failure arguments to provide a - * redirect URL\'s back to your app when login is completed. - * + * redirect URL\'s back to your app when login is completed. + * * Please notice that in order to avoid a [Redirect * Attacks](https://github.com/OWASP/CheatSheetSeries/blob/master/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) * the only valid redirect URL's are the once from domains you have set when * added your platforms in the console interface. - * + * * When accessing this route using JavaScript from the browser, success and * failure parameter URLs are required. Appwrite server will respond with a * 301 redirect status code and will set the user session cookie. This @@ -516,25 +516,25 @@ if(email === undefined) { throw new Error('Missing required parameter: "email"'); } - + if(password === undefined) { throw new Error('Missing required parameter: "password"'); } - + if(success === undefined) { throw new Error('Missing required parameter: "success"'); } - + if(failure === undefined) { throw new Error('Missing required parameter: "failure"'); } - + let path = '/auth/login'; return iframe('post', path, {project: config.project, - 'email': email, - 'password': password, - 'success': success, + 'email': email, + 'password': password, + 'success': success, 'failure': failure }); }, @@ -571,7 +571,7 @@ if(id === undefined) { throw new Error('Missing required parameter: "id"'); } - + let path = '/auth/logout/{id}'.replace(new RegExp('{id}', 'g'), id); return http @@ -593,13 +593,13 @@ if(provider === undefined) { throw new Error('Missing required parameter: "provider"'); } - + let path = '/auth/oauth/{provider}'.replace(new RegExp('{provider}', 'g'), provider); return http .get(path, {'content-type': 'application/json'}, { - 'success': success, + 'success': success, 'failure': failure }); }, @@ -622,17 +622,17 @@ if(email === undefined) { throw new Error('Missing required parameter: "email"'); } - + if(reset === undefined) { throw new Error('Missing required parameter: "reset"'); } - + let path = '/auth/recovery'; return http .post(path, {'content-type': 'application/json'}, { - 'email': email, + 'email': email, 'reset': reset }); }, @@ -644,7 +644,7 @@ * **userId** and **token** arguments will be passed as query parameters to * the redirect URL you have provided when sending your request to the * /auth/recovery endpoint. - * + * * Please notice that in order to avoid a [Redirect * Attacks](https://github.com/OWASP/CheatSheetSeries/blob/master/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) * the only valid redirect URL's are the once from domains you have set when @@ -660,27 +660,27 @@ if(userId === undefined) { throw new Error('Missing required parameter: "userId"'); } - + if(token === undefined) { throw new Error('Missing required parameter: "token"'); } - + if(passwordA === undefined) { throw new Error('Missing required parameter: "passwordA"'); } - + if(passwordB === undefined) { throw new Error('Missing required parameter: "passwordB"'); } - + let path = '/auth/recovery/reset'; return http .put(path, {'content-type': 'application/json'}, { - 'userId': userId, - 'token': token, - 'password-a': passwordA, + 'userId': userId, + 'token': token, + 'password-a': passwordA, 'password-b': passwordB }); }, @@ -691,18 +691,18 @@ * Use this endpoint to allow a new user to register an account in your * project. Use the success and failure URL's to redirect users back to your * application after signup completes. - * + * * If registration completes successfully user will be sent with a * confirmation email in order to confirm he is the owner of the account email * address. Use the confirmation parameter to redirect the user from the * confirmation email back to your app. When the user is redirected, use the * /auth/confirm endpoint to complete the account confirmation. - * + * * Please notice that in order to avoid a [Redirect * Attacks](https://github.com/OWASP/CheatSheetSeries/blob/master/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) * the only valid redirect URL's are the once from domains you have set when * added your platforms in the console interface. - * + * * When accessing this route using JavaScript from the browser, success and * failure parameter URLs are required. Appwrite server will respond with a * 301 redirect status code and will set the user session cookie. This @@ -721,23 +721,23 @@ if(email === undefined) { throw new Error('Missing required parameter: "email"'); } - + if(password === undefined) { throw new Error('Missing required parameter: "password"'); } - + if(confirm === undefined) { throw new Error('Missing required parameter: "confirm"'); } - + let path = '/auth/register'; return iframe('post', path, {project: config.project, - 'email': email, - 'password': password, - 'confirm': confirm, - 'success': success, - 'failure': failure, + 'email': email, + 'password': password, + 'confirm': confirm, + 'success': success, + 'failure': failure, 'name': name }); }, @@ -758,17 +758,17 @@ if(userId === undefined) { throw new Error('Missing required parameter: "userId"'); } - + if(token === undefined) { throw new Error('Missing required parameter: "token"'); } - + let path = '/auth/register/confirm'; return http .post(path, {'content-type': 'application/json'}, { - 'userId': userId, + 'userId': userId, 'token': token }); }, @@ -779,7 +779,7 @@ * This endpoint allows the user to request your app to resend him his email * confirmation message. The redirect arguments acts the same way as in * /auth/register endpoint. - * + * * Please notice that in order to avoid a [Redirect * Attacks](https://github.com/OWASP/CheatSheetSeries/blob/master/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) * the only valid redirect URL's are the once from domains you have set when @@ -792,7 +792,7 @@ if(confirm === undefined) { throw new Error('Missing required parameter: "confirm"'); } - + let path = '/auth/register/confirm/resend'; return http @@ -823,14 +823,14 @@ if(code === undefined) { throw new Error('Missing required parameter: "code"'); } - + let path = '/avatars/browsers/{code}'.replace(new RegExp('{code}', 'g'), code); return http .get(path, {'content-type': 'application/json'}, { - 'width': width, - 'height': height, + 'width': width, + 'height': height, 'quality': quality }); }, @@ -853,14 +853,14 @@ if(code === undefined) { throw new Error('Missing required parameter: "code"'); } - + let path = '/avatars/credit-cards/{code}'.replace(new RegExp('{code}', 'g'), code); return http .get(path, {'content-type': 'application/json'}, { - 'width': width, - 'height': height, + 'width': width, + 'height': height, 'quality': quality }); }, @@ -878,7 +878,7 @@ if(url === undefined) { throw new Error('Missing required parameter: "url"'); } - + let path = '/avatars/favicon'; return http @@ -905,14 +905,14 @@ if(code === undefined) { throw new Error('Missing required parameter: "code"'); } - + let path = '/avatars/flags/{code}'.replace(new RegExp('{code}', 'g'), code); return http .get(path, {'content-type': 'application/json'}, { - 'width': width, - 'height': height, + 'width': width, + 'height': height, 'quality': quality }); }, @@ -934,14 +934,14 @@ if(url === undefined) { throw new Error('Missing required parameter: "url"'); } - + let path = '/avatars/image'; return http .get(path, {'content-type': 'application/json'}, { - 'url': url, - 'width': width, + 'url': url, + 'width': width, 'height': height }); }, @@ -962,15 +962,15 @@ if(text === undefined) { throw new Error('Missing required parameter: "text"'); } - + let path = '/avatars/qr'; return http .get(path, {'content-type': 'application/json'}, { - 'text': text, - 'size': size, - 'margin': margin, + 'text': text, + 'size': size, + 'margin': margin, 'download': download }); } @@ -998,9 +998,9 @@ return http .get(path, {'content-type': 'application/json'}, { - 'search': search, - 'limit': limit, - 'offset': offset, + 'search': search, + 'limit': limit, + 'offset': offset, 'orderType': orderType }); }, @@ -1020,15 +1020,15 @@ if(name === undefined) { throw new Error('Missing required parameter: "name"'); } - + let path = '/database'; return http .post(path, {'content-type': 'application/json'}, { - 'name': name, - 'read': read, - 'write': write, + 'name': name, + 'read': read, + 'write': write, 'rules': rules }); }, @@ -1046,7 +1046,7 @@ if(collectionId === undefined) { throw new Error('Missing required parameter: "collectionId"'); } - + let path = '/database/{collectionId}'.replace(new RegExp('{collectionId}', 'g'), collectionId); return http @@ -1071,19 +1071,19 @@ if(collectionId === undefined) { throw new Error('Missing required parameter: "collectionId"'); } - + if(name === undefined) { throw new Error('Missing required parameter: "name"'); } - + let path = '/database/{collectionId}'.replace(new RegExp('{collectionId}', 'g'), collectionId); return http .put(path, {'content-type': 'application/json'}, { - 'name': name, - 'read': read, - 'write': write, + 'name': name, + 'read': read, + 'write': write, 'rules': rules }); }, @@ -1101,7 +1101,7 @@ if(collectionId === undefined) { throw new Error('Missing required parameter: "collectionId"'); } - + let path = '/database/{collectionId}'.replace(new RegExp('{collectionId}', 'g'), collectionId); return http @@ -1134,20 +1134,20 @@ if(collectionId === undefined) { throw new Error('Missing required parameter: "collectionId"'); } - + let path = '/database/{collectionId}/documents'.replace(new RegExp('{collectionId}', 'g'), collectionId); return http .get(path, {'content-type': 'application/json'}, { - 'filters': filters, - 'offset': offset, - 'limit': limit, - 'order-field': orderField, - 'order-type': orderType, - 'order-cast': orderCast, - 'search': search, - 'first': first, + 'filters': filters, + 'offset': offset, + 'limit': limit, + 'order-field': orderField, + 'order-type': orderType, + 'order-cast': orderCast, + 'search': search, + 'first': first, 'last': last }); }, @@ -1170,21 +1170,21 @@ if(collectionId === undefined) { throw new Error('Missing required parameter: "collectionId"'); } - + if(data === undefined) { throw new Error('Missing required parameter: "data"'); } - + let path = '/database/{collectionId}/documents'.replace(new RegExp('{collectionId}', 'g'), collectionId); return http .post(path, {'content-type': 'application/json'}, { - 'data': data, - 'read': read, - 'write': write, - 'parentDocument': parentDocument, - 'parentProperty': parentProperty, + 'data': data, + 'read': read, + 'write': write, + 'parentDocument': parentDocument, + 'parentProperty': parentProperty, 'parentPropertyType': parentPropertyType }); }, @@ -1203,11 +1203,11 @@ if(collectionId === undefined) { throw new Error('Missing required parameter: "collectionId"'); } - + if(documentId === undefined) { throw new Error('Missing required parameter: "documentId"'); } - + let path = '/database/{collectionId}/documents/{documentId}'.replace(new RegExp('{collectionId}', 'g'), collectionId).replace(new RegExp('{documentId}', 'g'), documentId); return http @@ -1231,22 +1231,22 @@ if(collectionId === undefined) { throw new Error('Missing required parameter: "collectionId"'); } - + if(documentId === undefined) { throw new Error('Missing required parameter: "documentId"'); } - + if(data === undefined) { throw new Error('Missing required parameter: "data"'); } - + let path = '/database/{collectionId}/documents/{documentId}'.replace(new RegExp('{collectionId}', 'g'), collectionId).replace(new RegExp('{documentId}', 'g'), documentId); return http .patch(path, {'content-type': 'application/json'}, { - 'data': data, - 'read': read, + 'data': data, + 'read': read, 'write': write }); }, @@ -1266,11 +1266,11 @@ if(collectionId === undefined) { throw new Error('Missing required parameter: "collectionId"'); } - + if(documentId === undefined) { throw new Error('Missing required parameter: "documentId"'); } - + let path = '/database/{collectionId}/documents/{documentId}'.replace(new RegExp('{collectionId}', 'g'), collectionId).replace(new RegExp('{documentId}', 'g'), documentId); return http @@ -1356,9 +1356,9 @@ /** * List of currencies * - * List of all currencies, including currency symol, name, plural, and decimal - * digits for all major and minor currencies. You can use the locale header to - * get the data in supported language. + * List of all currencies, including currency symbol, name, plural, and + * decimal digits for all major and minor currencies. You can use the locale + * header to get the data in supported language. * * @throws {Error} * @return {Promise} */ @@ -1410,26 +1410,26 @@ if(name === undefined) { throw new Error('Missing required parameter: "name"'); } - + if(teamId === undefined) { throw new Error('Missing required parameter: "teamId"'); } - + let path = '/projects'; return http .post(path, {'content-type': 'application/json'}, { - 'name': name, - 'teamId': teamId, - 'description': description, - 'logo': logo, - 'url': url, - 'legalName': legalName, - 'legalCountry': legalCountry, - 'legalState': legalState, - 'legalCity': legalCity, - 'legalAddress': legalAddress, + 'name': name, + 'teamId': teamId, + 'description': description, + 'logo': logo, + 'url': url, + 'legalName': legalName, + 'legalCountry': legalCountry, + 'legalState': legalState, + 'legalCity': legalCity, + 'legalAddress': legalAddress, 'legalTaxId': legalTaxId }); }, @@ -1445,7 +1445,7 @@ if(projectId === undefined) { throw new Error('Missing required parameter: "projectId"'); } - + let path = '/projects/{projectId}'.replace(new RegExp('{projectId}', 'g'), projectId); return http @@ -1475,25 +1475,25 @@ if(projectId === undefined) { throw new Error('Missing required parameter: "projectId"'); } - + if(name === undefined) { throw new Error('Missing required parameter: "name"'); } - + let path = '/projects/{projectId}'.replace(new RegExp('{projectId}', 'g'), projectId); return http .patch(path, {'content-type': 'application/json'}, { - 'name': name, - 'description': description, - 'logo': logo, - 'url': url, - 'legalName': legalName, - 'legalCountry': legalCountry, - 'legalState': legalState, - 'legalCity': legalCity, - 'legalAddress': legalAddress, + 'name': name, + 'description': description, + 'logo': logo, + 'url': url, + 'legalName': legalName, + 'legalCountry': legalCountry, + 'legalState': legalState, + 'legalCity': legalCity, + 'legalAddress': legalAddress, 'legalTaxId': legalTaxId }); }, @@ -1509,7 +1509,7 @@ if(projectId === undefined) { throw new Error('Missing required parameter: "projectId"'); } - + let path = '/projects/{projectId}'.replace(new RegExp('{projectId}', 'g'), projectId); return http @@ -1529,7 +1529,7 @@ if(projectId === undefined) { throw new Error('Missing required parameter: "projectId"'); } - + let path = '/projects/{projectId}/keys'.replace(new RegExp('{projectId}', 'g'), projectId); return http @@ -1551,21 +1551,21 @@ if(projectId === undefined) { throw new Error('Missing required parameter: "projectId"'); } - + if(name === undefined) { throw new Error('Missing required parameter: "name"'); } - + if(scopes === undefined) { throw new Error('Missing required parameter: "scopes"'); } - + let path = '/projects/{projectId}/keys'.replace(new RegExp('{projectId}', 'g'), projectId); return http .post(path, {'content-type': 'application/json'}, { - 'name': name, + 'name': name, 'scopes': scopes }); }, @@ -1582,11 +1582,11 @@ if(projectId === undefined) { throw new Error('Missing required parameter: "projectId"'); } - + if(keyId === undefined) { throw new Error('Missing required parameter: "keyId"'); } - + let path = '/projects/{projectId}/keys/{keyId}'.replace(new RegExp('{projectId}', 'g'), projectId).replace(new RegExp('{keyId}', 'g'), keyId); return http @@ -1609,25 +1609,25 @@ if(projectId === undefined) { throw new Error('Missing required parameter: "projectId"'); } - + if(keyId === undefined) { throw new Error('Missing required parameter: "keyId"'); } - + if(name === undefined) { throw new Error('Missing required parameter: "name"'); } - + if(scopes === undefined) { throw new Error('Missing required parameter: "scopes"'); } - + let path = '/projects/{projectId}/keys/{keyId}'.replace(new RegExp('{projectId}', 'g'), projectId).replace(new RegExp('{keyId}', 'g'), keyId); return http .put(path, {'content-type': 'application/json'}, { - 'name': name, + 'name': name, 'scopes': scopes }); }, @@ -1644,11 +1644,11 @@ if(projectId === undefined) { throw new Error('Missing required parameter: "projectId"'); } - + if(keyId === undefined) { throw new Error('Missing required parameter: "keyId"'); } - + let path = '/projects/{projectId}/keys/{keyId}'.replace(new RegExp('{projectId}', 'g'), projectId).replace(new RegExp('{keyId}', 'g'), keyId); return http @@ -1671,18 +1671,18 @@ if(projectId === undefined) { throw new Error('Missing required parameter: "projectId"'); } - + if(provider === undefined) { throw new Error('Missing required parameter: "provider"'); } - + let path = '/projects/{projectId}/oauth'.replace(new RegExp('{projectId}', 'g'), projectId); return http .patch(path, {'content-type': 'application/json'}, { - 'provider': provider, - 'appId': appId, + 'provider': provider, + 'appId': appId, 'secret': secret }); }, @@ -1698,7 +1698,7 @@ if(projectId === undefined) { throw new Error('Missing required parameter: "projectId"'); } - + let path = '/projects/{projectId}/platforms'.replace(new RegExp('{projectId}', 'g'), projectId); return http @@ -1723,24 +1723,24 @@ if(projectId === undefined) { throw new Error('Missing required parameter: "projectId"'); } - + if(type === undefined) { throw new Error('Missing required parameter: "type"'); } - + if(name === undefined) { throw new Error('Missing required parameter: "name"'); } - + let path = '/projects/{projectId}/platforms'.replace(new RegExp('{projectId}', 'g'), projectId); return http .post(path, {'content-type': 'application/json'}, { - 'type': type, - 'name': name, - 'key': key, - 'store': store, + 'type': type, + 'name': name, + 'key': key, + 'store': store, 'url': url }); }, @@ -1757,11 +1757,11 @@ if(projectId === undefined) { throw new Error('Missing required parameter: "projectId"'); } - + if(platformId === undefined) { throw new Error('Missing required parameter: "platformId"'); } - + let path = '/projects/{projectId}/platforms/{platformId}'.replace(new RegExp('{projectId}', 'g'), projectId).replace(new RegExp('{platformId}', 'g'), platformId); return http @@ -1786,23 +1786,23 @@ if(projectId === undefined) { throw new Error('Missing required parameter: "projectId"'); } - + if(platformId === undefined) { throw new Error('Missing required parameter: "platformId"'); } - + if(name === undefined) { throw new Error('Missing required parameter: "name"'); } - + let path = '/projects/{projectId}/platforms/{platformId}'.replace(new RegExp('{projectId}', 'g'), projectId).replace(new RegExp('{platformId}', 'g'), platformId); return http .put(path, {'content-type': 'application/json'}, { - 'name': name, - 'key': key, - 'store': store, + 'name': name, + 'key': key, + 'store': store, 'url': url }); }, @@ -1819,11 +1819,11 @@ if(projectId === undefined) { throw new Error('Missing required parameter: "projectId"'); } - + if(platformId === undefined) { throw new Error('Missing required parameter: "platformId"'); } - + let path = '/projects/{projectId}/platforms/{platformId}'.replace(new RegExp('{projectId}', 'g'), projectId).replace(new RegExp('{platformId}', 'g'), platformId); return http @@ -1843,7 +1843,7 @@ if(projectId === undefined) { throw new Error('Missing required parameter: "projectId"'); } - + let path = '/projects/{projectId}/tasks'.replace(new RegExp('{projectId}', 'g'), projectId); return http @@ -1872,44 +1872,44 @@ if(projectId === undefined) { throw new Error('Missing required parameter: "projectId"'); } - + if(name === undefined) { throw new Error('Missing required parameter: "name"'); } - + if(status === undefined) { throw new Error('Missing required parameter: "status"'); } - + if(schedule === undefined) { throw new Error('Missing required parameter: "schedule"'); } - + if(security === undefined) { throw new Error('Missing required parameter: "security"'); } - + if(httpMethod === undefined) { throw new Error('Missing required parameter: "httpMethod"'); } - + if(httpUrl === undefined) { throw new Error('Missing required parameter: "httpUrl"'); } - + let path = '/projects/{projectId}/tasks'.replace(new RegExp('{projectId}', 'g'), projectId); return http .post(path, {'content-type': 'application/json'}, { - 'name': name, - 'status': status, - 'schedule': schedule, - 'security': security, - 'httpMethod': httpMethod, - 'httpUrl': httpUrl, - 'httpHeaders': httpHeaders, - 'httpUser': httpUser, + 'name': name, + 'status': status, + 'schedule': schedule, + 'security': security, + 'httpMethod': httpMethod, + 'httpUrl': httpUrl, + 'httpHeaders': httpHeaders, + 'httpUser': httpUser, 'httpPass': httpPass }); }, @@ -1926,11 +1926,11 @@ if(projectId === undefined) { throw new Error('Missing required parameter: "projectId"'); } - + if(taskId === undefined) { throw new Error('Missing required parameter: "taskId"'); } - + let path = '/projects/{projectId}/tasks/{taskId}'.replace(new RegExp('{projectId}', 'g'), projectId).replace(new RegExp('{taskId}', 'g'), taskId); return http @@ -1960,48 +1960,48 @@ if(projectId === undefined) { throw new Error('Missing required parameter: "projectId"'); } - + if(taskId === undefined) { throw new Error('Missing required parameter: "taskId"'); } - + if(name === undefined) { throw new Error('Missing required parameter: "name"'); } - + if(status === undefined) { throw new Error('Missing required parameter: "status"'); } - + if(schedule === undefined) { throw new Error('Missing required parameter: "schedule"'); } - + if(security === undefined) { throw new Error('Missing required parameter: "security"'); } - + if(httpMethod === undefined) { throw new Error('Missing required parameter: "httpMethod"'); } - + if(httpUrl === undefined) { throw new Error('Missing required parameter: "httpUrl"'); } - + let path = '/projects/{projectId}/tasks/{taskId}'.replace(new RegExp('{projectId}', 'g'), projectId).replace(new RegExp('{taskId}', 'g'), taskId); return http .put(path, {'content-type': 'application/json'}, { - 'name': name, - 'status': status, - 'schedule': schedule, - 'security': security, - 'httpMethod': httpMethod, - 'httpUrl': httpUrl, - 'httpHeaders': httpHeaders, - 'httpUser': httpUser, + 'name': name, + 'status': status, + 'schedule': schedule, + 'security': security, + 'httpMethod': httpMethod, + 'httpUrl': httpUrl, + 'httpHeaders': httpHeaders, + 'httpUser': httpUser, 'httpPass': httpPass }); }, @@ -2018,11 +2018,11 @@ if(projectId === undefined) { throw new Error('Missing required parameter: "projectId"'); } - + if(taskId === undefined) { throw new Error('Missing required parameter: "taskId"'); } - + let path = '/projects/{projectId}/tasks/{taskId}'.replace(new RegExp('{projectId}', 'g'), projectId).replace(new RegExp('{taskId}', 'g'), taskId); return http @@ -2042,7 +2042,7 @@ if(projectId === undefined) { throw new Error('Missing required parameter: "projectId"'); } - + let path = '/projects/{projectId}/usage'.replace(new RegExp('{projectId}', 'g'), projectId); return http @@ -2062,7 +2062,7 @@ if(projectId === undefined) { throw new Error('Missing required parameter: "projectId"'); } - + let path = '/projects/{projectId}/webhooks'.replace(new RegExp('{projectId}', 'g'), projectId); return http @@ -2088,33 +2088,33 @@ if(projectId === undefined) { throw new Error('Missing required parameter: "projectId"'); } - + if(name === undefined) { throw new Error('Missing required parameter: "name"'); } - + if(events === undefined) { throw new Error('Missing required parameter: "events"'); } - + if(url === undefined) { throw new Error('Missing required parameter: "url"'); } - + if(security === undefined) { throw new Error('Missing required parameter: "security"'); } - + let path = '/projects/{projectId}/webhooks'.replace(new RegExp('{projectId}', 'g'), projectId); return http .post(path, {'content-type': 'application/json'}, { - 'name': name, - 'events': events, - 'url': url, - 'security': security, - 'httpUser': httpUser, + 'name': name, + 'events': events, + 'url': url, + 'security': security, + 'httpUser': httpUser, 'httpPass': httpPass }); }, @@ -2131,11 +2131,11 @@ if(projectId === undefined) { throw new Error('Missing required parameter: "projectId"'); } - + if(webhookId === undefined) { throw new Error('Missing required parameter: "webhookId"'); } - + let path = '/projects/{projectId}/webhooks/{webhookId}'.replace(new RegExp('{projectId}', 'g'), projectId).replace(new RegExp('{webhookId}', 'g'), webhookId); return http @@ -2162,37 +2162,37 @@ if(projectId === undefined) { throw new Error('Missing required parameter: "projectId"'); } - + if(webhookId === undefined) { throw new Error('Missing required parameter: "webhookId"'); } - + if(name === undefined) { throw new Error('Missing required parameter: "name"'); } - + if(events === undefined) { throw new Error('Missing required parameter: "events"'); } - + if(url === undefined) { throw new Error('Missing required parameter: "url"'); } - + if(security === undefined) { throw new Error('Missing required parameter: "security"'); } - + let path = '/projects/{projectId}/webhooks/{webhookId}'.replace(new RegExp('{projectId}', 'g'), projectId).replace(new RegExp('{webhookId}', 'g'), webhookId); return http .put(path, {'content-type': 'application/json'}, { - 'name': name, - 'events': events, - 'url': url, - 'security': security, - 'httpUser': httpUser, + 'name': name, + 'events': events, + 'url': url, + 'security': security, + 'httpUser': httpUser, 'httpPass': httpPass }); }, @@ -2209,11 +2209,11 @@ if(projectId === undefined) { throw new Error('Missing required parameter: "projectId"'); } - + if(webhookId === undefined) { throw new Error('Missing required parameter: "webhookId"'); } - + let path = '/projects/{projectId}/webhooks/{webhookId}'.replace(new RegExp('{projectId}', 'g'), projectId).replace(new RegExp('{webhookId}', 'g'), webhookId); return http @@ -2244,9 +2244,9 @@ return http .get(path, {'content-type': 'application/json'}, { - 'search': search, - 'limit': limit, - 'offset': offset, + 'search': search, + 'limit': limit, + 'offset': offset, 'orderType': orderType }); }, @@ -2268,15 +2268,15 @@ if(files === undefined) { throw new Error('Missing required parameter: "files"'); } - + let path = '/storage/files'; return http .post(path, {'content-type': 'multipart/form-data'}, { - 'files': files, - 'read': read, - 'write': write, + 'files': files, + 'read': read, + 'write': write, 'folderId': folderId }); }, @@ -2294,7 +2294,7 @@ if(fileId === undefined) { throw new Error('Missing required parameter: "fileId"'); } - + let path = '/storage/files/{fileId}'.replace(new RegExp('{fileId}', 'g'), fileId); return http @@ -2319,14 +2319,14 @@ if(fileId === undefined) { throw new Error('Missing required parameter: "fileId"'); } - + let path = '/storage/files/{fileId}'.replace(new RegExp('{fileId}', 'g'), fileId); return http .put(path, {'content-type': 'application/json'}, { - 'read': read, - 'write': write, + 'read': read, + 'write': write, 'folderId': folderId }); }, @@ -2344,7 +2344,7 @@ if(fileId === undefined) { throw new Error('Missing required parameter: "fileId"'); } - + let path = '/storage/files/{fileId}'.replace(new RegExp('{fileId}', 'g'), fileId); return http @@ -2367,7 +2367,7 @@ if(fileId === undefined) { throw new Error('Missing required parameter: "fileId"'); } - + let path = '/storage/files/{fileId}/download'.replace(new RegExp('{fileId}', 'g'), fileId); return http @@ -2396,16 +2396,16 @@ if(fileId === undefined) { throw new Error('Missing required parameter: "fileId"'); } - + let path = '/storage/files/{fileId}/preview'.replace(new RegExp('{fileId}', 'g'), fileId); return http .get(path, {'content-type': 'application/json'}, { - 'width': width, - 'height': height, - 'quality': quality, - 'background': background, + 'width': width, + 'height': height, + 'quality': quality, + 'background': background, 'output': output }); }, @@ -2424,7 +2424,7 @@ if(fileId === undefined) { throw new Error('Missing required parameter: "fileId"'); } - + let path = '/storage/files/{fileId}/view'.replace(new RegExp('{fileId}', 'g'), fileId); return http @@ -2456,9 +2456,9 @@ return http .get(path, {'content-type': 'application/json'}, { - 'search': search, - 'limit': limit, - 'offset': offset, + 'search': search, + 'limit': limit, + 'offset': offset, 'orderType': orderType }); }, @@ -2479,13 +2479,13 @@ if(name === undefined) { throw new Error('Missing required parameter: "name"'); } - + let path = '/teams'; return http .post(path, {'content-type': 'application/json'}, { - 'name': name, + 'name': name, 'roles': roles }); }, @@ -2503,7 +2503,7 @@ if(teamId === undefined) { throw new Error('Missing required parameter: "teamId"'); } - + let path = '/teams/{teamId}'.replace(new RegExp('{teamId}', 'g'), teamId); return http @@ -2526,11 +2526,11 @@ if(teamId === undefined) { throw new Error('Missing required parameter: "teamId"'); } - + if(name === undefined) { throw new Error('Missing required parameter: "name"'); } - + let path = '/teams/{teamId}'.replace(new RegExp('{teamId}', 'g'), teamId); return http @@ -2553,7 +2553,7 @@ if(teamId === undefined) { throw new Error('Missing required parameter: "teamId"'); } - + let path = '/teams/{teamId}'.replace(new RegExp('{teamId}', 'g'), teamId); return http @@ -2575,7 +2575,7 @@ if(teamId === undefined) { throw new Error('Missing required parameter: "teamId"'); } - + let path = '/teams/{teamId}/members'.replace(new RegExp('{teamId}', 'g'), teamId); return http @@ -2590,12 +2590,12 @@ * Use this endpoint to invite a new member to your team. An email with a link * to join the team will be sent to the new member email address. If member * doesn't exists in the project it will be automatically created. - * + * * Use the redirect parameter to redirect the user from the invitation email * back to your app. When the user is redirected, use the * /teams/{teamId}/memberships/{inviteId}/status endpoint to finally join the * user to the team. - * + * * Please notice that in order to avoid a [Redirect * Attacks](https://github.com/OWASP/CheatSheetSeries/blob/master/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) * the only valid redirect URL's are the once from domains you have set when @@ -2612,27 +2612,27 @@ if(teamId === undefined) { throw new Error('Missing required parameter: "teamId"'); } - + if(email === undefined) { throw new Error('Missing required parameter: "email"'); } - + if(roles === undefined) { throw new Error('Missing required parameter: "roles"'); } - + if(redirect === undefined) { throw new Error('Missing required parameter: "redirect"'); } - + let path = '/teams/{teamId}/memberships'.replace(new RegExp('{teamId}', 'g'), teamId); return http .post(path, {'content-type': 'application/json'}, { - 'email': email, - 'name': name, - 'roles': roles, + 'email': email, + 'name': name, + 'roles': roles, 'redirect': redirect }); }, @@ -2651,11 +2651,11 @@ if(teamId === undefined) { throw new Error('Missing required parameter: "teamId"'); } - + if(inviteId === undefined) { throw new Error('Missing required parameter: "inviteId"'); } - + let path = '/teams/{teamId}/memberships/{inviteId}'.replace(new RegExp('{teamId}', 'g'), teamId).replace(new RegExp('{inviteId}', 'g'), inviteId); return http @@ -2679,15 +2679,15 @@ if(teamId === undefined) { throw new Error('Missing required parameter: "teamId"'); } - + if(inviteId === undefined) { throw new Error('Missing required parameter: "inviteId"'); } - + if(redirect === undefined) { throw new Error('Missing required parameter: "redirect"'); } - + let path = '/teams/{teamId}/memberships/{inviteId}/resend'.replace(new RegExp('{teamId}', 'g'), teamId).replace(new RegExp('{inviteId}', 'g'), inviteId); return http @@ -2704,12 +2704,12 @@ * is being redirect back to your app from the invitation email. Use the * success and failure URL's to redirect users back to your application after * the request completes. - * + * * Please notice that in order to avoid a [Redirect * Attacks](https://github.com/OWASP/CheatSheetSeries/blob/master/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) * the only valid redirect URL's are the once from domains you have set when * added your platforms in the console interface. - * + * * When not using the success or failure redirect arguments this endpoint will * result with a 200 status code on success and with 401 status error on * failure. This behavior was applied to help the web clients deal with @@ -2728,25 +2728,25 @@ if(teamId === undefined) { throw new Error('Missing required parameter: "teamId"'); } - + if(inviteId === undefined) { throw new Error('Missing required parameter: "inviteId"'); } - + if(userId === undefined) { throw new Error('Missing required parameter: "userId"'); } - + if(secret === undefined) { throw new Error('Missing required parameter: "secret"'); } - + let path = '/teams/{teamId}/memberships/{inviteId}/status'.replace(new RegExp('{teamId}', 'g'), teamId).replace(new RegExp('{inviteId}', 'g'), inviteId); return iframe('patch', path, {project: config.project, - 'userId': userId, - 'secret': secret, - 'success': success, + 'userId': userId, + 'secret': secret, + 'success': success, 'failure': failure }); } @@ -2772,9 +2772,9 @@ return http .get(path, {'content-type': 'application/json'}, { - 'search': search, - 'limit': limit, - 'offset': offset, + 'search': search, + 'limit': limit, + 'offset': offset, 'orderType': orderType }); }, @@ -2793,18 +2793,18 @@ if(email === undefined) { throw new Error('Missing required parameter: "email"'); } - + if(password === undefined) { throw new Error('Missing required parameter: "password"'); } - + let path = '/users'; return http .post(path, {'content-type': 'application/json'}, { - 'email': email, - 'password': password, + 'email': email, + 'password': password, 'name': name }); }, @@ -2821,7 +2821,7 @@ if(userId === undefined) { throw new Error('Missing required parameter: "userId"'); } - + let path = '/users/{userId}'.replace(new RegExp('{userId}', 'g'), userId); return http @@ -2842,7 +2842,7 @@ if(userId === undefined) { throw new Error('Missing required parameter: "userId"'); } - + let path = '/users/{userId}/logs'.replace(new RegExp('{userId}', 'g'), userId); return http @@ -2863,7 +2863,7 @@ if(userId === undefined) { throw new Error('Missing required parameter: "userId"'); } - + let path = '/users/{userId}/prefs'.replace(new RegExp('{userId}', 'g'), userId); return http @@ -2884,7 +2884,7 @@ if(userId === undefined) { throw new Error('Missing required parameter: "userId"'); } - + let path = '/users/{userId}/sessions'.replace(new RegExp('{userId}', 'g'), userId); return http @@ -2905,7 +2905,7 @@ if(userId === undefined) { throw new Error('Missing required parameter: "userId"'); } - + let path = '/users/{userId}/sessions'.replace(new RegExp('{userId}', 'g'), userId); return http @@ -2927,11 +2927,11 @@ if(userId === undefined) { throw new Error('Missing required parameter: "userId"'); } - + if(sessionId === undefined) { throw new Error('Missing required parameter: "sessionId"'); } - + let path = '/users/{userId}/sessions/:session'.replace(new RegExp('{userId}', 'g'), userId); return http @@ -2954,11 +2954,11 @@ if(userId === undefined) { throw new Error('Missing required parameter: "userId"'); } - + if(status === undefined) { throw new Error('Missing required parameter: "status"'); } - + let path = '/users/{userId}/status'.replace(new RegExp('{userId}', 'g'), userId); return http @@ -2987,4 +2987,4 @@ }; }; -})(window); +})(window); \ No newline at end of file diff --git a/app/sdks/node/README.md b/app/sdks/node/README.md index ee747f480..a5b915af7 100644 --- a/app/sdks/node/README.md +++ b/app/sdks/node/README.md @@ -1,9 +1,9 @@ # [Appwrite SDK for NodeJS](https://appwrite.io)   [![Tweet](https://img.shields.io/twitter/url/http/shields.io.svg?style=social)](https://twitter.com/intent/tweet?text=Appwrite%20is%20a%20backend%20as%20a%20service%20for%20building%20web%20or%20mobile%20apps&url=http%3A%2F%2Fappwrite.io&via=appwrite_io&hashtags=JS%2Cjavascript%2Creactjs%2Cangular%2Cios%2Candroid) ![License](https://img.shields.io/github/license/appwrite/sdk-for-node.svg?v=1) -![Version](https://img.shields.io/badge/api%20version-0.1.15-blue.svg?v=1) +![Version](https://img.shields.io/badge/api%20version-latest-blue.svg?v=1) -This SDK is compatible with Appwrite server version 0.2.0 for older versions check previous releases. +This SDK is compitable with Appwrite server version 0.2.0 for older versions check previous releases. Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https://appwrite.io/docs](https://appwrite.io/docs) @@ -11,7 +11,7 @@ Appwrite backend as a service cuts up to 70% of the time and costs required for ![Appwrite](https://appwrite.io/images/github.png) -**API Version: 0.1.15** +**API Version: latest** ## Installation @@ -23,4 +23,4 @@ npm install node-appwrite --save ## License -Please see the [BSD-3-Clause license](https://raw.githubusercontent.com/appwrite/appwrite/master/LICENSE) file for more information. +Please see the [BSD-3-Clause license](https://raw.githubusercontent.com/appwrite/appwrite/master/LICENSE) file for more information. \ No newline at end of file diff --git a/app/sdks/node/docs/examples/account/delete.md b/app/sdks/node/docs/examples/account/delete.md index d83a9a69c..0710fd6df 100644 --- a/app/sdks/node/docs/examples/account/delete.md +++ b/app/sdks/node/docs/examples/account/delete.md @@ -1,7 +1,7 @@ const sdk = require('node-appwrite'); // Init SDK -let client = new Account.Client(); +let client = new sdk.Client(); let account = new sdk.Account(client); diff --git a/app/sdks/node/docs/examples/account/get-prefs.md b/app/sdks/node/docs/examples/account/get-prefs.md index dc62c3610..bdff57e92 100644 --- a/app/sdks/node/docs/examples/account/get-prefs.md +++ b/app/sdks/node/docs/examples/account/get-prefs.md @@ -1,7 +1,7 @@ const sdk = require('node-appwrite'); // Init SDK -let client = new Account.Client(); +let client = new sdk.Client(); let account = new sdk.Account(client); diff --git a/app/sdks/node/docs/examples/account/get-security.md b/app/sdks/node/docs/examples/account/get-security.md index 285fc0767..03a6561ff 100644 --- a/app/sdks/node/docs/examples/account/get-security.md +++ b/app/sdks/node/docs/examples/account/get-security.md @@ -1,7 +1,7 @@ const sdk = require('node-appwrite'); // Init SDK -let client = new Account.Client(); +let client = new sdk.Client(); let account = new sdk.Account(client); diff --git a/app/sdks/node/docs/examples/account/get-sessions.md b/app/sdks/node/docs/examples/account/get-sessions.md index 07bf3a7d2..02b464a49 100644 --- a/app/sdks/node/docs/examples/account/get-sessions.md +++ b/app/sdks/node/docs/examples/account/get-sessions.md @@ -1,7 +1,7 @@ const sdk = require('node-appwrite'); // Init SDK -let client = new Account.Client(); +let client = new sdk.Client(); let account = new sdk.Account(client); diff --git a/app/sdks/node/docs/examples/account/get.md b/app/sdks/node/docs/examples/account/get.md index dce8b618c..b2e078d06 100644 --- a/app/sdks/node/docs/examples/account/get.md +++ b/app/sdks/node/docs/examples/account/get.md @@ -1,7 +1,7 @@ const sdk = require('node-appwrite'); // Init SDK -let client = new Account.Client(); +let client = new sdk.Client(); let account = new sdk.Account(client); diff --git a/app/sdks/node/docs/examples/account/update-email.md b/app/sdks/node/docs/examples/account/update-email.md index d60214ad6..29b50314f 100644 --- a/app/sdks/node/docs/examples/account/update-email.md +++ b/app/sdks/node/docs/examples/account/update-email.md @@ -1,7 +1,7 @@ const sdk = require('node-appwrite'); // Init SDK -let client = new Account.Client(); +let client = new sdk.Client(); let account = new sdk.Account(client); diff --git a/app/sdks/node/docs/examples/account/update-name.md b/app/sdks/node/docs/examples/account/update-name.md index 9c21bd720..d8b4734cb 100644 --- a/app/sdks/node/docs/examples/account/update-name.md +++ b/app/sdks/node/docs/examples/account/update-name.md @@ -1,7 +1,7 @@ const sdk = require('node-appwrite'); // Init SDK -let client = new Account.Client(); +let client = new sdk.Client(); let account = new sdk.Account(client); diff --git a/app/sdks/node/docs/examples/account/update-password.md b/app/sdks/node/docs/examples/account/update-password.md index a7fe84181..5aa6622ff 100644 --- a/app/sdks/node/docs/examples/account/update-password.md +++ b/app/sdks/node/docs/examples/account/update-password.md @@ -1,7 +1,7 @@ const sdk = require('node-appwrite'); // Init SDK -let client = new Account.Client(); +let client = new sdk.Client(); let account = new sdk.Account(client); diff --git a/app/sdks/node/docs/examples/account/update-prefs.md b/app/sdks/node/docs/examples/account/update-prefs.md index 000a78de2..c76e735e1 100644 --- a/app/sdks/node/docs/examples/account/update-prefs.md +++ b/app/sdks/node/docs/examples/account/update-prefs.md @@ -1,7 +1,7 @@ const sdk = require('node-appwrite'); // Init SDK -let client = new Account.Client(); +let client = new sdk.Client(); let account = new sdk.Account(client); diff --git a/app/sdks/node/docs/examples/auth/confirm-resend.md b/app/sdks/node/docs/examples/auth/confirm-resend.md index d4fa48a51..443870394 100644 --- a/app/sdks/node/docs/examples/auth/confirm-resend.md +++ b/app/sdks/node/docs/examples/auth/confirm-resend.md @@ -1,7 +1,7 @@ const sdk = require('node-appwrite'); // Init SDK -let client = new Auth.Client(); +let client = new sdk.Client(); let auth = new sdk.Auth(client); diff --git a/app/sdks/node/docs/examples/auth/confirm.md b/app/sdks/node/docs/examples/auth/confirm.md index 434e0b6ac..527df2d6f 100644 --- a/app/sdks/node/docs/examples/auth/confirm.md +++ b/app/sdks/node/docs/examples/auth/confirm.md @@ -1,7 +1,7 @@ const sdk = require('node-appwrite'); // Init SDK -let client = new Auth.Client(); +let client = new sdk.Client(); let auth = new sdk.Auth(client); diff --git a/app/sdks/node/docs/examples/auth/login.md b/app/sdks/node/docs/examples/auth/login.md index e47d7faee..f71a562e0 100644 --- a/app/sdks/node/docs/examples/auth/login.md +++ b/app/sdks/node/docs/examples/auth/login.md @@ -1,7 +1,7 @@ const sdk = require('node-appwrite'); // Init SDK -let client = new Auth.Client(); +let client = new sdk.Client(); let auth = new sdk.Auth(client); diff --git a/app/sdks/node/docs/examples/auth/logout-by-session.md b/app/sdks/node/docs/examples/auth/logout-by-session.md index ad035add2..df964c0ca 100644 --- a/app/sdks/node/docs/examples/auth/logout-by-session.md +++ b/app/sdks/node/docs/examples/auth/logout-by-session.md @@ -1,7 +1,7 @@ const sdk = require('node-appwrite'); // Init SDK -let client = new Auth.Client(); +let client = new sdk.Client(); let auth = new sdk.Auth(client); diff --git a/app/sdks/node/docs/examples/auth/logout.md b/app/sdks/node/docs/examples/auth/logout.md index d90f59e75..d34102cbd 100644 --- a/app/sdks/node/docs/examples/auth/logout.md +++ b/app/sdks/node/docs/examples/auth/logout.md @@ -1,7 +1,7 @@ const sdk = require('node-appwrite'); // Init SDK -let client = new Auth.Client(); +let client = new sdk.Client(); let auth = new sdk.Auth(client); diff --git a/app/sdks/node/docs/examples/auth/oauth.md b/app/sdks/node/docs/examples/auth/oauth.md index c12433243..e2e588684 100644 --- a/app/sdks/node/docs/examples/auth/oauth.md +++ b/app/sdks/node/docs/examples/auth/oauth.md @@ -1,7 +1,7 @@ const sdk = require('node-appwrite'); // Init SDK -let client = new Auth.Client(); +let client = new sdk.Client(); let auth = new sdk.Auth(client); diff --git a/app/sdks/node/docs/examples/auth/recovery-reset.md b/app/sdks/node/docs/examples/auth/recovery-reset.md index da9fc758d..f43a8b330 100644 --- a/app/sdks/node/docs/examples/auth/recovery-reset.md +++ b/app/sdks/node/docs/examples/auth/recovery-reset.md @@ -1,7 +1,7 @@ const sdk = require('node-appwrite'); // Init SDK -let client = new Auth.Client(); +let client = new sdk.Client(); let auth = new sdk.Auth(client); diff --git a/app/sdks/node/docs/examples/auth/recovery.md b/app/sdks/node/docs/examples/auth/recovery.md index 167b31bc7..9e340a7f3 100644 --- a/app/sdks/node/docs/examples/auth/recovery.md +++ b/app/sdks/node/docs/examples/auth/recovery.md @@ -1,7 +1,7 @@ const sdk = require('node-appwrite'); // Init SDK -let client = new Auth.Client(); +let client = new sdk.Client(); let auth = new sdk.Auth(client); diff --git a/app/sdks/node/docs/examples/auth/register.md b/app/sdks/node/docs/examples/auth/register.md index d5b0a2fb7..708719a56 100644 --- a/app/sdks/node/docs/examples/auth/register.md +++ b/app/sdks/node/docs/examples/auth/register.md @@ -1,7 +1,7 @@ const sdk = require('node-appwrite'); // Init SDK -let client = new Auth.Client(); +let client = new sdk.Client(); let auth = new sdk.Auth(client); diff --git a/app/sdks/node/docs/examples/avatars/get-browser.md b/app/sdks/node/docs/examples/avatars/get-browser.md index 128499b65..50d3fefcf 100644 --- a/app/sdks/node/docs/examples/avatars/get-browser.md +++ b/app/sdks/node/docs/examples/avatars/get-browser.md @@ -1,7 +1,7 @@ const sdk = require('node-appwrite'); // Init SDK -let client = new Avatars.Client(); +let client = new sdk.Client(); let avatars = new sdk.Avatars(client); diff --git a/app/sdks/node/docs/examples/avatars/get-credit-card.md b/app/sdks/node/docs/examples/avatars/get-credit-card.md index 8a773ed5d..f64488cc1 100644 --- a/app/sdks/node/docs/examples/avatars/get-credit-card.md +++ b/app/sdks/node/docs/examples/avatars/get-credit-card.md @@ -1,7 +1,7 @@ const sdk = require('node-appwrite'); // Init SDK -let client = new Avatars.Client(); +let client = new sdk.Client(); let avatars = new sdk.Avatars(client); diff --git a/app/sdks/node/docs/examples/avatars/get-favicon.md b/app/sdks/node/docs/examples/avatars/get-favicon.md index 7f4b41ee6..ac449e9f1 100644 --- a/app/sdks/node/docs/examples/avatars/get-favicon.md +++ b/app/sdks/node/docs/examples/avatars/get-favicon.md @@ -1,7 +1,7 @@ const sdk = require('node-appwrite'); // Init SDK -let client = new Avatars.Client(); +let client = new sdk.Client(); let avatars = new sdk.Avatars(client); diff --git a/app/sdks/node/docs/examples/avatars/get-flag.md b/app/sdks/node/docs/examples/avatars/get-flag.md index 2b8ec243f..d53f2aa55 100644 --- a/app/sdks/node/docs/examples/avatars/get-flag.md +++ b/app/sdks/node/docs/examples/avatars/get-flag.md @@ -1,7 +1,7 @@ const sdk = require('node-appwrite'); // Init SDK -let client = new Avatars.Client(); +let client = new sdk.Client(); let avatars = new sdk.Avatars(client); diff --git a/app/sdks/node/docs/examples/avatars/get-image.md b/app/sdks/node/docs/examples/avatars/get-image.md index b516fa98f..e541b90e6 100644 --- a/app/sdks/node/docs/examples/avatars/get-image.md +++ b/app/sdks/node/docs/examples/avatars/get-image.md @@ -1,7 +1,7 @@ const sdk = require('node-appwrite'); // Init SDK -let client = new Avatars.Client(); +let client = new sdk.Client(); let avatars = new sdk.Avatars(client); diff --git a/app/sdks/node/docs/examples/avatars/get-q-r.md b/app/sdks/node/docs/examples/avatars/get-q-r.md index 1c89a18c3..9611a617e 100644 --- a/app/sdks/node/docs/examples/avatars/get-q-r.md +++ b/app/sdks/node/docs/examples/avatars/get-q-r.md @@ -1,7 +1,7 @@ const sdk = require('node-appwrite'); // Init SDK -let client = new Avatars.Client(); +let client = new sdk.Client(); let avatars = new sdk.Avatars(client); diff --git a/app/sdks/node/docs/examples/database/create-collection.md b/app/sdks/node/docs/examples/database/create-collection.md index 83406de2e..912dab3e4 100644 --- a/app/sdks/node/docs/examples/database/create-collection.md +++ b/app/sdks/node/docs/examples/database/create-collection.md @@ -1,7 +1,7 @@ const sdk = require('node-appwrite'); // Init SDK -let client = new Database.Client(); +let client = new sdk.Client(); let database = new sdk.Database(client); diff --git a/app/sdks/node/docs/examples/database/create-document.md b/app/sdks/node/docs/examples/database/create-document.md index da63b2460..458e6e97d 100644 --- a/app/sdks/node/docs/examples/database/create-document.md +++ b/app/sdks/node/docs/examples/database/create-document.md @@ -1,7 +1,7 @@ const sdk = require('node-appwrite'); // Init SDK -let client = new Database.Client(); +let client = new sdk.Client(); let database = new sdk.Database(client); diff --git a/app/sdks/node/docs/examples/database/delete-collection.md b/app/sdks/node/docs/examples/database/delete-collection.md index 40cb89a05..7be40b41b 100644 --- a/app/sdks/node/docs/examples/database/delete-collection.md +++ b/app/sdks/node/docs/examples/database/delete-collection.md @@ -1,7 +1,7 @@ const sdk = require('node-appwrite'); // Init SDK -let client = new Database.Client(); +let client = new sdk.Client(); let database = new sdk.Database(client); diff --git a/app/sdks/node/docs/examples/database/delete-document.md b/app/sdks/node/docs/examples/database/delete-document.md index 6fb720be4..d74f2dd16 100644 --- a/app/sdks/node/docs/examples/database/delete-document.md +++ b/app/sdks/node/docs/examples/database/delete-document.md @@ -1,7 +1,7 @@ const sdk = require('node-appwrite'); // Init SDK -let client = new Database.Client(); +let client = new sdk.Client(); let database = new sdk.Database(client); diff --git a/app/sdks/node/docs/examples/database/get-collection.md b/app/sdks/node/docs/examples/database/get-collection.md index ba1be93ec..69a39382b 100644 --- a/app/sdks/node/docs/examples/database/get-collection.md +++ b/app/sdks/node/docs/examples/database/get-collection.md @@ -1,7 +1,7 @@ const sdk = require('node-appwrite'); // Init SDK -let client = new Database.Client(); +let client = new sdk.Client(); let database = new sdk.Database(client); diff --git a/app/sdks/node/docs/examples/database/get-document.md b/app/sdks/node/docs/examples/database/get-document.md index 9ec5531d5..5a676580b 100644 --- a/app/sdks/node/docs/examples/database/get-document.md +++ b/app/sdks/node/docs/examples/database/get-document.md @@ -1,7 +1,7 @@ const sdk = require('node-appwrite'); // Init SDK -let client = new Database.Client(); +let client = new sdk.Client(); let database = new sdk.Database(client); diff --git a/app/sdks/node/docs/examples/database/list-collections.md b/app/sdks/node/docs/examples/database/list-collections.md index e24cfe1e1..2f746de89 100644 --- a/app/sdks/node/docs/examples/database/list-collections.md +++ b/app/sdks/node/docs/examples/database/list-collections.md @@ -1,7 +1,7 @@ const sdk = require('node-appwrite'); // Init SDK -let client = new Database.Client(); +let client = new sdk.Client(); let database = new sdk.Database(client); diff --git a/app/sdks/node/docs/examples/database/list-documents.md b/app/sdks/node/docs/examples/database/list-documents.md index 698cb9f85..641a57242 100644 --- a/app/sdks/node/docs/examples/database/list-documents.md +++ b/app/sdks/node/docs/examples/database/list-documents.md @@ -1,7 +1,7 @@ const sdk = require('node-appwrite'); // Init SDK -let client = new Database.Client(); +let client = new sdk.Client(); let database = new sdk.Database(client); diff --git a/app/sdks/node/docs/examples/database/update-collection.md b/app/sdks/node/docs/examples/database/update-collection.md index 909efb4e3..fd3480d1e 100644 --- a/app/sdks/node/docs/examples/database/update-collection.md +++ b/app/sdks/node/docs/examples/database/update-collection.md @@ -1,7 +1,7 @@ const sdk = require('node-appwrite'); // Init SDK -let client = new Database.Client(); +let client = new sdk.Client(); let database = new sdk.Database(client); diff --git a/app/sdks/node/docs/examples/database/update-document.md b/app/sdks/node/docs/examples/database/update-document.md index 021228737..1284e7b64 100644 --- a/app/sdks/node/docs/examples/database/update-document.md +++ b/app/sdks/node/docs/examples/database/update-document.md @@ -1,7 +1,7 @@ const sdk = require('node-appwrite'); // Init SDK -let client = new Database.Client(); +let client = new sdk.Client(); let database = new sdk.Database(client); diff --git a/app/sdks/node/docs/examples/locale/get-countries-e-u.md b/app/sdks/node/docs/examples/locale/get-countries-e-u.md index 3361060d2..3aabf5713 100644 --- a/app/sdks/node/docs/examples/locale/get-countries-e-u.md +++ b/app/sdks/node/docs/examples/locale/get-countries-e-u.md @@ -1,7 +1,7 @@ const sdk = require('node-appwrite'); // Init SDK -let client = new Locale.Client(); +let client = new sdk.Client(); let locale = new sdk.Locale(client); diff --git a/app/sdks/node/docs/examples/locale/get-countries-phones.md b/app/sdks/node/docs/examples/locale/get-countries-phones.md index 8479614d0..79cc6f5b6 100644 --- a/app/sdks/node/docs/examples/locale/get-countries-phones.md +++ b/app/sdks/node/docs/examples/locale/get-countries-phones.md @@ -1,7 +1,7 @@ const sdk = require('node-appwrite'); // Init SDK -let client = new Locale.Client(); +let client = new sdk.Client(); let locale = new sdk.Locale(client); diff --git a/app/sdks/node/docs/examples/locale/get-countries.md b/app/sdks/node/docs/examples/locale/get-countries.md index 8f9017ce8..a4e878bc6 100644 --- a/app/sdks/node/docs/examples/locale/get-countries.md +++ b/app/sdks/node/docs/examples/locale/get-countries.md @@ -1,7 +1,7 @@ const sdk = require('node-appwrite'); // Init SDK -let client = new Locale.Client(); +let client = new sdk.Client(); let locale = new sdk.Locale(client); diff --git a/app/sdks/node/docs/examples/locale/get-currencies.md b/app/sdks/node/docs/examples/locale/get-currencies.md index a488f188c..59d8137de 100644 --- a/app/sdks/node/docs/examples/locale/get-currencies.md +++ b/app/sdks/node/docs/examples/locale/get-currencies.md @@ -1,7 +1,7 @@ const sdk = require('node-appwrite'); // Init SDK -let client = new Locale.Client(); +let client = new sdk.Client(); let locale = new sdk.Locale(client); diff --git a/app/sdks/node/docs/examples/locale/get-locale.md b/app/sdks/node/docs/examples/locale/get-locale.md index 95a08dcec..57e5d69e7 100644 --- a/app/sdks/node/docs/examples/locale/get-locale.md +++ b/app/sdks/node/docs/examples/locale/get-locale.md @@ -1,7 +1,7 @@ const sdk = require('node-appwrite'); // Init SDK -let client = new Locale.Client(); +let client = new sdk.Client(); let locale = new sdk.Locale(client); diff --git a/app/sdks/node/docs/examples/projects/create-key.md b/app/sdks/node/docs/examples/projects/create-key.md index 35a88cff3..227e8fc5b 100644 --- a/app/sdks/node/docs/examples/projects/create-key.md +++ b/app/sdks/node/docs/examples/projects/create-key.md @@ -1,7 +1,7 @@ const sdk = require('node-appwrite'); // Init SDK -let client = new Projects.Client(); +let client = new sdk.Client(); let projects = new sdk.Projects(client); diff --git a/app/sdks/node/docs/examples/projects/create-platform.md b/app/sdks/node/docs/examples/projects/create-platform.md index edb47f78c..ce9c7e01e 100644 --- a/app/sdks/node/docs/examples/projects/create-platform.md +++ b/app/sdks/node/docs/examples/projects/create-platform.md @@ -1,7 +1,7 @@ const sdk = require('node-appwrite'); // Init SDK -let client = new Projects.Client(); +let client = new sdk.Client(); let projects = new sdk.Projects(client); diff --git a/app/sdks/node/docs/examples/projects/create-project.md b/app/sdks/node/docs/examples/projects/create-project.md index 95b3cb523..8f0d8b47e 100644 --- a/app/sdks/node/docs/examples/projects/create-project.md +++ b/app/sdks/node/docs/examples/projects/create-project.md @@ -1,7 +1,7 @@ const sdk = require('node-appwrite'); // Init SDK -let client = new Projects.Client(); +let client = new sdk.Client(); let projects = new sdk.Projects(client); diff --git a/app/sdks/node/docs/examples/projects/create-task.md b/app/sdks/node/docs/examples/projects/create-task.md index 8ec1cfa93..892374229 100644 --- a/app/sdks/node/docs/examples/projects/create-task.md +++ b/app/sdks/node/docs/examples/projects/create-task.md @@ -1,7 +1,7 @@ const sdk = require('node-appwrite'); // Init SDK -let client = new Projects.Client(); +let client = new sdk.Client(); let projects = new sdk.Projects(client); diff --git a/app/sdks/node/docs/examples/projects/create-webhook.md b/app/sdks/node/docs/examples/projects/create-webhook.md index 049245b52..8135e8d66 100644 --- a/app/sdks/node/docs/examples/projects/create-webhook.md +++ b/app/sdks/node/docs/examples/projects/create-webhook.md @@ -1,7 +1,7 @@ const sdk = require('node-appwrite'); // Init SDK -let client = new Projects.Client(); +let client = new sdk.Client(); let projects = new sdk.Projects(client); diff --git a/app/sdks/node/docs/examples/projects/delete-key.md b/app/sdks/node/docs/examples/projects/delete-key.md index 0c0200600..3ca5caba8 100644 --- a/app/sdks/node/docs/examples/projects/delete-key.md +++ b/app/sdks/node/docs/examples/projects/delete-key.md @@ -1,7 +1,7 @@ const sdk = require('node-appwrite'); // Init SDK -let client = new Projects.Client(); +let client = new sdk.Client(); let projects = new sdk.Projects(client); diff --git a/app/sdks/node/docs/examples/projects/delete-platform.md b/app/sdks/node/docs/examples/projects/delete-platform.md index b38bb217b..8c01703dd 100644 --- a/app/sdks/node/docs/examples/projects/delete-platform.md +++ b/app/sdks/node/docs/examples/projects/delete-platform.md @@ -1,7 +1,7 @@ const sdk = require('node-appwrite'); // Init SDK -let client = new Projects.Client(); +let client = new sdk.Client(); let projects = new sdk.Projects(client); diff --git a/app/sdks/node/docs/examples/projects/delete-project.md b/app/sdks/node/docs/examples/projects/delete-project.md index d1c2603ec..7755f35c1 100644 --- a/app/sdks/node/docs/examples/projects/delete-project.md +++ b/app/sdks/node/docs/examples/projects/delete-project.md @@ -1,7 +1,7 @@ const sdk = require('node-appwrite'); // Init SDK -let client = new Projects.Client(); +let client = new sdk.Client(); let projects = new sdk.Projects(client); diff --git a/app/sdks/node/docs/examples/projects/delete-task.md b/app/sdks/node/docs/examples/projects/delete-task.md index e3f305060..a3b985b78 100644 --- a/app/sdks/node/docs/examples/projects/delete-task.md +++ b/app/sdks/node/docs/examples/projects/delete-task.md @@ -1,7 +1,7 @@ const sdk = require('node-appwrite'); // Init SDK -let client = new Projects.Client(); +let client = new sdk.Client(); let projects = new sdk.Projects(client); diff --git a/app/sdks/node/docs/examples/projects/delete-webhook.md b/app/sdks/node/docs/examples/projects/delete-webhook.md index da0e24a0f..3b41b8c43 100644 --- a/app/sdks/node/docs/examples/projects/delete-webhook.md +++ b/app/sdks/node/docs/examples/projects/delete-webhook.md @@ -1,7 +1,7 @@ const sdk = require('node-appwrite'); // Init SDK -let client = new Projects.Client(); +let client = new sdk.Client(); let projects = new sdk.Projects(client); diff --git a/app/sdks/node/docs/examples/projects/get-key.md b/app/sdks/node/docs/examples/projects/get-key.md index 239a3b153..e0b2a8585 100644 --- a/app/sdks/node/docs/examples/projects/get-key.md +++ b/app/sdks/node/docs/examples/projects/get-key.md @@ -1,7 +1,7 @@ const sdk = require('node-appwrite'); // Init SDK -let client = new Projects.Client(); +let client = new sdk.Client(); let projects = new sdk.Projects(client); diff --git a/app/sdks/node/docs/examples/projects/get-platform.md b/app/sdks/node/docs/examples/projects/get-platform.md index 218d8e69c..c035141e0 100644 --- a/app/sdks/node/docs/examples/projects/get-platform.md +++ b/app/sdks/node/docs/examples/projects/get-platform.md @@ -1,7 +1,7 @@ const sdk = require('node-appwrite'); // Init SDK -let client = new Projects.Client(); +let client = new sdk.Client(); let projects = new sdk.Projects(client); diff --git a/app/sdks/node/docs/examples/projects/get-project-usage.md b/app/sdks/node/docs/examples/projects/get-project-usage.md index a204b64c7..32c13c13a 100644 --- a/app/sdks/node/docs/examples/projects/get-project-usage.md +++ b/app/sdks/node/docs/examples/projects/get-project-usage.md @@ -1,7 +1,7 @@ const sdk = require('node-appwrite'); // Init SDK -let client = new Projects.Client(); +let client = new sdk.Client(); let projects = new sdk.Projects(client); diff --git a/app/sdks/node/docs/examples/projects/get-project.md b/app/sdks/node/docs/examples/projects/get-project.md index 7b0fe5151..15b685a55 100644 --- a/app/sdks/node/docs/examples/projects/get-project.md +++ b/app/sdks/node/docs/examples/projects/get-project.md @@ -1,7 +1,7 @@ const sdk = require('node-appwrite'); // Init SDK -let client = new Projects.Client(); +let client = new sdk.Client(); let projects = new sdk.Projects(client); diff --git a/app/sdks/node/docs/examples/projects/get-task.md b/app/sdks/node/docs/examples/projects/get-task.md index 1c7338d00..83040a39f 100644 --- a/app/sdks/node/docs/examples/projects/get-task.md +++ b/app/sdks/node/docs/examples/projects/get-task.md @@ -1,7 +1,7 @@ const sdk = require('node-appwrite'); // Init SDK -let client = new Projects.Client(); +let client = new sdk.Client(); let projects = new sdk.Projects(client); diff --git a/app/sdks/node/docs/examples/projects/get-webhook.md b/app/sdks/node/docs/examples/projects/get-webhook.md index cec3f3793..cb98367d6 100644 --- a/app/sdks/node/docs/examples/projects/get-webhook.md +++ b/app/sdks/node/docs/examples/projects/get-webhook.md @@ -1,7 +1,7 @@ const sdk = require('node-appwrite'); // Init SDK -let client = new Projects.Client(); +let client = new sdk.Client(); let projects = new sdk.Projects(client); diff --git a/app/sdks/node/docs/examples/projects/list-keys.md b/app/sdks/node/docs/examples/projects/list-keys.md index 0f406419e..a0a894a68 100644 --- a/app/sdks/node/docs/examples/projects/list-keys.md +++ b/app/sdks/node/docs/examples/projects/list-keys.md @@ -1,7 +1,7 @@ const sdk = require('node-appwrite'); // Init SDK -let client = new Projects.Client(); +let client = new sdk.Client(); let projects = new sdk.Projects(client); diff --git a/app/sdks/node/docs/examples/projects/list-platforms.md b/app/sdks/node/docs/examples/projects/list-platforms.md index c448faa37..bb7f1370c 100644 --- a/app/sdks/node/docs/examples/projects/list-platforms.md +++ b/app/sdks/node/docs/examples/projects/list-platforms.md @@ -1,7 +1,7 @@ const sdk = require('node-appwrite'); // Init SDK -let client = new Projects.Client(); +let client = new sdk.Client(); let projects = new sdk.Projects(client); diff --git a/app/sdks/node/docs/examples/projects/list-projects.md b/app/sdks/node/docs/examples/projects/list-projects.md index 3299e0293..e4651ef68 100644 --- a/app/sdks/node/docs/examples/projects/list-projects.md +++ b/app/sdks/node/docs/examples/projects/list-projects.md @@ -1,7 +1,7 @@ const sdk = require('node-appwrite'); // Init SDK -let client = new Projects.Client(); +let client = new sdk.Client(); let projects = new sdk.Projects(client); diff --git a/app/sdks/node/docs/examples/projects/list-tasks.md b/app/sdks/node/docs/examples/projects/list-tasks.md index c2bd77b10..98e381116 100644 --- a/app/sdks/node/docs/examples/projects/list-tasks.md +++ b/app/sdks/node/docs/examples/projects/list-tasks.md @@ -1,7 +1,7 @@ const sdk = require('node-appwrite'); // Init SDK -let client = new Projects.Client(); +let client = new sdk.Client(); let projects = new sdk.Projects(client); diff --git a/app/sdks/node/docs/examples/projects/list-webhooks.md b/app/sdks/node/docs/examples/projects/list-webhooks.md index 0d5caec85..35da55721 100644 --- a/app/sdks/node/docs/examples/projects/list-webhooks.md +++ b/app/sdks/node/docs/examples/projects/list-webhooks.md @@ -1,7 +1,7 @@ const sdk = require('node-appwrite'); // Init SDK -let client = new Projects.Client(); +let client = new sdk.Client(); let projects = new sdk.Projects(client); diff --git a/app/sdks/node/docs/examples/projects/update-key.md b/app/sdks/node/docs/examples/projects/update-key.md index 34226548a..cd445aef2 100644 --- a/app/sdks/node/docs/examples/projects/update-key.md +++ b/app/sdks/node/docs/examples/projects/update-key.md @@ -1,7 +1,7 @@ const sdk = require('node-appwrite'); // Init SDK -let client = new Projects.Client(); +let client = new sdk.Client(); let projects = new sdk.Projects(client); diff --git a/app/sdks/node/docs/examples/projects/update-platform.md b/app/sdks/node/docs/examples/projects/update-platform.md index 1609aec57..6adcad9ed 100644 --- a/app/sdks/node/docs/examples/projects/update-platform.md +++ b/app/sdks/node/docs/examples/projects/update-platform.md @@ -1,7 +1,7 @@ const sdk = require('node-appwrite'); // Init SDK -let client = new Projects.Client(); +let client = new sdk.Client(); let projects = new sdk.Projects(client); diff --git a/app/sdks/node/docs/examples/projects/update-project-o-auth.md b/app/sdks/node/docs/examples/projects/update-project-o-auth.md index b393b6ccb..229f7e9c3 100644 --- a/app/sdks/node/docs/examples/projects/update-project-o-auth.md +++ b/app/sdks/node/docs/examples/projects/update-project-o-auth.md @@ -1,7 +1,7 @@ const sdk = require('node-appwrite'); // Init SDK -let client = new Projects.Client(); +let client = new sdk.Client(); let projects = new sdk.Projects(client); diff --git a/app/sdks/node/docs/examples/projects/update-project.md b/app/sdks/node/docs/examples/projects/update-project.md index 096078e91..486cef2a4 100644 --- a/app/sdks/node/docs/examples/projects/update-project.md +++ b/app/sdks/node/docs/examples/projects/update-project.md @@ -1,7 +1,7 @@ const sdk = require('node-appwrite'); // Init SDK -let client = new Projects.Client(); +let client = new sdk.Client(); let projects = new sdk.Projects(client); diff --git a/app/sdks/node/docs/examples/projects/update-task.md b/app/sdks/node/docs/examples/projects/update-task.md index 90462a191..c834dc01f 100644 --- a/app/sdks/node/docs/examples/projects/update-task.md +++ b/app/sdks/node/docs/examples/projects/update-task.md @@ -1,7 +1,7 @@ const sdk = require('node-appwrite'); // Init SDK -let client = new Projects.Client(); +let client = new sdk.Client(); let projects = new sdk.Projects(client); @@ -10,7 +10,7 @@ client .setKey('') ; -let promise = projects.updateTask('[PROJECT_ID]', '[TASK_ID]', '[NAME]', 'play', '', 0, 'GET', 'https://example.com'); +let promise = projects.updateTask('[PROJECT_ID]', '[TASK_ID]', '[NAME]', 'play', '', 1, 'GET', 'https://example.com'); promise.then(function (response) { console.log(response); diff --git a/app/sdks/node/docs/examples/projects/update-webhook.md b/app/sdks/node/docs/examples/projects/update-webhook.md index ba17d1c72..59783387f 100644 --- a/app/sdks/node/docs/examples/projects/update-webhook.md +++ b/app/sdks/node/docs/examples/projects/update-webhook.md @@ -1,7 +1,7 @@ const sdk = require('node-appwrite'); // Init SDK -let client = new Projects.Client(); +let client = new sdk.Client(); let projects = new sdk.Projects(client); @@ -10,7 +10,7 @@ client .setKey('') ; -let promise = projects.updateWebhook('[PROJECT_ID]', '[WEBHOOK_ID]', '[NAME]', [], '[URL]', 0); +let promise = projects.updateWebhook('[PROJECT_ID]', '[WEBHOOK_ID]', '[NAME]', [], '[URL]', 1); promise.then(function (response) { console.log(response); diff --git a/app/sdks/node/docs/examples/storage/create-file.md b/app/sdks/node/docs/examples/storage/create-file.md index cbac1fcc3..f9da6bb14 100644 --- a/app/sdks/node/docs/examples/storage/create-file.md +++ b/app/sdks/node/docs/examples/storage/create-file.md @@ -1,7 +1,7 @@ const sdk = require('node-appwrite'); // Init SDK -let client = new Storage.Client(); +let client = new sdk.Client(); let storage = new sdk.Storage(client); diff --git a/app/sdks/node/docs/examples/storage/delete-file.md b/app/sdks/node/docs/examples/storage/delete-file.md index aea8c60d1..9e8d13880 100644 --- a/app/sdks/node/docs/examples/storage/delete-file.md +++ b/app/sdks/node/docs/examples/storage/delete-file.md @@ -1,7 +1,7 @@ const sdk = require('node-appwrite'); // Init SDK -let client = new Storage.Client(); +let client = new sdk.Client(); let storage = new sdk.Storage(client); diff --git a/app/sdks/node/docs/examples/storage/get-file-download.md b/app/sdks/node/docs/examples/storage/get-file-download.md index 9014aa220..296717069 100644 --- a/app/sdks/node/docs/examples/storage/get-file-download.md +++ b/app/sdks/node/docs/examples/storage/get-file-download.md @@ -1,7 +1,7 @@ const sdk = require('node-appwrite'); // Init SDK -let client = new Storage.Client(); +let client = new sdk.Client(); let storage = new sdk.Storage(client); diff --git a/app/sdks/node/docs/examples/storage/get-file-preview.md b/app/sdks/node/docs/examples/storage/get-file-preview.md index 7d753238d..0c09e8ca8 100644 --- a/app/sdks/node/docs/examples/storage/get-file-preview.md +++ b/app/sdks/node/docs/examples/storage/get-file-preview.md @@ -1,7 +1,7 @@ const sdk = require('node-appwrite'); // Init SDK -let client = new Storage.Client(); +let client = new sdk.Client(); let storage = new sdk.Storage(client); diff --git a/app/sdks/node/docs/examples/storage/get-file-view.md b/app/sdks/node/docs/examples/storage/get-file-view.md index b0a1ad8fa..a3074fbed 100644 --- a/app/sdks/node/docs/examples/storage/get-file-view.md +++ b/app/sdks/node/docs/examples/storage/get-file-view.md @@ -1,7 +1,7 @@ const sdk = require('node-appwrite'); // Init SDK -let client = new Storage.Client(); +let client = new sdk.Client(); let storage = new sdk.Storage(client); diff --git a/app/sdks/node/docs/examples/storage/get-file.md b/app/sdks/node/docs/examples/storage/get-file.md index f17b7cfdc..a1a3baf00 100644 --- a/app/sdks/node/docs/examples/storage/get-file.md +++ b/app/sdks/node/docs/examples/storage/get-file.md @@ -1,7 +1,7 @@ const sdk = require('node-appwrite'); // Init SDK -let client = new Storage.Client(); +let client = new sdk.Client(); let storage = new sdk.Storage(client); diff --git a/app/sdks/node/docs/examples/storage/list-files.md b/app/sdks/node/docs/examples/storage/list-files.md index 4c32689bd..59a331a2b 100644 --- a/app/sdks/node/docs/examples/storage/list-files.md +++ b/app/sdks/node/docs/examples/storage/list-files.md @@ -1,7 +1,7 @@ const sdk = require('node-appwrite'); // Init SDK -let client = new Storage.Client(); +let client = new sdk.Client(); let storage = new sdk.Storage(client); diff --git a/app/sdks/node/docs/examples/storage/update-file.md b/app/sdks/node/docs/examples/storage/update-file.md index 7adcb7c34..d5bd4de64 100644 --- a/app/sdks/node/docs/examples/storage/update-file.md +++ b/app/sdks/node/docs/examples/storage/update-file.md @@ -1,7 +1,7 @@ const sdk = require('node-appwrite'); // Init SDK -let client = new Storage.Client(); +let client = new sdk.Client(); let storage = new sdk.Storage(client); diff --git a/app/sdks/node/docs/examples/teams/create-team-membership-resend.md b/app/sdks/node/docs/examples/teams/create-team-membership-resend.md index df025f82f..1f387d0b3 100644 --- a/app/sdks/node/docs/examples/teams/create-team-membership-resend.md +++ b/app/sdks/node/docs/examples/teams/create-team-membership-resend.md @@ -1,7 +1,7 @@ const sdk = require('node-appwrite'); // Init SDK -let client = new Teams.Client(); +let client = new sdk.Client(); let teams = new sdk.Teams(client); diff --git a/app/sdks/node/docs/examples/teams/create-team-membership.md b/app/sdks/node/docs/examples/teams/create-team-membership.md index 24bbadb90..7a2c9be29 100644 --- a/app/sdks/node/docs/examples/teams/create-team-membership.md +++ b/app/sdks/node/docs/examples/teams/create-team-membership.md @@ -1,7 +1,7 @@ const sdk = require('node-appwrite'); // Init SDK -let client = new Teams.Client(); +let client = new sdk.Client(); let teams = new sdk.Teams(client); diff --git a/app/sdks/node/docs/examples/teams/create-team.md b/app/sdks/node/docs/examples/teams/create-team.md index f3f5a5cd2..73dd77ecc 100644 --- a/app/sdks/node/docs/examples/teams/create-team.md +++ b/app/sdks/node/docs/examples/teams/create-team.md @@ -1,7 +1,7 @@ const sdk = require('node-appwrite'); // Init SDK -let client = new Teams.Client(); +let client = new sdk.Client(); let teams = new sdk.Teams(client); diff --git a/app/sdks/node/docs/examples/teams/delete-team-membership.md b/app/sdks/node/docs/examples/teams/delete-team-membership.md index cf0fc89d4..435a65026 100644 --- a/app/sdks/node/docs/examples/teams/delete-team-membership.md +++ b/app/sdks/node/docs/examples/teams/delete-team-membership.md @@ -1,7 +1,7 @@ const sdk = require('node-appwrite'); // Init SDK -let client = new Teams.Client(); +let client = new sdk.Client(); let teams = new sdk.Teams(client); diff --git a/app/sdks/node/docs/examples/teams/delete-team.md b/app/sdks/node/docs/examples/teams/delete-team.md index bfc9fb176..0204d40c9 100644 --- a/app/sdks/node/docs/examples/teams/delete-team.md +++ b/app/sdks/node/docs/examples/teams/delete-team.md @@ -1,7 +1,7 @@ const sdk = require('node-appwrite'); // Init SDK -let client = new Teams.Client(); +let client = new sdk.Client(); let teams = new sdk.Teams(client); diff --git a/app/sdks/node/docs/examples/teams/get-team-members.md b/app/sdks/node/docs/examples/teams/get-team-members.md index 5ff7341e4..35fd3062f 100644 --- a/app/sdks/node/docs/examples/teams/get-team-members.md +++ b/app/sdks/node/docs/examples/teams/get-team-members.md @@ -1,7 +1,7 @@ const sdk = require('node-appwrite'); // Init SDK -let client = new Teams.Client(); +let client = new sdk.Client(); let teams = new sdk.Teams(client); diff --git a/app/sdks/node/docs/examples/teams/get-team.md b/app/sdks/node/docs/examples/teams/get-team.md index 3706c9177..b716b7ea0 100644 --- a/app/sdks/node/docs/examples/teams/get-team.md +++ b/app/sdks/node/docs/examples/teams/get-team.md @@ -1,7 +1,7 @@ const sdk = require('node-appwrite'); // Init SDK -let client = new Teams.Client(); +let client = new sdk.Client(); let teams = new sdk.Teams(client); diff --git a/app/sdks/node/docs/examples/teams/list-teams.md b/app/sdks/node/docs/examples/teams/list-teams.md index 066c2e651..609c70875 100644 --- a/app/sdks/node/docs/examples/teams/list-teams.md +++ b/app/sdks/node/docs/examples/teams/list-teams.md @@ -1,7 +1,7 @@ const sdk = require('node-appwrite'); // Init SDK -let client = new Teams.Client(); +let client = new sdk.Client(); let teams = new sdk.Teams(client); diff --git a/app/sdks/node/docs/examples/teams/update-team-membership-status.md b/app/sdks/node/docs/examples/teams/update-team-membership-status.md index 9332a584c..8d65bf33b 100644 --- a/app/sdks/node/docs/examples/teams/update-team-membership-status.md +++ b/app/sdks/node/docs/examples/teams/update-team-membership-status.md @@ -1,7 +1,7 @@ const sdk = require('node-appwrite'); // Init SDK -let client = new Teams.Client(); +let client = new sdk.Client(); let teams = new sdk.Teams(client); diff --git a/app/sdks/node/docs/examples/teams/update-team.md b/app/sdks/node/docs/examples/teams/update-team.md index 1c55d9652..6afb37709 100644 --- a/app/sdks/node/docs/examples/teams/update-team.md +++ b/app/sdks/node/docs/examples/teams/update-team.md @@ -1,7 +1,7 @@ const sdk = require('node-appwrite'); // Init SDK -let client = new Teams.Client(); +let client = new sdk.Client(); let teams = new sdk.Teams(client); diff --git a/app/sdks/node/docs/examples/users/create-user.md b/app/sdks/node/docs/examples/users/create-user.md index 1f0926fad..d07ab1eab 100644 --- a/app/sdks/node/docs/examples/users/create-user.md +++ b/app/sdks/node/docs/examples/users/create-user.md @@ -1,7 +1,7 @@ const sdk = require('node-appwrite'); // Init SDK -let client = new Users.Client(); +let client = new sdk.Client(); let users = new sdk.Users(client); diff --git a/app/sdks/node/docs/examples/users/delete-user-sessions.md b/app/sdks/node/docs/examples/users/delete-user-sessions.md index d7578d40d..33f803298 100644 --- a/app/sdks/node/docs/examples/users/delete-user-sessions.md +++ b/app/sdks/node/docs/examples/users/delete-user-sessions.md @@ -1,7 +1,7 @@ const sdk = require('node-appwrite'); // Init SDK -let client = new Users.Client(); +let client = new sdk.Client(); let users = new sdk.Users(client); diff --git a/app/sdks/node/docs/examples/users/delete-users-session.md b/app/sdks/node/docs/examples/users/delete-users-session.md index 7703352a0..530503da4 100644 --- a/app/sdks/node/docs/examples/users/delete-users-session.md +++ b/app/sdks/node/docs/examples/users/delete-users-session.md @@ -1,7 +1,7 @@ const sdk = require('node-appwrite'); // Init SDK -let client = new Users.Client(); +let client = new sdk.Client(); let users = new sdk.Users(client); diff --git a/app/sdks/node/docs/examples/users/get-user-logs.md b/app/sdks/node/docs/examples/users/get-user-logs.md index 484bb9cda..85d0a125a 100644 --- a/app/sdks/node/docs/examples/users/get-user-logs.md +++ b/app/sdks/node/docs/examples/users/get-user-logs.md @@ -1,7 +1,7 @@ const sdk = require('node-appwrite'); // Init SDK -let client = new Users.Client(); +let client = new sdk.Client(); let users = new sdk.Users(client); diff --git a/app/sdks/node/docs/examples/users/get-user-prefs.md b/app/sdks/node/docs/examples/users/get-user-prefs.md index 071909111..46d959e1c 100644 --- a/app/sdks/node/docs/examples/users/get-user-prefs.md +++ b/app/sdks/node/docs/examples/users/get-user-prefs.md @@ -1,7 +1,7 @@ const sdk = require('node-appwrite'); // Init SDK -let client = new Users.Client(); +let client = new sdk.Client(); let users = new sdk.Users(client); diff --git a/app/sdks/node/docs/examples/users/get-user-sessions.md b/app/sdks/node/docs/examples/users/get-user-sessions.md index 4e049f257..b3dfe2840 100644 --- a/app/sdks/node/docs/examples/users/get-user-sessions.md +++ b/app/sdks/node/docs/examples/users/get-user-sessions.md @@ -1,7 +1,7 @@ const sdk = require('node-appwrite'); // Init SDK -let client = new Users.Client(); +let client = new sdk.Client(); let users = new sdk.Users(client); diff --git a/app/sdks/node/docs/examples/users/get-user.md b/app/sdks/node/docs/examples/users/get-user.md index c46b9d7a3..96676c019 100644 --- a/app/sdks/node/docs/examples/users/get-user.md +++ b/app/sdks/node/docs/examples/users/get-user.md @@ -1,7 +1,7 @@ const sdk = require('node-appwrite'); // Init SDK -let client = new Users.Client(); +let client = new sdk.Client(); let users = new sdk.Users(client); diff --git a/app/sdks/node/docs/examples/users/list-users.md b/app/sdks/node/docs/examples/users/list-users.md index b4f51cfdd..455e42db4 100644 --- a/app/sdks/node/docs/examples/users/list-users.md +++ b/app/sdks/node/docs/examples/users/list-users.md @@ -1,7 +1,7 @@ const sdk = require('node-appwrite'); // Init SDK -let client = new Users.Client(); +let client = new sdk.Client(); let users = new sdk.Users(client); diff --git a/app/sdks/node/docs/examples/users/update-user-status.md b/app/sdks/node/docs/examples/users/update-user-status.md index 009fcf131..858833a50 100644 --- a/app/sdks/node/docs/examples/users/update-user-status.md +++ b/app/sdks/node/docs/examples/users/update-user-status.md @@ -1,7 +1,7 @@ const sdk = require('node-appwrite'); // Init SDK -let client = new Users.Client(); +let client = new sdk.Client(); let users = new sdk.Users(client); diff --git a/app/sdks/node/lib/services/auth.js b/app/sdks/node/lib/services/auth.js index 39cf72ad1..e8bdd2bc2 100644 --- a/app/sdks/node/lib/services/auth.js +++ b/app/sdks/node/lib/services/auth.js @@ -7,13 +7,13 @@ class Auth extends Service { * * Allow the user to login into his account by providing a valid email and * password combination. Use the success and failure arguments to provide a - * redirect URL\'s back to your app when login is completed. - * + * redirect URL\'s back to your app when login is completed. + * * Please notice that in order to avoid a [Redirect * Attacks](https://github.com/OWASP/CheatSheetSeries/blob/master/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) * the only valid redirect URL's are the once from domains you have set when * added your platforms in the console interface. - * + * * When accessing this route using JavaScript from the browser, success and * failure parameter URLs are required. Appwrite server will respond with a * 301 redirect status code and will set the user session cookie. This @@ -29,7 +29,7 @@ class Auth extends Service { */ async login(email, password, success, failure) { let path = '/auth/login'; - + return await this.client.call('post', path, {'content-type': 'application/json'}, { 'email': email, @@ -51,7 +51,7 @@ class Auth extends Service { */ async logout() { let path = '/auth/logout'; - + return await this.client.call('delete', path, {'content-type': 'application/json'}, { }); @@ -70,7 +70,7 @@ class Auth extends Service { */ async logoutBySession(id) { let path = '/auth/logout/{id}'.replace(new RegExp('{id}', 'g'), id); - + return await this.client.call('delete', path, {'content-type': 'application/json'}, { }); @@ -87,7 +87,7 @@ class Auth extends Service { */ async oauth(provider, success = '', failure = '') { let path = '/auth/oauth/{provider}'.replace(new RegExp('{provider}', 'g'), provider); - + return await this.client.call('get', path, {'content-type': 'application/json'}, { 'success': success, @@ -112,7 +112,7 @@ class Auth extends Service { */ async recovery(email, reset) { let path = '/auth/recovery'; - + return await this.client.call('post', path, {'content-type': 'application/json'}, { 'email': email, @@ -127,7 +127,7 @@ class Auth extends Service { * **userId** and **token** arguments will be passed as query parameters to * the redirect URL you have provided when sending your request to the * /auth/recovery endpoint. - * + * * Please notice that in order to avoid a [Redirect * Attacks](https://github.com/OWASP/CheatSheetSeries/blob/master/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) * the only valid redirect URL's are the once from domains you have set when @@ -142,7 +142,7 @@ class Auth extends Service { */ async recoveryReset(userId, token, passwordA, passwordB) { let path = '/auth/recovery/reset'; - + return await this.client.call('put', path, {'content-type': 'application/json'}, { 'userId': userId, @@ -158,18 +158,18 @@ class Auth extends Service { * Use this endpoint to allow a new user to register an account in your * project. Use the success and failure URL's to redirect users back to your * application after signup completes. - * + * * If registration completes successfully user will be sent with a * confirmation email in order to confirm he is the owner of the account email * address. Use the confirmation parameter to redirect the user from the * confirmation email back to your app. When the user is redirected, use the * /auth/confirm endpoint to complete the account confirmation. - * + * * Please notice that in order to avoid a [Redirect * Attacks](https://github.com/OWASP/CheatSheetSeries/blob/master/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) * the only valid redirect URL's are the once from domains you have set when * added your platforms in the console interface. - * + * * When accessing this route using JavaScript from the browser, success and * failure parameter URLs are required. Appwrite server will respond with a * 301 redirect status code and will set the user session cookie. This @@ -187,7 +187,7 @@ class Auth extends Service { */ async register(email, password, confirm, success = '', failure = '', name = '') { let path = '/auth/register'; - + return await this.client.call('post', path, {'content-type': 'application/json'}, { 'email': email, @@ -214,7 +214,7 @@ class Auth extends Service { */ async confirm(userId, token) { let path = '/auth/register/confirm'; - + return await this.client.call('post', path, {'content-type': 'application/json'}, { 'userId': userId, @@ -228,7 +228,7 @@ class Auth extends Service { * This endpoint allows the user to request your app to resend him his email * confirmation message. The redirect arguments acts the same way as in * /auth/register endpoint. - * + * * Please notice that in order to avoid a [Redirect * Attacks](https://github.com/OWASP/CheatSheetSeries/blob/master/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) * the only valid redirect URL's are the once from domains you have set when @@ -240,7 +240,7 @@ class Auth extends Service { */ async confirmResend(confirm) { let path = '/auth/register/confirm/resend'; - + return await this.client.call('post', path, {'content-type': 'application/json'}, { 'confirm': confirm @@ -248,4 +248,4 @@ class Auth extends Service { } } -module.exports = Auth; +module.exports = Auth; \ No newline at end of file diff --git a/app/sdks/node/lib/services/locale.js b/app/sdks/node/lib/services/locale.js index 0a9ffad1a..5231e1a1e 100644 --- a/app/sdks/node/lib/services/locale.js +++ b/app/sdks/node/lib/services/locale.js @@ -76,9 +76,9 @@ class Locale extends Service { /** * List of currencies * - * List of all currencies, including currency symol, name, plural, and decimal - * digits for all major and minor currencies. You can use the locale header to - * get the data in supported language. + * List of all currencies, including currency symbol, name, plural, and + * decimal digits for all major and minor currencies. You can use the locale + * header to get the data in supported language. * * @throws Exception * @return {} diff --git a/app/sdks/php/README.md b/app/sdks/php/README.md index 0e095a413..8a5876548 100644 --- a/app/sdks/php/README.md +++ b/app/sdks/php/README.md @@ -1,9 +1,9 @@ # [Appwrite SDK for PHP](https://appwrite.io)   [![Tweet](https://img.shields.io/twitter/url/http/shields.io.svg?style=social)](https://twitter.com/intent/tweet?text=Appwrite%20is%20a%20backend%20as%20a%20service%20for%20building%20web%20or%20mobile%20apps&url=http%3A%2F%2Fappwrite.io&via=appwrite_io&hashtags=JS%2Cjavascript%2Creactjs%2Cangular%2Cios%2Candroid) ![License](https://img.shields.io/github/license/appwrite/sdk-for-php.svg?v=1) -![Version](https://img.shields.io/badge/api%20version-0.1.15-blue.svg?v=1) +![Version](https://img.shields.io/badge/api%20version-latest-blue.svg?v=1) -This SDK is compatible with Appwrite server version 0.2.0 for older versions check previous releases. +This SDK is compitable with Appwrite server version 0.2.0 for older versions check previous releases. Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https://appwrite.io/docs](https://appwrite.io/docs) @@ -11,7 +11,7 @@ Appwrite backend as a service cuts up to 70% of the time and costs required for ![Appwrite](https://appwrite.io/images/github.png) -**API Version: 0.1.15** +**API Version: latest** ## Installation @@ -23,4 +23,4 @@ composer require appwrite/appwrite ## License -Please see the [BSD-3-Clause license](https://raw.githubusercontent.com/appwrite/appwrite/master/LICENSE) file for more information. +Please see the [BSD-3-Clause license](https://raw.githubusercontent.com/appwrite/appwrite/master/LICENSE) file for more information. \ No newline at end of file diff --git a/app/sdks/php/docs/auth.md b/app/sdks/php/docs/auth.md index 880823747..7a0bef973 100644 --- a/app/sdks/php/docs/auth.md +++ b/app/sdks/php/docs/auth.md @@ -146,3 +146,4 @@ Please notice that in order to avoid a [Redirect Attacks](https://github.com/OWA | Field Name | Type | Description | Default | | --- | --- | --- | --- | | confirm | string | Confirmation URL to redirect user to your app after confirm token has been sent to user email. | | + diff --git a/app/sdks/php/docs/examples/projects/update-webhook.md b/app/sdks/php/docs/examples/projects/update-webhook.md index 6f176a01f..a7e42dcce 100644 --- a/app/sdks/php/docs/examples/projects/update-webhook.md +++ b/app/sdks/php/docs/examples/projects/update-webhook.md @@ -12,4 +12,4 @@ $client $projects = new Projects($client); -$result = $projects->updateWebhook('[PROJECT_ID]', '[WEBHOOK_ID]', '[NAME]', [], '[URL]', 1); \ No newline at end of file +$result = $projects->updateWebhook('[PROJECT_ID]', '[WEBHOOK_ID]', '[NAME]', [], '[URL]', 0); \ No newline at end of file diff --git a/app/sdks/php/docs/locale.md b/app/sdks/php/docs/locale.md index 763554648..e977fa99c 100644 --- a/app/sdks/php/docs/locale.md +++ b/app/sdks/php/docs/locale.md @@ -38,5 +38,5 @@ GET https://appwrite.test/v1/locale/countries/phones GET https://appwrite.test/v1/locale/currencies ``` -** List of all currencies, including currency symol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in supported language. ** +** List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in supported language. ** diff --git a/app/sdks/php/src/Appwrite/Services/Auth.php b/app/sdks/php/src/Appwrite/Services/Auth.php index 818a5e1db..aa0c32c3f 100644 --- a/app/sdks/php/src/Appwrite/Services/Auth.php +++ b/app/sdks/php/src/Appwrite/Services/Auth.php @@ -13,13 +13,13 @@ class Auth extends Service * * Allow the user to login into his account by providing a valid email and * password combination. Use the success and failure arguments to provide a - * redirect URL\'s back to your app when login is completed. - * + * redirect URL\'s back to your app when login is completed. + * * Please notice that in order to avoid a [Redirect * Attacks](https://github.com/OWASP/CheatSheetSeries/blob/master/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) * the only valid redirect URL's are the once from domains you have set when * added your platforms in the console interface. - * + * * When accessing this route using JavaScript from the browser, success and * failure parameter URLs are required. Appwrite server will respond with a * 301 redirect status code and will set the user session cookie. This @@ -143,7 +143,7 @@ class Auth extends Service * **userId** and **token** arguments will be passed as query parameters to * the redirect URL you have provided when sending your request to the * /auth/recovery endpoint. - * + * * Please notice that in order to avoid a [Redirect * Attacks](https://github.com/OWASP/CheatSheetSeries/blob/master/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) * the only valid redirect URL's are the once from domains you have set when @@ -176,18 +176,18 @@ class Auth extends Service * Use this endpoint to allow a new user to register an account in your * project. Use the success and failure URL's to redirect users back to your * application after signup completes. - * + * * If registration completes successfully user will be sent with a * confirmation email in order to confirm he is the owner of the account email * address. Use the confirmation parameter to redirect the user from the * confirmation email back to your app. When the user is redirected, use the * /auth/confirm endpoint to complete the account confirmation. - * + * * Please notice that in order to avoid a [Redirect * Attacks](https://github.com/OWASP/CheatSheetSeries/blob/master/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) * the only valid redirect URL's are the once from domains you have set when * added your platforms in the console interface. - * + * * When accessing this route using JavaScript from the browser, success and * failure parameter URLs are required. Appwrite server will respond with a * 301 redirect status code and will set the user session cookie. This @@ -250,7 +250,7 @@ class Auth extends Service * This endpoint allows the user to request your app to resend him his email * confirmation message. The redirect arguments acts the same way as in * /auth/register endpoint. - * + * * Please notice that in order to avoid a [Redirect * Attacks](https://github.com/OWASP/CheatSheetSeries/blob/master/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) * the only valid redirect URL's are the once from domains you have set when @@ -271,4 +271,4 @@ class Auth extends Service ], $params); } -} +} \ No newline at end of file diff --git a/app/sdks/php/src/Appwrite/Services/Locale.php b/app/sdks/php/src/Appwrite/Services/Locale.php index 1ae5ae042..b03c1c3e7 100644 --- a/app/sdks/php/src/Appwrite/Services/Locale.php +++ b/app/sdks/php/src/Appwrite/Services/Locale.php @@ -90,9 +90,9 @@ class Locale extends Service /** * List of currencies * - * List of all currencies, including currency symol, name, plural, and decimal - * digits for all major and minor currencies. You can use the locale header to - * get the data in supported language. + * List of all currencies, including currency symbol, name, plural, and + * decimal digits for all major and minor currencies. You can use the locale + * header to get the data in supported language. * * @throws Exception * @return array diff --git a/app/sdks/python/README.md b/app/sdks/python/README.md index 59928110e..08f7338bf 100644 --- a/app/sdks/python/README.md +++ b/app/sdks/python/README.md @@ -1,7 +1,7 @@ # [Appwrite SDK for Python](https://appwrite.io)   [![Tweet](https://img.shields.io/twitter/url/http/shields.io.svg?style=social)](https://twitter.com/intent/tweet?text=Appwrite%20is%20a%20backend%20as%20a%20service%20for%20building%20web%20or%20mobile%20apps&url=http%3A%2F%2Fappwrite.io&via=appwrite_io&hashtags=JS%2Cjavascript%2Creactjs%2Cangular%2Cios%2Candroid) ![License](https://img.shields.io/github/license/appwrite/sdk-for-python.svg?v=1) -![Version](https://img.shields.io/badge/api%20version-0.1.15-blue.svg?v=1) +![Version](https://img.shields.io/badge/api%20version-latest-blue.svg?v=1) **WORK IN PROGRESS - NOT READY FOR USAGE - Want to help us improve this client SDK? Send a pull request to Appwrite [SDK generator repository](https://github.com/appwrite/sdk-generator).** @@ -11,7 +11,7 @@ Appwrite backend as a service cuts up to 70% of the time and costs required for ![Appwrite](https://appwrite.io/images/github.png) -**API Version: 0.1.15** +**API Version: latest** ## Installation diff --git a/app/sdks/ruby/README.md b/app/sdks/ruby/README.md index 82892eac6..a8d5f466b 100644 --- a/app/sdks/ruby/README.md +++ b/app/sdks/ruby/README.md @@ -1,7 +1,7 @@ # [Appwrite SDK for Ruby](https://appwrite.io)   [![Tweet](https://img.shields.io/twitter/url/http/shields.io.svg?style=social)](https://twitter.com/intent/tweet?text=Appwrite%20is%20a%20backend%20as%20a%20service%20for%20building%20web%20or%20mobile%20apps&url=http%3A%2F%2Fappwrite.io&via=appwrite_io&hashtags=JS%2Cjavascript%2Creactjs%2Cangular%2Cios%2Candroid) ![License](https://img.shields.io/github/license/appwrite/sdk-for-ruby.svg?v=1) -![Version](https://img.shields.io/badge/api%20version-0.1.15-blue.svg?v=1) +![Version](https://img.shields.io/badge/api%20version-latest-blue.svg?v=1) **WORK IN PROGRESS - NOT READY FOR USAGE - Want to help us improve this client SDK? Send a pull request to Appwrite [SDK generator repository](https://github.com/appwrite/sdk-generator).** @@ -11,7 +11,7 @@ Appwrite backend as a service cuts up to 70% of the time and costs required for ![Appwrite](https://appwrite.io/images/github.png) -**API Version: 0.1.15** +**API Version: latest** ## Installation diff --git a/composer.lock b/composer.lock index 40ac77a0c..bd903a6a7 100644 --- a/composer.lock +++ b/composer.lock @@ -92,7 +92,7 @@ "source": { "type": "git", "url": "https://github.com/appwrite/sdk-generator", - "reference": "21f848c7c8a6f3f721c23d9c8bbdf8fff886863d" + "reference": "30bd70b62d5b5ff0c7902383d1b92ca523a20004" }, "require": { "ext-curl": "*", @@ -122,7 +122,7 @@ } ], "description": "Appwrite PHP library for generating API SDKs for multiple programming languages and platforms", - "time": "2019-10-01 17:57:36" + "time": "2019-10-03 17:55:27" }, { "name": "bacon/bacon-qr-code", @@ -1994,7 +1994,7 @@ }, { "name": "phpdocumentor/reflection-common", - "version": "dev-master", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionCommon.git", @@ -2046,40 +2046,36 @@ }, { "name": "phpdocumentor/reflection-docblock", - "version": "4.3.2", + "version": "dev-master", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "b83ff7cfcfee7827e1e78b637a5904fe6a96698e" + "reference": "8fcadfe5f85c38705151c9ab23b4781f23e6a70e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/b83ff7cfcfee7827e1e78b637a5904fe6a96698e", - "reference": "b83ff7cfcfee7827e1e78b637a5904fe6a96698e", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/8fcadfe5f85c38705151c9ab23b4781f23e6a70e", + "reference": "8fcadfe5f85c38705151c9ab23b4781f23e6a70e", "shasum": "" }, "require": { - "php": "^7.0", - "phpdocumentor/reflection-common": "^1.0.0 || ^2.0.0", - "phpdocumentor/type-resolver": "~0.4 || ^1.0.0", - "webmozart/assert": "^1.0" + "php": ">=7.1", + "phpdocumentor/type-resolver": "^0", + "webmozart/assert": "^1" }, "require-dev": { - "doctrine/instantiator": "^1.0.5", - "mockery/mockery": "^1.0", - "phpunit/phpunit": "^6.4" + "doctrine/instantiator": "^1", + "mockery/mockery": "^1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.x-dev" + "dev-master": "5.x-dev" } }, "autoload": { "psr-4": { - "phpDocumentor\\Reflection\\": [ - "src/" - ] + "phpDocumentor\\Reflection\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -2093,35 +2089,34 @@ } ], "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", - "time": "2019-09-12T14:27:41+00:00" + "time": "2019-06-15T20:45:01+00:00" }, { "name": "phpdocumentor/type-resolver", - "version": "dev-master", + "version": "0.7.x-dev", "source": { "type": "git", "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "2e32a6d48972b2c1976ed5d8967145b6cec4a4a9" + "reference": "6f6f66c1d4e14e9b0ad124cae85864dfa03104c7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/2e32a6d48972b2c1976ed5d8967145b6cec4a4a9", - "reference": "2e32a6d48972b2c1976ed5d8967145b6cec4a4a9", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/6f6f66c1d4e14e9b0ad124cae85864dfa03104c7", + "reference": "6f6f66c1d4e14e9b0ad124cae85864dfa03104c7", "shasum": "" }, "require": { - "php": "^7.1", - "phpdocumentor/reflection-common": "^2.0" + "php": ">=7.1", + "phpdocumentor/reflection-common": "~2.0.0-beta1" }, "require-dev": { - "ext-tokenizer": "^7.1", "mockery/mockery": "~1", - "phpunit/phpunit": "^7.0" + "phpunit/phpunit": "~6" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.x-dev" + "dev-master": "0.x-dev" } }, "autoload": { @@ -2140,26 +2135,26 @@ } ], "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", - "time": "2019-08-22T18:11:29+00:00" + "time": "2019-08-22T17:55:41+00:00" }, { "name": "phpspec/prophecy", - "version": "dev-master", + "version": "1.9.0", "source": { "type": "git", "url": "https://github.com/phpspec/prophecy.git", - "reference": "bcdce71d674f4f7b86df0ff3a418d43b7fe141f7" + "reference": "f6811d96d97bdf400077a0cc100ae56aa32b9203" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/bcdce71d674f4f7b86df0ff3a418d43b7fe141f7", - "reference": "bcdce71d674f4f7b86df0ff3a418d43b7fe141f7", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/f6811d96d97bdf400077a0cc100ae56aa32b9203", + "reference": "f6811d96d97bdf400077a0cc100ae56aa32b9203", "shasum": "" }, "require": { "doctrine/instantiator": "^1.0.2", "php": "^5.3|^7.0", - "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0", + "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0|^5.0", "sebastian/comparator": "^1.1|^2.0|^3.0", "sebastian/recursion-context": "^1.0|^2.0|^3.0" }, @@ -2203,7 +2198,7 @@ "spy", "stub" ], - "time": "2019-09-09T15:23:21+00:00" + "time": "2019-10-03T11:07:50+00:00" }, { "name": "phpunit/php-code-coverage", From 8cca93737141aea855826c790378ac31983e6b7b Mon Sep 17 00:00:00 2001 From: eldadfux Date: Thu, 3 Oct 2019 23:57:57 +0300 Subject: [PATCH 47/56] Fixed database not casting string properly --- app/controllers/database.php | 2 ++ app/sdks/php/docs/examples/projects/create-webhook.md | 2 +- app/sdks/php/docs/examples/projects/update-task.md | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/app/controllers/database.php b/app/controllers/database.php index e27d1feff..31cd12fb5 100644 --- a/app/controllers/database.php +++ b/app/controllers/database.php @@ -435,6 +435,8 @@ $utopia->post('/v1/database/:collectionId/documents') if (isset($data['$uid'])) { throw new Exception('$uid is not allowed for creating new documents, try update instead', 400); } + + $data = (is_string($data) && $result = json_decode($data, true)) ? $result : $data; // Cast to JSON array $collection = $projectDB->getDocument($collectionId/*, $isDev*/); diff --git a/app/sdks/php/docs/examples/projects/create-webhook.md b/app/sdks/php/docs/examples/projects/create-webhook.md index 6eacda1fc..1bf92c892 100644 --- a/app/sdks/php/docs/examples/projects/create-webhook.md +++ b/app/sdks/php/docs/examples/projects/create-webhook.md @@ -12,4 +12,4 @@ $client $projects = new Projects($client); -$result = $projects->createWebhook('[PROJECT_ID]', '[NAME]', [], '[URL]', 0); \ No newline at end of file +$result = $projects->createWebhook('[PROJECT_ID]', '[NAME]', [], '[URL]', 1); \ No newline at end of file diff --git a/app/sdks/php/docs/examples/projects/update-task.md b/app/sdks/php/docs/examples/projects/update-task.md index 59308c5d6..0d9f3fb7a 100644 --- a/app/sdks/php/docs/examples/projects/update-task.md +++ b/app/sdks/php/docs/examples/projects/update-task.md @@ -12,4 +12,4 @@ $client $projects = new Projects($client); -$result = $projects->updateTask('[PROJECT_ID]', '[TASK_ID]', '[NAME]', 'play', '', 0, 'GET', 'https://example.com'); \ No newline at end of file +$result = $projects->updateTask('[PROJECT_ID]', '[TASK_ID]', '[NAME]', 'play', '', 1, 'GET', 'https://example.com'); \ No newline at end of file From f0f3211ef056839c932b2e8d32c8be8c9e30f3a3 Mon Sep 17 00:00:00 2001 From: eldadfux Date: Thu, 3 Oct 2019 23:59:06 +0300 Subject: [PATCH 48/56] Casting string to object --- app/controllers/database.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/controllers/database.php b/app/controllers/database.php index 31cd12fb5..a9de951e8 100644 --- a/app/controllers/database.php +++ b/app/controllers/database.php @@ -428,6 +428,8 @@ $utopia->post('/v1/database/:collectionId/documents') }, 'Parent document property connection type. You can set this value to **assign**, **append** or **prepend**, default value is assign. Use when you want your new document to be a child of a parent document.', true) ->action( function ($collectionId, $data, $read, $write, $parentDocument, $parentProperty, $parentPropertyType) use ($response, $projectDB, $webhook, $audit) { + $data = (is_string($data) && $result = json_decode($data, true)) ? $result : $data; // Cast to JSON array + if (empty($data)) { throw new Exception('Missing payload', 400); } @@ -436,8 +438,6 @@ $utopia->post('/v1/database/:collectionId/documents') throw new Exception('$uid is not allowed for creating new documents, try update instead', 400); } - $data = (is_string($data) && $result = json_decode($data, true)) ? $result : $data; // Cast to JSON array - $collection = $projectDB->getDocument($collectionId/*, $isDev*/); if (is_null($collection->getUid()) || Database::SYSTEM_COLLECTION_COLLECTIONS != $collection->getCollection()) { From 0b54e349d147aea977b62dbc9aa8bb1fc08678e4 Mon Sep 17 00:00:00 2001 From: eldadfux Date: Fri, 4 Oct 2019 00:59:35 +0300 Subject: [PATCH 49/56] Updated domain name --- app/app.php | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/app/app.php b/app/app.php index 4e4af3987..6301d0872 100644 --- a/app/app.php +++ b/app/app.php @@ -435,12 +435,8 @@ $utopia->get('/v1/proxy') $utopia->get('/v1/open-api-2.json') ->label('scope', 'public') ->label('docs', false) - ->param('platform', 'client', function () { - return new WhiteList(['client', 'server']); - }, 'Choose target platform.', true) - ->param('extensions', 0, function () { - return new Range(0, 1); - }, 'Show extra data.', true) + ->param('platform', 'client', function () {return new WhiteList(['client', 'server']);}, 'Choose target platform.', true) + ->param('extensions', 0, function () {return new Range(0, 1);}, 'Show extra data.', true) ->action( function ($platform, $extensions) use ($response, $request, $utopia, $domain, $version, $services) { function fromCamelCase($input) @@ -494,7 +490,7 @@ $utopia->get('/v1/open-api-2.json') 'url' => 'https://raw.githubusercontent.com/appwrite/appwrite/master/LICENSE', ], ], - 'host' => $domain, + 'host' => $request->getServer('_APP_HOME', $domain), 'basePath' => '/v1', 'schemes' => ['https'], 'consumes' => ['application/json', 'multipart/form-data'], From 0ea43c0cdd9d728a908574d37c901b70949e7fcf Mon Sep 17 00:00:00 2001 From: eldadfux Date: Fri, 4 Oct 2019 01:05:12 +0300 Subject: [PATCH 50/56] Updated SDKs generator --- app/tasks/sdks.php | 9 +++++---- composer.lock | 12 ++++++------ 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/app/tasks/sdks.php b/app/tasks/sdks.php index 2b62b76e8..a29a1312c 100644 --- a/app/tasks/sdks.php +++ b/app/tasks/sdks.php @@ -17,10 +17,11 @@ use Appwrite\SDK\Language\Dart; $cli = new CLI(); $version = '0.2.0'; // Server version +$warning = '**This SDK is compatible with Appwrite server version ' . $version . '. For older versions, please check [previous releases](/releases).**'; $cli ->task('generate') - ->action(function () use ($version) { + ->action(function () use ($warning) { function getSSLPage($url) { $ch = curl_init(); @@ -43,7 +44,7 @@ $cli 'gitRepo' => 'git@github.com:appwrite/sdk-for-php.git', 'gitRepoName' => 'sdk-for-php', 'gitUserName' => 'appwrite', - 'warning' => 'This SDK is compitable with Appwrite server version ' . $version . ' for older versions check previous releases.', + 'warning' => $warning, 'platform' => 'server', ], 'js' => [ @@ -53,7 +54,7 @@ $cli 'gitRepo' => 'git@github.com:appwrite/sdk-for-js.git', 'gitRepoName' => 'sdk-for-js', 'gitUserName' => 'appwrite', - 'warning' => 'This SDK is compitable with Appwrite server version ' . $version . ' for older versions check previous releases.', + 'warning' => $warning, 'platform' => 'client', ], 'node' => [ @@ -63,7 +64,7 @@ $cli 'gitRepo' => 'git@github.com:appwrite/sdk-for-node.git', 'gitRepoName' => 'sdk-for-node', 'gitUserName' => 'appwrite', - 'warning' => 'This SDK is compitable with Appwrite server version ' . $version . ' for older versions check previous releases.', + 'warning' => $warning, 'platform' => 'server', ], 'python' => [ diff --git a/composer.lock b/composer.lock index bd903a6a7..3d9d1aabd 100644 --- a/composer.lock +++ b/composer.lock @@ -12,12 +12,12 @@ "source": { "type": "git", "url": "https://github.com/appwrite/sdk-for-php.git", - "reference": "456e2f153393bd67b7d706db1ec104ba211cf25a" + "reference": "bc702c165342f3d943e17d580ab3eb66e100eb44" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/appwrite/sdk-for-php/zipball/456e2f153393bd67b7d706db1ec104ba211cf25a", - "reference": "456e2f153393bd67b7d706db1ec104ba211cf25a", + "url": "https://api.github.com/repos/appwrite/sdk-for-php/zipball/bc702c165342f3d943e17d580ab3eb66e100eb44", + "reference": "bc702c165342f3d943e17d580ab3eb66e100eb44", "shasum": "" }, "require": { @@ -39,7 +39,7 @@ "BSD-3-Clause" ], "description": "Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https://appwrite.io/docs](https://appwrite.io/docs)", - "time": "2019-10-01T18:05:56+00:00" + "time": "2019-10-03T17:57:02+00:00" }, { "name": "appwrite/php-clamav", @@ -92,7 +92,7 @@ "source": { "type": "git", "url": "https://github.com/appwrite/sdk-generator", - "reference": "30bd70b62d5b5ff0c7902383d1b92ca523a20004" + "reference": "e0cfa4cb8d45b3faf8222f4e7f803f3054431ce8" }, "require": { "ext-curl": "*", @@ -122,7 +122,7 @@ } ], "description": "Appwrite PHP library for generating API SDKs for multiple programming languages and platforms", - "time": "2019-10-03 17:55:27" + "time": "2019-10-03 22:01:52" }, { "name": "bacon/bacon-qr-code", From c01d0f84cefcfebcd1574d693c76169a06a5827a Mon Sep 17 00:00:00 2001 From: Valerian Pereira Date: Fri, 4 Oct 2019 09:15:30 +0530 Subject: [PATCH 51/56] File Name Fixed --- docs/{EnviornementVariables.md => EnvironmentVariables.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename docs/{EnviornementVariables.md => EnvironmentVariables.md} (100%) diff --git a/docs/EnviornementVariables.md b/docs/EnvironmentVariables.md similarity index 100% rename from docs/EnviornementVariables.md rename to docs/EnvironmentVariables.md From 91730da10afd5b7e7b0a9faa22ff533659731b7f Mon Sep 17 00:00:00 2001 From: eldadfux Date: Fri, 4 Oct 2019 08:14:22 +0300 Subject: [PATCH 52/56] Updated SDKs --- app/sdks/dart/README.md | 4 +- app/sdks/dart/lib/client.dart | 2 +- app/sdks/js/README.md | 6 +-- app/sdks/js/src/sdk.js | 2 +- app/sdks/js/src/sdk.min.js | 2 +- app/sdks/node/README.md | 6 +-- .../docs/examples/projects/create-task.md | 2 +- .../docs/examples/projects/create-webhook.md | 2 +- .../docs/examples/projects/update-task.md | 2 +- .../docs/examples/projects/update-webhook.md | 2 +- app/sdks/node/lib/client.js | 2 +- app/sdks/php/README.md | 6 +-- app/sdks/php/docs/account.md | 18 +++---- app/sdks/php/docs/auth.md | 18 +++---- app/sdks/php/docs/avatars.md | 12 ++--- app/sdks/php/docs/database.md | 20 +++---- .../php/docs/examples/projects/update-task.md | 2 +- .../docs/examples/projects/update-webhook.md | 2 +- app/sdks/php/docs/locale.md | 10 ++-- app/sdks/php/docs/projects.md | 54 +++++++++---------- app/sdks/php/docs/storage.md | 16 +++--- app/sdks/php/docs/teams.md | 20 +++---- app/sdks/php/docs/users.md | 18 +++---- app/sdks/php/src/Appwrite/Client.php | 2 +- app/sdks/python/README.md | 4 +- app/sdks/python/appwrite/client.py | 2 +- app/sdks/ruby/README.md | 4 +- app/tasks/sdks.php | 2 +- 28 files changed, 115 insertions(+), 127 deletions(-) diff --git a/app/sdks/dart/README.md b/app/sdks/dart/README.md index 2e742434d..de99069bd 100644 --- a/app/sdks/dart/README.md +++ b/app/sdks/dart/README.md @@ -1,4 +1,4 @@ -# [Appwrite SDK for Dart](https://appwrite.io)   [![Tweet](https://img.shields.io/twitter/url/http/shields.io.svg?style=social)](https://twitter.com/intent/tweet?text=Appwrite%20is%20a%20backend%20as%20a%20service%20for%20building%20web%20or%20mobile%20apps&url=http%3A%2F%2Fappwrite.io&via=appwrite_io&hashtags=JS%2Cjavascript%2Creactjs%2Cangular%2Cios%2Candroid) +# Appwrite SDK for Dart ![License](https://img.shields.io/github/license/appwrite/sdk-for-dart.svg?v=1) ![Version](https://img.shields.io/badge/api%20version-latest-blue.svg?v=1) @@ -11,8 +11,6 @@ Appwrite backend as a service cuts up to 70% of the time and costs required for ![Appwrite](https://appwrite.io/images/github.png) -**API Version: latest** - ## Installation Add this to your package's pubspec.yaml file: diff --git a/app/sdks/dart/lib/client.dart b/app/sdks/dart/lib/client.dart index 2dd5f8f4a..77a4092f0 100644 --- a/app/sdks/dart/lib/client.dart +++ b/app/sdks/dart/lib/client.dart @@ -9,7 +9,7 @@ class Client { Dio http; Client() { - this.endPoint = 'https://appwrite.test/v1'; + this.endPoint = 'https://https://appwrite.io/v1'; this.headers = { 'content-type': 'application/json', 'x-sdk-version': 'appwrite:dart:0.0.2', diff --git a/app/sdks/js/README.md b/app/sdks/js/README.md index e415254ed..395936655 100644 --- a/app/sdks/js/README.md +++ b/app/sdks/js/README.md @@ -1,9 +1,9 @@ -# [Appwrite SDK for Javascript](https://appwrite.io)   [![Tweet](https://img.shields.io/twitter/url/http/shields.io.svg?style=social)](https://twitter.com/intent/tweet?text=Appwrite%20is%20a%20backend%20as%20a%20service%20for%20building%20web%20or%20mobile%20apps&url=http%3A%2F%2Fappwrite.io&via=appwrite_io&hashtags=JS%2Cjavascript%2Creactjs%2Cangular%2Cios%2Candroid) +# Appwrite SDK for Javascript ![License](https://img.shields.io/github/license/appwrite/sdk-for-js.svg?v=1) ![Version](https://img.shields.io/badge/api%20version-latest-blue.svg?v=1) -This SDK is compitable with Appwrite server version 0.2.0 for older versions check previous releases. +**This SDK is compatible with Appwrite server version 0.2.0. For older versions, please check previous releases.** Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https://appwrite.io/docs](https://appwrite.io/docs) @@ -11,8 +11,6 @@ Appwrite backend as a service cuts up to 70% of the time and costs required for ![Appwrite](https://appwrite.io/images/github.png) -**API Version: latest** - ## Installation To install via [NPM](https://www.npmjs.com/): diff --git a/app/sdks/js/src/sdk.js b/app/sdks/js/src/sdk.js index 5c21f8af5..f142af9c2 100644 --- a/app/sdks/js/src/sdk.js +++ b/app/sdks/js/src/sdk.js @@ -2,7 +2,7 @@ window.Appwrite = function () { let config = { - endpoint: 'https://appwrite.test/v1', + endpoint: 'https://https://appwrite.io/v1', project: '', key: '', locale: '', diff --git a/app/sdks/js/src/sdk.min.js b/app/sdks/js/src/sdk.min.js index 1b8e4af97..4bd61f2d4 100644 --- a/app/sdks/js/src/sdk.min.js +++ b/app/sdks/js/src/sdk.min.js @@ -1,4 +1,4 @@ -(function(window){window.Appwrite=function(){let config={endpoint:'https://appwrite.test/v1',project:'',key:'',locale:'',mode:'',};let setEndpoint=function(endpoint){config.endpoint=endpoint;return this};let setProject=function(value){http.addGlobalHeader('X-Appwrite-Project',value);config.project=value;return this};let setKey=function(value){http.addGlobalHeader('X-Appwrite-Key',value);config.key=value;return this};let setLocale=function(value){http.addGlobalHeader('X-Appwrite-Locale',value);config.locale=value;return this};let setMode=function(value){http.addGlobalHeader('X-Appwrite-Mode',value);config.mode=value;return this};let http=function(document){let globalParams=[],globalHeaders=[];let addParam=function(url,param,value){let a=document.createElement('a'),regex=/(?:\?|&|&)+([^=]+)(?:=([^&]*))*/g;let match,str=[];a.href=url;param=encodeURIComponent(param);while(match=regex.exec(a.search))if(param!==match[1])str.push(match[1]+(match[2]?"="+match[2]:""));str.push(param+(value?"="+encodeURIComponent(value):""));a.search=str.join("&");return a.href};let buildQuery=function(params){let str=[];for(let p in params){if(Array.isArray(params[p])){for(let index=0;indexupdateTask('[PROJECT_ID]', '[TASK_ID]', '[NAME]', 'play', '', 1, 'GET', 'https://example.com'); \ No newline at end of file +$result = $projects->updateTask('[PROJECT_ID]', '[TASK_ID]', '[NAME]', 'play', '', 0, 'GET', 'https://example.com'); \ No newline at end of file diff --git a/app/sdks/php/docs/examples/projects/update-webhook.md b/app/sdks/php/docs/examples/projects/update-webhook.md index a7e42dcce..6f176a01f 100644 --- a/app/sdks/php/docs/examples/projects/update-webhook.md +++ b/app/sdks/php/docs/examples/projects/update-webhook.md @@ -12,4 +12,4 @@ $client $projects = new Projects($client); -$result = $projects->updateWebhook('[PROJECT_ID]', '[WEBHOOK_ID]', '[NAME]', [], '[URL]', 0); \ No newline at end of file +$result = $projects->updateWebhook('[PROJECT_ID]', '[WEBHOOK_ID]', '[NAME]', [], '[URL]', 1); \ No newline at end of file diff --git a/app/sdks/php/docs/locale.md b/app/sdks/php/docs/locale.md index e977fa99c..5ea8ab37f 100644 --- a/app/sdks/php/docs/locale.md +++ b/app/sdks/php/docs/locale.md @@ -3,7 +3,7 @@ ## Get User Locale ```http request -GET https://appwrite.test/v1/locale +GET https://https://appwrite.io/v1/locale ``` ** Get the current user location based on IP. Returns an object with user country code, country name, continent name, continent code, ip address and suggested currency. You can use the locale header to get the data in supported language. ** @@ -11,7 +11,7 @@ GET https://appwrite.test/v1/locale ## List Countries ```http request -GET https://appwrite.test/v1/locale/countries +GET https://https://appwrite.io/v1/locale/countries ``` ** List of all countries. You can use the locale header to get the data in supported language. ** @@ -19,7 +19,7 @@ GET https://appwrite.test/v1/locale/countries ## List EU Countries ```http request -GET https://appwrite.test/v1/locale/countries/eu +GET https://https://appwrite.io/v1/locale/countries/eu ``` ** List of all countries that are currently members of the EU. You can use the locale header to get the data in supported language. UK brexit date is currently set to 2019-10-31 and will be updated if and when needed. ** @@ -27,7 +27,7 @@ GET https://appwrite.test/v1/locale/countries/eu ## List Countries Phone Codes ```http request -GET https://appwrite.test/v1/locale/countries/phones +GET https://https://appwrite.io/v1/locale/countries/phones ``` ** List of all countries phone codes. You can use the locale header to get the data in supported language. ** @@ -35,7 +35,7 @@ GET https://appwrite.test/v1/locale/countries/phones ## List of currencies ```http request -GET https://appwrite.test/v1/locale/currencies +GET https://https://appwrite.io/v1/locale/currencies ``` ** List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in supported language. ** diff --git a/app/sdks/php/docs/projects.md b/app/sdks/php/docs/projects.md index 56b64f887..6db3e1b51 100644 --- a/app/sdks/php/docs/projects.md +++ b/app/sdks/php/docs/projects.md @@ -3,13 +3,13 @@ ## List Projects ```http request -GET https://appwrite.test/v1/projects +GET https://https://appwrite.io/v1/projects ``` ## Create Project ```http request -POST https://appwrite.test/v1/projects +POST https://https://appwrite.io/v1/projects ``` ### Parameters @@ -31,7 +31,7 @@ POST https://appwrite.test/v1/projects ## Get Project ```http request -GET https://appwrite.test/v1/projects/{projectId} +GET https://https://appwrite.io/v1/projects/{projectId} ``` ### Parameters @@ -43,7 +43,7 @@ GET https://appwrite.test/v1/projects/{projectId} ## Update Project ```http request -PATCH https://appwrite.test/v1/projects/{projectId} +PATCH https://https://appwrite.io/v1/projects/{projectId} ``` ### Parameters @@ -65,7 +65,7 @@ PATCH https://appwrite.test/v1/projects/{projectId} ## Delete Project ```http request -DELETE https://appwrite.test/v1/projects/{projectId} +DELETE https://https://appwrite.io/v1/projects/{projectId} ``` ### Parameters @@ -77,7 +77,7 @@ DELETE https://appwrite.test/v1/projects/{projectId} ## List Keys ```http request -GET https://appwrite.test/v1/projects/{projectId}/keys +GET https://https://appwrite.io/v1/projects/{projectId}/keys ``` ### Parameters @@ -89,7 +89,7 @@ GET https://appwrite.test/v1/projects/{projectId}/keys ## Create Key ```http request -POST https://appwrite.test/v1/projects/{projectId}/keys +POST https://https://appwrite.io/v1/projects/{projectId}/keys ``` ### Parameters @@ -103,7 +103,7 @@ POST https://appwrite.test/v1/projects/{projectId}/keys ## Get Key ```http request -GET https://appwrite.test/v1/projects/{projectId}/keys/{keyId} +GET https://https://appwrite.io/v1/projects/{projectId}/keys/{keyId} ``` ### Parameters @@ -116,7 +116,7 @@ GET https://appwrite.test/v1/projects/{projectId}/keys/{keyId} ## Update Key ```http request -PUT https://appwrite.test/v1/projects/{projectId}/keys/{keyId} +PUT https://https://appwrite.io/v1/projects/{projectId}/keys/{keyId} ``` ### Parameters @@ -131,7 +131,7 @@ PUT https://appwrite.test/v1/projects/{projectId}/keys/{keyId} ## Delete Key ```http request -DELETE https://appwrite.test/v1/projects/{projectId}/keys/{keyId} +DELETE https://https://appwrite.io/v1/projects/{projectId}/keys/{keyId} ``` ### Parameters @@ -144,7 +144,7 @@ DELETE https://appwrite.test/v1/projects/{projectId}/keys/{keyId} ## Update Project OAuth ```http request -PATCH https://appwrite.test/v1/projects/{projectId}/oauth +PATCH https://https://appwrite.io/v1/projects/{projectId}/oauth ``` ### Parameters @@ -159,7 +159,7 @@ PATCH https://appwrite.test/v1/projects/{projectId}/oauth ## List Platforms ```http request -GET https://appwrite.test/v1/projects/{projectId}/platforms +GET https://https://appwrite.io/v1/projects/{projectId}/platforms ``` ### Parameters @@ -171,7 +171,7 @@ GET https://appwrite.test/v1/projects/{projectId}/platforms ## Create Platform ```http request -POST https://appwrite.test/v1/projects/{projectId}/platforms +POST https://https://appwrite.io/v1/projects/{projectId}/platforms ``` ### Parameters @@ -188,7 +188,7 @@ POST https://appwrite.test/v1/projects/{projectId}/platforms ## Get Platform ```http request -GET https://appwrite.test/v1/projects/{projectId}/platforms/{platformId} +GET https://https://appwrite.io/v1/projects/{projectId}/platforms/{platformId} ``` ### Parameters @@ -201,7 +201,7 @@ GET https://appwrite.test/v1/projects/{projectId}/platforms/{platformId} ## Update Platform ```http request -PUT https://appwrite.test/v1/projects/{projectId}/platforms/{platformId} +PUT https://https://appwrite.io/v1/projects/{projectId}/platforms/{platformId} ``` ### Parameters @@ -218,7 +218,7 @@ PUT https://appwrite.test/v1/projects/{projectId}/platforms/{platformId} ## Delete Platform ```http request -DELETE https://appwrite.test/v1/projects/{projectId}/platforms/{platformId} +DELETE https://https://appwrite.io/v1/projects/{projectId}/platforms/{platformId} ``` ### Parameters @@ -231,7 +231,7 @@ DELETE https://appwrite.test/v1/projects/{projectId}/platforms/{platformId} ## List Tasks ```http request -GET https://appwrite.test/v1/projects/{projectId}/tasks +GET https://https://appwrite.io/v1/projects/{projectId}/tasks ``` ### Parameters @@ -243,7 +243,7 @@ GET https://appwrite.test/v1/projects/{projectId}/tasks ## Create Task ```http request -POST https://appwrite.test/v1/projects/{projectId}/tasks +POST https://https://appwrite.io/v1/projects/{projectId}/tasks ``` ### Parameters @@ -264,7 +264,7 @@ POST https://appwrite.test/v1/projects/{projectId}/tasks ## Get Task ```http request -GET https://appwrite.test/v1/projects/{projectId}/tasks/{taskId} +GET https://https://appwrite.io/v1/projects/{projectId}/tasks/{taskId} ``` ### Parameters @@ -277,7 +277,7 @@ GET https://appwrite.test/v1/projects/{projectId}/tasks/{taskId} ## Update Task ```http request -PUT https://appwrite.test/v1/projects/{projectId}/tasks/{taskId} +PUT https://https://appwrite.io/v1/projects/{projectId}/tasks/{taskId} ``` ### Parameters @@ -299,7 +299,7 @@ PUT https://appwrite.test/v1/projects/{projectId}/tasks/{taskId} ## Delete Task ```http request -DELETE https://appwrite.test/v1/projects/{projectId}/tasks/{taskId} +DELETE https://https://appwrite.io/v1/projects/{projectId}/tasks/{taskId} ``` ### Parameters @@ -312,7 +312,7 @@ DELETE https://appwrite.test/v1/projects/{projectId}/tasks/{taskId} ## Get Project ```http request -GET https://appwrite.test/v1/projects/{projectId}/usage +GET https://https://appwrite.io/v1/projects/{projectId}/usage ``` ### Parameters @@ -324,7 +324,7 @@ GET https://appwrite.test/v1/projects/{projectId}/usage ## List Webhooks ```http request -GET https://appwrite.test/v1/projects/{projectId}/webhooks +GET https://https://appwrite.io/v1/projects/{projectId}/webhooks ``` ### Parameters @@ -336,7 +336,7 @@ GET https://appwrite.test/v1/projects/{projectId}/webhooks ## Create Webhook ```http request -POST https://appwrite.test/v1/projects/{projectId}/webhooks +POST https://https://appwrite.io/v1/projects/{projectId}/webhooks ``` ### Parameters @@ -354,7 +354,7 @@ POST https://appwrite.test/v1/projects/{projectId}/webhooks ## Get Webhook ```http request -GET https://appwrite.test/v1/projects/{projectId}/webhooks/{webhookId} +GET https://https://appwrite.io/v1/projects/{projectId}/webhooks/{webhookId} ``` ### Parameters @@ -367,7 +367,7 @@ GET https://appwrite.test/v1/projects/{projectId}/webhooks/{webhookId} ## Update Webhook ```http request -PUT https://appwrite.test/v1/projects/{projectId}/webhooks/{webhookId} +PUT https://https://appwrite.io/v1/projects/{projectId}/webhooks/{webhookId} ``` ### Parameters @@ -386,7 +386,7 @@ PUT https://appwrite.test/v1/projects/{projectId}/webhooks/{webhookId} ## Delete Webhook ```http request -DELETE https://appwrite.test/v1/projects/{projectId}/webhooks/{webhookId} +DELETE https://https://appwrite.io/v1/projects/{projectId}/webhooks/{webhookId} ``` ### Parameters diff --git a/app/sdks/php/docs/storage.md b/app/sdks/php/docs/storage.md index 74182191f..fd9268ef8 100644 --- a/app/sdks/php/docs/storage.md +++ b/app/sdks/php/docs/storage.md @@ -3,7 +3,7 @@ ## List Files ```http request -GET https://appwrite.test/v1/storage/files +GET https://https://appwrite.io/v1/storage/files ``` ** Get a list of all the user files. You can use the query params to filter your results. On admin mode, this endpoint will return a list of all of the project files. [Learn more about different API modes](/docs/modes). ** @@ -20,7 +20,7 @@ GET https://appwrite.test/v1/storage/files ## Create File ```http request -POST https://appwrite.test/v1/storage/files +POST https://https://appwrite.io/v1/storage/files ``` ** Create a new file. The user who creates the file will automatically be assigned to read and write access unless he has passed custom values for read and write arguments. ** @@ -37,7 +37,7 @@ POST https://appwrite.test/v1/storage/files ## Get File ```http request -GET https://appwrite.test/v1/storage/files/{fileId} +GET https://https://appwrite.io/v1/storage/files/{fileId} ``` ** Get file by its unique ID. This endpoint response returns a JSON object with the file metadata. ** @@ -51,7 +51,7 @@ GET https://appwrite.test/v1/storage/files/{fileId} ## Update File ```http request -PUT https://appwrite.test/v1/storage/files/{fileId} +PUT https://https://appwrite.io/v1/storage/files/{fileId} ``` ** Update file by its unique ID. Only users with write permissions have access to update this resource. ** @@ -68,7 +68,7 @@ PUT https://appwrite.test/v1/storage/files/{fileId} ## Delete File ```http request -DELETE https://appwrite.test/v1/storage/files/{fileId} +DELETE https://https://appwrite.io/v1/storage/files/{fileId} ``` ** Delete a file by its unique ID. Only users with write permissions have access to delete this resource. ** @@ -82,7 +82,7 @@ DELETE https://appwrite.test/v1/storage/files/{fileId} ## Get File for Download ```http request -GET https://appwrite.test/v1/storage/files/{fileId}/download +GET https://https://appwrite.io/v1/storage/files/{fileId}/download ``` ** Get file content by its unique ID. The endpoint response return with a 'Content-Disposition: attachment' header that tells the browser to start downloading the file to user downloads directory. ** @@ -96,7 +96,7 @@ GET https://appwrite.test/v1/storage/files/{fileId}/download ## Get File Preview ```http request -GET https://appwrite.test/v1/storage/files/{fileId}/preview +GET https://https://appwrite.io/v1/storage/files/{fileId}/preview ``` ** Get file preview image. Currently, this method supports preview for image files (jpg, png, and gif), other supported formats, like pdf, docs, slides, and spreadsheets will return file icon image. You can also pass query string arguments for cutting and resizing your preview image. ** @@ -115,7 +115,7 @@ GET https://appwrite.test/v1/storage/files/{fileId}/preview ## Get File for View ```http request -GET https://appwrite.test/v1/storage/files/{fileId}/view +GET https://https://appwrite.io/v1/storage/files/{fileId}/view ``` ** Get file content by its unique ID. This endpoint is similar to the download method but returns with no 'Content-Disposition: attachment' header. ** diff --git a/app/sdks/php/docs/teams.md b/app/sdks/php/docs/teams.md index a444072ae..e71ca83e8 100644 --- a/app/sdks/php/docs/teams.md +++ b/app/sdks/php/docs/teams.md @@ -3,7 +3,7 @@ ## List Teams ```http request -GET https://appwrite.test/v1/teams +GET https://https://appwrite.io/v1/teams ``` ** Get a list of all the current user teams. You can use the query params to filter your results. On admin mode, this endpoint will return a list of all of the project teams. [Learn more about different API modes](/docs/modes). ** @@ -20,7 +20,7 @@ GET https://appwrite.test/v1/teams ## Create Team ```http request -POST https://appwrite.test/v1/teams +POST https://https://appwrite.io/v1/teams ``` ** Create a new team. The user who creates the team will automatically be assigned as the owner of the team. The team owner can invite new members, who will be able add new owners and update or delete the team from your project. ** @@ -35,7 +35,7 @@ POST https://appwrite.test/v1/teams ## Get Team ```http request -GET https://appwrite.test/v1/teams/{teamId} +GET https://https://appwrite.io/v1/teams/{teamId} ``` ** Get team by its unique ID. All team members have read access for this resource. ** @@ -49,7 +49,7 @@ GET https://appwrite.test/v1/teams/{teamId} ## Update Team ```http request -PUT https://appwrite.test/v1/teams/{teamId} +PUT https://https://appwrite.io/v1/teams/{teamId} ``` ** Update team by its unique ID. Only team owners have write access for this resource. ** @@ -64,7 +64,7 @@ PUT https://appwrite.test/v1/teams/{teamId} ## Delete Team ```http request -DELETE https://appwrite.test/v1/teams/{teamId} +DELETE https://https://appwrite.io/v1/teams/{teamId} ``` ** Delete team by its unique ID. Only team owners have write access for this resource. ** @@ -78,7 +78,7 @@ DELETE https://appwrite.test/v1/teams/{teamId} ## Get Team Members ```http request -GET https://appwrite.test/v1/teams/{teamId}/members +GET https://https://appwrite.io/v1/teams/{teamId}/members ``` ** Get team members by the team unique ID. All team members have read access for this list of resources. ** @@ -92,7 +92,7 @@ GET https://appwrite.test/v1/teams/{teamId}/members ## Create Team Membership ```http request -POST https://appwrite.test/v1/teams/{teamId}/memberships +POST https://https://appwrite.io/v1/teams/{teamId}/memberships ``` ** Use this endpoint to invite a new member to your team. An email with a link to join the team will be sent to the new member email address. If member doesn't exists in the project it will be automatically created. @@ -114,7 +114,7 @@ Please notice that in order to avoid a [Redirect Attacks](https://github.com/OWA ## Delete Team Membership ```http request -DELETE https://appwrite.test/v1/teams/{teamId}/memberships/{inviteId} +DELETE https://https://appwrite.io/v1/teams/{teamId}/memberships/{inviteId} ``` ** This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. ** @@ -129,7 +129,7 @@ DELETE https://appwrite.test/v1/teams/{teamId}/memberships/{inviteId} ## Create Team Membership (Resend) ```http request -POST https://appwrite.test/v1/teams/{teamId}/memberships/{inviteId}/resend +POST https://https://appwrite.io/v1/teams/{teamId}/memberships/{inviteId}/resend ``` ** Use this endpoint to resend your invitation email for a user to join a team. ** @@ -145,7 +145,7 @@ POST https://appwrite.test/v1/teams/{teamId}/memberships/{inviteId}/resend ## Update Team Membership Status ```http request -PATCH https://appwrite.test/v1/teams/{teamId}/memberships/{inviteId}/status +PATCH https://https://appwrite.io/v1/teams/{teamId}/memberships/{inviteId}/status ``` ** Use this endpoint to let user accept an invitation to join a team after he is being redirect back to your app from the invitation email. Use the success and failure URL's to redirect users back to your application after the request completes. diff --git a/app/sdks/php/docs/users.md b/app/sdks/php/docs/users.md index 9f3fbf530..abd22e488 100644 --- a/app/sdks/php/docs/users.md +++ b/app/sdks/php/docs/users.md @@ -3,7 +3,7 @@ ## List Users ```http request -GET https://appwrite.test/v1/users +GET https://https://appwrite.io/v1/users ``` ** Get a list of all the project users. You can use the query params to filter your results. ** @@ -20,7 +20,7 @@ GET https://appwrite.test/v1/users ## Create User ```http request -POST https://appwrite.test/v1/users +POST https://https://appwrite.io/v1/users ``` ** Create a new user. ** @@ -36,7 +36,7 @@ POST https://appwrite.test/v1/users ## Get User ```http request -GET https://appwrite.test/v1/users/{userId} +GET https://https://appwrite.io/v1/users/{userId} ``` ** Get user by its unique ID. ** @@ -50,7 +50,7 @@ GET https://appwrite.test/v1/users/{userId} ## Get User Logs ```http request -GET https://appwrite.test/v1/users/{userId}/logs +GET https://https://appwrite.io/v1/users/{userId}/logs ``` ** Get user activity logs list by its unique ID. ** @@ -64,7 +64,7 @@ GET https://appwrite.test/v1/users/{userId}/logs ## Get User Prefs ```http request -GET https://appwrite.test/v1/users/{userId}/prefs +GET https://https://appwrite.io/v1/users/{userId}/prefs ``` ** Get user preferences by its unique ID. ** @@ -78,7 +78,7 @@ GET https://appwrite.test/v1/users/{userId}/prefs ## Get User Sessions ```http request -GET https://appwrite.test/v1/users/{userId}/sessions +GET https://https://appwrite.io/v1/users/{userId}/sessions ``` ** Get user sessions list by its unique ID. ** @@ -92,7 +92,7 @@ GET https://appwrite.test/v1/users/{userId}/sessions ## Delete User Sessions ```http request -DELETE https://appwrite.test/v1/users/{userId}/sessions +DELETE https://https://appwrite.io/v1/users/{userId}/sessions ``` ** Delete all user sessions by its unique ID. ** @@ -106,7 +106,7 @@ DELETE https://appwrite.test/v1/users/{userId}/sessions ## Delete User Session ```http request -DELETE https://appwrite.test/v1/users/{userId}/sessions/:session +DELETE https://https://appwrite.io/v1/users/{userId}/sessions/:session ``` ** Delete user sessions by its unique ID. ** @@ -121,7 +121,7 @@ DELETE https://appwrite.test/v1/users/{userId}/sessions/:session ## Update user status ```http request -PATCH https://appwrite.test/v1/users/{userId}/status +PATCH https://https://appwrite.io/v1/users/{userId}/status ``` ** Update user status by its unique ID. ** diff --git a/app/sdks/php/src/Appwrite/Client.php b/app/sdks/php/src/Appwrite/Client.php index 1d6a3faf4..0a07f6588 100644 --- a/app/sdks/php/src/Appwrite/Client.php +++ b/app/sdks/php/src/Appwrite/Client.php @@ -28,7 +28,7 @@ class Client * * @var string */ - protected $endpoint = 'https://appwrite.test/v1'; + protected $endpoint = 'https://https://appwrite.io/v1'; /** * Global Headers diff --git a/app/sdks/python/README.md b/app/sdks/python/README.md index 08f7338bf..2ced831bf 100644 --- a/app/sdks/python/README.md +++ b/app/sdks/python/README.md @@ -1,4 +1,4 @@ -# [Appwrite SDK for Python](https://appwrite.io)   [![Tweet](https://img.shields.io/twitter/url/http/shields.io.svg?style=social)](https://twitter.com/intent/tweet?text=Appwrite%20is%20a%20backend%20as%20a%20service%20for%20building%20web%20or%20mobile%20apps&url=http%3A%2F%2Fappwrite.io&via=appwrite_io&hashtags=JS%2Cjavascript%2Creactjs%2Cangular%2Cios%2Candroid) +# Appwrite SDK for Python ![License](https://img.shields.io/github/license/appwrite/sdk-for-python.svg?v=1) ![Version](https://img.shields.io/badge/api%20version-latest-blue.svg?v=1) @@ -11,8 +11,6 @@ Appwrite backend as a service cuts up to 70% of the time and costs required for ![Appwrite](https://appwrite.io/images/github.png) -**API Version: latest** - ## Installation To install via [PyPI](https://pypi.org/): diff --git a/app/sdks/python/appwrite/client.py b/app/sdks/python/appwrite/client.py index a9d3b11ad..0de0b4834 100644 --- a/app/sdks/python/appwrite/client.py +++ b/app/sdks/python/appwrite/client.py @@ -4,7 +4,7 @@ import requests class Client: def __init__(self): self._self_signed = False - self._endpoint = 'https://appwrite.test/v1' + self._endpoint = 'https://https://appwrite.io/v1' self._global_headers = { 'content-type': '', 'x-sdk-version': 'appwrite:python:1.0.0', diff --git a/app/sdks/ruby/README.md b/app/sdks/ruby/README.md index a8d5f466b..4124c7550 100644 --- a/app/sdks/ruby/README.md +++ b/app/sdks/ruby/README.md @@ -1,4 +1,4 @@ -# [Appwrite SDK for Ruby](https://appwrite.io)   [![Tweet](https://img.shields.io/twitter/url/http/shields.io.svg?style=social)](https://twitter.com/intent/tweet?text=Appwrite%20is%20a%20backend%20as%20a%20service%20for%20building%20web%20or%20mobile%20apps&url=http%3A%2F%2Fappwrite.io&via=appwrite_io&hashtags=JS%2Cjavascript%2Creactjs%2Cangular%2Cios%2Candroid) +# Appwrite SDK for Ruby ![License](https://img.shields.io/github/license/appwrite/sdk-for-ruby.svg?v=1) ![Version](https://img.shields.io/badge/api%20version-latest-blue.svg?v=1) @@ -11,8 +11,6 @@ Appwrite backend as a service cuts up to 70% of the time and costs required for ![Appwrite](https://appwrite.io/images/github.png) -**API Version: latest** - ## Installation To install via [Gem](https://rubygems.org/): diff --git a/app/tasks/sdks.php b/app/tasks/sdks.php index a29a1312c..8f2cd6043 100644 --- a/app/tasks/sdks.php +++ b/app/tasks/sdks.php @@ -17,7 +17,7 @@ use Appwrite\SDK\Language\Dart; $cli = new CLI(); $version = '0.2.0'; // Server version -$warning = '**This SDK is compatible with Appwrite server version ' . $version . '. For older versions, please check [previous releases](/releases).**'; +$warning = '**This SDK is compatible with Appwrite server version ' . $version . '. For older versions, please check previous releases.**'; $cli ->task('generate') From bf53c7006cfad6dd477193a50edfcbb9f54a0397 Mon Sep 17 00:00:00 2001 From: eldadfux Date: Fri, 4 Oct 2019 08:14:42 +0300 Subject: [PATCH 53/56] Changelog for 0.3.0 --- CHANGES.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/CHANGES.md b/CHANGES.md index 5ae0928e7..c4a1bc250 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,3 +1,14 @@ +# Version 0.3.0 (PRE-RELEASE) + +## Planned Issues + +* Added 7 new locales for locale service and email templates (cz, hu, no*, ru, sv, ta, vi, zh) +* New users service routes to allow updates pref, email and name update +* 2 stage Docker build +* New database rule validation options +* Update docs example with auth info +* Limit HTTP origin check only to browser integrations + # Version 0.2.0 (PRE-RELEASE) ## Features From 725ff4f424681d29f9128646bcceb18d4888f28c Mon Sep 17 00:00:00 2001 From: eldadfux Date: Fri, 4 Oct 2019 08:16:24 +0300 Subject: [PATCH 54/56] Updated OAuth logos --- docs/AddOAuthProvider.md | 2 +- public/images/oauth/bitbucket.png | Bin 14109 -> 6826 bytes public/images/oauth/dropbox.png | Bin 2814 -> 7524 bytes public/images/oauth/gitlab.png | Bin 8905 -> 5382 bytes public/images/oauth/google.png | Bin 6847 -> 6988 bytes public/images/oauth/microsoft.png | Bin 769 -> 4840 bytes 6 files changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/AddOAuthProvider.md b/docs/AddOAuthProvider.md index bca7d3bc8..c6eb210a3 100644 --- a/docs/AddOAuthProvider.md +++ b/docs/AddOAuthProvider.md @@ -22,7 +22,7 @@ Make sure to fill all data needed and that your provider array key name is in ca ### Add Provider Logo -Add a logo image to your new provider in this path: `./public/images/oauth`. Your logo should be a png 100×100px file with the name of your provider (all lowercase). Please make sure to leave about 20px padding around the logo to be consistent with other logos. +Add a logo image to your new provider in this path: `./public/images/oauth`. Your logo should be a png 100×100px file with the name of your provider (all lowercase). Please make sure to leave about 30px padding around the logo to be consistent with other logos. ### Add Provider Class diff --git a/public/images/oauth/bitbucket.png b/public/images/oauth/bitbucket.png index 8c7442e9e71cd97c7d67653b5c8feac70d116a0e..afc980fbe3a411e74b583f1b5ab2a1293efbd535 100644 GIT binary patch literal 6826 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 Y0F)L#Zy|EQvH$=807*qoM6N<$g193o<^TWy literal 14109 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 literal 2814 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 diff --git a/public/images/oauth/gitlab.png b/public/images/oauth/gitlab.png index 35cb5e9dab01596bc9363aac8b2a4110e3599eef..2ed27d2c41e8eb4797fe214a74c75ce777c25598 100644 GIT binary patch literal 5382 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 G#{U5ax{;+DK{}U}Zn*#Z>3wJJ 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 diff --git a/public/images/oauth/microsoft.png b/public/images/oauth/microsoft.png index 9e40f2342d3303c98732400e58cfdd5d7a45f586..17aa8af89b75eae88b79efcb6e3f6008c3bb9ff6 100644 GIT binary patch literal 4840 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 Gk^ckQnnVQv literal 769 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7Ro>U^?OH;uum9_jZn9o^YT*+yCho z+#K{8n0QS~b~Zd^;>>y zm;XKI`So3)*V?E3EDkF-ytpUTk40laCqs0CAtUSE7FOQFkE9F^uyG%1;<8Ee)(~r9 z6)hJAk>+O~Fh&T7h1~H4lO_=XtVVf9b_lM{kY4$}TK#@o)Wwag8(AZ(pZd#03q%JL zUf#eOs*ucmt6TTQ=iM(GKc%`h|9L;*_u`|6*YI1!XRTx2n?KWjeQBBD#b@sI=g(^h zKd59nZ)?uPqHWQ~5Wafl6shQdUE$xek{x$$SJ=8$!81KGT_%JN2gU~NRK>vnr;f)4LZd2H{U{l{u^;zo| zpM9~Z z8?J5PNKkz$($3(Qur^chfY&KaKE^o*qAn{nOq~)e!(`F8b(t%Jw&rpRmI9`1-)@Gm zAiqM62Q1fSi7~EOGUt)N0nRn1x=azCmPZvEgd?(}h%@+3{ Date: Fri, 4 Oct 2019 08:47:23 +0300 Subject: [PATCH 55/56] Updated API spec --- app/app.php | 4 ++-- app/init.php | 1 + package-lock.json | 19 ++++++++++++------- package.json | 2 +- 4 files changed, 16 insertions(+), 10 deletions(-) diff --git a/app/app.php b/app/app.php index 6301d0872..02637ccec 100644 --- a/app/app.php +++ b/app/app.php @@ -438,7 +438,7 @@ $utopia->get('/v1/open-api-2.json') ->param('platform', 'client', function () {return new WhiteList(['client', 'server']);}, 'Choose target platform.', true) ->param('extensions', 0, function () {return new Range(0, 1);}, 'Show extra data.', true) ->action( - function ($platform, $extensions) use ($response, $request, $utopia, $domain, $version, $services) { + function ($platform, $extensions) use ($response, $request, $utopia, $domain, $services) { function fromCamelCase($input) { preg_match_all('!([A-Z][A-Z0-9]*(?=$|[A-Z][a-z0-9])|[A-Za-z][a-z0-9]+)!', $input, $matches); @@ -476,7 +476,7 @@ $utopia->get('/v1/open-api-2.json') $output = [ 'swagger' => '2.0', 'info' => [ - 'version' => $version, + 'version' => APP_VERSION_STABLE, 'title' => APP_NAME, 'description' => 'Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https://appwrite.io/docs](https://appwrite.io/docs)', 'termsOfService' => 'https://appwrite.io/policy/terms', diff --git a/app/init.php b/app/init.php index 30d45e602..a2e173171 100644 --- a/app/init.php +++ b/app/init.php @@ -26,6 +26,7 @@ const APP_USERAGENT = APP_NAME.'-Server/%s Please report abuse at '.APP_EMAIL_SE const APP_MODE_ADMIN = 'admin'; const APP_LOCALES = ['cat', 'de', 'en', 'es', 'fi', 'fr', 'gr', 'he', 'hi', 'id', 'it', 'nl', /* 'no',*/ 'pt-br', 'pt-pt', 'ro', 'tr', 'ua', 'zh']; const APP_PAGING_LIMIT = 15; +const APP_VERSION_STABLE = '0.2.0'; $register = new Registry(); $request = new Request(); diff --git a/package-lock.json b/package-lock.json index 82fc5d86f..081a3b7fd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -834,9 +834,9 @@ } }, "appwrite": { - "version": "1.0.21", - "resolved": "https://registry.npmjs.org/appwrite/-/appwrite-1.0.21.tgz", - "integrity": "sha512-NfNG9JQkOQypanMKOGzPzHVTZP1MTDipbTkRveIfmNd0W25OAqpE1up9f7KHaAi8yha1uyqkYW6l9QgjECZMEw==", + "version": "1.0.22", + "resolved": "https://registry.npmjs.org/appwrite/-/appwrite-1.0.22.tgz", + "integrity": "sha512-ofwb9opdkoY+AV8W2AkZY1z7gAqRlBZhbFj4ZMC9+UYhRAtLfaGnuyfRaWIKMFt7DII2Or261newdlwL/R2NsQ==", "dev": true }, "archy": { @@ -2517,7 +2517,8 @@ "ansi-regex": { "version": "2.1.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "aproba": { "version": "1.2.0", @@ -2932,7 +2933,8 @@ "safe-buffer": { "version": "5.1.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "safer-buffer": { "version": "2.1.2", @@ -2988,6 +2990,7 @@ "version": "3.0.1", "bundled": true, "dev": true, + "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -3031,12 +3034,14 @@ "wrappy": { "version": "1.0.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "yallist": { "version": "3.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true } } }, diff --git a/package.json b/package.json index 1a46663e6..d106d2ce2 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "license": "BSD-3-Clause", "repository": "public", "devDependencies": { - "appwrite": "^1.0.21", + "appwrite": "^1.0.22", "gulp": "^4.0.0", "gulp-clean-css": "^4.0.0", "gulp-concat": "2.5.2", From 748e8b3871e1e2453f0113760c6c76bfd99a4d84 Mon Sep 17 00:00:00 2001 From: Kiy4h <34406802+Kiy4h@users.noreply.github.com> Date: Fri, 4 Oct 2019 15:25:01 +0700 Subject: [PATCH 56/56] id: translate inspirational quote --- app/config/locale/id.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/config/locale/id.php b/app/config/locale/id.php index 09f377511..3997a4c50 100644 --- a/app/config/locale/id.php +++ b/app/config/locale/id.php @@ -1,7 +1,7 @@ '"The art of being wise is the art of knowing what to overlook."', // This is the line printed in the homepage and console 'view-source' + 'settings.inspire' => '"Seni menjadi bijak adalah seni mengetahui apa yang harus diabaikan."', // This is the line printed in the homepage and console 'view-source' 'settings.locale' => 'id', 'settings.direction' => 'ltr',
+ Hallo {{name}}, +
+
+ Om jou epos adres te verifieer, kliek op die web adres hier: +
+
{{redirect}} +
+
+ As jy nie aangevra het om jou epos adres te verifieer nie, kan jy die boodskap ignoreer. +
+
+ Baie dankie, +
+ {{project}} span +