{"id":2774,"date":"2024-07-29T18:29:54","date_gmt":"2024-07-29T09:29:54","guid":{"rendered":"https:\/\/manvscloud.com\/?p=2774"},"modified":"2024-07-29T18:29:55","modified_gmt":"2024-07-29T09:29:55","slug":"ncloud-custom-image%eb%a5%bc-%ed%86%b5%ed%95%9c-%ed%9a%a8%ec%9c%a8%ec%a0%81%ec%9d%b8-%eb%84%a4%ec%9d%b4%eb%b2%84-%ed%81%b4%eb%9d%bc%ec%9a%b0%eb%93%9c-cloud-functions-%ec%8b%a4%ed%96%89-%eb%b0%a9","status":"publish","type":"post","link":"https:\/\/manvscloud.com\/?p=2774","title":{"rendered":"[NCLOUD] Custom Image\ub97c \ud1b5\ud55c \ud6a8\uc728\uc801\uc778 \ub124\uc774\ubc84 \ud074\ub77c\uc6b0\ub4dc Cloud Functions \uc2e4\ud589 \ubc29\ubc95"},"content":{"rendered":"\n<p>\uc548\ub155\ud558\uc138\uc694. MANVSCLOUD \uae40\uc218\ud604\uc785\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\uc624\ub298\uc740 \ub124\uc774\ubc84 \ud074\ub77c\uc6b0\ub4dc\uc758 \uc720\uc6a9\ud55c \uae30\ub2a5 \uc911 \ud558\ub098\uc778 Cloud Functions \uc11c\ube44\uc2a4\uc640 \ud2b9\ud788 \uadf8 \uc911\uc5d0\uc11c\ub3c4 custom image \uae30\ub2a5\uc5d0 \ub300\ud574 \uc54c\uc544\ubcf4\uace0\uc790 \ud569\ub2c8\ub2e4.<br>Cloud Functions\ub294 \uc11c\ubc84\ub9ac\uc2a4 \ucef4\ud4e8\ud305 \ud658\uacbd\uc744 \uc81c\uacf5\ud558\uc5ec \uac1c\ubc1c\uc790\uac00 \uc560\ud50c\ub9ac\ucf00\uc774\uc158 \uac1c\ubc1c\uc5d0 \ub354 \uc9d1\uc911\ud560 \uc218 \uc788\ub3c4\ub85d \ub3d5\uc2b5\ub2c8\ub2e4.<br>\uc774 \uc11c\ube44\uc2a4\ub294 \ud2b8\ub9ac\uac70\uc5d0 \uc758\ud574 \uc790\ub3d9\uc73c\ub85c \ucf54\ub4dc\uac00 \uc2e4\ud589\ub418\ub294 \ud658\uacbd\uc744 \uc81c\uacf5\ud558\uc5ec \uc0ac\uc6a9\uc790\ub294 \uc11c\ubc84 \uad00\ub9ac\uc5d0 \ub300\ud55c \ubd80\ub2f4 \uc5c6\uc774 \ube44\uc988\ub2c8\uc2a4 \ub85c\uc9c1 \uad6c\ud604\uc5d0\ub9cc \uc9d1\uc911\ud560 \uc218 \uc788\ub294\ub370\uc694.<\/p>\n\n\n\n<p>Cloud Functions\uc5d0\uc11c\ub294 \uae30\ubcf8 \uc81c\uacf5\ub418\ub294 \ub7f0\ud0c0\uc784 \uc678\uc5d0\ub3c4 custom image \uae30\ub2a5\uc744 \ud1b5\ud574 \uc0ac\uc6a9\uc790\uac00 \uc9c1\uc811 \uc815\uc758\ud55c \uc774\ubbf8\uc9c0\ub97c \uc0ac\uc6a9\ud560 \uc218 \uc788\ub294\ub370 \uc774\ub294 \uc0ac\uc6a9\uc790\uac00 \ud544\uc694\ub85c \ud558\ub294 \ud2b9\uc815 \ub77c\uc774\ube0c\ub7ec\ub9ac\ub098 \ub3c4\uad6c\ub97c \uc774\ubbf8\uc9c0\uc5d0 \ud3ec\ud568\uc2dc\ucf1c \ubc30\ud3ec\ud560 \uc218 \uc788\uac8c \ud574\uc8fc\uba70 \uc77c\uad00\ub41c \ud658\uacbd\uc5d0\uc11c \uc5ec\ub7ec \uc561\uc158\uc744 \uc2e4\ud589\ud560 \uc218 \uc788\ub3c4\ub85d \ud569\ub2c8\ub2e4.<br>custom image\ub97c \uc0ac\uc6a9\ud568\uc73c\ub85c\uc368 \uae30\ubcf8 \uc774\ubbf8\uc9c0\uc5d0\uc11c \uc81c\uacf5\ud558\uc9c0 \uc54a\ub294 \ucd94\uac00\uc801\uc778 \uc124\uc815\uc774\ub098 \ub77c\uc774\ube0c\ub7ec\ub9ac\ub97c \ud3ec\ud568\uc2dc\ud0ac \uc218 \uc788\uc5b4 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc758 \ud2b9\uc218\ud55c \uc694\uad6c\uc0ac\ud56d\uc744 \ubcf4\ub2e4 \uc720\uc5f0\ud558\uac8c \ub300\uc751\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\uc774\ubc88 \ud3ec\uc2a4\ud305\uc5d0\uc11c\ub294 \uc65c custom image\ub97c \uc0ac\uc6a9\ud574\uc57c \ud558\ub294\uc9c0, \uadf8\ub9ac\uace0 \uc5b4\ub5bb\uac8c \uc0ac\uc6a9\ud560 \uc218 \uc788\ub294\uc9c0\uc5d0 \ub300\ud574 \uc790\uc138\ud788 \uc0b4\ud3b4\ubcf4\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<ul>\n<li><strong>[\ucc38\uace0] Cloud Functions &#8211; custom image \uac00\uc774\ub4dc :<\/strong> <a href=\"https:\/\/guide.ncloud-docs.com\/docs\/cloudfunctions-example-customimage\">https:\/\/guide.ncloud-docs.com\/docs\/cloudfunctions-example-customimage<\/a><\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading has-white-color has-vivid-green-cyan-background-color has-text-color has-background has-link-color wp-elements-fd81cd5f955d85e5f0acea037ead21d1\"> Custom Image\ub97c \uc0ac\uc6a9\ud560 \uc218 \uc788\uc5b4\uc57c \ud558\ub294 \uc774\uc720<\/h3>\n\n\n\n<p>Cloud Functions\ub97c \uc0ac\uc6a9\ud558\uba74\uc11c \ud45c\uc900 \ub7f0\ud0c0\uc784 \ud658\uacbd\uc758 \uc81c\uc57d \uc0ac\ud56d\uc5d0 \ubd80\ub52a\ud788\uc2e0 \uc801\uc774 \uc788\uc744\uac81\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\uccab\ubc88\uc9f8, Cloud Functions\uc758 \uae30\ubcf8 \ub7f0\ud0c0\uc784\uc740 \uc77c\ubc18\uc801\uc73c\ub85c \uac04\ub2e8\ud55c API \uc694\uccad \uc815\ub3c4\ub294 \uc0ac\uc6a9\uc774 \uac00\ub2a5\ud558\uc9c0\ub9cc \ubaa8\ub4e0 \ub77c\uc774\ube0c\ub7ec\ub9ac\ub098 \ub3c4\uad6c\ub97c \uc9c0\uc6d0\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.<br>\uc608\ub97c \ub4e4\uc5b4 Object Storage API\ub97c \uc0ac\uc6a9\ud558\uae30 \uc704\ud55c boto3 \ub77c\uc774\ube0c\ub7ec\ub9ac\uac00 \ud544\uc694\ud558\uac70\ub098 AI \ud504\ub85c\uc81d\ud2b8\ub97c \uc704\ud574 LangChain \ub77c\uc774\ube0c\ub7ec\ub9ac\ub97c \uc0ac\uc6a9\ud574\uc57c\ud560 \uacbd\uc6b0 \uc774\ub7ec\ud55c \ub77c\uc774\ube0c\ub7ec\ub9ac\ub97c \uae30\ubcf8\uc801\uc73c\ub85c \ud3ec\ud568\ud558\uc9c0 \uc54a\uc73c\ubbc0\ub85c \ub2e4\ub978 \ubc29\ubc95\uc774 \ud544\uc694\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"809\" height=\"239\" src=\"https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2024\/07\/29123137\/image-1.png\" alt=\"\" class=\"wp-image-2776\" srcset=\"https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2024\/07\/29123137\/image-1.png 809w, https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2024\/07\/29123137\/image-1-300x89.png 300w, https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2024\/07\/29123137\/image-1-768x227.png 768w\" sizes=\"(max-width: 809px) 100vw, 809px\" \/><\/figure>\n\n\n\n<p>\ub450\ubc88\uc9f8, \uc704 \uc81c\uc57d \uc0ac\ud56d \ubb38\uc81c\ub85c \uac00\uc0c1 \ud658\uacbd\uc5d0\uc11c \ub77c\uc774\ube0c\ub7ec\ub9ac\ub97c \uc124\uce58\ud558\uace0 .zip \ud30c\uc77c\ub85c \uc555\ucd95\ud558\uc5ec \ud30c\uc77c\ub85c \uc5c5\ub85c\ub4dc \ud558\ub294 \ubc29\ubc95\uc774 \uc788\uc2b5\ub2c8\ub2e4. \ud558\uc9c0\ub9cc \uc774 \uc5ed\uc2dc \uc5c5\ub85c\ub4dc\ud558\ub294 \ud30c\uc77c\uc774 38MB \uc774\uc0c1\uc77c \uacbd\uc6b0 \ud30c\uc77c \uc5c5\ub85c\ub4dc \uc81c\ud55c\uc774 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"494\" height=\"206\" src=\"https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2024\/07\/29123121\/image.png\" alt=\"\" class=\"wp-image-2775\" srcset=\"https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2024\/07\/29123121\/image.png 494w, https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2024\/07\/29123121\/image-300x125.png 300w\" sizes=\"(max-width: 494px) 100vw, 494px\" \/><\/figure>\n\n\n\n<p>\uc704 \uc81c\uc57d \uc0ac\ud56d\uc5d0 \ub300\ud55c \ud574\ub2f5\uc774 \ubc14\ub85c custom image\ub97c \ud65c\uc6a9\ud558\ub294 \uac83\uc785\ub2c8\ub2e4.<\/p>\n\n\n\n<p>Custom image\ub97c \uc0ac\uc6a9\ud558\uba74 \ud544\uc694\ud55c \ub77c\uc774\ube0c\ub7ec\ub9ac, \ud504\ub808\uc784\uc6cc\ud06c, \ub610\ub294 \ub2e4\ub978 \uc18c\ud504\ud2b8\uc6e8\uc5b4 \ub3c4\uad6c\ub97c \ud3ec\ud568\ud558\uc5ec \uc790\uc2e0\ub9cc\uc758 \ub7f0\ud0c0\uc784 \ud658\uacbd\uc744 \uad6c\uc131\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<br>\ub610\ud55c \ud070 \uc6a9\ub7c9\uc758 \ub77c\uc774\ube0c\ub7ec\ub9ac\ub098 \uc758\uc874\uc131 \ud30c\uc77c\uc5d0 \ub300\ud55c \uc81c\uc57d\uc5d0\uc11c\ub3c4 \uc790\uc720\ub85c\uc6cc\uc9d1\ub2c8\ub2e4.<br>(Container Registry \uc774\ubbf8\uc9c0 \uc5ed\uc2dc \uc555\ucd95 \ud06c\uae30\uac00 800MB\ub97c \ucd08\uacfc\ud558\ub294 \uc774\ubbf8\uc9c0\ub294 \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.)<\/p>\n\n\n\n<p>Custom image\ub97c \uc0ac\uc6a9\ud558\uae30 \uc704\ud574\uc11c\ub294 \ub124\uc774\ubc84 \ud074\ub77c\uc6b0\ub4dc\uc5d0\uc11c \uc81c\uacf5\ud558\ub294 \ub7f0\ud0c0\uc784\ubcc4 Base \uc774\ubbf8\uc9c0\ub97c \ud65c\uc6a9\ud574\uc57c \ud558\ub294\ub370 Base \uc774\ubbf8\uc9c0\ub85c python:3.7, nodejs:16\ub97c \uc9c0\uc6d0\ud569\ub2c8\ub2e4.<br>Object Storage API\ub97c \uc0ac\uc6a9\ud558\uae30 \uc704\ud574\uc11c boto3 \ub77c\uc774\ube0c\ub7ec\ub9ac \uc0ac\uc6a9\uc774 \ud544\uc694\ud55c\ub370 boto3\ub97c \uc0ac\uc6a9\ud558\uae30 \uc704\ud574\uc11c\ub294 \uc774\uc81c Python 3.8 \uc774\uc0c1 \ubc84\uc804 \ud65c\uc6a9\uc774 \ud544\uc694\ud569\ub2c8\ub2e4.<br>\uc774\uc640 \uac19\uc774 \ud2b9\uc815 \ub77c\uc774\ube0c\ub7ec\ub9ac\ub97c \uc0ac\uc6a9\ud558\uae30 \uc704\ud574\uc11c\ub294 python, nodejs\uc758 \ubc84\uc804\ub3c4 \uc911\uc694\ud55c\ub370 \uc774\ub7ec\ud55c \ubd80\ubd84\ub3c4 \ud574\uacb0\ud560 \uc218 \uc788\ub294 \ubc29\ubc95\uacfc \ud568\uaed8 Custom image \uc0ac\uc6a9 \ubc29\ubc95\uc744 \uc544\ub798 Hands On Lab\uc5d0\uc11c \uacf5\uc720\ub4dc\ub9ac\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading has-white-color has-vivid-green-cyan-background-color has-text-color has-background has-link-color wp-elements-4c81a8cdb4da61d3afa5b89a18f0478d\"> Hands On Lab<\/h3>\n\n\n\n<p>Object Storage\ub85c PDF \ud30c\uc77c\uc744 \uc5c5\ub85c\ub4dc\ud558\ub294 Action\uc744 \uc0dd\uc131\ud55c\ub2e4\uace0 \uac00\uc815\ud569\uc2dc\ub2e4.<br>Object Storage\uc5d0 \uc5c5\ub85c\ub4dc\ub97c \ud558\uae30 \uc704\ud574 Object Storage API\ub97c \ud65c\uc6a9\ud574\uc57c\ud558\ub2c8 boto3 \ub77c\uc774\ube0c\ub7ec\ub9ac\uac00 \uc124\uce58\ub418\uc5b4\uc788\uc5b4\uc57c\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\uc774 Hands On Lab\uc5d0\uc11c\ub294 Cloud Functions, Container Registry \ub4f1 \uac04\ub2e8\ud55c \uc0dd\uc131 \uacfc\uc815\uc740 \uc0dd\ub7b5\ud569\ub2c8\ub2e4.<br>Object Storage \ubc0f Contrainer Registry\ub97c \uc0ac\uc804\uc5d0 \uc0dd\uc131\ud574\uc8fc\uc138\uc694.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"690\" height=\"365\" src=\"https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2024\/07\/29164757\/image-2.png\" alt=\"\" class=\"wp-image-2785\" style=\"width:504px;height:auto\" srcset=\"https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2024\/07\/29164757\/image-2.png 690w, https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2024\/07\/29164757\/image-2-300x159.png 300w\" sizes=\"(max-width: 690px) 100vw, 690px\" \/><\/figure>\n\n\n\n<p><strong>1) Dockerfile \uc0dd\uc131<\/strong><\/p>\n\n\n\n<p>\uba3c\uc800 \ub124\uc774\ubc84 \ud074\ub77c\uc6b0\ub4dc\uc5d0\uc11c \uc81c\uacf5\ud558\ub294 Base \uc774\ubbf8\uc9c0\ub97c \uc0ac\uc6a9\ud558\uc5ec Python 3.8 \ud658\uacbd\uc744 \uc124\uc815\ud558\ub294 Dockerfile\uc744 \uc791\uc131\ud569\ub2c8\ub2e4. Cloud Functions \uae30\ubcf8 Python 3.7 \uc774\ubbf8\uc9c0\ub97c \uc0ac\uc6a9\ud558\uace0 Python 3.8\uc744 \uc124\uce58\ud6c4 boto3 \ub77c\uc774\ube0c\ub7ec\ub9ac\ub97c \ucd94\uac00\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># Cloud Functions\uc5d0\uc11c \uc81c\uacf5\ud558\ub294 Python 3.7 Base \uc774\ubbf8\uc9c0 \uc0ac\uc6a9\nFROM cloudfunctions.kr.ncr.ntruss.com\/cloudfunctions-python-3.7:latest\n\n# Python 3.8 \ubc84\uc804 \uc124\uce58\nRUN dnf install -y python38\n\n# Python \uae30\ubcf8 \ubc84\uc804\uc744 3.8\ub85c \uc124\uc815\nRUN rm -f \/usr\/local\/bin\/python\nRUN ln -s \/usr\/bin\/python3.8 \/usr\/local\/bin\/python\n\n# boto3 \ub77c\uc774\ube0c\ub7ec\ub9ac \uc124\uce58\nRUN \/usr\/bin\/pip3.8 install boto3\n\nWORKDIR \/\nENTRYPOINT [\"\/bin\/proxy\"]\n<\/pre>\n\n\n\n<p>\uc704 \ubc29\ubc95\uc744 \uc774\ud574\ud588\ub2e4\uba74 \ubc84\uc804 \ubcc0\uacbd \ubc0f \ub2e4\uc591\ud55c \ub77c\uc774\ube0c\ub7ec\ub9ac \uc124\uce58\uac00 \uac00\ub2a5\ud558\ub2e4\ub294 \uac83\uc744 \uc54c \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<p><strong>2) Container Registry \uc0ac\uc6a9<\/strong><\/p>\n\n\n\n<p>\ub124\uc774\ubc84 \ud074\ub77c\uc6b0\ub4dc\uc758 Container Registry\uc5d0 \ub85c\uadf8\uc778 \ud6c4 \uc0dd\uc131\ud55c Dockerfile\ub97c \ube4c\ub4dc\ud558\uace0 \uc774\ubbf8\uc9c0\ub97c \uc5c5\ub85c\ub4dc\ud569\ub2c8\ub2e4. \uc544\ub798\ub294 \uc774 \uacfc\uc815\uc744 \uc218\ud589\ud558\ub294 \uba85\ub839\uc5b4 \uc608\uc2dc\uc785\ub2c8\ub2e4.<\/p>\n\n\n\n<p>{Container-Registry-Endpoint}\ub294 \uc0ac\uc804\uc5d0 \uc0dd\uc131\ud55c Container Registry\uc758 Endpoint\ub97c \uc0ac\uc6a9\ud574\uc90d\ub2c8\ub2e4.<br>\uc774\ub984\uc740 object_storage_pdf_upload\ub85c \uc815\ud574\ub480\uc2b5\ub2c8\ub2e4. \uc6d0\ud558\ub294\ub300\ub85c \ubcc0\uacbd\ud558\uc154\ub3c4 \ub429\ub2c8\ub2e4.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \ub124\uc774\ubc84 \ud074\ub77c\uc6b0\ub4dc Container Registry\uc5d0 \ub85c\uadf8\uc778\ndocker login {Container-Registry-Endpoint}\n\n# Docker \uc774\ubbf8\uc9c0 \ube4c\ub4dc\ndocker build -t {Container-Registry-Endpoint}\/object_storage_pdf_upload:1.0 .\n\n# \ube4c\ub4dc\ub41c \uc774\ubbf8\uc9c0 \ud655\uc778\ndocker images\n\n# Docker \uc774\ubbf8\uc9c0 \uc5c5\ub85c\ub4dc\ndocker push {Container-Registry-Endpoint}\/object_storage_pdf_upload:1.0<\/pre>\n\n\n\n<p><strong>3) Custom Image \ud65c\uc6a9<\/strong><\/p>\n\n\n\n<p>\uc9c0\uae08\uae4c\uc9c0 \uc9c4\ud589\uc774 \uc798 \ub418\uc5c8\ub2e4\uba74 \uc774\uc81c Cloud Functions\uc758 \ub7f0\ud0c0\uc784\uc744 custom image\ub85c \uc120\ud0dd\ud558\uace0 [Contrainer Registry \uc774\ubbf8\uc9c0 \uc120\ud0dd]\uc744 \ud074\ub9ad\ud558\uba74 Contrainer Registry\uc5d0\uc11c push\ud588\ub358 \uc774\ubbf8\uc9c0\ub97c \ud655\uc778\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<p><img decoding=\"async\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAy8AAADQCAYAAAAOAV5hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAEXWSURBVHhe7d0HfE3n\/wfwj0QSMwghRmIklJixY9SsUaJLaVWVStWsUrMoWkpVrVo\/v1DVaXRYNX5\/o4rYiZWqJkYShBDEyhD+5\/vcczNvkisS7pXP+\/U6zT3nOefcc9P25nzu93mem+ehBkRERERERBbORv9JRERERERk0RheiIiIiIjIKjC8EBERERGRVWB4ISIiIiIiq8DwQkREREREVoHhhYiIiIiIrEKe8PBwTpVMREREREQWj9\/zQkREREREVoHdxoiIiIiIyCowvBARERERkVVgeCEiIiIiIqvA8EJERERERFaB4YWIiIiIiKwCwwsREREREVkFhhciIiIiIrIKDC9ERERERGQVGF6IiIiIiMgqMLwQEREREZFVYHghIiIiIiKrwPBCRERERERWgeGFiIiIiIisAsMLERERERFZBYYXIiIiIiKyCnkeavTHRETKvdgEXL4ej1t374PvEERE5smTByhcIC9KFbNDfgdbfSsRZSeGFyJKQYJL8IV7DC1ERFkkIcajbH4GGKIcwPBCRCmci4hB9J37sLeJQyE7CTEP9BYiIspInjw2uB2fH3EP7OFYMC8quOTTWwyC\/g3H3iP\/4G5MnL6F6NlUIJ89mtR9Dp6Vy+lbsg\/DCxGlcPzMbVV1cXK4iZIlnWFvb6+3EBFRRuLi4nDlSiSiYouo6kvNSoX0FgO\/ldvg06Y+SpUoom8hejZdvnoT67cdgm\/3NvqW7MMB+0SUgvHjDKm4MLgQEZlP3jON1WpTHw1LxYXBhXID+e88pyqM2RBeYhEWEIxofS1dsWEICAjT9jZHNILN3peIiIiIiHID88JL5BaMfdkHPsmWsX9E6o3R8P96NUL0xwE\/zMKs2cmX7xAgyea6P+Z\/7Z8i5ETuW4CB3buipyyfrELwXb1BO9vqVPsSEREREVHuZl54cW6Pab+vx3p9WdazJK4kBo3kYvHvtiPa7r7w7W1cXoJnQb05uaAFeHeZM8b+uAbfr1yDhS+GYNiX\/qy2EBERERGRSeaFF+nytdsf\/sblnyvaxnBsGSdVmHcx66BhNwMHODg5wrFY0mJqpsDIoCOo0f0luOptjo07oMmKnQgyrBIREREREaVgXniRLl8zd8LYUcy5xccY3NgT7adKJWYZhjfQG5QQbPlPsm5jPwQkdf+KjUXk9WhEx2rn8KyLE3\/6IzpBbzq0GXu71oW7YZWIKMfFXmetl4jIXHEh\/th+8pq+ZgXunMWBHUGI0u81n5aIXSuwO0xfycDtkxuw7qQ5gybCsfubvxChr5lLriOj88dFBCEoIh64FYR164JwW99uacwfsO\/kDu9m3obFWwsZBWMRa\/I\/hnJo+XqybmM+nnDUWxC+E6uW+2Htce0X5zkIC1v4Y8xrhjE0fde5Y\/bE9kn7ElEuF4Bp7n2x6lHfnc0VuQ7DXpiEnRxcR0TWRG4svxiPV7t9gHZvfYQP525F6B29LYuiNk1Fu3FbEaWvmxaPoE0\/YdamHLqpjdyK8fKaEhfttX3xO4If47XFndyCT\/22I8jkUAejy9g87gOM33RZX8+62yHbsfyLGZj+7fYU\/06iTh9C0HXDYwkoy79ZkWIxBpu40KM4EHrPsHLjLAIPH0q7nJM\/Wte0fxenM\/z3FfTTeMzakTJoynUYzy\/tAz9IWmTf2wG\/4ccA7awx4TiwPxyW+m1E5oUX2yIoGfUd3tUH6w+cvAB+y1dhZ7ipTy1TdRtzdNC3a9zbY9Cw4Xi7viGiuLYZi4X6OJrvP+0GjwJqs6YE6raprJ2JiCiHOHfBwkPT0JKfmBCRtUg4i3WTFmPJndqYMnsKfp3xJjzPbcDAeX89gU\/J7VBn8DxsGNEcKb+9Jnt1Gaq9rqXaMrsrPM5tx4eLsv7a7Bv2x4YfBqNZYX1DDoo7uQIfzgyCy6uvo4v9IQz85HeEmviQXwWUuHKoU8tTLYUuJAUb06Jx4NsVWHdOXzXXnWhExdxXD+O0x7dvaUuMWjXQtnl2H4UZUw1Lv2bF9QbL90gD9n+Y8SkWrlyPhZ8Ox\/Bhvmhf3lS8uIKQg8nGx2xbBb\/ZW2C6WiafrHqhvR6KkhZfjNn2LwfvE1mhyD+noWt9d7hr\/293\/UT7f1\/evCNWoe+7qxK7nkILDe7G9btB8OvXGJ7u7vBs2hd+x7X\/82V\/967ww06MbeqOaYe0\/RKiEfDfvmhcUzt3\/a6YtCY48T0iYLo7xi77DsOaeqrn7fnfAAQbr6NmYwz7zdQ7kLz\/TNP+qZHrGe2H7z40XIfXO34ICNmJaV29tPN5ovGH6wyvQ5i6Xl3YH2Pho66vJ\/zmj016jdqVBiVeu9aW7Bgierpu376N\/fv3m1ykzZLEHd6CJWHlMHz46\/As64hCZeujX6\/aiAs4hMBbhn0idi3Gh331ykViVcZQXRj101asGfuRqmy8MW0rIrT3tSA\/7fE3l4F\/N+CNbkvV2OPbJ1fj036G\/Tr3nYo1p\/RP67V92\/kdVY9VtWbUamxfOVVVgTr3nY3txkr5nbPYPNdQHUp+vDqm23ws+WY8OqdT6bEvrL0uWcp6o2vn4og7cBqh0pBwDYHfTsUbb2nX0Gs85u9KqpRE+S\/Fh7307Ytmo5f+OnBsqfZ8+uPkx7\/1EcavDEIcjmJJt6mY9S9w4Bvt2uS1qWMma9c4Q7v+pTjqv1hbn43d+u839JfxaNf3JwSnCCbxCPy\/Q6jT6310qFwRnm\/2x\/Bi27H9lN6cipNbddSpV18tni76xtSKVtT3qQ43LXy5VDbsX6eCOZ+4XUboWe1ar0jl5RoOLJmBUeNmYMkBQ6tR8O7fsWaNYQnU\/90FrvkaAydtQaBh1SKZ321ME\/LrfPinSYfOeGnOcHipx47wHvIxWhZTK0q+Cq3QrXdLuOrraXXDdL36krRM17YSkdU5\/x0GfAIM\/l8IQk7\/iY8KzMKwnzPu6Bvwn67wb7EaQSEh2De\/LjYP9kOQSzcsDVkDX7TEtD0hGFtfC0W\/DcNbB9tjdaB27u2fotwfXTBtd1II8L\/kism7ghASMBse87rCd3dLLNuv7btpOKJHzMKWzLqH7YuE68R9CDodgNnlZ6Hru\/5ouSxAex1bMDx6GGapE8TC\/8tk1\/uFB76fsArBcrz22od94WB47fsXovrtI7JVifxtIN765yWsl2v\/pQv8+0zK\/HqI6InYu3cvevToYXLZt2+fvpdliIq8jDg7F7gU1TcIr77YumqYobrw708YP\/8sPAdOxK8L3kfraxsw8JtDid1\/Anedgdvgifh5vDdcAmR8BeDpOw8\/9ykFVO6Mn1f1hSfCERRwD57vDMOGn6ZgSv1oLPnyd8P7XGrnDiGo3DtYsaAvehQ9i1kbJNjcwwG\/2Zh\/rTHmLJ2Cha\/aYfln3yIw8VP\/01qYaI0pPWpnXMGJD8eBvddg37AK3LTV0N\/nY9Q+F4yZMwU\/D62IwPmLse6C1nBjO+bPPopCLw3Gzwv6o2FChMmxILf3rMCoXS4YvuArbJ3RCvhlsXYz74l+q8ZheGWgYZ9x2OpbW99bu+G\/VgVjRreGu1d9dLE7i93qez\/CEbg3Gi6t6sEjxWRUUYi6UgoeHnb6uiPcKuRHcOjjd0WTa4mQqouJKk564rR\/tz9CC1H7NmBzRHE0G6b9e5g3BcOf13fQeTR7GV27GpaGZQzb6nQdgoWT2qOOYdUiPVJ4SY9DYtcwB7h66eNi9MXL3RmOxdgBjCg3CPPfgti+rxs+wLB1hPfIdVj2SvofXQiHfCURHhyCsLva273XIKz5c5D2xzO1MOz4LQSDPuxmmKHQ0RNvv9MN321Nml69ffuWcFRt1eHZQNa9DevlWqF9i2jczLDPs6Zjh8Trrl7LW617ywdctq5o9WJLRN+VZ3JA3WH7sPANw2ty9G6J9sfDIR\/IRR7ciatvdEN7+RRNXnvblmofrQX+m0Lg+24XOMv1lO8G31dW4chpQysRPV3t2rVTQSW1t956C23bttXXLEPUpWtABS286OupBe8PRGjlNuharzgKOVdBl1dqI27XXzigVw1QzxsNyzrCqZanep8NvWDq5rocGvbsha5Ny8Feey+r07QKcOtuOuMfqqC1tl8h59qoU027aT57GVG3DmH7HmjP3RluhbWb+DbN0SE+CIGGLwTU1Ea\/Pq1Rp3op2OtbklszRapGUh2ZgSXx3pjxvnRTO43df1xDnc6dUcdZu\/56rdHFRQsYJ6\/h9rGj2K2ds+vLVeBUWLv257XrTU\/MNUTduA+UbY9PtGDV28sYNlIrha7vaDf09SqiUL7a0G5nsT3gJOIig3AgzBFdW5h4jnj9Z3Y7dRTbtR+b9ySF0PTFI+qwFtJmX0OPIcMwfIAL1o2bih\/3mB6\/klR5+RHT5z36BABPy6OFl+JX8F3\/1F28DIuf6nvx6Jxr7sUnac73CfaWLqLvQUTW4uo5f5QskOz\/XVsHOCaOZTPNs99qTCqzFsNe0P6YpuqGleQqQva5w9lJX9U4FHQAwq88+S+zjdiMaT0M3cbcq\/SEn745PHgn3J2d9bXkwnFyWxhm+Wj7yzHa0nOZ9kfjXGInOiJ6yiZOnIjatY2fumu319pj2WZpnEoXB86ZriyIuJh7QMVSSHyrLFlKCyl3U451MEPybmPtphi6iZlNuwbpbLdmmh5Cev2Eddp6nJmVA8OYl8HoJ58RuVWGhxqvop1TC2DS7Uuds9tszJdfQsJ9xN0xfDJln6ISklahpr0wo108lo8brbqXTf\/1NOLMugu2g2dDT9jv0ULEoZM44FIfddJ8JucEF7fLCDqtD7bX\/jKFntP+vnmU0tezKOEyNv8YiGYjBqP32dVYfsx4\/nTcCcLm\/7ND76+GoYOWcO1r9cLC6e3hZGeXJii6te2F3m0N426ateuB4f0awyVfETjly6ulg\/xwKpFf39PyPFJ48XovdfeupMXX0G8sfdINZFk3pPzT7gVfE+dSy9T2qfYlIktXzqMlrty9qa9pEmIRbax4aJnE5N9PW2d4vzcba\/YEIWBFS\/j3WGAYh5JCCbg3voLYZLO3xN7RTliu5BOeoTAMqz5eCochW1W3sZA902Csr8hrD4k0FUjk2j0xaau2vxyjL0u78h2OyFLkzZsXfn5+KFmypFrksa1tJnfDT4GTcynYx2vh5Ya+QQTIGI0Z2H5Nu1nNp91wSvVDb8IV7YYaBVAon75ujphDWP75X4jrPAxbV83D1vFJoc4s+p1l1\/HasXK8vvSrZdieGcOYlyro0tUT2LUF29Xbqnbzbad37Up2zikdtd9HQcMnZJmGo3g7eHQfhZ9\/+Aq\/TvBG3NYVWLLHvI+\/7Ot5o4tdEOZ\/fxYeLWqrbmwp2aFOe28Efb8U6\/YcwvZvtHAV1wYdKuvNqYT6\/5Y405h03TMp4RoOLJqFNW490NtL+32MbIPQmVO1a045g1gKBWujx+g3USdmH5bvCjdsc66PDg3ThqhCFbQQVvIeAo8FYffW37FmlRYyzznC6dxGLF93Fk7uxU1WxixBtnQbIyISzg1awmHpauyUsXEywH7RW3j9h2CgWEm47tsCf3kv1bb7\/99Otb+Ege+6tsS0Pw1\/QBzyqh+JHApoAUVNluKKVq+UxLQvVhkGzkcH4btvV+Htdt5PeFbCW4iOLAznkobIFKm96Rt7QshrL\/HzKmxRnwYmf42u8H7RAUu\/1gf9S9t\/Z2EnCy9EFsXJyUmFlqVLl6rHlsi+Xmv0KB6OWbN+R3BkNG5fOIQlK47C3ssbDYsDHo3qwO3fbaqb0O3I01j3m9bWtDEamjPb1q2biLh1T7vJv4fbqgtUPG7fCseBXYY+ruZWTlC8MTp4AevWGK\/RH\/PHLk2cUMBc9g2fR4\/Cl\/HjHzLc3hPNOubHgXW\/4cAF7Zzy2qbMwOYL8ShUqzaa4SjW\/H4aUcmuN7XQtVPx6rg1CNKCXyEtBLqlCnRRN67hdkw6fb9stedopf0O4h21IFBR35hK5TexcHw94HQQQot2gt\/EdkkVsGQKeb2C4S9pwUGfbaxDz17okDYNIe7kRqyL74wpfWobQoRLO0z56mW4aH9DMnX9NH48nTbkSLWlh1eyqypTP3HMS4qlyl38aPVTJRMRmaP821j0KTD\/BelS1QJTr7wHv3c9tBTSEn1nOmJWR217o3expUhLeKsDXPH2nLGIXdjOMHtXj53w\/nGQPgGIFzp8cBOTWnhiVoAWDl6ZjR8abMHrdbRztP4E4S+uw9hmT3o8nSd853fAzh7aNdRsjM8jy2mvIxhhEkS01z57dKzhtWuv8QjqAo5FVLhyfWMRpnmsNVx7nXbwQwd4s\/BCZHGqV68OT8+0o+4shm0V9JjRH71t\/TFq0Hi8OuonBFXojIUf6NMXazfQUwZXRPCyGXh10H+wvbjW5uud6SfoTvW90ezGX\/iw\/2oEFW6O3oM9cXvNbO0ci3HAVsbYhCPC7A9cHNHsg2EYXPyQ4RrHbgSebw3PR52u2Fa7se9aChEbN2C7Fjg83hyFGY2vYdYo7Zwf\/gcHXFujoYsdULQ1Bg+rjdtr5+MN7XoD0xkR5NZ1OD5xO41PB32EdoPWIPT5XujXVD6IKoWGrcsh4rfFeOOnfw07m+BRrYr2Zl4fDTMYxmlf1htd+vRC71fqwymdwp29ixZa9JnGjItb8gkYdNLla8qw5nBJfh7n+ujyfDrhKbWYu4bpkZMtKF4l5XPZ5jfM7JZmSW8skGXI81CjPyYiwrEQw9Sgxeyvw9U148H2lExCNMLCY1GynLMWWKLh\/+Xr+MrVD2ve4u+QKDcJCwvD9TjDtKu13FPOpzXv20344J2O+hplj3sI3hMI+yrV4ZQvGoHLvsanV9rg56mmKx+PLh5xkWexbs587G40CnO6lNO3m0+mmN7dMPOuczKV9Cz4qu5wGZMpng+hmZodzoRTqzFwYTpjlbx7YOGbmQR0mS56petj\/w5z6r93hhciSoHhJYsSwrDzy0kY88NORMIZXq9MxuyJ7Q2zoxFRrsHw8oTJ97d8vxTzt4UjNAZwquqNMUPfRJ1s+85FCQpLsblWO8wZ0TlNdzNKH8MLET0RDC9ERFnH8EJkkFP\/vXPMCxERERERWQWGFyIiIiIisgoML0REREREZBUYXoiIiIiIyCowvBBRCnnyGH\/aIC7OUr+iiojI8sh7prx3CuN7aXIF8tnj8tWb+hrRs0v+O5f\/3nMCZxsjohTORcQg+s592NvEoZDdPTx8+EBvISKijEhwuR2fH3EP7OFYMC8quKScVzfo33DsPfIP7sbwgyF6tklwaVL3OXhWfvTvxckMwwsRpXAvNgHBFyS06BuIiOiRSNXFo2x+5HfgFz0RZTeGFyJKQwLM5evxuHX3PkMMEZGZJLQULpAXpYrZMbgQ5RCGFyIiIiIisgocsE9ERERERFaB4YWIiIiIiKwCwwsREREREVkFjnkhIpOuX7+Ou3fv4sEDTpVMRJSRPHnyoECBAnByctK3EFFOYXghojQkuMhbQ5EiRWBra96MOWfOnMHcuXMxadIkFCtWDFFRUZg8eTKGDx+Oq1evYu\/evRgyZIjad+3atQgNDcV7772HKVOm4JVXXkG9evXUc86bNw\/u7u7o3Lmz2jc5OYe\/vz8+\/PBDk9d14cIF3Lt3Dx4eHmo99TUREWUkLCxMf5Q1BQsWZIAhymHsNkZEaUjF5VGCi9GNGzdw\/vx5JCQkYNeuXXB0dESpUqX01vSdPn1afTP1v\/\/+i2PHjsHT01NVfG7dupVY+ZH2nTt3om3btimuS57rzp07KvhI6JozZw4iIiLUcXKusmXLolChQvreRETpkwpKuXLl4Orq+siLHCfvnUSUsxheiCgNufF\/1OBitGrVKjRo0AAbNmxA3759kS9fym+YNiUoKAgvvfQSBg4ciG7duqFixYrqE9CxY8fiypUrah+posTGxqJy5cpq3eiff\/7BmDFjEB0drUKPj48P+vTpg9q1a+PAgQPw9fWFnZ2dvjcRUc6Q4CPYoYUoZ7HbGBGlIcFBPkl8FFnpohUTE5Oi2xgR0dMUHh6uqrXGIPKoHrfbGaXk4OCAkiVL6mtEBgwvRJQGwwsR5UbZEV5k4D5lD+mG96h\/i+jZx\/BCRGlkJbwQEVk7hhfLwvBCpnDMCxERERERWQWGFyIiIiIisgoML0REREREZBUYXoiIiIiIxPVwnDixAj\/vH4k5++di3YkjiLiut5FF4IB9IkqDA\/aJKDfigH3L8qQH7F89tQjfXN2GM\/p6knJoUeJjvFHVjGmbz67AgAvr9BVdwc+xyKuKengm4HNcK\/sxGiSe6jQ27f4YqY5IpgtGNuuFSvpahlI9d5eya9CxovbgyjYsOQu80agNHA1NypmArvjyjr6SWrJrtjQML0SUBsMLEeVGDC+W5UmGl3v\/zMWkyL8Qra+nZYcWzn5447mC+rqZtECxCb0MIUKTNrwkdwMH9\/tiGQbgi1RBI1MSUE5fQNvEoCOhaA1KVNGeC6bDS7okBN1obLHhhd3GiIiIiCj3unsc\/0svuNh0QL9yvmiKePwZ+RP+uatvN4sWRq4Az+nBJSPRQZ9jwO6FQMU1WKTt\/\/PurlgSdENvNcOdC4BTl2QVmipo6gRcTa+yopHKywDtedIsqStHFobhhYiIiIhyr8sB2KMe2MHFpmhSdcKmC0bW9EWNh1dwSW3YhjOX1QMzSBVFwkgvVJJKhh4MUnfTMoSWrvgZA7GomV6RKdkG\/ZqtwRtYqNrMCjEFywJR65J1eTuNPVFAiQwLRXXxbhUtLGnPlWax0KqLYLcxIkqD3caIKDditzHL8qS6jUmAGB11RHukhZXGveB4+nN8eaMc3q\/ZC65Xf8KCC7\/gH8Ou8HLyQz\/PovpaOlQXrv3wki5bqbqHZdxt7DFlNObl9CIEaA+TX3+OXksOYnghojQYXogoN2J4sSxPLLz8rYWXaxJegEr5RqJPnUYooT2OD0sZXESD4n54t1p64SXzMSspAkOqsJGRxCCSKRnrsg\/PJR\/kn5UB+3ZZGHfzhDC8EFEaDC9ElBsxvFiWJzZg\/9JmLAjxwwl9tVI+X3QsfB1\/Rv6SuM2gCnq6f46mpfVVi5HRjGV18W7ZRgi4ks6AfQk2F1zRL93Z0CwPwwsRpcHwQkS5EcOLZXlys43dwYlDvlgQE6+vm+aYbyQm1W+E\/Pp6+vQKjMnTyTgTU93JTFRBsmu64nQqLwrDCxE9CxheiCg3YnixLE9yqmTcOo1Nxz\/Gugf6empq8H4vVCqsr2fIOFjfVEhJGw5kzI0M2E89lia97ekyd4rjHOmu9uRwtjEiIiIiyt0KV0HHmnPQr0BNNd4lSUF4FRiKiWYHFytQsZfpGcZMLJYWXAQrL0SUBisvRJQbsfJiWZ5o5SW52HjcuxenHubNXxB2DurhI3hK3cYyrKg8wjf1WziGFyJK40mFl7Vr1yI0NBRDhgxBTEwM5syZg27duqFSpex\/ez137hxmzpyJP\/\/8E56enhgzZgy8vLz01pQiIyPh5+eHP\/74Q11TvXr19BYiepYxvFiWpxZeyKKx2xgRPfPkD+CSJUvQvXt3HD16FJ9++imWL1+O69ev63skuXr1Kj777DM0aNAA27dvZ3AhIiKyIAwvRJQtzpw5g7Fjx2Lq1KmoW7cufH19VbVDgsPo0aNx+PBhtd+tW7cwcuRIfPLJJxg2bBhmz56N8ePHq8qLOHToEF5++WU0b94cGzduhLE4HBISggEDBqBmzZoYNWoULl0yfN+xnFeec9asWapNzikBJDY2FpMmTcKOHTuQN29e9OzZE40aNYKNjQ1KljTU602Flz179qBJkyZo06YN7Ozs9K1ERERkCRheiCjbXLx4EZ06dcLBgwfRuXNnLFq0SG2XMODv76+CyIULF5AvXz7VbUuCi4SNKVOmqG23b9\/GtWvXsGrVKtVta\/PmzaoLl2yTfXv16oXAwEC0a9cOX3\/9tQpGQgKMPJ\/8lC5nUjFxcHBQIadZs2awt7dXXcXkp1zDqVOnULhwYbi4uKjjjeLj43H69GnVle3FF19E27ZtsWXLlsQARURERE8XwwsRZZuiRYuifPnysLW1xfPPP6+qKRI+pBIjwSY6OhpHjhxRFRJT\/cILFSqE9u3bq5Ah1RGpkkigkaqLBI369eurc3t7e6s+6RIyRKtWrVClShV1nJubGy5fvqy2y3Mkr55IuHF3d1dVGqnEpL6GhIQE3Lx5U13Hb7\/9hu+\/\/16NewkODtb3ICIioqeJ4YWIcoQEg9KlS6tAIMGjSJEiOHnypAoCEkIehXQRk+ONQUQCjISXO3dST82SMRm\/IkFIxrRIVejKlSt6SxIJLh06dFCVILnuqlWrIigoSG8lIiKip4nhhYhyhHTpktAhQUNCR9OmTbFy5UpVHSlTpoy+l3kkBEkVR4KQkJ\/SlatgwYJqPTMSco4fP464uDgVeipUqKC6jcnMQMlJm3Qdk3E5yclrICIioqeP4YWIss2NGzdw\/vx5FS527doFR0dHlCpVSrVJt66oqChUq1ZNVTWEhIIHDx5kOqZEunrJeQ8cOKDObRw\/I13EMiIBSsKIPMeyZctUtzE5TrqbybVKKJI2CSvyU8bJNG7cGL\/88osKPDI+R8bHPPfcc\/oZiYgyJu87XLJnkfdkotT4PS9ElEZWvudFZhubPHmy+o4EGWgv41xkFjGpcoh79+5h3rx56NGjR+K5JRzIzGMeHh746KOPVFcu4\/e8yExgMlvY0KFD1bp095Lvadm9ezc6duyoBvpL+JBAsnfvXvVdMcL43TH9+vXDtGnT1HiYFi1aJB4vA\/BlGmTj97zIWJzp06djxIgRKgxJOJIKkVyLdCGT53nhhRey\/L0PRGQ9Hvd7Xh73eCLKHMMLEaWR1fAyd+5cFTiKFSumb01y4sQJbNq0SYUR6TpGRGRpGF6ILB+7jRFRjpNpjaW68dprrzG4EBERUZax8kJEaWSl8kJEZO1YeSGyfKy8EBERERGRVWB4ISIiIiIiq8DwQkREREREVoHhhYiIiIiIrALDCxERERERWQWGFyIiIiIisgoML0REREREZBUYXoiIiIiIyCowvBARERERkVVgeCEiIiIiIqvA8EJERERERFaB4YWIiIiIiKwCwwsREREREVkFhhciIiIiIrIKDC9ERERERGQVHju8xIYHICA8Vl\/LmOwbfF1fIaJcb+3atfj666\/V45iYGEyfPh1nzpxR69nt3LlzGDx4MGrWrInu3bsjICBAb0kiz92pUydUqlQpxSLXSURERE+feeElOgDfzZ6FWcmXHwIQLU375mP+Pnmk0\/b1G+ADn5dlGYhp28L0BsO+q0P0FSKiJ+Tu3btYsmSJCi1Hjx7Fp59+iuXLl+P69ZSfpkhQ2bhxowoxspw6dQoDBgyAp6envgcRERE9TeaFl7v\/YuchZ3To7Qtf4+LjCUe9OUk01o2bD4cx67H+d235ZTKqbxoIv9N6MxE9s+Rmf+zYsZg6dSrq1q0LX19fVe2Q4DB69GgcPnxY7Xfr1i2MHDkSn3zyCYYNG4bZs2dj\/PjxqvIiDh06hJdffhnNmzdXQeLhw4dqe0hIiAoSUjkZNWoULl26pLbLeeU5Z82apdrknFevXkVsbCwmTZqEHTt2IG\/evOjZsycaNWoEGxsblCxZUh2bOryk9vfffyM+Ph7ly5fXtxAREdHTZH63MQcHOBdzhKNxcXTQG5ILwclgb3gb\/87bOsO7cUn4H4vUN5gnOmgdpg3wQeOa7vBs6oOB09chKFlxh4gs08WLF1W3q4MHD6Jz585YtGiR2t6kSRP4+\/urIHLhwgXky5cPY8aMUcFFwsaUKVPUttu3b+PatWtYtWoV\/Pz8sHnzZkRGRqptsm+vXr0QGBiIdu3aqe5mEoyEBBh5Pvkp1ZPt27drb1kOKuQ0a9YM9vb2qnoiP+UapKJSuHBhuLi4qONNSUhIUMGnZcuW6jgiIiJ6+swPLyFbsCBZt7HvDiWlidi7kYi+Ho3YBHfUrbUWq43dyGKDsWNrLFo2cDasmyFsTV+0GO0P94HL8Of+AOzbtAyDPfwxunVfrArXdyIii1S0aFFVpbC1tcXzzz+vqikSPqQSI8EmOjoaR44cURWSAgUK6EclKVSoENq3b6\/CglRHpEoigUaqLhI06tevr87t7e2NPHnyIDQ0VB3XqlUrVKlSRR3n5uaGy5cvq+3yHHZ2duqxkHDj7u6uqjRSiTF1DUZyvVeuXEH16tX1LURERPS0mR9eyrVEt2Tdxl6qmdRpLHz3KvgtX4ugO45o\/\/kytDw+ET1lzMuHq5Hvw4V429weF+e\/w7AlHli2chIq\/zkAfaf6YdqQAdjhPglrFntg6YffIWkEDRFZMgkGpUuXVhUMCR5FihTByZMnERwcrELIo5AuYnK8MYhIgJHwcufOHbVurnr16qkg9Nlnn6mqkIQTU6Q6s2fPHtSpU0c9LxEREVmGrHcbS9ZrzL3dIAwf9ja8JM9IV7Gug\/DR\/DVYv2gsungmhRxHr7fRoZy+YkLQH0tRcsggeBWIReH607Fw6nBMG1APR0Ki4VB\/EAaVXop1QfrORGTRpEuXhA4JGhI6mjZtipUrV6rqSJkyZfS9zCMhSKo4EoSE\/JSAUbBgQbWeGQk5x48fR1xcnAo9FSpUUN3GwsJMfxwi1SKpEEn1iIiIiCyH+eElKgT+u\/0Tl51r\/DBrazp1kJDVKWcg00UHfIfNGXT9ir0ZBtfSEnYc4dHYAw7HF6DnIkd89KJ0O3OEa9kwRBu6uBORBbpx4wbOnz+vwsWuXbvg6OiIUqVKqTbp1hUVFYVq1aqp8S1Cgs2DBw8SB+WnR7p6yXkPHDigzm0cPyNdxDIiAUoG3MtzLFu2THUbk+Oku5lcq4QiaZNJBOSnkUyj\/NxzzyVeOxEREVkG88JLMW8MHtESSSNX8qFcs27wbeaqr6cVsnVByqmVtWXB1kzmSXZwQOydpO+MCdoXjG5fDIKn6pYei5t3HeBgq5qIyELJYPsGDRpgw4YN6Nu3b2JQkUpHjRo11PgXIy8vL+zfvx8TJ05Us4Olp3jx4mpg\/4oVK1RXrq1bt2LIkCEZjlmR882YMQN79+5Vzy3f8SLHSxCaMGGCujapAEVERGDcuHEIDzd8siJjbHbv3q2qLlKlISIiIsuR52FmH3lmInJNX4zBdCztmmxQ\/qFp6HvON+U2jezrV2EpxqbT3T1WO67Lkur4fkkXLShFY+fkgQh783u8XUVrjFiHvp2PwHfPJHibmuiMiLKNdKdydU3\/wwlTZKrkuXPnqumJixUrpm9NcuLECWzatAlDhw7l7F1EZJHkQ4yyZctm+YOLxz2eiDJnfrexR2HrjCvfv6t\/UWXS8u73V+CcQeXEof5wTK\/0X7w7dSciExxR\/fWP0FLGyETsxLT3\/guPxWMZXIiskExrLN+e\/9prrzG4EBERUZY9duUl2yVEI2DZMAyYdwRF3MvB\/m44Qu7UxfD5s+GrZgQgopyWlcoLEZG1Y+WFyPJZXngxSohFdHQsYOuQzhdiElFOYXghotyI4YXI8uVMt7HsIKEl3W\/yJyIiIiKi3MZywwsREREREVEyDC9ERERERGQVGF6IiIiIiMgqMLwQEREREZFVYHghIiIiIiKrwPBCRERERERWgeGFiIiIiIisAsMLERERERFZBYYXIiIiIiKyCgwvRERERERkFRheiIiIiIjIKjC8EBERERGRVWB4ISIiIiIiq8DwQkRPzdq1a\/H111+rxzExMZg+fTrOnDmj1rPbuXPnMHjwYNSsWRPdu3dHQECA3pJSfHw8Dh06hMmTJ2Px4sX6VoObN29i\/fr16N+\/P44cOaJvJSIioieF4YWInnl3797FkiVLVGg5evQoPv30UyxfvhzXr1\/X90iyYsUKHD58GM7OzirIGMm+s2fPRmxsLBwcHPDw4UO9hYiIiJ4UhhciyhZSMRk7diymTp2KunXrwtfXV1U7JDiMHj1aBQJx69YtjBw5Ep988gmGDRumAsH48eNV5UVI1ePll19G8+bNsXHjxsSQEBISggEDBqjKyahRo3Dp0iW1Xc4rzzlr1izVJue8evWqChmTJk3Cjh07kDdvXvTs2RONGjWCjY0NSpYsqY41FV769u2L999\/H2XLltW3GBQrVkydr3PnzihcuLC+lYiIiJ4khhciyjYXL15Ep06dcPDgQXWTv2jRIrW9SZMm8Pf3V0HkwoULyJcvH8aMGaOCi4SNKVOmqG23b9\/GtWvXsGrVKvj5+WHz5s2IjIxU22TfXr16ITAwEO3atVPdzSQYCQkw8nzys1KlSti+fbuqjkjIadasGezt7eHp6al+yjWcOnVKBRAXFxd1PBEREVkHhhciyjZFixZF+fLlYWtri+eff15VUyR8SCVGgk10dLQaKyIVkgIFCuhHJSlUqBDat2+vQoZUR6RKIoFGqi4SNOrXr6\/O7e3tjTx58iA0NFQd16pVK1SpUkUd5+bmhsuXL6vt8hx2dnbqsZBw4+7urqo0UokxdQ1ERERkuRheiChHSDAoXbo0EhISVPAoUqQITp48ieDgYBVCHoV0EZPjjUFEAoyElzt37qh1c9WrV08Foc8++0xVha5cuaK3EBERkTVgeCGiHCFduiR0SNCQ0NG0aVOsXLlSVUfKlCmj72UeCUFSxZEgJOSndP8qWLCgWs+MhJzjx48jLi5OhZ4KFSqobmNhYWH6HkRERGQNGF6IKNvcuHED58+fV+Fi165dcHR0RKlSpVSbdOuKiopCtWrV1PgWIcHmwYMHmc7cJV295LwHDhxQ5zaOn5EuYhmRACUzhslzLFu2THUbk+Oku5lcq4QiaZNJBOQnERERWTaGFyLKVjLYvkGDBtiwYYOaucsYVKTSUaNGDTX+xcjLywv79+\/HxIkT1exg6SlevLga2C\/TGNepUwdbt27FkCFDMhyzIuebMWMG9u7dq55bvuNFjpcgNGHCBHVtUgGKiIjAuHHjEB4erh9JRERElirPw8w+8iSiXEe6U7m6uupr5pGpkufOnaumE5ZphVM7ceIENm3ahKFDh6quY0RElkY+xJBp0qV7aVY87vFElDlWXogox8m0xvLt+a+99hqDCxEREWUZKy9ElEZWKi9ERNaOlRciy2dWeJGZem7evJk40w8RPfsYXogot3nc8MEZDIlynlnhRb5cTga8PsnZeKI2f4yZGIHPOzjpW7JOvh+CiMzHygsR5UasvBBZPrPGvEjF5UlPI3opdD\/csB8ft2mDNrIsOam3EBERERFRbmShA\/ajEHoWWP0nMGLbNmzbthojzn6AxSf0ZiIiIiIiynUsNLw4wa0i8PpbHbVHhvVGLRohNDxKrRERERERUe5jsVMll3ZrhNV7jV3ForD\/z\/1wK\/f441+IiIiIiMg6WWx4cerwOebhA8N4lzav468Wq9G\/ht5IRERERES5jlmzjcnMQ46Ojvqa9eFsY0SPhrONEVFuxNnGiCyfxVZeiIiIiIiIkmN4ISIiIiIiq2B2t7G4uDh9zfoUK1ZMf0RE5rhz5w67jRFRrpMd37BfsGBBfY2IcgIrL0RERESZuHHjBi5cuKCWqCh+dQPR08LwkuMi8b\/J72Di\/yL1dSIiIrImElxu3bqFBw8eqEWq09evX9dbiehJstDwcgM7pnVH9+4pl+9O6c30zLi+YwQ6zNmE65Gb8Nm4EdhhRsZTx4yrqy8pj\/n7J23bT8eAoKVa21L8rW8nIiLKKgkrqd2+fVt\/RERPkoWGl6JoNXYlVq40Lv9B\/zpeKFdSb7Yqznhh4reY\/IKzvk5plCqLRxmVVKzVTGyeesSwvFUNX\/yghR+9TTR1Kas\/Imty9+5dxMfH62tERJYjveHBZgwbJqJsZh3dxk6tx2K3V9Equ75g\/8QK9Hj7HX35DMl7dJ381rg9ZVevK\/\/7TFvfhm+Mx03ehivadtk\/RZewyG2YqLclf5603cYM3clMtad3DemS5\/x2W7LzrcBJvUm16edKfj71er5dYWhLPDbpuEe+hsflXBaVUQ0uiRnvGnbMMVZX9GqKCdcv\/206\/DiXQVNtcdFXybLFxsZi1qxZ2Lt3r1o\/c+YMevbsiU6dOqnHa9euxddff63akpMbh61bt+LVV19FzZo18fHHH6fbF\/3mzZtYv349+vfvjyNHjuhb0zJ3PyIiInryrGC2MelCthh4f0yWw0vK2cYkNGjnGzgBqYshckO\/AP31KonsNwLhr32LPjUMbR+uKI9x3\/VCda1Vbu4P1NPaSmnhYCEwaGIbSGEo5TkMTG2T41eVmZmmIpPRNaRLAsrwFagw2rBfeudO\/tprB+qvZ1ZZrFLHzkS5X5LaHvkaTq\/HpN8u6Cu6qi0x6aWq+sojkm5fRxtg85u19A0pSfewYSfk0SDMntpXiz2UnZ72bGOLFi2Cs7MzXnvtNTXrj4SX0NBQDBkyRN\/D4N9\/\/8X8+fMxatQolC5dGr\/99hsuXbqEQYMGpZgtSPqmz507FzVq1MBff\/2FXr16oV69enprEnP3I6JnU3qzjcl2U7dL5cqVS7EvZxsjynmWX3mRqgsawSu7qi5wRpkKwfhm+Dv4Rt38GkXi6N5g\/LtihF5xGIFvgvUmXeVeHVVwEdXf0W\/mnWuhGfbiqCpOyDmAZnVSh4bU\/saB\/2uDbibCRWbXkC6PXuikhwvnMh6GB8rfSdWiVOdLfD3Jjs3yNVTxwaTR\/VMuWQ0uQionJ3obxsPom5Kr9qax2xgwjGNbLIKxCtKxY0fUrVtXhQDpCnb06FF88cUXqktYQkICvvzyS+zevVsdI7P2TJgwQQ2ElcrK4cOH1U\/ZRwKJtElFZtiwYZg9ezbGjx+vKiOTJk3Cjh07UKJECRVo5GbDxsYGFSpUQEREhKrkJCcfYMgxnTt3RuHChfWtaZm7HxERET0dFh5ebmDHbxvQ+ZVWKKpvyQ4SPH787ls0PGy4qU8KMR7oM8vQZlwyrDYoznjhtfLYHaill8hj2F2ha5qKzqPJyjWk7+S30\/G\/tmP0c81En+S5Jl1ZuAapvHyxOOWy9jFmWHDuiAl6OJkv3cbSCTHwbIDeWnSJeAI92yhjUhmR8PLNN9+ocCKBRLqBubm5qceyXLt2DUFBQSrQSNiR8FKqVCkUKlRIPwtUGDGGlSlTpmD48OHqsWyT9SJFiqhg06xZMxU2PDwM\/1FLdfjAgQOoVasW8uXLp7YRERHRs8Wyw4uquvSHz2N8gJ8RCTFzenng3CW583VG7SbAN39k4TP8Gg1QYe8xnAzciwr1zOnAVALlPLZhVZqxJI9xDRmoXKaE4cGJTWZUUbJ4DdldeTFSIWY5ekdeRIS+KYWgg1ju3AaZFrsox+XNm1d1N7t48SIcHBxUlaRt27YqmEgVQ7ZLl4pGjRrh3r17aqae4OBg1KlTJ00XjcwUKFAAdnZ2+hpUtaZq1aqqy5hUfoiIiOjZZMHhJWeqLim7Ub2jxn0Yu2+VfKE\/+pybntiWYuB7hqqhYYUVmKqdq2GyCoWMXzE8R1I3LEOVR2YgG4MKiV2zkgbFZ\/0aTKv+Yi\/A+DyHy5pVecnua8iKlNMh98a\/bV9OHNeipkM2tm0tg58+7PhIs5VRzihTpgw++OAD\/Pzzz3j++ecTu41JyJBgERISgpMnT6Jp06aqeiID8aUfuRz3uKRaI+NfJAgtXbpUdU8jIiKiZ48VDNh\/fCkH7BNRZh53wH5MTAyWLFmCSpUqqfEjp06dwurVq2Fvb49+\/fqpEHPo0CH1viKD62WAq1RPmjRpogbIy2PpbvbSSy+p86U3YF+6nUkVx9h1TAKRhCYZt2Lq\/3u5Lul69sorr2Q4EN\/c\/Yjo2cIB+0SWzzqmSqYUUxenXJ58VYTIFBnfIlMVy4B6GTyf\/A+63AxERkbC1tYWjo6OqFixIvbv369mFDPnD70cJ99qbbx5MH4njMwONmfOHDVIX9qPHTumnku6qkn1RUJYZp\/PmLsfERERPX0ML1bCOMlA2sUwdTPR0yZjWWSKYZneuHHjxipMtG7dWrXJGBWp5Ei3LgkiJUuWRPXq1dViDi8vLxV2Jk6ciOjoaMyYMUOFJU9PT\/j4+KBPnz6oXbu2GrDv6+uruqr9888\/GDNmjNo\/I+buR0RERE+f2d3G5NNSayX964nIfPL\/\/NP8nhcioqfhcbuNpXc8EWUfVl6IiIiIiMgqMLw8TQGL0aHTYgTqq0RPTMRajB5QAd\/wPz4iIiKyIhYcXk5icZs2aGNclljSsPRjWPCUQkfgQh8sCNBXcooKVT5qGbb+sr4xZ1z7oz8aTl6La+pmuj+26F\/mIttH\/5H+N08e\/286N95yHjmfvvpEZPCcya8zs9eUbZ7G74CIiIjoCbDY8HJyyQcIHbka27Zt05bVGHH2B2y6qjc+K7z6Y\/PG\/qijr1oMdV3rsbx\/Dn07aGplXFFcf2iNjq8fiqovvZT2NWgh4vuLc9HF4v4Fa1xewheLzqGPJV4bERERUTosNryUdmuE\/X\/uR5SsXN2Pvw64wU3\/ovjHdnkjhumVheTdtiLWj8SC9cnaFh7TW8RlrP\/IeMw4rNe3qnMt3JisLXlFJvkxyasYybenrOCkew16NWTMRmD9eNPHmiLnS\/m8I2FY1R+vf3JVlgy5uKIqaqCMi76u7MU3AyqgoSz\/PWLYFDhfrffVVhf9R28bMB\/HEYktk7XHk4diR8RQdNSPM1Y6pOrxzR+GrlIpzif0cxqWpOqPwRF1DelWTDIIKOmGGqE\/p6EqI9euPe8fSddhXoXGcG3GY1JXog7919gmvx8DqQQZ909zjFRs9O1ERERElshiw4tTh8+x7a3zeF26jH0FjNjWP5umBD6GBe+G4Z2N61V1YfMUYMxHG2G8X12\/2Ng2FT4bv9Nv9KW7li+2t\/QzHCNths0GGxcjtKfhfMv7h2CMHjhSHuOH1jt99S5fpeDzlYnz6Exeg14Nmd4J8JlieK7Hr9qcwoKwJvq5psJj8W9Z7wp34kd8MPrzlMsPR\/XG9BV\/cTEOvFdXe1QXfRYNRk3DZmXH+k0oM\/EcDiz6FQOOLDGEijqDtfVzWKodMuB9aZNFjnNGe9l34ly0cpmLTWr7OXzxorPhZJpF68PQU20\/iM8uvpoUHNaewGfqeWRZjPYpAlTGrh3ZBDRoYiKgHMGhIyNQ39S\/IAkJ\/zE8Z1LlYzMmXGiiX8OvqLp+ZWLgME0Cz6tA4u\/gV+A\/yYKXFuAuNjC0bfI5gb56WKv5nnF\/w+8wiRaEJht\/P+f0bURERESWxXLHvJxYjDZDgXnbtmF1i7+0ELM4e76MMWAv1mMjxujVhg7jN+oNBtX6v6IHglJwS+w1dQx7NnbCOz6l9PVUqvbHa16Ghy4NW6JaSJgWhi4jLKQqWjc0HlMKDVpWRXB45tUN09eQE6pi0Gu19Me1MOhxwlCNHpj3xccpl7dq641Z08rnMz1IuKaqyGRNK5\/uejhyRv0GHXDqolQ3nFGmjBYcJqczhkaFqpQhKMkRrFtfAz1NtF37YwlOJT5fkh3rG6Dh5E1oPTF1SOqAz3yMaSJtkEsrDBcjkoejuqhfd7O2TV\/VApyxGlS8bke0uhiW8RiYwL1YhJnoy8oLERERWTALDS9R2PTDarw+11BtkSrMvO6r8cNm1Yns8XWaqlcb9OWrTsiGe2MD7Sbxb\/1hrpLFysvTcvHCZv1RUjWi\/kETXakykF5AySjUtPKZiwFIFjKehIgw7DBnXFHdXxOrMkRERESWyELDixPcKgKh4cawEoXQs4BbOSd9\/TF4NUnRHcw8UgHZiD36LF+BC5ONeUkl0H8jqrWsr4WhUnB1P4XtB4xPdAy\/LD4Fj3LpVG8egTnVm+T+DjPsH7F+JhacUg+zXw5UXjJjqJyYoN2sX9QfmiZdujqgdd2U4UJCzCYfY0XGKL0xL5E4dBBpzqFIFaNuk3QqJ03QR3XxMj8kGa8hxTgdVY2aiUPGc8jYG+01mapQHT84E63KZvKFk3WaJHXNIyIiIrJQFtttrHq\/eXD78nV9quTX8VeL1ehfQ298LLUwaIo7FrxrHPRuzkD1UvDp2SlxoPwe71RjVU4tRm\/9XGMwFbP17mV1Bso4El\/9ecYhuL8fBqnuZTLVsmFbYhe2ZONuMlLntf5A4jkzH7Dv4vO2FtbGqf17h7XEIDO6ockgf7W\/Frb+1p8rx6dnfkQ1feYC0gVLdXNKGpAus2j1rJvU\/Sl56FBdttR2GSti7LaVctB7x3QqJmkErsSEMv1MjI\/Rx9AkdgEzpS76TJyLU1qAMW9gvinOaP++4Rzq2icPRdXE16RJNmlBX\/yaTre35LRrer+G6j4nxxARERFZojwPNfrjdIWFhcHR0VFfsz5FihTRH+UAmW1sBjA6O7ueUbaT2cZm4DMzbuLNIYPlJyQLQMnILGIHm+iTEFiyDF6DRv6fd3XNpFpDRPSMCQ8PR9myZZEnTx59i4FsN3W7VK5cuRT7pnc8EWUfhpfH9bTDizz\/u4tNjrOp1t8vsQqU22VveLFWUmV6FYv0tVY+B9P9fcj\/84UKFdLXiIhyh9u3b6vwYWOTsmMKwwuR5WB4IaI0GF6IKDdieCGyfBY75oWIiIiIiCg5hhciIiIiIrIKDC9ERERERGQVLDi8RGHTWJkm2bAsPqFvJiKyILfjgLgEfYWIiIhylMWGl5NLDN\/tsm3bNm2ZBwxdjJN6GxGROe7GP8Sc\/TE4ePG+viV7xdx\/iOVHY7A3LF7fQkRERDnJQsOLfKN+IzSvb\/xG\/epo3n01\/mL1hciqJTx4CP\/wnAkST0O+vHkwuEE+tKxgp28hIiKinGShUyVLl7HXcf6tbYZv1b+6CR93nwm3ufr6I+JUyUSPJiemSr7\/APj2aCzO3EjAxOcLwN5WbzDh6OUErDsdhzvxD1GqoA161nRAQS0fyPFtK9mjspMNrt19gKVH4\/DKc\/bw0Nb\/dyYeu87H4772juZRzAbtK9lh+bFY1a1LNHOzg09lO5y+loBfTsXhZuxDOOfPg+41HFCusI2qzuwJuw9bG+DCrQdwLpAHrcrb4X9n43E95iFctX3eqe2AQvYpp0BdGhCLWqVsUd3ZFt9o1+foYIN\/rt6HvLE2dc2L2ARo506AjbalcxV7NC6bV7Wlvt43qhvOHXn3IVYci1E\/yxaywR1thzZaOGpQJi+CoxKw+m\/DtbsXs8Wb1e3TXA8RZR2nSiayfBZaeXFCx49GIHSoPublK6B5d72JiCzWRe2m3xQJLnJjf1YLLu\/WccgwuFy6\/QCbQ7RQUtUeU1vmVzfpv5+K1c6R9sbB6Mz1BBy7fB\/96+XD+Gb5EXMf+CfqAT5qnB+ltQDQtZq9Ci5X7jzEr\/\/EobkWKuTctUrlxeqgOC3gGM4tYeklLWBMblFAC0s22BQSj7e0cCPnjNNew74LGVeN4rWgUkgLWZO047t5OqgwJKZoz9XB3Q5\/hd7HDS0InbqagEAtoMn1ftw0P27FAkciEtRr\/F27vvJFbNU1tNECmHR9ExJmpK21FmQma+FPuzys\/5fd1YiIKHex0PCiKdERn6vxLtoyrRFwthHKP5WvsCcic8RrN\/cLD8Xgj2C91KGT7csCYxF6MwF9vfKpMJKRczceoIiDDaoWt4GtTR686GGH7tUd1OP02Glt8jwRWjgxduVqWzFtV64QLeQUssuDhmXt1Pm8y+WFnPWcFqqES0EbuBWxgYN2iWUdbdR6Oe2nVDc8nGxxL5Meb3JcjZJ5kVd7Zy1XOA+K5LNBDee8kEuvVsJWBQ7pOie\/g4FacJFzOzrkQaViNqqaclMLNjdjHqBhmbzqXBW0a3HSziHOa9eYX7t2LxetLS\/QRLv2qHsPEsMNERFRbmC54SWZqM0zMbPiW+hYQt9ARBZHbsz7ehmqDauDYlXXKKm4\/PdIDMKiE\/C+drNesWjmbzlX7z1U58qrhxUJAnKDn1EnDFftJt+nij3+PBeHT\/68B7+AmMRqSnJy7vxauDFWfox5KLNQkt0kwKw7HYtxO+5i9La72KuPA4qKAR5or1S6yKV2SQtmoTcfYMJOwzFLtUAo4eUewwsREeUilhteTixOnCb59dC3sK1fdb2BiCxVxaK2eKeWAwIuP8DPJ2JVcLms3XT3q5tPjSsxh0tBQxXF2E1MAlB07EMVhrSHJvudSwap4WyLj7zzY0KzfGrbn+fTdqkqkT\/lufUfWqAx\/HxSDkck4OrdhxjROD++aFMAVZwMacpJu3QZG3PHRG8wuXb5\/U5tZThGlgnNC6B4Act9GyciIspulvtXr0Z\/fZpkbWFwIbIaVYrbolctexy7koDL2g36+3Ud4Opo\/luNdKW6GfsAp649UBWK\/zsbjx+1ICRVEts8edR2CR1\/X01I7DK1O+w+Zu+PwfV7D2Gj7WgcLCvHyCIBSEh3rRvaufeF30+c+UzOUEELBU+STLFsb5sHBfQB+jdiDBdYJJ+hq9mBi\/fVQP9zNx8gSm+rUNQG17XHhy8lqNd\/MjIBG\/6NSwxgREREuQE\/siOibFdVCzAfNMyHD7WljJkVFyMZYN\/B3R6\/nYrDuJ33VEh5rZqD6u7VumJeHL18Hx\/vuKtmJCuiz7QlM3hJ6Jm57x4m\/nlXVWdalLdT4188S9hi7ek4bNRu9EsWzINXn7PHX1rYkXPLIP\/XPZ\/8jF1yvTKrmVzrssAY1S1OZk+TrnIva9d3\/maCatsSHI\/C9jaqG538XjpXtsf2c\/EYu\/2umo1Nfs8SzoiIiHILC50qOXtxqmSiR5MTUyWTeWRGNBnnUyx\/Hpy8ch+bQu6jZ017FV6IKGdxqmQiy8e\/hkREFkJujWRWtkWHYzBm21389k88WpXPy+BCRESk419EIiILIZ\/V1i+TF+OaGQblT2ieX60TERGRAcMLERERERFZhacfXq5uwsdqSuTFOKlvMjq5RP+GfW1ZfELfmB0CFqNDJ5\/EZUFAJtuz28kb8O19DT8kvuDb+KH3DZzS14iIiIiIKK2nG17ku1y+AkasHIFG+iajqM0f4wPM06dLngcM\/RibruqNj+PyRgwbD0zfuB6b9WWQl97m1T9x2+Zl\/RE8fjEC9aZs554HoYdv6ytERERERJSZpxte5LtcpnWEk76aJAr7\/9RCzav697tcDUUo9uOvQ1GG9SfhYhj+ruoKF30125W3xyuIww4Tgezq\/0WpyoxaPouGcZdTK6Kw4\/8MVRtZpv3fPb1Fo1dzUh9DRERERPSssIypkqXrWPfzeGtbfxjiykksbvMXmsu6VGeGakFmZCj+wgh83iFt1MlM6qmSAxf6YMxG7UGnqdg8sJZhoy5i\/Uj0XiwduKpi0LIv4VPKsD1dJ37EB9+d01d0tTph3lu19RUTJGgczgu\/evcx7ZIDxrZNwA+976Pe8qKoKm2\/2mD6BEeU0HaVIDPmoj38ehXSwss1zDxvZ2i7Go1pIx7gFTlGHi8C3jNxDFFWyP\/zrq6u+hoRUe6Q3lTHnCqZyHJY9oB9CS4\/lMdqLcSk7lb2OOoMNHQNm45xaca2uPh8qXcba4nt747E+st6Q3pq9MC8Lz5OuWQUXJKr7oDG\/rEpxrpcvfQA7t52KoSIEnXywv38g8RKSqtXDQEFJWzgprZoxwTeR0hIPMbolZcx32eaR4mIiIiIrI6FhpfSKN9wNT6Q4KJ3K7sUut\/QlI1UiJnSCeu\/34gIfVuiUvXRuuophF7U19MjlZfRn6dcfjiqN2YmP2p6P8Dh1DMVZIF7zwLwW148aWHVhYiIiIieMRYaXpzQqEUjtahOYlc34YeVjdC8\/qN3GctMRHiI\/iiVy4ew\/VQnNDUO5k\/P41ReNCXa2gOH7+tr2nppG4T4xyeNc\/kjHiHlbRIrMaZIdQbfp6zgEBERERE9W4D\/B7QdHQmADWviAAAAAElFTkSuQmCC\" alt=\"\"><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"992\" height=\"470\" src=\"https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2024\/07\/29165543\/image-3.png\" alt=\"\" class=\"wp-image-2786\" srcset=\"https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2024\/07\/29165543\/image-3.png 992w, https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2024\/07\/29165543\/image-3-300x142.png 300w, https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2024\/07\/29165543\/image-3-768x364.png 768w\" sizes=\"(max-width: 992px) 100vw, 992px\" \/><\/figure>\n\n\n\n<p>\uc704\uc640 \uac19\uc774 \ubc84\uc804\ubcc4\ub85c \uad00\ub9ac\uac00 \uac00\ub2a5\ud558\uba70 Push\ud55c Custom Image\ub97c \uc774\uc6a9\ud558\uc5ec \uae30\ubcf8\uc801\uc73c\ub85c \uc9c0\uc6d0\ud558\ub294 \ub7f0\ud0c0\uc784 \uc774\ubbf8\uc9c0\ubcf4\ub2e4 \ub354 \ub113\uc740 \ubc94\uc704\ub85c \ud65c\uc6a9\uc774 \uac00\ub2a5\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<p>PDF \uc5c5\ub85c\ub4dc\uac00 \uc815\ub9d0 \ub418\ub294\uc9c0 \ud655\uc778\ud574\ubcf4\uace0 \uc2f6\ub2e4\uba74 \uc544\ub798 \ucf54\ub4dc \uc608\uc81c\ub97c \uc774\uc6a9\ud558\uc5ec \ud14c\uc2a4\ud2b8 \ud574\ubcfc \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<ul>\n<li><strong>\uc6f9 \uc561\uc158<\/strong><\/li>\n<\/ul>\n\n\n\n<ul>\n<li><strong>\ucf54\ub4dc<\/strong><\/li>\n<\/ul>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">import json\nimport base64\nimport boto3\nfrom datetime import datetime\nimport random\n\nservice_name = \"s3\"\nendpoint_url = \"https:\/\/kr.object.ncloudstorage.com\"\n\nS3 = None\n\ndef set_response(status_code, body, headers={\"Content-Type\": \"application\/json\"}):\n    return {\n        \"statusCode\": status_code,\n        \"headers\": headers,\n        \"body\": json.dumps(body),\n    }\n\ndef set_S3_client(access_key, secret_key):\n    print(\"--- Setting new object storage client ---\")\n    return boto3.client(\n        service_name,\n        endpoint_url=endpoint_url,\n        aws_access_key_id=access_key,\n        aws_secret_access_key=secret_key,\n    )\n\ndef upload_pdf_to_s3(bucket_name, file_name, file_content):\n    try:\n        S3.put_object(Bucket=bucket_name, Key=file_name, Body=file_content)\n        return True, file_name\n    except Exception as e:\n        print(f\"Error uploading PDF: {e}\")\n        return False, str(e)\n\ndef main(args):\n    global S3\n    if S3 is None:\n        S3 = set_S3_client(args[\"access_key\"], args[\"secret_key\"])\n        \n    body = args.get(\"__ow_body\", \"\")\n    if not body:\n        return set_response(400, {\"error\": \"No data provided\"})\n\n    # Base64\ub85c \uc778\ucf54\ub529\ub41c \ub370\uc774\ud130\ub97c \ub514\ucf54\ub529\n    try:\n        decoded_file = base64.b64decode(body)\n    except Exception as e:\n        return set_response(400, {\"error\": f\"Failed to decode the file data: {str(e)}\"})\n\n    # \ud30c\uc77c \uc5c5\ub85c\ub4dc \ub85c\uc9c1\n    bucket_name = args[\"bucket_name\"]\n    account_number = args.get(\"account_number\", \"unknown\")\n    today_date = datetime.now().strftime(\"%Y-%m-%d\")\n    random_number = random.randint(10000, 99999)\n    file_name = f\"{account_number}-{today_date}-{random_number}.pdf\"\n\n    success, message = upload_pdf_to_s3(bucket_name, file_name, decoded_file)\n    if success:\n        return set_response(200, {\"message\": \"File uploaded successfully\", \"file_name\": message})\n    else:\n        return set_response(500, {\"error\": message})\n\n<\/pre>\n\n\n\n<ul>\n<li><strong>\ub514\ud3f4\ud2b8 \ud30c\ub77c\ubbf8\ud130<\/strong><\/li>\n<\/ul>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">{\"access_key\":\"NCLOUD_ACCESS_KEY\",\"secret_key\":\"NCLOUD_SECRET_KEY\",\"bucket_name\":\"OBJECT_STORAGE_NAME\"}<\/pre>\n\n\n\n<p><strong>&#8211; NCLOUD_ACCESS_KEY :<\/strong> Object Storage \uc5c5\ub85c\ub4dc \uad8c\ud55c\uc774 \uc788\ub294 Access Key<br><strong>&#8211; NCLOUD_SECRET_KEY :<\/strong> Object Storage \uc5c5\ub85c\ub4dc \uad8c\ud55c\uc774 \uc788\ub294 Access Key\uc758 Secret Key<br><strong>&#8211; OBJECT_STORAGE_NAME :<\/strong> PDF \ud30c\uc77c\uc774 \uc5c5\ub85c\ub4dc\ub420 Object Storage \ubc84\ud0b7 \uc774\ub984<\/p>\n\n\n\n<ul>\n<li><strong>HTTP \uc6d0\ubb38 \uc0ac\uc6a9<\/strong><\/li>\n<\/ul>\n\n\n\n<p>\uc704 Action \uc0dd\uc131\uc774 \uc644\ub8cc\ub418\uc5c8\ub2e4\uba74 API Gateway\uc640 \uc5f0\ub3d9\uc744 \uc9c4\ud589\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<p>Vue.js\ub97c \uc0ac\uc6a9 \ud558\uc5ec \ud14c\uc2a4\ud2b8 \uc2dc axios.post\ub97c https:\/\/{API_GATEWAY_PRODUCT_ID}.apigw.ntruss.com\/{API_GATEWAY_API}\/{API_GATEWAY_STAGE}\/{API_GATEWAY_PATH}\/http \ub85c \uc124\uc815\ud558\uace0,<br>headers\ub97c Content-Type&#8217;: &#8216;multipart\/form-data&#8217;\ub85c \uc124\uc815\ud558\uc5ec \ud14c\uc2a4\ud2b8 \ud574\ubcf4\uc2dc\uba74 \uc815\uc0c1\uc801\uc73c\ub85c \uc5c5\ub85c\ub4dc\uac00 \uac00\ub2a5\ud55c \uac83\uc744 \ud655\uc778\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"498\" height=\"88\" src=\"https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2024\/07\/29171025\/image-4.png\" alt=\"\" class=\"wp-image-2787\" srcset=\"https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2024\/07\/29171025\/image-4.png 498w, https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2024\/07\/29171025\/image-4-300x53.png 300w\" sizes=\"(max-width: 498px) 100vw, 498px\" \/><\/figure>\n\n\n\n<p>\uc704 URL\uc740 Cloud Functions \uc678\ubd80 \uc5f0\uacb0 \uc8fc\uc18c\uc5d0 \ub098\uc640\uc788\ub294 URL\uc785\ub2c8\ub2e4.<br>\uc774 \uacfc\uc815\uc744 \ubaa8\ub450 \uc9c4\ud589\ud574\ubcf4\uc558\ub2e4\uba74 Cloud Functions\uc758 Custom Image \uc0ac\uc6a9\ubc95\uc744 \uc644\ubcbd\ud788 \uc774\ud574\ud560 \uc218 \uc788\uc744 \uac83\uc785\ub2c8\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading has-white-color has-cyan-bluish-gray-background-color has-text-color has-background has-link-color wp-elements-790b4ede7486cf11fc8601a67c8dcb47\"> Personal Comments<\/h3>\n\n\n\n<p>\uc774\ubc88 \ud3ec\uc2a4\ud305\uc744 \ud1b5\ud574 \ub124\uc774\ubc84 \ud074\ub77c\uc6b0\ub4dc\uc758 Cloud Functions\uc5d0\uc11c custom image\ub97c \ud65c\uc6a9\ud558\ub294 \ubc29\ubc95\uc744 \uc790\uc138\ud788 \uc54c\uc544\ubcf4\uc558\uc2b5\ub2c8\ub2e4. Custom image\ub97c \uc0ac\uc6a9\ud568\uc73c\ub85c\uc368 \uac1c\ubc1c\uc790\ub294 \ub354 \ub9ce\uc740 \uc720\uc5f0\uc131\uc744 \uac16\uace0 \ud2b9\uc815 \uc694\uad6c\uc0ac\ud56d\uc5d0 \ub9de\ucd98 \ud658\uacbd\uc744 \uad6c\uc131\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ud558\uc9c0\ub9cc \uba87 \uac00\uc9c0 \uc8fc\uc758\ud574\uc57c \ud560 \uc810\uc774 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\uccab\uc9f8, \uc561\uc158\uc5d0\uc11c \uc0ac\uc6a9\ub41c custom image\uac00 \uc5c5\ub370\uc774\ud2b8 \ub418\uc5b4\ub3c4 \uae30\uc874\uc5d0 \uc124\uc815\ub41c \uc561\uc158\uc5d0\ub294 \uc790\ub3d9\uc73c\ub85c \uc0c8\ub85c\uc6b4 \uc774\ubbf8\uc9c0\uac00 \ubc18\uc601\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \ub9cc\uc57d \uc774\ubbf8\uc9c0\ub97c \uc5c5\ub370\uc774\ud2b8\ud55c \ud6c4\uc5d0 \ud574\ub2f9 \ubcc0\uacbd\uc0ac\ud56d\uc744 \ubc18\uc601\ud558\uace0 \uc2f6\ub2e4\uba74 \uc561\uc158 \uc124\uc815\uc5d0\uc11c \uc774\ubbf8\uc9c0\ub97c \ub2e4\uc2dc \uc120\ud0dd\ud558\uace0 \uc800\uc7a5\ud558\ub294 \uacfc\uc815\uc744 \uac70\uccd0\uc57c \ud569\ub2c8\ub2e4. <\/p>\n\n\n\n<p>\ub458\uc9f8, \uc124\uc815\ud55c \uc774\ubbf8\uc9c0\uac00 \uc5b4\ub5a4 \uc774\uc720\ub85c \uc0ad\uc81c\ub418\uc5c8\ub2e4\uba74 \ud574\ub2f9 \uc774\ubbf8\uc9c0\ub97c \uc0ac\uc6a9\ud558\ub294 \uc561\uc158\uc740 \ub354 \uc774\uc0c1 \uc815\uc0c1\uc801\uc73c\ub85c \uc2e4\ud589\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \uc774\ub294 \ud504\ub85c\ub355\uc158 \ud658\uacbd\uc5d0\uc11c \ud070 \ubb38\uc81c\ub97c \uc77c\uc73c\ud0ac \uc218 \uc788\uc73c\ubbc0\ub85c \uc0ac\uc6a9 \uc911\uc778 \uc774\ubbf8\uc9c0\uc758 \ubc31\uc5c5\uacfc \ubcf4\uad00\uc5d0 \uc8fc\uc758\ub97c \uae30\uc6b8\uc5ec\uc57c \ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<p>Cloud Functions\uc758 custom image \uae30\ub2a5\uc744 \uc798 \ud65c\uc6a9\ud55c\ub2e4\uba74 \ub124\uc774\ubc84 \ud074\ub77c\uc6b0\ub4dc\uc5d0\uc11c Serverless \ud658\uacbd \uad6c\uc131\ud558\uc5ec \uc870\uae08 \ub354 \ud604\ub300\ud654\ub41c \uc2dc\uc2a4\ud15c \uad6c\uc131\uc774 \uac00\ub2a5\ud560 \uac83\uc785\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\uae34 \uae00 \uc77d\uc5b4\uc8fc\uc154\uc11c \uac10\uc0ac\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"137\" src=\"https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2021\/08\/10202040\/ncloud-master.png\" alt=\"\" class=\"wp-image-1221\" srcset=\"https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2021\/08\/10202040\/ncloud-master.png 800w, https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2021\/08\/10202040\/ncloud-master-300x51.png 300w, https:\/\/cdn.manvscloud.com\/wp-content\/uploads\/2021\/08\/10202040\/ncloud-master-768x132.png 768w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>\uc548\ub155\ud558\uc138\uc694. MANVSCLOUD \uae40\uc218\ud604\uc785\ub2c8\ub2e4. \uc624\ub298\uc740 \ub124\uc774\ubc84 \ud074\ub77c\uc6b0\ub4dc\uc758 \uc720\uc6a9\ud55c \uae30\ub2a5 \uc911 \ud558\ub098\uc778 Cloud Functions \uc11c\ube44\uc2a4\uc640 \ud2b9\ud788 \uadf8 \uc911\uc5d0\uc11c\ub3c4 custom image \uae30\ub2a5\uc5d0 \ub300\ud574 \uc54c\uc544\ubcf4\uace0\uc790 \ud569\ub2c8\ub2e4.Cloud Functions\ub294 \uc11c\ubc84\ub9ac\uc2a4 \ucef4\ud4e8\ud305 \ud658\uacbd\uc744 \uc81c\uacf5\ud558\uc5ec \uac1c\ubc1c\uc790\uac00 \uc560\ud50c\ub9ac\ucf00\uc774\uc158 \uac1c\ubc1c\uc5d0 \ub354 \uc9d1\uc911\ud560 \uc218 \uc788\ub3c4\ub85d \ub3d5\uc2b5\ub2c8\ub2e4.\uc774 \uc11c\ube44\uc2a4\ub294 \ud2b8\ub9ac\uac70\uc5d0 \uc758\ud574 \uc790\ub3d9\uc73c\ub85c \ucf54\ub4dc\uac00 \uc2e4\ud589\ub418\ub294 \ud658\uacbd\uc744 \uc81c\uacf5\ud558\uc5ec \uc0ac\uc6a9\uc790\ub294 \uc11c\ubc84 \uad00\ub9ac\uc5d0 \ub300\ud55c \ubd80\ub2f4 \uc5c6\uc774 \ube44\uc988\ub2c8\uc2a4 \ub85c\uc9c1 \uad6c\ud604\uc5d0\ub9cc \uc9d1\uc911\ud560 \uc218 \uc788\ub294\ub370\uc694. Cloud Functions\uc5d0\uc11c\ub294 \uae30\ubcf8 \uc81c\uacf5\ub418\ub294 \ub7f0\ud0c0\uc784 \uc678\uc5d0\ub3c4 custom image \uae30\ub2a5\uc744 \ud1b5\ud574 \uc0ac\uc6a9\uc790\uac00 \uc9c1\uc811 \uc815\uc758\ud55c \uc774\ubbf8\uc9c0\ub97c \uc0ac\uc6a9\ud560 \uc218 \uc788\ub294\ub370 \uc774\ub294 \uc0ac\uc6a9\uc790\uac00 \ud544\uc694\ub85c \ud558\ub294 \ud2b9\uc815 \ub77c\uc774\ube0c\ub7ec\ub9ac\ub098 \ub3c4\uad6c\ub97c \uc774\ubbf8\uc9c0\uc5d0 \ud3ec\ud568\uc2dc\ucf1c \ubc30\ud3ec\ud560 \uc218 \uc788\uac8c \ud574\uc8fc\uba70 \uc77c\uad00\ub41c \ud658\uacbd\uc5d0\uc11c \uc5ec\ub7ec \uc561\uc158\uc744 \uc2e4\ud589\ud560 \uc218 \uc788\ub3c4\ub85d \ud569\ub2c8\ub2e4.custom image\ub97c \uc0ac\uc6a9\ud568\uc73c\ub85c\uc368 \uae30\ubcf8 \uc774\ubbf8\uc9c0\uc5d0\uc11c \uc81c\uacf5\ud558\uc9c0 \uc54a\ub294 \ucd94\uac00\uc801\uc778 \uc124\uc815\uc774\ub098 \ub77c\uc774\ube0c\ub7ec\ub9ac\ub97c \ud3ec\ud568\uc2dc\ud0ac \uc218 \uc788\uc5b4 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc758 \ud2b9\uc218\ud55c \uc694\uad6c\uc0ac\ud56d\uc744 \ubcf4\ub2e4 \uc720\uc5f0\ud558\uac8c \ub300\uc751\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc774\ubc88 \ud3ec\uc2a4\ud305\uc5d0\uc11c\ub294 \uc65c custom image\ub97c \uc0ac\uc6a9\ud574\uc57c \ud558\ub294\uc9c0, \uadf8\ub9ac\uace0 \uc5b4\ub5bb\uac8c \uc0ac\uc6a9\ud560 \uc218 \uc788\ub294\uc9c0\uc5d0 \ub300\ud574 \uc790\uc138\ud788 \uc0b4\ud3b4\ubcf4\uaca0\uc2b5\ub2c8\ub2e4. Custom Image\ub97c \uc0ac\uc6a9\ud560 \uc218 \uc788\uc5b4\uc57c \ud558\ub294 \uc774\uc720 Cloud Functions\ub97c \uc0ac\uc6a9\ud558\uba74\uc11c \ud45c\uc900 \ub7f0\ud0c0\uc784 \ud658\uacbd\uc758 \uc81c\uc57d \uc0ac\ud56d\uc5d0 \ubd80\ub52a\ud788\uc2e0 \uc801\uc774 \uc788\uc744\uac81\ub2c8\ub2e4. \uccab\ubc88\uc9f8, Cloud Functions\uc758 \uae30\ubcf8 \ub7f0\ud0c0\uc784\uc740 \uc77c\ubc18\uc801\uc73c\ub85c \uac04\ub2e8\ud55c API \uc694\uccad \uc815\ub3c4\ub294 \uc0ac\uc6a9\uc774 \uac00\ub2a5\ud558\uc9c0\ub9cc \ubaa8\ub4e0 \ub77c\uc774\ube0c\ub7ec\ub9ac\ub098 \ub3c4\uad6c\ub97c \uc9c0\uc6d0\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.\uc608\ub97c \ub4e4\uc5b4 Object Storage API\ub97c \uc0ac\uc6a9\ud558\uae30 \uc704\ud55c boto3 \ub77c\uc774\ube0c\ub7ec\ub9ac\uac00 \ud544\uc694\ud558\uac70\ub098 AI \ud504\ub85c\uc81d\ud2b8\ub97c \uc704\ud574 LangChain \ub77c\uc774\ube0c\ub7ec\ub9ac\ub97c \uc0ac\uc6a9\ud574\uc57c\ud560 \uacbd\uc6b0 \uc774\ub7ec\ud55c \ub77c\uc774\ube0c\ub7ec\ub9ac\ub97c \uae30\ubcf8\uc801\uc73c\ub85c \ud3ec\ud568\ud558\uc9c0 \uc54a\uc73c\ubbc0\ub85c \ub2e4\ub978 \ubc29\ubc95\uc774 \ud544\uc694\ud569\ub2c8\ub2e4. \ub450\ubc88\uc9f8, \uc704 \uc81c\uc57d \uc0ac\ud56d \ubb38\uc81c\ub85c \uac00\uc0c1 \ud658\uacbd\uc5d0\uc11c \ub77c\uc774\ube0c\ub7ec\ub9ac\ub97c \uc124\uce58\ud558\uace0 .zip \ud30c\uc77c\ub85c \uc555\ucd95\ud558\uc5ec \ud30c\uc77c\ub85c [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"advanced_seo_description":"","jetpack_seo_html_title":"","jetpack_seo_noindex":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[3],"tags":[507,456,356,965,119,357,32,87,91,17,90,16,354,805,89,202,398],"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/manvscloud.com\/index.php?rest_route=\/wp\/v2\/posts\/2774"}],"collection":[{"href":"https:\/\/manvscloud.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/manvscloud.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/manvscloud.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/manvscloud.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2774"}],"version-history":[{"count":10,"href":"https:\/\/manvscloud.com\/index.php?rest_route=\/wp\/v2\/posts\/2774\/revisions"}],"predecessor-version":[{"id":2789,"href":"https:\/\/manvscloud.com\/index.php?rest_route=\/wp\/v2\/posts\/2774\/revisions\/2789"}],"wp:attachment":[{"href":"https:\/\/manvscloud.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2774"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/manvscloud.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2774"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/manvscloud.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2774"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}