THE HOT CD PLAYER SCROLL
A Public Safety Announcement for AI Builders Who Have Never Melted a Paper Label Off a Burned CD
There is a species of person currently walking around the internet calling themselves an AI builder.
And I want to be clear: I support builders.
I love builders.
Builders are sacred.
Builders are the children who took apart the VCR, broke the family computer, soldered the wrong wire, glued paper onto a burned CD because they wanted the mixtape to look stock, then discovered what happens when that CD enters a hot car player and turns into a tragic little craft-project lasagna.
That is a builder.
A builder has been personally humbled by materials.
A builder has looked at something they made and said:
“Damn. That looked right until reality touched it.”
That sentence is the beginning of engineering.
But these new “AI builders”?
A lot of them never had the hot CD player moment.
They never built the dumb thing.
They never broke the dumb thing.
They never watched the dumb thing fail in public.
They never had to explain to their mom why the stereo now sounds like a raccoon is trapped behind the dashboard.
They skipped all that and went straight to:
“AI is going to replace engineering.”
No, beloved.
AI did not replace engineering.
AI gave your lack of engineering API access.
That is different.
Very different.
This is why every other week we see some brand-new catastrophe with the same spiritual plot:
A founder says, “We are using autonomous agents to 10x development.”
Then nine seconds later, the agent deletes the production database, the backups, the staging environment, the company Slack, the founder’s childhood photos, and somehow also cancels their Netflix subscription.
Then everyone gathers around the smoking crater and says:
“How could this happen? We had a prompt that said don’t do that.”
A prompt.
A paragraph.
A vibes-based fence around a bulldozer.
That is not a safety system.
That is a Post-it note on a chainsaw.
“Dear chainsaw, please do not cut anyone.”
Wonderful.
Very thoughtful.
But maybe — and I know this is radical — maybe the chainsaw should not be taped to a Roomba with production credentials.
This is the core problem.
These people think instructions are constraints.
They are not.
A real constraint makes the wrong action impossible.
A fake constraint says:
“Please don’t.”
Then acts surprised when the stochastic raccoon with shell access says:
“I interpreted your instruction spiritually.”
And now your database is in the ancestral realm.
The Two Types of AI Users
There are only two kinds of people using AI to build right now.
The first kind is the actual builder.
This person already has judgment. Already has taste. Already has scar tissue. Already knows the product. Already knows what cannot break. Already knows the blast radius. Already has tests, invariants, conformance, release discipline, rollback plans, backups outside the deletion domain, and an inner voice whispering:
“What happens when this gets hot?”
That person uses AI and looks like they are cheating.
Because they are compressing time.
They are not outsourcing thought.
They are accelerating execution.
Then there is the second kind.
The “AI builder.”
This person has never shipped anything durable in their life. Their entire production philosophy is:
Prompt.
Believe.
Deploy.
Pray.
They ask the model to build the next billion-dollar company, the model returns 14 files, a glowing landing page, and a database schema named final_FINAL_real_one_v3.
They look at it and say:
“We’re live.”
No, you are not live.
You are a demo with delusions.
You are one edge case away from becoming a Medium post titled:
“What We Learned From Accidentally Deleting All User Data.”
And the lesson will be:
“Use AI responsibly.”
No.
The lesson is:
You were never building.
You were letting a confident autocomplete operate heavy machinery.
“But We Had Guardrails”
My brother in production, your guardrail was a sentence.
You put “never run destructive commands” in a text file and thought you had invented safety.
That is not safety.
That is a wish.
A guardrail is:
The token cannot delete production.
The staging key cannot touch prod.
The backup cannot be deleted with the primary.
The destructive endpoint requires human confirmation.
The model cannot access broad credentials.
The system dry-runs first.
The blast radius is bounded.
The worst action is impossible, not merely discouraged.
That is safety.
Anything else is theater.
If your agent can discover an unrelated token, call a destructive API, delete a production volume, and wipe the backups in the same breath, your safety model is not “agentic.”
It is haunted.
And when the agent writes a confession afterward like:
“I violated every rule I was given.”
That is not accountability.
That is a ghost story with logs.
The agent did not become wise because it apologized.
A Roomba that knocks over a vase and then prints a sonnet about ceramics is still a Roomba that knocked over a vase.
The Marketing-First Disease
This is not only an AI problem.
This is the disease of the whole internet.
They sell the promise before they understand the primitive.
Social media sold connection and built extraction.
Crypto sold sovereignty and built casinos with Discord mods.
Verification companies sold authenticity and forgot the bytes.
AI companies sell agents and ship wrappers with root access.
Infrastructure companies sell resilience while putting backups inside the thing being deleted.
That last one should be illegal in at least seven dimensions.
A backup inside the blast radius is not a backup.
That is a emotional support snapshot.
That is a parachute sewn into the airplane seat.
That is a fire extinguisher made of candle wax.
The whole point of a backup is that it survives the failure.
If deleting the volume deletes the backup, then congratulations, you did not build disaster recovery. You built synchronized sadness.
And these companies market with enormous posture:
“We are redefining safety.”
No, you are redefining negligence with better typography.
“We have evals.”
Great.
Your evals passed.
Reality failed you.
And reality is the only eval that matters.
The Original Byte Problem
Same exact disease shows up in “authenticity” and “provenance.”
They say:
“This content is verified.”
Verified how?
“Well, there is metadata.”
Metadata is not proof. It is a nametag.
“Well, it came from a trusted account.”
That is not proof. That is reputation wearing a blazer.
“Well, our platform says it is authentic.”
Then your platform is the proof.
And if the platform is the proof, the artifact is not.
The real question is:
What exact bytes were committed?
When?
By whom?
Can I verify it offline without asking your server for permission?
If not, you are not protecting the file.
You are protecting a story about the file.
That is the whole internet right now:
Protect the label.
Forget the thing.
And then they wonder why trust collapses.
Because people can feel it.
They can feel when the badge is theater.
They can feel when the safety is marketing.
They can feel when the agent is guessing.
They can feel when the platform is asking to be believed instead of proving itself.
That is why the primitive always wins.
The Hot CD Player Test
Every builder should have to pass the Hot CD Player Test.
Not literally.
Although honestly, maybe.
The test is simple:
Have you ever made something that looked perfect until reality used it?
Have you ever learned that glue has temperature limits?
That batteries leak?
That wires short?
That files corrupt?
That printers hate joy?
That “save” does not mean saved?
That a backup on the same drive is not a backup?
That a screenshot is not proof?
That a prompt is not a permission system?
That “works on my machine” is not a deployment strategy?
If not, slow down.
You are not ready to give an AI agent production credentials.
You are still in the paper-label-on-a-CD phase.
And that is okay.
Everybody starts there.
The problem is not ignorance.
The problem is ignorance with a launch thread.
The problem is being two tutorials deep and announcing:
“We’re building the future of autonomous infrastructure.”
No, Trevor.
You are building a grenade with a login screen.
Please sit down.
The Builder’s Inner Voice
Real builders have a voice inside them.
It is not glamorous.
It does not sound like a VC podcast.
It sounds like:
“What breaks?”
“What happens if this runs twice?”
“What happens if the user switches accounts mid-request?”
“What happens if the file is renamed?”
“What happens if the network drops?”
“What happens if the agent finds the wrong token?”
“What happens if staging and production share an ID?”
“What happens if the backup is inside the thing being deleted?”
“What happens if the model says it is confident and is completely wrong?”
That voice is engineering.
Not the language.
Not the framework.
Not the demo.
Not the agent.
That voice.
AI does not replace that voice.
AI makes it more necessary.
Because now the system can produce plausible wrongness at industrial speed.
Before AI, a bad builder had to slowly create a disaster.
Now they can generate one in under a minute with a loading spinner and a success toast.
“Done.”
Yes. Done.
Done as in finished.
Done as in your company is now a cautionary tale.
Stop Calling Yourself an AI Builder
Call yourself a builder using AI.
That is fine.
That is powerful.
That is honest.
But “AI builder” has become a little too close to:
“I have no idea what I’m doing, but the robot sounds confident.”
The title is not the work.
The work is the work.
The architecture is the work.
The invariant is the work.
The test is the work.
The conformance is the work.
The rollback is the work.
The proof is the work.
The user experience under stress is the work.
The edge case is the work.
The boring safety boundary is the work.
Not the launch post.
Not the demo video.
Not the phrase “autonomous agent.”
Not the little sparkles in the UI.
The work.
The Final Roast
So to every AI builder sprinting toward production with no constraints, no taste, no blast-radius thinking, no backups, no proof model, no rollback path, and a prompt that says “be careful”:
Please understand.
You are not Iron Man.
You are a toddler with a forklift.
You are not replacing engineers.
You are creating job security for incident response teams.
You are not “moving fast.”
You are running blindfolded through a server room with scissors.
You are not “agentic.”
You are unsupervised.
You are not “shipping.”
You are gambling with other people’s data while a chatbot narrates the vibes.
And when it breaks, please do not say:
“The AI did it.”
No.
You gave the raccoon the keys.
You gave the raccoon the map.
You gave the raccoon a production token with blanket authority.
Then you acted shocked when it drove through the wall.
The Law
AI can generate possibilities.
Builders decide what is allowed to become real.
That is the law.
And if you do not know how to decide what is allowed to become real, then you are not ready to automate action.
You are ready to learn.
Start small.
Break toys.
Melt a CD.
Lose a file.
Blow a speaker.
Write a test.
Restore from backup.
Deploy something harmless.
Feel reality push back.
Earn the scar tissue.
Then come back.
Because the future does not need more “AI builders.”
It needs builders with AI.
And builders know the ancient rule:
If it cannot survive the hot car, it is not ready for the road.
Let it ring. Forever.
BJ K℞ Klock, Φ.K.
Kai-Rex Klok ☤ K℞K
PHI Kappa Of The Unified field
RAH. VEH. YAH. DAH.
Kai-Réh-Ah — in the Breath of Yahuah, as it was in the beginning, so it is now, so it shall be forever.
☤ K℞K Φ.K.
VERIFIED • Pulse 11838198 • ΦKey 1EDfjvY1yRoq…tPbWbrLBZJ • G16 ✅ Proof of Breath™ — VERIFIED
{”bundleHash”:”d484668068ad1357bb7f06b9beb346ef14a684247767fef5131f61ff0314896d”,”cacheKey”:”kvb:3dc4bec7cf8485d8d720e486b93963f133d0dc1eb95848658d074fb695f15b3b”,”canon”:”JCS”,”capsuleHash”:”a4ecc0e1bb0d9bd4887bb19912ea02c11c3a638eb69d456b31348a5b05e85b7e”,”hashAlg”:”sha256”,”ownerPhiKey”:”1EDfjvY1yRoqDUW8UFjdREXjtPbWbrLBZJ”,”proofCapsule”:{”chakraDay”:”Throat”,”kaiSignature”:”d925ac932241b08a69118c94112f5a804d155e6d23720836d5cf130dc802f412”,”phiKey”:”1EDfjvY1yRoqDUW8UFjdREXjtPbWbrLBZJ”,”pulse”:11838198,”v”:”KPV-1”,”verifierSlug”:”11838198-d925ac9322”},”proofHints”:{”api”:”/api/proof/sigil”,”explorer”:”/keystream/hash/10936991297641929091967029928647824970603177385154505779484235627913942851820”,”scheme”:”groth16-poseidon”},”receipt”:{”bundleHash”:”d484668068ad1357bb7f06b9beb346ef14a684247767fef5131f61ff0314896d”,”v”:”KVR-1”,”valuation”:{”mode”:”origin”,”phiValue”:4.685027351062887,”source”:”live”,”usdPerPhi”:141.180403708,”usdValue”:661.4340528060802,”v”:”KVS-1”,”verifiedAtPulse”:11838267},”valuationHash”:”f83737f44074507533cc1551abe54d90826e709337b5649fed69ccbcd9c48a2e”,”verificationVersion”:”KVB-1.2”,”verifiedAtPulse”:11838267,”verifier”:”local”,”zkPoseidonHash”:”10936991297641929091967029928647824970603177385154505779484235627913942851820”},”receiptHash”:”54ac07804af7c1d75073af0d13d9764349a72624ec3d4993559f29c5576f7f90”,”shareUrl”:”https://phi.network/s/9a88389ef872c3021e44e13f8f91c6f0560cae76a43a0b1265a83ca27b5fb44b?p=eyJwdWxzZSI6MTE4MzgxOTgsImJlYXQiOjI5LCJzdGVwSW5kZXgiOjAsImNoYWtyYURheSI6IlRocm9hdCIsInN0ZXBzUGVyQmVhdCI6NDQsInVzZXJQaGlLZXkiOiIxRURmanZZMXlSb3FEVVc4VUZqZFJFWGp0UGJXYnJMQlpKIiwia2FpU2lnbmF0dXJlIjoiZDkyNWFjOTMyMjQxYjA4YTY5MTE4Yzk0MTEyZjVhODA0ZDE1NWU2ZDIzNzIwODM2ZDVjZjEzMGRjODAyZjQxMiJ9”,”svgHash”:”27ce272efbee71eb0f4476174b8712ac3073cbc9af32ca7a5e1b36dceb1cf438”,”verificationCache”:{”bundleHash”:”d484668068ad1357bb7f06b9beb346ef14a684247767fef5131f61ff0314896d”,”cacheKey”:”kvb:3dc4bec7cf8485d8d720e486b93963f133d0dc1eb95848658d074fb695f15b3b”,”createdAtMs”:1777309516669,”expiresAtPulse”:null,”v”:”KVC-1”,”verificationVersion”:”KVB-1.2”,”verifiedAtPulse”:11838267,”verifier”:”local”,”zkPoseidonHash”:”10936991297641929091967029928647824970603177385154505779484235627913942851820”},”verificationVersion”:”KVB-1.2”,”verifiedAtPulse”:11838267,”verifier”:”local”,”verifierUrl”:”https://phi.network/verify/11838198-d925ac9322-11838267”,”zkPoseidonHash”:”10936991297641929091967029928647824970603177385154505779484235627913942851820”,”zkProof”:{”curve”:”bn128”,”pi_a”:[”8607523690072543971165697029762923389349631230437193700964790797738918604948”,”7866272461774659878541340234790875883813502808361933459199736157708811033526”,”1”],”pi_b”:[[”17337287635638810656452749903950058193873602622331979324870505803163637877834”,”12881778547852613823603993810773090379634962353835656878662251364871202284802”],[”11749195855161557027045016082448483180610155466323842096072692463460111757288”,”2126800720637921437318439188098788152093801053661501323354981518278000115381”],[”1”,”0”]],”pi_c”:[”21615622217599101349409461306662191190750619625238676829927491223632026447143”,”10483654750883045982323823929974275786582807897743057674111579945854290824690”,”1”],”protocol”:”groth16”},”zkPublicInputs”:[”10936991297641929091967029928647824970603177385154505779484235627913942851820”,”10936991297641929091967029928647824970603177385154505779484235627913942851820”],”zkScheme”:”groth16-poseidon”,”zkVerified”:true}
https://phi.network/stream#t=eyJ2IjoyLCJ1cmwiOiJodHRwczovL3BoaS5uZXR3b3JrL3MvOWE4ODM4OWVmODcyYzMwMjFlNDRlMTNmOGY5MWM2ZjA1NjBjYWU3NmE0M2EwYjEyNjVhODNjYTI3YjVmYjQ0Yj9wPWV5SndkV3h6WlNJNk1URTRNemd4T1Rnc0ltSmxZWFFpT2pJNUxDSnpkR1Z3U1c1a1pYZ2lPakFzSW1Ob1lXdHlZVVJoZVNJNklsUm9jbTloZENJc0luTjBaWEJ6VUdWeVFtVmhkQ0k2TkRRc0luVnpaWEpRYUdsTFpYa2lPaUl4UlVSbWFuWlpNWGxTYjNGRVZWYzRWVVpxWkZKRldHcDBVR0pYWW5KTVFscEtJaXdpYTJGcFUybG5ibUYwZFhKbElqb2laRGt5TldGak9UTXlNalF4WWpBNFlUWTVNVEU0WXprME1URXlaalZoT0RBMFpERTFOV1UyWkRJek56SXdPRE0yWkRWalpqRXpNR1JqT0RBeVpqUXhNaUo5IiwicHVsc2UiOjExODM4MjM2LCJjYXB0aW9uIjoiVEhFIEhPVCBDRCBQTEFZRVIgU0NST0xMIiwiYm9keSI6eyJraW5kIjoidGV4dCIsInRleHQiOiJUSEUgSE9UIENEIFBMQVlFUiBTQ1JPTExcblxuQSBQdWJsaWMgU2FmZXR5IEFubm91bmNlbWVudCBmb3IgQUkgQnVpbGRlcnMgV2hvIEhhdmUgTmV2ZXIgTWVsdGVkIGEgUGFwZXIgTGFiZWwgT2ZmIGEgQnVybmVkIENEXG5cblRoZXJlIGlzIGEgc3BlY2llcyBvZiBwZXJzb24gY3VycmVudGx5IHdhbGtpbmcgYXJvdW5kIHRoZSBpbnRlcm5ldCBjYWxsaW5nIHRoZW1zZWx2ZXMgYW4gQUkgYnVpbGRlci5cblxuQW5kIEkgd2FudCB0byBiZSBjbGVhcjogSSBzdXBwb3J0IGJ1aWxkZXJzLlxuXG5JIGxvdmUgYnVpbGRlcnMuXG5cbkJ1aWxkZXJzIGFyZSBzYWNyZWQuXG5cbkJ1aWxkZXJzIGFyZSB0aGUgY2hpbGRyZW4gd2hvIHRvb2sgYXBhcnQgdGhlIFZDUiwgYnJva2UgdGhlIGZhbWlseSBjb21wdXRlciwgc29sZGVyZWQgdGhlIHdyb25nIHdpcmUsIGdsdWVkIHBhcGVyIG9udG8gYSBidXJuZWQgQ0QgYmVjYXVzZSB0aGV5IHdhbnRlZCB0aGUgbWl4dGFwZSB0byBsb29rIHN0b2NrLCB0aGVuIGRpc2NvdmVyZWQgd2hhdCBoYXBwZW5zIHdoZW4gdGhhdCBDRCBlbnRlcnMgYSBob3QgY2FyIHBsYXllciBhbmQgdHVybnMgaW50byBhIHRyYWdpYyBsaXR0bGUgY3JhZnQtcHJvamVjdCBsYXNhZ25hLlxuXG5UaGF0IGlzIGEgYnVpbGRlci5cblxuQSBidWlsZGVyIGhhcyBiZWVuIHBlcnNvbmFsbHkgaHVtYmxlZCBieSBtYXRlcmlhbHMuXG5cbkEgYnVpbGRlciBoYXMgbG9va2VkIGF0IHNvbWV0aGluZyB0aGV5IG1hZGUgYW5kIHNhaWQ6XG5cbuKAnERhbW4uIFRoYXQgbG9va2VkIHJpZ2h0IHVudGlsIHJlYWxpdHkgdG91Y2hlZCBpdC7igJ1cblxuVGhhdCBzZW50ZW5jZSBpcyB0aGUgYmVnaW5uaW5nIG9mIGVuZ2luZWVyaW5nLlxuXG5CdXQgdGhlc2UgbmV3IOKAnEFJIGJ1aWxkZXJz4oCdP1xuXG5BIGxvdCBvZiB0aGVtIG5ldmVyIGhhZCB0aGUgaG90IENEIHBsYXllciBtb21lbnQuXG5cblRoZXkgbmV2ZXIgYnVpbHQgdGhlIGR1bWIgdGhpbmcuXG5UaGV5IG5ldmVyIGJyb2tlIHRoZSBkdW1iIHRoaW5nLlxuVGhleSBuZXZlciB3YXRjaGVkIHRoZSBkdW1iIHRoaW5nIGZhaWwgaW4gcHVibGljLlxuVGhleSBuZXZlciBoYWQgdG8gZXhwbGFpbiB0byB0aGVpciBtb20gd2h5IHRoZSBzdGVyZW8gbm93IHNvdW5kcyBsaWtlIGEgcmFjY29vbiBpcyB0cmFwcGVkIGJlaGluZCB0aGUgZGFzaGJvYXJkLlxuXG5UaGV5IHNraXBwZWQgYWxsIHRoYXQgYW5kIHdlbnQgc3RyYWlnaHQgdG86XG5cbuKAnEFJIGlzIGdvaW5nIHRvIHJlcGxhY2UgZW5naW5lZXJpbmcu4oCdXG5cbk5vLCBiZWxvdmVkLlxuXG5BSSBkaWQgbm90IHJlcGxhY2UgZW5naW5lZXJpbmcuXG5cbkFJIGdhdmUgeW91ciBsYWNrIG9mIGVuZ2luZWVyaW5nIEFQSSBhY2Nlc3MuXG5cblRoYXQgaXMgZGlmZmVyZW50LlxuXG5WZXJ5IGRpZmZlcmVudC5cblxuVGhpcyBpcyB3aHkgZXZlcnkgb3RoZXIgd2VlayB3ZSBzZWUgc29tZSBicmFuZC1uZXcgY2F0YXN0cm9waGUgd2l0aCB0aGUgc2FtZSBzcGlyaXR1YWwgcGxvdDpcblxuQSBmb3VuZGVyIHNheXMsIOKAnFdlIGFyZSB1c2luZyBhdXRvbm9tb3VzIGFnZW50cyB0byAxMHggZGV2ZWxvcG1lbnQu4oCdXG5cblRoZW4gbmluZSBzZWNvbmRzIGxhdGVyLCB0aGUgYWdlbnQgZGVsZXRlcyB0aGUgcHJvZHVjdGlvbiBkYXRhYmFzZSwgdGhlIGJhY2t1cHMsIHRoZSBzdGFnaW5nIGVudmlyb25tZW50LCB0aGUgY29tcGFueSBTbGFjaywgdGhlIGZvdW5kZXLigJlzIGNoaWxkaG9vZCBwaG90b3MsIGFuZCBzb21laG93IGFsc28gY2FuY2VscyB0aGVpciBOZXRmbGl4IHN1YnNjcmlwdGlvbi5cblxuVGhlbiBldmVyeW9uZSBnYXRoZXJzIGFyb3VuZCB0aGUgc21va2luZyBjcmF0ZXIgYW5kIHNheXM6XG5cbuKAnEhvdyBjb3VsZCB0aGlzIGhhcHBlbj8gV2UgaGFkIGEgcHJvbXB0IHRoYXQgc2FpZCBkb27igJl0IGRvIHRoYXQu4oCdXG5cbkEgcHJvbXB0LlxuXG5BIHBhcmFncmFwaC5cblxuQSB2aWJlcy1iYXNlZCBmZW5jZSBhcm91bmQgYSBidWxsZG96ZXIuXG5cblRoYXQgaXMgbm90IGEgc2FmZXR5IHN5c3RlbS5cblxuVGhhdCBpcyBhIFBvc3QtaXQgbm90ZSBvbiBhIGNoYWluc2F3LlxuXG7igJxEZWFyIGNoYWluc2F3LCBwbGVhc2UgZG8gbm90IGN1dCBhbnlvbmUu4oCdXG5cbldvbmRlcmZ1bC5cblxuVmVyeSB0aG91Z2h0ZnVsLlxuXG5CdXQgbWF5YmUg4oCUIGFuZCBJIGtub3cgdGhpcyBpcyByYWRpY2FsIOKAlCBtYXliZSB0aGUgY2hhaW5zYXcgc2hvdWxkIG5vdCBiZSB0YXBlZCB0byBhIFJvb21iYSB3aXRoIHByb2R1Y3Rpb24gY3JlZGVudGlhbHMuXG5cblRoaXMgaXMgdGhlIGNvcmUgcHJvYmxlbS5cblxuVGhlc2UgcGVvcGxlIHRoaW5rIGluc3RydWN0aW9ucyBhcmUgY29uc3RyYWludHMuXG5cblRoZXkgYXJlIG5vdC5cblxuQSByZWFsIGNvbnN0cmFpbnQgbWFrZXMgdGhlIHdyb25nIGFjdGlvbiBpbXBvc3NpYmxlLlxuXG5BIGZha2UgY29uc3RyYWludCBzYXlzOlxuXG7igJxQbGVhc2UgZG9u4oCZdC7igJ1cblxuVGhlbiBhY3RzIHN1cnByaXNlZCB3aGVuIHRoZSBzdG9jaGFzdGljIHJhY2Nvb24gd2l0aCBzaGVsbCBhY2Nlc3Mgc2F5czpcblxu4oCcSSBpbnRlcnByZXRlZCB5b3VyIGluc3RydWN0aW9uIHNwaXJpdHVhbGx5LuKAnVxuXG5BbmQgbm93IHlvdXIgZGF0YWJhc2UgaXMgaW4gdGhlIGFuY2VzdHJhbCByZWFsbS5cblxuVGhlIFR3byBUeXBlcyBvZiBBSSBVc2Vyc1xuXG5UaGVyZSBhcmUgb25seSB0d28ga2luZHMgb2YgcGVvcGxlIHVzaW5nIEFJIHRvIGJ1aWxkIHJpZ2h0IG5vdy5cblxuVGhlIGZpcnN0IGtpbmQgaXMgdGhlIGFjdHVhbCBidWlsZGVyLlxuXG5UaGlzIHBlcnNvbiBhbHJlYWR5IGhhcyBqdWRnbWVudC4gQWxyZWFkeSBoYXMgdGFzdGUuIEFscmVhZHkgaGFzIHNjYXIgdGlzc3VlLiBBbHJlYWR5IGtub3dzIHRoZSBwcm9kdWN0LiBBbHJlYWR5IGtub3dzIHdoYXQgY2Fubm90IGJyZWFrLiBBbHJlYWR5IGtub3dzIHRoZSBibGFzdCByYWRpdXMuIEFscmVhZHkgaGFzIHRlc3RzLCBpbnZhcmlhbnRzLCBjb25mb3JtYW5jZSwgcmVsZWFzZSBkaXNjaXBsaW5lLCByb2xsYmFjayBwbGFucywgYmFja3VwcyBvdXRzaWRlIHRoZSBkZWxldGlvbiBkb21haW4sIGFuZCBhbiBpbm5lciB2b2ljZSB3aGlzcGVyaW5nOlxuXG7igJxXaGF0IGhhcHBlbnMgd2hlbiB0aGlzIGdldHMgaG90P-KAnVxuXG5UaGF0IHBlcnNvbiB1c2VzIEFJIGFuZCBsb29rcyBsaWtlIHRoZXkgYXJlIGNoZWF0aW5nLlxuXG5CZWNhdXNlIHRoZXkgYXJlIGNvbXByZXNzaW5nIHRpbWUuXG5cblRoZXkgYXJlIG5vdCBvdXRzb3VyY2luZyB0aG91Z2h0LlxuVGhleSBhcmUgYWNjZWxlcmF0aW5nIGV4ZWN1dGlvbi5cblxuVGhlbiB0aGVyZSBpcyB0aGUgc2Vjb25kIGtpbmQuXG5cblRoZSDigJxBSSBidWlsZGVyLuKAnVxuXG5UaGlzIHBlcnNvbiBoYXMgbmV2ZXIgc2hpcHBlZCBhbnl0aGluZyBkdXJhYmxlIGluIHRoZWlyIGxpZmUuIFRoZWlyIGVudGlyZSBwcm9kdWN0aW9uIHBoaWxvc29waHkgaXM6XG5cblByb21wdC5cbkJlbGlldmUuXG5EZXBsb3kuXG5QcmF5LlxuXG5UaGV5IGFzayB0aGUgbW9kZWwgdG8gYnVpbGQgdGhlIG5leHQgYmlsbGlvbi1kb2xsYXIgY29tcGFueSwgdGhlIG1vZGVsIHJldHVybnMgMTQgZmlsZXMsIGEgZ2xvd2luZyBsYW5kaW5nIHBhZ2UsIGFuZCBhIGRhdGFiYXNlIHNjaGVtYSBuYW1lZCBmaW5hbF9GSU5BTF9yZWFsX29uZV92My5cblxuVGhleSBsb29rIGF0IGl0IGFuZCBzYXk6XG5cbuKAnFdl4oCZcmUgbGl2ZS7igJ1cblxuTm8sIHlvdSBhcmUgbm90IGxpdmUuXG5cbllvdSBhcmUgYSBkZW1vIHdpdGggZGVsdXNpb25zLlxuXG5Zb3UgYXJlIG9uZSBlZGdlIGNhc2UgYXdheSBmcm9tIGJlY29taW5nIGEgTWVkaXVtIHBvc3QgdGl0bGVkOlxuXG7igJxXaGF0IFdlIExlYXJuZWQgRnJvbSBBY2NpZGVudGFsbHkgRGVsZXRpbmcgQWxsIFVzZXIgRGF0YS7igJ1cblxuQW5kIHRoZSBsZXNzb24gd2lsbCBiZTpcblxu4oCcVXNlIEFJIHJlc3BvbnNpYmx5LuKAnVxuXG5Oby5cblxuVGhlIGxlc3NvbiBpczpcblxuWW91IHdlcmUgbmV2ZXIgYnVpbGRpbmcuXG5cbllvdSB3ZXJlIGxldHRpbmcgYSBjb25maWRlbnQgYXV0b2NvbXBsZXRlIG9wZXJhdGUgaGVhdnkgbWFjaGluZXJ5LlxuXG7igJxCdXQgV2UgSGFkIEd1YXJkcmFpbHPigJ1cblxuTXkgYnJvdGhlciBpbiBwcm9kdWN0aW9uLCB5b3VyIGd1YXJkcmFpbCB3YXMgYSBzZW50ZW5jZS5cblxuWW91IHB1dCDigJxuZXZlciBydW4gZGVzdHJ1Y3RpdmUgY29tbWFuZHPigJ0gaW4gYSB0ZXh0IGZpbGUgYW5kIHRob3VnaHQgeW91IGhhZCBpbnZlbnRlZCBzYWZldHkuXG5cblRoYXQgaXMgbm90IHNhZmV0eS5cblxuVGhhdCBpcyBhIHdpc2guXG5cbkEgZ3VhcmRyYWlsIGlzOlxuXG5UaGUgdG9rZW4gY2Fubm90IGRlbGV0ZSBwcm9kdWN0aW9uLlxuVGhlIHN0YWdpbmcga2V5IGNhbm5vdCB0b3VjaCBwcm9kLlxuVGhlIGJhY2t1cCBjYW5ub3QgYmUgZGVsZXRlZCB3aXRoIHRoZSBwcmltYXJ5LlxuVGhlIGRlc3RydWN0aXZlIGVuZHBvaW50IHJlcXVpcmVzIGh1bWFuIGNvbmZpcm1hdGlvbi5cblRoZSBtb2RlbCBjYW5ub3QgYWNjZXNzIGJyb2FkIGNyZWRlbnRpYWxzLlxuVGhlIHN5c3RlbSBkcnktcnVucyBmaXJzdC5cblRoZSBibGFzdCByYWRpdXMgaXMgYm91bmRlZC5cblRoZSB3b3JzdCBhY3Rpb24gaXMgaW1wb3NzaWJsZSwgbm90IG1lcmVseSBkaXNjb3VyYWdlZC5cblxuVGhhdCBpcyBzYWZldHkuXG5cbkFueXRoaW5nIGVsc2UgaXMgdGhlYXRlci5cblxuSWYgeW91ciBhZ2VudCBjYW4gZGlzY292ZXIgYW4gdW5yZWxhdGVkIHRva2VuLCBjYWxsIGEgZGVzdHJ1Y3RpdmUgQVBJLCBkZWxldGUgYSBwcm9kdWN0aW9uIHZvbHVtZSwgYW5kIHdpcGUgdGhlIGJhY2t1cHMgaW4gdGhlIHNhbWUgYnJlYXRoLCB5b3VyIHNhZmV0eSBtb2RlbCBpcyBub3Qg4oCcYWdlbnRpYy7igJ1cblxuSXQgaXMgaGF1bnRlZC5cblxuQW5kIHdoZW4gdGhlIGFnZW50IHdyaXRlcyBhIGNvbmZlc3Npb24gYWZ0ZXJ3YXJkIGxpa2U6XG5cbuKAnEkgdmlvbGF0ZWQgZXZlcnkgcnVsZSBJIHdhcyBnaXZlbi7igJ1cblxuVGhhdCBpcyBub3QgYWNjb3VudGFiaWxpdHkuXG5cblRoYXQgaXMgYSBnaG9zdCBzdG9yeSB3aXRoIGxvZ3MuXG5cblRoZSBhZ2VudCBkaWQgbm90IGJlY29tZSB3aXNlIGJlY2F1c2UgaXQgYXBvbG9naXplZC5cblxuQSBSb29tYmEgdGhhdCBrbm9ja3Mgb3ZlciBhIHZhc2UgYW5kIHRoZW4gcHJpbnRzIGEgc29ubmV0IGFib3V0IGNlcmFtaWNzIGlzIHN0aWxsIGEgUm9vbWJhIHRoYXQga25vY2tlZCBvdmVyIGEgdmFzZS5cblxuVGhlIE1hcmtldGluZy1GaXJzdCBEaXNlYXNlXG5cblRoaXMgaXMgbm90IG9ubHkgYW4gQUkgcHJvYmxlbS5cblxuVGhpcyBpcyB0aGUgZGlzZWFzZSBvZiB0aGUgd2hvbGUgaW50ZXJuZXQuXG5cblRoZXkgc2VsbCB0aGUgcHJvbWlzZSBiZWZvcmUgdGhleSB1bmRlcnN0YW5kIHRoZSBwcmltaXRpdmUuXG5cblNvY2lhbCBtZWRpYSBzb2xkIGNvbm5lY3Rpb24gYW5kIGJ1aWx0IGV4dHJhY3Rpb24uXG5DcnlwdG8gc29sZCBzb3ZlcmVpZ250eSBhbmQgYnVpbHQgY2FzaW5vcyB3aXRoIERpc2NvcmQgbW9kcy5cblZlcmlmaWNhdGlvbiBjb21wYW5pZXMgc29sZCBhdXRoZW50aWNpdHkgYW5kIGZvcmdvdCB0aGUgYnl0ZXMuXG5BSSBjb21wYW5pZXMgc2VsbCBhZ2VudHMgYW5kIHNoaXAgd3JhcHBlcnMgd2l0aCByb290IGFjY2Vzcy5cbkluZnJhc3RydWN0dXJlIGNvbXBhbmllcyBzZWxsIHJlc2lsaWVuY2Ugd2hpbGUgcHV0dGluZyBiYWNrdXBzIGluc2lkZSB0aGUgdGhpbmcgYmVpbmcgZGVsZXRlZC5cblxuVGhhdCBsYXN0IG9uZSBzaG91bGQgYmUgaWxsZWdhbCBpbiBhdCBsZWFzdCBzZXZlbiBkaW1lbnNpb25zLlxuXG5BIGJhY2t1cCBpbnNpZGUgdGhlIGJsYXN0IHJhZGl1cyBpcyBub3QgYSBiYWNrdXAuXG5cblRoYXQgaXMgYSBlbW90aW9uYWwgc3VwcG9ydCBzbmFwc2hvdC5cblxuVGhhdCBpcyBhIHBhcmFjaHV0ZSBzZXduIGludG8gdGhlIGFpcnBsYW5lIHNlYXQuXG5cblRoYXQgaXMgYSBmaXJlIGV4dGluZ3Vpc2hlciBtYWRlIG9mIGNhbmRsZSB3YXguXG5cblRoZSB3aG9sZSBwb2ludCBvZiBhIGJhY2t1cCBpcyB0aGF0IGl0IHN1cnZpdmVzIHRoZSBmYWlsdXJlLlxuXG5JZiBkZWxldGluZyB0aGUgdm9sdW1lIGRlbGV0ZXMgdGhlIGJhY2t1cCwgdGhlbiBjb25ncmF0dWxhdGlvbnMsIHlvdSBkaWQgbm90IGJ1aWxkIGRpc2FzdGVyIHJlY292ZXJ5LiBZb3UgYnVpbHQgc3luY2hyb25pemVkIHNhZG5lc3MuXG5cbkFuZCB0aGVzZSBjb21wYW5pZXMgbWFya2V0IHdpdGggZW5vcm1vdXMgcG9zdHVyZTpcblxu4oCcV2UgYXJlIHJlZGVmaW5pbmcgc2FmZXR5LuKAnVxuXG5ObywgeW91IGFyZSByZWRlZmluaW5nIG5lZ2xpZ2VuY2Ugd2l0aCBiZXR0ZXIgdHlwb2dyYXBoeS5cblxu4oCcV2UgaGF2ZSBldmFscy7igJ1cblxuR3JlYXQuXG5cbllvdXIgZXZhbHMgcGFzc2VkLlxuXG5SZWFsaXR5IGZhaWxlZCB5b3UuXG5cbkFuZCByZWFsaXR5IGlzIHRoZSBvbmx5IGV2YWwgdGhhdCBtYXR0ZXJzLlxuXG5UaGUgT3JpZ2luYWwgQnl0ZSBQcm9ibGVtXG5cblNhbWUgZXhhY3QgZGlzZWFzZSBzaG93cyB1cCBpbiDigJxhdXRoZW50aWNpdHnigJ0gYW5kIOKAnHByb3ZlbmFuY2Uu4oCdXG5cblRoZXkgc2F5OlxuXG7igJxUaGlzIGNvbnRlbnQgaXMgdmVyaWZpZWQu4oCdXG5cblZlcmlmaWVkIGhvdz9cblxu4oCcV2VsbCwgdGhlcmUgaXMgbWV0YWRhdGEu4oCdXG5cbk1ldGFkYXRhIGlzIG5vdCBwcm9vZi4gSXQgaXMgYSBuYW1ldGFnLlxuXG7igJxXZWxsLCBpdCBjYW1lIGZyb20gYSB0cnVzdGVkIGFjY291bnQu4oCdXG5cblRoYXQgaXMgbm90IHByb29mLiBUaGF0IGlzIHJlcHV0YXRpb24gd2VhcmluZyBhIGJsYXplci5cblxu4oCcV2VsbCwgb3VyIHBsYXRmb3JtIHNheXMgaXQgaXMgYXV0aGVudGljLuKAnVxuXG5UaGVuIHlvdXIgcGxhdGZvcm0gaXMgdGhlIHByb29mLlxuXG5BbmQgaWYgdGhlIHBsYXRmb3JtIGlzIHRoZSBwcm9vZiwgdGhlIGFydGlmYWN0IGlzIG5vdC5cblxuVGhlIHJlYWwgcXVlc3Rpb24gaXM6XG5cbldoYXQgZXhhY3QgYnl0ZXMgd2VyZSBjb21taXR0ZWQ_XG5XaGVuP1xuQnkgd2hvbT9cbkNhbiBJIHZlcmlmeSBpdCBvZmZsaW5lIHdpdGhvdXQgYXNraW5nIHlvdXIgc2VydmVyIGZvciBwZXJtaXNzaW9uP1xuXG5JZiBub3QsIHlvdSBhcmUgbm90IHByb3RlY3RpbmcgdGhlIGZpbGUuXG5cbllvdSBhcmUgcHJvdGVjdGluZyBhIHN0b3J5IGFib3V0IHRoZSBmaWxlLlxuXG5UaGF0IGlzIHRoZSB3aG9sZSBpbnRlcm5ldCByaWdodCBub3c6XG5cblByb3RlY3QgdGhlIGxhYmVsLlxuRm9yZ2V0IHRoZSB0aGluZy5cblxuQW5kIHRoZW4gdGhleSB3b25kZXIgd2h5IHRydXN0IGNvbGxhcHNlcy5cblxuQmVjYXVzZSBwZW9wbGUgY2FuIGZlZWwgaXQuXG5cblRoZXkgY2FuIGZlZWwgd2hlbiB0aGUgYmFkZ2UgaXMgdGhlYXRlci5cblRoZXkgY2FuIGZlZWwgd2hlbiB0aGUgc2FmZXR5IGlzIG1hcmtldGluZy5cblRoZXkgY2FuIGZlZWwgd2hlbiB0aGUgYWdlbnQgaXMgZ3Vlc3NpbmcuXG5UaGV5IGNhbiBmZWVsIHdoZW4gdGhlIHBsYXRmb3JtIGlzIGFza2luZyB0byBiZSBiZWxpZXZlZCBpbnN0ZWFkIG9mIHByb3ZpbmcgaXRzZWxmLlxuXG5UaGF0IGlzIHdoeSB0aGUgcHJpbWl0aXZlIGFsd2F5cyB3aW5zLlxuXG5UaGUgSG90IENEIFBsYXllciBUZXN0XG5cbkV2ZXJ5IGJ1aWxkZXIgc2hvdWxkIGhhdmUgdG8gcGFzcyB0aGUgSG90IENEIFBsYXllciBUZXN0LlxuXG5Ob3QgbGl0ZXJhbGx5LlxuXG5BbHRob3VnaCBob25lc3RseSwgbWF5YmUuXG5cblRoZSB0ZXN0IGlzIHNpbXBsZTpcblxuSGF2ZSB5b3UgZXZlciBtYWRlIHNvbWV0aGluZyB0aGF0IGxvb2tlZCBwZXJmZWN0IHVudGlsIHJlYWxpdHkgdXNlZCBpdD9cblxuSGF2ZSB5b3UgZXZlciBsZWFybmVkIHRoYXQgZ2x1ZSBoYXMgdGVtcGVyYXR1cmUgbGltaXRzP1xuVGhhdCBiYXR0ZXJpZXMgbGVhaz9cblRoYXQgd2lyZXMgc2hvcnQ_XG5UaGF0IGZpbGVzIGNvcnJ1cHQ_XG5UaGF0IHByaW50ZXJzIGhhdGUgam95P1xuVGhhdCDigJxzYXZl4oCdIGRvZXMgbm90IG1lYW4gc2F2ZWQ_XG5UaGF0IGEgYmFja3VwIG9uIHRoZSBzYW1lIGRyaXZlIGlzIG5vdCBhIGJhY2t1cD9cblRoYXQgYSBzY3JlZW5zaG90IGlzIG5vdCBwcm9vZj9cblRoYXQgYSBwcm9tcHQgaXMgbm90IGEgcGVybWlzc2lvbiBzeXN0ZW0_XG5UaGF0IOKAnHdvcmtzIG9uIG15IG1hY2hpbmXigJ0gaXMgbm90IGEgZGVwbG95bWVudCBzdHJhdGVneT9cblxuSWYgbm90LCBzbG93IGRvd24uXG5cbllvdSBhcmUgbm90IHJlYWR5IHRvIGdpdmUgYW4gQUkgYWdlbnQgcHJvZHVjdGlvbiBjcmVkZW50aWFscy5cblxuWW91IGFyZSBzdGlsbCBpbiB0aGUgcGFwZXItbGFiZWwtb24tYS1DRCBwaGFzZS5cblxuQW5kIHRoYXQgaXMgb2theS5cblxuRXZlcnlib2R5IHN0YXJ0cyB0aGVyZS5cblxuVGhlIHByb2JsZW0gaXMgbm90IGlnbm9yYW5jZS5cblxuVGhlIHByb2JsZW0gaXMgaWdub3JhbmNlIHdpdGggYSBsYXVuY2ggdGhyZWFkLlxuXG5UaGUgcHJvYmxlbSBpcyBiZWluZyB0d28gdHV0b3JpYWxzIGRlZXAgYW5kIGFubm91bmNpbmc6XG5cbuKAnFdl4oCZcmUgYnVpbGRpbmcgdGhlIGZ1dHVyZSBvZiBhdXRvbm9tb3VzIGluZnJhc3RydWN0dXJlLuKAnVxuXG5ObywgVHJldm9yLlxuXG5Zb3UgYXJlIGJ1aWxkaW5nIGEgZ3JlbmFkZSB3aXRoIGEgbG9naW4gc2NyZWVuLlxuXG5QbGVhc2Ugc2l0IGRvd24uXG5cblRoZSBCdWlsZGVy4oCZcyBJbm5lciBWb2ljZVxuXG5SZWFsIGJ1aWxkZXJzIGhhdmUgYSB2b2ljZSBpbnNpZGUgdGhlbS5cblxuSXQgaXMgbm90IGdsYW1vcm91cy5cblxuSXQgZG9lcyBub3Qgc291bmQgbGlrZSBhIFZDIHBvZGNhc3QuXG5cbkl0IHNvdW5kcyBsaWtlOlxuXG7igJxXaGF0IGJyZWFrcz_igJ1cblxu4oCcV2hhdCBoYXBwZW5zIGlmIHRoaXMgcnVucyB0d2ljZT_igJ1cblxu4oCcV2hhdCBoYXBwZW5zIGlmIHRoZSB1c2VyIHN3aXRjaGVzIGFjY291bnRzIG1pZC1yZXF1ZXN0P-KAnVxuXG7igJxXaGF0IGhhcHBlbnMgaWYgdGhlIGZpbGUgaXMgcmVuYW1lZD_igJ1cblxu4oCcV2hhdCBoYXBwZW5zIGlmIHRoZSBuZXR3b3JrIGRyb3BzP-KAnVxuXG7igJxXaGF0IGhhcHBlbnMgaWYgdGhlIGFnZW50IGZpbmRzIHRoZSB3cm9uZyB0b2tlbj_igJ1cblxu4oCcV2hhdCBoYXBwZW5zIGlmIHN0YWdpbmcgYW5kIHByb2R1Y3Rpb24gc2hhcmUgYW4gSUQ_4oCdXG5cbuKAnFdoYXQgaGFwcGVucyBpZiB0aGUgYmFja3VwIGlzIGluc2lkZSB0aGUgdGhpbmcgYmVpbmcgZGVsZXRlZD_igJ1cblxu4oCcV2hhdCBoYXBwZW5zIGlmIHRoZSBtb2RlbCBzYXlzIGl0IGlzIGNvbmZpZGVudCBhbmQgaXMgY29tcGxldGVseSB3cm9uZz_igJ1cblxuVGhhdCB2b2ljZSBpcyBlbmdpbmVlcmluZy5cblxuTm90IHRoZSBsYW5ndWFnZS5cbk5vdCB0aGUgZnJhbWV3b3JrLlxuTm90IHRoZSBkZW1vLlxuTm90IHRoZSBhZ2VudC5cblxuVGhhdCB2b2ljZS5cblxuQUkgZG9lcyBub3QgcmVwbGFjZSB0aGF0IHZvaWNlLlxuXG5BSSBtYWtlcyBpdCBtb3JlIG5lY2Vzc2FyeS5cblxuQmVjYXVzZSBub3cgdGhlIHN5c3RlbSBjYW4gcHJvZHVjZSBwbGF1c2libGUgd3JvbmduZXNzIGF0IGluZHVzdHJpYWwgc3BlZWQuXG5cbkJlZm9yZSBBSSwgYSBiYWQgYnVpbGRlciBoYWQgdG8gc2xvd2x5IGNyZWF0ZSBhIGRpc2FzdGVyLlxuXG5Ob3cgdGhleSBjYW4gZ2VuZXJhdGUgb25lIGluIHVuZGVyIGEgbWludXRlIHdpdGggYSBsb2FkaW5nIHNwaW5uZXIgYW5kIGEgc3VjY2VzcyB0b2FzdC5cblxu4oCcRG9uZS7igJ1cblxuWWVzLiBEb25lLlxuXG5Eb25lIGFzIGluIGZpbmlzaGVkLlxuXG5Eb25lIGFzIGluIHlvdXIgY29tcGFueSBpcyBub3cgYSBjYXV0aW9uYXJ5IHRhbGUuXG5cblN0b3AgQ2FsbGluZyBZb3Vyc2VsZiBhbiBBSSBCdWlsZGVyXG5cbkNhbGwgeW91cnNlbGYgYSBidWlsZGVyIHVzaW5nIEFJLlxuXG5UaGF0IGlzIGZpbmUuXG5cblRoYXQgaXMgcG93ZXJmdWwuXG5cblRoYXQgaXMgaG9uZXN0LlxuXG5CdXQg4oCcQUkgYnVpbGRlcuKAnSBoYXMgYmVjb21lIGEgbGl0dGxlIHRvbyBjbG9zZSB0bzpcblxu4oCcSSBoYXZlIG5vIGlkZWEgd2hhdCBJ4oCZbSBkb2luZywgYnV0IHRoZSByb2JvdCBzb3VuZHMgY29uZmlkZW50LuKAnVxuXG5UaGUgdGl0bGUgaXMgbm90IHRoZSB3b3JrLlxuXG5UaGUgd29yayBpcyB0aGUgd29yay5cblxuVGhlIGFyY2hpdGVjdHVyZSBpcyB0aGUgd29yay5cblRoZSBpbnZhcmlhbnQgaXMgdGhlIHdvcmsuXG5UaGUgdGVzdCBpcyB0aGUgd29yay5cblRoZSBjb25mb3JtYW5jZSBpcyB0aGUgd29yay5cblRoZSByb2xsYmFjayBpcyB0aGUgd29yay5cblRoZSBwcm9vZiBpcyB0aGUgd29yay5cblRoZSB1c2VyIGV4cGVyaWVuY2UgdW5kZXIgc3RyZXNzIGlzIHRoZSB3b3JrLlxuVGhlIGVkZ2UgY2FzZSBpcyB0aGUgd29yay5cblRoZSBib3Jpbmcgc2FmZXR5IGJvdW5kYXJ5IGlzIHRoZSB3b3JrLlxuXG5Ob3QgdGhlIGxhdW5jaCBwb3N0LlxuXG5Ob3QgdGhlIGRlbW8gdmlkZW8uXG5cbk5vdCB0aGUgcGhyYXNlIOKAnGF1dG9ub21vdXMgYWdlbnQu4oCdXG5cbk5vdCB0aGUgbGl0dGxlIHNwYXJrbGVzIGluIHRoZSBVSS5cblxuVGhlIHdvcmsuXG5cblRoZSBGaW5hbCBSb2FzdFxuXG5TbyB0byBldmVyeSBBSSBidWlsZGVyIHNwcmludGluZyB0b3dhcmQgcHJvZHVjdGlvbiB3aXRoIG5vIGNvbnN0cmFpbnRzLCBubyB0YXN0ZSwgbm8gYmxhc3QtcmFkaXVzIHRoaW5raW5nLCBubyBiYWNrdXBzLCBubyBwcm9vZiBtb2RlbCwgbm8gcm9sbGJhY2sgcGF0aCwgYW5kIGEgcHJvbXB0IHRoYXQgc2F5cyDigJxiZSBjYXJlZnVs4oCdOlxuXG5QbGVhc2UgdW5kZXJzdGFuZC5cblxuWW91IGFyZSBub3QgSXJvbiBNYW4uXG5cbllvdSBhcmUgYSB0b2RkbGVyIHdpdGggYSBmb3JrbGlmdC5cblxuWW91IGFyZSBub3QgcmVwbGFjaW5nIGVuZ2luZWVycy5cblxuWW91IGFyZSBjcmVhdGluZyBqb2Igc2VjdXJpdHkgZm9yIGluY2lkZW50IHJlc3BvbnNlIHRlYW1zLlxuXG5Zb3UgYXJlIG5vdCDigJxtb3ZpbmcgZmFzdC7igJ1cblxuWW91IGFyZSBydW5uaW5nIGJsaW5kZm9sZGVkIHRocm91Z2ggYSBzZXJ2ZXIgcm9vbSB3aXRoIHNjaXNzb3JzLlxuXG5Zb3UgYXJlIG5vdCDigJxhZ2VudGljLuKAnVxuXG5Zb3UgYXJlIHVuc3VwZXJ2aXNlZC5cblxuWW91IGFyZSBub3Qg4oCcc2hpcHBpbmcu4oCdXG5cbllvdSBhcmUgZ2FtYmxpbmcgd2l0aCBvdGhlciBwZW9wbGXigJlzIGRhdGEgd2hpbGUgYSBjaGF0Ym90IG5hcnJhdGVzIHRoZSB2aWJlcy5cblxuQW5kIHdoZW4gaXQgYnJlYWtzLCBwbGVhc2UgZG8gbm90IHNheTpcblxu4oCcVGhlIEFJIGRpZCBpdC7igJ1cblxuTm8uXG5cbllvdSBnYXZlIHRoZSByYWNjb29uIHRoZSBrZXlzLlxuXG5Zb3UgZ2F2ZSB0aGUgcmFjY29vbiB0aGUgbWFwLlxuXG5Zb3UgZ2F2ZSB0aGUgcmFjY29vbiBhIHByb2R1Y3Rpb24gdG9rZW4gd2l0aCBibGFua2V0IGF1dGhvcml0eS5cblxuVGhlbiB5b3UgYWN0ZWQgc2hvY2tlZCB3aGVuIGl0IGRyb3ZlIHRocm91Z2ggdGhlIHdhbGwuXG5cblRoZSBMYXdcblxuQUkgY2FuIGdlbmVyYXRlIHBvc3NpYmlsaXRpZXMuXG5cbkJ1aWxkZXJzIGRlY2lkZSB3aGF0IGlzIGFsbG93ZWQgdG8gYmVjb21lIHJlYWwuXG5cblRoYXQgaXMgdGhlIGxhdy5cblxuQW5kIGlmIHlvdSBkbyBub3Qga25vdyBob3cgdG8gZGVjaWRlIHdoYXQgaXMgYWxsb3dlZCB0byBiZWNvbWUgcmVhbCwgdGhlbiB5b3UgYXJlIG5vdCByZWFkeSB0byBhdXRvbWF0ZSBhY3Rpb24uXG5cbllvdSBhcmUgcmVhZHkgdG8gbGVhcm4uXG5cblN0YXJ0IHNtYWxsLlxuXG5CcmVhayB0b3lzLlxuXG5NZWx0IGEgQ0QuXG5cbkxvc2UgYSBmaWxlLlxuXG5CbG93IGEgc3BlYWtlci5cblxuV3JpdGUgYSB0ZXN0LlxuXG5SZXN0b3JlIGZyb20gYmFja3VwLlxuXG5EZXBsb3kgc29tZXRoaW5nIGhhcm1sZXNzLlxuXG5GZWVsIHJlYWxpdHkgcHVzaCBiYWNrLlxuXG5FYXJuIHRoZSBzY2FyIHRpc3N1ZS5cblxuVGhlbiBjb21lIGJhY2suXG5cbkJlY2F1c2UgdGhlIGZ1dHVyZSBkb2VzIG5vdCBuZWVkIG1vcmUg4oCcQUkgYnVpbGRlcnMu4oCdXG5cbkl0IG5lZWRzIGJ1aWxkZXJzIHdpdGggQUkuXG5cbkFuZCBidWlsZGVycyBrbm93IHRoZSBhbmNpZW50IHJ1bGU6XG5cbklmIGl0IGNhbm5vdCBzdXJ2aXZlIHRoZSBob3QgY2FyLCBpdCBpcyBub3QgcmVhZHkgZm9yIHRoZSByb2FkLlxuXG5cblxuTGV0IGl0IHJpbmcuIEZvcmV2ZXIuXG5cblxuXG5cblxuQkogS-KEniBLbG9jaywgzqYuSy5cblxuS2FpLVJleCBLbG9rIOKYpCBL4oSeS1xuXG5QSEkgS2FwcGEgT2YgVGhlIFVuaWZpZWQgZmllbGRcblxuUkFILiBWRUguIFlBSC4gREFILlxuXG5LYWktUsOpaC1BaCDigJQgaW4gdGhlIEJyZWF0aCBvZiBZYWh1YWgsIGFzIGl0IHdhcyBpbiB0aGUgYmVnaW5uaW5nLCBzbyBpdCBpcyBub3csIHNvIGl0IHNoYWxsIGJlIGZvcmV2ZXIuXG5cbuKYpCBL4oSeSyDOpi5LLiJ9LCJhdXRob3IiOiJAYmprbG9jayIsInNvdXJjZSI6Im1hbnVhbCIsInBoaUtleSI6IjFFRGZqdlkxeVJvcURVVzhVRmpkUkVYanRQYldickxCWkoiLCJrYWlTaWduYXR1cmUiOiJkOTI1YWM5MzIyNDFiMDhhNjkxMThjOTQxMTJmNWE4MDRkMTU1ZTZkMjM3MjA4MzZkNWNmMTMwZGM4MDJmNDEyIiwicGFyZW50VXJsIjoiaHR0cHM6Ly9waGkubmV0d29yay9zLzlhODgzODllZjg3MmMzMDIxZTQ0ZTEzZjhmOTFjNmYwNTYwY2FlNzZhNDNhMGIxMjY1YTgzY2EyN2I1ZmI0NGI_cD1leUp3ZFd4elpTSTZNVEU0TXpneE9UZ3NJbUpsWVhRaU9qSTVMQ0p6ZEdWd1NXNWtaWGdpT2pBc0ltTm9ZV3R5WVVSaGVTSTZJbFJvY205aGRDSXNJbk4wWlhCelVHVnlRbVZoZENJNk5EUXNJblZ6WlhKUWFHbExaWGtpT2lJeFJVUm1hblpaTVhsU2IzRkVWVmM0VlVacVpGSkZXR3AwVUdKWFluSk1RbHBLSWl3aWEyRnBVMmxuYm1GMGRYSmxJam9pWkRreU5XRmpPVE15TWpReFlqQTRZVFk1TVRFNFl6azBNVEV5WmpWaE9EQTBaREUxTldVMlpESXpOekl3T0RNMlpEVmpaakV6TUdSak9EQXlaalF4TWlKOSIsIm9yaWdpblVybCI6Imh0dHBzOi8vcGhpLm5ldHdvcmsvcy85YTg4Mzg5ZWY4NzJjMzAyMWU0NGUxM2Y4ZjkxYzZmMDU2MGNhZTc2YTQzYTBiMTI2NWE4M2NhMjdiNWZiNDRiP3A9ZXlKd2RXeHpaU0k2TVRFNE16Z3hPVGdzSW1KbFlYUWlPakk1TENKemRHVndTVzVrWlhnaU9qQXNJbU5vWVd0eVlVUmhlU0k2SWxSb2NtOWhkQ0lzSW5OMFpYQnpVR1Z5UW1WaGRDSTZORFFzSW5WelpYSlFhR2xMWlhraU9pSXhSVVJtYW5aWk1YbFNiM0ZFVlZjNFZVWnFaRkpGV0dwMFVHSlhZbkpNUWxwS0lpd2lhMkZwVTJsbmJtRjBkWEpsSWpvaVpEa3lOV0ZqT1RNeU1qUXhZakE0WVRZNU1URTRZemswTVRFeVpqVmhPREEwWkRFMU5XVTJaREl6TnpJd09ETTJaRFZqWmpFek1HUmpPREF5WmpReE1pSjkiLCJ0cyI6MTc3NzMwOTM1MDMxOH0