HQL/JPQL/SQL 查詢支援與語法變更
Hibernate 6 在查詢語言方面做出一些語法上的調整,加強與 JPA 標準的一致性並去除不被建議的用法。開發者在升級時需特別注意下列改變:
UPDATE 查詢中的 FROM 子句: Hibernate 5 的 HQL 更新語句中允許可選的 FROM 關鍵字(例如 update from MyEntity e set e.attr = ...);在 Hibernate 6 中,更新語句不再允許出現 from,語法必須簡化為 update MyEntity e set ...
github.com
。
欄位名稱使用限制: Hibernate 5 的 HQL 查詢中可以直接使用資料庫欄位名稱(非正式但在某些情況可運作),Hibernate 6 則嚴格僅接受實體屬性名稱。也就是說,在 HQL/JPQL 中必須使用 Java 實體的屬性名稱(對應 Java 欄位或 getter),如果誤用資料庫欄名將導致查詢解析失敗
github.com
。例如,如果實體屬性 myText 映射到資料庫欄位 MY_TEXT,在 H6 查詢中應使用 myText,不能直接寫 MY_TEXT
github.com
。
實體與識別值比較: 過去 Hibernate 允許直接在查詢中比較實體與主鍵值(例如 where entity = :idParam,會隱式轉換為比較主鍵),或比較關聯屬性與某主鍵(如 where entity.association = :someId)。Hibernate 6 不再允許直接以實體物件與標量比較,也不允許上述隱式主鍵比較
github.com
。開發者必須顯式比較主鍵欄位,例如改為 where e.id = :idParam,或關聯的情況使用 e.association.id = :someId
github.com
。這提升了查詢語意明確性,也符合 JPA 規範對 JPQL 的要求。
聚合函數類型變更: 在原生 SQL 查詢中使用 COUNT() 函數,Hibernate 5 會將結果視為 BigInteger 型別返回,而 Hibernate 6 調整為返回 Long 型別
github.com
。因此,若應用程式有透過 createNativeQuery 執行計數查詢並依賴 BigInteger,升級後需修改結果處理的型別為 Long
github.com
。
集合屬性函式與操作: Hibernate 5 的 HQL 支援對集合屬性使用類似屬性的方法,例如 collection.size, collection.elements, collection.indices 等「偽屬性」。Hibernate 6 移除了對這些偽屬性的支援
github.com
;取而代之,提供了對應的函數語法來操作集合。
github.com
列出了一些對應關係,例如:
myCollection.size 請改用函數 size(myCollection)
github.com
。
myCollection.elements 改為使用 value(myCollection) 取得集合值。
myCollection.indices 改為使用 index(myCollection)(List 型別)或 key(myCollection)(Map 型別)等。
其他如最大索引、最小元素等均有對應函式(如 maxelement(myCollection) 等)
github.com
。
升級時需要將 HQL 中對集合的操作調整為新語法,以避免語法解析錯誤。
HQL 其他變更: 正如前述,HQL 的 fetch all properties 語句在 Hibernate 6 已經移除
docs.jboss.org
。若在 Hibernate 5 查詢中使用了 fetch all properties 來一次抓取實體所有延遲載入屬性,Hibernate 6 會拋出語法錯誤。替代方式可以利用 JPA 的 EntityGraph 或 Hibernate 特定的載入圖(load graph)功能來達成類似結果
docs.jboss.org
。另外,Hibernate 6 對 HQL 的解析更加嚴謹,如上所述一些寬鬆語法都不再支援;開發者在升級後若遇到查詢解析例外,需要對照官方變更指南修正查詢語句
github.com
github.com
。
上述變更主要針對 Hibernate 查詢語言與 JPQL 的一致性與嚴謹性做優化。在升級過程中,建議全面測試應用中的查詢,確保所有 HQL/JPQL 語句符合新版的語法要求,特別是關注先前可能依賴非標準用法的部分。
相容性問題與升級注意事項
由於 Hibernate 6 帶來多處不相容改動,將現有專案從 Hibernate 5 升級需要仔細規劃。以下列出主要的相容性問題與升級時的注意事項:
Java 和 Jakarta 升級: 如前所述,Hibernate 6 需要 Java 11 以上執行環境
docs.jboss.org
(同時 Spring Boot 3 將要求 Java 17
dzone.com
)。確保開發與部署環境滿足此要求後,必須將專案的 JPA 相依從 javax.persistence 換成 jakarta.persistence。這包括:更新所有實體類別與 DAO 程式碼中的 import、替換註解類別(如 javax.persistence.Entity -> jakarta.persistence.Entity)、調整 persistence.xml 及 orm.xml 的命名空間為 Jakarta
docs.jboss.org
。若應用有使用 JPA 提供者特定的 query hints(查詢提示),其鍵值字串也需改為 "jakarta.persistence.*" 前綴
github.com
。
移除或更改的 API 用法: 升級後,所有使用舊 Hibernate Criteria API (org.hibernate.Criteria 等) 的程式碼將無法運行,必須事先改寫為 JPA Criteria 或 HQL
github.com
github.com
。同樣地,檢查專案中有無使用 Query#iterate()、NativeQuery 呼叫 stored procedure、ResultTransformer 等 Hibernate 5 特有功能——這些在 Hibernate 6 中已經不存在或需要改用新方式
docs.jboss.org
docs.jboss.org
。例如,若有透過 @NamedNativeQuery(callable=true) 定義儲存程序查詢,需要改為使用 @NamedStoredProcedureQuery
docs.jboss.org
。升級時最好先搜尋程式碼中所有 org.hibernate.* 相依的用法,對照 Hibernate 6 的變更清單進行修改。
HQL/JPQL 語法相容性: 在升級環境重新執行應用時,任何不再受支援的查詢語法都會在應用啟動或運行查詢時拋出錯誤。例如,舊程式碼若有 update ... from ...、直接使用資料庫欄名、entity = :id 比較等,需要按照前述新語法進行調整
github.com
github.com
。因此,建議在升級前對所有 HQL/JPQL 做靜態檢查或在升級後加強測試覆蓋,以捕捉這類問題並修正。
資料庫 Schema 與序列: Hibernate 6 默認改為每個實體使用獨立的序列產生主鍵
docs.jboss.org
。如果您的舊專案使用 GenerationType.AUTO 或 SEQUENCE 但未明確指定序列名稱,Hibernate 5 可能一直使用全域的 hibernate_sequence。升級到 Hibernate 6 後,Hibernate 會預期資料庫中存在以實體名稱加 _seq 命名的序列(或 _SEQ,大小寫依資料庫而定)
docs.jboss.org
thorben-janssen.com
。因此,資料庫需要新增對應序列,否則應用啟動時在進行 ID 生成會報錯找不到序列。您可以透過啟用 Hibernate 自動建表(如 hbm2ddl.auto=create)來生成必要的 DDL 腳本,或手動依照 <entity>_seq 規則建立序列
docs.jboss.org
。另外,Hibernate 6 將序列的預設 allocationSize 從 1 提高到了 50
docs.jboss.org
(遵循 JPA 默認設定)。這表示每個序列每次會撥給 Hibernate 50 個ID值批次,以減少交互次數;但相應地也會造成ID不連續的跳號增大。在升級時如果不希望此行為,可透過在 persistence.xml 設定 hibernate.id.db_structure_naming_strategy 為 legacy 或 single 來維持舊行為
docs.jboss.org
thorben-janssen.com
(例如設定為 single 可恢復為所有實體共用單一序列)。同時,請檢查是否有任何測試或資料載入腳本(如 import.sql)硬編碼了 hibernate_sequence 名稱,這些也需要更新為新序列名稱
docs.jboss.org
。
資料庫方言與支援: Hibernate 6 對部分資料庫的版本相容性有所調整。某些舊版本的資料庫方言在 Hibernate 6 核心中不再受支援,已被移至 hibernate-community-dialects 模組或完全移除
github.com
github.com
。例如,先前有版本區分的 Dialect 類別(如 PostgreSQL91Dialect 等)在 6.x 中標記為過時,Hibernate 6 傾向使用單一 Dialect 類別處理同系列資料庫的不同版本
github.com
。升級時如果 hibernate.dialect 設定值對應的方言類別已移至 community 模組,應新增相依或改用新版內建的對應 Dialect。另外,某些較舊的資料庫版本可能不再相容,例如 Hibernate 6 要求 MySQL 至少 8.0、Oracle 至少 12c 等(視不同發行版政策)
github.com
github.com
。在升級前請查閱官方支援矩陣,確保您的資料庫版本受 Hibernate 6 支援,必要時計劃資料庫升級。
其他相容性考量: 除了上述重點,還有一些細節需要注意。例如,如果您有自定義的 Hibernate UserType/CompositeUserType 或其他類型映射實作,Hibernate 6 的類型系統大幅調整,BasicType 與類型描述符 API 已更改,這將導致舊實作無法直接沿用
discourse.hibernate.org
。需要依照 Hibernate 6 新的 JavaType、JdbcType 架構來修改自定義類型的實作方式
discourse.hibernate.org
。再者,Hibernate 6 移除了 JMX 和 JACC 整合,如果應用透過 JMX 監控 Hibernate 或使用 JACC 權限介面,這部分也需遷移或替換
docs.jboss.org
。總之,在升級前應詳細閱讀 Hibernate 6 官方遷移指南,列出所有影響項目,逐一修改程式碼與配置,以確保升級過程順利。
整合與依賴變更
Hibernate 的升級往往牽涉周邊框架與套件的相容性調整,尤其是與 Spring、生態系 JPA 實現及其他第三方模組的整合。 Spring Boot/Spring 框架: Spring Boot 3.x 開始內建使用 Hibernate 6.x 作為預設 JPA 提供者
dzone.com
。這同時伴隨 Spring 框架升級至 6.x(全面轉向 Jakarta EE 依賴)以及最低 Java 17 的要求
dzone.com
。因此,從 Spring Boot 2(Hibernate 5)升級到 Boot 3(Hibernate 6)時,除了上述 Hibernate 自身的變更,還需注意 Spring 提供的 JPA 支援層。例如,Spring Data JPA 3.x 依據 Jakarta Persistence 以及 Hibernate 6 API 進行了調整。對開發者而言,大部分 Spring Data JPA 的 Repository 介面可以不變,但若有使用自定義的 Hibernate 特定功能,則要確保相容(例如 Spring Data 先前允許使用 @Query 注解撰寫 JPQL,此時JPQL語法需要符合 Hibernate 6 的新規則)。整體來說,升級 Spring Boot 時應同步升級相關的 Spring Data、Spring ORM 套件版本,以獲得對 Hibernate 6 的相容支援。此外,Spring Boot 3 默認依賴 Jakarta API(如 servlet, validation, JPA 等),務必要將原本代碼中的所有 Java EE javax.* 類替換為對應的 Jakarta 類,否則應用將無法啟動
dzone.com
dzone.com
。 JPA 規範與實作: Hibernate 6 基於 JPA 3.0 規範。對開發者來說,除了 Jakarta 套件名稱的改變外,JPA 3.0 本身相對 JPA 2.2 沒有引入破壞性的大改。但因為 JPA 轉移到 Jakarta 名下,一些細節如 Persistence 單元的 XML 命名空間更新為 https://jakarta.ee/xml/ns/persistence,persistence.xml 中的 version 屬性對應 Jakarta Persistence 3.0 等,都需要在升級時更新。Hibernate 6 對 JPA 3 的支援已相當完整,若應用遵循標準 JPA 接口開發,理論上除了套件名稱外無需太多改動。但是值得注意的是,驗證框架(Bean Validation)也從 javax.validation 遷移到 jakarta.validation,以及 JTA 交易管理從 javax.transaction 轉為 jakarta.transaction 等。如果專案使用這些規範,也要一併升級對應的 Jakarta 版本,以免產生類別找不到的錯誤。 第三方模組與擴充: 如果專案使用 Hibernate 的擴充模組(如 Hibernate Envers 做審計、Hibernate Search 做全文檢索等),需要確保使用對應支援 Hibernate 6 的版本。多數 Hibernate 附屬專案在 Hibernate 6 發布後也推出了相容更新版本。例如,Envers 在 Hibernate 6 中仍隨核心發行,但 API 可能略有調整;Hibernate Search 則有相容 Jakarta 的新版。類似地,如果有使用 Querydsl 這類第三方查詢DSL框架,也需升級至支援 Hibernate 6 / JPA 3 的版本,因為它們可能涉及底層查詢語法或類型的相容性。在第二級快取方面,常用的 Ehcache、Infinispan 等應與 Hibernate 6 相容,但需升級相依版本以確保與新類型系統協調運作。此外,如前所述,部分資料庫方言被拆分到 hibernate-community-dialects 模組,如果應用使用的資料庫方言不再隨 Hibernate Core 提供,記得在建置中加入相應依賴,否則 Hibernate 可能無法辨識方言類別
github.com
。 架構與設計改進: Hibernate 6 在架構層面做了一些變動,可能影響與自定義擴充的整合:
多資料庫與方言統一: 如前所述,Hibernate 6 將許多資料庫的不同版本支援整合入單一 Dialect 類別中,精簡了方言的繼承體系
github.com
。對應地,如果應用或第三方庫曾直接參考某特定版本的 Dialect(例如 Oracle10gDialect),可能需要改用新對應的 Dialect 名稱(如 OracleDialect)並在 Hibernate 設定中指定正確的資料庫版本屬性。這種調整提高了多資料庫支援的一致性,但需要注意相容設定的更新。
批次處理與延遲載入: Hibernate 一直支援 JDBC 批次更新以及批次抓取(batching)以提升效能。Hibernate 6 在這方面主要是內部優化,對開發者介面的影響不大。您仍可透過設定參數(如 hibernate.jdbc.batch_size)控制批次操作大小。需要注意的是,如果過往有依賴 Hibernate 5 的特定批次行為(例如批次抓取語意),升級後應驗證 Hibernate 6 的預設行為是否一致。一些用戶回饋顯示 Hibernate 6 對延遲載入多對多集合的批次抓取預設值稍有不同,需要在升級後調整設定以符合預期
dzone.com
。建議檢查應用的 hibernate.properties 或 Spring Boot 設定中與批次、抓取有關的選項,在 Hibernate 6 環境下是否需要更改。
Schema 管理與類型支援: 除了序列命名策略的變更,Hibernate 6 擴充了對原生資料庫類型的支援。許多以往需要自定義類型才能處理的 Java 型別,Hibernate 6 現在開箱即用地支援並對應到適當的資料庫型別。例如集合或陣列類型可以對應為資料庫的陣列型別、enum 可以對應資料庫原生 enum 型別、ZonedDateTime/OffsetDateTime 等會映射為帶時區的時間戳等
github.com
github.com
。如果先前專案為了這些型別編寫了自定義 UserType,升級後可能不再需要,或需要調整以利用框架提供的內建支援。同時,Hibernate 6 引入了對 JSON 資料的更好支援,可以更簡便地將 JSON 文本映射到屬性(在特定支援 JSON 的資料庫上)——這些改進意味著整合第三方 JSON 處理庫(或過去的自定實現)時要評估是否繼續需要抑或改用 Hibernate 原生功能。
總而言之,Hibernate ORM 6 在保留與加強現有功能的同時,做出了重大調整和改進。升級時需要關注語法和API的不相容變化,調整專案配置與相依套件版本,以充分利用 Hibernate 6 的新功能(如更佳的效能與現代特性)同時保持系統穩定
dzone.com
。透過上述各方面的比較與指引,希望能協助您順利從 Hibernate 5 過渡到 Hibernate 6。每個應用的情況可能不盡相同,建議在實際升級前詳閱官方文件與社群經驗,以擬定最適合的升級路徑。最後,完整的變更清單和遷移細節可參考官方提供的[Hibernate 6 遷移指南]
infoq.com
和相關資源,以確保沒有遺漏任何重要步驟。
SFFML0pQUUwvU1FMIOafpeipouaUr+aPtOiIh+iqnuazleiuiuabtAoKSGliZXJuYXRlIDYg5Zyo5p+l6Kmi6Kqe6KiA5pa56Z2i5YGa5Ye65LiA5Lqb6Kqe5rOV5LiK55qE6Kq/5pW077yM5Yqg5by36IiHIEpQQSDmqJnmupbnmoTkuIDoh7TmgKfkuKbljrvpmaTkuI3ooqvlu7rorbDnmoTnlKjms5XjgILplovnmbzogIXlnKjljYfntJrmmYLpnIDnibnliKXms6jmhI/kuIvliJfmlLnororvvJoKClVQREFURSDmn6XoqaLkuK3nmoQgRlJPTSDlrZDlj6XvvJogSGliZXJuYXRlIDUg55qEIEhRTCDmm7TmlrDoqp7lj6XkuK3lhYHoqLHlj6/pgbjnmoQgRlJPTSDpl5zpjbXlrZfvvIjkvovlpoIgdXBkYXRlIGZyb20gTXlFbnRpdHkgZSBzZXQgZS5hdHRyID0gLi4u77yJ77yb5ZyoIEhpYmVybmF0ZSA2IOS4re+8jOabtOaWsOiqnuWPpeS4jeWGjeWFgeioseWHuuePviBmcm9t77yM6Kqe5rOV5b+F6aCI57Ch5YyW54K6IHVwZGF0ZSBNeUVudGl0eSBlIHNldCAuLi4KCmdpdGh1Yi5jb20KCuOAggoK5qyE5L2N5ZCN56ix5L2/55So6ZmQ5Yi277yaIEhpYmVybmF0ZSA1IOeahCBIUUwg5p+l6Kmi5Lit5Y+v5Lul55u05o6l5L2/55So6LOH5paZ5bqr5qyE5L2N5ZCN56ix77yI6Z2e5q2j5byP5L2G5Zyo5p+Q5Lqb5oOF5rOB5Y+v6YGL5L2c77yJ77yMSGliZXJuYXRlIDYg5YmH5Zq05qC85YOF5o6l5Y+X5a+m6auU5bGs5oCn5ZCN56ix44CC5Lmf5bCx5piv6Kqq77yM5ZyoIEhRTC9KUFFMIOS4reW/hemgiOS9v+eUqCBKYXZhIOWvpumrlOeahOWxrOaAp+WQjeeose+8iOWwjeaHiSBKYXZhIOashOS9jeaIliBnZXR0ZXLvvInvvIzlpoLmnpzoqqTnlKjos4fmlpnluqvmrITlkI3lsIflsI7oh7Tmn6XoqaLop6PmnpDlpLHmlZcKCmdpdGh1Yi5jb20KCuOAguS+i+Wmgu+8jOWmguaenOWvpumrlOWxrOaApyBteVRleHQg5pig5bCE5Yiw6LOH5paZ5bqr5qyE5L2NIE1ZX1RFWFTvvIzlnKggSDYg5p+l6Kmi5Lit5oeJ5L2/55SoIG15VGV4dO+8jOS4jeiDveebtOaOpeWvqyBNWV9URVhUCgpnaXRodWIuY29tCgrjgIIKCuWvpumrlOiIh+itmOWIpeWAvOavlOi8g++8miDpgY7ljrsgSGliZXJuYXRlIOWFgeioseebtOaOpeWcqOafpeipouS4reavlOi8g+WvpumrlOiIh+S4u+mNteWAvO+8iOS+i+WmgiB3aGVyZSBlbnRpdHkgPSA6aWRQYXJhbe+8jOacg+maseW8j+i9ieaPm+eCuuavlOi8g+S4u+mNte+8ie+8jOaIluavlOi8g+mXnOiBr+WxrOaAp+iIh+afkOS4u+mNte+8iOWmgiB3aGVyZSBlbnRpdHkuYXNzb2NpYXRpb24gPSA6c29tZUlk77yJ44CCSGliZXJuYXRlIDYg5LiN5YaN5YWB6Kix55u05o6l5Lul5a+m6auU54mp5Lu26IiH5qiZ6YeP5q+U6LyD77yM5Lmf5LiN5YWB6Kix5LiK6L+w6Zqx5byP5Li76Y215q+U6LyDCgpnaXRodWIuY29tCgrjgILplovnmbzogIXlv4XpoIjpoa/lvI/mr5TovIPkuLvpjbXmrITkvY3vvIzkvovlpoLmlLnngrogd2hlcmUgZS5pZCA9IDppZFBhcmFt77yM5oiW6Zec6IGv55qE5oOF5rOB5L2/55SoIGUuYXNzb2NpYXRpb24uaWQgPSA6c29tZUlkCgpnaXRodWIuY29tCgrjgILpgJnmj5DljYfkuobmn6XoqaLoqp7mhI/mmI7norrmgKfvvIzkuZ/nrKblkIggSlBBIOimj+evhOWwjSBKUFFMIOeahOimgeaxguOAggoK6IGa5ZCI5Ye95pW46aGe5Z6L6K6K5pu077yaIOWcqOWOn+eUnyBTUUwg5p+l6Kmi5Lit5L2/55SoIENPVU5UKCkg5Ye95pW477yMSGliZXJuYXRlIDUg5pyD5bCH57WQ5p6c6KaW54K6IEJpZ0ludGVnZXIg5Z6L5Yil6L+U5Zue77yM6ICMIEhpYmVybmF0ZSA2IOiqv+aVtOeCuui/lOWbniBMb25nIOWei+WIpQoKZ2l0aHViLmNvbQoK44CC5Zug5q2k77yM6Iul5oeJ55So56iL5byP5pyJ6YCP6YGOIGNyZWF0ZU5hdGl2ZVF1ZXJ5IOWft+ihjOioiOaVuOafpeipouS4puS+neiztCBCaWdJbnRlZ2Vy77yM5Y2H57Sa5b6M6ZyA5L+u5pS557WQ5p6c6JmV55CG55qE5Z6L5Yil54K6IExvbmcKCmdpdGh1Yi5jb20KCuOAggoK6ZuG5ZCI5bGs5oCn5Ye95byP6IiH5pON5L2c77yaIEhpYmVybmF0ZSA1IOeahCBIUUwg5pSv5o+05bCN6ZuG5ZCI5bGs5oCn5L2/55So6aGe5Ly85bGs5oCn55qE5pa55rOV77yM5L6L5aaCIGNvbGxlY3Rpb24uc2l6ZSwgY29sbGVjdGlvbi5lbGVtZW50cywgY29sbGVjdGlvbi5pbmRpY2VzIOetieOAjOWBveWxrOaAp+OAjeOAgkhpYmVybmF0ZSA2IOenu+mZpOS6huWwjemAmeS6m+WBveWxrOaAp+eahOaUr+aPtAoKZ2l0aHViLmNvbQoK77yb5Y+W6ICM5Luj5LmL77yM5o+Q5L6b5LqG5bCN5oeJ55qE5Ye95pW46Kqe5rOV5L6G5pON5L2c6ZuG5ZCI44CCCgpnaXRodWIuY29tCgrliJflh7rkuobkuIDkupvlsI3mh4npl5zkv4LvvIzkvovlpoLvvJoKCm15Q29sbGVjdGlvbi5zaXplIOiri+aUueeUqOWHveaVuCBzaXplKG15Q29sbGVjdGlvbikKCmdpdGh1Yi5jb20KCuOAggoKbXlDb2xsZWN0aW9uLmVsZW1lbnRzIOaUueeCuuS9v+eUqCB2YWx1ZShteUNvbGxlY3Rpb24pIOWPluW+l+mbhuWQiOWAvOOAggoKbXlDb2xsZWN0aW9uLmluZGljZXMg5pS554K65L2/55SoIGluZGV4KG15Q29sbGVjdGlvbinvvIhMaXN0IOWei+WIpe+8ieaIliBrZXkobXlDb2xsZWN0aW9uKe+8iE1hcCDlnovliKXvvInnrYnjgIIKCuWFtuS7luWmguacgOWkp+e0ouW8leOAgeacgOWwj+WFg+e0oOetieWdh+acieWwjeaHieWHveW8j++8iOWmgiBtYXhlbGVtZW50KG15Q29sbGVjdGlvbikg562JKQoKZ2l0aHViLmNvbQoK44CCCgrljYfntJrmmYLpnIDopoHlsIcgSFFMIOS4reWwjembhuWQiOeahOaTjeS9nOiqv+aVtOeCuuaWsOiqnuazle+8jOS7pemBv+WFjeiqnuazleino+aekOmMr+iqpOOAggoKSFFMIOWFtuS7luiuiuabtO+8miDmraPlpoLliY3ov7DvvIxIUUwg55qEIGZldGNoIGFsbCBwcm9wZXJ0aWVzIOiqnuWPpeWcqCBIaWJlcm5hdGUgNiDlt7LntpPnp7vpmaQKCmRvY3MuamJvc3Mub3JnCgrjgILoi6XlnKggSGliZXJuYXRlIDUg5p+l6Kmi5Lit5L2/55So5LqGIGZldGNoIGFsbCBwcm9wZXJ0aWVzIOS+huS4gOasoeaKk+WPluWvpumrlOaJgOacieW7tumBsui8ieWFpeWxrOaAp++8jEhpYmVybmF0ZSA2IOacg+aLi+WHuuiqnuazlemMr+iqpOOAguabv+S7o+aWueW8j+WPr+S7peWIqeeUqCBKUEEg55qEIEVudGl0eUdyYXBoIOaIliBIaWJlcm5hdGUg54m55a6a55qE6LyJ5YWl5ZyW77yIbG9hZCBncmFwaO+8ieWKn+iDveS+humBlOaIkOmhnuS8vOe1kOaenAoKZG9jcy5qYm9zcy5vcmcKCuOAguWPpuWklu+8jEhpYmVybmF0ZSA2IOWwjSBIUUwg55qE6Kej5p6Q5pu05Yqg5Zq06Ky577yM5aaC5LiK5omA6L+w5LiA5Lqb5a+s6ayG6Kqe5rOV6YO95LiN5YaN5pSv5o+077yb6ZaL55m86ICF5Zyo5Y2H57Sa5b6M6Iul6YGH5Yiw5p+l6Kmi6Kej5p6Q5L6L5aSW77yM6ZyA6KaB5bCN54Wn5a6Y5pa56K6K5pu05oyH5Y2X5L+u5q2j5p+l6Kmi6Kqe5Y+lCgpnaXRodWIuY29tCgpnaXRodWIuY29tCgrjgIIKCuS4iui/sOiuiuabtOS4u+imgemHneWwjSBIaWJlcm5hdGUg5p+l6Kmi6Kqe6KiA6IiHIEpQUUwg55qE5LiA6Ie05oCn6IiH5Zq06Ky55oCn5YGa5YSq5YyW44CC5Zyo5Y2H57Sa6YGO56iL5Lit77yM5bu66K2w5YWo6Z2i5ris6Kmm5oeJ55So5Lit55qE5p+l6Kmi77yM56K65L+d5omA5pyJIEhRTC9KUFFMIOiqnuWPpeespuWQiOaWsOeJiOeahOiqnuazleimgeaxgu+8jOeJueWIpeaYr+mXnOazqOWFiOWJjeWPr+iDveS+neiztOmdnuaomea6lueUqOazleeahOmDqOWIhuOAggoK55u45a655oCn5ZWP6aGM6IiH5Y2H57Sa5rOo5oSP5LqL6aCFCgrnlLHmlrwgSGliZXJuYXRlIDYg5bi25L6G5aSa6JmV5LiN55u45a655pS55YuV77yM5bCH54++5pyJ5bCI5qGI5b6eIEhpYmVybmF0ZSA1IOWNh+e0mumcgOimgeS7lOe0sOimj+WKg+OAguS7peS4i+WIl+WHuuS4u+imgeeahOebuOWuueaAp+WVj+mhjOiIh+WNh+e0muaZgueahOazqOaEj+S6i+mghe+8mgoKSmF2YSDlkowgSmFrYXJ0YSDljYfntJrvvJog5aaC5YmN5omA6L+w77yMSGliZXJuYXRlIDYg6ZyA6KaBIEphdmEgMTEg5Lul5LiK5Z+36KGM55Kw5aKDCgpkb2NzLmpib3NzLm9yZwoK77yI5ZCM5pmCIFNwcmluZyBCb290IDMg5bCH6KaB5rGCIEphdmEgMTcKCmR6b25lLmNvbQoK77yJ44CC56K65L+d6ZaL55m86IiH6YOo572y55Kw5aKD5ru/6Laz5q2k6KaB5rGC5b6M77yM5b+F6aCI5bCH5bCI5qGI55qEIEpQQSDnm7jkvp3lvp4gamF2YXgucGVyc2lzdGVuY2Ug5o+b5oiQIGpha2FydGEucGVyc2lzdGVuY2XjgILpgJnljIXmi6zvvJrmm7TmlrDmiYDmnInlr6bpq5TpoZ7liKXoiIcgREFPIOeoi+W8j+eivOS4reeahCBpbXBvcnTjgIHmm7/mj5voqLvop6PpoZ7liKXvvIjlpoIgamF2YXgucGVyc2lzdGVuY2UuRW50aXR5IC0+IGpha2FydGEucGVyc2lzdGVuY2UuRW50aXR577yJ44CB6Kq/5pW0IHBlcnNpc3RlbmNlLnhtbCDlj4ogb3JtLnhtbCDnmoTlkb3lkI3nqbrplpPngrogSmFrYXJ0YQoKZG9jcy5qYm9zcy5vcmcKCuOAguiLpeaHieeUqOacieS9v+eUqCBKUEEg5o+Q5L6b6ICF54m55a6a55qEIHF1ZXJ5IGhpbnRz77yI5p+l6Kmi5o+Q56S677yJ77yM5YW26Y215YC85a2X5Liy5Lmf6ZyA5pS554K6ICJqYWthcnRhLnBlcnNpc3RlbmNlLioiIOWJjee2tAoKZ2l0aHViLmNvbQoK44CCCgrnp7vpmaTmiJbmm7TmlLnnmoQgQVBJIOeUqOazle+8miDljYfntJrlvozvvIzmiYDmnInkvb/nlKjoiIogSGliZXJuYXRlIENyaXRlcmlhIEFQSSAob3JnLmhpYmVybmF0ZS5Dcml0ZXJpYSDnrYkpIOeahOeoi+W8j+eivOWwh+eEoeazlemBi+ihjO+8jOW/hemgiOS6i+WFiOaUueWvq+eCuiBKUEEgQ3JpdGVyaWEg5oiWIEhRTAoKZ2l0aHViLmNvbQoKZ2l0aHViLmNvbQoK44CC5ZCM5qij5Zyw77yM5qqi5p+l5bCI5qGI5Lit5pyJ54Sh5L2/55SoIFF1ZXJ5I2l0ZXJhdGUoKeOAgU5hdGl2ZVF1ZXJ5IOWRvOWPqyBzdG9yZWQgcHJvY2VkdXJl44CBUmVzdWx0VHJhbnNmb3JtZXIg562JIEhpYmVybmF0ZSA1IOeJueacieWKn+iDveKAlOKAlOmAmeS6m+WcqCBIaWJlcm5hdGUgNiDkuK3lt7LntpPkuI3lrZjlnKjmiJbpnIDopoHmlLnnlKjmlrDmlrnlvI8KCmRvY3MuamJvc3Mub3JnCgpkb2NzLmpib3NzLm9yZwoK44CC5L6L5aaC77yM6Iul5pyJ6YCP6YGOIEBOYW1lZE5hdGl2ZVF1ZXJ5KGNhbGxhYmxlPXRydWUpIOWumue+qeWEsuWtmOeoi+W6j+afpeipou+8jOmcgOimgeaUueeCuuS9v+eUqCBATmFtZWRTdG9yZWRQcm9jZWR1cmVRdWVyeQoKZG9jcy5qYm9zcy5vcmcKCuOAguWNh+e0muaZguacgOWlveWFiOaQnOWwi+eoi+W8j+eivOS4reaJgOaciSBvcmcuaGliZXJuYXRlLiog55u45L6d55qE55So5rOV77yM5bCN54WnIEhpYmVybmF0ZSA2IOeahOiuiuabtOa4heWWrumAsuihjOS/ruaUueOAggoKSFFML0pQUUwg6Kqe5rOV55u45a655oCn77yaIOWcqOWNh+e0mueSsOWig+mHjeaWsOWft+ihjOaHieeUqOaZgu+8jOS7u+S9leS4jeWGjeWPl+aUr+aPtOeahOafpeipouiqnuazlemDveacg+WcqOaHieeUqOWVn+WLleaIlumBi+ihjOafpeipouaZguaLi+WHuumMr+iqpOOAguS+i+Wmgu+8jOiIiueoi+W8j+eivOiLpeaciSB1cGRhdGUgLi4uIGZyb20gLi4u44CB55u05o6l5L2/55So6LOH5paZ5bqr5qyE5ZCN44CBZW50aXR5ID0gOmlkIOavlOi8g+etie+8jOmcgOimgeaMieeFp+WJjei/sOaWsOiqnuazlemAsuihjOiqv+aVtAoKZ2l0aHViLmNvbQoKZ2l0aHViLmNvbQoK44CC5Zug5q2k77yM5bu66K2w5Zyo5Y2H57Sa5YmN5bCN5omA5pyJIEhRTC9KUFFMIOWBmumdnOaFi+aqouafpeaIluWcqOWNh+e0muW+jOWKoOW8t+a4rOippuimhuiTi++8jOS7peaNleaNiemAmemhnuWVj+mhjOS4puS/ruato+OAggoK6LOH5paZ5bqrIFNjaGVtYSDoiIfluo/liJfvvJogSGliZXJuYXRlIDYg6buY6KqN5pS554K65q+P5YCL5a+m6auU5L2/55So542o56uL55qE5bqP5YiX55Si55Sf5Li76Y21Cgpkb2NzLmpib3NzLm9yZwoK44CC5aaC5p6c5oKo55qE6IiK5bCI5qGI5L2/55SoIEdlbmVyYXRpb25UeXBlLkFVVE8g5oiWIFNFUVVFTkNFIOS9huacquaYjueiuuaMh+WumuW6j+WIl+WQjeeose+8jEhpYmVybmF0ZSA1IOWPr+iDveS4gOebtOS9v+eUqOWFqOWfn+eahCBoaWJlcm5hdGVfc2VxdWVuY2XjgILljYfntJrliLAgSGliZXJuYXRlIDYg5b6M77yMSGliZXJuYXRlIOacg+mgkOacn+izh+aWmeW6q+S4reWtmOWcqOS7peWvpumrlOWQjeeoseWKoCBfc2VxIOWRveWQjeeahOW6j+WIl++8iOaIliBfU0VR77yM5aSn5bCP5a+r5L6d6LOH5paZ5bqr6ICM5a6a77yJCgpkb2NzLmpib3NzLm9yZwoKdGhvcmJlbi1qYW5zc2VuLmNvbQoK44CC5Zug5q2k77yM6LOH5paZ5bqr6ZyA6KaB5paw5aKe5bCN5oeJ5bqP5YiX77yM5ZCm5YmH5oeJ55So5ZWf5YuV5pmC5Zyo6YCy6KGMIElEIOeUn+aIkOacg+WgsemMr+aJvuS4jeWIsOW6j+WIl+OAguaCqOWPr+S7pemAj+mBjuWVn+eUqCBIaWJlcm5hdGUg6Ieq5YuV5bu66KGo77yI5aaCIGhibTJkZGwuYXV0bz1jcmVhdGXvvInkvobnlJ/miJDlv4XopoHnmoQgRERMIOiFs+acrO+8jOaIluaJi+WLleS+neeFpyA8ZW50aXR5Pl9zZXEg6KaP5YmH5bu656uL5bqP5YiXCgpkb2NzLmpib3NzLm9yZwoK44CC5Y+m5aSW77yMSGliZXJuYXRlIDYg5bCH5bqP5YiX55qE6aCQ6KitIGFsbG9jYXRpb25TaXplIOW+niAxIOaPkOmrmOWIsOS6hiA1MAoKZG9jcy5qYm9zcy5vcmcKCu+8iOmBteW+qiBKUEEg6buY6KqN6Kit5a6a77yJ44CC6YCZ6KGo56S65q+P5YCL5bqP5YiX5q+P5qyh5pyD5pKl57WmIEhpYmVybmF0ZSA1MCDlgItJROWAvOaJueasoe+8jOS7pea4m+WwkeS6pOS6kuasoeaVuO+8m+S9huebuOaHieWcsOS5n+acg+mAoOaIkElE5LiN6YCj57qM55qE6Lez6Jmf5aKe5aSn44CC5Zyo5Y2H57Sa5pmC5aaC5p6c5LiN5biM5pyb5q2k6KGM54K677yM5Y+v6YCP6YGO5ZyoIHBlcnNpc3RlbmNlLnhtbCDoqK3lrpogaGliZXJuYXRlLmlkLmRiX3N0cnVjdHVyZV9uYW1pbmdfc3RyYXRlZ3kg54K6IGxlZ2FjeSDmiJYgc2luZ2xlIOS+hue2reaMgeiIiuihjOeCugoKZG9jcy5qYm9zcy5vcmcKCnRob3JiZW4tamFuc3Nlbi5jb20KCu+8iOS+i+WmguioreWumueCuiBzaW5nbGUg5Y+v5oGi5b6p54K65omA5pyJ5a+m6auU5YWx55So5Zau5LiA5bqP5YiX77yJ44CC5ZCM5pmC77yM6KuL5qqi5p+l5piv5ZCm5pyJ5Lu75L2V5ris6Kmm5oiW6LOH5paZ6LyJ5YWl6IWz5pys77yI5aaCIGltcG9ydC5zcWzvvInnoaznt6jnorzkuoYgaGliZXJuYXRlX3NlcXVlbmNlIOWQjeeose+8jOmAmeS6m+S5n+mcgOimgeabtOaWsOeCuuaWsOW6j+WIl+WQjeeosQoKZG9jcy5qYm9zcy5vcmcKCuOAggoK6LOH5paZ5bqr5pa56KiA6IiH5pSv5o+077yaIEhpYmVybmF0ZSA2IOWwjemDqOWIhuizh+aWmeW6q+eahOeJiOacrOebuOWuueaAp+acieaJgOiqv+aVtOOAguafkOS6m+iIiueJiOacrOeahOizh+aWmeW6q+aWueiogOWcqCBIaWJlcm5hdGUgNiDmoLjlv4PkuK3kuI3lho3lj5fmlK/mj7TvvIzlt7Looqvnp7voh7MgaGliZXJuYXRlLWNvbW11bml0eS1kaWFsZWN0cyDmqKHntYTmiJblrozlhajnp7vpmaQKCmdpdGh1Yi5jb20KCmdpdGh1Yi5jb20KCuOAguS+i+Wmgu+8jOWFiOWJjeacieeJiOacrOWNgOWIhueahCBEaWFsZWN0IOmhnuWIpe+8iOWmgiBQb3N0Z3JlU1FMOTFEaWFsZWN0IOetie+8ieWcqCA2Lngg5Lit5qiZ6KiY54K66YGO5pmC77yMSGliZXJuYXRlIDYg5YK+5ZCR5L2/55So5Zau5LiAIERpYWxlY3Qg6aGe5Yil6JmV55CG5ZCM57O75YiX6LOH5paZ5bqr55qE5LiN5ZCM54mI5pysCgpnaXRodWIuY29tCgrjgILljYfntJrmmYLlpoLmnpwgaGliZXJuYXRlLmRpYWxlY3Qg6Kit5a6a5YC85bCN5oeJ55qE5pa56KiA6aGe5Yil5bey56e76IezIGNvbW11bml0eSDmqKHntYTvvIzmh4nmlrDlop7nm7jkvp3miJbmlLnnlKjmlrDniYjlhaflu7rnmoTlsI3mh4kgRGlhbGVjdOOAguWPpuWklu+8jOafkOS6m+i8g+iIiueahOizh+aWmeW6q+eJiOacrOWPr+iDveS4jeWGjeebuOWuue+8jOS+i+WmgiBIaWJlcm5hdGUgNiDopoHmsYIgTXlTUUwg6Iez5bCRIDguMOOAgU9yYWNsZSDoh7PlsJEgMTJjIOetie+8iOimluS4jeWQjOeZvOihjOeJiOaUv+etlu+8iQoKZ2l0aHViLmNvbQoKZ2l0aHViLmNvbQoK44CC5Zyo5Y2H57Sa5YmN6KuL5p+l6Zax5a6Y5pa55pSv5o+055+p6Zmj77yM56K65L+d5oKo55qE6LOH5paZ5bqr54mI5pys5Y+XIEhpYmVybmF0ZSA2IOaUr+aPtO+8jOW/heimgeaZguioiOWKg+izh+aWmeW6q+WNh+e0muOAggoK5YW25LuW55u45a655oCn6ICD6YeP77yaIOmZpOS6huS4iui/sOmHjem7nu+8jOmChOacieS4gOS6m+e0sOevgOmcgOimgeazqOaEj+OAguS+i+Wmgu+8jOWmguaenOaCqOacieiHquWumue+qeeahCBIaWJlcm5hdGUgVXNlclR5cGUvQ29tcG9zaXRlVXNlclR5cGUg5oiW5YW25LuW6aGe5Z6L5pig5bCE5a+m5L2c77yMSGliZXJuYXRlIDYg55qE6aGe5Z6L57O757Wx5aSn5bmF6Kq/5pW077yMQmFzaWNUeXBlIOiIh+mhnuWei+aPj+i/sOespiBBUEkg5bey5pu05pS577yM6YCZ5bCH5bCO6Ie06IiK5a+m5L2c54Sh5rOV55u05o6l5rK/55SoCgpkaXNjb3Vyc2UuaGliZXJuYXRlLm9yZwoK44CC6ZyA6KaB5L6d54WnIEhpYmVybmF0ZSA2IOaWsOeahCBKYXZhVHlwZeOAgUpkYmNUeXBlIOaetuani+S+huS/ruaUueiHquWumue+qemhnuWei+eahOWvpuS9nOaWueW8jwoKZGlzY291cnNlLmhpYmVybmF0ZS5vcmcKCuOAguWGjeiAhe+8jEhpYmVybmF0ZSA2IOenu+mZpOS6hiBKTVgg5ZKMIEpBQ0Mg5pW05ZCI77yM5aaC5p6c5oeJ55So6YCP6YGOIEpNWCDnm6PmjqcgSGliZXJuYXRlIOaIluS9v+eUqCBKQUNDIOasiumZkOS7i+mdou+8jOmAmemDqOWIhuS5n+mcgOmBt+enu+aIluabv+aPmwoKZG9jcy5qYm9zcy5vcmcKCuOAgue4veS5i++8jOWcqOWNh+e0muWJjeaHieips+e0sOmWseiugCBIaWJlcm5hdGUgNiDlrpjmlrnpgbfnp7vmjIfljZfvvIzliJflh7rmiYDmnInlvbHpn7/poIXnm67vvIzpgJDkuIDkv67mlLnnqIvlvI/norzoiIfphY3nva7vvIzku6Xnorrkv53ljYfntJrpgY7nqIvpoIbliKnjgIIKCuaVtOWQiOiIh+S+neiztOiuiuabtAoKSGliZXJuYXRlIOeahOWNh+e0muW+gOW+gOeJvea2ieWRqOmCiuahhuaetuiIh+Wll+S7tueahOebuOWuueaAp+iqv+aVtO+8jOWwpOWFtuaYr+iIhyBTcHJpbmfjgIHnlJ/mhYvns7sgSlBBIOWvpuePvuWPiuWFtuS7luesrOS4ieaWueaooee1hOeahOaVtOWQiOOAgiBTcHJpbmcgQm9vdC9TcHJpbmcg5qGG5p6277yaIFNwcmluZyBCb290IDMueCDplovlp4vlhaflu7rkvb/nlKggSGliZXJuYXRlIDYueCDkvZzngrrpoJDoqK0gSlBBIOaPkOS+m+iAhQoKZHpvbmUuY29tCgrjgILpgJnlkIzmmYLkvLTpmqggU3ByaW5nIOahhuaetuWNh+e0muiHsyA2LnjvvIjlhajpnaLovYnlkJEgSmFrYXJ0YSBFRSDkvp3os7TvvInku6Xlj4rmnIDkvY4gSmF2YSAxNyDnmoTopoHmsYIKCmR6b25lLmNvbQoK44CC5Zug5q2k77yM5b6eIFNwcmluZyBCb290IDLvvIhIaWJlcm5hdGUgNe+8ieWNh+e0muWIsCBCb290IDPvvIhIaWJlcm5hdGUgNu+8ieaZgu+8jOmZpOS6huS4iui/sCBIaWJlcm5hdGUg6Ieq6Lqr55qE6K6K5pu077yM6YKE6ZyA5rOo5oSPIFNwcmluZyDmj5DkvpvnmoQgSlBBIOaUr+aPtOWxpOOAguS+i+Wmgu+8jFNwcmluZyBEYXRhIEpQQSAzLngg5L6d5pOaIEpha2FydGEgUGVyc2lzdGVuY2Ug5Lul5Y+KIEhpYmVybmF0ZSA2IEFQSSDpgLLooYzkuoboqr/mlbTjgILlsI3plovnmbzogIXogIzoqIDvvIzlpKfpg6jliIYgU3ByaW5nIERhdGEgSlBBIOeahCBSZXBvc2l0b3J5IOS7i+mdouWPr+S7peS4jeiuiu+8jOS9huiLpeacieS9v+eUqOiHquWumue+qeeahCBIaWJlcm5hdGUg54m55a6a5Yqf6IO977yM5YmH6KaB56K65L+d55u45a6577yI5L6L5aaCIFNwcmluZyBEYXRhIOWFiOWJjeWFgeioseS9v+eUqCBAUXVlcnkg5rOo6Kej5pKw5a+rIEpQUUzvvIzmraTmmYJKUFFM6Kqe5rOV6ZyA6KaB56ym5ZCIIEhpYmVybmF0ZSA2IOeahOaWsOimj+WJh++8ieOAguaVtOmrlOS+huiqqu+8jOWNh+e0miBTcHJpbmcgQm9vdCDmmYLmh4nlkIzmraXljYfntJrnm7jpl5znmoQgU3ByaW5nIERhdGHjgIFTcHJpbmcgT1JNIOWll+S7tueJiOacrO+8jOS7peeNsuW+l+WwjSBIaWJlcm5hdGUgNiDnmoTnm7jlrrnmlK/mj7TjgILmraTlpJbvvIxTcHJpbmcgQm9vdCAzIOm7mOiqjeS+neiztCBKYWthcnRhIEFQSe+8iOWmgiBzZXJ2bGV0LCB2YWxpZGF0aW9uLCBKUEEg562J77yJ77yM5YuZ5b+F6KaB5bCH5Y6f5pys5Luj56K85Lit55qE5omA5pyJIEphdmEgRUUgamF2YXguKiDpoZ7mm7/mj5vngrrlsI3mh4nnmoQgSmFrYXJ0YSDpoZ7vvIzlkKbliYfmh4nnlKjlsIfnhKHms5XllZ/li5UKCmR6b25lLmNvbQoKZHpvbmUuY29tCgrjgIIgSlBBIOimj+evhOiIh+WvpuS9nO+8miBIaWJlcm5hdGUgNiDln7rmlrwgSlBBIDMuMCDopo/nr4TjgILlsI3plovnmbzogIXkvoboqqrvvIzpmaTkuoYgSmFrYXJ0YSDlpZfku7blkI3nqLHnmoTmlLnororlpJbvvIxKUEEgMy4wIOacrOi6q+ebuOWwjSBKUEEgMi4yIOaykuacieW8leWFpeegtOWjnuaAp+eahOWkp+aUueOAguS9huWboOeCuiBKUEEg6L2J56e75YiwIEpha2FydGEg5ZCN5LiL77yM5LiA5Lqb57Sw56+A5aaCIFBlcnNpc3RlbmNlIOWWruWFg+eahCBYTUwg5ZG95ZCN56m66ZaT5pu05paw54K6IGh0dHBzOi8vamFrYXJ0YS5lZS94bWwvbnMvcGVyc2lzdGVuY2XvvIxwZXJzaXN0ZW5jZS54bWwg5Lit55qEIHZlcnNpb24g5bGs5oCn5bCN5oeJIEpha2FydGEgUGVyc2lzdGVuY2UgMy4wIOetie+8jOmDvemcgOimgeWcqOWNh+e0muaZguabtOaWsOOAgkhpYmVybmF0ZSA2IOWwjSBKUEEgMyDnmoTmlK/mj7Tlt7Lnm7jnlbblrozmlbTvvIzoi6Xmh4nnlKjpgbXlvqrmqJnmupYgSlBBIOaOpeWPo+mWi+eZvO+8jOeQhuirluS4iumZpOS6huWll+S7tuWQjeeoseWklueEoemcgOWkquWkmuaUueWLleOAguS9huaYr+WAvOW+l+azqOaEj+eahOaYr++8jOmpl+itieahhuaetu+8iEJlYW4gVmFsaWRhdGlvbu+8ieS5n+W+niBqYXZheC52YWxpZGF0aW9uIOmBt+enu+WIsCBqYWthcnRhLnZhbGlkYXRpb27vvIzku6Xlj4ogSlRBIOS6pOaYk+euoeeQhuW+niBqYXZheC50cmFuc2FjdGlvbiDovYnngrogamFrYXJ0YS50cmFuc2FjdGlvbiDnrYnjgILlpoLmnpzlsIjmoYjkvb/nlKjpgJnkupvopo/nr4TvvIzkuZ/opoHkuIDkvbXljYfntJrlsI3mh4nnmoQgSmFrYXJ0YSDniYjmnKzvvIzku6XlhY3nlKLnlJ/poZ7liKXmib7kuI3liLDnmoTpjK/oqqTjgIIg56ys5LiJ5pa55qih57WE6IiH5pO05YWF77yaIOWmguaenOWwiOahiOS9v+eUqCBIaWJlcm5hdGUg55qE5pO05YWF5qih57WE77yI5aaCIEhpYmVybmF0ZSBFbnZlcnMg5YGa5a+p6KiI44CBSGliZXJuYXRlIFNlYXJjaCDlgZrlhajmlofmqqLntKLnrYnvvInvvIzpnIDopoHnorrkv53kvb/nlKjlsI3mh4nmlK/mj7QgSGliZXJuYXRlIDYg55qE54mI5pys44CC5aSa5pW4IEhpYmVybmF0ZSDpmYTlsazlsIjmoYjlnKggSGliZXJuYXRlIDYg55m85biD5b6M5Lmf5o6o5Ye65LqG55u45a655pu05paw54mI5pys44CC5L6L5aaC77yMRW52ZXJzIOWcqCBIaWJlcm5hdGUgNiDkuK3ku43pmqjmoLjlv4PnmbzooYzvvIzkvYYgQVBJIOWPr+iDveeVpeacieiqv+aVtO+8m0hpYmVybmF0ZSBTZWFyY2gg5YmH5pyJ55u45a65IEpha2FydGEg55qE5paw54mI44CC6aGe5Ly85Zyw77yM5aaC5p6c5pyJ5L2/55SoIFF1ZXJ5ZHNsIOmAmemhnuesrOS4ieaWueafpeipokRTTOahhuaetu+8jOS5n+mcgOWNh+e0muiHs+aUr+aPtCBIaWJlcm5hdGUgNiAvIEpQQSAzIOeahOeJiOacrO+8jOWboOeCuuWug+WAkeWPr+iDvea2ieWPiuW6leWxpOafpeipouiqnuazleaIlumhnuWei+eahOebuOWuueaAp+OAguWcqOesrOS6jOe0muW/q+WPluaWuemdou+8jOW4uOeUqOeahCBFaGNhY2hl44CBSW5maW5pc3BhbiDnrYnmh4noiIcgSGliZXJuYXRlIDYg55u45a6577yM5L2G6ZyA5Y2H57Sa55u45L6d54mI5pys5Lul56K65L+d6IiH5paw6aGe5Z6L57O757Wx5Y2U6Kq/6YGL5L2c44CC5q2k5aSW77yM5aaC5YmN5omA6L+w77yM6YOo5YiG6LOH5paZ5bqr5pa56KiA6KKr5ouG5YiG5YiwIGhpYmVybmF0ZS1jb21tdW5pdHktZGlhbGVjdHMg5qih57WE77yM5aaC5p6c5oeJ55So5L2/55So55qE6LOH5paZ5bqr5pa56KiA5LiN5YaN6ZqoIEhpYmVybmF0ZSBDb3JlIOaPkOS+m++8jOiomOW+l+WcqOW7uue9ruS4reWKoOWFpeebuOaHieS+neiztO+8jOWQpuWJhyBIaWJlcm5hdGUg5Y+v6IO954Sh5rOV6L6o6K2Y5pa56KiA6aGe5YilCgpnaXRodWIuY29tCgrjgIIg5p625qeL6IiH6Kit6KiI5pS56YCy77yaIEhpYmVybmF0ZSA2IOWcqOaetuani+WxpOmdouWBmuS6huS4gOS6m+iuiuWLle+8jOWPr+iDveW9semfv+iIh+iHquWumue+qeaTtOWFheeahOaVtOWQiO+8mgoK5aSa6LOH5paZ5bqr6IiH5pa56KiA57Wx5LiA77yaIOWmguWJjeaJgOi/sO+8jEhpYmVybmF0ZSA2IOWwh+ioseWkmuizh+aWmeW6q+eahOS4jeWQjOeJiOacrOaUr+aPtOaVtOWQiOWFpeWWruS4gCBEaWFsZWN0IOmhnuWIpeS4re+8jOeyvuewoeS6huaWueiogOeahOe5vOaJv+mrlOezuwoKZ2l0aHViLmNvbQoK44CC5bCN5oeJ5Zyw77yM5aaC5p6c5oeJ55So5oiW56ys5LiJ5pa55bqr5pu+55u05o6l5Y+D6ICD5p+Q54m55a6a54mI5pys55qEIERpYWxlY3TvvIjkvovlpoIgT3JhY2xlMTBnRGlhbGVjdO+8ie+8jOWPr+iDvemcgOimgeaUueeUqOaWsOWwjeaHieeahCBEaWFsZWN0IOWQjeeose+8iOWmgiBPcmFjbGVEaWFsZWN077yJ5Lim5ZyoIEhpYmVybmF0ZSDoqK3lrprkuK3mjIflrprmraPnorrnmoTos4fmlpnluqvniYjmnKzlsazmgKfjgILpgJnnqK7oqr/mlbTmj5Dpq5jkuoblpJros4fmlpnluqvmlK/mj7TnmoTkuIDoh7TmgKfvvIzkvYbpnIDopoHms6jmhI/nm7jlrrnoqK3lrprnmoTmm7TmlrDjgIIKCuaJueasoeiZleeQhuiIh+W7tumBsui8ieWFpe+8miBIaWJlcm5hdGUg5LiA55u05pSv5o+0IEpEQkMg5om55qyh5pu05paw5Lul5Y+K5om55qyh5oqT5Y+WKGJhdGNoaW5nKeS7peaPkOWNh+aViOiDveOAgkhpYmVybmF0ZSA2IOWcqOmAmeaWuemdouS4u+imgeaYr+WFp+mDqOWEquWMlu+8jOWwjemWi+eZvOiAheS7i+mdoueahOW9semfv+S4jeWkp+OAguaCqOS7jeWPr+mAj+mBjuioreWumuWPg+aVuO+8iOWmgiBoaWJlcm5hdGUuamRiYy5iYXRjaF9zaXpl77yJ5o6n5Yi25om55qyh5pON5L2c5aSn5bCP44CC6ZyA6KaB5rOo5oSP55qE5piv77yM5aaC5p6c6YGO5b6A5pyJ5L6d6LO0IEhpYmVybmF0ZSA1IOeahOeJueWumuaJueasoeihjOeCuu+8iOS+i+WmguaJueasoeaKk+WPluiqnuaEj++8ie+8jOWNh+e0muW+jOaHiempl+itiSBIaWJlcm5hdGUgNiDnmoTpoJDoqK3ooYzngrrmmK/lkKbkuIDoh7TjgILkuIDkupvnlKjmiLblm57ppYvpoa/npLogSGliZXJuYXRlIDYg5bCN5bu26YGy6LyJ5YWl5aSa5bCN5aSa6ZuG5ZCI55qE5om55qyh5oqT5Y+W6aCQ6Kit5YC856iN5pyJ5LiN5ZCM77yM6ZyA6KaB5Zyo5Y2H57Sa5b6M6Kq/5pW06Kit5a6a5Lul56ym5ZCI6aCQ5pyfCgpkem9uZS5jb20KCuOAguW7uuitsOaqouafpeaHieeUqOeahCBoaWJlcm5hdGUucHJvcGVydGllcyDmiJYgU3ByaW5nIEJvb3Qg6Kit5a6a5Lit6IiH5om55qyh44CB5oqT5Y+W5pyJ6Zec55qE6YG46aCF77yM5ZyoIEhpYmVybmF0ZSA2IOeSsOWig+S4i+aYr+WQpumcgOimgeabtOaUueOAggoKU2NoZW1hIOeuoeeQhuiIh+mhnuWei+aUr+aPtO+8miDpmaTkuobluo/liJflkb3lkI3nrZbnlaXnmoTorormm7TvvIxIaWJlcm5hdGUgNiDmk7TlhYXkuoblsI3ljp/nlJ/os4fmlpnluqvpoZ7lnovnmoTmlK/mj7TjgILoqLHlpJrku6XlvoDpnIDopoHoh6rlrprnvqnpoZ7lnovmiY3og73omZXnkIbnmoQgSmF2YSDlnovliKXvvIxIaWJlcm5hdGUgNiDnj77lnKjplovnrrHljbPnlKjlnLDmlK/mj7TkuKblsI3mh4nliLDpgannlbbnmoTos4fmlpnluqvlnovliKXjgILkvovlpoLpm4blkIjmiJbpmaPliJfpoZ7lnovlj6/ku6XlsI3mh4nngrros4fmlpnluqvnmoTpmaPliJflnovliKXjgIFlbnVtIOWPr+S7peWwjeaHieizh+aWmeW6q+WOn+eUnyBlbnVtIOWei+WIpeOAgVpvbmVkRGF0ZVRpbWUvT2Zmc2V0RGF0ZVRpbWUg562J5pyD5pig5bCE54K65bi25pmC5Y2A55qE5pmC6ZaT5oiz562JCgpnaXRodWIuY29tCgpnaXRodWIuY29tCgrjgILlpoLmnpzlhYjliY3lsIjmoYjngrrkuobpgJnkupvlnovliKXnt6jlr6vkuoboh6rlrprnvqkgVXNlclR5cGXvvIzljYfntJrlvozlj6/og73kuI3lho3pnIDopoHvvIzmiJbpnIDopoHoqr/mlbTku6XliKnnlKjmoYbmnrbmj5DkvpvnmoTlhaflu7rmlK/mj7TjgILlkIzmmYLvvIxIaWJlcm5hdGUgNiDlvJXlhaXkuoblsI0gSlNPTiDos4fmlpnnmoTmm7Tlpb3mlK/mj7TvvIzlj6/ku6Xmm7TnsKHkvr/lnLDlsIcgSlNPTiDmlofmnKzmmKDlsITliLDlsazmgKfvvIjlnKjnibnlrprmlK/mj7QgSlNPTiDnmoTos4fmlpnluqvkuIrvvInigJTigJTpgJnkupvmlLnpgLLmhI/lkbPokZfmlbTlkIjnrKzkuInmlrkgSlNPTiDomZXnkIbluqvvvIjmiJbpgY7ljrvnmoToh6rlrprlr6bnj77vvInmmYLopoHoqZXkvLDmmK/lkKbnubznuozpnIDopoHmipHmiJbmlLnnlKggSGliZXJuYXRlIOWOn+eUn+WKn+iDveOAggoK57i96ICM6KiA5LmL77yMSGliZXJuYXRlIE9STSA2IOWcqOS/neeVmeiIh+WKoOW8t+ePvuacieWKn+iDveeahOWQjOaZgu+8jOWBmuWHuuS6humHjeWkp+iqv+aVtOWSjOaUuemAsuOAguWNh+e0muaZgumcgOimgemXnOazqOiqnuazleWSjEFQSeeahOS4jeebuOWuueiuiuWMlu+8jOiqv+aVtOWwiOahiOmFjee9ruiIh+ebuOS+neWll+S7tueJiOacrO+8jOS7peWFheWIhuWIqeeUqCBIaWJlcm5hdGUgNiDnmoTmlrDlip/og73vvIjlpoLmm7TkvbPnmoTmlYjog73oiIfnj77ku6PnibnmgKfvvInlkIzmmYLkv53mjIHns7vntbHnqanlrpoKCmR6b25lLmNvbQoK44CC6YCP6YGO5LiK6L+w5ZCE5pa56Z2i55qE5q+U6LyD6IiH5oyH5byV77yM5biM5pyb6IO95Y2U5Yqp5oKo6aCG5Yip5b6eIEhpYmVybmF0ZSA1IOmBjua4oeWIsCBIaWJlcm5hdGUgNuOAguavj+WAi+aHieeUqOeahOaDheazgeWPr+iDveS4jeeboeebuOWQjO+8jOW7uuitsOWcqOWvpumam+WNh+e0muWJjeips+mWseWumOaWueaWh+S7tuiIh+ekvue+pOe2k+mpl++8jOS7peaTrOWumuacgOmBqeWQiOeahOWNh+e0mui3r+W+keOAguacgOW+jO+8jOWujOaVtOeahOiuiuabtOa4heWWruWSjOmBt+enu+e0sOevgOWPr+WPg+iAg+WumOaWueaPkOS+m+eahFtIaWJlcm5hdGUgNiDpgbfnp7vmjIfljZddCgppbmZvcS5jb20KCuWSjOebuOmXnOizh+a6kO+8jOS7peeiuuS/neaykuaciemBuua8j+S7u+S9lemHjeimgeatpempn+OAggo=