AyuRewards
Track Order
My Account
Reviews
  • Home
  • Catalog
  • Contact
  • Help Center
  • Contact Us
  • Login
  • Help Center
  • Contact Us
  • +1(678)-498-7248 TAE WhatsApp
  • Consultation
  • CAD
The Ayurveda Experience CA
0
  • Help Center
  • Contact Us
  • +1(678)-498-7248
  • Consultation
  • TAE WhatsApp
The Ayurveda Experience CA
▼
0
  • Home
  • Catalog
  • Contact
  • Login / Create an account
  • Help Center
  • Contact Us
  • AyuRewards
  • Track Order

Add description, images, menus and links to your mega menu

A column with no settings can be used as a spacer

Link to your collections, sales and even external links

Add up to five columns

  • Add description, images, menus and links to your mega menu

  • A column with no settings can be used as a spacer

  • Link to your collections, sales and even external links

  • Add up to five columns

  • Skip to content
    Woman holding Balaayah Black Gram Body Booster
    Bottle beside golden droplets of oil
    Applying the oil to neck and décolletage
    The bottle among floating amber droplets of oil
    Black gram lentils falling beside a copper bowl and the bottle
    Bottle with its printed outer tube
    Balaayah product image

    Image 1 of 7

    ★★★★★★★★★★ 4.3 Stars 400,000+ Bottles Sold Worldwide

    FOR SKIN THAT’S CHANGED AFTER 40

    Regular lotions stop being enough with age.Dry, crepey skin needs richer care.

    Perimenopause and menopause bring a drop in collagen and lipids that once helped skin look firm and plump. Balaayah is a 100% natural body oil powered by Black Gram, the “Black Gold” of Ayurveda, a centuries-old ingredient prized for mature skin.

    Get Firmer-Looking Skin →
    • 30-Day Money-Back
      Guarantee
    • Free
      Shipping
    • Free
      Gift

    5 Reasons Women Over 40 Are Choosing The “Black Gold” Body Booster

    As skin starts to look less firm and feels drier with age, the look of sagging, crepey skin sets in. That’s why increasingly dry, less firm-looking skin needs richer body care. Women across 20+ countries have chosen Balaayah Black Gram Body Booster for firmer-looking, velvet-soft, intensely moisturised skin.

    01/05

    Firms the Look of Saggy, Crepey Arms and Legs

    An average face routine has multiple steps, while arms and legs get none, even though it’s the same skin, aging just the same. Balaayah ends that gap, firming the look of sagging, crepey skin so arms and thighs look tighter and smoother.

    Looks tighterOn arms and thighs, where skin can start to look less firm first.
    Looks smootherCrepey texture, visibly softened.
    Oil massaged into the upper arm and shoulder
    ★★★★★

    “[the appearance of] wrinkles and slackness on my arms and legs is gradually improving”

    I bought one recently and the feel was so good I bought two more. I haven’t even finished the first, but [the appearance of] wrinkles and slackness on my arms and legs is gradually improving. The scent is to my taste and I love it.

    Katie
    Verified
    GET THE FIRMED-LOOK →
    • 100% Natural
    • Vegan
    • Dermatologically Tested
    • No Added Synthetic Chemicals

    02/05

    Softens Rough-Feeling Knees, Elbows and Heels

    Knees, elbows and heels are the places skin dries out first and stays dry longest, mostly because they get the least attention. Balaayah, massaged into the driest, most neglected areas, leaves skin velvety-soft to the touch with a healthy-looking glow.

    Velvety-softTo the touch, on the roughest-feeling patches.
    Healthy-looking glowWhere skin looked dull and dry.
    Oil massaged into the knee
    ★★★★★

    “very effective on aging dry skin especially on feet”

    This product was very effective on aging dry skin especially on feet. I am planning to buy this oil again and I highly recommend it for all men and female.

    Jayalakshmi
    Verified

    03/05

    Smooths the Look of the Neck & Décolletage

    The neck and chest are on show in almost every neckline, yet get less care than nearly any part of the body. Balaayah smooths the look of skin texture and reduces the appearance of fine lines, promoting a radiant, glossy finish. Smoother-looking skin, where every neckline shows it.

    Less Visible Fine LinesThe ones every neckline shows.
    Radiant, glossyA finish that shows, never a greasy one.
    The neck and décolletage
    ★★★★★

    “[the appearance of] fine neck lines stopped bothering me all day and my décolletage began to glow”

    For the last few years [the appearance of] dryness and fine lines on my neck stood out... I’d tried all sorts of creams and oils... I ordered this too, expecting nothing. Massaging my neck and décolletage after the bath, it sank in smoothly, non-greasy, so pleasant, and moist till the next morning... [the appearance of] fine neck lines stopped bothering me all day and my décolletage began to glow...I can confidently enjoy fashion that shows my neck and décolletage.

    Luna
    Verified
    GET A SMOOTHER-LOOKING NECKLINE →
    • Rooted in 5,000 Years of Ayurvedic Wisdom
    • Our Best-Loved Body Oil Worldwide

    04/05

    Intense, Long-Lasting Moisturisation

    Skin loses lipids with age, and that’s why it feels dry again so quickly, no matter how often ordinary body lotion is applied. Balaayah is an ultra-rich but non-sticky oil that keeps skin moisturised long after it’s applied. Richer care for that kind of loss.

    Ultra-richRich in the palm, long after it is applied.
    Non-stickyNo film, no transfer, no fade by morning.
    Drops of the oil beside the bottle
    ★★★★★

    “provides both moisture and hydration”

    Excellent products! Been using the products for about 2 weeks, it’s dual effect that provides both moisture and hydration has been easily absorbed and leaves skin glowing, yet non sticky skin.❤️

    Christine
    Verified

    05/05

    Naturally Brewed and Never Greasy

    Most body oils are described as natural, but what really matters is how the ingredients are handled. Balaayah is inspired by a traditional Ayurvedic method, where herbs are slow-cooked into a base oil so their full character makes it into the formula. So that “natural” isn’t just a label.

    Slow-cookedHerbs cooked into the base oil, the Ayurvedic way.
    Full characterSo “natural” is a method, not a label.
    The bottle against a warm amber ground

    The Ultimate Ultra-Rich, Non-Sticky Body Oil for Aging, Dry Skin

    An ultra-rich body oil — not the usual Moroccan, castor or almond. Balaayah is Ayurvedic artistry, led by Black Gram, the “Black Gold” prized for mature skin. It transforms the look of dry, aging skin, giving a firmer look and a velvety glow. Everything ordinary body care never was.

    Balaayah Black Gram Body Booster
    Introducing
    Balaayah Black Gram
    Body Booster
    Woman holding Balaayah Black Gram Body Booster
    Balaayah product image
    Bottle beside droplets of golden oil
    Close-up of the pump
    Balaayah product image
    Applying to the leg
    Bottle held in two hands
    The bottle beside a pool of golden oil
    The bottle standing among amber droplets
    Two bottles lying side by side
    Balaayah product image
    Balaayah product image

    Image 1 of 12

    ★★★★★★★★★★4.3/5250,000+ Users Worldwide

    ★★★★★★★★★★4.3/5250,000+ Users Worldwide

    iYURA’s

    Balaayah Black Gram Body Booster

    For Firmer-Looking, Mochi-Soft Skin with a Velvety Glow · 100ml

    • Firms the look of saggy, crepey skin
    • Reduces the appearance of fine lines and wrinkles
    • 100% natural & vegan
    • Powered by Black Gram and enriched with 10 other Ayurvedic actives, crafted inspired by traditional Ayurvedic methods.
    • Absorbs quickly to a non-greasy finish

    Special offer 🎁 Free gift: Mini Yauvari Youth Spring Black Gram-powered face oil that fights visible signs of aging

    Add to cart →
    • 30-Day Money-Back
      Guarantee
    • Free
      Shipping
    • Free
      Gift
    Guaranteed safe checkout — SSL encryption, privacy protected. Visa, Mastercard, Apple Pay, American Express, PayPal.

    A rich but non-sticky body oil for dry, aging skin, powered by Black Gram and enriched with 10 other Ayurvedic actives. Absorbs quickly to a velvety finish, leaving skin intensely moisturised, softer to the touch, and firmer-looking with regular use.

    Naturally scented with warm vanilla and frankincense — no synthetic fragrance. Formulated to be used all over the body, ideally as an after-bath ritual.

    Inspired by the traditional Ayurvedic method, with a formula rooted in 5,000 years of practice.

    1. Step 1Pump out as many drops of the oil as you need for your moisturisation needs.
    2. Step 2Massage it all over the body with downward motions until the oil is absorbed.
    3. Step 3You can use it as a body mask before showering or as a moisturizer after showering.

    Fragrance profile
    Vanilla
    Fragrance ingredients
    Frankincense oil, vanilla oil
    Colour
    Light yellow
    Texture
    Rich, non-greasy, velvety finish
    Total ingredients
    11
    Ayurvedic ingredients
    10

    Hero ingredients

    • Black GramVigna mungo
    • Velvet BeanMucuna pruriens
    • NutgrassCyperus rotundus

    Full List of Ingredients

    Sesamum Indicum [Sesame] Seed Oil, Sodium Chloride [Himalayan Rock Salt], Frankincense Oil, Vanilla Oil, Vigna Mungo [Black Gram] Seed Extract, Abutilon Indicum [Country Mallow] Extract, Cyperus Rotundus [Nut Grass] Tuber Extract, Ricinus Communis [Castor] Root Extract, Mucuna Pruriens [Velvet Bean] Seed Extract, Pluchea Lanceolata [Pluchea] Leaf Extract, Anethum Graveolens [Dill] Seed Extract.

    • Dermatologically tested
    • 100% natural
    • Vegan
    • No added synthetic chemicals
    • No added parabens
    • No mineral oil
    • Ayurvedic product

    Balaayah’s Black Gram-powered companion for the face. A rich, fast-absorbing Ayurvedic face oil formulated for dry, aging skin on the face, neck and décolleté.
    • Firms the look of saggy, crepey skin
    • Softens the appearance of fine lines

    iYURAAyurveda holds some of the most effective skincare formulations ever created — but many of them can feel heavy, unfamiliar, or hard to fit into a modern routine.

    iYURA takes those classical formulations and makes them work for the way people actually use skincare today. Rich formulas that absorb without residue. Traditional Ayurvedic actives without synthetic fillers. Authentic recipes made premium in texture, scent and finish — so you get the depth of Ayurveda without the compromise.

    Nothing comes close to what this “Black Gold” phenomenon has been doing!

    ★★★★★

    “fast, obvious results”

    I’ve never used a body-care oil with such fast, obvious results. It improved the look of my skin quickly, especially [the appearance of] the orange-peel texture, and made my skin look more elastic. Excellent!

    Carol
    Verified buyer
    ★★★★★

    “started to make my skin glow and look tighter”

    My skin is basically dry espy now that I am going 70. Black gram body oil started to make my skin glow and look tighter… I love the feeling!!! I am now on my second bottle.

    Maria
    Verified buyer
    ★★★★★

    “leaves the skin looking smooth, soft as silk”

    It is easy to use, I found that I prefer to put it on slightly damp skin… Its scent is gentle and it leaves the skin looking smooth, soft as silk and exceptionally pleasant!… I love them very much and I will definitely order more.

    Aricha
    Verified buyer
    ★★★★★

    “smoother-feeling, plumper-looking, younger-looking”

    It’s absorbed easily into the skin, smells wonderful and helps my skin feel smoother and look plumper and younger. I don’t know yet if it has any long lasting positive effects. But for now, I am pleasantly surprised.

    Vardit
    Verified buyer
    ★★★★★

    “after using one bottle, I noticed significant improvement”

    I have repurchased this Balaayah Moisturizing Oil many times already. I initially bought it to target [the appearance of] cellulite on my thighs, but after using one bottle, I noticed significant improvement in its appearance. I have already repurchased several bottles and will continue to use it consistently.

    Venus
    Verified buyer
    • 4.3 Stars
    • 250,000+ Happy Customers
    • 400,000+ Bottles Sold Worldwide

    There are so many body oils out there. What’s special about this one?

    This extraordinary concoction is a masterpiece of Ayurvedic artistry, it brings the intensive powers of 10 Ayurvedic ingredients and takes the whole game of skincare several notches up.

    Black GramVigna mungo

    Prized in Ayurveda for mature skin, Black Gram helps skin look firmer, plumper and more youthful, with lasting moisture and a smoother-looking finish — the ingredient that makes Balaayah stand apart.

    Himalayan Rock Salt

    Himalayan Rock Salt is mineral-rich and known for its hydrate-moisturise-occlude ‘triple effect’ — drawing in moisture, helping skin hold onto it, and sealing it in. It softens rough-feeling patches, with the surface looking freshly smoothed.

    Velvet BeanMucuna pruriens

    True to its name — the ingredient behind Balaayah’s velvet-soft finish. Nourishing, cooling and smoothing the look of skin, Velvet Bean helps firm the look of skin and leaves it looking brightened and refreshed.

    NutgrassCyperus rotundus

    The natural brightener in Balaayah. Nutgrass helps skin tone look more even and clear, reduces the appearance of visible signs of aging, and gives a youthful glow that grows with regular use

    CastorRicinus communis root

    A traditional Ayurvedic ingredient for mature skin. Vata-balancing Castor Root helps skin look firmer and more youthful, and grounds Balaayah’s formula in Ayurveda’s long tradition of care for skin that’s changed with age.

    Sesame OilSesamum indicum

    The nourishing base of Balaayah. A light, non-clogging oil that blends seamlessly with every other active in the formula, keeping skin soft, moisturised, and gently glowing with a light Ayurvedic touch.

    Frankincense OilBoswellia carterii

    A warm, earthy aromatic with a functional role. Frankincense Oil is known to help skin look toned and add a firmer, lifted look — a natural fit for formulas made for mature skin.

    Country MallowAbutilon indicum

    Also called Bala, meaning strength, a quality this plant has long been associated with in traditional Ayurvedic body care, treasured for centuries in formulations made for aging skin. It is the herb Balaayah is named after.

    PlucheaPluchea lanceolata

    Known in Ayurveda as Rasna, classified as a Vata-pacifying herb in classical texts, Pluchea has been used in traditional body oil preparations for centuries — a supporting active in Balaayah’s blend.

    DillAnethum graveolens

    Known in Ayurveda as Shatapushpa, or “hundred-flowered,” a herb classified in classical texts for its warming, grounding qualities. Dill has been used in Ayurvedic body preparations across generations, bringing subtle depth to the formula.

    • Rooted in 5,000 Years of Ayurvedic Wisdom
    • 100% Natural
    • Vegan

    FAQs

    Made for skin that’s changed with age — drier, less firm-looking, no longer responding to lotion the way it once did. Suits all skin types, including sensitive. Not for skin that’s naturally oily and comfortable all day; this will feel richer than needed.

    Formulated specifically for mature, but works well on normal and combination skin too, especially in air conditioned environments and cooler months.

    Best massaged in after a bath or shower. Absorbs quickly and doesn’t transfer, so it can be worn under clothing during the day too.

    Results build with consistent use, with some changes noticed sooner than others.

    In 1 day★★★★★

    It’s not oily at all and absorb into the skin totally make it feel so smooth and moist the next day, love it❤️

    Raena
    Verified buyer
    In 2 weeks★★★★★

    Been using the products for about 2 weeks, it’s dual effect that provides both moisture and hydration... leaves skin glowing, yet non sticky skin.❤️

    Christine
    Verified buyer
    With continued use★★★★★

    After using one bottle, I noticed significant improvement. I have already repurchased several bottles and will continue to use it consistently.

    Venus
    Verified buyer

    No. Rich in the palm, but absorbs quickly to a velvety finish, with no oily residue, no sticky film, and no transfer to clothes or bedding.

    ★★★★★

    I like the product. It isnt oily, yet it moisturises well. The fragrance is very pleasant and my dry skin is looking good now.

    Gurcharan
    Verified buyer
    ★★★★★

    Product is as expected, not greasy and the skin absorbs it immediately. Leaving my skin soft and supple.

    Tita
    Verified buyer
    ★★★★★

    It’s not oily at all and absorb into the skin totally make it feel so smooth and moist the next day, love it❤️

    Raena
    Verified buyer

    Yes, it is vegan, and no, it is not tested on animals. Balaayah is made with no synthetic chemicals, no added parabens and no mineral oil. Neither the ingredients nor the finished product are tested on animals.

    Balaayah is backed by a 30-day money-back guarantee. If it isn’t the right fit, return it within 30 days of delivery for a full refund.

    Get a free gift and a 30-day money-back guarantee
    Shop now
    LyogQkFMQUFZQUggwrcgQ0FOQURBICguY2EpIMK3IEJFSEFWSU9VUiBFTkdJTkUKICAgQ2Fyb3VzZWwsIGFjY29yZGlvbnMvZHJvcGRvd25zLCBwYWNrIHBp Y2tlciwgbGl2ZSBDQUQgcHJpY2VzLCBhZGQgdG8gY2FydCwKICAgc3RpY2t5IGJhciwgcHJvZHVjdCBhbmltYXRpb24uIEJ1aWx0IGZyb20gdGhlIFNHIHNv dXJjZSwgQ0EgdmFsdWVzIHNldC4gKi8KKGZ1bmN0aW9uKCl7CmlmKHdpbmRvdy5fX2JhbEJvb3RlZCkgcmV0dXJuOyB3aW5kb3cuX19iYWxCb290ZWQ9dHJ1 ZTsKdmFyIENBPXsKICBvbmU6e2hhbmRsZTonaXl1cmEtYmFsYWF5YWgtYmxhY2stZ3JhbS1ib2R5LWJvb3N0ZXInLCBpZDo0MTMxNTU4MTgyMTAxNSwgcHJp Y2U6NjAwMCwgY29tcGFyZTowfSwKICB0d286e2hhbmRsZTonaXl1cmEtYmFsYWF5YWgtYmxhY2stZ3JhbS1ib2R5LWJvb3N0ZXItcGFjay1vZi0yJywgaWQ6 NDE5MzQ0Mjk5NDU5NDMsIHByaWNlOjk2MDAsIGNvbXBhcmU6MTIwMDB9LAogIGN1cnJlbmN5OidDQUQnLAogIGNkbjonaHR0cHM6Ly9zZy50aGVheXVydmVk YWV4cGVyaWVuY2UuY29tL2Nkbi9zaG9wL2ZpbGVzLycKfTsKdmFyIHJvb3Q9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2JhbCcpOyBpZighcm9vdCkgcmV0 dXJuOwpyb290LmNsYXNzTGlzdC5hZGQoJ2JhbC1qcycpOwp2YXIgUk09bWF0Y2hNZWRpYSgnKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSknKS5t YXRjaGVzOwpmdW5jdGlvbiBibG9jayhuYW1lLGZuKXsgdHJ5eyBmbigpOyB9Y2F0Y2goZSl7IGlmKHdpbmRvdy5jb25zb2xlKSBjb25zb2xlLndhcm4oJ1tC YWxhYXlhaF0gJytuYW1lKycgZmFpbGVkOicsZSk7IH0gfQoKLyogMSDCtyB1bmRvIGhvc3Qgd3JhcHBlciBvdmVyZmxvdy90cmFuc2Zvcm0gKG5lZWRlZCBm b3Igc3RpY2t5IGJhciArIHBpbm5lZCBib3R0bGUpICovCmJsb2NrKCdob3N0JyxmdW5jdGlvbigpewogIGZ1bmN0aW9uIGNsZWFyKCl7CiAgICB2YXIgbj1y b290LnBhcmVudE5vZGUsaG9wcz0wOwogICAgd2hpbGUobiYmbi5ub2RlVHlwZT09PTEmJm4hPT1kb2N1bWVudC5ib2R5JiZob3BzKys8MjQpewogICAgICB2 YXIgcz1nZXRDb21wdXRlZFN0eWxlKG4pOwogICAgICBpZihzLm92ZXJmbG93IT09J3Zpc2libGUnfHxzLm92ZXJmbG93WCE9PSd2aXNpYmxlJ3x8cy5vdmVy Zmxvd1khPT0ndmlzaWJsZScpIG4uc3R5bGUuc2V0UHJvcGVydHkoJ292ZXJmbG93JywndmlzaWJsZScsJ2ltcG9ydGFudCcpOwogICAgICBpZihzLnRyYW5z Zm9ybSE9PSdub25lJykgbi5zdHlsZS5zZXRQcm9wZXJ0eSgndHJhbnNmb3JtJywnbm9uZScsJ2ltcG9ydGFudCcpOwogICAgICBpZihzLmZpbHRlciE9PSdu b25lJykgbi5zdHlsZS5zZXRQcm9wZXJ0eSgnZmlsdGVyJywnbm9uZScsJ2ltcG9ydGFudCcpOwogICAgICBpZihzLnBlcnNwZWN0aXZlIT09J25vbmUnKSBu LnN0eWxlLnNldFByb3BlcnR5KCdwZXJzcGVjdGl2ZScsJ25vbmUnLCdpbXBvcnRhbnQnKTsKICAgICAgaWYocy5jb250YWluIT09J25vbmUnKSBuLnN0eWxl LnNldFByb3BlcnR5KCdjb250YWluJywnbm9uZScsJ2ltcG9ydGFudCcpOwogICAgICBpZihzLndpbGxDaGFuZ2UhPT0nYXV0bycpIG4uc3R5bGUuc2V0UHJv cGVydHkoJ3dpbGwtY2hhbmdlJywnYXV0bycsJ2ltcG9ydGFudCcpOwogICAgICBuLmNsYXNzTGlzdC5hZGQoJ3pwLWJhbC1ob3N0Jyk7IG49bi5wYXJlbnRO b2RlOwogICAgfQogIH0KICBjbGVhcigpOyBhZGRFdmVudExpc3RlbmVyKCdsb2FkJyxjbGVhcik7IHNldFRpbWVvdXQoY2xlYXIsMTIwMCk7Cn0pOwoKLyog MiDCtyBvcmRlci1ib3ggZmlyc3Qgc2xpZGUgcmV1c2VzIHRoZSBoZXJvIHBob3RvIChrZWVwcyB0aGUgcGFnZSBsaWdodGVyKSAqLwpibG9jaygnb2Itd29t YW4nLGZ1bmN0aW9uKCl7CiAgdmFyIGg9cm9vdC5xdWVyeVNlbGVjdG9yKCcjY2FyLWhlcm8gLmJhbC13b21hbi1pbWcnKSwgZD1kb2N1bWVudC5nZXRFbGVt ZW50QnlJZCgnYmFsLW9iLXdvbWFuJyk7CiAgaWYoaCYmZCYmIWQuZ2V0QXR0cmlidXRlKCdzcmMnKSkgZC5zcmM9aC5zcmM7Cn0pOwoKLyogMyDCtyB3b3Jk LWJ5LXdvcmQgSDEgKyBzY3JvbGwgcmV2ZWFscyAqLwpibG9jaygncmV2ZWFscycsZnVuY3Rpb24oKXsKICB2YXIgaDE9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5 SWQoJ2gxJyk7CiAgaWYoaDEmJiFSTSl7KGZ1bmN0aW9uIHdhbGsobil7CiAgICBbXS5zbGljZS5jYWxsKG4uY2hpbGROb2RlcykuZm9yRWFjaChmdW5jdGlv bihjKXsKICAgICAgaWYoYy5ub2RlVHlwZT09PTMpewogICAgICAgIHZhciBmPWRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsKICAgICAgICBj LnRleHRDb250ZW50LnNwbGl0KC8oXHMrKS8pLmZvckVhY2goZnVuY3Rpb24odCl7CiAgICAgICAgICBpZighdClyZXR1cm47CiAgICAgICAgICBpZigvXlxz KyQvLnRlc3QodCkpe2YuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodCkpO3JldHVybn0KICAgICAgICAgIHZhciBzPWRvY3VtZW50LmNy ZWF0ZUVsZW1lbnQoJ3NwYW4nKTtzLmNsYXNzTmFtZT0ndyc7CiAgICAgICAgICB2YXIgaT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpJyk7aS50ZXh0Q29u dGVudD10O3MuYXBwZW5kQ2hpbGQoaSk7Zi5hcHBlbmRDaGlsZChzKTsKICAgICAgICB9KTsKICAgICAgICBjLnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKGYs Yyk7CiAgICAgIH0gZWxzZSBpZihjLm5vZGVUeXBlPT09MSkgd2FsayhjKTsKICAgIH0pOwogIH0pKGgxKTsKICBoMS5xdWVyeVNlbGVjdG9yQWxsKCcudz5p JykuZm9yRWFjaChmdW5jdGlvbihlbCxpKXtlbC5zdHlsZS50cmFuc2l0aW9uRGVsYXk9KDAuMDUraSowLjAzMikrJ3MnfSk7fQogIHZhciBlbHM9cm9vdC5x dWVyeVNlbGVjdG9yQWxsKCcucnYsLm1hc2ssLmRpdmlkZXIsI2gxJyk7CiAgaWYoJ0ludGVyc2VjdGlvbk9ic2VydmVyJyBpbiB3aW5kb3cpewogICAgdmFy IGlvPW5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcihmdW5jdGlvbihlcyl7ZXMuZm9yRWFjaChmdW5jdGlvbihlKXsKICAgICAgaWYoZS5pc0ludGVyc2VjdGlu Zyl7ZS50YXJnZXQuY2xhc3NMaXN0LmFkZCgnaW4nKTtpby51bm9ic2VydmUoZS50YXJnZXQpfX0pfSwKICAgICAge3RocmVzaG9sZDouMTIscm9vdE1hcmdp bjonMHB4IDBweCAtNiUgMHB4J30pOwogICAgZWxzLmZvckVhY2goZnVuY3Rpb24oZWwpe2lvLm9ic2VydmUoZWwpfSk7CiAgfSBlbHNlIGVscy5mb3JFYWNo KGZ1bmN0aW9uKGVsKXtlbC5jbGFzc0xpc3QuYWRkKCdpbicpfSk7Cn0pOwoKLyogNCDCtyBjYXJvdXNlbHM6IG9uZSBzbGlkZSBwZXIgc3dpcGUsIGluZmlu aXRlIGxvb3AsIGRvdHMvdGh1bWJuYWlscywgYXV0b3BsYXkgKi8KZnVuY3Rpb24gc2xpZGVyKGtleSx0aHVtYnMpewogIHZhciB0cmFjaz1kb2N1bWVudC5n ZXRFbGVtZW50QnlJZCgnY2FyLScra2V5KTsgaWYoIXRyYWNrKXJldHVybjsKICB2YXIgdmlldz10cmFjay5wYXJlbnRFbGVtZW50LAogICAgICBob3N0PXJv b3QucXVlcnlTZWxlY3RvcignW2RhdGEtZG90cz0iJytrZXkrJyJdJyksCiAgICAgIGxpdmU9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Nhci0nK2tleSsn LWxpdmUnKSwKICAgICAgcmVhbD1bXS5zbGljZS5jYWxsKHRyYWNrLmNoaWxkcmVuKSwgbj1yZWFsLmxlbmd0aCwgYnRucz1bXTsKICBpZihuPDIpcmV0dXJu OwogIHZhciBoZWFkPXJlYWxbMF0uY2xvbmVOb2RlKHRydWUpLCB0YWlsPXJlYWxbbi0xXS5jbG9uZU5vZGUodHJ1ZSk7CiAgW2hlYWQsdGFpbF0uZm9yRWFj aChmdW5jdGlvbihjKXsgYy5zZXRBdHRyaWJ1dGUoJ2FyaWEtaGlkZGVuJywndHJ1ZScpOyBjLnF1ZXJ5U2VsZWN0b3JBbGwoJ1tpZF0nKS5mb3JFYWNoKGZ1 bmN0aW9uKHgpe3gucmVtb3ZlQXR0cmlidXRlKCdpZCcpfSk7IH0pOwogIHRyYWNrLmFwcGVuZENoaWxkKGhlYWQpOyB0cmFjay5pbnNlcnRCZWZvcmUodGFp bCxyZWFsWzBdKTsKICB2YXIgYWxsPVtdLnNsaWNlLmNhbGwodHJhY2suY2hpbGRyZW4pOwogIHZhciBpPTEsdz0wLGFuaW1hdGluZz1mYWxzZSxhdXRvVGlt ZXI9bnVsbCxhdXRvU3RvcHBlZD1mYWxzZSxBVVRPX01TPTQyMDA7CiAgZnVuY3Rpb24gbWVhc3VyZSgpeyB3PXZpZXcuY2xpZW50V2lkdGg7IGFsbC5mb3JF YWNoKGZ1bmN0aW9uKHMpe3Muc3R5bGUud2lkdGg9dysncHgnfSk7IHBhaW50KGZhbHNlKSB9CiAgZnVuY3Rpb24gcGFpbnQoYW5pbSl7CiAgICBhbmltYXRp bmc9ISFhbmltJiYhUk07CiAgICB0cmFjay5zdHlsZS50cmFuc2l0aW9uPWFuaW1hdGluZz8ndHJhbnNmb3JtIC4yNnMgY3ViaWMtYmV6aWVyKC4yMiwuOSwu MjQsMSknOidub25lJzsKICAgIHRyYWNrLnN0eWxlLnRyYW5zZm9ybT0ndHJhbnNsYXRlM2QoJysoLWkqdykrJ3B4LDAsMCknOwogIH0KICBmdW5jdGlvbiBs b2dpY2FsKCl7IHJldHVybiAoaS0xK24pJW4gfQogIGZ1bmN0aW9uIHN5bmMoKXsKICAgIHZhciBMPWxvZ2ljYWwoKTsKICAgIGJ0bnMuZm9yRWFjaChmdW5j dGlvbihiLGspe2Iuc2V0QXR0cmlidXRlKCdhcmlhLWN1cnJlbnQnLFN0cmluZyhrPT09TCkpfSk7CiAgICBpZihsaXZlKWxpdmUudGV4dENvbnRlbnQ9J0lt YWdlICcrKEwrMSkrJyBvZiAnK247CiAgfQogIGZ1bmN0aW9uIHNldHRsZSgpewogICAgaWYoIWFuaW1hdGluZylyZXR1cm47IGFuaW1hdGluZz1mYWxzZTsK ICAgIGlmKGk9PT0wKWk9bjsgZWxzZSBpZihpPT09bisxKWk9MTsKICAgIHBhaW50KGZhbHNlKTsgdm9pZCB0cmFjay5vZmZzZXRXaWR0aDsKICB9CiAgZnVu Y3Rpb24gc3RvcEF1dG8oKXthdXRvU3RvcHBlZD10cnVlO2lmKGF1dG9UaW1lcil7Y2xlYXJJbnRlcnZhbChhdXRvVGltZXIpO2F1dG9UaW1lcj1udWxsfX0K ICBmdW5jdGlvbiBzdGFydEF1dG8oKXsgaWYoUk18fGF1dG9TdG9wcGVkfHxhdXRvVGltZXIpcmV0dXJuOyBhdXRvVGltZXI9c2V0SW50ZXJ2YWwoZnVuY3Rp b24oKXsgaWYoIWRvY3VtZW50LmhpZGRlbilnbygxLGZhbHNlKSB9LEFVVE9fTVMpIH0KICBmdW5jdGlvbiBwYXVzZUF1dG8oKXsgaWYoYXV0b1RpbWVyKXtj bGVhckludGVydmFsKGF1dG9UaW1lcik7YXV0b1RpbWVyPW51bGx9IH0KICBmdW5jdGlvbiBnbyhkaXIsbWFudWFsKXsgaWYobWFudWFsKXN0b3BBdXRvKCk7 IHNldHRsZSgpOyBpKz1kaXI7IHBhaW50KHRydWUpOyBzeW5jKCkgfQogIGZ1bmN0aW9uIGp1bXAoTCxtYW51YWwpeyBpZihtYW51YWwpc3RvcEF1dG8oKTsg c2V0dGxlKCk7IGk9TCsxOyBwYWludCh0cnVlKTsgc3luYygpIH0KICB0cmFjay5hZGRFdmVudExpc3RlbmVyKCd0cmFuc2l0aW9uZW5kJyxmdW5jdGlvbihl KXsKICAgIGlmKGUucHJvcGVydHlOYW1lIT09J3RyYW5zZm9ybScpcmV0dXJuOwogICAgYW5pbWF0aW5nPWZhbHNlOwogICAgaWYoaT09PTApe2k9bjtwYWlu dChmYWxzZSl9IGVsc2UgaWYoaT09PW4rMSl7aT0xO3BhaW50KGZhbHNlKX0KICB9KTsKICBpZihob3N0KXsgaG9zdC5pbm5lckhUTUw9Jyc7IGZvcih2YXIg az0wO2s8bjtrKyspewogICAgdmFyIGI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYnV0dG9uJyk7IGIudHlwZT0nYnV0dG9uJzsKICAgIGIuc2V0QXR0cmli dXRlKCdyb2xlJywndGFiJyk7IGIuc2V0QXR0cmlidXRlKCdhcmlhLWN1cnJlbnQnLGs9PT0wPyd0cnVlJzonZmFsc2UnKTsKICAgIGIuc2V0QXR0cmlidXRl KCdhcmlhLWxhYmVsJywnSW1hZ2UgJysoaysxKSsnIG9mICcrbik7CiAgICBpZih0aHVtYnMpeyB2YXIgc3JjPXJlYWxba10ucXVlcnlTZWxlY3RvcignaW1n Jyk7IHZhciBpbT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbWcnKTsKICAgICAgaW0uc3JjPShzcmMmJihzcmMuY3VycmVudFNyY3x8c3JjLnNyYykpfHwn JzsgaW0uYWx0PScnOyBiLmFwcGVuZENoaWxkKGltKSB9CiAgICAoZnVuY3Rpb24odCl7IGIuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLGZ1bmN0aW9uKGUp eyBlLnByZXZlbnREZWZhdWx0KCk7IGp1bXAodCx0cnVlKSB9KSB9KShrKTsKICAgIGhvc3QuYXBwZW5kQ2hpbGQoYik7IGJ0bnMucHVzaChiKTsKICB9fQog IHJvb3QucXVlcnlTZWxlY3RvckFsbCgnW2RhdGEtY2FyPSInK2tleSsnIl0nKS5mb3JFYWNoKGZ1bmN0aW9uKG5hdil7CiAgICBuYXYudHlwZT0nYnV0dG9u JzsKICAgIG5hdi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsZnVuY3Rpb24oZSl7IGUucHJldmVudERlZmF1bHQoKTsgZS5zdG9wUHJvcGFnYXRpb24oKTsg Z28ocGFyc2VJbnQobmF2LmdldEF0dHJpYnV0ZSgnZGF0YS1kaXInKSwxMCksdHJ1ZSkgfSl9KTsKICB0cmFjay5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3du JyxmdW5jdGlvbihlKXsKICAgIGlmKGUua2V5PT09J0Fycm93UmlnaHQnKXtlLnByZXZlbnREZWZhdWx0KCk7Z28oMSx0cnVlKX0KICAgIGlmKGUua2V5PT09 J0Fycm93TGVmdCcpe2UucHJldmVudERlZmF1bHQoKTtnbygtMSx0cnVlKX19KTsKICB2YXIgc3g9MCxzeT0wLGR4PTAsZG93bj1mYWxzZSxkZWNpZGVkPWZh bHNlLGhvcml6PWZhbHNlOwogIHZpZXcuYWRkRXZlbnRMaXN0ZW5lcigncG9pbnRlcmRvd24nLGZ1bmN0aW9uKGUpewogICAgaWYoZS50YXJnZXQuY2xvc2Vz dCgnLmNhci1uYXYsLmNhci1kb3RzJykpcmV0dXJuOwogICAgaWYoYW5pbWF0aW5nKXNldHRsZSgpOwogICAgc3RvcEF1dG8oKTsgZG93bj10cnVlO2RlY2lk ZWQ9ZmFsc2U7aG9yaXo9ZmFsc2U7ZHg9MDtzeD1lLmNsaWVudFg7c3k9ZS5jbGllbnRZOwogIH0pOwogIHZpZXcuYWRkRXZlbnRMaXN0ZW5lcigncG9pbnRl cm1vdmUnLGZ1bmN0aW9uKGUpewogICAgaWYoIWRvd24pcmV0dXJuOwogICAgdmFyIG14PWUuY2xpZW50WC1zeCxteT1lLmNsaWVudFktc3k7CiAgICBpZigh ZGVjaWRlZCl7CiAgICAgIGlmKE1hdGguYWJzKG14KTw2JiZNYXRoLmFicyhteSk8NilyZXR1cm47CiAgICAgIGRlY2lkZWQ9dHJ1ZTtob3Jpej1NYXRoLmFi cyhteCk+TWF0aC5hYnMobXkpOwogICAgICBpZihob3Jpeil7dHJhY2suc3R5bGUudHJhbnNpdGlvbj0nbm9uZSc7dHJ5e3ZpZXcuc2V0UG9pbnRlckNhcHR1 cmUoZS5wb2ludGVySWQpfWNhdGNoKHgpe319CiAgICB9CiAgICBpZighaG9yaXopcmV0dXJuOwogICAgZS5wcmV2ZW50RGVmYXVsdCgpOyBkeD1teDsKICAg IHRyYWNrLnN0eWxlLnRyYW5zZm9ybT0ndHJhbnNsYXRlM2QoJysoLWkqdytkeCkrJ3B4LDAsMCknOwogIH0pOwogIGZ1bmN0aW9uIHJlbGVhc2UoKXsKICAg IGlmKCFkb3duKXJldHVybjsgZG93bj1mYWxzZTsgaWYoIWhvcml6KXJldHVybjsKICAgIHZhciBUSD1NYXRoLm1pbig2NCx3KjAuMTQpOwogICAgaWYoZHg8 PS1USClnbygxLHRydWUpOyBlbHNlIGlmKGR4Pj1USClnbygtMSx0cnVlKTsgZWxzZSBwYWludCh0cnVlKTsKICAgIGR4PTA7CiAgfQogIHZpZXcuYWRkRXZl bnRMaXN0ZW5lcigncG9pbnRlcnVwJyxyZWxlYXNlKTsKICB2aWV3LmFkZEV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJjYW5jZWwnLGZ1bmN0aW9uKCl7ZG93bj1m YWxzZX0pOwogIHZpZXcuYWRkRXZlbnRMaXN0ZW5lcigncG9pbnRlcmxlYXZlJyxyZWxlYXNlKTsKICBtZWFzdXJlKCk7IGFkZEV2ZW50TGlzdGVuZXIoJ3Jl c2l6ZScsbWVhc3VyZSk7IHNldFRpbWVvdXQobWVhc3VyZSwzMDApOyBhZGRFdmVudExpc3RlbmVyKCdsb2FkJyxtZWFzdXJlKTsKICBpZighUk0pewogICAg aWYoJ0ludGVyc2VjdGlvbk9ic2VydmVyJyBpbiB3aW5kb3cpewogICAgICB2YXIgYWlvPW5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcihmdW5jdGlvbihlcyl7 ZXMuZm9yRWFjaChmdW5jdGlvbihlKXsKICAgICAgICBpZihhdXRvU3RvcHBlZCl7YWlvLmRpc2Nvbm5lY3QoKTtwYXVzZUF1dG8oKTtyZXR1cm59CiAgICAg ICAgaWYoZS5pc0ludGVyc2VjdGluZylzdGFydEF1dG8oKTsgZWxzZSBwYXVzZUF1dG8oKTsKICAgICAgfSl9LHtyb290TWFyZ2luOicwcHggMHB4IC0zMCUg MHB4Jyx0aHJlc2hvbGQ6MH0pOwogICAgICBhaW8ub2JzZXJ2ZSh2aWV3KTsKICAgIH0gZWxzZSBzdGFydEF1dG8oKTsKICB9Cn0KYmxvY2soJ2Nhcm91c2Vs LWhlcm8nLGZ1bmN0aW9uKCl7IHNsaWRlcignaGVybycsZmFsc2UpIH0pOwpibG9jaygnY2Fyb3VzZWwtb2InLGZ1bmN0aW9uKCl7IHNsaWRlcignb2InLHRy dWUpIH0pOwoKLyogNSDCtyBhY2NvcmRpb25zIC8gZHJvcGRvd25zICovCmJsb2NrKCdhY2NvcmRpb25zJyxmdW5jdGlvbigpewogIHJvb3QucXVlcnlTZWxl Y3RvckFsbCgnLmFjYy1iJykuZm9yRWFjaChmdW5jdGlvbihiLGkpewogICAgdmFyIHA9Yi5wYXJlbnROb2RlLm5leHRFbGVtZW50U2libGluZzsgaWYoIXAp cmV0dXJuOwogICAgdmFyIGlkPSdhY2NwLScraTsKICAgIHAuaWQ9aWQ7IGIudHlwZT0nYnV0dG9uJzsgYi5zZXRBdHRyaWJ1dGUoJ2FyaWEtY29udHJvbHMn LGlkKTsgcC5zZXRBdHRyaWJ1dGUoJ3JvbGUnLCdyZWdpb24nKTsKICAgIGIuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLGZ1bmN0aW9uKGUpewogICAgICBl LnByZXZlbnREZWZhdWx0KCk7IGUuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgIHZhciBvcGVuPWIuZ2V0QXR0cmlidXRlKCdhcmlhLWV4cGFuZGVkJyk9PT0n dHJ1ZSc7CiAgICAgIGIuc2V0QXR0cmlidXRlKCdhcmlhLWV4cGFuZGVkJyxTdHJpbmcoIW9wZW4pKTsKICAgICAgcC5zdHlsZS5oZWlnaHQ9b3Blbj8nMHB4 JzpwLmZpcnN0RWxlbWVudENoaWxkLm9mZnNldEhlaWdodCsncHgnOwogICAgfSk7CiAgfSk7CiAgYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJyxmdW5jdGlv bigpewogICAgcm9vdC5xdWVyeVNlbGVjdG9yQWxsKCcuYWNjLWJbYXJpYS1leHBhbmRlZD0idHJ1ZSJdJykuZm9yRWFjaChmdW5jdGlvbihiKXsKICAgICAg dmFyIHA9Yi5wYXJlbnROb2RlLm5leHRFbGVtZW50U2libGluZzsgcC5zdHlsZS5oZWlnaHQ9cC5maXJzdEVsZW1lbnRDaGlsZC5vZmZzZXRIZWlnaHQrJ3B4 J30pfSk7Cn0pOwoKLyogNiDCtyBwYWNrIHBpY2tlciAodGhlICJyYWRpbyBidXR0b25zIikgKi8KdmFyIHBhY2tzPXJvb3QucXVlcnlTZWxlY3RvckFsbCgn LmJhbC1wYWNrJyksIG9iQ3RhPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdvYi1jdGEnKTsKZnVuY3Rpb24gcGFja09rKHApeyByZXR1cm4gcCYmIXAuZGlz YWJsZWQmJnAuZ2V0QXR0cmlidXRlKCdhcmlhLWRpc2FibGVkJykhPT0ndHJ1ZScmJnAuZ2V0QXR0cmlidXRlKCdkYXRhLWF2YWlsYWJsZScpIT09J2ZhbHNl JyB9CmZ1bmN0aW9uIGNob3NlbigpeyByZXR1cm4gcm9vdC5xdWVyeVNlbGVjdG9yKCcuYmFsLXBhY2tbYXJpYS1jaGVja2VkPSJ0cnVlIl06bm90KFtkaXNh YmxlZF0pJyl8fFtdLnNsaWNlLmNhbGwocGFja3MpLmZpbHRlcihwYWNrT2spWzBdIH0KZnVuY3Rpb24gc3luY0N0YSgpewogIHZhciBwPWNob3NlbigpOyBp ZighcHx8IW9iQ3RhfHxvYkN0YS5nZXRBdHRyaWJ1dGUoJ2FyaWEtYnVzeScpPT09J3RydWUnKXJldHVybjsKICBvYkN0YS5maXJzdENoaWxkLnRleHRDb250 ZW50PShwLmdldEF0dHJpYnV0ZSgnZGF0YS1jdGEnKXx8J0FkZCB0byBjYXJ0JykrJyAnOwogIG9iQ3RhLnNldEF0dHJpYnV0ZSgnaHJlZicsJy9jYXJ0L2Fk ZD9pZD0nK3AuZ2V0QXR0cmlidXRlKCdkYXRhLXZpZCcpKycmcXVhbnRpdHk9MScpOwogIHZhciBzcD1yb290LnF1ZXJ5U2VsZWN0b3IoJy5zdGlja3ktcCcp LCBwcj1wLnF1ZXJ5U2VsZWN0b3IoJy5iYWwtcGFjay1wJyk7CiAgaWYoc3AmJnByKSBzcC50ZXh0Q29udGVudD1wci50ZXh0Q29udGVudC50cmltKCk7Cn0K ZnVuY3Rpb24gc2VsZWN0UGFjayhwKXsKICBpZighcGFja09rKHApKXJldHVybjsKICBwYWNrcy5mb3JFYWNoKGZ1bmN0aW9uKHgpe3guc2V0QXR0cmlidXRl KCdhcmlhLWNoZWNrZWQnLCdmYWxzZScpfSk7CiAgcC5zZXRBdHRyaWJ1dGUoJ2FyaWEtY2hlY2tlZCcsJ3RydWUnKTsgc3luY0N0YSgpOwp9CmJsb2NrKCdw YWNrcycsZnVuY3Rpb24oKXsKICBwYWNrcy5mb3JFYWNoKGZ1bmN0aW9uKHApeyBwLnR5cGU9J2J1dHRvbic7IHAuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2sn LGZ1bmN0aW9uKGUpeyBlLnByZXZlbnREZWZhdWx0KCk7IHNlbGVjdFBhY2socCkgfSkgfSk7CiAgdmFyIHM9Y2hvc2VuKCk7IGlmKHMpIHNlbGVjdFBhY2so cyk7Cn0pOwoKLyogNyDCtyBsaXZlIENBRCBwcmljZXMgZnJvbSB0aGlzIHN0b3JlJ3MgcHJvZHVjdCBKU09OIChwbGFjZWhvbGRlcnMgc3RheSBpZiBpdCBm YWlscykgKi8KYmxvY2soJ3ByaWNlcycsZnVuY3Rpb24oKXsKICB2YXIgY3VyPSh3aW5kb3cuU2hvcGlmeSYmU2hvcGlmeS5jdXJyZW5jeSYmU2hvcGlmeS5j dXJyZW5jeS5hY3RpdmUpfHxDQS5jdXJyZW5jeTsKICBmdW5jdGlvbiBtb25leShjKXsKICAgIHZhciBzOyB0cnl7IHM9bmV3IEludGwuTnVtYmVyRm9ybWF0 KCdlbi1DQScse3N0eWxlOidjdXJyZW5jeScsY3VycmVuY3k6Y3VyLGN1cnJlbmN5RGlzcGxheTonbmFycm93U3ltYm9sJ30pLmZvcm1hdCgoTnVtYmVyKGMp fHwwKS8xMDApIH0KICAgIGNhdGNoKGUpeyBzPSckJysoKE51bWJlcihjKXx8MCkvMTAwKS50b0ZpeGVkKDIpIH0KICAgIHJldHVybiBzKycgJytjdXI7CiAg fQogIGZ1bmN0aW9uIHNldFByaWNlKGJ0bix2LHJlZil7CiAgICBpZighYnRuKXJldHVybjsKICAgIHZhciBwPWJ0bi5xdWVyeVNlbGVjdG9yKCdbZGF0YS1y b2xlPSJwcmljZSJdJyksd2FzPWJ0bi5xdWVyeVNlbGVjdG9yKCdbZGF0YS1yb2xlPSJjb21wYXJlIl0nKSxzYXZlPWJ0bi5xdWVyeVNlbGVjdG9yKCdbZGF0 YS1yb2xlPSJzYXZlIl0nKTsKICAgIGlmKHApcC50ZXh0Q29udGVudD1tb25leSh2LnByaWNlKTsKICAgIHZhciBzYXZpbmc9TWF0aC5tYXgoMCxyZWYtdi5w cmljZSk7CiAgICBpZih3YXMpe3dhcy50ZXh0Q29udGVudD1tb25leShyZWYpO3dhcy5oaWRkZW49IShzYXZpbmc+MCl9CiAgICBpZihzYXZlKXsgaWYoc2F2 aW5nPjApe3NhdmUuaW5uZXJIVE1MPSc8Yj5TYXZlICcrTWF0aC5yb3VuZChzYXZpbmcqMTAwL3JlZikrJyU8L2I+Jyttb25leShzYXZpbmcpKycgb2ZmJztz YXZlLmhpZGRlbj1mYWxzZX0gZWxzZSBzYXZlLmhpZGRlbj10cnVlIH0KICAgIGJ0bi5zZXRBdHRyaWJ1dGUoJ2RhdGEtdmlkJyxTdHJpbmcodi5pZCkpOwog ICAgYnRuLnNldEF0dHJpYnV0ZSgnZGF0YS1hdmFpbGFibGUnLHYuYXZhaWxhYmxlPyd0cnVlJzonZmFsc2UnKTsKICAgIGJ0bi5kaXNhYmxlZD0hdi5hdmFp bGFibGU7CiAgICBpZighdi5hdmFpbGFibGUpYnRuLnNldEF0dHJpYnV0ZSgnYXJpYS1kaXNhYmxlZCcsJ3RydWUnKTsgZWxzZSBidG4ucmVtb3ZlQXR0cmli dXRlKCdhcmlhLWRpc2FibGVkJyk7CiAgfQogIGZ1bmN0aW9uIGdldChoYW5kbGUpewogICAgcmV0dXJuIGZldGNoKCcvcHJvZHVjdHMvJytoYW5kbGUrJy5q cycse2NyZWRlbnRpYWxzOidzYW1lLW9yaWdpbid9KQogICAgICAudGhlbihmdW5jdGlvbihyKXsgaWYoIXIub2spdGhyb3cgMDsgcmV0dXJuIHIuanNvbigp IH0pCiAgICAgIC50aGVuKGZ1bmN0aW9uKHApeyB2YXIgdj0ocC52YXJpYW50c3x8W10pLmZpbHRlcihmdW5jdGlvbih4KXtyZXR1cm4geC5hdmFpbGFibGV9 KVswXXx8KHAudmFyaWFudHN8fFtdKVswXTsKICAgICAgICByZXR1cm4gdj97aWQ6di5pZCxwcmljZTp2LnByaWNlLGNvbXBhcmU6di5jb21wYXJlX2F0X3By aWNlfHwwLGF2YWlsYWJsZTohIXYuYXZhaWxhYmxlfTpudWxsIH0pCiAgICAgIC5jYXRjaChmdW5jdGlvbigpeyByZXR1cm4gbnVsbCB9KTsKICB9CiAgUHJv bWlzZS5hbGwoW2dldChDQS5vbmUuaGFuZGxlKSxnZXQoQ0EudHdvLmhhbmRsZSldKS50aGVuKGZ1bmN0aW9uKHIpewogICAgdmFyIG9uZT1yWzBdLHR3bz1y WzFdOwogICAgdmFyIGIxPXJvb3QucXVlcnlTZWxlY3RvcignLmJhbC1wYWNrW2RhdGEtcGFjaz0ib25lIl0nKSwgYjI9cm9vdC5xdWVyeVNlbGVjdG9yKCcu YmFsLXBhY2tbZGF0YS1wYWNrPSJ0d28iXScpOwogICAgaWYob25lKSBzZXRQcmljZShiMSxvbmUsb25lLmNvbXBhcmU+b25lLnByaWNlP29uZS5jb21wYXJl OjApOwogICAgaWYodHdvKSBzZXRQcmljZShiMix0d28sdHdvLmNvbXBhcmU+dHdvLnByaWNlP3R3by5jb21wYXJlOigob25lP29uZS5wcmljZTpDQS5vbmUu cHJpY2UpKjIpKTsKICAgIGlmKGIyJiYhcGFja09rKGIyKSYmcGFja09rKGIxKSkgc2VsZWN0UGFjayhiMSk7IGVsc2Ugc3luY0N0YSgpOwogIH0pOwp9KTsK Ci8qIDggwrcgYWRkIHRvIGNhcnQgKi8KYmxvY2soJ2NhcnQnLGZ1bmN0aW9uKCl7CiAgaWYoIW9iQ3RhKXJldHVybjsKICB2YXIgYXJyb3c9b2JDdGEucXVl cnlTZWxlY3RvcignLmFyJyk7CiAgZnVuY3Rpb24gdHh0KHQpeyBvYkN0YS5maXJzdENoaWxkLnRleHRDb250ZW50PXQrJyAnOyBpZihhcnJvdylhcnJvdy50 ZXh0Q29udGVudD0nJyB9CiAgZnVuY3Rpb24gZ29DYXJ0KHUpeyB0eHQoJ0dvaW5nIHRvIGNhcnQuLi4nKTsgc2V0VGltZW91dChmdW5jdGlvbigpe2xvY2F0 aW9uLmhyZWY9dX0sMTIwKSB9CiAgb2JDdGEuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLGZ1bmN0aW9uKGUpewogICAgdmFyIHA9Y2hvc2VuKCksIGlkPXAm JnAuZ2V0QXR0cmlidXRlKCdkYXRhLXZpZCcpOyBpZighaWQpcmV0dXJuOwogICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgaWYob2JDdGEuZGF0YXNldC5i dXN5PT09J3RydWUnKXJldHVybjsKICAgIG9iQ3RhLmRhdGFzZXQuYnVzeT0ndHJ1ZSc7IG9iQ3RhLnNldEF0dHJpYnV0ZSgnYXJpYS1idXN5JywndHJ1ZScp OwogICAgdHh0KCdBZGRpbmcgdG8gY2FydC4uLicpOwogICAgZmV0Y2goJy9jYXJ0L2FkZC5qcycse21ldGhvZDonUE9TVCcsY3JlZGVudGlhbHM6J3NhbWUt b3JpZ2luJyxoZWFkZXJzOnsnQ29udGVudC1UeXBlJzonYXBwbGljYXRpb24vanNvbid9LAogICAgICBib2R5OkpTT04uc3RyaW5naWZ5KHtpZDpOdW1iZXIo aWQpLHF1YW50aXR5OjF9KX0pCiAgICAgIC50aGVuKGZ1bmN0aW9uKHIpeyBpZighci5vayl0aHJvdyAwOyBnb0NhcnQoJy9jYXJ0JykgfSkKICAgICAgLmNh dGNoKGZ1bmN0aW9uKCl7IGdvQ2FydCgnL2NhcnQvYWRkP2lkPScraWQrJyZxdWFudGl0eT0xJykgfSk7CiAgfSk7Cn0pOwoKLyogOSDCtyBDVEEgcmlwcGxl ICovCmJsb2NrKCdyaXBwbGUnLGZ1bmN0aW9uKCl7CiAgcm9vdC5xdWVyeVNlbGVjdG9yQWxsKCcuY3RhJykuZm9yRWFjaChmdW5jdGlvbihidG4pewogICAg YnRuLmFkZEV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJkb3duJyxmdW5jdGlvbihlKXsKICAgICAgaWYoUk0pcmV0dXJuOwogICAgICB2YXIgcj1idG4uZ2V0Qm91 bmRpbmdDbGllbnRSZWN0KCksZD1NYXRoLm1heChyLndpZHRoLHIuaGVpZ2h0KSoyLjEscz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7CiAgICAg IHMuY2xhc3NOYW1lPSdyaXAnOyBzLnN0eWxlLndpZHRoPXMuc3R5bGUuaGVpZ2h0PWQrJ3B4JzsKICAgICAgcy5zdHlsZS5sZWZ0PShlLmNsaWVudFgtci5s ZWZ0LWQvMikrJ3B4Jzsgcy5zdHlsZS50b3A9KGUuY2xpZW50WS1yLnRvcC1kLzIpKydweCc7CiAgICAgIGJ0bi5hcHBlbmRDaGlsZChzKTsgc2V0VGltZW91 dChmdW5jdGlvbigpe3MucmVtb3ZlKCl9LDY0MCk7CiAgICB9KTsKICB9KTsKfSk7CgovKiAxMCDCtyBzbW9vdGggc2Nyb2xsIHRvIHRoZSBvcmRlciBib3gg Ki8KYmxvY2soJ3Njcm9sbCcsZnVuY3Rpb24oKXsKICB2YXIgb3JkZXI9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ29yZGVyJyk7IGlmKCFvcmRlcilyZXR1 cm47CiAgcm9vdC5xdWVyeVNlbGVjdG9yQWxsKCdhW2hyZWY9IiNvcmRlciJdJykuZm9yRWFjaChmdW5jdGlvbihhKXsKICAgIGEuYWRkRXZlbnRMaXN0ZW5l cignY2xpY2snLGZ1bmN0aW9uKGUpewogICAgICBlLnByZXZlbnREZWZhdWx0KCk7IGUuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgIHZhciB5PW9yZGVyLmdl dEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCt3aW5kb3cucGFnZVlPZmZzZXQtNTQ7CiAgICAgIHRyeXsgd2luZG93LnNjcm9sbFRvKHt0b3A6TWF0aC5tYXgo MCx5KSxiZWhhdmlvcjpSTT8nYXV0byc6J3Ntb290aCd9KSB9Y2F0Y2goeCl7IHdpbmRvdy5zY3JvbGxUbygwLE1hdGgubWF4KDAseSkpIH0KICAgIH0sdHJ1 ZSk7CiAgfSk7Cn0pOwoKLyogMTEgwrcgc3RpY2t5IGJhcjogb25seSBhZnRlciB0aGUgb3JkZXIgYm94ICovCmJsb2NrKCdzdGlja3knLGZ1bmN0aW9uKCl7 CiAgdmFyIHN0PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzdGlja3knKSwgYWM9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FjYy1vYicpOyBpZighc3R8 fCFhYylyZXR1cm47CiAgdmFyIHJhZj1udWxsOwogIGZ1bmN0aW9uIHVwZCgpeyByYWY9bnVsbDsgc3QuY2xhc3NMaXN0LnRvZ2dsZSgnb24nLHdpbmRvdy5z Y3JvbGxZK3dpbmRvdy5pbm5lckhlaWdodD5hYy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3Ard2luZG93LnNjcm9sbFkpIH0KICBhZGRFdmVudExpc3Rl bmVyKCdzY3JvbGwnLGZ1bmN0aW9uKCl7IGlmKCFyYWYpcmFmPXJlcXVlc3RBbmltYXRpb25GcmFtZSh1cGQpIH0se3Bhc3NpdmU6dHJ1ZX0pOwogIGFkZEV2 ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsdXBkKTsgdXBkKCk7Cn0pOwoKLyogMTIgwrcgYW5pbWF0ZWQgcHJvZHVjdCBtb21lbnQgKi8KYmxvY2soJ21vbWVudCcs ZnVuY3Rpb24oKXsKICB2YXIgY3Y9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2N2Jyk7IGlmKCFjdnx8IWN2LmdldENvbnRleHQpcmV0dXJuOwogIHZhciBG Uj1bXTsgZm9yKHZhciBmPTA7ZjwzNjtmKyspIEZSLnB1c2goQ0EuY2RuKydiYWwtZnJhbWUtJysoZjwxMD8nMCc6JycpK2YrJy53ZWJwJyk7CiAgdmFyIFc9 NzAwLEg9MTQxNyxOPUZSLmxlbmd0aCwgY3g9Y3YuZ2V0Q29udGV4dCgnMmQnLHthbHBoYTp0cnVlfSk7CiAgdmFyIGdsb3c9ZG9jdW1lbnQuZ2V0RWxlbWVu dEJ5SWQoJ2dsb3cnKSx0eXA9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3R5cGUnKSxraWNrPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdraWNrZXInKSwK ICAgICAgcnVsZT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncnVsZScpLHBuPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwbmFtZScpLHN0YWdlPWRvY3Vt ZW50LmdldEVsZW1lbnRCeUlkKCdzdGFnZScpLAogICAgICBCT1g9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2JyYW5jaEJveCcpLFNQMT1kb2N1bWVudC5n ZXRFbGVtZW50QnlJZCgnc3AxJyksU1AyPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzcDInKTsKICBpZighc3RhZ2V8fCFCT1h8fCFTUDF8fCFTUDIpcmV0 dXJuOwogIHZhciBpbWdzPVtdLGxvYWRlZD0wOwogIEZSLmZvckVhY2goZnVuY3Rpb24odSxpKXsgdmFyIGltPW5ldyBJbWFnZSgpOyBpbS5vbmxvYWQ9aW0u b25lcnJvcj1mdW5jdGlvbigpeyBpZigrK2xvYWRlZD09PU4pcmVhZHkoKSB9OyBpbS5zcmM9dTsgaW1nc1tpXT1pbSB9KTsKICB2YXIgY3VyPS0xOwogIGZ1 bmN0aW9uIGRyYXcoaSl7IGlmKGk9PT1jdXIpcmV0dXJuOyBjdXI9aTsgY3guY2xlYXJSZWN0KDAsMCxXLEgpOyB2YXIgaW09aW1nc1tpXTsgaWYoaW0mJmlt LmNvbXBsZXRlJiZpbS5uYXR1cmFsV2lkdGgpY3guZHJhd0ltYWdlKGltLDAsMCxXLEgpIH0KICBmdW5jdGlvbiBjbCh2LGEsYil7IHJldHVybiB2PGE/YToo dj5iP2I6dikgfQogIGZ1bmN0aW9uIHNnKHAsYSxiKXsgcmV0dXJuIGNsKChwLWEpLyhiLWEpLDAsMSkgfQogIGZ1bmN0aW9uIG9jKHQpeyByZXR1cm4gMS1N YXRoLnBvdygxLXQsMykgfQogIHZhciBMMT1TUDEuZ2V0VG90YWxMZW5ndGgoKSxMMj1TUDIuZ2V0VG90YWxMZW5ndGgoKTsKICBTUDEuc3R5bGUuc3Ryb2tl RGFzaGFycmF5PUwxOyBTUDIuc3R5bGUuc3Ryb2tlRGFzaGFycmF5PUwyOwogIHZhciBCUz1bMC41MTA0NiwwLjU1NjQ5LDAuNDE0MjMsMC4zNDcyOCwwLjY1 MjcyLDAuNjc3ODIsMC4zMTc5OSwwLjY5MDM4LDAuMzA1NDQsMC42OTQ1NiwwLjI4NDUyLDAuNzE1NDgsMC43NDg5NSwwLjI0Njg2LDAuNzkwNzksMC4yMDky MSwwLjgwMzM1LDAuMTkyNDcsMC44MzI2NCwwLjE2MzE4LDAuMTQ2NDQsMC44NTc3NCwwLjE0MjI2LDAuODYxOTIsMC44OTk1OCwwLjEwMDQyLDAuMDk2MjMs MC45NDU2MSwwLjk0NTYxLDAuMDU0MzksMC4wNTQzOSwwLjk1ODE2LDAuOTcwNzEsMC4wMjkyOSwxLDEsMCwwLDEsMSwxLDEsMSwwLDAsMCwwLDBdLFMwPTAu NDk3OTE7CiAgdmFyIEZMPXsxMDoxLDExOjEsMjA6MSwyMzoxLDM0OjEsMzU6MSwzNjoxLDM3OjF9OwogIHZhciBCUD1CUy5tYXAoZnVuY3Rpb24ocyxpKXsg cmV0dXJuIHtlbDpkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYnAnK2kpLHQ6RkxbaV0/J2YnOidsJyxzOnN9IH0pLmZpbHRlcihmdW5jdGlvbihxKXtyZXR1 cm4gcS5lbH0pOwogIHZhciBCU0g9MC44NSxCUl9SRUw9MS4xMjI0LEJSX0NZPTAuNTAsQlJfQVI9MS4zMDc2OwogIGZ1bmN0aW9uIGxheW91dCgpewogICAg dmFyIGN3PWN2Lm9mZnNldFdpZHRoLGNoPWN2Lm9mZnNldEhlaWdodCxjbDI9Y3Yub2Zmc2V0TGVmdCxjdD1jdi5vZmZzZXRUb3A7CiAgICB2YXIgYnc9TWF0 aC5taW4oY3cqQlJfUkVMLHN0YWdlLmNsaWVudFdpZHRoKjAuOTkpLGJoPWJ3KkJSX0FSOwogICAgQk9YLnN0eWxlLndpZHRoPWJ3KydweCc7IEJPWC5zdHls ZS5oZWlnaHQ9YmgrJ3B4JzsKICAgIEJPWC5zdHlsZS5sZWZ0PShjbDItYncvMikrJ3B4JzsgQk9YLnN0eWxlLnRvcD0oY3QrY2gqQlJfQ1ktYmgvMikrJ3B4 JzsKICAgIEJPWC5zdHlsZS50cmFuc2Zvcm1PcmlnaW49JzUwJSAnKygoMC41KzAuMzgqY2gvYmgpKjEwMCkudG9GaXhlZCgyKSsnJSc7CiAgfQogIHZhciBE VVI9MjQwMCxUUD0wLHQwPTAscnVubmluZz1mYWxzZSxzdGFydGVkPWZhbHNlLHJhZj1udWxsOwogIGZ1bmN0aW9uIHRpY2soKXsgdmFyIGU9KHBlcmZvcm1h bmNlLm5vdygpLXQwKS9EVVI7IFRQPWU8MD8wOihlPjE/MTplKTsgdXBkKCk7IGlmKFRQPDEpcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHRpY2spOyBlbHNlIHJ1 bm5pbmc9ZmFsc2UgfQogIGZ1bmN0aW9uIGdhdGVBdCgpeyB2YXIgdj1wYXJzZUZsb2F0KGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZG9jdW1lbnRFbGVt ZW50KS5nZXRQcm9wZXJ0eVZhbHVlKCctLW1vbWVudC1zdGFydCcpKTsgcmV0dXJuIGlzTmFOKHYpPzAuNjI6diB9CiAgZnVuY3Rpb24gZ2F0ZSgpewogICAg aWYoc3RhcnRlZClyZXR1cm47CiAgICBpZihzdGFnZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3A8PWlubmVySGVpZ2h0KmdhdGVBdCgpKXsKICAgICAg c3RhcnRlZD10cnVlOyBpZihSTSl7VFA9MTt1cGQoKX0gZWxzZSB7dDA9cGVyZm9ybWFuY2Uubm93KCk7cnVubmluZz10cnVlO3RpY2soKX0KICAgIH0KICB9 CiAgZnVuY3Rpb24gdXBkKCl7CiAgICByYWY9bnVsbDsgdmFyIHA9VFA7CiAgICB2YXIgazE9c2cocCwwLjAyLDAuMTEpOyBraWNrLnN0eWxlLm9wYWNpdHk9 azEudG9GaXhlZCgzKTsga2ljay5zdHlsZS50cmFuc2Zvcm09J3RyYW5zbGF0ZVkoJysoKDEtb2MoazEpKSoxNCkudG9GaXhlZCgyKSsncHgpJzsKICAgIHZh ciBrMj1zZyhwLDAuMTQsMC4yNCk7IHJ1bGUuc3R5bGUud2lkdGg9KG9jKGsyKSoxNTApLnRvRml4ZWQoMSkrJ3B4JzsKICAgIHZhciBrMz1zZyhwLDAuMTgs MC4zMCk7IHBuLnN0eWxlLm9wYWNpdHk9azMudG9GaXhlZCgzKTsgcG4uc3R5bGUudHJhbnNmb3JtPSd0cmFuc2xhdGVZKCcrKCgxLW9jKGszKSkqMTYpLnRv Rml4ZWQoMikrJ3B4KSc7CiAgICB2YXIgazQ9b2Moc2cocCwwLjMwLDAuNTIpKTsgdHlwLnN0eWxlLnRyYW5zZm9ybT0ndHJhbnNsYXRlWSgnKygoMS1rNCkq MzQpLnRvRml4ZWQoMikrJ3ZoKSBzY2FsZSgnKygxLWs0KjAuMTIpLnRvRml4ZWQoNCkrJyknOwogICAgdmFyIGVhPW9jKHNnKHAsMC4zMiwwLjYyKSksIHQ9 c2cocCwwLjMyLDAuOTIpLCBTUExJVD0xOCwgQj0wLjcwNDM7CiAgICB2YXIgaz0odDw9Qik/KHQvQikqU1BMSVQ6U1BMSVQrKCh0LUIpLygxLUIpKSooTi0x LVNQTElUKTsKICAgIGRyYXcoTWF0aC5yb3VuZChrKSk7CiAgICBjdi5zdHlsZS5vcGFjaXR5PXNnKHAsMC4zMiwwLjQyKS50b0ZpeGVkKDMpOwogICAgY3Yu c3R5bGUudHJhbnNmb3JtPSd0cmFuc2xhdGUoLTUwJSwnKygoMS1lYSkqOCkudG9GaXhlZCgyKSsndmgpIHNjYWxlKCcrKCgwLjU2KzAuNDQqZWEpKkJTSCku dG9GaXhlZCg0KSsnKSc7CiAgICB2YXIgYmw9KDEtc2cocCwwLjMyLDAuNDQpKSoyLjY7IGN2LnN0eWxlLmZpbHRlcj0oUk18fGJsPDAuMDYpPydub25lJzon Ymx1cignK2JsLnRvRml4ZWQoMikrJ3B4KSc7CiAgICB2YXIgRz1vYyhzZyhwLDAuNTAsMC45MCkpKjEuMjA7CiAgICBCT1guc3R5bGUub3BhY2l0eT0oc2co cCwwLjUwLDAuNjApKjAuNjApLnRvRml4ZWQoMyk7CiAgICBCT1guc3R5bGUudHJhbnNmb3JtPSdzY2FsZSgnKygoMC41NiswLjQ0KmVhKSpCU0gpLnRvRml4 ZWQoNCkrJyknOwogICAgdmFyIEdzPU1hdGgubWluKDEsRyk7CiAgICBTUDEuc3R5bGUuc3Ryb2tlRGFzaG9mZnNldD0oTDEqKDEtR3MpKS50b0ZpeGVkKDEp OyBTUDIuc3R5bGUuc3Ryb2tlRGFzaG9mZnNldD0oTDIqKDEtR3MpKS50b0ZpeGVkKDEpOwogICAgQlAuZm9yRWFjaChmdW5jdGlvbihxKXsKICAgICAgdmFy IHJlYWNoPU1hdGguYWJzKHEucy1TMCkvTWF0aC5tYXgoUzAsMS1TMCksIHU9Y2woKEctcmVhY2gpLzAuMTYsMCwxKSwgZT1vYyh1KSwgcz1xLmVsLnN0eWxl OwogICAgICBzLm9wYWNpdHk9ZS50b0ZpeGVkKDMpOwogICAgICBpZihxLnQ9PT0nZicpeyB2YXIgb3Y9MSswLjA5Kk1hdGguc2luKE1hdGguUEkqTWF0aC5t aW4oMSx1KjEuMTUpKTsKICAgICAgICBzLmNsaXBQYXRoPSdjaXJjbGUoJysoZSo2MikudG9GaXhlZCgxKSsnJSBhdCA1MCUgNTAlKSc7CiAgICAgICAgcy50 cmFuc2Zvcm09J3NjYWxlKCcrKDAuNDUrMC41NSplKSpvdisnKSByb3RhdGUoJysoKDEtZSkqLTIyKS50b0ZpeGVkKDEpKydkZWcpJzsKICAgICAgfSBlbHNl IHMudHJhbnNmb3JtPSdzY2FsZSgnKygwLjA4KzAuOTIqZSkudG9GaXhlZCgzKSsnKSByb3RhdGUoJysoKDEtZSkqKHEuczxTMD85Oi05KSkudG9GaXhlZCgx KSsnZGVnKSc7CiAgICB9KTsKICAgIHZhciBnPXNnKHAsMC4yOCwwLjgwKTsKICAgIGdsb3cuc3R5bGUub3BhY2l0eT0oZyowLjk1KS50b0ZpeGVkKDMpOwog ICAgZ2xvdy5zdHlsZS50cmFuc2Zvcm09J3RyYW5zbGF0ZSgtNTAlLC01MCUpIHNjYWxlKCcrKDAuODArMC4yMCpnKS50b0ZpeGVkKDMpKycpJzsKICB9CiAg ZnVuY3Rpb24gb25TKCl7IGdhdGUoKTsgaWYoIXJ1bm5pbmcmJiFyYWYpcmFmPXJlcXVlc3RBbmltYXRpb25GcmFtZSh1cGQpIH0KICBmdW5jdGlvbiByZWFk eSgpeyBsYXlvdXQoKTsgZHJhdygwKTsgdXBkKCk7IGFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsb25TLHtwYXNzaXZlOnRydWV9KTsgYWRkRXZlbnRMaXN0 ZW5lcigncmVzaXplJyxmdW5jdGlvbigpe2xheW91dCgpO29uUygpfSk7IG9uUygpIH0KfSk7CgovKiAxMyDCtyBpbWFnZSBzYWZldHkgbmV0OiBicm9rZW4g Y3VzdG9tIGltYWdlIOKGkiBaaXBpZnktaG9zdGVkIENBIGltYWdlICovCmJsb2NrKCdpbWFnZXMnLGZ1bmN0aW9uKCl7CiAgdmFyIEZQPSdodHRwczovL2Nk bjA1LnppcGlmeS5jb20vX0lFSlZ4eHhleDZxZW1rbEJldnhuSDI3VU9VJTNELzB4MCUzQTE5MjB4MTkyMC9maXQtaW4vMTA4MHgwL2I1ZTRkNTEwNzliODRj MTFiNzBmMjdlYzc2NTJjOTY1L2JhbGFheWFoLW9nLXBkcDItbm8tZ2FwLndlYnAnLAogICAgICBGSz0naHR0cHM6Ly9jZG4wNS56aXBpZnkuY29tL2dxVVlm U3I3YVZGbV9uVnRDZ2steXB5Y2RQTSUzRC9maXQtaW4vMTA4MHgwLzI5YzNlZDIzYTQxZTQ4MjBiYjYwNzcxNjI5ZTYzZDE4L2JhbGFheWFoLndlYnAnLAog ICAgICBGST0naHR0cHM6Ly9jZG4wNS56aXBpZnkuY29tL1hpakJEWTFWSEthZlFGVTJETzZ5SjFSQVpOTSUzRC9maXQtaW4vMzg0MHgwLzYzZDM3ZDY4MTJk MDQ2MzliNzA5YzMzZTRhMjQ0ODRlL2kzLndlYnAnOwogIHJvb3QucXVlcnlTZWxlY3RvckFsbCgnaW1nJykuZm9yRWFjaChmdW5jdGlvbihpbWcpewogICAg aW1nLmFkZEV2ZW50TGlzdGVuZXIoJ2Vycm9yJyxmdW5jdGlvbigpewogICAgICBpZihpbWcuY2xhc3NMaXN0LmNvbnRhaW5zKCdicGFydCcpKXtpbWcuc3R5 bGUuZGlzcGxheT0nbm9uZSc7cmV0dXJufQogICAgICB2YXIgdT1pbWcuY2xvc2VzdCgnLmljYXJkJyk/Rkk6KGltZy5jbG9zZXN0KCcuYmFsLXBhY2staW0s LnN0aWNreS10aCcpP0ZLOkZQKTsKICAgICAgaWYoaW1nLnNyYyE9PXUpIGltZy5zcmM9dTsKICAgIH0se29uY2U6dHJ1ZX0pOwogIH0pOwp9KTsKCi8qIDE0 IMK3IEp1ZGdlLm1lIHJlc2NhbiAqLwpzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7IHRyeXsgaWYod2luZG93LmpkZ20mJmpkZ20ud2lkZ2V0cyYmdHlwZW9mIGpk Z20ud2lkZ2V0cy5yZWxvYWQ9PT0nZnVuY3Rpb24nKWpkZ20ud2lkZ2V0cy5yZWxvYWQoKSB9Y2F0Y2goZSl7fSB9LDMwMCk7CgppZih3aW5kb3cuY29uc29s ZSkgY29uc29sZS5pbmZvKCdbQmFsYWF5YWggQ0FdIGVuZ2luZSBib290ZWQnKTsKfSkoKTsK

    Restore your harmony, every day

    • IOS
    • Google Play Store
    • Email us: care@theayurvedaexperience.ca
    • Call us: +1(678)-498-7248
    QUICK LINKS
    • Help Center

    • Search

    • Home

    • All Products

    • About Us

    • Become An Affiliate

    • Get SMS/WhatsApp updates

    POLICIES
    • Shipping & Delivery

    • Privacy Policy

    • Exchange & Refunds

    • Terms of Use

    CUSTOMER SERVICES
    • Contact Us

    • My Account

    • Track Your Order

    • AyuRewards

    • Book A Consultation

    The Ayurveda Experience Footer Image

    © 2026 The Ayurveda Experience CA .

    American Express Apple Pay Diners Club Discover Google Pay Mastercard PayPal Shop Pay Visa

    * Disclaimer: Please click here to see the usage of cookies. Packaging may vary from images shown on the website. Results may vary from person to person. In compliance with FTC rulings, we cannot guarantee that these results are typical. Images used across the website are for representation purpose only. The user experiences displayed on this page, if any, are a small sample of the thousands of accounts sent to us by people who have used products and materials developed by Transformative Learning Pte. Ltd. Nothing on this website may be viewed as the diagnosis or treatment of any medical disease whatsoever. If you have a health condition or may be allergic to herbs, please check with your physician before using the products. Please read the list of ingredients carefully and identify any ingredients that you may be allergic to. Patch test products before use.
    The contents of the educational video courses on this website are the opinions of the authors based on their learning and experiences. The Ayurveda Experience is not liable or responsible for the suggestions made herein, as this content is meant only for educational purposes. Please consult your primary care physician before implementing any change in your diet or lifestyle. For any further information please contact care@theayurvedaexperience.ca