# FinOps on Prepaid Credit: ZopCloud Apps Pause at Zero

> A prepaid balance only works if the number on screen matches what the apps actually used. ZopCloud shared VMs now run on prepaid credit. Every new user gets ten dollars of free credit with their…

Source: https://zop.dev/resources/blogs/finops-prepaid-credit-zopcloud-apps-pause-at-zero
Published: 2026-10-09 · Author: riya-mittal · Tags: finops, billing, zopcloud

---

A prepaid balance only works if the number on screen matches what the apps actually used. ZopCloud shared VMs now run on prepaid credit. Every new user gets ten dollars of free credit with their first deploy, and apps draw it down by size for as long as they run. Emails go out as the balance passes two dollars and again at fifty cents. At zero, the apps [pause with their data kept](https://zop.dev/resources/blogs/idle-services-vm-sleep-and-wake), and they restart by themselves once a credit pack is bought.

Credit is bought, and every charge is listed, under Settings → Billing on the ZopCloud side. Builds on ZopCloud are charged per minute. Builds that ZopDay runs for a customer's own cloud are not.

## Usage Is Pushed From the VM, Not Pulled by the Bill

The meter starts on the VM. An OpenTelemetry collector samples container stats every 30 seconds and keeps a six hour file queue, so a short network gap does not drop samples. It posts them to the gateway with a per-VM HMAC token. A tokenless push is refused.

The aggregator then checks two things before it counts anything: that the token is valid, and that the organization actually belongs to the space the VM serves. Samples are deduplicated per 30 second step and summed into 15 minute windows.

<img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIGRhdGEtZDItdmVyc2lvbj0iMC43LjEiIHByZXNlcnZlQXNwZWN0UmF0aW89InhNaW5ZTWluIG1lZXQiIHZpZXdCb3g9IjAgMCA2NDMgMTA5OCI+PHN2ZyBjbGFzcz0iZDItMzk1OTU5MzU0MyBkMi1zdmciIHdpZHRoPSI2NDMiIGhlaWdodD0iMTA5OCIgdmlld0JveD0iLTEwMSAtMTAxIDY0MyAxMDk4Ij48cmVjdCB4PSItMTAxLjAwMDAwMCIgeT0iLTEwMS4wMDAwMDAiIHdpZHRoPSI2NDMuMDAwMDAwIiBoZWlnaHQ9IjEwOTguMDAwMDAwIiByeD0iMC4wMDAwMDAiIGZpbGw9IiNGRkZGRkYiIGNsYXNzPSIgZmlsbC1ONyIgc3Ryb2tlLXdpZHRoPSIwIiAvPjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+PCFbQ0RBVEFbCi5kMi0zOTU5NTkzNTQzIC50ZXh0LWJvbGQgewoJZm9udC1mYW1pbHk6ICJkMi0zOTU5NTkzNTQzLWZvbnQtYm9sZCI7Cn0KQGZvbnQtZmFjZSB7Cglmb250LWZhbWlseTogZDItMzk1OTU5MzU0My1mb250LWJvbGQ7CglzcmM6IHVybCgiZGF0YTphcHBsaWNhdGlvbi9mb250LXdvZmY7YmFzZTY0LGQwOUdSZ0FCQUFBQUFBOThBQW9BQUFBQUYzUUFBZ3VGQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCUFV5OHlBQUFBOUFBQUFHQUFBQUJnWHhIWHJtTnRZWEFBQUFGVUFBQUFzQUFBQVBRRVZBV09aMng1WmdBQUFnUUFBQWpMQUFBTHhGSytQMk5vWldGa0FBQUswQUFBQURZQUFBQTJHMzhlMUdob1pXRUFBQXNJQUFBQUpBQUFBQ1FLZndYbGFHMTBlQUFBQ3l3QUFBQ1dBQUFBbUV2UUJqTnNiMk5oQUFBTHhBQUFBRTRBQUFCT1BWZzZtbTFoZUhBQUFBd1VBQUFBSUFBQUFDQUFQZ0QzYm1GdFpRQUFERFFBQUFNb0FBQUlLZ2p3VmtGd2IzTjBBQUFQWEFBQUFCMEFBQUFnLzlFQU1nQURBaW9DdkFBRkFBQUNpZ0pZQUFBQVN3S0tBbGdBQUFGZUFESUJLUUFBQWdzSEF3TUVBd0lDQkdBQUF2Y0FBQUFEQUFBQUFBQUFBQUJCUkVKUEFDQUFJUC8vQXU3L0JnQUFBOWdCRVNBQUFaOEFBQUFBQWZBQ2xBQUFBQ0FBQTNpY2hNMDdLMFlCQUlmeDMvRWU5OWY5Zmo4dVpWSWtINENVU1RhN1FaSkZGdmsrYnJPSlJYd1Vtd0dqeGZDWGs4SG1tWC8xb05CUW9LbjBpaVdWVXFteWJNV2FkUnUyYk51eGE4KytROGRPbmJ0SStGV3J0ZHI4b3c0Y09YSDJvL0tTcjN6bUkrOTV5M09lOHBpSDNPY3V0N25KZGE1eVdmLy9yN0JnMGF3NWxYa3RHa3F0MnJUcjBLbEx0NllldmZyMEd6Qm95TEFSbzhhTW16QnB5clFadmdFQUFQLy9BUUFBLy84TGp5L0hlSnlFVm4xc0cvWDVmNzVmWDN5TmM0bHpQci9INTdmTHZkaEpuTnJuOCtYRmllUEdzZHZVemt2emE1TFN2RUNFU21uU05MVGhsNVNYOFErRkRZSTZTRUd3c3NHcW9XMm9JQ0UwaVRHRmFkT2dxK2dma3dwRG1yYkJ0S25TbURRaUZyR0JFbnU2czlNay9XZC8zSDBsNi93OG4rZnpmRDdQODRVcUdBTEFNL2dTR0tBYXpHQUJHNEJNQjJoZUZrV09WR1ZWNVJ3R1ZVUTBPWVF0eGRkK0pJYUlVSWdJKzEvMFBUUTlqUXBUK05MVzNQSEN6TXhYMDUyZHhSLzgvTjNpTStqY3V3QzQ5QTBBN3NVclVBMDBBRVBLb2lDSW5ORm9ZR1NHRXpueVZ2M1Q1dHFHV29KeWZYUGpyUnN2UzljazFKOU1SdWZsK09uaUJieXl0WGo1TWdDQUFRb0FPSWxYZ0FZM0JEVnNjc3h1dDFtTnBFMC9qSnhCamlXVXVNQnh0QnpUejhLbm1ibWVGaW5XbXptYm0rNUxSR1B4N01qNVpOY0lYbUd6cWFZUk0xRjdPTjM3ZnlIMFpKZ1QvTVh4OFNZZUFPdDU4bmdGVEdVR0tsbU1uQ2pIRWxwOExmQTc5ejQzUEhUeDdoWlAyMGdrTXRMbXdTdVppd3NMeitXV3BJbUJnV004QUNDSWxEWndCcjhJUG9DcW9DQW84VVJDanRrZHBDQndRYVBOYXBkakNWWGhGSmsyR3RIcFk4OGVIZnZ1V082RXYrQnFDK2Z2bmpodUZhaTVmd1lmb1BMUG41NTdhVGdlbUxKN0YyYnVYVENaRnBhTEh3VWlnSFNjYitBVkxiNU15NHpkN3BBVENaV1JhVTVMcFhJa3lZa2k1OFUyVytHSDk1c3NKc0pFbSs1NzlRbXkya0FvazhPVGNZTFlSK0tWNHA4OTNWNXZ0d2NGdHhhLzhBOE8rUzUvL2ZWbDM5Q2cvd3VOQzYyR2IrRVh3UXdOZTZyUUdSSExkT3ZGb05IeEM0Y1BYeGd2djNzSEJucDdCd2FvSXkrZG1uMStjUENGVTZkZU92TFk0c3pNL1B6TXpDSUFLbjBOZ0dXOEFyVUFzbUVYZHNONzc3ODhZSGFZaVRwblhlR0YzK0NWNHUrVUU0bkVDUVh0MzFvRURPSFNCdm9JYllJTE9BQkhVSU9qNm55U29vN0xSbk9hdGxTTldxT0c2NzNNME9Pcm1BdjVlaHFWMXRtTzZSUExKc0tYMitmaW1ZR2tqeHBMRFl5YkE2TFRkZy9iT0grMitEZlp3NTExTUdPbUp0YnBBSzMrZEdrRDIvRWFXQ3RkRkRtU28yVWJlUWNKWEZBVEllb0w5TElFZFc2VllEUEI1SGhyY25wY1NJdzJoNndTRmZBcmVPMXEzczEyUDVBL2VqNjFuTTAvMGZLaHBVN1hTV05wQTYyaFRYRGZxWk1kbVRpTVJ1VHFPNU0rK1ArWlNNN1R4L21WVkdxL004SjA4S05VMTROSFJoYTd2STVwTnAvdUtkak1kL3NiUU1jdWxqYlFKbDREQnZ6YlhPbUJSVVhleGRLMkdyK2NPTk01SFErMXVZeXJ5eWJDbmNWTzBjSTBXYmxFSy9YMCtlRUh1ejNPL0UrM2VxTnVidG5xK3RCUzE1czcxQWRZeC80WHRBbk9PMVN1K3pKZ3Q4c3hEYnRCMW1XQ2ZMbXpCM3JuT25PVHJRUXVmbUxLUnBWRVZKajYzdHRpY3pCQmRTOGVHVjVNcFdZekRGK2RrQVBIM0Y3VUVWSmF5OTRQbGxvd2lUYWhGVHFoWDY5R1VPSWFlRTBBeW5aYWgyempLbVlOaWpwM21pU3NScU5obDFLWnlwQUlDdm9uWDNaTXRlV1lCci9USGVxWVVwb0RQeHNrcStQakt1dXpCRU5ERS9ka0h1bG5SWkZsUlRFVTZ4RjUyUldnR3JwdXV0dWFreEpSSy9rYVl2V0VKZE9VSEpTbzJacWd0YjIvMFdTMk01Yk9Ybms0Z3E2SFEySklra0xoNG1xankxRnZNRGhkSGhiMG5xZTFCdW02MHJ4YjBaT041bWdkSlVtblYwblA0ZGp3b1ZYVzc1R2NlTzNxTVZmVDdHVHhCZ29rSkplaitCYVVTcUFDd0ovd1RTeEFJd0NRd01OVHQyTjc4UnBRZW14YVZtV1M0VVRTbHI1SWZQL1ZOMy94eWtJS3J4WG4zNzlSL09PdmNnOXAzNWMya0FXdmdibXNFbHFtYjR2dXQvbk9WYnE2aWpSYUtKNDZmaGh6VzU4NExBaWRyaUxMZVF3czJvU0Fua2N6c0thdVBaV1F0OCswNXJ0c1ZFa3pnZjdvME9GVjFzL3YxMTZ0YUwzSDE5SWtCYVBiNWUwdnZsVTV0bmxDbXhXZUtqbDI4N1JzSXZ5RjIwU2g5WlMzWlE5UFpZM3Eydm5mTTh5ZU9wUEpuRW1sNWpPWitWUkxKTklTYVdtcCtLdHJjZVRJZzExTGhaNTBYck5aZVRZY3hIYTBDUXg0QVJ3NzZIVDVDYUxEeHV5TUJnMG5lMGk4NjJSeU91RlB1cXNHaGNSb1U5Z3F2WU4vRW5WejN6bDNkRG5WNEJwOEZqWGVIZ3g2N2VnaTJnVExIbjdMNjZOY2VVTmVzSGxNemxwWHZhZkxpdGJIWXRHcXFzY0lJaFFyZmdZSWJLVU45QXJhQkZIdnE2aHFidFQzbHhqQlNud25tTTFxZDNpeHpXcThHYjFQT0JCTStRSmVOdUwyZGtyM0gyMGY4eDF3eDkzdDdZSy9LM1NTRW53VHJnWUhROXNaRTlYWUh1b2JGWjNqVnJ2b2ROWFZjTzJSM3NteXR1blNCcHJIaStEUTJWWVVUbEZWMlNiYnVGM0REQ1lHTTNuNm9hVWxqcVZjSmdlalVxZEdyNTgyUHY3NHVXdGgza2pNR3FseXJHUnBBLzBIcld2OTM2Tk51akxDZmo5OGFOWHI5d2oyMWVVYWc2K2ZtcDFFOGVLblNzak5vb1BGK2o2K0daRG1BMVJDNjVWZDQ2anNHbFUydlAzalN6MG14a1JVTTZiME0xZlErdWQ4UVJRTC9PZkZlajIzRXdDdm8zVmQzN3YvdHlzQ1Y3bkxrT1NsUjU3YmJ6UVpDYksyV24yc3JkcE1FbVExMmZydHBhc3RaQzFKa0RWa00xcS94UjhVaEg3dWxuNGU1RzhWNnovZ3NwS1U1VDdRODFHbGJyU0YxaldWN3ZSTFZmZEFyc1BMOW9EWlRWcjI4WktKL09XbFhJM0ZST3lqcTVQUFhIVzBEZjdhU0N5Z3FrYldqZjc2Y1RETGN6bnU0MkpOOTlGd2VSL3dwUTMwRC93azFGUjhVTmFBemFwNW9IeXZDZW9yMDQ3Mm5YajAwUlBhNDVJY0RzbmxsSnhPaVhyOXlwWFhYcnR5NWZXei9OVFkyRVF3T0RFMk5zVnJ1TE1BNkEvNFlYM2VhS3RGU1NSVWJhaGxuMXFLSHd6T0xTMmhNOGROSHV2VzVsSzVwL2JTQnZvVVB3bWhPM1hKS2R0bTNON21PNWU3ZnhWT2N4azJLN1cyZWZyN1Juc2tJYWg2KzV0bk9tYk9xN0thUzg5U01XblMweWcyZWtMMms2MUNnUGU2N3hLYWpvOUVzM2FpdnREZE9kSlV6dTBvYmFEUDhNUGF0dHFUVzgvSkJHd2NlWHN5L0h0Z1RqakFacVJvUjF1emgyY1BXTkRKdjljRUJQVjRXL29VRmVjbjNYd3N1ajlXWndtajlDTkw1dkJZSm50dlhNK1JSelB3R1g0VHFnQVlVWlJKY3A2dHVsVEZvcGxyRnk1Y0F3Uk5jQjBGVUJRTUFLb2kyNXErdW43eVpNWHY4QkZhMTM3WDVuWjZGYTBYNndHVjNzRHRNSUp2UWcwQXZhdHJmQ1RDODVFSWJnOXpYRmg3NEw4QUFBRC8vd0VBQVAvL2tWSjQ4d0FBQVFBQUFBSUxoY2tFY1hkZkR6ejFBQUVENkFBQUFBRFlYYUNFQUFBQUFOMW1MemIrTi83RUNHMEQ4UUFCQUFNQUFnQUFBQUFBQUFBQkFBQUQyUDd2QUFBSW1QNDMvamNJYlFBQkFBQUFBQUFBQUFBQUFBQUFBQUFBSm5pY0hNb3hpc0pnRUliaGQ3N0Fzc3NHL0lVWXJTd2tJcGlRVnNHa21NWXFBVnNMVHlMb0RUeUpOclpld043VG1DYUMvYU03TzU2Z3V1OTBvTldSVmlkS2RiUzZVcXJvM3hxd1ZJM2JpMHcxQy8yUUtXV21EVzRKSzJXNFRmRm9qNnZDbFgrZDJ3VzNCeU03TTlTYVN2L0UwUzhUL1JFck1GZGdxMENxd05nS0dtdklMY0dodjMwQUFBRC8vd0VBQVAvL1BnQVhQd0FBQUFBQUxBQXNBRkFBaEFDb0FOZ0JDZ0UyQVZJQmlnRzhBZWdDR2dKT0FyWUMyQUxrQXZ3REdBTktBMndEbUFQSUErZ0VKQVJLQkd3RWlBVEFCUEFGSEFVMEJYSUZwQVcwQmNBRnpBWGlBQUFBQVFBQUFDWUFrQUFNQUdNQUJ3QUJBQUFBQUFBQUFBQUFBQUFBQUFRQUEzaWNuSlRQYmh0VkZNWi9UbXpUQ3NFQ1JWVzZpZTZDUlpIbzJGUkoxVFlyaDlTS1JSUUhqd3RDUWtnVHovaVBNcDRaZVNZTzRRbFk4eGE4UlZjOEJNK0JXS1A1Zk96WUJkRW1pcEo4ZCs3NTg1MXp2bk9CSGY1bW0wcjFJZkJIUFRGY1lhOStibmlMQi9VVHc5dTA2MXVHcXp5cC9XbTRSbGliRzY3emVhMW4rQ1BlVm44ei9JRDk2aytHSDdKYmJSdittR2ZWSGNPZmJEditNdndwKzd4ZDRBcTg0RmZERlhiSkRHK3h3NCtHdDNtRXhheFVlVVRUY0kzUDJETmNady9vTTZFZ1prTENDTWVRQ1NPdW1CR1I0eE14WThLUWlCQkhoeFl4aGI0bUJFS08wWDkrRGZBcG1CRW80cGdDUjR4UFRFRE8yQ0wrSXErVWMyVWM2alN6dXhZRll3SXU1SEZKUUlJalpVUktRc1NsNGhRVVpMeWlRWU9jZ2ZobUZPUjQ1RXlJOFVpWk1hSkJsemFuOUJrekljZlJWcVNTbVUvS2tJSnJBdVYzWmxGMlprQkVRbTZzcmtnSXhkT0pYeVR2RHFjNHVtU3lYWTk4dWhIaFN4emZ5YnZrbHNyMkt6ejl1alZtbTNtWGJBTG02bWVzcnNTNnVkWUV4N290ODdiNFZyamdGZTVlL2Rsazh2NGVoZnBmS1BJRlY1cC9xRWtsWXBMZzNDNHRmQ25JZDQ5eEhPbmN3VmRIdnFkRG54TzZ2S0d2YzRzZVBWcWMwYWZEYS9sMjZlSDRtaTVuSE11akk3eTRhMHN4Wi95QTR4czZzaWxqUjlhZnhjUWlmaVl6ZGVmaU9GTWRVekwxdkdUdXFkWklGZDU5d3VVT3BSdnF5T1V6MEI2VmxrN3pTN1JuQVNOVFJTYUdVL1Z5cVkzYytoZWFJcWFxcFp6dDdYMjVEWFBidmVVVzM1QnFoMHUxTGppVmsxc3dldDlVdlhjMGM2MGZqNENRbEF0WkRFaVowcURnUnJ6UENiZ2l4bkdzN3Axb1N3cGFLNTh5ejQxVUVqRVZndzZKNHN6STlEY3czZmpHZmJDaGUyZHZTU2ova3VubHFxcjdaSEhxMWUyTTNxaDd5enZmdWh5dFRhQmhVMDNYMURRUTE4UzBIMm1uMXZuNzhzMzF1cVU4NVlpVW1QQmZMOEF6UEpyc2M4QWhZMlVZNkdadXIwTlRMMFNUbHh5cStrc2lXUTJsNThnaUhPRHhuQU1PZU1uemQvcTRaT0tNaTF0eFdjL2Q0cGdqdWh4K1VCVUwreTVIdkY1OSsvK3N2NHRwVTdVNG5xNU9MKzQ5eFNkM1VPc1gyclBiOTdLbmlaV1RtRnUwMjYwNEkyQmFjbkc3NnpXNXgzai9BQUFBLy84QkFBRC8vL1MzVDFGNG5HSmdaZ0NELytjWWpCaXdBQUFBQUFELy93RUFBUC8vTHdFQ0F3QUFBQT09Iik7Cn1dXT48L3N0eWxlPjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+PCFbQ0RBVEFbLnNoYXBlIHsKICBzaGFwZS1yZW5kZXJpbmc6IGdlb21ldHJpY1ByZWNpc2lvbjsKICBzdHJva2UtbGluZWpvaW46IHJvdW5kOwp9Ci5jb25uZWN0aW9uIHsKICBzdHJva2UtbGluZWNhcDogcm91bmQ7CiAgc3Ryb2tlLWxpbmVqb2luOiByb3VuZDsKfQouYmxlbmQgewogIG1peC1ibGVuZC1tb2RlOiBtdWx0aXBseTsKICBvcGFjaXR5OiAwLjU7Cn0KCgkJLmQyLTM5NTk1OTM1NDMgLmZpbGwtTjF7ZmlsbDojMEEwRjI1O30KCQkuZDItMzk1OTU5MzU0MyAuZmlsbC1OMntmaWxsOiM2NzZDN0U7fQoJCS5kMi0zOTU5NTkzNTQzIC5maWxsLU4ze2ZpbGw6Izk0OTlBQjt9CgkJLmQyLTM5NTk1OTM1NDMgLmZpbGwtTjR7ZmlsbDojQ0ZEMkREO30KCQkuZDItMzk1OTU5MzU0MyAuZmlsbC1ONXtmaWxsOiNERUUxRUI7fQoJCS5kMi0zOTU5NTkzNTQzIC5maWxsLU42e2ZpbGw6I0VFRjFGODt9CgkJLmQyLTM5NTk1OTM1NDMgLmZpbGwtTjd7ZmlsbDojRkZGRkZGO30KCQkuZDItMzk1OTU5MzU0MyAuZmlsbC1CMXtmaWxsOiMwRDMyQjI7fQoJCS5kMi0zOTU5NTkzNTQzIC5maWxsLUIye2ZpbGw6IzBEMzJCMjt9CgkJLmQyLTM5NTk1OTM1NDMgLmZpbGwtQjN7ZmlsbDojRTNFOUZEO30KCQkuZDItMzk1OTU5MzU0MyAuZmlsbC1CNHtmaWxsOiNFM0U5RkQ7fQoJCS5kMi0zOTU5NTkzNTQzIC5maWxsLUI1e2ZpbGw6I0VERjBGRDt9CgkJLmQyLTM5NTk1OTM1NDMgLmZpbGwtQjZ7ZmlsbDojRjdGOEZFO30KCQkuZDItMzk1OTU5MzU0MyAuZmlsbC1BQTJ7ZmlsbDojNEE2RkYzO30KCQkuZDItMzk1OTU5MzU0MyAuZmlsbC1BQTR7ZmlsbDojRURGMEZEO30KCQkuZDItMzk1OTU5MzU0MyAuZmlsbC1BQTV7ZmlsbDojRjdGOEZFO30KCQkuZDItMzk1OTU5MzU0MyAuZmlsbC1BQjR7ZmlsbDojRURGMEZEO30KCQkuZDItMzk1OTU5MzU0MyAuZmlsbC1BQjV7ZmlsbDojRjdGOEZFO30KCQkuZDItMzk1OTU5MzU0MyAuc3Ryb2tlLU4xe3N0cm9rZTojMEEwRjI1O30KCQkuZDItMzk1OTU5MzU0MyAuc3Ryb2tlLU4ye3N0cm9rZTojNjc2QzdFO30KCQkuZDItMzk1OTU5MzU0MyAuc3Ryb2tlLU4ze3N0cm9rZTojOTQ5OUFCO30KCQkuZDItMzk1OTU5MzU0MyAuc3Ryb2tlLU40e3N0cm9rZTojQ0ZEMkREO30KCQkuZDItMzk1OTU5MzU0MyAuc3Ryb2tlLU41e3N0cm9rZTojREVFMUVCO30KCQkuZDItMzk1OTU5MzU0MyAuc3Ryb2tlLU42e3N0cm9rZTojRUVGMUY4O30KCQkuZDItMzk1OTU5MzU0MyAuc3Ryb2tlLU43e3N0cm9rZTojRkZGRkZGO30KCQkuZDItMzk1OTU5MzU0MyAuc3Ryb2tlLUIxe3N0cm9rZTojMEQzMkIyO30KCQkuZDItMzk1OTU5MzU0MyAuc3Ryb2tlLUIye3N0cm9rZTojMEQzMkIyO30KCQkuZDItMzk1OTU5MzU0MyAuc3Ryb2tlLUIze3N0cm9rZTojRTNFOUZEO30KCQkuZDItMzk1OTU5MzU0MyAuc3Ryb2tlLUI0e3N0cm9rZTojRTNFOUZEO30KCQkuZDItMzk1OTU5MzU0MyAuc3Ryb2tlLUI1e3N0cm9rZTojRURGMEZEO30KCQkuZDItMzk1OTU5MzU0MyAuc3Ryb2tlLUI2e3N0cm9rZTojRjdGOEZFO30KCQkuZDItMzk1OTU5MzU0MyAuc3Ryb2tlLUFBMntzdHJva2U6IzRBNkZGMzt9CgkJLmQyLTM5NTk1OTM1NDMgLnN0cm9rZS1BQTR7c3Ryb2tlOiNFREYwRkQ7fQoJCS5kMi0zOTU5NTkzNTQzIC5zdHJva2UtQUE1e3N0cm9rZTojRjdGOEZFO30KCQkuZDItMzk1OTU5MzU0MyAuc3Ryb2tlLUFCNHtzdHJva2U6I0VERjBGRDt9CgkJLmQyLTM5NTk1OTM1NDMgLnN0cm9rZS1BQjV7c3Ryb2tlOiNGN0Y4RkU7fQoJCS5kMi0zOTU5NTkzNTQzIC5iYWNrZ3JvdW5kLWNvbG9yLU4xe2JhY2tncm91bmQtY29sb3I6IzBBMEYyNTt9CgkJLmQyLTM5NTk1OTM1NDMgLmJhY2tncm91bmQtY29sb3ItTjJ7YmFja2dyb3VuZC1jb2xvcjojNjc2QzdFO30KCQkuZDItMzk1OTU5MzU0MyAuYmFja2dyb3VuZC1jb2xvci1OM3tiYWNrZ3JvdW5kLWNvbG9yOiM5NDk5QUI7fQoJCS5kMi0zOTU5NTkzNTQzIC5iYWNrZ3JvdW5kLWNvbG9yLU40e2JhY2tncm91bmQtY29sb3I6I0NGRDJERDt9CgkJLmQyLTM5NTk1OTM1NDMgLmJhY2tncm91bmQtY29sb3ItTjV7YmFja2dyb3VuZC1jb2xvcjojREVFMUVCO30KCQkuZDItMzk1OTU5MzU0MyAuYmFja2dyb3VuZC1jb2xvci1ONntiYWNrZ3JvdW5kLWNvbG9yOiNFRUYxRjg7fQoJCS5kMi0zOTU5NTkzNTQzIC5iYWNrZ3JvdW5kLWNvbG9yLU43e2JhY2tncm91bmQtY29sb3I6I0ZGRkZGRjt9CgkJLmQyLTM5NTk1OTM1NDMgLmJhY2tncm91bmQtY29sb3ItQjF7YmFja2dyb3VuZC1jb2xvcjojMEQzMkIyO30KCQkuZDItMzk1OTU5MzU0MyAuYmFja2dyb3VuZC1jb2xvci1CMntiYWNrZ3JvdW5kLWNvbG9yOiMwRDMyQjI7fQoJCS5kMi0zOTU5NTkzNTQzIC5iYWNrZ3JvdW5kLWNvbG9yLUIze2JhY2tncm91bmQtY29sb3I6I0UzRTlGRDt9CgkJLmQyLTM5NTk1OTM1NDMgLmJhY2tncm91bmQtY29sb3ItQjR7YmFja2dyb3VuZC1jb2xvcjojRTNFOUZEO30KCQkuZDItMzk1OTU5MzU0MyAuYmFja2dyb3VuZC1jb2xvci1CNXtiYWNrZ3JvdW5kLWNvbG9yOiNFREYwRkQ7fQoJCS5kMi0zOTU5NTkzNTQzIC5iYWNrZ3JvdW5kLWNvbG9yLUI2e2JhY2tncm91bmQtY29sb3I6I0Y3RjhGRTt9CgkJLmQyLTM5NTk1OTM1NDMgLmJhY2tncm91bmQtY29sb3ItQUEye2JhY2tncm91bmQtY29sb3I6IzRBNkZGMzt9CgkJLmQyLTM5NTk1OTM1NDMgLmJhY2tncm91bmQtY29sb3ItQUE0e2JhY2tncm91bmQtY29sb3I6I0VERjBGRDt9CgkJLmQyLTM5NTk1OTM1NDMgLmJhY2tncm91bmQtY29sb3ItQUE1e2JhY2tncm91bmQtY29sb3I6I0Y3RjhGRTt9CgkJLmQyLTM5NTk1OTM1NDMgLmJhY2tncm91bmQtY29sb3ItQUI0e2JhY2tncm91bmQtY29sb3I6I0VERjBGRDt9CgkJLmQyLTM5NTk1OTM1NDMgLmJhY2tncm91bmQtY29sb3ItQUI1e2JhY2tncm91bmQtY29sb3I6I0Y3RjhGRTt9CgkJLmQyLTM5NTk1OTM1NDMgLmNvbG9yLU4xe2NvbG9yOiMwQTBGMjU7fQoJCS5kMi0zOTU5NTkzNTQzIC5jb2xvci1OMntjb2xvcjojNjc2QzdFO30KCQkuZDItMzk1OTU5MzU0MyAuY29sb3ItTjN7Y29sb3I6Izk0OTlBQjt9CgkJLmQyLTM5NTk1OTM1NDMgLmNvbG9yLU40e2NvbG9yOiNDRkQyREQ7fQoJCS5kMi0zOTU5NTkzNTQzIC5jb2xvci1ONXtjb2xvcjojREVFMUVCO30KCQkuZDItMzk1OTU5MzU0MyAuY29sb3ItTjZ7Y29sb3I6I0VFRjFGODt9CgkJLmQyLTM5NTk1OTM1NDMgLmNvbG9yLU43e2NvbG9yOiNGRkZGRkY7fQoJCS5kMi0zOTU5NTkzNTQzIC5jb2xvci1CMXtjb2xvcjojMEQzMkIyO30KCQkuZDItMzk1OTU5MzU0MyAuY29sb3ItQjJ7Y29sb3I6IzBEMzJCMjt9CgkJLmQyLTM5NTk1OTM1NDMgLmNvbG9yLUIze2NvbG9yOiNFM0U5RkQ7fQoJCS5kMi0zOTU5NTkzNTQzIC5jb2xvci1CNHtjb2xvcjojRTNFOUZEO30KCQkuZDItMzk1OTU5MzU0MyAuY29sb3ItQjV7Y29sb3I6I0VERjBGRDt9CgkJLmQyLTM5NTk1OTM1NDMgLmNvbG9yLUI2e2NvbG9yOiNGN0Y4RkU7fQoJCS5kMi0zOTU5NTkzNTQzIC5jb2xvci1BQTJ7Y29sb3I6IzRBNkZGMzt9CgkJLmQyLTM5NTk1OTM1NDMgLmNvbG9yLUFBNHtjb2xvcjojRURGMEZEO30KCQkuZDItMzk1OTU5MzU0MyAuY29sb3ItQUE1e2NvbG9yOiNGN0Y4RkU7fQoJCS5kMi0zOTU5NTkzNTQzIC5jb2xvci1BQjR7Y29sb3I6I0VERjBGRDt9CgkJLmQyLTM5NTk1OTM1NDMgLmNvbG9yLUFCNXtjb2xvcjojRjdGOEZFO30uYXBwZW5kaXggdGV4dC50ZXh0e2ZpbGw6IzBBMEYyNX0ubWR7LS1jb2xvci1mZy1kZWZhdWx0OiMwQTBGMjU7LS1jb2xvci1mZy1tdXRlZDojNjc2QzdFOy0tY29sb3ItZmctc3VidGxlOiM5NDk5QUI7LS1jb2xvci1jYW52YXMtZGVmYXVsdDojRkZGRkZGOy0tY29sb3ItY2FudmFzLXN1YnRsZTojRUVGMUY4Oy0tY29sb3ItYm9yZGVyLWRlZmF1bHQ6IzBEMzJCMjstLWNvbG9yLWJvcmRlci1tdXRlZDojMEQzMkIyOy0tY29sb3ItbmV1dHJhbC1tdXRlZDojRUVGMUY4Oy0tY29sb3ItYWNjZW50LWZnOiMwRDMyQjI7LS1jb2xvci1hY2NlbnQtZW1waGFzaXM6IzBEMzJCMjstLWNvbG9yLWF0dGVudGlvbi1zdWJ0bGU6IzY3NkM3RTstLWNvbG9yLWRhbmdlci1mZzpyZWQ7fS5za2V0Y2gtb3ZlcmxheS1CMXtmaWxsOnVybCgjc3RyZWFrcy1kYXJrZXItZDItMzk1OTU5MzU0Myk7bWl4LWJsZW5kLW1vZGU6bGlnaHRlbn0uc2tldGNoLW92ZXJsYXktQjJ7ZmlsbDp1cmwoI3N0cmVha3MtZGFya2VyLWQyLTM5NTk1OTM1NDMpO21peC1ibGVuZC1tb2RlOmxpZ2h0ZW59LnNrZXRjaC1vdmVybGF5LUIze2ZpbGw6dXJsKCNzdHJlYWtzLWJyaWdodC1kMi0zOTU5NTkzNTQzKTttaXgtYmxlbmQtbW9kZTpkYXJrZW59LnNrZXRjaC1vdmVybGF5LUI0e2ZpbGw6dXJsKCNzdHJlYWtzLWJyaWdodC1kMi0zOTU5NTkzNTQzKTttaXgtYmxlbmQtbW9kZTpkYXJrZW59LnNrZXRjaC1vdmVybGF5LUI1e2ZpbGw6dXJsKCNzdHJlYWtzLWJyaWdodC1kMi0zOTU5NTkzNTQzKTttaXgtYmxlbmQtbW9kZTpkYXJrZW59LnNrZXRjaC1vdmVybGF5LUI2e2ZpbGw6dXJsKCNzdHJlYWtzLWJyaWdodC1kMi0zOTU5NTkzNTQzKTttaXgtYmxlbmQtbW9kZTpkYXJrZW59LnNrZXRjaC1vdmVybGF5LUFBMntmaWxsOnVybCgjc3RyZWFrcy1kYXJrLWQyLTM5NTk1OTM1NDMpO21peC1ibGVuZC1tb2RlOm92ZXJsYXl9LnNrZXRjaC1vdmVybGF5LUFBNHtmaWxsOnVybCgjc3RyZWFrcy1icmlnaHQtZDItMzk1OTU5MzU0Myk7bWl4LWJsZW5kLW1vZGU6ZGFya2VufS5za2V0Y2gtb3ZlcmxheS1BQTV7ZmlsbDp1cmwoI3N0cmVha3MtYnJpZ2h0LWQyLTM5NTk1OTM1NDMpO21peC1ibGVuZC1tb2RlOmRhcmtlbn0uc2tldGNoLW92ZXJsYXktQUI0e2ZpbGw6dXJsKCNzdHJlYWtzLWJyaWdodC1kMi0zOTU5NTkzNTQzKTttaXgtYmxlbmQtbW9kZTpkYXJrZW59LnNrZXRjaC1vdmVybGF5LUFCNXtmaWxsOnVybCgjc3RyZWFrcy1icmlnaHQtZDItMzk1OTU5MzU0Myk7bWl4LWJsZW5kLW1vZGU6ZGFya2VufS5za2V0Y2gtb3ZlcmxheS1OMXtmaWxsOnVybCgjc3RyZWFrcy1kYXJrZXItZDItMzk1OTU5MzU0Myk7bWl4LWJsZW5kLW1vZGU6bGlnaHRlbn0uc2tldGNoLW92ZXJsYXktTjJ7ZmlsbDp1cmwoI3N0cmVha3MtZGFyay1kMi0zOTU5NTkzNTQzKTttaXgtYmxlbmQtbW9kZTpvdmVybGF5fS5za2V0Y2gtb3ZlcmxheS1OM3tmaWxsOnVybCgjc3RyZWFrcy1ub3JtYWwtZDItMzk1OTU5MzU0Myk7bWl4LWJsZW5kLW1vZGU6Y29sb3ItYnVybn0uc2tldGNoLW92ZXJsYXktTjR7ZmlsbDp1cmwoI3N0cmVha3Mtbm9ybWFsLWQyLTM5NTk1OTM1NDMpO21peC1ibGVuZC1tb2RlOmNvbG9yLWJ1cm59LnNrZXRjaC1vdmVybGF5LU41e2ZpbGw6dXJsKCNzdHJlYWtzLWJyaWdodC1kMi0zOTU5NTkzNTQzKTttaXgtYmxlbmQtbW9kZTpkYXJrZW59LnNrZXRjaC1vdmVybGF5LU42e2ZpbGw6dXJsKCNzdHJlYWtzLWJyaWdodC1kMi0zOTU5NTkzNTQzKTttaXgtYmxlbmQtbW9kZTpkYXJrZW59LnNrZXRjaC1vdmVybGF5LU43e2ZpbGw6dXJsKCNzdHJlYWtzLWJyaWdodC1kMi0zOTU5NTkzNTQzKTttaXgtYmxlbmQtbW9kZTpkYXJrZW59LmxpZ2h0LWNvZGV7ZGlzcGxheTogYmxvY2t9LmRhcmstY29kZXtkaXNwbGF5OiBub25lfV1dPjwvc3R5bGU+PGcgY2xhc3M9ImRtMD0iPjxnIGNsYXNzPSJzaGFwZSIgPjxyZWN0IHg9IjYyLjAwMDAwMCIgeT0iMC4wMDAwMDAiIHdpZHRoPSIzMTguMDAwMDAwIiBoZWlnaHQ9IjY2LjAwMDAwMCIgc3Ryb2tlPSIjMEQzMkIyIiBmaWxsPSIjRjdGOEZFIiBjbGFzcz0iIHN0cm9rZS1CMSBmaWxsLUI2IiBzdHlsZT0ic3Ryb2tlLXdpZHRoOjI7IiAvPjwvZz48dGV4dCB4PSIyMjEuMDAwMDAwIiB5PSIzOC41MDAwMDAiIGZpbGw9IiMwQTBGMjUiIGNsYXNzPSJ0ZXh0LWJvbGQgZmlsbC1OMSIgc3R5bGU9InRleHQtYW5jaG9yOm1pZGRsZTtmb250LXNpemU6MTZweCI+Vk0gY29sbGVjdG9yIHNhbXBsZXMgZXZlcnkgMzAgc2Vjb25kczwvdGV4dD48L2c+PGcgY2xhc3M9IloyRjBaWGRoZVE9PSI+PGcgY2xhc3M9InNoYXBlIiA+PHJlY3QgeD0iNzkuMDAwMDAwIiB5PSIxNjYuMDAwMDAwIiB3aWR0aD0iMjg0LjAwMDAwMCIgaGVpZ2h0PSI2Ni4wMDAwMDAiIHN0cm9rZT0iIzBEMzJCMiIgZmlsbD0iI0Y3RjhGRSIgY2xhc3M9IiBzdHJva2UtQjEgZmlsbC1CNiIgc3R5bGU9InN0cm9rZS13aWR0aDoyOyIgLz48L2c+PHRleHQgeD0iMjIxLjAwMDAwMCIgeT0iMjA0LjUwMDAwMCIgZmlsbD0iIzBBMEYyNSIgY2xhc3M9InRleHQtYm9sZCBmaWxsLU4xIiBzdHlsZT0idGV4dC1hbmNob3I6bWlkZGxlO2ZvbnQtc2l6ZToxNnB4Ij5HYXRld2F5IGNoZWNrcyB0aGUgcGVyLVZNIHRva2VuPC90ZXh0PjwvZz48ZyBjbGFzcz0iWVdkbiI+PGcgY2xhc3M9InNoYXBlIiA+PHJlY3QgeD0iMC4wMDAwMDAiIHk9IjMzMi4wMDAwMDAiIHdpZHRoPSI0NDEuMDAwMDAwIiBoZWlnaHQ9IjY2LjAwMDAwMCIgc3Ryb2tlPSIjMEQzMkIyIiBmaWxsPSIjRjdGOEZFIiBjbGFzcz0iIHN0cm9rZS1CMSBmaWxsLUI2IiBzdHlsZT0ic3Ryb2tlLXdpZHRoOjI7IiAvPjwvZz48dGV4dCB4PSIyMjAuNTAwMDAwIiB5PSIzNzAuNTAwMDAwIiBmaWxsPSIjMEEwRjI1IiBjbGFzcz0idGV4dC1ib2xkIGZpbGwtTjEiIHN0eWxlPSJ0ZXh0LWFuY2hvcjptaWRkbGU7Zm9udC1zaXplOjE2cHgiPkFnZ3JlZ2F0b3IgZGVkdXBlcyBzdGVwcyBhbmQgc3VtcyAxNSBtaW51dGUgd2luZG93czwvdGV4dD48L2c+PGcgY2xhc3M9ImMzUnlaV0Z0Ij48ZyBjbGFzcz0ic2hhcGUiID48cmVjdCB4PSI4OC4wMDAwMDAiIHk9IjQ5OC4wMDAwMDAiIHdpZHRoPSIyNjUuMDAwMDAwIiBoZWlnaHQ9IjY2LjAwMDAwMCIgc3Ryb2tlPSIjMEQzMkIyIiBmaWxsPSIjRjdGOEZFIiBjbGFzcz0iIHN0cm9rZS1CMSBmaWxsLUI2IiBzdHlsZT0ic3Ryb2tlLXdpZHRoOjI7IiAvPjwvZz48dGV4dCB4PSIyMjAuNTAwMDAwIiB5PSI1MzYuNTAwMDAwIiBmaWxsPSIjMEEwRjI1IiBjbGFzcz0idGV4dC1ib2xkIGZpbGwtTjEiIHN0eWxlPSJ0ZXh0LWFuY2hvcjptaWRkbGU7Zm9udC1zaXplOjE2cHgiPk9uZSByZWNvcmQgcGVyIG9yZyBwZXIgd2luZG93PC90ZXh0PjwvZz48ZyBjbGFzcz0iYkdWa1oyVnkiPjxnIGNsYXNzPSJzaGFwZSIgPjxyZWN0IHg9IjMzLjAwMDAwMCIgeT0iNjY0LjAwMDAwMCIgd2lkdGg9IjM3Ni4wMDAwMDAiIGhlaWdodD0iNjYuMDAwMDAwIiBzdHJva2U9IiMwRDMyQjIiIGZpbGw9IiNGN0Y4RkUiIGNsYXNzPSIgc3Ryb2tlLUIxIGZpbGwtQjYiIHN0eWxlPSJzdHJva2Utd2lkdGg6MjsiIC8+PC9nPjx0ZXh0IHg9IjIyMS4wMDAwMDAiIHk9IjcwMi41MDAwMDAiIGZpbGw9IiMwQTBGMjUiIGNsYXNzPSJ0ZXh0LWJvbGQgZmlsbC1OMSIgc3R5bGU9InRleHQtYW5jaG9yOm1pZGRsZTtmb250LXNpemU6MTZweCI+QmlsbGluZyBwcmljZXMgdGhlIHdpbmRvdyBhbmQgZGViaXRzIHRoZSBsZWRnZXI8L3RleHQ+PC9nPjxnIGNsYXNzPSJaR1Z3Ykc5NVpYST0iPjxnIGNsYXNzPSJzaGFwZSIgPjxyZWN0IHg9IjQ4LjAwMDAwMCIgeT0iODMwLjAwMDAwMCIgd2lkdGg9IjM0NS4wMDAwMDAiIGhlaWdodD0iNjYuMDAwMDAwIiBzdHJva2U9IiMwRDMyQjIiIGZpbGw9IiNGN0Y4RkUiIGNsYXNzPSIgc3Ryb2tlLUIxIGZpbGwtQjYiIHN0eWxlPSJzdHJva2Utd2lkdGg6MjsiIC8+PC9nPjx0ZXh0IHg9IjIyMC41MDAwMDAiIHk9Ijg2OC41MDAwMDAiIGZpbGw9IiMwQTBGMjUiIGNsYXNzPSJ0ZXh0LWJvbGQgZmlsbC1OMSIgc3R5bGU9InRleHQtYW5jaG9yOm1pZGRsZTtmb250LXNpemU6MTZweCI+RGVwbG95ZXIgcGF1c2VzIG9yIHJlc3VtZXMgdGhlIG9yZyYjMzk7cyBhcHBzPC90ZXh0PjwvZz48ZyBjbGFzcz0iS0hadElDMG1aM1E3SUdkaGRHVjNZWGtwV3pCZCI+PG1hcmtlciBpZD0ibWstZDItMzk1OTU5MzU0My0zNDg4Mzc4MTM0IiBtYXJrZXJXaWR0aD0iMTAuMDAwMDAwIiBtYXJrZXJIZWlnaHQ9IjEyLjAwMDAwMCIgcmVmWD0iNy4wMDAwMDAiIHJlZlk9IjYuMDAwMDAwIiB2aWV3Qm94PSIwLjAwMDAwMCAwLjAwMDAwMCAxMC4wMDAwMDAgMTIuMDAwMDAwIiBvcmllbnQ9ImF1dG8iIG1hcmtlclVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+IDxwb2x5Z29uIHBvaW50cz0iMC4wMDAwMDAsMC4wMDAwMDAgMTAuMDAwMDAwLDYuMDAwMDAwIDAuMDAwMDAwLDEyLjAwMDAwMCIgZmlsbD0iIzBEMzJCMiIgY2xhc3M9ImNvbm5lY3Rpb24gZmlsbC1CMSIgc3Ryb2tlLXdpZHRoPSIyIiAvPiA8L21hcmtlcj48cGF0aCBkPSJNIDIyMC41MDAwMDAgNjguMDAwMDAwIEMgMjIwLjUwMDAwMCAxMDYuMDAwMDAwIDIyMC41MDAwMDAgMTI2LjAwMDAwMCAyMjAuNTAwMDAwIDE2Mi4wMDAwMDAiIHN0cm9rZT0iIzBEMzJCMiIgZmlsbD0ibm9uZSIgY2xhc3M9ImNvbm5lY3Rpb24gc3Ryb2tlLUIxIiBzdHlsZT0ic3Ryb2tlLXdpZHRoOjI7IiBtYXJrZXItZW5kPSJ1cmwoI21rLWQyLTM5NTk1OTM1NDMtMzQ4ODM3ODEzNCkiIG1hc2s9InVybCgjZDItMzk1OTU5MzU0MykiIC8+PC9nPjxnIGNsYXNzPSJLR2RoZEdWM1lYa2dMU1puZERzZ1lXZG5LVnN3WFE9PSI+PHBhdGggZD0iTSAyMjAuNTAwMDAwIDIzNC4wMDAwMDAgQyAyMjAuNTAwMDAwIDI3Mi4wMDAwMDAgMjIwLjUwMDAwMCAyOTIuMDAwMDAwIDIyMC41MDAwMDAgMzI4LjAwMDAwMCIgc3Ryb2tlPSIjMEQzMkIyIiBmaWxsPSJub25lIiBjbGFzcz0iY29ubmVjdGlvbiBzdHJva2UtQjEiIHN0eWxlPSJzdHJva2Utd2lkdGg6MjsiIG1hcmtlci1lbmQ9InVybCgjbWstZDItMzk1OTU5MzU0My0zNDg4Mzc4MTM0KSIgbWFzaz0idXJsKCNkMi0zOTU5NTkzNTQzKSIgLz48L2c+PGcgY2xhc3M9IktHRm5aeUF0Sm1kME95QnpkSEpsWVcwcFd6QmQiPjxwYXRoIGQ9Ik0gMjIwLjUwMDAwMCA0MDAuMDAwMDAwIEMgMjIwLjUwMDAwMCA0MzguMDAwMDAwIDIyMC41MDAwMDAgNDU4LjAwMDAwMCAyMjAuNTAwMDAwIDQ5NC4wMDAwMDAiIHN0cm9rZT0iIzBEMzJCMiIgZmlsbD0ibm9uZSIgY2xhc3M9ImNvbm5lY3Rpb24gc3Ryb2tlLUIxIiBzdHlsZT0ic3Ryb2tlLXdpZHRoOjI7IiBtYXJrZXItZW5kPSJ1cmwoI21rLWQyLTM5NTk1OTM1NDMtMzQ4ODM3ODEzNCkiIG1hc2s9InVybCgjZDItMzk1OTU5MzU0MykiIC8+PC9nPjxnIGNsYXNzPSJLSE4wY21WaGJTQXRKbWQwT3lCc1pXUm5aWElwV3pCZCI+PHBhdGggZD0iTSAyMjAuNTAwMDAwIDU2Ni4wMDAwMDAgQyAyMjAuNTAwMDAwIDYwNC4wMDAwMDAgMjIwLjUwMDAwMCA2MjQuMDAwMDAwIDIyMC41MDAwMDAgNjYwLjAwMDAwMCIgc3Ryb2tlPSIjMEQzMkIyIiBmaWxsPSJub25lIiBjbGFzcz0iY29ubmVjdGlvbiBzdHJva2UtQjEiIHN0eWxlPSJzdHJva2Utd2lkdGg6MjsiIG1hcmtlci1lbmQ9InVybCgjbWstZDItMzk1OTU5MzU0My0zNDg4Mzc4MTM0KSIgbWFzaz0idXJsKCNkMi0zOTU5NTkzNTQzKSIgLz48L2c+PGcgY2xhc3M9IktHeGxaR2RsY2lBdEptZDBPeUJrWlhCc2IzbGxjaWxiTUYwPSI+PHBhdGggZD0iTSAyMjAuNTAwMDAwIDczMi4wMDAwMDAgQyAyMjAuNTAwMDAwIDc3MC4wMDAwMDAgMjIwLjUwMDAwMCA3OTAuMDAwMDAwIDIyMC41MDAwMDAgODI2LjAwMDAwMCIgc3Ryb2tlPSIjMEQzMkIyIiBmaWxsPSJub25lIiBjbGFzcz0iY29ubmVjdGlvbiBzdHJva2UtQjEiIHN0eWxlPSJzdHJva2Utd2lkdGg6MjsiIG1hcmtlci1lbmQ9InVybCgjbWstZDItMzk1OTU5MzU0My0zNDg4Mzc4MTM0KSIgbWFzaz0idXJsKCNkMi0zOTU5NTkzNTQzKSIgLz48L2c+PG1hc2sgaWQ9ImQyLTM5NTk1OTM1NDMiIG1hc2tVbml0cz0idXNlclNwYWNlT25Vc2UiIHg9Ii0xMDEiIHk9Ii0xMDEiIHdpZHRoPSI2NDMiIGhlaWdodD0iMTA5OCI+CjxyZWN0IHg9Ii0xMDEiIHk9Ii0xMDEiIHdpZHRoPSI2NDMiIGhlaWdodD0iMTA5OCIgZmlsbD0id2hpdGUiPjwvcmVjdD4KCjwvbWFzaz48L3N2Zz48L3N2Zz4K" alt="Architecture diagram" style={{maxWidth:"100%",height:"auto",display:"block",margin:"2em auto"}} />

Each hop owns one decision. The VM only measures. The aggregator only decides what counts. Billing only prices. That split is why a pricing change never needs a collector reinstall.

## A Window Closes on Server Time

A 15 minute window is not closed the moment it ends. It closes five minutes later, using the server's clock rather than the VM's. The delay lets late samples from the file queue arrive, and the server clock means a VM with a drifting clock cannot move a charge into a different window.

When the window closes, the aggregator hands billing exactly one record per organization per window. Billing prices that record at the rate-card version that was live at the end of the window. A price change made at noon therefore never reprices usage from 11:45.

We call this the server-time close: late data gets a fixed grace period, and after that the window is final.

## A Retry Can Never Charge Twice

Billing reads the stream in batches of 500 and [debits the ledger](https://zop.dev/resources/blogs/self-serve-billing-needed-an-immutable-price-record) under a key built from the organization and the window. That key is what makes a replay harmless: a record that arrives twice finds its key already committed and changes nothing.

| Situation | What the ledger does |
|---|---|
| Record delivered twice | Second debit finds the key and is a no-op |
| Worker dies before commit | Record is not acknowledged and is read again |
| Record fails 5 times | Moved to a dead-letter list for a person to inspect |
| Acknowledged | Only after the debit has committed |

This works when every record carries a stable organization and window. It stops protecting you the moment a record is built without them, which is why one record per organization per window is a hard rule rather than a convenience.

## Builds Are Held, Then Settled From the Real Job Time

A build cannot be priced until it ends, but it cannot be allowed to start with no credit either. So a build takes a hold up front. When the run finishes, the settler reads the build job's own timing from GitHub, commits the duration rounded up to whole minutes capped at the job timeout, and releases the hold in the same transaction.

Only builds that target a ZopCloud shared space are metered. A build for the customer's own cluster is dispatched unmetered. If the target space cannot be read, the dispatch fails before billing is even asked, so an unreadable target never turns into a free or a wrongly charged build.

## Pause, Don't Delete

Crossing zero, or topping up, emits a balance event. The deployer pauses or resumes that organization's apps and answers new deploys with a 402. The apps stop, but nothing is deleted: the worst outcome of an empty balance is a stopped app, not lost data.

Buying credit also needs billing details. A new [Billing details](https://zop.dev/resources/blogs/a-hardcoded-payment-callback-was-404ing-on-prod-all-along) drawer in ZopDay Settings → Billing collects legal name, address, country, state, and a GSTIN for India. Buying without a profile opens the drawer, and Save and continue to payment resumes the purchase. Signup credit is granted once per creator, so a fresh account is the only way to get the first ten dollars.
