/*
텐서플로우와 학습된 inception v3 모델을 이용하여
원하는 이미지를 학습해보고 샘플 이미지를 판단 시켜본다
서로 다른 자동차 5개 구분 해보기 !
각 차량별 샘플 사진은 50~70개 사이
빠른 학습을 위해 적은 step으로 테스트
*/
1. 리트레이닝 스크립트로 기존 inception 모델에 재학습
2. 추론 스크립트로 테스트 이미지 추론 결과 확인
# 이미지 데이터 준비
photos 폴더 안에 서로 다른 이름의 폴더를 만들고 그 이름에 맞는 사진을 분류해서 저장한다
이 폴더 구조가 지도학습에 사용될 레이블과 샘플 이미지 구조가 된다
![](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAS4AAAEOCAIAAAC4jm0iAAAAA3NCSVQICAjb4U/gAAAgAElEQVR4Xu2dCZwU1fXvq6q7p3sWFqEdBhyYAQQhDi64gMtfURN9f0JUMKAxmsSFRJ+K/F0IiBj+GFeCrCZgNCqgEZ9L/JvoUz9CgonG5WnABRIJM6gMgwzDCMxMd9f2zjm3qqd7emGmgK7umlOfpub27VvV9/5OfTnnLl0lm6Yp8cYKsAJuK6C4XQH+flaAFUAFGEW+DliBvFCAUcwLM3AlWAFGka8BViAvFGAU88IMXAlWgFHka4AVyAsFGMW8MANXghVgFPkaYAXyQgFGMS/MwJVgBRhFvgZYgbxQwO96LTZv3tzQ0ADr72RZFpURibRvRWYwGKyurg6Hw65XniuQqgAbNFWTzuS4jyJwOGbMGJ/P15nqijItLS21tbWRSKSysrLzR3HJ3CjABnWms/soGoYhOGxb+4jeuC17M3xHVhefM7W0tHTEiBFbtmxpbW0F91hUVJT9KP40lwqwQZ2p7T6KimL3V+0AtTMt8fv9w4cPr6+v37hxo6Zp4pDEyDZtfAvFOkS/8L9AeXl5RUVFZ76Uy3RGATZoZ1RKLeM+ivE6gbtLrV+WHDA5BKgHGaMCxuBdGcUsOjv+iA3aJencRxHclKqqXar0oS0MAdWhPWE3Pxsb1NkF4D6KUO/m5mZntT8kR8VD2UNyNj4JG9TZNeA+ikCCuyg6E46PyqQAGzSTMtnzZXdvqLHjteUt2z6VpAw39YDKiU9gL9KUoOK0t5IiTWXFp1DYgEzDhNgT94aEbyET0pgPb7GEIcm4N0PhimG3L1ECPBKb/Wo58Kds0ANrlKGEy16x9ctN5aNOkgNFsuyTYCjV56OELCs+SVbgZUePSI4ERAmcTB1x0nViDPZ2QtdMXZd0FfcwrKprtIe0igkNEjHIlFXNhBxVkyFTjUJ+/Z5dkfq6kqrhGVTi7M4qwAbtrFIp5VxGEb2YrGi7a3EiA1AE9hQZEkggoAjpxA3doKBReDzh6wxTh5duAp+wt1+QlnUE1UogopTWDBmYxDQcpUEZAFKPKUqwOEUcznCgABvUgWh4iMsoyj4/0CXjUhuTOATHSBwKLIFEZJKAxMgTNhnhlUVsKZkKsAcfQBgKiELQSQnJwEIYg+qAIoag6FF1GbBEv6pjeRPyybUCx7DFor7iEocS8mEJCrBBHV8OLqMoKT4ILyUISiW93R+CVwQUhW/EBQACRfSHyBeWp/bKCKdM7Fk0Yt+RHCYCKngTHUUNigkg0U8ahsASvCL4RqBRi6i+UKljEfnAdgXYoE6vBpdRVHx+RAt4wyEU6hgShMghoohO0moakmiAiwMCgTbh/Yg62ghCcHR4NupA4gvdKHpFzIFwFD0keULoW+JojUYfYffSUHUlGHKqIR+XSCIb1OH14DKKEM8ACcAcwEQb+jvyeRSXkkcEJsnFgecj70d+j0Y+IW2/ED8cCyV/SKRhdGp7P0oLPnFEB/LRH1KPEaJT6EDCp7wdCgXYoI5VdBtFJWjomhJ3fWKaAv0b+DHRMwSEsOvXPkwKyAnSLB8IOGnk6MDjJbhEco/kJHGEJs4hhqZIIL7wU10zYBSH7wfr+ApKPlBmgzpV0mUUlUDQBBJw1Ib6gdjxgyFVYE8xcY9dSOgOkickr2jPWwBOOFhqE4X5mANMijICM3J3BB5GpyKNZXDyA5mkqQ4dZjVkjk6dXkHJx7FBHevoMoqyP2jAzF7AhxQBguAOcSBGRKewt9uF4SuFoNTxw9kL8ITo67CnB29xCpECTjgPhqA0HkNRqFVSFuEoOFJK4HyGGjNxXlHVWyOyxGM2ji+hpAPZoI51dBlFBVCM7jWNIMADcxQmuELo/WEvURb+kDwjbGJcRsSZ1CfEoBSnE0X8SQQKGhFLeoug4tQikWnCinNVNdWYHKOEBvP7FKnCXEZUU8qCjhXkAxMVYIM6vh5cRlEuCun7Iqbhw+UvgB/6Q5joh2CUxmwwWgVAcUyFRkkxRqUQFJmkVWwYeVKkakC0aYWsGiIHTs+IxWRMq7C8BpgEOME30h5PAmeD2RDYwwnkEE8qOr6Ekg5kgzrW0W0U/UEzBoEi9BhVazZfDJyKBuHkBk1V4Ab8wDt0hTSPaKEIi9oMAE+Lwd7UYgAhAEnOEJGzwSOMaRiWpkJMWCNAJ8GXoRv+kjLHCvKBiQpAgMoGdXZJuIwi9PI1FQJL1dBiNKtIoSlFpda0BmKI8FCECoBBSdXag8eDFzEpRmuoZ0hODzikzOR9O342kzApgifwMYrOLp+Uo9igKZJ0NsN9FM0YxpAmAEmDNDhwSn+JPo36hBB5An6AnGaFqfghkAY7ghARFVErsGdaHNqBKNFoyrDcDQJRdIMWn5Qgr6iZ/tJenRWMy2VVAEdQ2aBZJcr0oesoFuvRqKEWGdEWmusD2FRycXC7GohH7QWoBKeYdKRQE2cWaY8xpwDSQgv9YQKNUAAJtD0k8on4JQWomhEoYxQzXSFdy1cCbNCuKRYv7TqKwUjDF8VKmd7WZP8gA/GjX2aIyYz4hIZNI7pE5DCOIqFFro/2yCTyZg3PtKfjUWtyBGuYiq+YJzMcXkAdDgOvyAZ1JqXbKAZDZiQqa0GcWgBXhR1FfFn3J8beY/JGFKJ7hL/AHu0hbUOYSKMNZwc/ScOnNN1PUSs4YPiVJKPYUWiH72EpLxvUmXYuo+gLlugw4wezfKoOHLY7Q6QRWkQoWp1HaiCuACAOCUmLRgTS6vjFEyIobY9Ok/xkQtQK84pmgFF0dvWkHsUGTdWkkzkuo6gESwyY9IMxG03vwCENqNJGUxrUUaR3AkKLRpobRMcofCA5SQtLAafVdUzoSYp5DjuCxaWrsq+EA1RL3oP8wwZ1LKDLKMKvBLUIrIBBr0i/w7ACVGKO/iWGqNbEBtEIWzw6bQ9TBYq0mtwavGknk0ZWE0d0yLXi6JDMvxt2fAF1OJAN6lhJ11EErxg1VeguwmRGvKNICAoIBZBEnuUYiZ8k35jUaRS9x+R4VUBodxGtER1bM+g2sld0fAGloMgGdailyygqsPBN1YwIrJKJo0hrUOMEpvOKNor2+I1YPSNmOMRERbz3CL9sxJAVX9ZQqhhlTZArppu82sbh5ZNyGBs0RZLOZriMInhC8Ek6xKgwqQiuDtfZEIeio2hxKP60dxfFmI1YwmaNpooVbTSaCtTRrGOHgRx7QDVFGVXT2CumqOI0gw3qVDm3UYS4UwmobVEfdtksf4g04pbcURQtFN1FSGccSkVixaoacJO2SyQsRQ8zRSm44RujmKKK8ww2qDPt3EcRJoXV1n2SHzuKOFNh+UMamungFZFAaqaACj1hwsQGgGx7RThY+Ex0j5khFJJpmsEoOrt60h7FBk0rywEz3UdRl/0IA0WlWF2ro0g1t3+t2N4MexBVjOIAkgk0ivFQ8n7xSX/7SIFwWjlgPTqjmFYZZ5lsUGe6uYwiPDlYU/xqVA/AjWmQxNSOImXGx08tpMSAjQhTRdrat3cgM+jRgUlYewM3lYvGYqEQ31Mjg2RdyWaDdkWtpLIuowh16XHe5C9WLzb3R9Gp4fJuBIwcXBJjlI8jMiIhFsCJ8Rs7bR8owtesksSBVHy+fhMuyVqWP+yaAmzQrulllwYvkiV2c3bOrh3V1NTU2NgYjYJninXtyIMuDU8ODwaD4XC4T58+B30yPoGlABvU2aXgPopQb3j0LwQ2uX/gaSAQgLgUniXuTDs+KpMCbNBMymTJzwsUs9SPP2IFuokC9m3wu0lzuZmsQL4qwCjmq2W4Xt1MAUaxmxmcm5uvCjCK+WqZblIvY/dbi2657bebIt2kvZmb2S1RjG56+IfnXjT3r838/KjMV0aOPtH3177//ifb21yeUstRa7N9Tbccx1dK+g2qrurfE9a98pa3CpjfvHnDhLkft9fvxPteXXKmd+8d3S1RDFR9/77ffT9vr0GuGClgtn0TUY644M57Jw8K4Hul9ChPP07BVRSNbz5+btmyZ978bJcqScEjBo4Yd93c6WeFMWjWGt9bvfDhZ9dv3SeVVI6ZdOOMq88oDxiN6xfOXb7+n181RSCeCfUffeH1M687pz8ZKsMhZtu/X170wGOvbWrSpVB41KX3L7z2mKC6beVPrnh62OIX544uTltAnJD3OVYgWvfs7VOX7ZqwcPlNJ/VS9NamVvmIo0eOOKbS1as0VyK42MjI509M+9+P7xr9g/+675T+gW8+fPSXqz7Y2qIjim2frrjx1ueLL5724K2D9U0vLFw2a1aP1csv799S9+GG+n4/+cWsUT20xn88v3TVXbP7Pr3i8oEAY/pDJuvPzJn/eslldyw5d6B/b/3O4nKLW1tfte4ABXJliG7/PdquNx+4eenWsXMevQE4BDn0fTv3GYr5za494X5HhLw/qOEaiubeDx59emufi5bde/3xpdBna/O9Flq1mS5Is/ndx56vH3HTmukX94eHoB431Lfh7RmvvNUwZQp+Ghpw4uljRxdL0snH6B9MenDth3suG1guZzjkwlENe6WymlPGHj+ypyKNHJVywev7DlAg5QjOOAwK6E1vL35w3t+GTl9x5/kV1jUJD2fo2XP78uum/FqSen9rwtTbbvresBIP9+5dQzG246PPoyUnnDMcOUzeYjs21qnmroemjHuo/YNeXzVrUs/EgkqPQVU9pY1f79elciPDIf7vX/qjk/+y9NYpn5990aRLJp1/Qr9g8teFjjlAgY6V4/eHQYGWP989Vyo7f/7cSdXtD7osPXn27/84WzLaGj5du/pXD86f1tLn93PP7O1Z9+gaivCEDENS/OmFhR/eB06a8fD0UeD8xCb7e1YEpYbky8AXUOBnVVAYtgyHBINTFrx4+v/7vy888/T8aU+v/M97ls88q2/iWYJD0hRIX6vDcA3yKUmBwDHfOaX5tdcfWHT6ijvOK0++JpXiilHfnXZH7TvXvvDy5rYzx3r2jrWuXXSB8mMGyPs/eX976i+jAhWjqvxq7b9i5VXV9lZV2aeDP0u6irMdohRXnjJx2oKnVv6suuHVVW/vTplMPGABBuYwK1BUOf7O5feM970x95YVG/anmWKkrJTw6TDXKsend80rKkec8ePze9+26o57y66fMLK0acMfPmqRhBNUeo+96uKKG5+b9fOiqZecOqhU2/3F9qLTJ47rn1mbTIeEG9f/4V198NEVpUbTxk17pKJv9S5Ksqi64wAFMn8nf3IoFfCHz7rtoek7rlo0+1c1K+86u4/RsG71K02VIwYd4Y/Ub3zlyTVf9/rOrSPjUdKh/Oo8OZdrKEpKz1NvW3pH8YInV899c5/UZ8gwcNAKjNLAJpcef8NvFhyxZMULS+c8C/McJRUnTqm5cByO4WTaMhzSu2nzX1auWbILXK/co2rMlfNuP62XLMEp7U1LWyDTt3D+4VQgMGjinJnv/XDefQvOHnX3GW2Nde+seerxnbAiLnDEkFN+MPeGq0+jkVWvbvnye0Wzee30i/9bnfXisgv6eFlvr15H3K6DVsA9ryipX7354gfSwEHlPQNt29/7P0s/9J0460RP/7930NbiE3hYAfdQNNp2fLx21auffd0KffLiippxNy284X+VZ4lBPWwFbhorgI+BSTNgxcKwAqxAjhXgflmOBeevYwXSK8AopteFc1mBHCvAKOZYcP46ViC9Aoxiel04lxXIsQKMYo4F569jBdIrwCim14VzWYEcK8Ao5lhw/jpWIL0CjGJ6XTiXFcixAoxijgXnr2MF0ivAKKbXhXNZgRwrwCjmWHD+OlYgvQKMYnpdOJcVyLECjGKOBeevYwXSK8AopteFc1mBHCvAKOZYcP46ViC9Aoxiel04lxXIsQKMYo4F569jBdIrwCim14VzWYEcK+DevW3shm7evLmhoQHu6yHL1h1KRSLtW5EZDAbhVsXhcDjHYvHXdUYBNmhnVEot4z6KwOGYMWN8vi7cYKqlpaW2tjYSiVRWVqY2iXPcVYAN6kx/91GEh14IDtvWPqI3bsveDN+R1cXnTC0tLR0xYsSWLVtaW1vBPRYVFWU/ij/NpQJsUGdqu4+iotj9VTtA7UxL/H7/8OHD6+vrN27cqGmaOCQxsk0b30KxDtEv/C9QXl5eUVHRmS/lMp1RgA3aGZVSy7iPYrxO4O5S65clB0wOAepBxqiAMXhXRjGLzo4/YoN2STr3UQQ3paoJT7HoUvUPRWEIqA7FafgclgJsUGeXgvsoQr2bm5ud1f6QHBUPZQ/J2fgkbFBn14D7KAIJ7qLoTDg+KpMCbNBMymTPd/lG/TteW96y7VNJyvCwAJhtFJ/AXqQpQcVpbyVFmsqKT6EwPIYY/kHsiXsDn0qMmZDGfHiLJQx4UAHmhMIVw25fogR4JDb71XLgT9mgB9YoQwmXvWLrl5vKR50kB4pk2SfBUKrPRwlZhictygq87OgRyYGHfVs4mTripOvEGOzthK6Zui7pKu5hWFXXaA9pFRMaJGKQKauaCTmqJkOmGoX8+j27IvV1JVXDM6jE2Z1VgA3aWaVSyrmMInoxWdF21+JEBqAI7CkyJJBAQBHSiRu6QUGj8HjC1xmmDi/dBD5hb78gLesIqpVARCmtGTIwiWk4SoMyAKQeU5Sgl59om2L3w5fBBnWorcsoyj4/0CXjUhuTOATHSBwKLIFEZJKAxMgTNhnhlUVsKZkKsAcfQBgKiELQSQnJwEIYg+qAIoag6FF1GbBEv6pjeRPyybUCx7DFor7iEocS8mEJCrBBHV8OLqMIj/yG8FKCoFTS2/0heEVAUfhGXAAgUER/iHxheWqvjHDKxJ5FI/YdyWEioII30VHUoJgAEv2kYQgswSuCbwQatYjqC5U6FpEPbFeADer0anAZRcXnR7SANxxCoY4hQYgcIoroJK2mIYkGuDh8JCSO2MQ9IfpKzAEsgUDh+nCvoydF70edTAhH0UOSJ4S+JY7WaPQRdi8NVVeCIaca8nGJJLJBHV4PLqMI8QyQAMwBTLShvyOfR3EpeURgklwceD7yfuT3aOQT0vYLx29wLJT8IZGG0ant/ShN/hA7k5iP/pB6jBCdQgcSPuXtUCjABnWsotsoKkFD15S46xPTFOjfwI+JniEghF2/9mFSQE6QZvlAwEkjRwcerx05EYiSk8QRmjiHGJoigYQlpjUDRnEQet4OgQIyG9Spii6jqASCJpCAozbUD8SwE4ZUgT3FxD12IaE7SJ6QvKI9bwE44WCpTRTmYw4wKcoIzMjdEXgYnYo0lsHJD2SSpjp0mNWQOTp1egUlH8cGdayjyyjK/qABM3sBH1IECII7xIEYEZ3C3m4Xhq8UglLHD2cvwBOir8OeHrzFKUQKOOE8GILSeAxFoVZJWYSj4EgpgfMZaszEeUVVb43IEo/ZOL6Ekg5kgzrW0WUUFUAxutc0ggAPzFGY4Aqh94e9RFn4Q/KMsIlxGRFnUp8Qg1KcThTxJxEoaEQs6S2CilOLRKYJK85V1VRjcowSGszvU6QKcxlRTSkLOlaQD0xUgA3q+HpwGUW5KKTvi5iGD5e/AH7oD2GiH4JRGrPBaBUAxTEVGiXFGJVCUGSSVrFh5EmRqgHRphWyaogcOD0jFpMxrcLyGmAS4ATfSHs8CZwNZkNgDyeQQzyp6PgSSjqQDepYR7dR9AfNGASK0GNUrdl8MXAqGoSTGzRVgRvwA+/QFdI8ooUiLGozADwtBntTiwGEACQ5Q0TOBo8wpmFYmgoxYY0AnQRfhm74S8ocK8gHJioAASob1Nkl4TKK0MvXVAgsVUOL0awihaYUlVrTGoghwkMRKgAGJVVrDx4PXsSkGK2hniE5PeCQMpP37fjZTMKkCJ7Axyg6u3xSjmKDpkjS2Qz3UTRjGEOaACQN0uDAKf0l+jTqE0LkCfgBcpoVpuKHQBrsCEJEVEStwJ5pcWgHokSjKcNyNwhE0Q1afFKCvKJm+kt7dVYwLpdVARxBZYNmlSjTh66jWKxHo4ZaZERbaK4PYFPJxcHtaiAetRegEpxi0pFCTZxZpD3GnAJICy30hwk0QgEk0PaQyCfilxSgakagjFHMdIV0LV8JsEG7pli8tOsoBiMNXxQrZXpbk/2DDMSPfpkhJjPiExo2jegSkcM4ioQWuT7aI5PImzU8056OR63JEaxhKr5insxweAF1OAy8IhvUmZRuoxgMmZGorAVxagFcFXYU8WXdnxh7j8kbUYjuEf4Ce7SHtA1hIo02nB38JA2f0nQ/Ra3ggOFXkoxiR6EdvoelvGxQZ9q5jKIvWKLDjB/M8qk6cNjuDJFGaBGhaHUeqYG4AoA4JCQtGhFIq+MXT4igtD06TfKTCVErzCuaAUbR2dWTehQbNFWTTua4jKISLDFg0g/GbDS9A4c0oEobTWlQR5HeCQgtGmluEB2j8IHkJC0sBZxW1zGhJynmOewIFpeuyr4SDlAteQ/yDxvUsYAuowi/EtQisAIGvSL9DsMKUIk5+pcYoloTG0QjbPHotD1MFSjSanJr8KadTBpZTRzRIdeKo0My/27Y8QXU4UA2qGMlXUcRvGLUVKG7CJMZ8Y4iISggFEASeZZjJH6SfGNSp1H0HpPjVQGh3UW0RnRszaDbyF7R8QWUgiIb1KGWLqOowMI3VTMisEomjiKtQY0TmM4r2ija4zdi9YyY4RATFfHeI/yyEUNWfFlDqWKUNUGumG7yahuHl0/KYWzQFEk6m+EyiuAJwSfpEKPCpCK4OlxnQxyKjqLFofjT3l0UYzZiCZs1mipWtNFoKlBHs44dBnLsAdUUZVRNY6+YoorTDDaoU+XcRhHiTiWgtkV92GWz/CHSiFtyR1G0UHQXIZ1xKBWJFatqwE3aLpGwFD3MFKXghm+MYooqzjPYoM60cx9FmBRWW/dJfuwo4kyF5Q9paKaDV0QCqZkCKvSECRMbALLtFeFg4TPRPWaGUEimaQaj6OzqSXsUGzStLAfMdB9FXfYjDBSVYnWtjiLV3P61Ynsz7EFUMYoDSCbQKMZDyfvFJ/3tIwXCaeWA9eiMYlplnGWyQZ3p5jKK8ORgTfGrUT0AN6ZBElM7ipQZHz+1kBIDNiJMFWlr396BzKBHByZh7Q3cVC4ai4VCfE+NDJJ1JZsN2hW1ksq6jCLUpcd5k79YvdjcH0Wnhsu7ETBycEmMUT6OyIiEWAAnxm/stH2gCF+zShIHUvH5+k24JGtZ/rBrCrBBu6aXXRq8SJbYzdk5u3ZUU1NTY2NjNAqeKda1Iw+6NDw5PBgMhsPhPn36HPTJ+ASWAmxQZ5eC+yhCveHRvxDY5P6Bp4FAAOJSeJa4M+34qEwKsEEzKZMlPy9QzFI//ogV6CYK8K14u4mhuZn5rgCjmO8W4vp1EwUYxW5iaG5mvitQmCgaez95/uFlL23L9ZBrvluT61fAChQmivqeD1945o8f7YYl5LyxAt5QgMfxvWHHbtUKY//n69Y889K69z/7Uh0z/7l7TvXEPRgYxW51ERd+Y83I1hd+8V8Pf149fuIPbv9xVb+K6uLCbxS1wA0Ujcb1C+cuX//Pr5oisNKnbMh5l15c/dUbr7z18Y5WePftqXfOmDismJaGG83/WLN42TPr/tmkh4466XtX/9dPv1MVsn6uIbX87ZeXn7+rsU0K9R994fUzrzunfwCP0epfvuuWZX/d3mpKgfCxF1w78+bx1aGWv9856fZPxj+yZvpIelDN/ndnT7zt35c9ueqaIQFJa3xv9cKHn12/dZ9UUjlm0o0zrj6jnE7F26FWwPjmkxd+/es1az9uiMDa39J+Q068aNbcK4cFO3tJmK2frJj5SPPkFU/90LpEDnUN3TufGyjqLXUfbqjvf/W8O48vi9a+vmzRYw/1GnPlz2b/pJ9R+8qSZQvvqjxhJSIS+dfj0256ovm0n8x8oKZ4x/onH777Z/XSqnvOPxIexwibPOCsH1912lHB5o3PLXnirtl9n15x+UAgyNe7ZvzUOZeEeyn7Nr+8eMn9cwbU/O7KQSO/XRP4y7t/r1dHDoYykbr1H0eO/PYZR0G67dMVN976fPHF0x68dbC+6YWFy2bN6rF6+eWDGMZDflVGNj964/WrGr518U/nnl5Vpn352q8WrdvYqEnDgp28JIw9bz/20g6z/2szJz72dSQ0cPR3r73lp+dWFh3ymrpxQjdQpHaGKo4fc8roYunEYfrf3rhz96nfHX/WUT7p5KFt6968951Pmq8aEt73/qO/ry2fsmLeNd/CH02ccmzZ9im/fPTF2nN+ejSdoWTwWReMgzNIJx0de3fSg2s/3HPZwHJ4DFXJ4DPPG0wlaqrb1r1x97tbWq+o6nHcf47yz1v3zs4rB1f6o3Xr3tnT54xzq4OS2fzuY8/Xj7hpzfSL+wPhxw31bXh7xitvNUz54UDXpKG6e28zv3n30Wfq+l687KFbji+F0Eav3NZ70bqEdh7wkjgyUrv+M7X02HFX/OC06p6xz/+4cP4vpsXCq285zgsPAnP9epOD4aN6SnU798Gd+X2SUhzuG5Jqm1p0qeeOj7ZES487Y7D14yXliOP+o1pa9NHWfebRPZIuVKXHoKqe0sav9+sSoBjbsf6JJU+8vqFu536ptESVzJFRzZSU3idfeGJg7htv77x0ypFfrF2/68hzxw+DM0d3bKxTzV0PTRn3UPs5e33VrEmM4iH+3yBWv2GrWnrCOcORw2xbxkuib+TrnW3SgLO+951TK2Do/5jqn29+6/o3XvrX9ced4IEOo+soSrK/CO6mAXcMpk32BeAd/PAefxKF7xNsFr8xakKeSPoCChyER6m1T8+YvSp2wc2zbzm+omjPX++/9VFRBFicOCZ0x5/e2vHd0a+/2VBx/vih4vGmcFTgpBkPTx8Vt6bs71nBjz5NEfngM/BHQNbTibKeLNMlIfuK4Hr9Zk8bTGLhLFygz6DeUkvjPm/MaeXvvGLRgOOGBFo+frsOOvi4Gc0b/1onVRmwtDMAABGUSURBVBw3uCzbf6qRLz/cJg2dfM3EM2qGDR1+7PC+8f9r5F6jJ5/Ta+tL/7P2+dcbh0yaMJh6GIGKUVV+tfZfsfKqanurquwTzPYdWS8j/jCTAoGKmipfy6cfbHe8MEMuHnRsP2nHB58148NvoZv/1Wc7pfDQsDe69e57xUyWk3uNvfayqqmrZv132Y0Ta0L1bz259H3/abMvGQIIqZkOkkIDavpLq55/8uWjJozo42+thUgzTlVpzeQJFa8+9eBXgRPu+PYA0XKl99irLq648blZPy+aesmpg0q13V9sLzp94jgxGpvxa/iDriug9B7zownhm1fOnBf86XdHlO3955v/UydJ5V05UVH19yaPXLNs6b0re14ztnTLc/PfbBt+3UVHeyOEyV8UYWRnxDVLFhUvXLbm7lsfM4IVJ0y4Y/l1F5SL4dNMBgwMveKe23bPf3zJjD8hr4HS8LBz+wYsGouGXHTZiKcWfXXWFWeG7XBALj3+ht8sOGLJiheWznkWDimpOHFKzYWMYiaBDyJfLhs9bdm84gUrVt09IyL1qKop7/LQZ2Dg5Aceiv5q8TOzr3/MLB54+lXzf35ZlTecIt5l2+Vf8R+EbfnQQlZAr3/26kt/U/7gH+ef5onVMgdri/ztKx5sy/h4VqCgFGAUC8pcXFnvKsABqndtyy0rKAXYKxaUubiy3lWAUfSubbllBaUAo1hQ5uLKelcBRtG7tuWWFZQCjGJBmYsr610FGEXv2pZbVlAKMIoFZS6urHcVYBS9a1tuWUEpwCgWlLm4st5VgFH0rm25ZQWlAKNYUObiynpXAUbRu7bllhWUAoxiQZmLK+tdBRhF79qWW1ZQCjCKBWUurqx3FWAUvWtbbllBKcAoFpS5uLLeVYBR9K5tuWUFpYD7N1/cvHlzQ0MD3HhOtu/+LRJp34rMYDAItw8Oh8MFJTVXlhXIpoD7KAKHY8aM8fmy3980qQ0tLS21tbWRSKSysjJb4/gzVqBwFHAfRXjWheCwbe0jeuO27NL5jqwuPmdqaWnpiBEjtmzZ0traCu6xqKjLt7bN/i38KSuQewXcR1FR7P5q5sfTpOri9/uHDx9eX1+/ceNGTYOnUOGWGNmmjW87lIG38L9AeXl5RUVF6ldwDiuQSwXcRzHeWnB3XWo5MAwB6kHGqIAxeFdGsUvKc+HDoYD7KIL7UtXMz6M5HI1OPidEyIf/S/gbWIEDKOA+ilDB5ubmA1TzcH4cD2UP55fwuVmBAyjgPopAgrsoHkAh/pgVyIkCLt+of8dry1u2fWo9YTi1wTDbKJ5zBXuRpgQ9kJj2VlKkqaz4FArD04ThH8SeuDckfAuZkMZ8eIslDHiSFuaEwhXDbl+iBHgkNtUGnJMjBVz2iq1fbiofdZIcKJJlnwRDqT4fJWRZ8UmyAi87ekRy4BnfFk6mjjjpOjEGezuha6auS7qKexhW1TXaQ1rFhAaJGGTKqmZCjqrJkKlGIb9+z65IfV1J1fAcqc5fwwqkKOAyiujFZEXbXYsTGYAisAcPa1eIQECxw4Pb0Q0KGoXHE77OMHV46SbwCXv7BWlZR1CtBCJKac2QgUlMw1EalAEg9ZiiBItTxOEMViB3CriMouzzA10yLrUxiUNwjMShwBL4RCbpocEYecImI7yyiC0lUwH24AMIQwFRCDopIRlYCGNQHVDEEBQ9qi4DluhXdSxvQj65VuAYtljUV1ySO9X5m1iBFAVcRlFSfBBeShCUSnq7PwSvCCgK34gLAASK6A+RLyxP7ZARTpnYs2jEviM5TARU8CY6ihoUE0CinzQMgSV4RfCNQKMWUX0hfvRtytXBGTlUwGUUFZ8f0QLecAiFOoYEIXKIKKKTtNRAEg1wcfjMchyxiXtC9JWYA1gCgcL14V5HT4rejzqZEI6ihyRPCH1LHK3R6CPsXhqqrgRDOZSdv4oV6KiAyyhCgAokAHMAE23o78jnUVxKHhGYJBcHno+8H/k9GvmEtP3C8RscCyV/SKRhdGp7P0qTP8TOJOajP6QeI0Sn0IGET3ljBVxVwG0UlaCha0rc9YlpCvRv4MdEzxAQwq5f+zApICdIs3wg4KSRowOP146cCETJSeIITZxDDE2RQMIS05oBozgIPW+sgJsKuIyiEgiaQAKO2lA/EMNOGFIF9hQT99iFhO4geULyiva8BeCEg6U2UZiPOcCkKCMwI3dH4GF0KtJYBic/kEma6tBhVkPm6NTNq5C/GxRwGUXZHzRgZi/gQ4oAQXCHOBAjolPY2zbC8JVCUOr44ewFeEL0ddjTg7c4hUgBJ5wHQ1Aaj6Eo1Copi3AUHCklcD5DjZk4r6jqrRFZ4jEbxsFlBVxGUQEUo3tNIwjwwByFCa4Qen/YS5SFPyTPCJsYlxFxJvUJMSjF6UQRfxKBgkbEkt4iqDi1SGSasOJcVU01JscoocH8PkWqMJcR1ZSyoMt24K/v9gq4jKJcFNL3RUzDh8tfAD/0hzDRD8EojdlgtAqA4pgKjZJijEohKDJJq9gw8qRI1YBo0wpZNUQOnJ4Ri8mYVmF5DTAJcIJvpD2eBM4GsyGwhxPIIZ5U7PYouC2A2yj6g2YMAkXoMarWbL4YOBW64OQGTVXgBvzAO3SFNI9ooQiL2gwAT4vB3tRiACEASc4QkbPBI4xpGJamQkxYI0AnwZehG/6SMrcNwd/f3RVwGUUYttFUCCxVQ4vRrCKFphSVWtMaiCHCQxEqAAYlVWsPHg9exKQYraGeITk94JAyk/ft+NlMwqQInsDHKHZ3ENxvv/somjGMIU0AkgZpcOCU/hJ9GvUJIfIE/AA5zQpT8UMgDXYEISIqolZgz7Q4tANRotGUYbkbBKLoBi0+KUFeUTP9pb3cNwXXoHsr4DqKxXo0aqhFRrSF5voANpVcHNyuBuJRewEqwSkmHSnUxJlF2mPMKYC00EJ/mEAjFEACbQ+JfCJ+SQGqZgTKGMXuzUEetN51FIORhi+KlTK9rcn+QQbiR7/MEJMZ8QkNm0Z0ichhHEVCi1wf7ZFJ5M0anmlPx6PW5AjWMBVfMU9m5MHF2L2r4DaKwZAZicpaEKcWwFVhRxFf1v2JsfeYvBGF6B7hL7BHe0jbECbSaMPZwU/S8ClN91PUCg4YfiXJKHYUmt/nWgGXUfQFS3SY8YNZPlUHDtudIdIIWhCKVueRpMEVAMQhIWnRiEBaHb94QgSl7dFpkp9MiFphXtEMMIq5vu74+1IUcBlFJVhiwKQfjNloegcOaUCVNprSoI4ivRMQWjTS3CA6RuEDyUlaWAo4ra5jQk9SzHPYESwuXZV9JRygWvLyH7cUcBlF+JWgFoEVMOgV6XcYVoBKzNG/xBDVmtggGmGLR6ftYapAkVaTW4M37WTSyGriiA65Vhwdkvl3w25df/y9cQVcRxG8YtRUobsIkxnxjiIhKCAUQBJ5lmMkfpJ8Y1KnUfQek+NVAaHdRbRGdGwNoNvIXpGRcF0Bl1FUYOGbqhkRWCUTR5HWoMYJTOcVbRTt8RuxekbMcIiJinjvEX7ZiCErvqyhVDHKmiB8TDd5tY3rFyJXwGUUwROCT9IhRoVJRXB1uM6GOBQdRYtD8ae9uyjGbMQSNms0Vaxoo9FUoI5mHTsM5NgDqik2VzWNvWKKKpyRawXcRhHiTiWgtkV92GWz/CHSiFtyR1EoI7qLkM44lIrEilU14CZtl0hYih5misJwwzdGMUUVzsi1Au6jCMtQ1dZ9kh87ijhTYflDGprp4BWRQBJIQIWeMGFiA0C2vSIcLHwmusfMEAqxNc1gFHN93fH3pSjgPoq67EcYKCrF6lkdRaqp/WvF9mrbg6hiFAeQTKBRjIeS94tP+ttHCoRTmo8ZsB6dUUyrDGfmUgGXUYQnB2uKX43qAbgxDZKY2lGkzPj4qYWUGLARYapIW/v2DmQGFTswCWtv4KZy0VgsFOJ7amSQjLNzooDLKEIbe5w3+YvVi839UXRquLwbASMHl8QY5eOIjEiIBXBi/MZO2weK8DWrfHEgFZ+v34RLspblD1mBXCgAXiRL7JaLGjQ1NTU2Nkaj4Jliufi+hO+AJ4cHg8FwONynT58cfzV/HSvQQQH3UYQKwaN/IVLN/QNPA4EAxKXwLHG+LFgB1xXICxRdV4ErwAq4rgDfitd1E3AFWAFUgFHk64AVyAsFGMW8MANXghXoNigau99adMttv90UYZuzAnmpQLdBUd9f+/77n2xvc3nqJi8vAq5UPijQbVDMB7G5DqxAZgUYxcza8CesQA4VyLPZbbPt3y8veuCx1zY16VIoPOrS+xdee0wQunmLf/GbP//zyybo6Cm9Bo+dcNVNV42rDOLSVK3+5btuWfbX7a2mFAgfe8G1M28eXx2CZ2/see+Rex9+7R9bG+GQ0LArH/7NVQkPqInWPXv71GW7JixcftNJvfg/oxxebvxVmRXILxTVumfmzH+95LI7lpw70L+3fmdxeQCqDt28DzbUl//orpnH99R2ffLq40/cNfXLuavuPi8MzwfvXTN+6pxLwr2UfZtfXrzk/jkDan53ZVVA37v5rb/X9bl8zs/HhKX9kfIBAWm3JYK2680Hbl66deycR29gDjNfGPxJrhXILxT1fQ17pbKaU8YeP7KnIo0claBG6KiTzjxtdLEkjTl9dN8bL1vw25fqzrpmSEAuGXzmeYOpXE1127o37n53S+sVVeJe38UDx/zHWDwEN5VQ1JveXvzgvL8Nnb7izvMr8qvtopq877YK5NflGDrm0h+d/Jelt075/OyLJl0y6fwT+lEUmrz5yk8ZVy0t+6i21RzSS92x/oklT7y+oW7nfqm0RJXMkVEt8yBpy5/vniuVnT9/7qRqfqBiR135vbsK5FlPKThkyoIXf//Qz05sWzt/2vevuG/9bny2YsdNwUfc4M+p1NqnZ8xetXXIZbOX/O7x5fN+MKxjyQ7vA8d85/R+e19/YNHar+GZHLyxAnmkQJ6hCMooxZWnTJy24KmVP6tueHXV26ksGt989vcvpX41g0rkyJcfbpOGTr5m4hk1w4YOP3Z43wM4+aLK8Xcuv2e87425t6zYsD+z98wjA3FVuosCB7h2cywDhJt/eFcffHRFqdG0cdMeqehbvYusCLXlg5WPPrd79MDgrneeWvaeMWr6RYOLJHNATX9p1fNPvnzUhBF9/K21zdaT4bJU2x8+67aHpu+4atHsX9WsvOvsPvn3f1GWyvNHHlYgv1DUmjb/ZeWaJbvgN8Ryj6oxV867/bResqSS/kWRjc/c/+zOmNJ7+Hk3LZ0+8Sis+tAr7rlt9/zHl8z4ExYKlIaHnds3kNq9TDZgYNDEOTPf++G8+xacPerucxhGD1/ehdS0Qvi9orpt5U+ueHrY4hfn2sOhhaQw15UV6JQCHJ91SiYuxAocbgUYxcOtMJ+fFeiUAoUQoHaqIVyIFShsBdgrFrb9uPaeUYBR9IwpuSGFrQCjWNj249p7RgFG0TOm5IYUtgKMYmHbj2vvGQUYRc+YkhtS2AowioVtP669ZxRgFD1jSm5IYSvAKBa2/bj2nlGAUfSMKbkhha0Ao1jY9uPae0YBRtEzpuSGFLYCjGJh249r7xkFGEXPmJIbUtgKMIqFbT+uvWcUYBQ9Y0puSGErwCgWtv249p5RgFH0jCm5IYWtAKNY2Pbj2ntGAUbRM6bkhhS2AoxiYduPa+8ZBRhFz5iSG1LYCjCKhW0/rr1nFGAUPWNKbkhhK8AoFrb9uPaeUYBR9IwpuSGFrQCjWNj249p7RgFG0TOm5IYUtgKMYmHbj2vvGQUYRc+YkhtS2AowioVtP669ZxRgFD1jSm5IYSvAKBa2/bj2nlGAUfSMKbkhha0Ao1jY9uPae0YBRtEzpuSGFLYCjGJh249r7xkFGEXPmJIbUtgKMIqFbT+uvWcUYBQ9Y0puSGErwCgWtv249p5RgFH0jCm5IYWtAKNY2Pbj2ntGAUbRM6bkhhS2AoxiYduPa+8ZBRhFz5iSG1LYCvx/yiFvfTHZ22EAAAAASUVORK5CYII=)
# jpg 이미지를 TFRecord 등 전처리를 하지 않아도 된다
# inception-v3 모델에 리트레이닝
터미널 열고 tensorflow/examples/image_retraining/retrain.py 스크립트를 실행 시킨다
만약 텐서플로우 소스 폴더에 image_retraining폴더나 retrain.py 스크립트가 없다면 깃허브에 가서
설치된 텐서플로우 버전에 맞는 브랜치를 열어서 최신 소스를 가져온다. 아래 경로는 자신 환경에 맞게 수정
$ python $HOME/tensorflow/examples/image_retraining/retrain.py \
--bottleneck_dir=$HOME/work/cars/bottlenecks \
--how_many_training_steps 500 \
--model_dir=$HOME/work/cars/inception \
--output_graph=$HOME/work/cars/retrained_graph.pb \
--output_labels=$HOME/work/cars/retrained_labels.txt \
--image_dir=$HOME/work/cars/photos \
--summaries_dir=$HOME/work/cars/log
* 명령 설명
--bottleneck_dir = 학습할 사진을 변환해서 저장할 폴더
--how_many_training_steps 5000 = 스탭 설정
--model_dir = inception 모델을 다운로드 할 경로
--output_graph = 추론에 사용할 학습된 바이너리 파일(.pb) 저장 경로
--output_labels = 추론에 사용할 레이블 파일 저장 경로
--image_dir = 원본 이미지가 저장된 경로
--summaries_dir = tensorboard에 사용될 로그 파일 저장 경로
I tensorflow/stream_executor/dso_loader.cc:128] successfully opened CUDA library libcublas.so locally I tensorflow/stream_executor/dso_loader.cc:128] successfully opened CUDA library libcudnn.so locally I tensorflow/stream_executor/dso_loader.cc:128] successfully opened CUDA library libcufft.so locally I tensorflow/stream_executor/dso_loader.cc:128] successfully opened CUDA library libcuda.so.1 locally I tensorflow/stream_executor/dso_loader.cc:128] successfully opened CUDA library libcurand.so locally I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:936] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero I tensorflow/core/common_runtime/gpu/gpu_device.cc:944] Found device 0 with properties: name: GeForce GTX 960 major: 5 minor: 2 memoryClockRate (GHz) 1.266 pciBusID 0000:01:00.0 Total memory: 1.95GiB Free memory: 1.68GiB I tensorflow/core/common_runtime/gpu/gpu_device.cc:965] DMA: 0 I tensorflow/core/common_runtime/gpu/gpu_device.cc:975] 0: Y I tensorflow/core/common_runtime/gpu/gpu_device.cc:1034] Creating TensorFlow device (/gpu:0) -> (device: 0, name: GeForce GTX 960, pci bus id: 0000:01:00.0) Looking for images in 'mohave' Looking for images in 'genesis' Looking for images in 'qm6' Looking for images in 'spark' Looking for images in 'k5' I tensorflow/core/common_runtime/gpu/gpu_device.cc:1034] Creating TensorFlow device (/gpu:0) -> (device: 0, name: GeForce GTX 960, pci bus id: 0000:01:00.0) Creating bottleneck at /home/hwang/work/cars/bottlenecks/spark/pic_006.jpg.txt W tensorflow/core/framework/op_def_util.cc:332] Op BatchNormWithGlobalNormalization is deprecated. It will cease to work in GraphDef version 9. Use tf.nn.batch_normalization(). W tensorflow/core/common_runtime/bfc_allocator.cc:217] Ran out of memory trying to allocate 1.91GiB. The caller indicates that this is not a failure, but may mean that there could be performance gains if more memory is available. Creating bottleneck at /home/hwang/work/cars/bottlenecks/spark/pic_014.jpg.txt Creating bottleneck at /home/hwang/work/cars/bottlenecks/spark/pic_008.jpg.txt ---------------- 중간 생략------------- 2016-12-16 22:06:42.725670: Step 490: Train accuracy = 95.0% 2016-12-16 22:06:42.725734: Step 490: Cross entropy = 0.262693 2016-12-16 22:06:42.780005: Step 490: Validation accuracy = 94.0% 2016-12-16 22:06:43.297735: Step 499: Train accuracy = 94.0% 2016-12-16 22:06:43.297798: Step 499: Cross entropy = 0.279427 2016-12-16 22:06:43.352678: Step 499: Validation accuracy = 90.0% Final test accuracy = 87.4% Converted 2 variables to const ops.
|
터미널 내용을 대충 보면 GPU 잡고 각 폴더 안에 샘플 이미지를 읽어낸다 그리고 전처리를 자동으로 한 후 학습을 시작한다
# 학습 완료 후 생성된 폴더 및 파일 확인
위에서 설정한 경로를 확인하면 학습 후 폴더 및 파일이 생성 되었으니 확인
![](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAc8AAAEECAIAAADBNSgLAAAAA3NCSVQICAjb4U/gAAAgAElEQVR4Xux9B2Ajxdn2Fq265V7OZ599vXC9cBxHCwRIpUMqSUjCl04KKaT3hOT7A6EkpJBAgBASUj+SkEDgKBeOK1zvxb7i3i1bfcv/zIwky7Ily7JkW7rZ08mr2Wn7vDvPvvPOOzOiu79PoEeBq5Cd8G+OAEeAI8ARyDgCUsZz5BlyBDgCHAGOwEgEONuOxISHcAQ4AhyBzCPA2TbzmPIcOQIcAY7ASAQ4247EhIdwBDgCHIHMI8DZNvOY8hw5AhwBjsBIBDjbjsSEh3AEOAIcgcwjwNk285jyHDkCHAGOwEgEONuOxISHcAQ4AhyBzCPA2TbzmPIcOQIcAY7ASARMI4NyKGT3A99s2vwPQ9dFQWTVFsN/wzch0t8sjF2yuooX3nz7jA1X5NBtnj1V5QLNM1lzgcYKVMzpmbt/f9e5a6pcchzFJn1gvSHttM+YeeU75l53qzCehElz5RczgwAXaGZwnDa5cIHGiiK3dVtd0xnV+k83aV5f8mdMttuss2rsijxP1k8++8TgqSOL3vcFS0lF8lT86mQiwAU6mWhPQllcoPnDtpKUjt3ZJElzHEbbiV2vfP4GNRBgcMRaG+LsElHjRKxdAqlkRZn5hnfWX//hSXhqz5IiuEDzTNBcoPnDttE7gdI6rsdUEsVqm4yPIFjGlTA2sqrrjf98jLNt2gAmScgFmgScXLzEBQqp5bYlQRSMkK5P4cOn69oUlp5/RXOB5plMuUBjBZrbbIs76ferU/iADveAmMKK5E/RXKD5I0t6J1ygUYHmPtsGQnn2dJ7lt9PPBZpfTwAXaFSeOewB1vDND/ZteSbhk2kYBrtG/4R/hIPwmwayr+g5u2ogMjkjXzijp+RfJDwcGAm3z1m88pFnJEv69l9WTf7NBZpnzwAXaJxAc1a3NQz31ufKyl2iJNEJDKKAkS/MY8A/5kUb/hMhVMafUcbUKY8OkalhsJDINyFXnVIsvmEahnEY34YhakijC5ohknDyaWs56W086ly0LM+aymTfDhfoZCOe5fK4QEcAnLNsK4oGcf8SVZ8vPF0M9IqzqJdW3MyFGBU1rLIS1ZXyLT3IOaVacq4bIlVsCb2CZyPMi3NCsvQnDsTBT83QJbtjBLA8YJwIcIGOE7DpHp0LdISEcpZtBUFSzCDCMKlGqZYSLrnN8AAW+wNeJHGJ5kt5EkQJsqTMGj7oKfmQiIRgKdVSEqYn5C8jYPKT/sAJYV1NM3G2HfFgpRHABZoGaNM5CRdonHRymG0FxWIYIcqtlHMjhEt5Nqznhu+WcSPlx3AI5VTKxIxHo6xLeJYyK6VdxrksGT0nVEuvg2jZz1AgKDsKpvNDnzN14wLNGVGlVlEu0OE4pTMXKzWksx5LtoBtQZmEaFEY49go1RLuJTZc9mEW3TC/EqKlGiv9w3RWpAuzJ+NQZBi+jljEYBtOQmLBhBv5SahZ12WrLet3exYUwAWaZ0LmAo0TaA6zrahYMV5F9dMRB2FZQsAihtAYG1OWpEpq1CxAfoe5lbAmI2Aag1Ex+0PDw0EkWiQJ1W1Bu6Ikh20XI2rBA8aFABfouOCa/pG5QONklMOWBMlq17068USgRBo+cAprK7RRRrLkIjtwPUKb5DSGNxnT0uv0M8St9DzCvmToLOYnjaaDc00wH/MjAwhwgWYAxOmUBRdonDRymG1lqwO6rYClDgiN0gEtqLpU140MdVF+pQGMNMO8GvU9CBMxDSYOXlFmJmfELYEosCSQ8iz7xPyEQ4JmSFbuaZuZJs4Fmhkcp00uXKBxoshhthVtDh0UKYlkwIoaDCg1svGxGG2X3THVZSmbEpU0TL7MuxZBjFVjfjJPL5phxOsLSak3GPW01UmhmqGpumjhRtvMtG8u0MzgOG1y4QLNH7aVHa6gphuyRDiUdveh2FJ2JPotdfcKEy0NpTHCbBs+CYcwkqWESyJEOJfos3RSAyFWBGo6pjawn5SLaWSi23Jn28y0by7QzOA4bXLhAs0ftpWchdBtSS+f6LbU34BSLOVecpBf9JSRbZgfCedS1g0fND6ywQcXKKviG6sgg1LJHjww11KfBOKeC0sFjYWDMjqZXyY5ONtSuCd8cIFOGMLplQEXaJw8ctiSINkcgk6nKIDzmL2WcW74FukAWficqaJk8CzKueQa2JqaBcgfyq34ZuZaYgYmRgNCqWG6Zv5jhNjDmTByNjm5s21mGjkXaGZwnDa5cIHmEdvanSpUTMqThAFxMBtC2PeWKaGMLCnxUjolw2ERwyvVbsklEjWswJKRMUK4bJQsPD5GNGZG05R8w4otAsHzitM1bR7v3K6IxAWa2wKMrz0XaBwiOazbyjYncUXQMVbF1E7qmECPCIlSBZUwbJhXCecyjXeIZ2nsKL2OSrW4SmwIRMeNKrbsJ/LGJr7xTxn/nRYCXKBpwTZ9E3GBxskml9kWqhCWhJHBtxqhUcKZYS8uwovRQbKhO2baLo3ITiM8G6XRIa024l07TM8FuRJ33iE9F2qyVFg0fZ/3nKqZzAWaU/Ias7JcoHnEts6ioD8UCvk1layWwCy35ITdYkTPjSVbnEeUW6rmUt5k7Emj05/MzSt8icQZCgHVUm+ESBJDF2XF4RzzseMRUkFA5gJNBabcicMFGierXNZtHU4D7q4SdYCFDZWxLF2ei5xG/L+Gbjis2kZIFheilMp4Nsq/jFIRGDYgsNkNMVQbdU6QFJmzbYbaP5DkAs0QltMiGy7Q/GFbk92pUW8t4qElUrJlbllkPcXIwTg38ptepz8IsTJCZrrqCD03Vu1lBoSoVhuhWmi4uiyjGtPi0c79SnCB5r4Mh90BF2icQHNYt4V/CdiWzjiIrnKLuwPVRn6OeHgjNBzWctlIV9iAELbGxhgWIm4JsaYDqu0OGRM0SZK5v+0InNML4AJND7dpm4oLNH/Y1uRwqkFVVMKWBHJj0RVqRpoR2H2H9dmwJktSMJKlJB02LCAUgYxVo+HDSTaaShM422assXOBZgzK6ZERF2icHHJYt8WIpx4KGZpI7LaEOMlXzITd4abbIeMCZVgSlUJBTb5hwwIj3CgFxw6gRRxvSXxWXDi1gEeKnvJjoghwgU4UwWmWngs0TiC5zLZWm45VYVS4gEVUVsKjMWptrIYby7aMXoEEY2mq3hIGBqWyQGZDGIV2owNtYRhDusF9EjLVxrEoOxdopsCcDvlwgeYP28JuoEuKpqlMVw3rt9ERsjhjQgzbUtU2wpv0PEKyhHCZ4hu2FYRNt5SIY3KIghjUNO6TkLGGzQWaMSinR0ZcoMPlkMO6LaFJxaKqQbLCbYQyI5SY2HBLI4fplSSLVWnpJarqUjeH8FVmZ6Dp4g8VW0ByS0I8Kun/5gJNH7tpmZILNFYsuc22ssUacrsFut1P2N8WZ/AAG25RCN9wmInpH2ZxYCFMvQ2fk2yYGsumnDFrQ6InWVVV7pOQCJw0wrlA0wBtOifhAo2VTm6zrWZSVKxwS24ooswOaa0JeJJyK/k/5J/AfjFNluZF1dvoEXM6FMjONFXlum08KBP4zQU6AfCmY1Iu0Fip5DDb+v1+TTFjqQSFjnKRuyJUS2l3uCEhTJexf6LRWSCl37BlNjG5xl3RkEiWA8Gg1WqNxZSfp4cAF2h6uE3bVFygcaLJYbbFnZTeeMupu7+t+wOULSM6a/gHvdMhMsUciHBIlJzDJB0m0fD42JjPbpRzJVmuueFtY8bnEVJHgAs0daxyIiYXaKyYRHd/H/td4CrMCfnFVrKnp6erqysQgH4ZnOTKm81mi8VSVlZWUlIyyUXncXFcoHkmXC7Q/GFb3AnGqdBhwVJgk/yYKooCA4LJlNudg0kGLZXiuEBTQSmH4nCBRoWV27ptDj1zvKocAY7AWY7A1Ktm6uFtgW1Pa83HBV09e4Qhmq1SZb159WXK0gvOkrvOD0GfhYLL0vOZkecht8Qxxbpt4MUnA5v/nCVx5kS2lguus1x8Y05UdSKVzD9BnyWCm4jQk6TN+POQE+KgEwOm6FCP7zrLqRbAAwHgMEUSmKRi81LQZ4PgsvR8ZON5yAlxTCXbBrc8NSRO0SmveYdlZXXmBSwVmy79pG19beZzHpmjWGS64ov2S+aOvJIkZBgOSeLl7KV8vcF8va9sP2jxuGWohcZnm+3bGH/+U8m2WvOxoQpLLtO6q8yzixMtcDD6rYkWqWa1qSpmzcNRQgrkxeeZyuzjy3n08sYKlezynOVysXVcZaltjWPlm9vXhwnaNNf64UcKrl0b2T8uy7c28nnIXAXyXnBZks2w5wFliJlpodNfHFPJtoY24WExU535xs9ZF5cOPRYjQ7L0yGQw26A/g5lNw6yGCdrw6d3NWt9AgonVma7+yOchgxXId8FlWhjh/DLQ8Eet2bQXx9T7JIyKGw/MWwS0luCTX5zsuSixaE55BfJWtPzGxkBgerGtWPs2+8fr5UJF8DSGXnnIv/0YW21WEF3y+vdaz1svO2Sjd3/opYcD+5uHZtCef6frfHKf+vOfGdxBTqTYkG3DIYCRaOMt1nPXSVbB6NkT/M8vA8e6BbHYdOVt1kWzJYcFsY2+A6Hnf+E/1BFOOWoSXEMP6Nybres3yAUmIdAS+tf3fYdiyjLNNL/9u9aCTd6HH1F9FmnVe20XXSg7ZSHUq239X8+LeW49GA56zC+52nLrj8zt3xn8ywEjOewj4d3fJYwqC2Iuv826eA4Vn2507g6+/GjgUFu01OHPgzhUASLEBI9W8rolvD1+YcIIJJIIEZZTXnez9Ty0OEUQgkbPidDz9/mP9E64yEnKYHqxrWAKaJt/EegJSvOusl7+dUm/3bOjXRAs8kVfdVzgUl/+hbfZLy28znr1tyXhs979PQwkY+893q0tZPWDwU5BKEDg8JDYkTer/Lqv2dcFgs/8INQpy2tvsd50u/GzrwX7bHL9Iqn/z76njhhysbz2Zst1n9Ef+EqwB7aOBEm6ZVqrInXLw96TXYKjVGzpF4TysNykEuUtX7GW7/b9+jHVZwjlb7a/6ULj1Z95DrUKtgop2D1J4p3mxUhJYGdCj4M3gSz67PLsxVL/X3x/P2zIJfKy6y3XfUf+y+e8B8PtcPjzUBGDSuJHK1ndpjmsOV29xBIBD1z4VceFpeqrD3sbOgT7OZarrjGV2wXOtukJ3Gj8a2DbAaK0njhqFN9rO+8yeffjmrLMcl6Nvu2rvpeOk0sNx8ili6+QDz1BVuECtw62ah2nwyXinRcXwhYbZ5ftKyzrKrVnP+nfCV4WtE7NNP8L5gXlQar/Gn0H1ROkdLVVNt12q1JfGOzpFhIl2T3Tcl6tvvWrvudprdjByhILTVfeapt/xv/QT0P9pI6itUwUPFrjbq1lEPfGqh1NdJafjA67DUIfAa99dVLxHVCPU/EdO2DcfI/1ksukI3/UKbjDnpDY54GUkvTRGvWROMsFltXbTyIR81LLhlnGzm/5njtEWpxZV0LXxAozq/XKSObTTLeN3pMxoJ1oFeYskMyiVrhENvnUo01hUjPc2pFm4colklXUxmv/K1ooy6L4hntdbxhCzyhxicLAMDT9rbpPkF12QegWEiUporU6FqlVTHpx8cdtgif0xL3BrnD9jNZ/BhrPtb7jXunwf0I7ngme6sqI8PItk2GwjwZvIlnEiU/vUQ83Ca8/R7b8SU++fgYT4qiPVtzIZWzd8g336XQ/SSTiWiKhxR1qHFJuplPFU6nLdGXb2LqPy51qjJuGD0ZI/ec3/WdiGpO/0xDKhqfTiL1YZA4bCZK4NkTWcxxRZOtm1X6h8ub3qQ8/EHJTRVY9E/zdx9T6C83nXWV991vNe+/y/H172CQ9IvVZHBADOwF/ZLNKIIt48SEpkd/YSKYQJZJJ7CMxdsY8RpoIJJGIKItkB6s0M54OyabSAyzZ/WMwZFGN0HtQw9K1fYc1zSbPnxmOj8GTBdVC/2Edl4yQoAqiPWYx75EhLJlExdh/RNMVuUoxupr16GcwqYacKAkJt8vzIrWKuRmj90Xfw3eF9I22d75DjrreGn698Vn/7z4zuKlJWn614pyuyCeTyiReGxXeRLKIqxfGUubOEPqP6sHRnpDYyEkerUm8V14UQYC10CQScTfogkOeXZm7cE0v3VYsOsc0RzCkYnn5jZZav/rX/+hQDb17AltbHOd/1u5/NNgckBZcZ52tqf/3b+qt26V2hsxLbrQ0/p+mFon6wdDxESENXsMviHUXmCqbQu27A691OtZ91q7+PtjQakhFUnFQfW0bs+6NLkVPgiQI39HhOO8Ou/BEsLFdUIrFwP7QmUgeg9t9v3tY/OD77G88OvjXbYZrnXmerLd1GlKhXF0oqCd0NZff0aMjldHQUeE9mUAWtGRx9jWWdUUqhljnXmWdI2nPPDf6E9IYU88kj1ZuWQQziv1kZ2bEttDEjd2zM7DPbd/4GZv/d6FWr1h7ucmSY5rutGFb3audPKwverPtHdeSfmDX7sCfHwkcYl4HAe3Fb3mDt1jO/bj9YlHoPxR86muBfWxYf0D918+D177Hcu0XBWFQ23aXevzQiJAjoeefUq56k/XC7eof92j/+brX8x7L2ptt52JAzaefelrbtQ0dlMSHb/Qkmk977ute73st626xnycLWr+25QehM4GhfLqf9f19ufOaD9sOH/W55yob30TdVgyje0/gz78kjgr8SIbAaPCebBxdFkx8qkVe/yEz3Ae9jaFnv+Un3iw4RjwhjXAdiR5JHq1klePXMomA3jOshSZq7Mag+vS3fMEPWDbeplgNo+MUqUNO2eOmcg2wgTtvztaskkw+C1nPS5RNBXc8mvVipq6ArAs61od3Em8z7wWXJSwz8zzYz7N/8jbx7x/17AvvPjP9xTGV1kN55vwsiTO3ss17HPL1BvP1vrLdfNLFTZGWvNG8ZJWpZr485wLLVbeY9APBU0PeROlmm+3bHcp/Ki0J5nVvUE/Hzr6avNueViWZN7x1WtUn45XJV0HnveAy/iSwDNN8HsgCQxvMK+bBK1QQ/HrTNv/jj4Z9fmi+018cU2lJAECB5x8PxK67mCXxTuNsc2IV5Injl3+CPksEN3HRj5pDxp+HnBDHFLMtJBHavzm48zm945QR8I0qmLwMxA4fcs0CvORN81bl5Q2OvKn8EPRZKLiRosxISEaeh9wSx9SzbUYkxzPhCHAEOALTHIGpHCWb5tDw6nEEOAIcgQwiwNk2g2DyrDgCHAGOQEIEONsmhIZf4AhwBDgCGUSAs20GweRZcQQ4AhyBhAhwtk0IDb/AEeAIcAQyiABn2wyCybPiCHAEOAIJEeBsmxAafoEjwBHgCGQQAc62GQSTZ8UR4AhwBBIiMJXrJCSsFL/AERCEHTt2qCpZwziNw6CHruuiKOKksrKytrZWURRJkhCSRoY8ycQR4ALlbDvxp4jnkBUEQLVr1qxJL2tGtcgBRygU6u7ufu211+bPn19SUgLCxZFetjzVRBDgAuVsO5Hnh6fNIgJgTOTu98dtxzh2iUyfRdtGWq/XZ7fbysvLzWbz4cOHoeTOnj3bZDJxwh0bx0zH4ALlL/lMP1M8vwwhwKwBaXyz8gnnCoKua+6BAVCt0+msqanp6enZvXu3z+eDkYE1/gxVlmczNgJpiJIlyRuBcrYd+ynhMXIRAbAtDLRg1cGBAQs9bDZbRUUFFNudO3e63W5OuLkl1jwQKLck5NYjdxbVNqoKjfeemdIaVV39gQDGxzR6gGFxIEMQ7vLly4uLi/m42XjhTTs+Fyhn27QfHp4wuwhMvKdPtCEouLSVQ7cFz0Y5F1Xfs2fPsmXLysrKqBLMj6wjECfQ/fv3o8iCgoKBgQG889Dz8Hg8+IlAhBQWFvb3x+7XKZxzzjm5LlDOtll/yHgB6SGQtioESmUaKxonTmSZbFaOcxAuU28Z5xYVFR08eHDFihXQcNOrIU81LgTiBAr2TJ4cdvZoBMgRyXNdoLnNthhlbmtrY2JggmF6SlRbif3JztHk6uvrodEklzS/Ot0Q2Lt3L6rEVB6MeoFDMdiFnwiEEgTq7OsL772KEKsVW2AbXq83QI8jR47APwGuYFBvnQUFJllmtgVoUiDcdevWIcPpdr95X599+/axe7Tb7Xj/QToYyYRYe3t78f7Dd1Sm7CeLPGvWLGjBTU1NEC4MQ5qq4nWaKwLN7b0bXnjhhfXr1zPlJcWnE72VxsZGjJbEvjlTTMujTSYCL730EngwDQ8wVJIpQcwJbJAekDsMuMRoaxjQdxWz4nQ4MGIGUgbVjqlnTeaN52tZXKC5rdui8TCq9T3/C63rVPLHVC6vt73uVofDsWjRouPHj+PdCCWXKzXJQZvCq3Edz6gqxCx9THtFTwU0im9oRqBOaLsIZ4oSCNflcmFeAzgX2lNpaSni4BLNVhAlEQoRkuDo6OiYwts8e4qOEyiz27LbZzJl5y39vmZ3sL27J+gPiIYO84HJpLhcBWsXz9uwpB6dEkgTrR6CzjmB5jbbDvmoj2egAw1swYIFLS0t6JyiKTIZj7Q5IDyJXQJXIXLoyFVVVWdPg5nCO8WI1rhKZ88GOp54JdM5ZeRgTgm0CYf1XzBye3v7uHLmkTOCwNKlS+PygaR++pdNff19ZZUzauvmmDGwKWCmtWGoKjz2Xti+54XX9t3+9jeCZ9GE8YrNOYHmNttGpQWldVxPAJoiLAkTNCZA2NCROduOC/nUI8epQnAhYGnjTLTRn+wEjRBvQXRc8JMNaketfixDZLJ48WKWFd6mzFch9VrxmGkjMKpui7cdmBTqajAY3HKwUTPMb778sjXzZz66ac+ukx2kGyII6IUU2q1185d0tTX/5p8v/c81l4FtqYcJ+aLzVIhXH45pLtDcZluAi95E2uKfeEJiB+RHdhBgLS2aN5wHoud1dXWxZUZ/xoUjDnNOwGzdaFOHyKI5M/NuXEHZuRueK/HEi0VhpG77+KbXVp270WI2FdktVcXOkx19cM1DGkMwvIHg8bbec2prd219BZkwweEbRvgcEmhusy1wjx2JnvwnmpkaJr/cs6RERpHsZplPAjuPc8ZkP0cNRHwoudCboMPCqgv/hJUrV8aixyU4mc9SrEBHlhsKqYpJ/tfO4/tPdbT2DDitZsq2MPwIeEOCVRWTKUgdS6IOYcgkbpB8Ogs0t9kWyE4t2458YnhIphCIU4Uw9SvtnJkqhOSjNkWu26YN7LgSxuEcHfaMvibVkGo1K+fUliPbQocVqwoYotA/6O/1+tEhgckAY5satb0jq1jCjavGtBVoDrNt679/Vn3qAO1qjHaQ1ygNJ10Rek5PaHT6HT5l5zQuu4q4eJniP4wE5FvHi5XkABnTcPKepVcxYIrzI2VV8z93r6Rwh83RpDCBMCI0erA8YLeFlopZRvAriM011sKQqDQiMLrWLWuibAANgQiJ7YcmSs7DM4JARJ5hgcKSgCb19Obt2zbvHfT4UARWx/z3v57GiUkOL0OMv6+/7LIAMdAag75Av8evwjPXe4o0VZiJzEWKpQTZ5opAc5htvWcOVSxbIypmUZRhn0OPgp6gSclw8CE+PmFHBdLWsDxJmDENjTAmPIEIjeI7cqKpBpqxFiLfcFTQVPqN8xA5UXESRKAYUg2EhFQRgaEAwlt6O/0tJ+11CzLyRPJMoghEeZaFpMKqydFDhoypmbUdjwdCMN4SV1DyTPjVtBGIwxmmoZf2HveJytr1G2wWC1kEUxJlmX6jEcNpBP8EwR0Awer93kCvx+eyw71PPbXpAlvBLFwLBnpN1qqK1b9W7HWIOf0FmsNsS3RRUVK7Gwmpgm0hIIiILc4PtsV57EGUWUa4TG9lGivpn6AJohkS/o18cC5qhIvDJ4SF6bmqi6Bdco5UKuKAc7WgJFlsaT+CPGESBJg2lCTCRC6xxs+pdiIYjjdtrEDh5HXque2XXHpF56Bf8mqKSQKtQo1VVXQhBRAu639SG4IB+4HZhDCoN1CPjOUXPygaWPhY7m15oXHrO2Ze9KIohd+a01mgOcy2omwCgeJtSIwChGqh3lJ9ljEvyJY6VZIHgpgIcJAFStB3pEYAwZBAr7gAewFYmFjhyYmgk0jEWKCBbYlzNdGLNRHMS7RjjcQ3EE4VZGJK0vVgQLbZx/vY8fhjIsBaZrYbT2z7H7NKPMJEEIgT6OadB2bNqg/qhkkSB3zBri4f2ppFMYFV8ZFNIvY1QvNFa1QxLEYbMjQo0iI1aFmS0PmKoKvFlee1n37e0/6co+oKVrfpLNAcZltBkmEHEGA9ELQhrRYSgiSYhks2RGFsS7RaOq6J+FQohG7BvoRew4RL7LhU7SUczCiVGW1VRGOcS7RdmP/oN3RbaLggXNUfkq2OiTyFPO2oCMQ1m127drFosbPmERL9yU7ge4C+KNwPRp1lz3JYtWpVtMTp3DhHhSV3A+Og3rL7wLnnX+D1h462dPuCGB8zWeGRIImKLJlN+GD1A9KM0fYkjTRap83c39NdXqQUFC8V9KAgWwUhJPjbKmZe0tL6NGfb7D4Ykmwi7AlKJcoqNdJSniVUS8REVN1wDQjZ6mRQC5Y6MkAW1WfpA0B5FuoqyY0ac8kHQUSHpQZf9GSInkv1Wdh5yRCZSi8RU68e0iQLBM+PrCBA5EOPWM+t1P1tWdq4+NE8s1JjnmlSBKLguz0+s9X+0r6TaLrgWdJi6XTqEqfN5bAgRCFGXNL4QirxRBh09+7cte3quqfrVnxEUPso28qC7rcXzfUffDInZJrDui0sCSA7CCnSHskLkGqu1IBA9VoIkCqq0F+pDku1V2IfIGaByIcwLPE3oFotJVNiRojosPScUTAZQEM40Wqp9RZmBBhzcZUfWUCAvAgjokX2TLeNrgGG0S1MGIuuARbnbAsNF2nhZouEiIlVo6DwsqllsYotrsaVkoX74FmGEYiDGusN7T/THVR1ECuz+eo4jYQAACAASURBVFlMclWRvbfl9J7GhvbO7ljpQ3eqKjS9aeZzF5z/RlfpIsFzXJAY2+qKxRUcbI2iPJ0FmstsK1mw4JoUVWCZbxfRUqGNAnNi42Fm2CHHA+KpR8k0rMmCMVWqrpKQIcWW2QqYksuGyxCHECsjWaL8EkVYU3UMmhFe50fmEWDNJtrk4mYlpF1ebBtGJtO5caZ9j9MzYZxAodKG4OdDDtJ9gQ2htMC6d+vLdvXUG0v+WrvQKkkK6bCSNy7x8XIUL5i55PaC4jrB3yxICk0oC4FWSbSoIdh8w32g6SzQHGZbSbFgqBKAU9WV/McZMeAakkG+iTkXlEv1WarbRpy9wu4HlExpIPNGAO2yOIxJqdJKFFjyM3wOrZZmQmiX+odpcAUTuRlhMlp31G7L1n/C0l+s1JETydjUe1zFCfxz8Y1zKLZxWu1kVJqXkRgBm9kU8Aya4EtA26jTamk+fsipN37g3GOLX/cn2YxNHNB6SQMmahNaN2y1qkcIdhGSRWCoR/A2CaE+TcBix7kxTJ3DbCuaLDo8XhWZDFiBZaHUknEvZkZgvnpU1OSdR20F1AhL3EmgzxKNlVhd8ZO41lLLAPIhtgI6/EXNBeGYIrMbQB2mJ8QJLBTEukQCVvDz+kWBD5ElblITuJJx3TZOq2VVm86q0ATAm45J4wS6fOGcIz19iqsSLgdonLAmHDyw/9Or/r5g40PQcwmZEs1WFLRBQXULar+g+QTVR75DXvIN8tUCguzw9J82O+dz3Ta7IpfAtgE3nEbAj3DswtClCEsssdhCQkSrpfotDjYMxmyv1D5LrAfEzZZYY6nnLHUwIOckK/IhXExcbin5Glj4JhQyQkExSE9UTG2gJgU4gAVUyWnJ7n2erbnHNc6obgs8RnVLGDWQRYaJEJZcfOPgdtupeqDiBFpiV/r2H6ssmxnyBYlHra76/UGL1mG2VQgadiQThWCHEGoVND8dYkELDQk6/Rj40OaMb5Ors/UVa9UVnG2zK1bRbNUG/IYuk8ldYFii1WKOAzoldIiMmBXAwWQIi0iCGhOorYDIiU7DjdgQEKJSPZfYBwirQnXVg0GRnIdgWwLtgn+h4dJvkglyo77XJA/Rmhu9mOwKIwu5x2mdcSxZX18fWyb7OWpg8qpx3TY5Phm8Ggf11Vde9urBk8G2huKqerwLMVxGZlez0W0wrOeAoPsECT711JJAPrSfSj60/0omjtpCmtF8anf9m34Ured0FmhuWxIw6myosN6GwhMZiGIbgZ0Z2CEqcoAiISSi0FL/2jDbglt1cKsaxLehBsGzZCiMqLSEVSPcSpmaCJuYKsg3XZKIfbC6psnuzOATybOKRSC25UR1W+xehZ1v8I3FNvE+ja5mCx9bqK4Ih68Cm5tbWVnJVgpH4Pz580fFNqoTjXqVB2YWgViBYubu1RuXP/fawQMv/8vj9aIgM9mIHgbZXqF3M2mzGAaXS0KBfkKvhhymWjL9CI5fCnqfocDAkUNPuWa/Q7ZWROU4nQWaw2yLUTIsGoT+ha4GqbcttSFQ8wHxA6PmdfKfwE/pksQMhb+ht+JDaZcNjlErLVVdQbU0cPj3EMNGaBeeZCQDmbNtZltkJLe4ZpPeGFd1dfWYtZvO7XPMyudQhDicsagbXoqrViwnWzDQXSCx3kzPc48L/dvJaBj6qYYQ8LXsfP5n9B6p2kRbtGegy2SfgTOTtcwx6y2lSz8cB8K0FWhus60RJJ19eD9TfoUzAv1D+BX0qlL7LEwEYFiwqkoDKfkSow++KM8SFmbmBdCrEabaiMWAEq4h4n0LiwHRZ8MUTE8I/yJXk4Ns+8qPjCNA5EQExHonGc8+nOEkFJGtqudavnECPXDgAEgWrtDYXheWBGyDrQa9ZG68OkiGv8C2um6zFG184yeozoTOJfHRxEPx7yd/0FV999y5c+FJjW3K/P4AvnHO8JjOAs1ptrVp2EU1ZNYDHmIyJ3wKIzp1JCCGA2rcCR9Eu2V6LmFbECWVfPg7rMkyqo0hXIQTko3ouYSCCcMOsySouuLkbJtr7Z7Xd6oRACdiyzi2WRzb4Zydk7apwuWAsq1AXb7IYQiyUyh/g9DzihDqxi/YiJgdicwhpQtpsmOqb2uM8nOabS3+ttM2yan5eiJLfxGGJVYF8sGdR9mWCozY18kR1nAp21L2pAos/SZKK6HU8GjY0HnUvDDc1KAbkmzjHmBjPGTpXaayovKix2uvvcZOkvgeMC0pasllK83HxUcma9asiVYptoj06slTpYhArEBxDoUUTZWdIAewpyEqoFXV22uSMOshRlvCM1C8USi7TJALQkfvEyQHuBVJorKLyzn6zKRYsUmLlstsa7Ea2ANZtRB/LCicxGhLPsQVAfgNKbYRMIkQwpxL6JVSLSQW4dlYwo3wLyHZ0cwL0HmpnqtjVV3Ottl5WiGu2F7h6tWro+XMnj07tszoz7jwRPFjW+N07nhmB9cpyzVWoGijsCQwiy2+od7iTQnDQpmy7MDOl5avOpc2YrpsPHvddr0syK5Q2ws7tm7Ry648ffo0TBCID/Fh4WOQLyNuRJ/OAs1htpUtdpjW4bwlwg2EoB1RaQnhAnaq2DLtlqlHZPIDFR5l3TDhEs4NG2GjJ8x6MGRGGKbtxpgXyIryCmfbyWm+Ud2WTRUrKCgg2hBVkdiCCfjGtmMIxzQzNDnUKuqTgEDsaT859eSlpIgAhj0hJggxyrlkrMz//c6dd2x65h919bVlZeV2hxM9lVAw0N93qmPHS81NTUrNm8qX3z7DRAy1uMRMt0zVTbHcKYyWw2wrWew6nGExRKZqcVTLtFsCK3lDUm6lB3XhihIu9Zkl6i3TZKmqG2Zexr9hxTYcyIwJYestNTWQ5RVE2c4tCVl5gGO7hyggVrdNvbyZM2eyyIl6l6yU1DPkMdNGIE6g0S3r4Z+HedVWq5Uxr1hzR7Brp69jm/nUUdXboWtBUbYZtpk+6znOFV9o91k6GxrxxoVLH9iWtfRY4U5ngeYw22JVWdWP+V1Et6U+0WFLAnkamG7LFNtwa8MfQrWEcMlpxIwwZE9gbEsXtQlbD4bIl/oqxA6gUQWZDMbhSeCzG9JugMkSxjWbHTt2sNhmsxkaDUax0fdECDPLovnBCRdtD31SrI2A8PLycmi7bDkFh8OB9cDQmNeuXRtX5HRunMnQycFrcVCPuvVRhJFX6Pp7o/FJv5UOhbGTIV1qNBCms0Bzmm2h2waMEEy38ACLGm2JdT1sQIjaE6LqLaXIYRruMAMuo+DhhgXGs8z3K2pSiIgZHVau2472zGcgLNLwwh2T2KGttHNHnnFpp3PjTPs2p2fCOIFGddvoKkJYYKi+vh7mhf379+MW2HpDUGDZGzS6qGZ0nfjobcYS93QWaA6zrYSZuyFV92MOWJRt6ToJcUZbJhPSysImBTYlLGpSIEorRETMCNS7K2rJxUq4NJCEM55lfgsxz3JQM/hcsslp29u3b2cFoePJLH0YJ3G73dGNeEtKSnp6evCN5opwfK9bt25y6sZLSQOBUXVb5AN6TXQpWkrc8vBplD4lSXKYbaHPQrPUYEyAsy0UVjKLjFIt80YImxHYnyHTLRsiiyfciD0BxEq9cePGzSIuCiNEBAs/121HoJKZAPIGjJndMNIIMLKYOXPmxAaO1GRHJpnOQ9gja5vTIXECzdK9TGeB5jLbQlmVlJAvgFnTIFmm1RLCJUfEmDCs8eFH2GhLIoFhySfWOYH8pPosmcIUUWwp847ogbKMMeeQs22Wmk1cxzOrpWQpc57tsPYXkWhWYeGWhGzBi6USQt4BwUSMtsS9K6zV0pGwON0WVWAmO8abkUW8woQLrg7bEOgquZSImW0hEc+yW8JuzJxtsyVd8kKMN7NmvKxJKCLjdc7dDCcB7UkoIm38c1u31UQT4TtqPiAQhI22FI3I6rZD0AyZbokOi4bMVk1kSi65yAg3Ot8hkjJJi8eyOJxthxDO6Nnk6Lao8nRunxlFdIoz4wLNYbbF8nqqZAoFNAXLChOyHWm0pYHR0bEwa1LrAflQSy89Cf+kKm1YBR7tyYyjXXjcYjelQDAIV8HRovOw9BFgGzhOAg+yIlAcHMvSry5PORYCXKBAKIfZFrUvuOzG04/dYwwGSI+TrHtAFRVCisNolNErbLHshMSIkGzkPJKQJk5+RGNIslz5luuTR+ZX00MAs8IwNh27X0N6+aSSCgWhOM62qWCVdhwuUEAnuvv7GIIFrtxbywoeP11dXRAke3Om/SikkRCNky0TB5ejNJLzJGMiALFiwgKbgztm5LQjgGox9wGiTDsHnjBFBLhAc5ttIWa4XsKkgGlCKYo8U9EwPR8GhOiqmpnKlufDEeAI5CsCuW1JgFTAd3B3z1fx8PviCHAE8gaB6DZeeXNH/EY4AhwBjsB0RICz7XSUCq8TR4AjkH8IcLbNP5nyO+IIcASmIwL5yLa6e/+ffnL/305htw1+cAQ4AqkioHVtfuDr3/59Q7KGg8b1l5898NSpcYxKp5JtqlXM7Xj5yLZa784/P/H3Xd10n42UD93fsu+VV466yaL//OAInIUI6P0HNz2/9aQnWRNA4/rjb//2Wjd2Wk31GDPbwKGfvOvSq7+xuS9ZwamWNp3j5SPbpod38PhjX/rC3Zs6xvEYpVcQT8UR4AjEIiDZK2fV181wYb2T/D5y3gMsv8XD744jkP8IKHU3fP/XN+T/febuzF29++V7vv7AC0fO9PgFQSqcfd5bbvnELZfUWCKvR89/v/POKzq7fIJ1xuqrPnLHh183Q2Hi1Pt2//6e+5/YdKRHs85c89b3f/p/Lq+zRlK1PXbLZY+ReHUffvzhd9WaEkU2fCee+vEPfvXvQz2aYC1b9rY77/7gQj4bKZPtRe/f8+R9P3ni+UNdIckx63WfueurV1TKicShd7109zd+9tKRph4/5lU751z2tmvqm57958v7Wr349fpbv/L5a+fbRCHFaJm8jdzNS2156mufuX9zs9cQlLJzrvzgHZ98U32knXj2/uK2G44dbg/KxQsve/enPnnDUhfrJKtd2x67+yd/eKlhQLDXrL/u459//8aKcLtLgkTo1CPve/fj8+/5yzdW21KVUeLq6f37/nj//U88d7ATtmVLce2iSz78jU9dVEYqOGb1ErLK4KtfufZzB978iyc+tZi0c737Xx+/9rvq5/78s7eWj8M8kLO6rTbYuGNPS8V7vnbHCpfauf/phx7+2q1nvvHoty+jsGJKcvVF771lw0xL394/3vvw175c+vjP31kLufuPPnTbJx7u2/C+O36w1Nb60m9+8u0PtQiPfveKcpmmKnnjN+98W51ZEC1lVabEkfWTT3z1f5+xv/1L915aa3K3tNtSeKRo/vxIDQH/sYdu+/jD3Wvf+anvrakUeju0JcVyYnHImufkzj0tM97/ra+scAYan7n/x7+6q3D9zR/68vsq9cZ/3nv/3V+rWfnIB+YoKUZLrYr5HksuWvqmW796fVmhNHD4qXvuvfOr1Ut/fXNdmDqD1uXv/cJ7a8ztr/z2p/d9ok1+7J7rZ5oE34Gff/z2P9muue2Ht8/WDv357vu/+MWCx372zhnjgSpVGSWqnv/Yw7d99KHO1e/49PfXzVD6dz74nUd3NHg0wrYJqjcr5nWQkFVKF71+mfLi1q2tocX1iO878d/jRu27lheNg2qBQs6yLZUglNMLNqy2CcL681eXfvztP/rl305e9IE59JJ99kVXXkIurZkX3HrdD5/f2fv22gqxf/uDv2usuOnn3/rAErJs17pznM03fefBvzS+7n/m0VTm0llz585li0EZ/a8milwz0OYWnEvXnbdiMV7qi5fRtPzIFAKGe8eDv2uAmL7/ESomehj9LycSB5OdtWrF+nWQ+Kr52n+f/Ur3uW9+00UzZWHtXN+m5763ZX/fLXPKaT5jRxtfCwpXL+/+iPbZF1w2m97W0nrfpme/vfW49911bC0Vx9r3fPBG0riE9cuLmm/4xu/+1vjWj87zbv3Vn1oWfeL3n7pmBnSX5XPlPa98/p8vt91007ixSUFGo1fPNbDjwccbSq6+/3sfWeFAh9Un/9v66GFavtGXoHrowg6v4KisUr/8Dcvkb2/a0v7u+hpTsGnbQV/phedWja23D8s6t9l26FbkinWX1Av372r0GnOG74ErFcyqcwl7OwY1oUJv3XU84Fi+cXa4DUvFyy+sF368q2HAmDdi59xgksgL3/aetS/ed/tNxy6++rrrr7tiZWXUgjHuJ4snGIFAsGXnsVgx0QjJxFEQmwX6JTNdwsn2AYx3yoJkKyu1Co09Hk1gbBuJmjgaZ1uG90sP3/vwM3tOtg8KDntIMBYH1JEL5EmFizfMErbvP+01ZrXuPRkyOu+66ZK7hsRR2NSnCiOa1giJJwhIIqNg62jVw0NyLGBf+boFhGqHH8GE1Ytn26F0saxStO7q1crX//3fthvfVtW5e3uH69xL6sdrPMwXtoXtVgLAdNHF+ENWJCzHiKXC6bK20V0daDS220N8CvY7SWTLnJt+9JfzX/vXn594/H9ve/yRN373Z3dcVMpb6eg4jj+UbJsR2XwjmjqJOIaXIJrM2DwJ+3bSQ5QV/KLSTytafLKz43eo8fHPf/nR4JWf/PJnVlSZezffefuDCW6crnDKNqYCyMqaz//kU8uI1ksP0eSqsghNCZKOHZxIlAmrp2PRack0ektMVL1k1RhiFalo7fXn2+/4+wst11y5d9NJx5qPzYveZrIcYq+NXq9UU0+fePDpe/WMULl0ln3ESy2mkubq5XMUz75XTmJkjRx6397NJ4Wq5bOdoiApdrPg6/NFff6SRUZayVaz7trbfvTbRz5U3/b0o69057uv4CTKWqlaVmfy7NsSERMtegxxTGL18rwoski+4D+z85Qw98YPXLtx6fy5C85ZUJpALdM6d7xwUpi5arZdpFILNR4NVtRhn3J21NWURHp9NNtMHYmqp1QsrBYH929vHjlBY4zqjVqzYawiuta8/YqSk3/7v51b/nXUdu5blox/LawEII5a9vQL9Ox45ME/dq+utXRu+e392/Rln7p6Nmyuiae5iIXnffDtdbc++sVvOj9+7VJry8u/uW+7acOXr5+DVEbVsjnm3z/34ONr37XU0tMur3rjhoSRQ60v/XWrNntelUPv2XuoVzAvKTInY/nph9y0rpFUdN4Hrqv+6BOfu0O89bq1NdZAV499zeVrEoojicSn9X1Ot8pJjvICoX/XMy8fq7+weukM4dE//eapmW9ZVGLyNsIeEPOA+5t3vrJNKNK69j/9qwf32S78+tUYOoLUbrmm6uN//OIXzLdef+4sh9p9utl8/rWXzIjJ9tL5hWw4eoK3bk1QPal443uvKPrso1/6nvMjb1ns6Nnz110egamgiapX6dn87fd9+bVl33z4m5ewlapHZxXU2Lrwhhtm/+1X371Ps15wVxpkm+OjZILZv/eJO//QHpSKFlz2ifs+dS0GRpMf1kUfuPfHtrvv//23b/+Vbqla+ZYv/ezDV1aQJ0AsPP8zd1z1tXt/843bddG18MbvXXpeZaLIwZ7DLz7y+3s78QYVC+rW3/ytz20o5GybHPnxXBUdyz7y07sK73ngTz/+8u9UQSlZ+s4fvm5NWSJxjCdrHjcxAnLFpR9553Pf/sNdD110/nff/d3Pdv/vQ/d+/h9EeVEcZfMvLVXwjMvO2WtWVL/wxDdu/w36d6769e/81m3vv4S6QYmOFR974EfF9/78z/d99Q9IZa9addPSqy6ZocRk+731jsTlp35FmZugeqLr3M/e9yXbj37z2DeeGxBK5sxHxSRG8AmqV4lS48xMCVlFqX3L+zc88tVXCq+5ftn4NVsglKt7N8T66KUuJR6TI8AROGsQMPqe/9Q13wx98S/3X1mSks10TFYJNT703vc/d8WvH3rf7HH6IxDQx9IFzxrB8BvlCHAEch+BUNNzf9kh1M6qcCm+5m1P3rdTXvXFVYUpUW2Smzf8bUdPemT/kb/+v0c9l3/v2ojfcZIko13ibDsaKjyMI8ARyDQCeudTH7ruh8z7NTbvOR9/4ldvG9MGmFptdF/rvucfffpgB6bACbaqpZd84u6PvYFaCid0hM789Vu3/va0WLjwDZ/+8WfWp8veOWtJmBB4PDFHgCMw6Qio7jONrd543wTJVlk/qyiNfvmk13/CBXK2nTCEPAOOAEeAI5ACAhM1aKRQBI/CEeAIcAQ4AgJnW/4QcAQ4AhyByUCAs+1koMzL4AhwBDgCnG35M8AR4AhwBCYDAc62k4EyL4MjwBHgCHC25c8AR4AjwBGYDAQ4204GyrwMjgBHgCPA2ZY/AxwBjgBHYDIQ4Gw7GSjzMjgCHAGOQL6sk2AYWz76ej3gS7YXQ2JpY/l5TKvGKvTkRJKrL7+p9qpbFKtdwtLt6eWYuCx+JUUENt16ier3pRg5LhqTJhbrh/Qg0NrLrp973a1mu5MLND08R6bSde1M0+mW1iaP1zPyag6FOOyO6hk1tTWzpPDKjFmse77M3DWMzR/YuLA0ncUzwbCaYYQ03a9iQxVDlsT+kOCVLUs++p2ihavQPnFkUQI86wQIPHvz+pVVrgQXxwiGTCFKVTeYZHuCRp8mL/3INytWbOACHQO71C6fOt3Y2dUxb+6CosLi1FJM01h9/b3HTxwtL6uomzU721XMHx5hKwIHNX28n5Cuo1lCD0L79KnY2MgoMYsu1bv7/32m8W8PaSo4OH4hjWxLhecPBJhA8Qoc7yeg6gH67hwMqj2+EIRbZpEq5NDue+44+NjdajDIBTrxBwxabR5QLXDA2wI3gtuZOCZj5pAvloQxbzRxBCxIjw0kDXywUZlhDAS1KqfJgY0EBa3pH4/0Htm59GPftRYUwaTArQqJUcz8lbBhJ35h/bELYlsSEhvCcIFWC0Lbi3/rObxr7e0/spdWcoGODWXiGDAgMK322JEDmqaXllU2tTT5vP6e3r7yokqLRQn6g4pFCqoh2SRXVFZqIdXr9Wi6pmF7TtFQzCa73Wa32y0WS/PR4y67c9bSc6Kl+f0+q9UWCoU8g/7+fjdOAoGgqqqBQCAUCpLOqKYhkIT4/djCJxgMIQQ/WSDO0YNBi4aIURieg2DQT1+xIine0IM0ra7hzRv67ne+jhuZHHtI/rAt2foz3SO6bSg0XE9Qtcg2NHXNZBQJuvvYnu3f/OCaL/7UVlLOrX7pAjwF6fASxSdOoOUQaPvJzV9+77lf/mlhzWwu0IkLZkZ1XUjXHvjlg8REo4v4arQ32azW0rISm83c2+f2ugeLz7SUVJa2nWklW+KqOpGLqpKokmQxmUxCYNHCRbE1EUXS58YVi1Wxh2zBoAkh4EcMo8iyzIiV7vUr6IqCfNAzjYqSvqQNyrPh97WqagbZcxsB2JPb0EC75JzFmwBrjB+7PGLb8d98NAUZCYtYC/yarsiiZkgWvAQNwakYg71tW776nrVfesA1s563zwnAPL6kZKSL/hvvAaUGRzTdSIEKocHNX7tl/ed/XLZoJRfoeOGNi9/b0z2ztra7s3vF/JU+wSP4xWMNR8tLK3rb+vwBj9XsQCd9ZnXN/r37Ozs6od4WFxd5vX6MPoP+zIrpggs2rj9vY++ZUTryYExZlkwmGXRJxUR0Vda/JP1RjGrhskz3FMQPGkJGuqj0wa6gWEQmNEvJFsXhCpRrck4OckLexpN45BHbkncVeWlFj91t7g5v4Io55WPgScUDIUX9D5CJRZYgHthwQbt29EYCg9u/devaL/20qH4Bk/cYefLLE0ZgIp0VVni4aRJvk3iBCiF1652fWPvpH1atPJ8LdCKykkSiSM6dN0c0iXXz5gy0DiwpNjssdi2kO8sKelt65y9dgKvufndTW/N//vH05W99U+uZ5s7OjoLCwuqZM04ePWGxW7XgsC3JmURIeyYNk+RPqBan4F8RCjSCwL4SyJKoSVSTjRzkNYtz9p4O0yo1HZC8qDrLVGN8wwBC9NxJPPKIbSlqUbLd2+5+rbW/wmEe8+UFmYb5lhCuIFOXL3yBcImNh46eaYaohby77vzY+m8/4qycOYkCOnuLguDI63P8AKBFhRsntcgnEKjkMrSd99xx3pd/WrZg+fgL4SnCCFisNr/HM3/enGf/tamg3ekZ9ITUUKGrUNVU8aTo6fOqRuhM+2m/JzDoG4AifPDAfn/AD/IN6MFed/dAVx9U1EACNzKifpLnQJcMA9orVWlFGYqsbOgaOFcwSTJMsNBpqdApyZJIoqERaiUaLD0CwSAeA4yFEzVXJdZjWD/QsGHsnUxB5hHbDu92Lih1OBT5UNdgimji3Ql5KLJkM0nNA34fzO6k32GgucJopEiiJktqyLfrzo9u/MEfJLMlxWx5tEwhsL9jAFkVWkz9AdWMHqQo+lQNPxGIkEKr0u8ne3Gzw2pC8xMQIaAZQVU/1uOBowKcT/DuxPhnVKBOTX3th5+85Ed/shSWZKqeZ1s+Dpez+3TTonnzXmp5zNeggucsJt3H9JcSUTaTXv2ZQ9LSJStmlczYWD3X8Hj7B7UjZ3rbm46g/6jMnSXJir2oBKTKEgFAMsJJuZKSJ9FjRaiyUGyh6GKTdcKqZGVuRr64QFw4aXw1hNEzFeeBYIAyLdFuYfDFCBqlX6LYQqHVdLWjtb29q2njunQ2Kk9bxHnEtlQNiipDFrQ3ikpq6hFRaCFOsKrVJMNtyBPS0D6JZZ2FyyK424R3Zl9Xw5M/nfeuT6eNOE+YIgKkcVD1lh3nlBewk5oR6VlITYE1eoXa+MjLEn5gnqAGaUYF6g6oRNARgdq0wL6ffX3tF+4bkSsPSAkBm9XR2dGzYsO5n/vM50GsUDAlK3hRIgIolQyL0Xjq9KEjfbJmmT9/dkGR0+P1lfl9r//Qzb/+1WMLOopjSwAAIABJREFU6hfUVFdDKfUrCngQckFrBV0ODAxC+W1tb/X5fUsXnqPAOiuKWthuS7yHqKtB1DJA3DY1lXgpwGMhRD38ggFInnAwVW/xITosU3WJT0IwdPpEQ5+vZ3bVMAtGSjc8gUh5xLbMaBtpnAwT2l7Hhod2QMg7kui2ioAJDiBr0uEgeZI88AyZ0CdFDME4/ewfONuOjWkmYlDww/I72BnupjjNJjjSws6DC/gGjeIbeivehWhhzP4DH1uU77KYmL+tTZFLbMqoAjVJUse+bZmo7Nmbh2y1gABdq4b5FTA4oFdu/u/L0FyuvOL1JeXFaEegUd0X2PLKq/5A/+n2Y13e1kNn9ne2th44dgDdy+6uzo72jsEBD3RZH45AoKyictasWeecs2R+3WxoO7DbUtcuYm8lmiuUVpgSNBXmi2DkAMHiNDI2RvRZHIx5YT1Qca5pvb2dhTOUYlOqfd+MSDeP2HYEHlVOC5rZiODEAcQMJMKSgG/0VSFLsC3UW7R4ZgckHRpJ9Hgm9X2YuLpn15Ul5ePr9JExbEGocVlBvCBfMq9sNIEWWEwdnsDZBWWm77aypsrn9Thc4c5HbPZnzrTOKSlfvG5Nv7vfbDZbreY+d/+c2llFZYXbt2194fmX2tvbiV8Wmp4g+eEVaxiKYl64aPGadWtaW1v27d7b3tb56pYtiklasXrVO256e5GjiJlyiWZLOp/UpQsvUnAu4dtASA0QSwEYmDCsJunkCtNt0ZAJPetG0O3xBDwbF1V2nOrJNBjJ8ssrto1TZO2KjE8Kqi0BCFJD60QLBdVCh6UOCcQtAW01ql4xa8OkjmImk12eX2NqbdSSwOy2uOc4E230JzsxY9wEJt2Qhp/uALHkFlmVPmrSjerJsOkz7CBQvFajReQ5oFm7vZKy8oGunlHZtsDpuPz6Nx8+0lhaVBwI+Q/s3ltWUl5TXwtD6ty587bv2GVz2ksLyy6+9NK27o4//fa3/lDArJhPNjW29bRVlFfc8K4bDx8/tun5Z9yD7s0vv3j82LFrrrmysqpE1uHbK8N6oBLfWVFTDWJBCPpDQT84lzItodxyQXa8tqfZYZ7l1/q0QIPd7C8usdjFY437yyoLOtv7dvbb3ps1WEZmnD9sO/LexhtCLAbkPzEJwR4PD2v8ImwbIWxikyIKEz8mA4HoS44VtrRiSHWqdQ2ZaHE1+jMuXBCsxKtPFOoKbeRNTF+cVKBhiTKBxhU0GfeWX2UoJiUY8o96T6VlxV6fDx39ksrCh3/64Nvf8672jm7ElE2m4pLi2XNmn2g4VlxZ8uRfn2xravb6vMw2cKqhUTYp7n7Pze+p+c1Dj6ieoIihL1FsaWp55LEnL37/qpn1Bb7mQP+WjllNAafJFLIq+OgWk6iIMoyAZosoKxiEcVkcnsX1Js3ntjtUX6D1xGnB3XPNB21luwpF3VZX59v+L+6TMKrcxgokfQpyjBUv6XWkJrNYKKVSYmX0KrJs0W6JIX+CZSStAL8Yi0BUG0XgAeqTwA4YZDHYFfdz1EDEgZKLpTNgz4WLAk6WVbhIFyZy8LdnFIr0TkLegGK3+AMB8jaLAZblNjDgliRTaYnr1Vc2V82o6HF3WszhN2VV9QxqRjBgB1BEccDthl8W9BlNI29I0G53R+u///Of2XPmbtvapoc0s8UsSDpmpj33wPYrZy4J2gWPNFggDQ56NM0tOxRLkaDYVFHz+oIh1S8aPpPYa5H9Fskzo6BvoEeVxbkr66pqS3XzpuJFNsVueD39S99Tmt5dp5cqf3RboryQzxDdnujxdniDG2qKBgLqc43dcP25tL6UjnQlO+g0bqIQ4SDmWpYfVXhxIPXE+DxZ0fxaLAJxL7VzYnTb8QIF2TEz7gg2IDnxt+d48YyN33boeO2ac+B1O9jndhYXxmclCgf37u3v65k1Z467vfuZX/7aX1K+as3qJeecU15ePrOm9vhR39atry5euhRGO/T/0ZkkXEt0Gt3n1f7+pz9iPhn8eU3Qn20WkxUOZUYoENrUdEgz1GVzK0qqy2ZIgTJJE3z+/sG+Pk0YLFL6fEYfPFGCojkguUwOtyKcPNa0ssMvG8d6MMptFQJ2t1oihqyStcYjnBdf5ez9ziO2Hc6CR7s9L53qqaZeQVub+2e6rN3e0JFuTyqDLayvGSFYwrP4IHtGuLxxZu9xjM05/PqMwL2/Y7DQSrwRMNU+9lhaMfboGbJiM47QcUF+jHkhZYiY2uX5kT4CJw4cANuWlJe3nTzD2JahDYd1jGL1dnepO1597sXn37Vi9rIbPrRy9crf//iun+/YWVjsWrFy7TlLF584cQzi2PzCSzC2otfIGhpqgxFNaDqDnkEyZxfjnKo22O+GoZYMo2H9BIdTtFo8BpaivrqoqBxTgT0D/b6uNu+ZBqOnpa5gcLUgKSG/b9BzDP5k/UJv0NeyWDEFBNkn2VV5pi45Yc/wBAN7AsLd6d/7eFPmEdsyw1yk6VQ4LBfVlRzv8aJ1dfuCjGThD5Q6V1Ir3xCeUItYQ+WNc7wPWXrx4ySVCqsmLwiNGR0X0pJp1kyBwjyJ1B+J5PmfnVcbjhy+WDcsFitcsYKatvfMaeI5K8nwFDBLkre55dmDR9XyGb/+757ru3/o3nDlf46f9Ax6O3d17d297203Xnvm5EnFosBVAOhJmCUGhyAyMQz2BepvQN6tmt3ugIww7IUAq8Vis9l1s9lV4OruDz35+99UFvrqZxXYHaWyvb7y/A0lpdVawOjs7Oxub+lrazp9skFWQqVljqUrjXLYkLASmS/Y5zY63JLHZ/L7xuOzNGEB5xHbUntqlAphxevyElcthODlSeaG0YlhaXMla5OkCN46J/zYpZgB6WSkGHX80ZgcuWo7fuSGpWjq6fJ09DirSp0ulyLLQV1zmhQ4e8HvKqiF7vp/9y5dPH9+RemfDh81vLa6vXurNNXtLECXAtMcDhw8DKewoqKivv4BrH4IxRbGWUxlgCMX+BqsimXAiopcGFKzWu2Y4IsXJJgXizRiGoN3EKv1BTvBm32mwy36wrq25QsblL6nOtqN3gHngK9Ek6srFi4ImYUDu3d2LxWeqpAtbsnhLbEOaIVqsKJImFUn2c2T6vyXP2yb5KHBLCMYFnr8oQtqc3ud+ST3mH+XWN8ii3TLIIvrwuQfjlm+I4+snzl4eGHFBpNF6e3utPq8ze1tWEfW3eOGM1ZJSZHZZPKr4nkbNxw6eGDPkf1iSF0yb/aN77hUMIvHjh4/2nAKelDNzGqTCRQNvdUCEy2I1WLB4rc2LPJFOiHEFZPMBIM3LZa49ft8eAdb7Vg9V8KsM+pna+w8KOw8ZLXI5lnVYm25f0ZFc0X9qX5xT0N/qN+jBU+X+/sHzGVBrcYWKnF2GYGDgz69TzO7zW/LMj6x2ecJ20b1lFjFs8xOlqRByJrqwn0dA7OL7fB1n6BmOsHkkyjZnC8KDSxWsd0b8Ukospj6YhwSoj/ZiQWTjcgSCjpbUQEoxMVHyPKYATf6hOQ8VlN4Azab/Mp//tkleK02W1Fh6cySModkQv/fUg/jqtPtDZgMk92qnH/xxfMXL92+dcvJxhO93o5DB14JBDTsFHfvPT9+4g+/27ltu6Og0OkooIYEYlfH5F/W1kwmTClScIMwLoB8cRHnMAf4A141BLdbsuItVF0W2aMKhxv1Iw0mOaTMv7xErG3qcQ6KM8udhRd5lbL2071NB9pd8mCJ1WMt8loqVFPVpCKXJ2wLzEa2mQKzXGC24ZIsCisrR5nokh7SIwtKLx+eKhUEoky4LNbfdnjK2sjP6ElcznHhnF1TQT7FOBsvvGT5qnUVNTPDfjyCUDkDu2SEjyuuvPzVF17q6O4xnzpZWlJ2zrIVxcUlXR1t3qBaXl7c1tL861/cu3DpmhXLVz/00K97enpmVFcXFBQw6iQTw4KC1WrBB9mRObtYhZp4YJJXJMY4MZKG0TMyQzDSJnFCzb2CalL2P+8LqLaS4hnwMOvf8zvRYplRUGhylRmOKtU5tyVgdu93G74e4X9SvNEMRMsftiVgZN8IxxtqBh661LKI0zqxhCbSMadaTADDlD9vSMNPBML3Ns7Zlq2iAO9aXEVMrDQElYi56C6vHLazZJwGnVrVeKwhBFace35peVmUauOgqaut3eQP7dizo72ldsWaZdjgtqi4BCNgfX19DadbBEx76D+za9vg66645kMf/cj/3nnn/v37qqtn1tXVsZUN8Ay4BwZ6+/pBuDabFQnJfjjkP50uxpiVFskIl1SDjn5CrHRVRXXdupWDpzsGQ2avHPIKqrenqf/UUSyM63IUlEGVdo21+HVGRZ0/bMtGVLKteNLGySk3o89ggsyYAhNVW2J12wQpUgqOZshis8cmpZQ80mgIOArIvvGjXSFh6PrPX7hw257XOnt7tm/fNXdevdPh8Hq8Zmtg0Ovp6x0sKnAqIb31TMPBYw1YuAs+Xk1nzmAZGjgVuFwuNDcMlMGYgFW73G43mY2LzcRCIUQjbIsVFmhjBMGyOsBXHh1ZWHIDfi8cx5yK5cDug8Gu/vWFs2fZyuCv26sOtrt6mwLdbkkNGgF304lENc9GeB6x7Yh20zoY6PQGYaTDDqxbmnqdigkGXFh9MFzW0ONdWz3CEzs1gLNN6KnV4qyLFbXbYmQay9di6S8GAdNqY3XbArNpIEg8inAC/1ysO4NzKLax5tqzDr6s3TA8BBIptqzM+UvmtbY2D3YPLFmxfPeuffMXznU67BjrGoDrgsUuWRzd7p6O/25SBclVWNDV1SXLphdfeF6U4IdgcbkKS0pKMGpGdsShy9pCoaV6LJmAJGHiJ3GGp+VjSloIfg1Y1jYwo7pGlkt7Ojv8uh+xPYb63JndS1XD7CwqLKmsK645t3gBJlJ0B/tbrHxVmrSejLAqFEnb5PZh/tgMpwU60bbmPgUL63kDsM9j8OTZhi70NMG8aZRD+i5pJONJxo8A6Q7G9CMmrtuOKjhSBBfp+KUTTZGcahGtqKDw1g99+B//938hv7eouOy1HTtn1dU6bNYCVyGm2NptjqLCQqxBfvjokY62NqLHilhmzwOPBM9gsK21RVGU+jlzYLyltEqERQ0IxCEXdgX8cTrtWLDWjN9B70KLFrKaB/Ay9mDJBSwuJQQH1VJngVLiLNDEUryETx4/emjfbodFKS6tLJ05p2jkaskTwGKspPmm20ZbDkx7G2uLG3oxu8GAhnt+TXHTgL/TEyiymi6cVbytuT+9Nkam9Y7aascCml8fLwL09Tk0+Lm3g9ht2RFd1iv256iBiIBwLAyP5wHffk1bjnUSYg5WSmwIPx8XAuSdSHepSZQKhFg/a85Fl1x25lQDfLUqKiv27d1fW1PjcFhq4fIqCIePHPJ5PCXFpViLfM+evdBt/X4/rLSVlRXrN5x7suGkq8DZ0d4OjiVlEDWWEC6It7amqqDAsWRWbXtTQ1+Lu9enHur3lFdXWTWv5HTBttDe3Nfe3y4p5rLyooMmyVVTXL64ukQTSrsG5Y5e94Fd243tNwk/TFTzjIfnEdsON6eW283RziauYONVfMOEXmJVuiZGl9xum/GncNQM47TOOJac5SLeJtGD/Rw1cNTMo4GUK5JH4VeTIQD7KagWblgjI4VZmNheZUxh8AyW9/V0Fbjs1VUVR48dragoL/J4RNm0adPzWO6ptra2vKJ09uzZDQ1w4JJ7enphm12wcMHlb7hSVr0nTlowPbe2osTt9Xd09hw53gTPWzHodygmT8MZSTZhmUWrybAFzSaLyWk2t3s8EKvVYj/debqyeobT5oCXmLs/0NfvM5kkh81csLiqYs3cGT6+BthIuaUQwnqdsQ2HtSKElDvMp/p8mL+L8WgSgV5Ir4nxxpmCKDIWJVbxZD4JyNpplgeDGr5D2JuTbvLoJRuUKX5Vw94NCPdiIwcqYuwB2kGXfkfgnOLwmrZxlUvvMcjYHeZ+RtjYhhhOIwe69+yU3RkWnSW7NGLrE1l22u0+r9Xkka12K7wOGk829Pf1mslCM+LChQtLS0sQ02xRoNKeOdVEdnLUjePHj2FUrKxAqplZ3t3a58DeDVi9q6xU7B/Ye+RU7yA02cqgJKiyrCgh1WQ2CiwDQSMYgCeu4MM+6oqsmJUCpx1vAzMyxAHrQ0h1DxDabZYG7HbiyTtpRz7ptvEGOCxiUks1oHXVhTta++uLbPWF5CeWGJ9TbE8bYt4+04ZuXAnj+hBxnlspZlXlHLYS7qipeGdlVFhSDPT7g8ycip47NFx8g3CpUkIO4q4VIj6wmJILRrRi5MtiNVstxsDAjMqqpuamwfa2oqLCM2dOuQf6sEgCcoDFtqDQ1d/fv2LliubmZrgiuJwV7qbe7qaWgNMB9lRDIYfJuri2ev/p5uZBb6nNasEOV85KTGarNEtlpSU9ve5NL7xSUlKMXcpQJ4fDAY7F1jtkqE0yYKmg3mPYL0eHaTjF28xItPxi2xgzH9Apsij4QMvB/JTzZobn7JL+hUnGkEt6/Ue+ZFRGHrtUMoGAYjfOSCVJGnFgAEzvSUijrLxMMuj2giKx4JeimJhiC8Il3ll0GCsQCA56PFAnQXaKCcvUmBTFAsa12Mwez0BxcSFWooGV1u6wr169qrun8+CBI05nAcwOINktr2yhTmAY/sIOZd6ZduwuCbcDyeQQFbO1utzW4vf0dvWXVVfYCxw9vX0+7yB6N739vaJign8C9jeD1lxS6sIbgO6WhLVv6RQJmC0kEfth6bIuagl917IhrPxhW6CDZpNtxTPb+WdDxjxPjkD2EPB6vaBOLHEATmPeWNBnYT8AvWLJRWzGiJkIsCeAM9E+YVJAuNVqKy4sRkhnZxeZMBYK1dXNcg96iooLyyvKm860OBx2p9PR34/tw7BUuOZ2D0B71cqLrGYF2+KIQdkD9vXDO5csidtw8ITJ0uQL+olebYFlwAj5/GT3McMoLikqKyun9ihMQiP7duAfNHGyhjUb1UvsKZwNxPKHbQFuNgAameekFTSy6LMqhDQScoRvek9b2Cchie8B9h+L2ZfM1O8nYyBx8RGyomrILSGmhLMK3YzdLHRGsnGDiAkIATZWBkjhmgUOhWGATfpCFx5yJGsc0GkIGNSCq62zwEWn3epwpu3p6QbVmmTbgvnzu7p6sPSMBYuBYbqgl+ydA0r0ShKZ0gCjazDosNsxwwF2AKjNcLnVTHD00mSbBSwf8PioQGGnlWD/LS8vKYR7GVkhl+wVieLJVRAv2XiQIjBZpMHgziO2peuWxmq3aGzd3uCcEju6NdhD0GaSF5SRoRIs697k9i8sI4tmIhwywOq3iT1Yhj2X3JKQsWY6ZkbUkhA9YimyThjmkBD9GRceTZsoHBFIEZP0mh7zhnMyQiAYspPdbTGDS/X5/dEhMqiRIaiYZOpXELYCGFsxEQw2U6jBJj9oWTYrCsbNgi4nEjY19WuBga5Of4Gz0FngaG1uc7kKsAaYx4M9zgPIk711yatUEANeP5o52DNEhsagSJNFq2ErBnyIJsPTy+UA1ZbCCoH1bNUQoXfYMWSZOugSH11Mk6CkD3U8oeNaNoSRR2w7vM1gp4ZnTnRiTXGw7e42N0axzwT9drPMZjdg7jzYFls5NA/42aR7/EwR38l9HaZYqfyPBiGym2RTxYhPAn27KhJW/CILJsAVAQsjUJ8ENCgSF74onRGfhHklqco3/6HM6B0SS4JFAekR/xB6gD0hGOi2bGkutrABKZP4yxKZgeZAl0TNlTFhzOYowOLTmmItxJwjdPzfumDxg794ALYIm80GDoXlF/uT4wTM66MLgFHmZZYJckLH6Ej2GF4rLnFVVZQVODAnrR86stlus+owElskzP0NhZCYlEnzIIq2IGKkLKNgjJFZHrEtxTxKhWhyGMVu9wQQgim8a2cUtg0G8MFUFXhuHuwaQHj7YGB+iQPybxkIRHe9Tg4YKYLrQskxytBV4EwFGn6LrkhrFbdqJ1k+Ckc0n7jaobFygU5EYl7PIHr9oE441cI+y2wFUYcw4gEWIpuP4wsf6pxLNvcD6dHVDURouLAMFJeWNpxoKC4rqa6uOHxgH/RfqMNgSUwtA+dCekhos1swVxd7BhYW2gP+YMPJFggVyxNhSVxowfBmKCpy1lTPcPf2NJxsCAZ1+JmZDGI1pslxncxSww4QIFlUFc8D852YyL2PN20ese3wjieWsj3d72sbZC1NwNsWZyDWSie0oLDbByzp0I/wrkN4isCxSdopRubRJoIAZBLLg7siui28fdA1gR4EKy3yZ2ZZKLyYzAKtxabAG5eYa7G6Md64+OAcPn9wzoUb7qoYiy2rG+H0VIU/kbvJ27Qwp4JMScecKp6UHAUyLEbcv8glSrYwJkDvoWYbdORFaLdodsSgCj41K5b6+lm7d+6+ZNmlsurp6+8BD4KjcYlmRbZXkE0y3GaLC519fYN2k/lMe1tVVaXDbsNCNmBeny/g8/tsZlPr8VNtfb3wv4aeiym/JAe0bt1AJSTs7AuWJUsuEJcJMtOJ/pvMI4/YNjFsmK0LrRYb58wd7mZbYlMwlxfpiq3jcHLmbTMx0pm8QhXboX7EyhFEiaYdKW+YGTdJJUbKLraIJAn5pUQIwC3A64XngMrIEUNZYEbq0EoYEypqCHvkYgoEYV6V2E1hSSCOYDI8cMlWZiLhZcxCmD1n9uaXX66uriosKgV1osvh83nAmIiMoo2Q0NXZOziAYTERe5oXuJwwwLa2trMFbslMXkHo7u5vDgaIvmwxQ9uFggz/B6pJk3/wRsCLAVmhYoRz4QpG6H/kE5HoRjMQnj9sSxUhADgEH3oXsNwhBA0VCyPAtDe7yI6fsLXPcJJNHDA49mpTH1DESWzCpLhOYGuzpPnyi8kR2Nkatttip3p0StC+rIqMvethiIdRHsM0eGX2+kP4RhPC8iNof6tnDFsSIXn+/Gp6CGAQjM1uANuiAWIbG3ggoM8OwmWmW7AtXSkRIiL9DFzVgsQ9AIotmW8AJRfpRQNzHODvtX//QeJ4AMWWDmohBNmCHBElEDDcA6SORB8VsZQ4eQhIhtTVARGwhS7iKRYz1iN3ODB9FyMyIGdcIQctRyJKLnG/hZ8DDlr0JB75w7asSxj7qiq1K/ggBB3JS+pLGKr46VBktEOcoEN6wazIrIcUQSesPKnvwxTrlX/RCNAxb8+RRoCRt1w/3FchFcWFWxJGwjiukCAxEVDlUhQwT4yc+n34RWUH9RY0C5UW25UTpZLxL05gYIC9HJoLOA9OCpT0xMrKSqieR48eR2I2woZQsDYOcplRIzH2kgO5M56ll8h/4udAqBbbUboI1ZKJbeQCIlAjB7y+yEQyMDsZqqM7+CKzcd3sBCPnEdtOFgem0oYnKBWeHAiQBku+s3vQIrJdSHZvYWpzh6UApEW655IMHRY8CKU2vCgYUWDRYYedVMXaBSBNmA6ILy7pwBshNYT9HgXDAn4GH2PWApy3SkpKly41nz59xt0/gPggRObhwJg2yrO45bBKizOqJpvNCiakYU4EDMegVDomRq7hPzEbkFox7wU4RtDM6Gq5lIUn78gftgVm5G2V5YaT5ewnT/A5UVK2pQkQJqGInIA67UqCQAUyUwwEJ4mYQUb8scC5cFEwAVvshwu6xI41gYCP2BOwXAzZRkwjVCdKIFzElxXZpMoGrL0q6d4jYW1tTY+jZ2DAgzEw4kAGpiRzHCTwNHInDE7YEmNtxLtAMbG5wNhKh9hqodIyCzLuiCrBdEYDSUWYlYibVJG8Y5Gc2nsn78gftp002CatoMl7CqZlSbRFkA5pdmtHdRx+pI2A3+/DugfQWOHLRXrz1FQKRwJmAQCdQaPFCBlx/8LiBVBj8UVn3EK6cOfCVTKWxZRMg1gJTCYFmjLmgcEu4fWAcOFFTSgXgeGuDjUmgHOhwoJesdC4gl3UMe5GCicH7gUki1/4S6aOUQ2XcS4NJJYEwt2g/ckVfp6wLYY+0Son4UVFZSagOKxmlPYDyhOOiQB8hlgLGTPmBCMwNkdxaLcTzOrsTA4mhVuP2aTQTrlKFE4y7g96Jbs1Eo4k/lbgV9hqVWIzpaNbgJ2Ek1Ni42UGVsaVUJKxwg2UYqxZA19aTAuGhgt2RkxKuEQ3xRfRYYnFgKxzA67FAc6mvEom5jLeRVON7pROCiUWD2JPgDoMhZnkQxcon7Qjf9hWMCl76Las2T5ksxVLEnG2zSrOaGImizW6F1lWy0JBKI6zbXogg9rIErc0MTGIYtECopGQ2Qxs7RfGktQIS/bBpRs4UpufoYFksRwunYdGFFVJFYldABSI5Q/ocrQ2mx10Ct2ZmhNAuGwzc1hpsd4YKQecyw4wNdFnyeY4oFzsBQn/WrLMOWqFS4hJcqTuX/hLpjxQ8y29PnmH6O4nLlA4sE3Q5BWbhZLAgFgTE0OZWch7KEu8QrEcHHPhzmpBPHMw4ODgIFNnsocG2irWP8W0pewVkZc5b9n68uJFS4sKwy49OX2Pff29hw7v37D+wmzfRZ7otoAJDMhJMNuPy2TmT+a3cxKcTMTHU1b1jJrjJ47Om7sg1wkXVIsbwe2M5+7TjJs/bJsmADwZR4AjMH4EamtmIRFUQo/XM/7U0yiFw+4A1bLbyXa1xm1JUA9vC2x7Wms+LuiTuoFatoHI6fxFs1WqrDevvkxZesF4b4QLdLyITU78ich0cmrISxkvAuNj28CLTwY2/3m8ZfD4k4aA5YLrLBffmHpxXKCpYzVVMccr06mqJy93TATGMXFNPb6LU+2YgE5tBAgIYkqxDlygKQI1tdHGJdOprSovPTkC42Db4Jankuc13a+KdnnV263riL1pag7RKa97t3X1zPRLRw5r3mFZWZ0kh9TFlHrMJMVN5aUxBSoVmy79pG19bbJKpgBpfPJUso1PM6HfOS+pCd35XQXZAAAP+ElEQVR9/iQeB9tqzcfSuW/RItWsNlU500lrmmv98CMF167NjFsc2tXaq81zSybXxy7mviWXac2blbqi9CuAHNZdZZ5dnCQHta0xRajzX6Bigbz4PFOZPQlcQgqQxuOZSrbRNKk//4ljpi7T+KpOyW/d37LvlVeOuslUhDSO5MkDh37yrkuv/sbmvjRzT6NCGUsyDrbFOujpFGuqM9/4Oevi0nTSGj69u1nrG+DLhowDvaA/xchcoCkCNaFoqT//SWKmLNMJVTVTiYPHH/vSF+7e1JEWX2D98KTJJXvlrPq6GS5Tsldopu4kw/lMbw8wrSX45BfDGy1k+MZ5dlOBABfoVKCeV2UqdTd8/9c35OYtpcu2osv0uo9Yly6WCjAJJ6D995ueFxoF2LM23mI9d51kFYyePcH//DJwrJvBIp1/p+t8cqo//5nBVz0j0p6WVn7KfvkayYy93nu1fX/wPfOijol/crXl1h+Z278z+JcDhlhsuvI266LZkoNM+zH6DoSe/4X/UEcY9kRFmyqUiz/4/9s787AojiyA93TPDXJFESPI5YVK8ELxDGp0zSGiRo1fxMRkjUlU4iomahKvzbpmE3VFs+rGxAODxxqPmMR44EaNFyLegCIiAgIOpzBHz/SRmoHAwExPN9AqmDeffzhdVe/4vepHdXVNlaJnMI52FS+8zaCfy1k2JOb8mKdWo5Rh/YgW6DQHI1ucYTq+1nCzBLPjL4fNEjfpiGhlUIDFTobVXDaeiiNT86s1Sjq87zzPQyK3caGmBp8En4nqmX6EqwzTZprObDZcSBdh5xY7Dj4VAa2JNGG/j1kqSLiQcvWrGrFKvMcbqsGDCGcCM5XQ57/QnrAzk2PV/2O0JeOdxwVRu2L0t8sxiYds/Jcq91+03+6uPI+w1p1yNo+zozb5gvztU4dtN1vp+278ltd9pFRh4vbVX+0+eaccU3v3HTvzw7cGeMpYfcbBf3/+zeHUYhpTtgyeuGL1XztV/qqvbvNqf01Z296cHN9hzb4lPVVM0ak1i9f/ejO7GD3P4a7+Ya9MnTU13FtROexlyq7tWbduZ0KKBv2+VOHu0zn83SWzB7esx+O82JAbmm1xZ6Jjd1x7UP/TFRZTY+UFGKYkhixSh5LGI5+bNATRe6pywlx2wyKjZesC9uoa3fn75o1EKzQY7mnTlmFzT5AHDjM6RvLsUOXw6erS9IrTubWcxVWEX2e8bK/+4E2WcCd6RynGzmHWf2IsRs8rHKqL5NLhi1U9Merkfwy5WkmbfornOzgEqCAGfeo06Bnq3BbdnQeYuqsiIlLaSo2hbGvHXw6bcTXhH4SX7dP/mMYSHkTwOMXYz4h983QpJVWqSy+QJy8xlAsROsXKBSu7eCVISfq3/5LFRrx9hHL4YpyZq01C/Bv3seMgB9XmFFBrJhzxqqxiHykHgarfultatnpZ/dIg9twGbWoepvLEjVXDizrBsOr/Bax+sz7lS/WoyaaNX9MBbyvbF5LfHEDbFmKW05pq3Sl1pDSrrx4vLl0x0VeOSRQtvaSY/sbGmXO/V0VG/2uuP526d/W6BQtabN8wnt756RdH1K8tjB3qI314v0DlWX1iVe3mHJ7TFZlJV+57Tlk0P8SF0lw/tHnLomnZS+L+PgylVEP6luj3N2t6TvrbP0PbyMqSN30Wl3RHSzfLbGtxHw1gqYwbVRvWqfsqQlvTRz8wJGtQEa2hpR0+kndsZUyy1KzIox/cq2JG2LRFFTRJJnM7DMvJITsPUAW2k5zOtd0Kjy1NqdRI5RHS6GkyP1djcRGmDrGv+qqfvLsHc3q+7lSWWfLdHEmXgY527lJ1U/RrxyYv0yekmlXLGZkp0mJs1aeWvw5tRkNv6raZDJV+g41aowwfht/cUzmtz2oumNIsRQVSafQ7VS5Yaan8ryMJmfvJRAv2jFuse6wqbBhxOb5hk+p11D5tAa3lHuugj7F2kco5+lVijVyJsiU6ooXOvEzfRweOZnCdl12r/2Nl1OENpukxqtEM4x3CnFxIFpgPx6uKu/WdUic8zeqr/Jl2gYGBlfuqsaWnv/n+fudZu2ZHtkE31HOBxJUzH/58Kj8iGB3t6dwtNCwkyAXHgoKtHLRu7thvZdteA/v1RCfT9e3f85mZr638+sDdwW/765M2xd/xGL1u+XshTmioqycOK+PSHAt69KUNHdvaWubWyXx60MhYl5E1ZayHi7BjvGR4p7HKgQOJVqjv6lgUkPvoj6KtDqsrhjxGjxEuanT4G8al2rUjgeuoTMHjPrcuuFRPpWbaZnl7pgizmSmm0nKwF7oSiu+ZmnvKIs+QX+OCPQVV1xxIYMvpjDwsoCOagaEpYVY7UFSniIuqoFeWwuBYa3wUAa3lkTCTrJFyEtBXC2bzfiYz+ygnxeJpx0xJR4xZhYIA65INP51zHh9OlP6gPffHKERQy2ZZyZh39a6J1ayaEL6qxn7XnFLpqxOn9D6xdu6E9OdHjx03dkT31lWTAA3zkvAMDffD1l3K1LFt8y+lk+ruQzqaU22T+YiXbTE0H2Kifl5qyLZ6J27QsJgfv7OtRqlfjcSubdUfTkOP2LJXFgjYkcm8gRvaydIinEO1S1/L7mv8+qtqoH3aMLSPm7D6wm22GGpPqLUL9sqrr3FKcNiqsYUcVJtRQK0JCI9XTSsuAl41Vahs444ZlN8geViEcvIo+dVV2h8vCJhGVxEB7dE7CswtTOa1n86pSd+NDVoTbY82sZX1+vCr2cHVpyNLpC5eaNehCSv39b/4y96d8V9Ex2978R8b5g9u0OqlKrcrd1U038JoP10Mlz7BOVp7gRDPnLKbNCMjvGRsYS5T/a/CaD6bGG0mqXb0BC/x6Ipj94wnj1I5d5n8dLqC64HMngfoGpfq0jSaVkk7+dpNdXZkPbzDYE6EPzqKjv8j1Gb02i2wDVZ2izEKzOI2qh1IQO9wOntjJSk02VDhNtpqLnBRbUYBrXSm8ghAgX3MGikXASux5v+yBibzqGHHnIr/5+DPjZY5176n7OCSSAKiVL1Y43fz9ekt5JGTCKWlh9qp6SA8TbgIl6nlmL5UX70iVuYV7Cs1Zd4yevr6/fHx9fawDGRxlXfomOiV322b7pd/KO5MEUqSdZsLdZUpSzmXjbXu1k4tkXl2elZScf1CbpNa0STe2FZ7mbyocQqNUVO7jHfyWNwNdzdSFxMZqpDSmORdxisyf6ApNwmTYsqsS48tvcVgkfKBQ5nLGSytQm+JhA4wKyVxqdZdIc/nOvX/SM3uIG/fRyscCDTx4GBNgjaZvPZQPWCOyrDDlKeT+AyXKjgNcWyzxD9SEepGoRdZgRHKAJw+kmCeV7WeA67DQN1LNW2ONDu2Yt/5ysTpQILEras0AO137048N17hY6D2H2Pq+eepbgDsfuei2owCyupYAybxHShtnWNy2MfsI+UiYC3WECRvTzD5GhZ3JZ51xagMBk3pWEfTFleOl2JUOJu0jLybwxZ9K3t3hmrwGe2RNNa25m1h8xJ2w/cEL6LkGiDflbApvvfr3RTFBUSPF8PCpkZ6zdyz4CP5tHF92jlRRfdy5f3HhLcsPLn/PO3f3suJKb6aWoLJu7ihVUk2zUcGpS9/8+OLwUu3LA2vOjrbyjtt0rZNe4p6+ig0Z79bl8gEzx7tL0fLowa8McItJm7hcuf3XglyKr6y/5K29oHMT4KPeNkW09PHFuu0UxS9o1R90KtFPZN1iL6UiNHl1C8bjWOmKMYswLAKOnEVlVlW19OCA/pDbspBU9QhFnvIEjqllDPP1W2MvnOpJulfl2i1k5V9XleHWtZjPcyisks4x4FsBXVomd74tmJAtAwd1fwgy6yK67HQsc2Ugug7XY4WaekyTUeXGQStGag9BLcrgdHRd9OYzi+rJo0xW1Z4mdy7jUwttoNEhEtcVJtPQJli0/GDsoiXlIMuUHs4+pgjpBwETDVi6bOBsgEvWdYLsmzRFXLv15TevEjHau6oDq5YxvstufSc7lSauR+WnzX8OsJ5xFvy5I/JQhuwtws5+6oI8X1kIiSu/efMj1gUu3XJXEbi0mn88qFhISEz1q90j924d+2nu9HyC7VXjwndIsLditNObNsVq0EDUEkL375Ry+b1c0V3Qd3mQzojurWttb5X5IarO1fsLjDibh2HzVo7e0xbcxLBXfrErF2oWrl1+5KEcswjoAN64sAdDHceGQxrwfXYA6x8RVQDf330WDwRX4k6TP1BtOTH97XXrJf88OmxXiPMV9d+eeMkoHOiW8yPsy+59tU/XUCFQGmSdYTHtEmaL6pRZNraSdOO9l+/O6ab0nrtrUMlbOnx2ZFLTQv2rfuLh3iTpw5V2iusx9iWaNuBupdqT8hTc02Gd3lBiuUzDytYeWtpnygpc0Of5WDqoSk6jsIk0Kw/QUAFkmjq1YTHtKl70hj7mIrsmxk513cf1siDenvzndlpyknYl4T5tPN0kelzE/+3NpnosaCH6xNMtcj1emRbeejIpyTbthjiFP2O7VMFk/CJwaWfPKS9+SdtmIHJSTTEx5kePoo50cZ0Op628n6jeGr8Ufz0B/TY7Irzgtf/CaT2JKoJj+mTsO5x6STTt86LPlzu3nXsJzED3XjyJqPPu3Y87lDKAx2ag1B5dQuftXrGSE/bm/5xGW/RU4+ZBFSbPB5PNvd9F5EbuDPeqlXV4rEa2gxblsvoGriTxmMNGrey+u48DQHlZtlUSuob06ZiN9hhQ6B+2RY1N13/zZicwDzIYsmnfpGgDa2megGdqkJ4d0RjVWn7HvW1EQJaX2KPp35jYvp4LAQt9SVQ72xbXwVQHwgAASAABBABntkPYAQEgAAQAAKiEIBsKwpGEAIEgAAQ4CEA2ZYHEBQDASAABEQhANlWFIwgBAgAASDAQwCyLQ8gKAYCQAAIiEIAsq0oGEEIEAACQICHAGRbHkBQDASAABAQhQBkW1EwghAgAASAAA8ByLY8gKAYCAABICAKAci2omAEIUAACAABHgKQbXkAQTEQAAJAQBQCkG1FwQhCgAAQAAI8BCDb8gCCYiAABICAKAQg24qCEYQAASAABHgIQLblAQTFQAAIAAFRCEC2FQUjCAECQAAI8BCAbMsDCIqBABAAAqIQgGwrCkYQAgSAABDgIQDZlgcQFAMBIAAERCEA2VYUjCAECAABIMBDALItDyAoBgJAAAiIQgCyrSgYQQgQAAJAgIcAZFseQFAMBIAAEBCFAGRbUTCCECAABIAADwHItjyAoBgIAAEgIAoByLaiYAQhQAAIAAEeApBteQBBMRAAAkBAFAKQbUXBCEKAABAAAjwEINvyAIJiIAAEgIAoBCDbioIRhAABIAAEeAhAtuUBBMVAAAgAAVEIQLYVBSMIAQJAAAjwEIBsywMIioEAEAACohCAbCsKRhACBIAAEOAhANmWBxAUAwEgAAREIfA7d0d7pWyaMnYAAAAASUVORK5CYII=)
# 추론 스크립트 작성 (label_image.py)
import tensorflow as tf import sys
# change this as you see fit image_path = sys.argv[1]
# Read in the image_data image_data = tf.gfile.FastGFile(image_path, 'rb').read()
# Loads label file, strips off carriage return label_lines = [line.rstrip() for line in tf.gfile.GFile("retrained_labels.txt")]
# Unpersists graph from file with tf.gfile.FastGFile("retrained_graph.pb", 'rb') as f: graph_def = tf.GraphDef() graph_def.ParseFromString(f.read()) _ = tf.import_graph_def(graph_def, name='')
with tf.Session() as sess: # Feed the image_data as input to the graph and get first prediction softmax_tensor = sess.graph.get_tensor_by_name('final_result:0') predictions = sess.run(softmax_tensor, \ {'DecodeJpeg/contents:0': image_data}) # Sort to show labels of first prediction in order of confidence top_k = predictions[0].argsort()[-len(predictions[0]):][::-1] for node_id in top_k: human_string = label_lines[node_id] score = predictions[0][node_id] print('%s (score = %.5f)' % (human_string, score)) |
# 추론 스크립트 실행
$ python label_image.py test.jpg
스크림트 이름 뒤에 테스트할 이미지를 지정해준다
I tensorflow/stream_executor/dso_loader.cc:128] successfully opened CUDA library libcublas.so locally I tensorflow/stream_executor/dso_loader.cc:128] successfully opened CUDA library libcudnn.so locally I tensorflow/stream_executor/dso_loader.cc:128] successfully opened CUDA library libcufft.so locally I tensorflow/stream_executor/dso_loader.cc:128] successfully opened CUDA library libcuda.so.1 locally I tensorflow/stream_executor/dso_loader.cc:128] successfully opened CUDA library libcurand.so locally I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:936] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero I tensorflow/core/common_runtime/gpu/gpu_device.cc:944] Found device 0 with properties: name: GeForce GTX 960 major: 5 minor: 2 memoryClockRate (GHz) 1.266 pciBusID 0000:01:00.0 Total memory: 1.95GiB Free memory: 1.65GiB I tensorflow/core/common_runtime/gpu/gpu_device.cc:965] DMA: 0 I tensorflow/core/common_runtime/gpu/gpu_device.cc:975] 0: Y I tensorflow/core/common_runtime/gpu/gpu_device.cc:1034] Creating TensorFlow device (/gpu:0) -> (device: 0, name: GeForce GTX 960, pci bus id: 0000:01:00.0) W tensorflow/core/framework/op_def_util.cc:332] Op BatchNormWithGlobalNormalization is deprecated. It will cease to work in GraphDef version 9. Use tf.nn.batch_normalization(). W tensorflow/core/common_runtime/bfc_allocator.cc:217] Ran out of memory trying to allocate 1.91GiB. The caller indicates that this is not a failure, but may mean that there could be performance gains if more memory is available. mohave (score = 0.68172) qm6 (score = 0.25622) genesis (score = 0.04780) k5 (score = 0.00927) spark (score = 0.00499)
|
추론할 이미지를 새로운 모하비로 했다.
가장 높은 점수로 mohave로 추론했다. 샘플 이미지와 스탭 등 세부사항을 조정하면 점수는 달라진다~
# 이미지 추론 서버로 만들기
http://gusrb.tistory.com/55
출저
https://codelabs.developers.google.com/codelabs/tensorflow-for-poets/index.html?index=..%2F..%2Findex#0
부록 : 이미지 추론 서버 만들기
http://gusrb.tistory.com/47