From 185dd955d2610b22a2174810d01034fb3e9eed57 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Thu, 11 Jun 2026 04:01:37 +0000 Subject: [PATCH] chore: auto-render CV --- README.md | 50 +- index.html | 45 +- miti99.pdf | 2225 +++++++++++++++++++++++++++++----------------------- miti99.typ | 65 +- 4 files changed, 1352 insertions(+), 1033 deletions(-) diff --git a/README.md b/README.md index f3fae1a..30f03b3 100644 --- a/README.md +++ b/README.md @@ -24,52 +24,64 @@ Sept 2017 – June 2023 July 2020 – present -Progressed from Game Programming Fresher to Senior Software Engineer. Focused on scalable game server architecture in Java (Netty, Vert.x), with cross-functional contributions to client-side logic in Cocos2d-x and Godot. +Progressed from Game Programming Fresher to Senior Software Engineer. Builds and maintains Java game backends and production tooling with cross-functional work across server, client, QA, and release workflows. -- [Chaos Age 2](https://play.google.com/store/apps/details?id=vn.zps.tl2): Sole server developer; architected backend from scratch for a global strategy game, 300+ CCU; assisted client team with networking and game logic +- [Chaos Age 2](https://play.google.com/store/apps/details?id=vn.zps.tl2): Sole server developer for a global strategy game; built Java 21 backend modules with Netty/Vert.x, Couchbase, Redis, Kafka, Gradle, and GitLab CI/CD -- [Show](https://play.google.com/store/apps/details?id=zps.games.show) & [Burkozel](https://play.google.com/store/apps/details?id=zps.games.burkozel): Full-stack contributor on two real-time card games for Myanmar and Russian-speaking markets; delivered server-side logic and client features +- Improved delivery quality with JUnit 5/Mockito tests, load-test clients, Docker-based local dependencies, and multi-environment build/deploy pipelines -- [Bida3D](https://play.google.com/store/apps/details?id=zps.games.bida3d.vn): Implemented matchmaking (server) and cue direction logic (client) for a global 8-ball pool game; applied physics and geometry for accurate ball trajectory simulation +- Built internal AI-assisted Claude Code skills/plugin marketplace for ZingPlay game-server development, including typed packet-handler scaffolding and framework guidance -- [Sky Garden](https://play.google.com/store/apps/details?id=vn.kvtm.js): Maintained server stability for a live farm game (~5,000 CCU); resolved production issues and developed new event features +- [Sky Garden](https://play.google.com/store/apps/details?id=vn.kvtm.js): Maintained production Java server features for a live farm game; handled event logic, web payment fixes, Redis/runtime diagnostics, and release support + +- [Show](https://play.google.com/store/apps/details?id=zps.games.show), [Burkozel](https://play.google.com/store/apps/details?id=zps.games.burkozel), and [Bida3D](https://play.google.com/store/apps/details?id=zps.games.bida3d.vn): Delivered server-side gameplay, matchmaking, and client logic across real-time card and pool games # Projects -## **[VN GeoGuessr](https://github.com/tiennm99/vngeoguessr)** +## **[MiTiSrv](https://github.com/tiennm99/mitisrv)** -Aug 2025 +2018 – 2025 -Location-guessing game for Vietnam using Leaflet.js, Mapillary, and OpenStreetMap with street-level panoramic imagery and map-based scoring. +Lightweight Java game server framework using Netty; personal framework for experimenting with reusable multiplayer server architecture. -## **[Store Scraper Bot](https://github.com/tiennm99/store-scraper-bot)** +## **[Test Sharding](https://github.com/tiennm99/test-sharding)** -Nov 2025 – Dec 2025 +2025 -Telegram bot that automates scraping and reporting of app metadata from mobile app stores. +Java server experiment for sharding with Couchbase replication, Redis replication, and Kafka. -## **[Pet Projects & Open Source](https://github.com/tiennm99)** +## **[Store Scraper Bot](https://github.com/tiennm99/store-scraper-bot) / [Java original](https://github.com/tiennm99/store-scraper-bot-java)** -2018 – present +Nov 2025 – present -Various personal projects spanning game servers, bots, and web tools. Occasionally contribute to open-source projects. Full portfolio on GitHub. +Telegram bot for tracking Apple App Store and Google Play metadata updates; original Java version later ported to JavaScript. + + + +## **[Miti99bot](https://github.com/tiennm99/miti99bot)** + +2026 + +Go Telegram bot framework deployed serverlessly on AWS Lambda/SAM with Firestore and Gemini integration. # Skills -**Languages:** Java, Go, JavaScript, Shell +**Languages:** Java, Go, JavaScript/TypeScript, Shell -**Frameworks & Libraries:** Netty, Vert.x, Spring Boot, Cocos2d-x, Godot +**Frameworks & Libraries:** Netty, Vert.x, Spring Boot, JUnit 5, Mockito, Cocos2d-x, Godot -**Databases:** Couchbase, Redis, MySQL, ClickHouse +**Databases:** Couchbase, Redis, MySQL, Kafka, ClickHouse -**Infrastructure & DevOps:** Docker, CI/CD (GitHub Actions/GitLab CI), Git, Linux, OCI +**Infrastructure & DevOps:** Docker, GitLab CI, GitHub Actions, Linux, AWS Lambda/SAM, Cloudflare Workers -**Architecture:** Game server architecture, real-time multiplayer systems, event-driven design +**Architecture:** Object-oriented design, game server architecture, real-time multiplayer systems, event-driven design, clean reusable code + +**Delivery Practices:** Unit testing, code review, production debugging, CI/CD, AI-assisted development workflows **Languages (Spoken):** Vietnamese (Native), English (TOEIC 600+) diff --git a/index.html b/index.html index 2c2e7e6..3458f57 100644 --- a/index.html +++ b/index.html @@ -63,37 +63,44 @@

Experience

Senior Software Engineer, ZingPlay Game Studios, VNG Corp. -- HCMC, Vietnam

July 2020 – present

-

Progressed from Game Programming Fresher to Senior Software Engineer. Focused on scalable game server architecture in Java (Netty, Vert.x), with cross-functional contributions to client-side logic in Cocos2d-x and Godot.

+

Progressed from Game Programming Fresher to Senior Software Engineer. Builds and maintains Java game backends and production tooling with cross-functional work across server, client, QA, and release workflows.

Projects

-

VN GeoGuessr

-

Aug 2025

-

Location-guessing game for Vietnam using Leaflet.js, Mapillary, and OpenStreetMap with street-level panoramic imagery and map-based scoring.

-

Store Scraper Bot

-

Nov 2025 – Dec 2025

-

Telegram bot that automates scraping and reporting of app metadata from mobile app stores.

-

Pet Projects & Open Source

-

2018 – present

-

Various personal projects spanning game servers, bots, and web tools. Occasionally contribute to open-source projects. Full portfolio on GitHub.

+

MiTiSrv

+

2018 – 2025

+

Lightweight Java game server framework using Netty; personal framework for experimenting with reusable multiplayer server architecture.

+

Test Sharding

+

2025

+

Java server experiment for sharding with Couchbase replication, Redis replication, and Kafka.

+

Store Scraper Bot / Java original

+

Nov 2025 – present

+

Telegram bot for tracking Apple App Store and Google Play metadata updates; original Java version later ported to JavaScript.

+

Miti99bot

+

2026

+

Go Telegram bot framework deployed serverlessly on AWS Lambda/SAM with Firestore and Gemini integration.

Skills

-

Languages: Java, Go, JavaScript, Shell

-

Frameworks & Libraries: Netty, Vert.x, Spring Boot, Cocos2d-x, Godot

-

Databases: Couchbase, Redis, MySQL, ClickHouse

-

Infrastructure & DevOps: Docker, CI/CD (GitHub Actions/GitLab CI), Git, Linux, OCI

-

Architecture: Game server architecture, real-time multiplayer systems, event-driven design

+

Languages: Java, Go, JavaScript/TypeScript, Shell

+

Frameworks & Libraries: Netty, Vert.x, Spring Boot, JUnit 5, Mockito, Cocos2d-x, Godot

+

Databases: Couchbase, Redis, MySQL, Kafka, ClickHouse

+

Infrastructure & DevOps: Docker, GitLab CI, GitHub Actions, Linux, AWS Lambda/SAM, Cloudflare Workers

+

Architecture: Object-oriented design, game server architecture, real-time multiplayer systems, event-driven design, clean reusable code

+

Delivery Practices: Unit testing, code review, production debugging, CI/CD, AI-assisted development workflows

Languages (Spoken): Vietnamese (Native), English (TOEIC 600+)

diff --git a/miti99.pdf b/miti99.pdf index 305fc95..e1b1e64 100644 --- a/miti99.pdf +++ b/miti99.pdf @@ -4,8 +4,8 @@ 1 0 obj << /Type /Pages - /Count 1 - /Kids [163 0 R] + /Count 2 + /Kids [185 0 R 187 0 R] >> endobj @@ -25,7 +25,7 @@ endobj /Last 7 0 R /Count -4 /Title (Tien Nguyen Minh) - /Dest 147 0 R + /Dest 167 0 R >> endobj @@ -34,7 +34,7 @@ endobj /Parent 3 0 R /Next 5 0 R /Title (Education) - /Dest 143 0 R + /Dest 163 0 R >> endobj @@ -44,7 +44,7 @@ endobj /Next 6 0 R /Prev 4 0 R /Title (Experience) - /Dest 144 0 R + /Dest 164 0 R >> endobj @@ -54,7 +54,7 @@ endobj /Next 7 0 R /Prev 5 0 R /Title (Projects) - /Dest 145 0 R + /Dest 165 0 R >> endobj @@ -63,7 +63,7 @@ endobj /Parent 3 0 R /Prev 6 0 R /Title (Skills) - /Dest 146 0 R + /Dest 166 0 R >> endobj @@ -77,154 +77,148 @@ endobj /Strong /Span /Em /Span >> - /K [10 0 R] + /K [11 0 R] /ParentTree << - /Nums [0 116 0 R 1 115 0 R 2 114 0 R 3 113 0 R 4 112 0 R 5 111 0 R 6 110 0 R 7 78 0 R 8 72 0 R 9 70 0 R 10 64 0 R 11 58 0 R 12 49 0 R 13 40 0 R 14 31 0 R 15 9 0 R] + /Nums [0 136 0 R 1 135 0 R 2 134 0 R 3 133 0 R 4 132 0 R 5 131 0 R 6 130 0 R 7 98 0 R 8 84 0 R 9 78 0 R 10 76 0 R 11 74 0 R 12 65 0 R 13 56 0 R 14 47 0 R 15 43 0 R 16 34 0 R 17 9 0 R 18 10 0 R] >> - /ParentTreeNextKey 16 + /ParentTreeNextKey 19 >> endobj 9 0 obj -[122 0 R 121 0 R 119 0 R 117 0 R 109 0 R 109 0 R 116 0 R 109 0 R 115 0 R 109 0 R 114 0 R 113 0 R 109 0 R 112 0 R 109 0 R 111 0 R 110 0 R 106 0 R 104 0 R 103 0 R 103 0 R 101 0 R 98 0 R 97 0 R 94 0 R 93 0 R 93 0 R 93 0 R 89 0 R 87 0 R 86 0 R 84 0 R 81 0 R 81 0 R 80 0 R 79 0 R 77 0 R 77 0 R 74 0 R 73 0 R 69 0 R 71 0 R 69 0 R 69 0 R 66 0 R 65 0 R 63 0 R 63 0 R 60 0 R 59 0 R 57 0 R 57 0 R 53 0 R 51 0 R 46 0 R 43 0 R 43 0 R 42 0 R 37 0 R 34 0 R 33 0 R 28 0 R 25 0 R 25 0 R 24 0 R 22 0 R 21 0 R 20 0 R 19 0 R 18 0 R 17 0 R 16 0 R 15 0 R 14 0 R 13 0 R 12 0 R 11 0 R] +[142 0 R 141 0 R 139 0 R 137 0 R 129 0 R 129 0 R 136 0 R 129 0 R 135 0 R 129 0 R 134 0 R 133 0 R 129 0 R 132 0 R 129 0 R 131 0 R 130 0 R 126 0 R 124 0 R 123 0 R 123 0 R 121 0 R 118 0 R 117 0 R 114 0 R 113 0 R 113 0 R 113 0 R 109 0 R 107 0 R 106 0 R 104 0 R 101 0 R 101 0 R 100 0 R 99 0 R 97 0 R 97 0 R 94 0 R 93 0 R 93 0 R 90 0 R 89 0 R 89 0 R 86 0 R 85 0 R 83 0 R 83 0 R 80 0 R 79 0 R 73 0 R 77 0 R 73 0 R 75 0 R 73 0 R 73 0 R 69 0 R 67 0 R 62 0 R 59 0 R 59 0 R 58 0 R 53 0 R 50 0 R 49 0 R 46 0 R 45 0 R 40 0 R 37 0 R 37 0 R 36 0 R 31 0 R 28 0 R] endobj 10 0 obj -<< - /Type /StructElem - /S /Document - /P 8 0 R - /K [122 0 R 107 0 R 105 0 R 99 0 R 90 0 R 88 0 R 82 0 R 81 0 R 54 0 R 52 0 R 44 0 R 43 0 R 35 0 R 34 0 R 26 0 R 25 0 R 23 0 R 21 0 R 19 0 R 17 0 R 15 0 R 13 0 R 11 0 R] ->> +[27 0 R 25 0 R 24 0 R 23 0 R 22 0 R 21 0 R 20 0 R 19 0 R 18 0 R 17 0 R 16 0 R 16 0 R 15 0 R 14 0 R 13 0 R 12 0 R] endobj 11 0 obj << /Type /StructElem - /S /P - /P 10 0 R - /K [12 0 R 76] - /Pg 163 0 R + /S /Document + /P 8 0 R + /K [142 0 R 127 0 R 125 0 R 119 0 R 110 0 R 108 0 R 102 0 R 101 0 R 70 0 R 68 0 R 60 0 R 59 0 R 51 0 R 50 0 R 38 0 R 37 0 R 29 0 R 28 0 R 26 0 R 24 0 R 22 0 R 20 0 R 18 0 R 16 0 R 14 0 R 12 0 R] >> endobj 12 0 obj << /Type /StructElem - /S /Strong + /S /P /P 11 0 R - /K [75] - /Pg 163 0 R + /K [13 0 R 15] + /Pg 187 0 R >> endobj 13 0 obj << /Type /StructElem - /S /P - /P 10 0 R - /K [14 0 R 74] - /Pg 163 0 R + /S /Strong + /P 12 0 R + /K [14] + /Pg 187 0 R >> endobj 14 0 obj << /Type /StructElem - /S /Strong - /P 13 0 R - /K [73] - /Pg 163 0 R + /S /P + /P 11 0 R + /K [15 0 R 13] + /Pg 187 0 R >> endobj 15 0 obj << /Type /StructElem - /S /P - /P 10 0 R - /K [16 0 R 72] - /Pg 163 0 R + /S /Strong + /P 14 0 R + /K [12] + /Pg 187 0 R >> endobj 16 0 obj << /Type /StructElem - /S /Strong - /P 15 0 R - /K [71] - /Pg 163 0 R + /S /P + /P 11 0 R + /K [17 0 R 10 11] + /Pg 187 0 R >> endobj 17 0 obj << /Type /StructElem - /S /P - /P 10 0 R - /K [18 0 R 70] - /Pg 163 0 R + /S /Strong + /P 16 0 R + /K [9] + /Pg 187 0 R >> endobj 18 0 obj << /Type /StructElem - /S /Strong - /P 17 0 R - /K [69] - /Pg 163 0 R + /S /P + /P 11 0 R + /K [19 0 R 8] + /Pg 187 0 R >> endobj 19 0 obj << /Type /StructElem - /S /P - /P 10 0 R - /K [20 0 R 68] - /Pg 163 0 R + /S /Strong + /P 18 0 R + /K [7] + /Pg 187 0 R >> endobj 20 0 obj << /Type /StructElem - /S /Strong - /P 19 0 R - /K [67] - /Pg 163 0 R + /S /P + /P 11 0 R + /K [21 0 R 6] + /Pg 187 0 R >> endobj 21 0 obj << /Type /StructElem - /S /P - /P 10 0 R - /K [22 0 R 66] - /Pg 163 0 R + /S /Strong + /P 20 0 R + /K [5] + /Pg 187 0 R >> endobj 22 0 obj << /Type /StructElem - /S /Strong - /P 21 0 R - /K [65] - /Pg 163 0 R + /S /P + /P 11 0 R + /K [23 0 R 4] + /Pg 187 0 R >> endobj 23 0 obj << /Type /StructElem - /S /H2 - /P 10 0 R - /T (Skills) - /K [24 0 R] + /S /Strong + /P 22 0 R + /K [3] + /Pg 187 0 R >> endobj @@ -232,51 +226,53 @@ endobj << /Type /StructElem /S /P - /P 23 0 R - /K [64] - /Pg 163 0 R + /P 11 0 R + /K [25 0 R 2] + /Pg 187 0 R >> endobj 25 0 obj << /Type /StructElem - /S /Span - /P 10 0 R - /A [<< - /O /Layout - /Placement /Block - >>] - /K [62 63] - /Pg 163 0 R + /S /Strong + /P 24 0 R + /K [1] + /Pg 187 0 R >> endobj 26 0 obj << /Type /StructElem - /S /Div - /P 10 0 R - /K [29 0 R 27 0 R] + /S /H2 + /P 11 0 R + /T (Skills) + /K [27 0 R] >> endobj 27 0 obj << /Type /StructElem - /S /Div + /S /P /P 26 0 R - /K [28 0 R] + /K [0] + /Pg 187 0 R >> endobj 28 0 obj << /Type /StructElem - /S /P - /P 27 0 R - /K [61] - /Pg 163 0 R + /S /Span + /P 11 0 R + /A [<< + /O /Layout + /Placement /Block + >>] + /K [72] + /Pg 185 0 R >> endobj @@ -284,15 +280,15 @@ endobj << /Type /StructElem /S /Div - /P 26 0 R - /K [30 0 R] + /P 11 0 R + /K [32 0 R 30 0 R] >> endobj 30 0 obj << /Type /StructElem - /S /P + /S /Div /P 29 0 R /K [31 0 R] >> @@ -301,21 +297,18 @@ endobj 31 0 obj << /Type /StructElem - /S /Link + /S /P /P 30 0 R - /K [<< - /Type /OBJR - /Pg 163 0 R - /Obj 162 0 R - >> 32 0 R] + /K [71] + /Pg 185 0 R >> endobj 32 0 obj << /Type /StructElem - /S /Strong - /P 31 0 R + /S /Div + /P 29 0 R /K [33 0 R] >> endobj @@ -323,56 +316,59 @@ endobj 33 0 obj << /Type /StructElem - /S /Span + /S /P /P 32 0 R - /A [<< - /O /Layout - /TextDecorationType /Underline - >>] - /K [60] - /Pg 163 0 R + /K [34 0 R] >> endobj 34 0 obj << /Type /StructElem - /S /Span - /P 10 0 R - /A [<< - /O /Layout - /Placement /Block - >>] - /K [59] - /Pg 163 0 R + /S /Link + /P 33 0 R + /K [<< + /Type /OBJR + /Pg 185 0 R + /Obj 184 0 R + >> 35 0 R] >> endobj 35 0 obj << /Type /StructElem - /S /Div - /P 10 0 R - /K [38 0 R 36 0 R] + /S /Strong + /P 34 0 R + /K [36 0 R] >> endobj 36 0 obj << /Type /StructElem - /S /Div + /S /Span /P 35 0 R - /K [37 0 R] + /A [<< + /O /Layout + /TextDecorationType /Underline + >>] + /K [70] + /Pg 185 0 R >> endobj 37 0 obj << /Type /StructElem - /S /P - /P 36 0 R - /K [58] - /Pg 163 0 R + /S /Span + /P 11 0 R + /A [<< + /O /Layout + /Placement /Block + >>] + /K [68 69] + /Pg 185 0 R >> endobj @@ -380,15 +376,15 @@ endobj << /Type /StructElem /S /Div - /P 35 0 R - /K [39 0 R] + /P 11 0 R + /K [41 0 R 39 0 R] >> endobj 39 0 obj << /Type /StructElem - /S /P + /S /Div /P 38 0 R /K [40 0 R] >> @@ -397,21 +393,18 @@ endobj 40 0 obj << /Type /StructElem - /S /Link + /S /P /P 39 0 R - /K [<< - /Type /OBJR - /Pg 163 0 R - /Obj 161 0 R - >> 41 0 R] + /K [67] + /Pg 185 0 R >> endobj 41 0 obj << /Type /StructElem - /S /Strong - /P 40 0 R + /S /Div + /P 38 0 R /K [42 0 R] >> endobj @@ -419,72 +412,75 @@ endobj 42 0 obj << /Type /StructElem - /S /Span + /S /P /P 41 0 R - /A [<< - /O /Layout - /TextDecorationType /Underline - >>] - /K [57] - /Pg 163 0 R + /K [47 0 R 46 0 R 43 0 R] >> endobj 43 0 obj << /Type /StructElem - /S /Span - /P 10 0 R - /A [<< - /O /Layout - /Placement /Block - >>] - /K [55 56] - /Pg 163 0 R + /S /Link + /P 42 0 R + /K [<< + /Type /OBJR + /Pg 185 0 R + /Obj 183 0 R + >> 44 0 R] >> endobj 44 0 obj << /Type /StructElem - /S /Div - /P 10 0 R - /K [47 0 R 45 0 R] + /S /Strong + /P 43 0 R + /K [45 0 R] >> endobj 45 0 obj << /Type /StructElem - /S /Div + /S /Span /P 44 0 R - /K [46 0 R] + /A [<< + /O /Layout + /TextDecorationType /Underline + >>] + /K [66] + /Pg 185 0 R >> endobj 46 0 obj << /Type /StructElem - /S /P - /P 45 0 R - /K [54] - /Pg 163 0 R + /S /Strong + /P 42 0 R + /K [65] + /Pg 185 0 R >> endobj 47 0 obj << /Type /StructElem - /S /Div - /P 44 0 R - /K [48 0 R] + /S /Link + /P 42 0 R + /K [<< + /Type /OBJR + /Pg 185 0 R + /Obj 182 0 R + >> 48 0 R] >> endobj 48 0 obj << /Type /StructElem - /S /P + /S /Strong /P 47 0 R /K [49 0 R] >> @@ -493,45 +489,45 @@ endobj 49 0 obj << /Type /StructElem - /S /Link + /S /Span /P 48 0 R - /K [<< - /Type /OBJR - /Pg 163 0 R - /Obj 160 0 R - >> 50 0 R] + /A [<< + /O /Layout + /TextDecorationType /Underline + >>] + /K [64] + /Pg 185 0 R >> endobj 50 0 obj << /Type /StructElem - /S /Strong - /P 49 0 R - /K [51 0 R] + /S /Span + /P 11 0 R + /A [<< + /O /Layout + /Placement /Block + >>] + /K [63] + /Pg 185 0 R >> endobj 51 0 obj << /Type /StructElem - /S /Span - /P 50 0 R - /A [<< - /O /Layout - /TextDecorationType /Underline - >>] - /K [53] - /Pg 163 0 R + /S /Div + /P 11 0 R + /K [54 0 R 52 0 R] >> endobj 52 0 obj << /Type /StructElem - /S /H2 - /P 10 0 R - /T (Projects) + /S /Div + /P 51 0 R /K [53 0 R] >> endobj @@ -541,62 +537,62 @@ endobj /Type /StructElem /S /P /P 52 0 R - /K [52] - /Pg 163 0 R + /K [62] + /Pg 185 0 R >> endobj 54 0 obj << /Type /StructElem - /S /L - /P 10 0 R - /A [<< - /O /List - /ListNumbering /Circle - >>] - /K [75 0 R 67 0 R 61 0 R 55 0 R] + /S /Div + /P 51 0 R + /K [55 0 R] >> endobj 55 0 obj << /Type /StructElem - /S /LI + /S /P /P 54 0 R - /K [60 0 R 56 0 R] + /K [56 0 R] >> endobj 56 0 obj << /Type /StructElem - /S /LBody + /S /Link /P 55 0 R - /K [57 0 R] + /K [<< + /Type /OBJR + /Pg 185 0 R + /Obj 181 0 R + >> 57 0 R] >> endobj 57 0 obj << /Type /StructElem - /S /P + /S /Strong /P 56 0 R - /K [58 0 R 50 51] - /Pg 163 0 R + /K [58 0 R] >> endobj 58 0 obj << /Type /StructElem - /S /Link + /S /Span /P 57 0 R - /K [<< - /Type /OBJR - /Pg 163 0 R - /Obj 159 0 R - >> 59 0 R] + /A [<< + /O /Layout + /TextDecorationType /Underline + >>] + /K [61] + /Pg 185 0 R >> endobj @@ -604,105 +600,104 @@ endobj << /Type /StructElem /S /Span - /P 58 0 R + /P 11 0 R /A [<< /O /Layout - /TextDecorationType /Underline + /Placement /Block >>] - /K [49] - /Pg 163 0 R + /K [59 60] + /Pg 185 0 R >> endobj 60 0 obj << /Type /StructElem - /S /Lbl - /P 55 0 R - /K [48] - /Pg 163 0 R + /S /Div + /P 11 0 R + /K [63 0 R 61 0 R] >> endobj 61 0 obj << /Type /StructElem - /S /LI - /P 54 0 R - /K [66 0 R 62 0 R] + /S /Div + /P 60 0 R + /K [62 0 R] >> endobj 62 0 obj << /Type /StructElem - /S /LBody + /S /P /P 61 0 R - /K [63 0 R] + /K [58] + /Pg 185 0 R >> endobj 63 0 obj << /Type /StructElem - /S /P - /P 62 0 R - /K [64 0 R 46 47] - /Pg 163 0 R + /S /Div + /P 60 0 R + /K [64 0 R] >> endobj 64 0 obj << /Type /StructElem - /S /Link + /S /P /P 63 0 R - /K [<< - /Type /OBJR - /Pg 163 0 R - /Obj 158 0 R - >> 65 0 R] + /K [65 0 R] >> endobj 65 0 obj << /Type /StructElem - /S /Span + /S /Link /P 64 0 R - /A [<< - /O /Layout - /TextDecorationType /Underline - >>] - /K [45] - /Pg 163 0 R + /K [<< + /Type /OBJR + /Pg 185 0 R + /Obj 180 0 R + >> 66 0 R] >> endobj 66 0 obj << /Type /StructElem - /S /Lbl - /P 61 0 R - /K [44] - /Pg 163 0 R + /S /Strong + /P 65 0 R + /K [67 0 R] >> endobj 67 0 obj << /Type /StructElem - /S /LI - /P 54 0 R - /K [74 0 R 68 0 R] + /S /Span + /P 66 0 R + /A [<< + /O /Layout + /TextDecorationType /Underline + >>] + /K [57] + /Pg 185 0 R >> endobj 68 0 obj << /Type /StructElem - /S /LBody - /P 67 0 R + /S /H2 + /P 11 0 R + /T (Projects) /K [69 0 R] >> endobj @@ -712,100 +707,103 @@ endobj /Type /StructElem /S /P /P 68 0 R - /K [72 0 R 40 70 0 R 42 43] - /Pg 163 0 R + /K [56] + /Pg 185 0 R >> endobj 70 0 obj << /Type /StructElem - /S /Link - /P 69 0 R - /K [<< - /Type /OBJR - /Pg 163 0 R - /Obj 157 0 R - >> 71 0 R] + /S /L + /P 11 0 R + /A [<< + /O /List + /ListNumbering /Circle + >>] + /K [95 0 R 91 0 R 87 0 R 81 0 R 71 0 R] >> endobj 71 0 obj << /Type /StructElem - /S /Span + /S /LI /P 70 0 R - /A [<< - /O /Layout - /TextDecorationType /Underline - >>] - /K [41] - /Pg 163 0 R + /K [80 0 R 72 0 R] >> endobj 72 0 obj << /Type /StructElem - /S /Link - /P 69 0 R - /K [<< - /Type /OBJR - /Pg 163 0 R - /Obj 156 0 R - >> 73 0 R] + /S /LBody + /P 71 0 R + /K [73 0 R] >> endobj 73 0 obj << /Type /StructElem - /S /Span + /S /P /P 72 0 R - /A [<< - /O /Layout - /TextDecorationType /Underline - >>] - /K [39] - /Pg 163 0 R + /K [78 0 R 50 76 0 R 52 74 0 R 54 55] + /Pg 185 0 R >> endobj 74 0 obj << /Type /StructElem - /S /Lbl - /P 67 0 R - /K [38] - /Pg 163 0 R + /S /Link + /P 73 0 R + /K [<< + /Type /OBJR + /Pg 185 0 R + /Obj 179 0 R + >> 75 0 R] >> endobj 75 0 obj << /Type /StructElem - /S /LI - /P 54 0 R - /K [80 0 R 76 0 R] + /S /Span + /P 74 0 R + /A [<< + /O /Layout + /TextDecorationType /Underline + >>] + /K [53] + /Pg 185 0 R >> endobj 76 0 obj << /Type /StructElem - /S /LBody - /P 75 0 R - /K [77 0 R] + /S /Link + /P 73 0 R + /K [<< + /Type /OBJR + /Pg 185 0 R + /Obj 178 0 R + >> 77 0 R] >> endobj 77 0 obj << /Type /StructElem - /S /P + /S /Span /P 76 0 R - /K [78 0 R 36 37] - /Pg 163 0 R + /A [<< + /O /Layout + /TextDecorationType /Underline + >>] + /K [51] + /Pg 185 0 R >> endobj @@ -813,11 +811,11 @@ endobj << /Type /StructElem /S /Link - /P 77 0 R + /P 73 0 R /K [<< /Type /OBJR - /Pg 163 0 R - /Obj 155 0 R + /Pg 185 0 R + /Obj 177 0 R >> 79 0 R] >> endobj @@ -831,8 +829,8 @@ endobj /O /Layout /TextDecorationType /Underline >>] - /K [35] - /Pg 163 0 R + /K [49] + /Pg 185 0 R >> endobj @@ -840,89 +838,91 @@ endobj << /Type /StructElem /S /Lbl - /P 75 0 R - /K [34] - /Pg 163 0 R + /P 71 0 R + /K [48] + /Pg 185 0 R >> endobj 81 0 obj << /Type /StructElem - /S /Span - /P 10 0 R - /A [<< - /O /Layout - /Placement /Block - >>] - /K [32 33] - /Pg 163 0 R + /S /LI + /P 70 0 R + /K [86 0 R 82 0 R] >> endobj 82 0 obj << /Type /StructElem - /S /Div - /P 10 0 R - /K [85 0 R 83 0 R] + /S /LBody + /P 81 0 R + /K [83 0 R] >> endobj 83 0 obj << /Type /StructElem - /S /Div + /S /P /P 82 0 R - /K [84 0 R] + /K [84 0 R 46 47] + /Pg 185 0 R >> endobj 84 0 obj << /Type /StructElem - /S /P + /S /Link /P 83 0 R - /K [31] - /Pg 163 0 R + /K [<< + /Type /OBJR + /Pg 185 0 R + /Obj 176 0 R + >> 85 0 R] >> endobj 85 0 obj << /Type /StructElem - /S /Div - /P 82 0 R - /K [86 0 R] + /S /Span + /P 84 0 R + /A [<< + /O /Layout + /TextDecorationType /Underline + >>] + /K [45] + /Pg 185 0 R >> endobj 86 0 obj << /Type /StructElem - /S /P - /P 85 0 R - /K [87 0 R 30] - /Pg 163 0 R + /S /Lbl + /P 81 0 R + /K [44] + /Pg 185 0 R >> endobj 87 0 obj << /Type /StructElem - /S /Strong - /P 86 0 R - /K [29] - /Pg 163 0 R + /S /LI + /P 70 0 R + /K [90 0 R 88 0 R] >> endobj 88 0 obj << /Type /StructElem - /S /H2 - /P 10 0 R - /T (Experience) + /S /LBody + /P 87 0 R /K [89 0 R] >> endobj @@ -932,21 +932,18 @@ endobj /Type /StructElem /S /P /P 88 0 R - /K [28] - /Pg 163 0 R + /K [42 43] + /Pg 185 0 R >> endobj 90 0 obj << /Type /StructElem - /S /L - /P 10 0 R - /A [<< - /O /List - /ListNumbering /Circle - >>] - /K [95 0 R 91 0 R] + /S /Lbl + /P 87 0 R + /K [41] + /Pg 185 0 R >> endobj @@ -954,7 +951,7 @@ endobj << /Type /StructElem /S /LI - /P 90 0 R + /P 70 0 R /K [94 0 R 92 0 R] >> endobj @@ -973,8 +970,8 @@ endobj /Type /StructElem /S /P /P 92 0 R - /K [25 26 27] - /Pg 163 0 R + /K [39 40] + /Pg 185 0 R >> endobj @@ -983,8 +980,8 @@ endobj /Type /StructElem /S /Lbl /P 91 0 R - /K [24] - /Pg 163 0 R + /K [38] + /Pg 185 0 R >> endobj @@ -992,8 +989,8 @@ endobj << /Type /StructElem /S /LI - /P 90 0 R - /K [98 0 R 96 0 R] + /P 70 0 R + /K [100 0 R 96 0 R] >> endobj @@ -1011,46 +1008,59 @@ endobj /Type /StructElem /S /P /P 96 0 R - /K [23] - /Pg 163 0 R + /K [98 0 R 36 37] + /Pg 185 0 R >> endobj 98 0 obj << /Type /StructElem - /S /Lbl - /P 95 0 R - /K [22] - /Pg 163 0 R + /S /Link + /P 97 0 R + /K [<< + /Type /OBJR + /Pg 185 0 R + /Obj 175 0 R + >> 99 0 R] >> endobj 99 0 obj << /Type /StructElem - /S /Div - /P 10 0 R - /K [102 0 R 100 0 R] + /S /Span + /P 98 0 R + /A [<< + /O /Layout + /TextDecorationType /Underline + >>] + /K [35] + /Pg 185 0 R >> endobj 100 0 obj << /Type /StructElem - /S /Div - /P 99 0 R - /K [101 0 R] + /S /Lbl + /P 95 0 R + /K [34] + /Pg 185 0 R >> endobj 101 0 obj << /Type /StructElem - /S /P - /P 100 0 R - /K [21] - /Pg 163 0 R + /S /Span + /P 11 0 R + /A [<< + /O /Layout + /Placement /Block + >>] + /K [32 33] + /Pg 185 0 R >> endobj @@ -1058,37 +1068,35 @@ endobj << /Type /StructElem /S /Div - /P 99 0 R - /K [103 0 R] + /P 11 0 R + /K [105 0 R 103 0 R] >> endobj 103 0 obj << /Type /StructElem - /S /P + /S /Div /P 102 0 R - /K [104 0 R 19 20] - /Pg 163 0 R + /K [104 0 R] >> endobj 104 0 obj << /Type /StructElem - /S /Strong + /S /P /P 103 0 R - /K [18] - /Pg 163 0 R + /K [31] + /Pg 185 0 R >> endobj 105 0 obj << /Type /StructElem - /S /H2 - /P 10 0 R - /T (Education) + /S /Div + /P 102 0 R /K [106 0 R] >> endobj @@ -1098,26 +1106,28 @@ endobj /Type /StructElem /S /P /P 105 0 R - /K [17] - /Pg 163 0 R + /K [107 0 R 30] + /Pg 185 0 R >> endobj 107 0 obj << /Type /StructElem - /S /Div - /P 10 0 R - /K [120 0 R 108 0 R] + /S /Strong + /P 106 0 R + /K [29] + /Pg 185 0 R >> endobj 108 0 obj << /Type /StructElem - /S /Div - /P 107 0 R - /K [118 0 R 117 0 R 109 0 R] + /S /H2 + /P 11 0 R + /T (Experience) + /K [109 0 R] >> endobj @@ -1126,140 +1136,106 @@ endobj /Type /StructElem /S /P /P 108 0 R - /K [4 5 116 0 R 7 115 0 R 9 114 0 R 113 0 R 12 112 0 R 14 111 0 R 110 0 R] - /Pg 163 0 R + /K [28] + /Pg 185 0 R >> endobj 110 0 obj << /Type /StructElem - /S /Link - /P 109 0 R - /K [16 << - /Type /OBJR - /Pg 163 0 R - /Obj 154 0 R + /S /L + /P 11 0 R + /A [<< + /O /List + /ListNumbering /Circle >>] - /Pg 163 0 R + /K [115 0 R 111 0 R] >> endobj 111 0 obj << /Type /StructElem - /S /Link - /P 109 0 R - /K [15 << - /Type /OBJR - /Pg 163 0 R - /Obj 153 0 R - >>] - /Pg 163 0 R + /S /LI + /P 110 0 R + /K [114 0 R 112 0 R] >> endobj 112 0 obj << /Type /StructElem - /S /Link - /P 109 0 R - /K [13 << - /Type /OBJR - /Pg 163 0 R - /Obj 152 0 R - >>] - /Pg 163 0 R + /S /LBody + /P 111 0 R + /K [113 0 R] >> endobj 113 0 obj << /Type /StructElem - /S /Link - /P 109 0 R - /K [11 << - /Type /OBJR - /Pg 163 0 R - /Obj 151 0 R - >>] - /Pg 163 0 R + /S /P + /P 112 0 R + /K [25 26 27] + /Pg 185 0 R >> endobj 114 0 obj << /Type /StructElem - /S /Link - /P 109 0 R - /K [10 << - /Type /OBJR - /Pg 163 0 R - /Obj 150 0 R - >>] - /Pg 163 0 R + /S /Lbl + /P 111 0 R + /K [24] + /Pg 185 0 R >> endobj 115 0 obj << /Type /StructElem - /S /Link - /P 109 0 R - /K [8 << - /Type /OBJR - /Pg 163 0 R - /Obj 149 0 R - >>] - /Pg 163 0 R + /S /LI + /P 110 0 R + /K [118 0 R 116 0 R] >> endobj 116 0 obj << /Type /StructElem - /S /Link - /P 109 0 R - /K [6 << - /Type /OBJR - /Pg 163 0 R - /Obj 148 0 R - >>] - /Pg 163 0 R + /S /LBody + /P 115 0 R + /K [117 0 R] >> endobj 117 0 obj << /Type /StructElem - /S /Span - /P 108 0 R - /A [<< - /O /Layout - /Placement /Block - >>] - /K [3] - /Pg 163 0 R + /S /P + /P 116 0 R + /K [23] + /Pg 185 0 R >> endobj 118 0 obj << /Type /StructElem - /S /H1 - /P 108 0 R - /T (Tien Nguyen Minh) - /K [119 0 R] + /S /Lbl + /P 115 0 R + /K [22] + /Pg 185 0 R >> endobj 119 0 obj << /Type /StructElem - /S /P - /P 118 0 R - /K [2] - /Pg 163 0 R + /S /Div + /P 11 0 R + /K [122 0 R 120 0 R] >> endobj @@ -1267,7 +1243,7 @@ endobj << /Type /StructElem /S /Div - /P 107 0 R + /P 119 0 R /K [121 0 R] >> endobj @@ -1275,87 +1251,315 @@ endobj 121 0 obj << /Type /StructElem - /S /Figure + /S /P /P 120 0 R - /A [<< - /O /Layout - /Placement /Block - >>] - /K [1] - /Pg 163 0 R + /K [21] + /Pg 185 0 R >> endobj 122 0 obj << /Type /StructElem - /S /Em - /P 10 0 R - /A [<< - /O /Layout - /Placement /Block - >>] - /K [0] - /Pg 163 0 R + /S /Div + /P 119 0 R + /K [123 0 R] >> endobj 123 0 obj << - /Type /Font - /Subtype /Type0 - /BaseFont /YIXOZM+XCharter-Italic-Identity-H - /Encoding /Identity-H - /DescendantFonts [124 0 R] - /ToUnicode 127 0 R + /Type /StructElem + /S /P + /P 122 0 R + /K [124 0 R 19 20] + /Pg 185 0 R >> endobj 124 0 obj << - /Type /Font - /Subtype /CIDFontType0 - /BaseFont /YIXOZM+XCharter-Italic - /CIDSystemInfo << - /Registry (Adobe) - /Ordering (Identity) - /Supplement 0 - >> - /FontDescriptor 126 0 R - /DW 0 - /W [0 0 500 1 1 498 2 2 525 3 3 370 4 4 333 5 5 278 6 6 553 7 7 516 8 8 523 9 9 424 10 10 287 11 11 556 12 12 839 13 13 398 14 16 556] + /Type /StructElem + /S /Strong + /P 123 0 R + /K [18] + /Pg 185 0 R >> endobj 125 0 obj << - /Length 11 - /Filter /FlateDecode + /Type /StructElem + /S /H2 + /P 11 0 R + /T (Education) + /K [126 0 R] >> -stream -x~ -endstream endobj 126 0 obj << - /Type /FontDescriptor - /FontName /YIXOZM+XCharter-Italic - /Flags 131140 - /FontBBox [-69 -218 867 736] - /ItalicAngle -11 - /Ascent 800 - /Descent -200 - /CapHeight 671 - /StemV 95.4 - /CIDSet 125 0 R - /FontFile3 128 0 R + /Type /StructElem + /S /P + /P 125 0 R + /K [17] + /Pg 185 0 R >> endobj 127 0 obj << - /Length 830 + /Type /StructElem + /S /Div + /P 11 0 R + /K [140 0 R 128 0 R] +>> +endobj + +128 0 obj +<< + /Type /StructElem + /S /Div + /P 127 0 R + /K [138 0 R 137 0 R 129 0 R] +>> +endobj + +129 0 obj +<< + /Type /StructElem + /S /P + /P 128 0 R + /K [4 5 136 0 R 7 135 0 R 9 134 0 R 133 0 R 12 132 0 R 14 131 0 R 130 0 R] + /Pg 185 0 R +>> +endobj + +130 0 obj +<< + /Type /StructElem + /S /Link + /P 129 0 R + /K [16 << + /Type /OBJR + /Pg 185 0 R + /Obj 174 0 R + >>] + /Pg 185 0 R +>> +endobj + +131 0 obj +<< + /Type /StructElem + /S /Link + /P 129 0 R + /K [15 << + /Type /OBJR + /Pg 185 0 R + /Obj 173 0 R + >>] + /Pg 185 0 R +>> +endobj + +132 0 obj +<< + /Type /StructElem + /S /Link + /P 129 0 R + /K [13 << + /Type /OBJR + /Pg 185 0 R + /Obj 172 0 R + >>] + /Pg 185 0 R +>> +endobj + +133 0 obj +<< + /Type /StructElem + /S /Link + /P 129 0 R + /K [11 << + /Type /OBJR + /Pg 185 0 R + /Obj 171 0 R + >>] + /Pg 185 0 R +>> +endobj + +134 0 obj +<< + /Type /StructElem + /S /Link + /P 129 0 R + /K [10 << + /Type /OBJR + /Pg 185 0 R + /Obj 170 0 R + >>] + /Pg 185 0 R +>> +endobj + +135 0 obj +<< + /Type /StructElem + /S /Link + /P 129 0 R + /K [8 << + /Type /OBJR + /Pg 185 0 R + /Obj 169 0 R + >>] + /Pg 185 0 R +>> +endobj + +136 0 obj +<< + /Type /StructElem + /S /Link + /P 129 0 R + /K [6 << + /Type /OBJR + /Pg 185 0 R + /Obj 168 0 R + >>] + /Pg 185 0 R +>> +endobj + +137 0 obj +<< + /Type /StructElem + /S /Span + /P 128 0 R + /A [<< + /O /Layout + /Placement /Block + >>] + /K [3] + /Pg 185 0 R +>> +endobj + +138 0 obj +<< + /Type /StructElem + /S /H1 + /P 128 0 R + /T (Tien Nguyen Minh) + /K [139 0 R] +>> +endobj + +139 0 obj +<< + /Type /StructElem + /S /P + /P 138 0 R + /K [2] + /Pg 185 0 R +>> +endobj + +140 0 obj +<< + /Type /StructElem + /S /Div + /P 127 0 R + /K [141 0 R] +>> +endobj + +141 0 obj +<< + /Type /StructElem + /S /Figure + /P 140 0 R + /A [<< + /O /Layout + /Placement /Block + >>] + /K [1] + /Pg 185 0 R +>> +endobj + +142 0 obj +<< + /Type /StructElem + /S /Em + /P 11 0 R + /A [<< + /O /Layout + /Placement /Block + >>] + /K [0] + /Pg 185 0 R +>> +endobj + +143 0 obj +<< + /Type /Font + /Subtype /Type0 + /BaseFont /ZIEOQE+XCharter-Italic-Identity-H + /Encoding /Identity-H + /DescendantFonts [144 0 R] + /ToUnicode 147 0 R +>> +endobj + +144 0 obj +<< + /Type /Font + /Subtype /CIDFontType0 + /BaseFont /ZIEOQE+XCharter-Italic + /CIDSystemInfo << + /Registry (Adobe) + /Ordering (Identity) + /Supplement 0 + >> + /FontDescriptor 146 0 R + /DW 0 + /W [0 0 500 1 1 498 2 2 525 3 3 370 4 4 333 5 5 278 6 6 553 7 7 516 8 8 523 9 9 424 10 10 287 11 11 556 12 12 447 13 15 556] +>> +endobj + +145 0 obj +<< + /Length 10 + /Filter /FlateDecode +>> +stream +x +endstream +endobj + +146 0 obj +<< + /Type /FontDescriptor + /FontName /ZIEOQE+XCharter-Italic + /Flags 131140 + /FontBBox [-69 -218 537 736] + /ItalicAngle -11 + /Ascent 800 + /Descent -200 + /CapHeight 671 + /StemV 95.4 + /CIDSet 145 0 R + /FontFile3 148 0 R +>> +endobj + +147 0 obj +<< + /Length 816 /Type /CMap /WMode 0 >> @@ -1382,7 +1586,7 @@ end def 1 begincodespacerange <0000> endcodespacerange -16 beginbfchar +15 beginbfchar <0001> <004C> <0002> <0061> <0003> <0073> @@ -1394,11 +1598,10 @@ endcodespacerange <0009> <0065> <000A> <0069> <000B> <006E> -<000C> <004D> -<000D> <0072> -<000E> <0032> -<000F> <0030> -<0010> <0036> +<000C> <004A> +<000D> <0032> +<000E> <0030> +<000F> <0036> endbfchar endcmap CMapName currentdict /CMap defineresource pop @@ -1409,67 +1612,63 @@ end endstream endobj -128 0 obj +148 0 obj << - /Length 1934 + /Length 1854 /Filter /FlateDecode /Subtype /CIDFontType0C >> stream -xeyPSY#<鴒LըnArAggPMW% aG(lF%@ -(ڎmۥ8:kY7SNEjN{:w=,ʰ,;1vyrޠ4j,X,N8rg!uɱxkTaW~Խ2۷ӝiR<>e$,&{4I -IRi jCr]z^- ^ @HQnLԨ3UIIOejCAJHBJAX3*CT% ?Uf4PXMҫuBxVIFJNЧ,Jii迸ƅaKS+f#=ݨRxw?@° 0d?s0d'0Of'y®aOV_duk-ݦه>1#}>0)`2® >{3zzIE[Uvr#'OΥ .ⵚ륰s2+ND3&#֔MQ٫;PуaKil۫gN6izq؊h'UwO]kbh-dTv'sW2[F;;DWzGBENqzł&}[c+x!ʞ>ߝh -ԩ@_{r -k2MmݍM]ԡ.Tbw 8,{,(,iWKIXǀ\iLA;o4ReA%2 >7NF.}ٳqDfǸ<&"h WbmBO'Fo 5ż7tƫݕC&i9kWRa <%\T\lV2x >P~#8Y-H9 OQP~ZT_ih^юB3`UFp VǭᑱxnE^XoH䫮ps#d;~ΆK؂EX J$n5A:^vr$i' ~QƠ~ZXL7qUK1sGMY߂A\j齺 H݇6iٸi?&_8Z'r -["7붂QG$3rsx//[s"ZIB+ɇ#cьhEdK -kxQeg(6`6v]Tx<GBvu(m*({1}52l'Z[Ma{VFB6YHHӜ4ؚNښ Zo+o*~nqO6 -g1=?"edA#lߡ;')??X~8/ MA|c\%䷯ ZO,ġ`ѬjN~ĸ; P4 ]wg(ޝdբե˚SW&47%:eQ(_#'#/` g2oc 7?*S"q;E}UY5c$@C 3KȒ  M7Is?gH!W+;/i.whcU|+FpO\I>gx%!D߇SW,R8mz~aiF jJk*cۡ|N%VΤ~4/ h!@=//7% -ńI<tڭy ~D -ƒL!ܤq*z7T%wD-R*mHD0R*]]^6Rx$m}FI7 -:!orY|F'~S{s;'DAf.t7Eğ!d?ojyw@W ~t@eqcD eGx +xeiPTgﵹҹ3U! T3n &+KJCӍlbˋ l5(&t[1ILߥ>Rj3S3U=uN9u9 ˸0,Έ]`0 !FKp氞n˧Q֙45,fWI\t`tYnNj$Ѣ7Yjh2OWiDhPՆ ur>ybbB7tIuO O3/iao^JNPkŨC:H 4uF^'wOC%ˏa1,!Z(!cT9:%cXaNNs$pVxQ1 9a4leKnbI}l_LlSޮ}SA +&Srat{<@E@N'EPKh#"s 2MSUy4~" b洕z h[bMTzt aock ݞ\>t NdF+N=wNʯ*u< ICĸ$| |F\t/ +%kgw@Fj%NtM|ۮ+.DTG#;56iR#<_^azJدF{a$!g[5u KYWثed@T*B!r1́6 T6rU^2΢ eG+ Y\ި#Voj`<¸2I.L'+2 ᗒGp#Ç(D!썫\lAwInfC*,5C]ْz^}a%L.Ϡ O\ol$z󀇤x|H~-eo4oؾH#V7X{ܻ?tyCm3-|MnT kmjlXe8mNKПJ ү:ItSţn$+%I:/nwc 7G/J^߂{Ahu +Hޖ:sgO m4@Ұ4PqY=G5;"w\#^ )0<]2;[kNy`Et*q;dxS>,2DT-hBWsLY hEeExћMX_92'_MEF +ToID0R%=eCj>⻞^ ^!Ig[_2d2^sVPهat<[D܈q#O?܈pKDe@f>WV&2/ endstream endobj -129 0 obj +149 0 obj << /Type /Font /Subtype /Type0 - /BaseFont /ELSETQ+XCharter-Roman-Identity-H + /BaseFont /BFAXVW+XCharter-Roman-Identity-H /Encoding /Identity-H - /DescendantFonts [130 0 R] - /ToUnicode 133 0 R + /DescendantFonts [150 0 R] + /ToUnicode 153 0 R >> endobj -130 0 obj +150 0 obj << /Type /Font /Subtype /CIDFontType0 - /BaseFont /ELSETQ+XCharter-Roman + /BaseFont /BFAXVW+XCharter-Roman /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> - /FontDescriptor 132 0 R + /FontDescriptor 152 0 R /DW 0 - /W [0 0 500 1 1 597 2 2 280 3 3 491 4 4 568 5 5 278 6 6 713 7 7 523 8 8 569 9 9 495 10 10 866 11 11 564 12 12 556 13 13 539 14 14 382 15 15 321 16 16 334 17 17 771 18 18 507.00003 19 19 576 20 20 738 21 21 632 22 22 278 23 23 618 24 24 843 25 25 500 26 26 556 27 27 942 28 28 282 29 29 517 30 30 278 31 31 446 32 37 556 38 38 565 39 39 481 40 40 539 41 41 848 42 42 604 43 43 551 44 44 500 45 46 556 47 47 444 48 48 556 49 49 590 50 50 694 51 51 558 52 52 639 53 53 319 54 54 1000 55 55 503.00003 56 56 400 57 57 319 58 58 537 59 59 494 60 60 693 61 61 646 62 62 417 63 63 928 64 64 417 65 65 319 66 66 642 67 67 468 68 68 852 69 69 731 70 70 324 71 71 586 72 72 833 73 73 694 74 74 704 75 75 266 76 76 833 77 77 520 78 78 579 79 79 731] + /W [0 0 500 1 1 597 2 2 280 3 3 491 4 4 568 5 5 278 6 6 713 7 7 523 8 8 569 9 9 495 10 10 866 11 11 564 12 12 556 13 13 539 14 14 382 15 15 444 16 16 507.00003 17 17 494 18 18 321 19 19 334 20 20 771 21 21 576 22 22 738 23 23 632 24 24 278 25 25 618 26 26 843 27 27 500 28 28 556 29 29 942 30 30 282 31 31 517 32 32 278 33 33 446 34 39 556 40 40 565 41 41 481 42 42 539 43 43 848 44 44 604 45 45 551 46 46 500 47 49 556 50 50 590 51 51 694 52 52 558 53 53 639 54 54 319 55 55 1000 56 56 503.00003 57 57 400 58 58 319 59 59 537 60 60 693 61 61 646 62 62 417 63 63 928 64 64 417 65 65 319 66 66 642 67 67 468 68 68 852 69 69 731 70 70 324 71 71 586 72 72 731 73 73 579 74 74 611 75 75 823 76 76 520 77 77 531 78 78 694 79 79 574 80 80 266 81 81 833] >> endobj -131 0 obj +151 0 obj << - /Length 11 + /Length 13 /Filter /FlateDecode >> stream -x6 +xA + endstream endobj -132 0 obj +152 0 obj << /Type /FontDescriptor - /FontName /ELSETQ+XCharter-Roman + /FontName /BFAXVW+XCharter-Roman /Flags 131076 /FontBBox [-78 -236 1000 764] /ItalicAngle 0 @@ -1477,14 +1676,14 @@ endobj /Descent -200 /CapHeight 671 /StemV 95.4 - /CIDSet 131 0 R - /FontFile3 134 0 R + /CIDSet 151 0 R + /FontFile3 154 0 R >> endobj -133 0 obj +153 0 obj << - /Length 1724 + /Length 1760 /Type /CMap /WMode 0 >> @@ -1511,7 +1710,7 @@ end def 1 begincodespacerange <0000> endcodespacerange -79 beginbfchar +81 beginbfchar <0001> <0054> <0002> <0069> <0003> <0065> @@ -1526,51 +1725,51 @@ endcodespacerange <000C> <0053> <000D> <006F> <000E> <0072> -<000F> <0066> -<0010> <0074> -<0011> <0077> -<0012> <0061> -<0013> <0045> -<0014> <0048> -<0015> <0043> -<0016> <002C> -<0017> <0056> -<0018> <006D> -<0019> <007C> -<001A> <0039> -<001B> <0040> -<001C> <006C> -<001D> <006B> -<001E> <002E> -<001F> <0063> -<0020> <0030> -<0021> <0038> -<0022> <0036> -<0023> <0031> -<0024> <0035> -<0025> <0034> -<0026> <0064> -<0027> <002F> -<0028> <0062> -<0029> <00660062> -<002A> <0042> -<002B> <0070> -<002C> <2013> -<002D> <0032> -<002E> <0037> -<002F> <004A> -<0030> <0033> -<0031> <2022> -<0032> <0047> -<0033> <0050> -<0034> <0041> -<0035> <003A> -<0036> <2014> -<0037> <0078> -<0038> <0073> -<0039> <003B> -<003A> <0046> -<003B> <0076> +<000F> <004A> +<0010> <0061> +<0011> <0076> +<0012> <0066> +<0013> <0074> +<0014> <0077> +<0015> <0045> +<0016> <0048> +<0017> <0043> +<0018> <002C> +<0019> <0056> +<001A> <006D> +<001B> <007C> +<001C> <0039> +<001D> <0040> +<001E> <006C> +<001F> <006B> +<0020> <002E> +<0021> <0063> +<0022> <0030> +<0023> <0038> +<0024> <0036> +<0025> <0031> +<0026> <0035> +<0027> <0034> +<0028> <0064> +<0029> <002F> +<002A> <0062> +<002B> <00660062> +<002C> <0042> +<002D> <0070> +<002E> <2013> +<002F> <0032> +<0030> <0037> +<0031> <0033> +<0032> <2022> +<0033> <0047> +<0034> <0050> +<0035> <0041> +<0036> <003A> +<0037> <2014> +<0038> <0078> +<0039> <0073> +<003A> <003B> +<003B> <0046> <003C> <0044> <003D> <0052> <003E> <0028> @@ -1583,14 +1782,16 @@ endcodespacerange <0045> <004F> <0046> <0049> <0047> <005A> -<0048> <002B> -<0049> <0055> -<004A> <0026> -<004B> <006A> -<004C> <007E> -<004D> <004C> -<004E> <0066006C> -<004F> <0051> +<0048> <0051> +<0049> <0066006C> +<004A> <004B> +<004B> <0066006B> +<004C> <004C> +<004D> <0071> +<004E> <0055> +<004F> <00660069> +<0050> <006A> +<0051> <002B> endbfchar endcmap CMapName currentdict /CMap defineresource pop @@ -1601,76 +1802,67 @@ end endstream endobj -134 0 obj +154 0 obj << - /Length 6239 + /Length 6353 /Filter /FlateDecode /Subtype /CIDFontType0C >> stream -xYgXT֞q83;cAE;B4D IA@4.(PDbT"K4*Jb)w3ޘy`ٳj-hi B <gZ:͏!r~P-P C$C*1cjp00|@ Dߐ !"P,Yf{xg C8xyz;/ - -ts7sG_`~[[`,}2U` }C9uf5_~~j̙F\<|m<wv -rsw׸j@0H =·d1 .,RVDD -j7 ,'ZxAكފDZzZ'1cLX!>"~-,i"eڝ//ՐC  57N:F>qحa>^e×wXf*;(kulG:[t<¹u/FL4r#?SP/X`'s>~EkD5>O5A\ -XZ!R~;T!KoսQg ߈%:5 g£LSJMSoYajY^%+ÐE1)=,7pۼ?y4a?Y>"r}x`6aO~ #ۄޗp\<_L2:$Q8Jp.*z&tr)O^-!xC,BCcm`Uzy;$E>fNuwhfD:uKO[aC;itݔxMgDm#mRA)C Q.z-O̼zJ;pPm} tɌUI8FUbt)ܷz6z> ±n'܏ՆE`, oH Dy(?Ƭvq5`ܱ%pndח*"˧ڙdz?e2$Aé$C>  -cswT)fD \hKwfsE8ö||  {r_ԘAm0 M >}P};mpR☤Όnm9m;S D:ڇO+C8po݃&Lr?~dE&"26`۹Kp+!G4'C] ް79tK?EϿ Oz,\2ܡw~-P2SJ@ڤT૘cA CU Ԓ'KǞcGu|e'KD8?RPzGS:w(kv2/5jTlH}'5-q3:Փ\EX[-O@m/wSm,ޞ]p:vmC(3Q$-"mFf,O'`hi(r s:6|Xak? 6[_ٕK`eaDxJ&ѩtQ~ъZյZ]PBJ@u-˗astqRBSLiU lkd$#;ABWm }n_^]'@sre[QJ:aQ*nSue'Isp 8M{DM!avݹU - 8zG<˷G^ +H$8!x_0 -(0gT%[g#ŵYey=J p4? MxŻ$H2TS l6opTBpYvhÆq+)c^m)ٙ%go|/>r: ['(%l%ut aq{@Ե2rA9r؃oTkp\1@T -ٛhYyJd]~f'ICΣ*p#^E!F9yWp*iOF")NR,#%7OSQA={J%ETD/&upiS?LccmGeWDl m$!TBMA-U/PSŠ- ԶbfXu -JޘW4Gu@'8֑M~QQ1{]xD}^!Mcİ}("ODyh~u0_PfDj'6bJ$R<n-=l57/eo' 5s݃ݻv8˧R -\ٶee]fـ*y;ܹ\]tmԡ@%@'eӍ6RQ@/NZNtE-s_ gt<.fG~(|;-"!"BʁCgI1.f/R/ tWjL.sWongÐ~"͠{D9K)V >$FhVEh9^3B5̀z؆$嘈cqbWY3{Gљt>Xd!+Bjs~ sr -9 -)/+%Nx8 eݏKHv%p*|mt?>O&E4d4'R*E/(E?h ,}bDpzV3n'ΞnD_)>uUݛ{0ۍ]ac 䀪0:JV| p -Ӡ_H}b+Z+|Ն^GE@Pqq¬53!|0$Ȧ~F+k4fwNW4D}tֻhP{Uuk:xHO䇖TB2m)j toi-s~_Dš8Vv.gyw\CdLP~l|WVH<ҒR7y560: -?]IJ?xY>oVnkҸRދ@p -멙]?+[4:s nN5:2jTD]3f -@ TKFSI#@k6|n0I@,%'LLS&C -_OޞN|21w' -p_zQKkڨ(H0$ixIxzǽMW1KDc|)~C -s;o&I+3BӟLE `j81@ *czqWDuaq^6HmLRFQw+dwsQ.&k=W'ܟ@1~;\? 838)< @Pu>dnIŊrk"RteaB,7讷bhp vD[&>JCJc4_Ff`4+YAVčg_aannG#g{aanNO Mֻk{g;Ϡ^$P@1GjkhPd}8د89 z-d܆#qٕPDMܫ$2:ሤԒZ^;Ȅ.UwTű^iZ;0:|`^V-~@u]jJF<ιzf6_Ay޹z8 FZj>&"+ YfrB-̷r}*=bNkIJ2oyrd@l-UV:L t@ aHg фBtjeiˇ#VLD*;C~%Bu "{`^ojVp0Aw:{b\d& 5 -%ҵcFU|'h}0LHL^(8 kUN+-l8u!r1VWo+x#L<&J_u?ڕQp ZхKx~g H=k:Km2hfB1Rs2~ 3JIFDѡ*/:?\UC999Z2PuE1ـEΜ5S@ͩ' .=<>ӕfKCDx3ŐN0DMb߆! UC?BXr]^'oIqpJHNMu@O8F}U0Yhx +k\f9 HײG)pE9V/V36# c3bXzծ 6׊Jn(PR#chI -ʓ͵1\QHqBd= ,7C_ͅžV=|cl+?]h.(xjzݢyI\ Z=ZԜRF=L3D B]m^Q.*UӘ9H{xn_Ok~oV ;? Nun8'A5LuX4p:8fmc.1RܟMB~d?)a41)MtDK/7|P$}YxqS#t](L wt,D8PdTFu6\1r?3MpS*dϜM;sy=μ HSIiՋ[ԇn^UW}c9Kf6gSzVlcsq8t@{nG)g \^*1H)s\SfuJƸL7߭0y gDJܮa@!Z%ّܣɴ&0&zŗ?M `$>FsQHq?4iGbnF`[326oN+Xʑܬii6h~# &O.\kDj -4us|G!Q4o{7UۧRim#h/V>]#޼@iDZATM@(7 Al -ϖ޼^ -PZkRF -\?oƥ?"09opzW]hZ7"_ 땫= 4gպYy)T&էRGϾ0K#51\7Pk#q@SHZ< +xYgXT֞q83;Qx`E,Hb7`A5t FAzcD,XQcA<߯ϙ}6{Z[,뗺;Zx;#Q_ɏ+T2mdt(:fH$^1Px-??P'|/RybgG3guG@Rm!~n372p7pP:zy8y8,sq60S;M70Xe{/yA߿4h4cFL`%f'ߚ9x'w/~\8:8߳m tW$#,a&g5R[ѷD$D"k!C0D#0RƊ|E-b.qz>o$V2zz~iVɷkSDN*_}4R4LEvq) 'f V1V~L]I ?B2r*GJ(jG7JѭLj ^~J"#!(N2B@vIvywF8hKCG3UT]OJе&DQz8_;H3dr~S`QeG(a<]¼Dv`GB8a,V(p-TVCmA2%B<H=Bҥc>RAQT<}jlfFrͥ 9YY9~(nV:i?枅0owud몛PYPܔN!.C t98%q,d&W ݱ'id2V˞0`]@LN?3膠)}| wvLaL=̈́E@0l=PW|hs"{`zi 㩷7%dY۵գڋ̈́ P:>"Z&9Rҭ^ZK-}p8>қahF~x(B"1=W@RjnE^T[,{E4Z'&g٧rΆ_:Bbuަui{cFq +7kA' 2sρ~&@;>E}s̃6LN%;#Pf .7wc~2N~#p/$4W:RO(G>x-P|]:k_Zxntx0eE  =H9u_~ ! +$E7vG:!a6Q?)'-%xGRlrDGZ.W +SZ'8]4kpGT?\M: |1yCXhkdұ@;D)ck o R ٗ*zԎa[axq$)!YAe8]yp)o"|;wxG9S,L\) V?NYX e5v- 0ÀxO2N8ߝpXFS ˪Pc|XR3p=ekCS gּZMO9/`hS2d3bWE4/ys^keTxGs'ZgPU%*%GBRۧ3Kr̒,:UQsh%ͫ}*\Kn!rJ?)ıqr~½H'5<*!$><)\K‰ -gP8@xw 0G5JΣLG-T&CqNɞ7&\@KFp 3g;پ-ț=S]TBѷe3t) oW_6{ &J'XgO}z?v{LF\э%$  dE`oոsG;2Uh?R:nd?J;r*2N_J :">(řq=4oGjld[!G!OXK\6m 0aus$Jo2ܬ(>kPB݁ʀ2&KH%@{zJ2ұ3A7|q1Э@X@e?uv\oŀJ)j~Ŗݷ Hڟp"&tH!\ԕaFotb}?}:#r !)ǝž.>/Z2hU *9u9p$hpzU<]q8_ʆ5+S`85 ߾WE!+Y /qsVT[uW阘~l m_HOʹ2-@ƚq_iQd,uWjl*N5+J z DjSDQ?u%Xгc RnXۍ,!*Xޓt#ݸa_FJvVQٱc;3TAi;{ڍ `փp%e<[t-kj>2rd &28T=yJ 6^4,$t\ #6\bvݜ-p55be/$:!BMb G"kE)-2֩Wڍ|%W& ȽUX,gLڟE^P_ ぇ,D{%8\ERnSQ|D*WT5^jշ/Zq e_ UM_ej +>ktn ^v6y/!ҹ':G3:as,_;$^|vkJu`2W(e>bR.F@tBZt(Lԇ e, Ƚ'7k$ׅ3Fօ~ӿ Wd j1^#u=ay_q?֟ӫ?<3;2 H>DeyG [o: b)*#. Og70RyO4u<+. +zmKB=tjD" +\S\Sx-Ν+mלּl`J)Ë H[cy~~ρXA93Q{@̉Ƞ UP,Wb2W6 TIGu: +%(2m +[Ze\ eVyPˤtbtS@ppNs~۝Wޓ89.؟i@pō%v@~WD~еWgGwZE#([+:H `2"H r/i> fE!ȊhwȹlssUi'U?z>>nnۊr4j:{?vHA1?X>DjKuVcOhpeУXjH'VKbj +Z;q?\ "o"T(uSo:^gz:T +maVzsiք-ػyX|}[q3E;+yx +[O`IuT@U8bNR30*tCVv +JcHO +_ +~an5PbY7m{Q‘L4a&h pz8WPm +哂y7WkS~]0Lw)mnKq#CjKmU*%ƹ Px(&#.=.UV:LNpaT(BLl S\葵5sFZ)2v3 !:{ůIxGO=+:rc +f9vg+cUJD[ ,(N4!")zy@h) +eݓ8r2LaNtDqᒣp*!#q*]M4 k0PR'9S *7 $6v7g,T8q4r0 Ϗ U@RGJzT1r̈ twEV|ߡd4YBnŧtѲpEL%/,ZŰ ;<+*2KZPBinK1;҆vKw>P{N%qa |w7w ߧg7y[Xt T T\dY{76h'bǦW,NGTSsc4cd-aWi&cB !zgͱ.;Ob>8__m4J +xF,;@mpl~;i(g8.~uFq+\#.~%#9\Zw}vs`,^H%\K%dePߐDdn^{ /{qtLdpMpXkѽx.qN.ƍcg:S\<7nYwE'ghuZ| #?eT`H({FleKi0FWMppbN~ {;\_bLijNf>imllsLg̠i_-3~g~Ӽ#&O▛B5/|YI}WJCi0};W2:?/;%އIKpBwU9T%#@mBCW7)v/!]92]ޱ@ oRVV.iTd ,vGh?]]RnEo/tt:!@lWSRvǼ!ѳsol'~3KNI7QJ= ,4WnFn0p'$8ӎS䨕ށj w'߻Ǜb#N fw SZȈ+sJʛ.o"5 aOw'\/+s΋a~4iN3`y2< endstream endobj -135 0 obj +155 0 obj << /Type /Font /Subtype /Type0 - /BaseFont /PLHHBX+XCharter-Bold-Identity-H + /BaseFont /CNMGPX+XCharter-Bold-Identity-H /Encoding /Identity-H - /DescendantFonts [136 0 R] - /ToUnicode 139 0 R + /DescendantFonts [156 0 R] + /ToUnicode 159 0 R >> endobj -136 0 obj +156 0 obj << /Type /Font /Subtype /CIDFontType0 - /BaseFont /PLHHBX+XCharter-Bold + /BaseFont /CNMGPX+XCharter-Bold /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> - /FontDescriptor 138 0 R + /FontDescriptor 158 0 R /DW 0 - /W [0 0 500 1 2 596 3 3 600 4 4 476 5 5 544 6 6 358 7 7 305 8 8 577 9 9 605 10 10 760 11 11 291 12 12 638 13 13 597 14 14 883 15 15 515 16 16 705 17 17 513 18 18 524 19 19 421 20 20 447 21 21 341 22 22 603 23 23 304 24 24 551 25 25 531 26 26 591 27 27 568 28 28 799 29 29 587 30 30 297 31 31 635 32 32 727 33 33 710 34 34 628 35 35 741 36 36 752 37 37 553 38 38 543 39 39 340 40 40 552 41 41 892 42 42 577 43 43 716 44 44 354 45 45 651 46 47 428] + /W [0 0 500 1 2 596 3 3 600 4 4 476 5 5 544 6 6 358 7 7 305 8 8 577 9 9 605 10 10 760 11 11 291 12 12 638 13 13 597 14 14 883 15 15 515 16 16 705 17 17 513 18 18 524 19 19 421 20 20 447 21 21 341 22 22 603 23 23 304 24 24 551 25 25 531 26 26 591 27 27 568 28 28 799 29 29 587 30 30 297 31 31 628 32 32 491 33 33 465 34 34 581 35 35 577 36 36 553 37 37 543 38 38 340 39 39 552 40 40 892 41 41 741 42 42 716 43 43 354 44 44 752 45 45 651 46 47 428] >> endobj -137 0 obj +157 0 obj << /Length 11 /Filter /FlateDecode @@ -1680,10 +1872,10 @@ x endstream endobj -138 0 obj +158 0 obj << /Type /FontDescriptor - /FontName /PLHHBX+XCharter-Bold + /FontName /CNMGPX+XCharter-Bold /Flags 131076 /FontBBox [-80 -219 883 743] /ItalicAngle 0 @@ -1691,12 +1883,12 @@ endobj /Descent -200 /CapHeight 671 /StemV 168.6 - /CIDSet 137 0 R - /FontFile3 140 0 R + /CIDSet 157 0 R + /FontFile3 160 0 R >> endobj -139 0 obj +159 0 obj << /Length 1264 /Type /CMap @@ -1756,20 +1948,20 @@ endcodespacerange <001C> <0077> <001D> <0050> <001E> <006A> -<001F> <0056> -<0020> <004E> -<0021> <0047> -<0022> <0042> -<0023> <0026> -<0024> <004F> -<0025> <006B> -<0026> <004C> -<0027> <003A> -<0028> <0046> -<0029> <006D> -<002A> <0062> -<002B> <0044> -<002C> <0049> +<001F> <0042> +<0020> <002F> +<0021> <004A> +<0022> <0039> +<0023> <0062> +<0024> <006B> +<0025> <004C> +<0026> <003A> +<0027> <0046> +<0028> <006D> +<0029> <0026> +<002A> <0044> +<002B> <0049> +<002C> <004F> <002D> <0041> <002E> <0028> <002F> <0029> @@ -1783,33 +1975,37 @@ end endstream endobj -140 0 obj +160 0 obj << - /Length 4297 + /Length 4260 /Filter /FlateDecode /Subtype /CIDFontType0C >> stream -x}yTS׷Mn/PMbZZQ0)E! 2>ب PĊ@mZko_Iוֹ{Y9"++X,f#㶆MV +("[k-,e|U=5Z${6{h_+l DYIb)ZH5jkfSR\TDVO>qVoQ*c7ŇDGm S+5q!IQ[l Q. uR*ݢ(¶%yIJgO.ӝ~tUDž%)W9)}c5 tשS]]Qaq(=m UjBR% `(-5)р 6DfP5#E"Yvh.@ hHZl'r2NKxj4J ^]+7`*jHWJfd?wLrଁaf'hEQZ3o zl|AZoIxlxȘpuazlѩ+k6<ž?1kh[Piz=t\ E)TkPF-*Y{AJviLwhANjHEmG)92K{q$?LF+Eԗ^ٔ(ߣ7@L -Pı kvlzMAGXVEI8ī~F[\6 g;92f-oW&o+7ivJ5Vїw)ִ!Mg)qlW(ta^mT1 Akww)a_΁lzP̣@_]@&8~f"z1G6]DrC|v+Z R )`&J2|MJC{JvY]#c/X 2.MTqR'nL @SXhlmV s7Vm-Ֆgjr(]'KJ; -܅D aCįN|@%B7XsIQsjloO^c i] (&;(> -ԣ\fǏ'Nd 8]^ĉ:9عS # O/y-q0+kdub{C =Ux?Np9Q Rd$8/#@`y(|?G0 -~{'hO?o&_~je ^3NW7vhz-ϻ+Iz zU=R WR_:r L'| %k;3 SROZbUBK|2Amв[)ds=ڐ-b!\:NG5Kd%@Pc~*"³%AW?p$~#7@S07ޘ@ϷqE`&̒d )2"ěHuU_w# w8r-gX<^ˇZ`]C>=84]ɣje{zqX#n;C:~;r7/iFb7~Xs ÈX2LsN.cGVHw?oTlC\pO6 -{0I"u#%q(B9_7v@FΎШ5?Ş# mI1dxj36v?8p^{W=p;5@l`̄e#{者5~tZV>\ -@&Rד39^BrK4{ҧ" R3#ita*80 (C-oՆGſ=JӖđmD0ޢrB9\҇kop)z vM3˯n#~b\9q[f/5R],dh %){6zP 9F-#F^fzo&hHL#>0je3|C}|_D>c{D2xxpV}$ -ߐ @'y6-uI:OYq&~|*nds?,>A¼9`?p Aَ2EWlT'qƪ /2}9s^=Sl{ܿT6T4Zqqf\@YK'qSLFLL5U$܈CqN>^ 3ȐOqP^PC1DS󚐿Wd0GKï kpuzgyQq_p*g?Pxm|,z_Q#{, ˔g"vmͣԛ*wص~GMf_J /֍M|ί*>L:Zh6]SPu(. (^@ƁL PSժᗓ/&;g#V Oh /; $(!%(~a/|+qbs>R>0_GXg.*KsJϞrtpF}Rvfɢ0 8l"ռqjqT؞K3z9D27S9 &e,'JE!*:Fzӵsb_N3OD* }VfqBu܎%`7L4@GfZ>Ze18;f_=<#)muR}Cs<ܺ.mei5T9IV:>b)KJɠ&E-8t~cGTg js4%?yPUJ$Qczp.vtA"IGF`Ʊ=[|fy@X1C3]&Wh(~-ZPB;|fߏ5=[#(w$ fɊsr~j -|qtH\ܶى]G4E})ՄV@K38kuxs5'HWrZ.Amm8H#TH&٭ "vOof/;Ŭ󅏁X=->B׬؄-^'P[|*Z&D|za2N -D0DR z5̀e778LU9͠W$~0NTDh2C?'ۯv<Rv.2l&8^^@4>)7z~% -f3qi\bOLm|3Jff@,50W,@)7RƬT2|o ڭ΢kvqneM# ŚR5v[d-n&?.Yn th -RVAFk&afo]K!4EH(N90_G>6_"g܅~@?g!E,~ 3|dp!Hl~>6[=CQn'wnt8Uxb1;6x(';RӅ'Ya޿pbuNpX:i%}E5 %@݅} 6??H!t~14^f-;wd!4.%R2lR2X*dhhYaoe:bo+J~pY*=& z5O@p2N>{wMw;*| !hh#%x,0[B\PuȢ,3CxoG-Kn0{ mdLPa)9@QhdoS؆8PpdiG e@q%;\m3r0n@\_/C}$ȎUĖji.ڇt,(E\pgP$ѨI5QͻͫNyn~V}Xda!ŌkTp|Bx0ōr~X_x-e#,^hFDb7+!f)_Mv%rH"K\!7nJPN3Gefep21ncbHL0e:~2drAtX墸JKLofe|-ayP{gJ'ǩ}qj_tRąŇoSMVzǩAS'MrrtrTzFF(WDo tۚ9ZTGDŽދKO$M]NS'ἒ{D 29D$D"GA99#E"BjQx.~m$JKHYXRTtl,W#mIԏZΰ<8>bCf6czb=Zc}ehмϡwk74`SvsǻaM&<ҎWT&'uG}FVCBfmܰ]7~5r}:"%1h52=BFId^j˯pdt㚆v[NT0 8 dެJta@%I-/C!ʩ{!2vf (,=oŐ-؈bt뼂Ws)b t:u'~XsB`bAN;@5Ե䖌z@г"͞>pp4H]Jo!P[$s:b8Qpm:uˣP#| tjw0^ JYc`}myMMt샒^gݔ7ŚJ +\Y,,Ź%נ%P샃ʛF1 &ZjG Rd0?|(FMbU.ٜFmj`(-R}6?0c 4X~[ݞ4k꒬`?f%(TGh|Ig>샂w|]72ERl A6U>}Anv(#:PA_pfրU'.ˌ T5DI(%j{EӨS;ʳ3|P9( +V'zdo `ni}.Ge샪R4z)gElٕK37xivmGLa߶%~ 8^?m}z+9LNZnI(Jt jѥ@@$: 3D\JDooE_X&t@\:N)֠<na A !GW}6eI-EĈ|Dp(2Ab>+QVi&\m TUvbg?휯O]bi .~19Z;F +sRrhT13O!b~g}Ƣh*23q#l+ ׫7߁W4?:X֗+ +frԜ>Ycp2D.6&P [1 ڢ?A%ooB^ +gԍ6 +}qhϏ7}K/w eE99@?3F̙&t"!=&7-bQ(}!xUaVhAC3νIb^̙g {s)H_oq`>#e䓍r=d& ʤq hcR>+)[O1p]&a)Э=bL5SZp7 dvlȊI?G=. qdqOƒ# G=> KCha8\S?EJdu;[g]#@O!@Ky.?cGvi2"%CV.#i +94 .1l[=K4 p%;8"{cH@ e祒1dv" d?JO1pwl0xZnB0kL׾F8@0W%k(vP tFt?GG Z.(**0:j!:HAXEE <U+6f#0w}/=7ٗU} &PP!m.E8pknwdb3/@Jg uVC JXo| OT=tgz7G*a]u"8]e+_e<g{=^Ý6Mh3 ivvJJEMuBaUb*>Ž>U ?tS rPɱk}S f5܅W5e3Ff9U ^zA2-\I8EE`x]_4# +]=/=wz96UҎ%2=(k>C#`!ZU):s${2$'F .&V2.)JXrT]]$xtkО$5#8P݉g_T]./(aNRQ@4>3+'qH?,R/(0~p+zgqd"tPҼvqNf,($5~&@ +46n(Kx, b  $nE+0 02AzIp25A@2dkbehJ(dq>h endstream endobj -141 0 obj -[/ICCBased 142 0 R] +161 0 obj +[/ICCBased 162 0 R] endobj -142 0 obj +162 0 obj << /Length 314 /N 3 @@ -1823,27 +2019,27 @@ x endstream endobj -143 0 obj -[163 0 R /XYZ 50.4 628.05743 0] +163 0 obj +[185 0 R /XYZ 50.4 628.05743 0] endobj -144 0 obj -[163 0 R /XYZ 50.4 528.22986 0] +164 0 obj +[185 0 R /XYZ 50.4 528.22986 0] endobj -145 0 obj -[163 0 R /XYZ 50.4 347.35208 0] +165 0 obj +[185 0 R /XYZ 50.4 319.66437 0] endobj -146 0 obj -[163 0 R /XYZ 50.4 185.32874 0] +166 0 obj +[187 0 R /XYZ 50.4 751.6 0] endobj -147 0 obj -[163 0 R /XYZ 172.28976 751.6 0] +167 0 obj +[185 0 R /XYZ 172.28976 751.6 0] endobj -148 0 obj +168 0 obj << /Type /Annot /Subtype /Link @@ -1860,7 +2056,7 @@ endobj >> endobj -149 0 obj +169 0 obj << /Type /Annot /Subtype /Link @@ -1877,7 +2073,7 @@ endobj >> endobj -150 0 obj +170 0 obj << /Type /Annot /Subtype /Link @@ -1894,7 +2090,7 @@ endobj >> endobj -151 0 obj +171 0 obj << /Type /Annot /Subtype /Link @@ -1911,7 +2107,7 @@ endobj >> endobj -152 0 obj +172 0 obj << /Type /Annot /Subtype /Link @@ -1928,7 +2124,7 @@ endobj >> endobj -153 0 obj +173 0 obj << /Type /Annot /Subtype /Link @@ -1945,7 +2141,7 @@ endobj >> endobj -154 0 obj +174 0 obj << /Type /Annot /Subtype /Link @@ -1962,11 +2158,11 @@ endobj >> endobj -155 0 obj +175 0 obj << /Type /Annot /Subtype /Link - /Rect [61.07 444.29846 113.75059 457.00848] + /Rect [61.07 444.29846 116.50165 457.00848] /Border [0 0 0] /A << /Type /Action @@ -1979,62 +2175,11 @@ endobj >> endobj -156 0 obj +176 0 obj << /Type /Annot /Subtype /Link - /Rect [61.07 416.61075 84.91 429.32077] - /Border [0 0 0] - /A << - /Type /Action - /S /URI - /URI (https://play.google.com/store/apps/details?id=zps.games.show) - >> - /F 4 - /StructParent 8 - /Contents (https://play.google.com/store/apps/details?id=zps.games.show) ->> -endobj - -157 0 obj -<< - /Type /Annot - /Subtype /Link - /Rect [97.95386 416.61075 136.44386 429.32077] - /Border [0 0 0] - /A << - /Type /Action - /S /URI - /URI (https://play.google.com/store/apps/details?id=zps.games.burkozel) - >> - /F 4 - /StructParent 9 - /Contents (https://play.google.com/store/apps/details?id=zps.games.burkozel) ->> -endobj - -158 0 obj -<< - /Type /Annot - /Subtype /Link - /Rect [61.07 388.92303 93.12 401.63303] - /Border [0 0 0] - /A << - /Type /Action - /S /URI - /URI (https://play.google.com/store/apps/details?id=zps.games.bida3d.vn) - >> - /F 4 - /StructParent 10 - /Contents (https://play.google.com/store/apps/details?id=zps.games.bida3d.vn) ->> -endobj - -159 0 obj -<< - /Type /Annot - /Subtype /Link - /Rect [61.07 361.23532 113.506 373.9453] + /Rect [61.07 361.23532 112.14875 373.9453] /Border [0 0 0] /A << /Type /Action @@ -2042,33 +2187,101 @@ endobj /URI (https://play.google.com/store/apps/details?id=vn.kvtm.js) >> /F 4 - /StructParent 11 + /StructParent 8 /Contents (https://play.google.com/store/apps/details?id=vn.kvtm.js) >> endobj -160 0 obj +177 0 obj << /Type /Annot /Subtype /Link - /Rect [50.4 306.08615 116.4 318.79614] + /Rect [61.07 333.5476 84.91 346.2576] /Border [0 0 0] /A << /Type /Action /S /URI - /URI (https://github.com/tiennm99/vngeoguessr) + /URI (https://play.google.com/store/apps/details?id=zps.games.show) >> /F 4 - /StructParent 12 - /Contents (https://github.com/tiennm99/vngeoguessr) + /StructParent 9 + /Contents (https://play.google.com/store/apps/details?id=zps.games.show) >> endobj -161 0 obj +178 0 obj << /Type /Annot /Subtype /Link - /Rect [50.4 253.78296 131.63 266.49292] + /Rect [90.933846 333.5476 129.42384 346.2576] + /Border [0 0 0] + /A << + /Type /Action + /S /URI + /URI (https://play.google.com/store/apps/details?id=zps.games.burkozel) + >> + /F 4 + /StructParent 10 + /Contents (https://play.google.com/store/apps/details?id=zps.games.burkozel) +>> +endobj + +179 0 obj +<< + /Type /Annot + /Subtype /Link + /Rect [155.09154 333.5476 187.14154 346.2576] + /Border [0 0 0] + /A << + /Type /Action + /S /URI + /URI (https://play.google.com/store/apps/details?id=zps.games.bida3d.vn) + >> + /F 4 + /StructParent 11 + /Contents (https://play.google.com/store/apps/details?id=zps.games.bida3d.vn) +>> +endobj + +180 0 obj +<< + /Type /Annot + /Subtype /Link + /Rect [50.4 278.39844 86.01 291.10843] + /Border [0 0 0] + /A << + /Type /Action + /S /URI + /URI (https://github.com/tiennm99/mitisrv) + >> + /F 4 + /StructParent 12 + /Contents (https://github.com/tiennm99/mitisrv) +>> +endobj + +181 0 obj +<< + /Type /Annot + /Subtype /Link + /Rect [50.4 226.09521 113.78 238.80524] + /Border [0 0 0] + /A << + /Type /Action + /S /URI + /URI (https://github.com/tiennm99/test-sharding) + >> + /F 4 + /StructParent 13 + /Contents (https://github.com/tiennm99/test-sharding) +>> +endobj + +182 0 obj +<< + /Type /Annot + /Subtype /Link + /Rect [50.4 186.50201 131.63 199.21198] /Border [0 0 0] /A << /Type /Action @@ -2076,91 +2289,135 @@ endobj /URI (https://github.com/tiennm99/store-scraper-bot) >> /F 4 - /StructParent 13 + /StructParent 14 /Contents (https://github.com/tiennm99/store-scraper-bot) >> endobj -162 0 obj +183 0 obj << /Type /Annot /Subtype /Link - /Rect [50.4 214.1897 177.11 226.89972] + /Rect [142.36 186.50201 201.39 199.21198] /Border [0 0 0] /A << /Type /Action /S /URI - /URI (https://github.com/tiennm99) + /URI (https://github.com/tiennm99/store-scraper-bot-java) >> /F 4 - /StructParent 14 - /Contents (https://github.com/tiennm99) + /StructParent 15 + /Contents (https://github.com/tiennm99/store-scraper-bot-java) >> endobj -163 0 obj +184 0 obj +<< + /Type /Annot + /Subtype /Link + /Rect [50.4 134.19873 95.65 146.90875] + /Border [0 0 0] + /A << + /Type /Action + /S /URI + /URI (https://github.com/tiennm99/miti99bot) + >> + /F 4 + /StructParent 16 + /Contents (https://github.com/tiennm99/miti99bot) +>> +endobj + +185 0 obj << /Type /Page /Resources << /ProcSet [/PDF /Text /ImageC /ImageB] /ColorSpace << - /c0 141 0 R + /c0 161 0 R >> /XObject << - /x0 165 0 R + /x0 189 0 R >> /Font << - /f0 123 0 R - /f1 129 0 R - /f2 135 0 R + /f0 143 0 R + /f1 149 0 R + /f2 155 0 R >> >> /MediaBox [0 0 612 792] - /StructParents 15 + /StructParents 17 /Tabs /S /Parent 1 0 R - /Contents 164 0 R - /Annots [148 0 R 149 0 R 150 0 R 151 0 R 152 0 R 153 0 R 154 0 R 155 0 R 156 0 R 157 0 R 158 0 R 159 0 R 160 0 R 161 0 R 162 0 R] + /Contents 186 0 R + /Annots [168 0 R 169 0 R 170 0 R 171 0 R 172 0 R 173 0 R 174 0 R 175 0 R 176 0 R 177 0 R 178 0 R 179 0 R 180 0 R 181 0 R 182 0 R 183 0 R 184 0 R] >> endobj -164 0 obj +186 0 obj << - /Length 4889 + /Length 4424 /Filter /FlateDecode >> stream -x]Y~_Yx%QԮd767{4 iv=.THդ6{P$2xq ͫo"/yKW=0B %׌H́K`4#o<<K۟eNSK%o(qzWRJّ\3IW~$.)O5Lalrci_,fo^f+MθaD ݑ#ĵ!p x`ކpG;8Z+͑Q&z%chg.u6hqw$׮vO;F#|x#,PƳLKy>!H(?2#DH̜UD/y7SRn6r)#0A3b[<_S-,"?SW }x6oySż,Zv[SN^-ݲc'QsÀc Ŧ`. 6jr -{bM01fZ$Xܻ(e2 $O*5W??~]Za_Ia&D} IAɷЖ:mMO*ګѻ[9R -`1mAiBtԦq(r|{դGS k|0AR͑8뷠C!m~!̩R$f&=1bwLW1?+ ;=]DuӲ)uRH.CJ4$uUBD=r8ʴ+wV|Nv/w\<,R ?#مԮO^B)*) ]٨UO Qq{.B̀4FM !䚘6 -F64޴*f4-BBOhq0g< -&JaX0uDZ\q`b>D7񓙩ɹMPMG~T^kC@BFSa=fGTlyfcW{]xF]N<3V!YFqedS>`h"%)JtCB6> "PlG'zwQmo(aTW鑈lu{$QgJ_gs0rr^4}ɉ:݈y60ES{BT^aZXVVX̊cA1$>XX>71)kܦIR-1㑳 ..#A4X)bz^hmF`TH WI'MSQ/۲qPl5#ܑipqǽhsc RSLX-ΩbfryOJkB&ۤT`]fۄ'XJٽ'nre捧 Un#W^!aqyq߽݁fInfPDH pFHn6?qۉ3`UBF?U/,|K$hR]awwE^m+=IO L!3-|"QwUKHiRsH,8l`4X *l0]lQI7fc6+3g<# ntm-jwGH+"Nc?u"3FSϥaَ9ЌK$T]M g]fhvm H,!`%8v)R#853;!$3B - -̢OMzӎ - uv 娤[)V:(#`ζWeTV~ -' -Y吇BHJVr6X@^Jqpi R\F'kykkHp&Y;m1>-[L<< ༀ;奿3O[e\mcQxN+w*w*NjliL^_Rƀ,+XcV(`6Vy%lBH,E3>yUtQ8 -ё}t9. -qANTHbgdTv8L0"@8Z<) -LWXZA'םÓ<QWɱiŀMGSM UWu=Bvk@vq?>Ϩk˶V 2jXҙ;m5(Ur3 1:(キX(7;15C.< nfHzmazvV۹T]-jNVxxmg]n9RxP_qԂFK Ө{= ,eശd+ers-)( PT_hKiq@q "k>tŔLfhȡE0F|ukĿF W*Z8tF51¿]z_$ecEf24;q4 -U*-~kx,Fjgŧ(Fl( tNQē,gȑ&. P:GB:Wh$ 6duc;i)1tLKP=fy%ABO1d>6jR Rjf*%^< -|Y[}WZZTX{4I`v'|3멕2um.J -O^5`*8F4ºKKnYh.g"Lc~iaogHB6ׅM\Hq7v|MGvϕK`Ovl/.Y4 L^ӏ-}(TgRT%qvNVn/kf[ g쪠&RKbL*_̐ĕcy5oz^Ժΐ'GWw: -#Jt_$΄>y0M1UxA6&;A,'4prTł73܂iEhAQk[舘}r'}mfEff, ڋ &0syH}Du)1^Mȶ[VdB+x9lLCC9 U*d&(I,zh@#ę IEL~v>t?)%)zzdV⊼-?ڠęJ b"aց|tCWu}c ^M -CuMz$eoz꒯Z˴Zx+,LrU̗6Tg3Wħ9ZIjc3']GSjF<)j:xDg0|`f' C(2،@$(=fw%,8&nGlk^ ;L1vj1]4g Wa@)j”ΩjKN:&U -w~^Y!"'kk,I2h VqxuTFf:ɷ>~mCcQ֛Ԅ&xp⪦vk: +| iQn\;|+b~RMF%& OI`G6&/F^VIԺH^B5 -G}Mfuhڲn]U:Aw -٦!} IqUG/)Xk8&+|dR5AHqj5Ӻũbb(߈BEC0qcI 7+t(k낞Ƨf Gc  ZZ|8R"Hj2> 0ėq: X^jqwڐ=wy/__w'g/cJHM A`4#o=yKweNSK~|{{vnGo^ݟ/~K)ۓdrǫooǖOLDĽ2'Lc' jO_>=II:q=a_30*+u?K=r_\kRZK ` +96sZ&L"gD. s_myA[PBP +JG I +F+ٓ+NƎ2 @)Q~ aj}4=9H6-AOJ&dR^ai=^nqH"bN* ÷rPOT4S\śϼZjؕ୹+lJ1m}{r46+A /tx\ \G'&beWO"N^>Yl cgY%cχ׿9\Xn(6@piy}IA. Bt&VD+ :'NG{qM X.l4qM.~#yH4 T"fpe\^?TpZ'[%,TvD"#L C_*1gDjvU@ldl̮ +)Gʫ?֤/ +mb5, ̀4Ff {Fr 4fMh>X>Ee8]Œ!\$[YѓaD+TATFjBTu3¢S? +2˂-nur%'taƗ!+B +0]"tՅ>Ļ?ɹTMdwrVޡGq#MVaOX4F8DhU[)zXgcS(7ADj4kdvǗ=PDYu Y m f1V u?}#|).xSWԊD6u>p!|08?Q"hoj]JYX8YweB̟:-nTlgqC[ǝ3ٸ xlv u!B@FSͨ +nH'5^fv%e:9Iu +{CkVN.L  e:2]mg`615R&Ռ^(9]ѐ87 ^s|;kbl8 U_(<Ȧ&EM9pUYkٲ%5=k:~Jq\ PRLj`R1`ҁPs%ޑOQ$Cd39t,rnv߹ +ȱr"ЌF]~m'Dר %BA`! +09ߜ(2\1)XyȠP-Ii;b6g[5bd7P'.49 {jܫ(hF +Ij=Q +> J.d,İaƴ/LEZ~57>=R "]hye Îyɀʏc'JL! tѪ>*U@s7=0g,#]i1P&ʺǤxvZ'@u,]FRHPpM%xEHN E3Z/G_BdIEwKrOduɄ!H\Pه_=m +C0qeYd4=ϯye`g"K1J5l;Tc/rZ/,kt],kt ? x+6,7D#ՍJs% c9>qc ՞4љ .=.*a![ֹ\>s+37*ٓ{a?2vRLTA}0ݘi &x恶@_b⃨(P3IY{U.lKu+YQPd@n=H^8.$ }&@*f(}&O"3aEC)G*}k$097ZpsT E.+ĜCHL8Ā 'i7cŲ$/G5,Tlȳ,e;I4-d%n* -uiLB[,b:CK CkBQ_Ye6H$U\V#?i{ś έ4PJДf?[wm"FY# YvD1&솞JH=RSB!9Xk{H#3 $.xM5hKUKYZT<1Nky_HX&>Ǩxla.cNQ;5Uw,Aj ^N=*Z-n3:4e7bW0U @Ug.s3fC%x%FC-aF]Ҩg-xfm1uVER܄J٤ {O+.yU]yg5Ajq؊'sJJm!ʂsgL>|+4m_>ExsE a|?t4J\@3.rtCk-a`7+U-ᬔk#&R hRl"{W,TI5 g'Fvӧ`s+^&5ͣlw 9x|FVu|fSlh@-`[ìF'4fOCH6bgh X3D3rV*(3A+9FZiQ_GG7KRVSzUK363~`8{$1}I"TR%?  +\X2yB> + /Font << + /f0 155 0 R + /f1 149 0 R + >> + >> + /MediaBox [0 0 612 792] + /StructParents 18 + /Parent 1 0 R + /Contents 188 0 R +>> +endobj + +188 0 obj +<< + /Length 1458 + /Filter /FlateDecode +>> +stream +xYr6}WlK p'9:g4SE}5Q/{ZEw@%CL$.9?qgg .\UV0qЌ*Z5z+ϕꩺ\T jf,֡-'KؒII7=_ϰxW]/U5l[߯py?Vs*'~Vk7NnN>>qITLK3-};ϾIB4s"gr^o yM@nނ2Ƙ8|Ύ6Oz5` hΆd M3:Y2.#L95Tւ/c?Nb' ))ǪA`{^J{ia䷐n⌛$"2 /L$>B9m)ΦRJ9c %[S8QGk 7qOҧ/&``6r{ "PV$V: ¡ːlU9.}DzpeCB3 xZ\Ҹjf%`.0'A,`{x Bw?54-@^ Y#I0D:_/=X?p8"t<|QUb!e24UG,! +)b39gK=G6E+ $`tAgٽMwIc }HuF !WW9]6.Gv 2%9%T5)=C-[`vV*HA_Mf!]'y5_wӌO +endstream +endobj + +189 0 obj << /Length 516144 /Type /XObject @@ -2168,7 +2425,7 @@ endobj /Filter /DCTDecode /Width 2974 /Height 2974 - /ColorSpace 141 0 R + /ColorSpace 161 0 R /BitsPerComponent 8 >> stream @@ -3972,32 +4229,32 @@ W endstream endobj -166 0 obj +190 0 obj << /Title (Tien Nguyen Minh - CV) /Author (Tien Nguyen Minh) /Creator (Typst 0.14.2) - /ModDate (D:20260331000000Z) - /CreationDate (D:20260331000000Z) + /ModDate (D:20260611000000Z) + /CreationDate (D:20260611000000Z) >> endobj -167 0 obj +191 0 obj << /Length 1162 /Type /Metadata /Subtype /XML >> stream -Tien Nguyen Minh - CVTien Nguyen MinhTypst 0.14.2en2026-03-31T00:00:00Z2026-03-31T00:00:00Z1application/pdfJnEQQXs7bCOpLfaxuHqbKA==8oe3U4f+o3oDeoTZ97aacg==proof1.7 +Tien Nguyen Minh - CVTien Nguyen MinhTypst 0.14.2en2026-06-11T00:00:00Z2026-06-11T00:00:00Z2application/pdfOX6fvau4ARkfhhTFn7qB3g==8oe3U4f+o3oDeoTZ97aacg==proof1.7 endstream endobj -168 0 obj +192 0 obj << /Type /Catalog /Pages 1 0 R - /Metadata 167 0 R + /Metadata 191 0 R /Lang (en) /StructTreeRoot 8 0 R /MarkInfo << @@ -4012,183 +4269,207 @@ endobj endobj xref -0 169 +0 193 0000000000 65535 f 0000000016 00000 n -0000000082 00000 n -0000000162 00000 n -0000000285 00000 n -0000000374 00000 n -0000000478 00000 n -0000000580 00000 n -0000000666 00000 n -0000001042 00000 n -0000001621 00000 n -0000001861 00000 n -0000001955 00000 n -0000002047 00000 n -0000002141 00000 n -0000002233 00000 n -0000002327 00000 n -0000002419 00000 n -0000002513 00000 n -0000002605 00000 n -0000002699 00000 n -0000002791 00000 n -0000002885 00000 n -0000002977 00000 n -0000003069 00000 n -0000003156 00000 n -0000003301 00000 n -0000003387 00000 n -0000003466 00000 n -0000003553 00000 n -0000003632 00000 n -0000003709 00000 n -0000003846 00000 n -0000003928 00000 n -0000004083 00000 n -0000004225 00000 n -0000004311 00000 n -0000004390 00000 n -0000004477 00000 n -0000004556 00000 n -0000004633 00000 n -0000004770 00000 n -0000004852 00000 n -0000005007 00000 n -0000005152 00000 n -0000005238 00000 n -0000005317 00000 n -0000005404 00000 n -0000005483 00000 n -0000005560 00000 n -0000005697 00000 n -0000005779 00000 n -0000005934 00000 n -0000006028 00000 n -0000006115 00000 n -0000006268 00000 n -0000006353 00000 n -0000006434 00000 n -0000006531 00000 n -0000006668 00000 n -0000006823 00000 n -0000006912 00000 n -0000006997 00000 n -0000007078 00000 n -0000007175 00000 n -0000007312 00000 n -0000007467 00000 n -0000007556 00000 n -0000007641 00000 n -0000007722 00000 n -0000007829 00000 n -0000007966 00000 n -0000008121 00000 n -0000008258 00000 n -0000008413 00000 n -0000008502 00000 n -0000008587 00000 n -0000008668 00000 n -0000008765 00000 n -0000008902 00000 n -0000009057 00000 n -0000009146 00000 n -0000009291 00000 n -0000009377 00000 n -0000009456 00000 n -0000009543 00000 n -0000009622 00000 n -0000009716 00000 n -0000009808 00000 n -0000009904 00000 n -0000009991 00000 n -0000010130 00000 n -0000010215 00000 n -0000010296 00000 n -0000010389 00000 n -0000010478 00000 n -0000010563 00000 n -0000010644 00000 n -0000010731 00000 n -0000010820 00000 n -0000010908 00000 n -0000010989 00000 n -0000011078 00000 n -0000011159 00000 n -0000011259 00000 n -0000011353 00000 n -0000011450 00000 n -0000011539 00000 n -0000011628 00000 n -0000011726 00000 n -0000011882 00000 n -0000012031 00000 n -0000012180 00000 n -0000012329 00000 n -0000012478 00000 n -0000012627 00000 n -0000012775 00000 n -0000012923 00000 n -0000013066 00000 n -0000013171 00000 n -0000013259 00000 n -0000013341 00000 n -0000013486 00000 n -0000013626 00000 n -0000013803 00000 n -0000014163 00000 n -0000014252 00000 n -0000014502 00000 n -0000015413 00000 n -0000017453 00000 n -0000017629 00000 n -0000018591 00000 n -0000018680 00000 n -0000018928 00000 n -0000020734 00000 n -0000027079 00000 n -0000027254 00000 n -0000027924 00000 n -0000028013 00000 n -0000028260 00000 n -0000029606 00000 n -0000034009 00000 n -0000034047 00000 n -0000034470 00000 n -0000034520 00000 n -0000034570 00000 n -0000034620 00000 n -0000034670 00000 n -0000034721 00000 n -0000034993 00000 n -0000035254 00000 n -0000035510 00000 n -0000035789 00000 n -0000036061 00000 n -0000036318 00000 n -0000036603 00000 n -0000036930 00000 n -0000037261 00000 n -0000037607 00000 n -0000037949 00000 n -0000038274 00000 n -0000038563 00000 n -0000038865 00000 n -0000039130 00000 n -0000039615 00000 n -0000044584 00000 n -0000560916 00000 n -0000561095 00000 n -0000562348 00000 n +0000000090 00000 n +0000000170 00000 n +0000000293 00000 n +0000000382 00000 n +0000000486 00000 n +0000000588 00000 n +0000000674 00000 n +0000001080 00000 n +0000001644 00000 n +0000001775 00000 n +0000002041 00000 n +0000002135 00000 n +0000002227 00000 n +0000002321 00000 n +0000002413 00000 n +0000002510 00000 n +0000002601 00000 n +0000002694 00000 n +0000002785 00000 n +0000002878 00000 n +0000002969 00000 n +0000003062 00000 n +0000003153 00000 n +0000003246 00000 n +0000003337 00000 n +0000003429 00000 n +0000003515 00000 n +0000003657 00000 n +0000003743 00000 n +0000003822 00000 n +0000003909 00000 n +0000003988 00000 n +0000004065 00000 n +0000004202 00000 n +0000004284 00000 n +0000004439 00000 n +0000004584 00000 n +0000004670 00000 n +0000004749 00000 n +0000004836 00000 n +0000004915 00000 n +0000005006 00000 n +0000005143 00000 n +0000005225 00000 n +0000005380 00000 n +0000005472 00000 n +0000005609 00000 n +0000005691 00000 n +0000005846 00000 n +0000005988 00000 n +0000006074 00000 n +0000006153 00000 n +0000006240 00000 n +0000006319 00000 n +0000006396 00000 n +0000006533 00000 n +0000006615 00000 n +0000006770 00000 n +0000006915 00000 n +0000007001 00000 n +0000007080 00000 n +0000007167 00000 n +0000007246 00000 n +0000007323 00000 n +0000007460 00000 n +0000007542 00000 n +0000007697 00000 n +0000007791 00000 n +0000007878 00000 n +0000008038 00000 n +0000008123 00000 n +0000008204 00000 n +0000008321 00000 n +0000008458 00000 n +0000008613 00000 n +0000008750 00000 n +0000008905 00000 n +0000009042 00000 n +0000009197 00000 n +0000009286 00000 n +0000009371 00000 n +0000009452 00000 n +0000009549 00000 n +0000009686 00000 n +0000009841 00000 n +0000009930 00000 n +0000010015 00000 n +0000010096 00000 n +0000010186 00000 n +0000010275 00000 n +0000010360 00000 n +0000010441 00000 n +0000010531 00000 n +0000010620 00000 n +0000010706 00000 n +0000010787 00000 n +0000010884 00000 n +0000011021 00000 n +0000011176 00000 n +0000011266 00000 n +0000011412 00000 n +0000011501 00000 n +0000011583 00000 n +0000011672 00000 n +0000011754 00000 n +0000011851 00000 n +0000011945 00000 n +0000012043 00000 n +0000012132 00000 n +0000012274 00000 n +0000012363 00000 n +0000012447 00000 n +0000012542 00000 n +0000012633 00000 n +0000012722 00000 n +0000012806 00000 n +0000012895 00000 n +0000012986 00000 n +0000013075 00000 n +0000013157 00000 n +0000013246 00000 n +0000013328 00000 n +0000013428 00000 n +0000013522 00000 n +0000013619 00000 n +0000013708 00000 n +0000013797 00000 n +0000013895 00000 n +0000014051 00000 n +0000014200 00000 n +0000014349 00000 n +0000014498 00000 n +0000014647 00000 n +0000014796 00000 n +0000014944 00000 n +0000015092 00000 n +0000015235 00000 n +0000015340 00000 n +0000015428 00000 n +0000015510 00000 n +0000015655 00000 n +0000015795 00000 n +0000015972 00000 n +0000016322 00000 n +0000016410 00000 n +0000016660 00000 n +0000017557 00000 n +0000019517 00000 n +0000019693 00000 n +0000020665 00000 n +0000020756 00000 n +0000021004 00000 n +0000022846 00000 n +0000029305 00000 n +0000029480 00000 n +0000030150 00000 n +0000030239 00000 n +0000030486 00000 n +0000031832 00000 n +0000036198 00000 n +0000036236 00000 n +0000036659 00000 n +0000036709 00000 n +0000036759 00000 n +0000036809 00000 n +0000036855 00000 n +0000036906 00000 n +0000037178 00000 n +0000037439 00000 n +0000037695 00000 n +0000037974 00000 n +0000038246 00000 n +0000038503 00000 n +0000038788 00000 n +0000039115 00000 n +0000039441 00000 n +0000039770 00000 n +0000040116 00000 n +0000040464 00000 n +0000040745 00000 n +0000041039 00000 n +0000041341 00000 n +0000041655 00000 n +0000041940 00000 n +0000042441 00000 n +0000046945 00000 n +0000047228 00000 n +0000048766 00000 n +0000565098 00000 n +0000565277 00000 n +0000566530 00000 n trailer << - /Size 169 - /Root 168 0 R - /Info 166 0 R - /ID [(8oe3U4f+o3oDeoTZ97aacg==) (JnEQQXs7bCOpLfaxuHqbKA==)] + /Size 193 + /Root 192 0 R + /Info 190 0 R + /ID [(8oe3U4f+o3oDeoTZ97aacg==) (OX6fvau4ARkfhhTFn7qB3g==)] >> startxref -562585 +566767 %%EOF \ No newline at end of file diff --git a/miti99.typ b/miti99.typ index 0acb068..21e28df 100644 --- a/miti99.typ +++ b/miti99.typ @@ -6,7 +6,7 @@ name: "Tien Nguyen Minh", title: "Tien Nguyen Minh - CV", footer: context { [#emph[Tien Nguyen Minh -- #str(here().page())\/#str(counter(page).final().first())]] }, - top-note: [ #emph[Last updated in Mar 2026] ], + top-note: [ #emph[Last updated in June 2026] ], locale-catalog-language: "en", text-direction: ltr, page-size: "us-letter", @@ -80,8 +80,8 @@ entries-highlights-space-between-bullet-and-text: 0.3em, date: datetime( year: 2026, - month: 3, - day: 31, + month: 6, + day: 11, ), ) @@ -95,7 +95,7 @@ [ = Tien Nguyen Minh - #headline([Senior Software Engineer]) + #headline([Senior Java Software Engineer]) #connections( [HCMC, Vietnam], @@ -142,15 +142,17 @@ ], main-column-second-row: [ - #summary[Progressed from Game Programming Fresher to Senior Software Engineer. Focused on scalable game server architecture in Java (Netty, Vert.x), with cross-functional contributions to client-side logic in Cocos2d-x and Godot.] + #summary[Progressed from Game Programming Fresher to Senior Software Engineer. Builds and maintains Java game backends and production tooling with cross-functional work across server, client, QA, and release workflows.] - - #link("https://play.google.com/store/apps/details?id=vn.zps.tl2")[Chaos Age 2]: Sole server developer; architected backend from scratch for a global strategy game, 300+ CCU; assisted client team with networking and game logic + - #link("https://play.google.com/store/apps/details?id=vn.zps.tl2")[Chaos Age 2]: Sole server developer for a global strategy game; built Java 21 backend modules with Netty\/Vert.x, Couchbase, Redis, Kafka, Gradle, and GitLab CI\/CD - - #link("https://play.google.com/store/apps/details?id=zps.games.show")[Show] & #link("https://play.google.com/store/apps/details?id=zps.games.burkozel")[Burkozel]: Full-stack contributor on two real-time card games for Myanmar and Russian-speaking markets; delivered server-side logic and client features + - Improved delivery quality with JUnit 5\/Mockito tests, load-test clients, Docker-based local dependencies, and multi-environment build\/deploy pipelines - - #link("https://play.google.com/store/apps/details?id=zps.games.bida3d.vn")[Bida3D]: Implemented matchmaking (server) and cue direction logic (client) for a global 8-ball pool game; applied physics and geometry for accurate ball trajectory simulation + - Built internal AI-assisted Claude Code skills\/plugin marketplace for ZingPlay game-server development, including typed packet-handler scaffolding and framework guidance - - #link("https://play.google.com/store/apps/details?id=vn.kvtm.js")[Sky Garden]: Maintained server stability for a live farm game (\~5,000 CCU); resolved production issues and developed new event features + - #link("https://play.google.com/store/apps/details?id=vn.kvtm.js")[Sky Garden]: Maintained production Java server features for a live farm game; handled event logic, web payment fixes, Redis\/runtime diagnostics, and release support + + - #link("https://play.google.com/store/apps/details?id=zps.games.show")[Show], #link("https://play.google.com/store/apps/details?id=zps.games.burkozel")[Burkozel], and #link("https://play.google.com/store/apps/details?id=zps.games.bida3d.vn")[Bida3D]: Delivered server-side gameplay, matchmaking, and client logic across real-time card and pool games ], ) @@ -159,59 +161,76 @@ #regular-entry( [ - #strong[#link("https://github.com/tiennm99/vngeoguessr")[VN GeoGuessr]] + #strong[#link("https://github.com/tiennm99/mitisrv")[MiTiSrv]] ], [ - Aug 2025 + 2018 – 2025 ], main-column-second-row: [ - #summary[Location-guessing game for Vietnam using Leaflet.js, Mapillary, and OpenStreetMap with street-level panoramic imagery and map-based scoring.] + #summary[Lightweight Java game server framework using Netty; personal framework for experimenting with reusable multiplayer server architecture.] ], ) #regular-entry( [ - #strong[#link("https://github.com/tiennm99/store-scraper-bot")[Store Scraper Bot]] + #strong[#link("https://github.com/tiennm99/test-sharding")[Test Sharding]] ], [ - Nov 2025 – Dec 2025 + 2025 ], main-column-second-row: [ - #summary[Telegram bot that automates scraping and reporting of app metadata from mobile app stores.] + #summary[Java server experiment for sharding with Couchbase replication, Redis replication, and Kafka.] ], ) #regular-entry( [ - #strong[#link("https://github.com/tiennm99")[Pet Projects & Open Source]] + #strong[#link("https://github.com/tiennm99/store-scraper-bot")[Store Scraper Bot] \/ #link("https://github.com/tiennm99/store-scraper-bot-java")[Java original]] ], [ - 2018 – present + Nov 2025 – present ], main-column-second-row: [ - #summary[Various personal projects spanning game servers, bots, and web tools. Occasionally contribute to open-source projects. Full portfolio on GitHub.] + #summary[Telegram bot for tracking Apple App Store and Google Play metadata updates; original Java version later ported to JavaScript.] + + ], +) + +#regular-entry( + [ + #strong[#link("https://github.com/tiennm99/miti99bot")[Miti99bot]] + + ], + [ + 2026 + + ], + main-column-second-row: [ + #summary[Go Telegram bot framework deployed serverlessly on AWS Lambda\/SAM with Firestore and Gemini integration.] ], ) == Skills -#strong[Languages:] Java, Go, JavaScript, Shell +#strong[Languages:] Java, Go, JavaScript\/TypeScript, Shell -#strong[Frameworks & Libraries:] Netty, Vert.x, Spring Boot, Cocos2d-x, Godot +#strong[Frameworks & Libraries:] Netty, Vert.x, Spring Boot, JUnit 5, Mockito, Cocos2d-x, Godot -#strong[Databases:] Couchbase, Redis, MySQL, ClickHouse +#strong[Databases:] Couchbase, Redis, MySQL, Kafka, ClickHouse -#strong[Infrastructure & DevOps:] Docker, CI\/CD (GitHub Actions\/GitLab CI), Git, Linux, OCI +#strong[Infrastructure & DevOps:] Docker, GitLab CI, GitHub Actions, Linux, AWS Lambda\/SAM, Cloudflare Workers -#strong[Architecture:] Game server architecture, real-time multiplayer systems, event-driven design +#strong[Architecture:] Object-oriented design, game server architecture, real-time multiplayer systems, event-driven design, clean reusable code + +#strong[Delivery Practices:] Unit testing, code review, production debugging, CI\/CD, AI-assisted development workflows #strong[Languages (Spoken):] Vietnamese (Native), English (TOEIC 600+)