Tag Archive | "conflict"

How can you handle difficult people?


There are times in every person’s life when people feel difficult.  They hurt your feelings, let you down, frustrate you, and simply mess with you.  What do you do?  How do you respond?  What’s the best way to handle a difficult person?  Check out 2 Timothy 2:23-26:

23 Again I say, don’t get involved in foolish, ignorant arguments that only start fights.24 A servant of the Lord must not quarrel but must be kind to everyone, be able to teach, and be patient with difficult people.25 Gently instruct those who oppose the truth. Perhaps God will change those people’s hearts, and they will learn the truth.26 Then they will come to their senses and escape from the devil’s trap. For they have been held captive by him to do whatever he wants.

The bible is full of brilliant advice on how to handle your relationships, the difficult part is following through and being obedient to the word!  I am truly convinced, after 15 years of working with couples in conflict, that the best thing you can do when frustrated with your spouse is be patient and loving.  Unless you are being abused emotionally or physically, of course.

How could you live 2 Timothy 2:24 this week with your spouse?  Leave a comment and let us know what you want to do this week to love your spouse like you are challenged in 2 Timothy.

Posted in Communication, Conflict Resolution, Featured, Forgiveness, MarriageView Comments

Couple Communication for Anger Management


An article on communication I found helpful:

Couples can use the language between them to make love or to make war. Sadly, verbal aggression can be a dangerous trigger to destructive exchanges or even physical violence. Effective communication techniques, on the other hand, help couples manage difficulties and anger in a way that is constructive and adds to relationship satisfaction.

When working with couples to develop more effective communication skills we always ask:

Do you speak in a way that makes your partner listen? Do you listen in a way that makes your partner speak?

If when he walks in she says “ You really don’t get it – I do everything in this house and you do nothing!” There is a very good chance that he will walk right past her into another room, flick on the remote and respond with a comparable put-down.

Essentially this couple would have enacted what is labeled by Christensen and Heavey ( 1990) as the “ demand/withdrawal” sequence in which a complaint or demand made by a partner in a negative way predictably triggers the other partner’s withdrawal and defensiveness. His refusal to listen and in most cases his actual withdrawal is likely to escalate her negative feelings and “ keep her speaking” but not in a positive way. Soon he will be telling her “ She never lets up.” The pattern leaves them both feeling victimized and angry. The chances of mutual understanding or positive resolutions are very low.

Effective Couple Communication Techniques

Drawing upon couple communication ideas offered in two of my previous blogs, (Couples Psychological First Aid and Reconsidering the Anger in Your Relationship) we might suggest to her that she communicate her needs at a more appropriate time ( A partner’s first steps into the house are never a good time) and with an “ I message” – “I’m not sure I can manage all the chores.” “I think I need some help.”

via Couple Communication for Anger Management | Healing Together for Couples.

Posted in Conflict ResolutionView Comments

Blaming Others for Our Shortcomings


When conflict raises its ugly head in your relationships, where do you place blame? Your spouse? Kids? Boss? Job? Church? Money?

Maybe you’re a blamer. Frustrated with your job, you struggle through all of your relationships. You blame your problems on trivial things. Blaming others make winning almost impossible because arguments and fighting usually result.

I encourage you to resist making “you” statements such as, “You’re the one who needs to change,” “You should have warned me that our marriage was in trouble,” “You’re not the same woman I married,” and “You weren’t submissive enough,” as reasons for your behavior. These “you” statements are devastating, and they seldom improve your situation.

Using a statement such as, “You were just too sensitive,” stirs up more anger. As this happens, the blaming backfires and exposes your resistance to improve or change.

You are not at the mercy of those who push your buttons. They do not have to control how you react. You do not have to give them the power to determine what you think or what you do. You must take control of yourself and your emotions. You must learn that blaming others for our insecurities and fears is a dead end.

When we stop blaming others for our shortcomings, we diffuse anger and resolve conflicts.

Posted in Conflict ResolutionView Comments

The command to forgive


I admit the Bible can sometimes be difficult to interpret and understand. However, when it comes to the command to forgive, the Bible is very obvious in what is expected of Christians. “Therefore, if you are offering your gift at the altar and there remember that your sister or brother has something against you leave your gift there in front of the alter. “First go and be reconciled to your brother, then come and offer your gift,” Matthew 5:23-24.

It is next to impossible to have an open heart, receptive to God’s will, if we are in serious conflict with others. God desires a sincere gift, not tarnished with unreconciled differences and past hurts. We are responsible to make sure people we have offended, or been offended by, are freed from the bondage’s of anger, vengeance, or hate.

So is anyone excluded from receiving our forgiveness? According to Matthew 5:44-48, even our enemies are worthy of forgiveness:

“But I tell you: Love your enemies and pray for those who persecute you, that you may be sons of your Father in heaven. He causes his sun to rise on the evil and the good, and sends rain on the righteous and the unrighteous. If you love those who love you, what reward will you get? Are not even the tax collectors doing that? And if you greet only your brothers, what are you doing more than others? Do not even pagans do that? Be perfect, therefore, as your heavenly Father is perfect.”

What a verse! Again it touches on the very nature of our incredible God who is merciful and gracious to all. We are called to be perfect, “as your heavenly Father is perfect”. Understanding that we cannot be perfect while existing on this planet, the verse is calling us to strive for Christ’s perfection. Christ’s willingness to love those who were unlovable. To care for those who were prostitutes, thieves, and yes, even tax collectors. To forgive those who most offend us. Why our enemies? God knows how much unresolved anger kills the spirit within, and designs this command to help free us from eternal regret.

No one is to be excluded from our forgiveness. Some of the greatest verses exploring the complexity of forgiveness are Romans 12:14-21. We will quote the passage at length because of their foundational quality regarding forgiveness:

“Bless those who persecute you; bless and do not curse. Rejoice with those who rejoice; mourn with those who mourn. Live I harmony with one another. Do not be proud, but be willing to associate with people of low position. Do not be conceited. Do not repay anyone evil for evil. Be careful to do what is right in the eyes of everybody. If it is possible, as far as it depends on you, live at peace with everyone. Do not take revenge, my friends, but leave room for God’s wrath, for it is written: ‘It is mine to avenge; I will repay,’ says the Lord. On the contrary:
‘If your enemy is hungry, feed him;
if he is thirsty, give him something to drink.
In doing this, you will heap burning coals on his head.’”
We are encouraged to bless people who persecute us. To some Christians, and probably many nonChristians, this seems very masochistic. Bless our enemies! Sure, if we were Christ maybe we could pull that off, but we are human. Remember, being human means we are created in God’s image, therefore we have the capacity to pull this off. Trust in God that this humanitarian rule serves to better the human condition rather than defile it. Think of all the hate crimes that never seem to find a resolution. This idea of blessing reminds us of turning the other cheek. Evil begets evil and love begets love.

In the passage we also read, “In doing this, you will heap burning coals on his head”. When I first read this passage I imagined that forgiveness and love toward those who hurt us is painful for the perpetrator. My mind wanted to believe that loving and forgiving made evil people suffer. However, this was not Christ’s message. In further study I learned the custom of placing hot coals on someone’s head was actually a kind gesture. A surprise to me! I’m not sure how I would receive someone placing hot coals on my head. But it was a different time.

Placing coals on someone’s head was helpful because it kept the weary traveler warm throughout the cold desert nights. It was a way of honoring someone. This is why we are commanded to forgive. Remember the “Golden Rule”? We need to do for others what we would want done to us. Would we want someone to refuse to forgive us because we sinned against him or her?

Posted in FeaturedView Comments

Solving the Muslim and Christian conflict – and how that can save your marriage


The Muslim-Christian Conflict

I imagine there are people reading this entry who feel a lot like the middle east in their marriage. Thousands of years of fighting, no resolution in sight, cease fires that never last, and hopelessness about the future.

It doesn’t have to be this way.

I’m reading a good book by Joseph Girzone titled, “Joshua in a troubled world”.

Joshua, who is Jesus in our time, has a very creative solution to solving the mid east crisis between Jews and Arabs. You’ll have to read the book to get the whole story. But here’s what is important. You can’t solve any kind of conflict, whether it’s in the Middle East or in your living room by taking opposite sides in the issue.

You have to realize that you’re on the same team or the conflict will never get solved. The second step is that you have to offer forgiveness, without strings attached. Retribution only keeps the cylce of hate moving. Forgiveness stops it dead in its tracks. Nelson Mandela is an excellent real world example of this kind of attitude.

In your marriage you have to take up the business of working as a team and constantly forgiving each other.  There should be no limits to how much you forgive each other in a marriage!  Marriage works for couples who are willing to work together toward the common goal of happiness.  If you do not want to work together then you will not experience the joy you intended when you first got married.

Posted in Conflict Resolution, MarriageView Comments

Things you can never say in a fight


Your most treasured relationships should be protected from certain statements or words.  Notice how I don’t say all of your relationships, because quite frankly, we can be cruelest to the people we love the most.  Why – because we actually care more about the people closest to us than we do about strangers.  I don’t believe this is wrong, it’s simply natural.

I would need serious medication if I kept treating total strangers like I treat my own family.  We are harder on the people we actually care about, which is why we need to put some structure on what we say and don’t say.

Following is a list of things you should not say in a fight that some of my counselors and retreat attendees at The Smalley Marriage and Family Center came up with:

  • Don’t use never or always in statements (this only causes defensiveness and raises the intensity of the conflict)
  • Don’t comment on the person’s appearance negatively
  • Don’t bring up the past and use it against someone
  • Don’t curse at each other
  • Don’t mention divorce (I can not stress this one enough; you can never threaten divorce because you can never take that statement back)
  • Don’t say “I hate you!”
  • Don’t say “You’re just like your mother!” (in other words, try and keep extended family out of the argument)
  • Don’t use “You” in blaming, intense sentences
  • Don’t make personal attacks like, “You’re so lazy!” “You’re worthless!”
  • Don’t turn the table on someone, in other words, you can’t say something like “Well, I’m not the only one who doesn’t clean the house…you…”
  • Don’t kitchen sink (which means you can’t bring up everything the person has ever done to you.  Keep it to the here and now.)

Copy and print this list and put it somewhere so you can be reminded of how to keep your conflict as safe as possible.

Posted in Dating, Featured, Marriage, Parenting, The Top PostsView Comments

advert

PHVsPjxsaT48c3Ryb25nPndvb19hZHNfcm90YXRlPC9zdHJvbmc+IC0gdHJ1ZTwvbGk+PGxpPjxzdHJvbmc+d29vX2FkXzIwMF9hZHNlbnNlPC9zdHJvbmc+IC0gPCEtLS8qIE9wZW5YIEphdmFzY3JpcHQgVGFnIHYyLjguMi1yYzI1ICovLS0+DQoNCjxzY3JpcHQgdHlwZT1cJ3RleHQvamF2YXNjcmlwdFwnPjwhLS0vLzwhW0NEQVRBWw0KICAgdmFyIG0zX3UgPSAobG9jYXRpb24ucHJvdG9jb2w9PVwnaHR0cHM6XCc/XCdodHRwczovL2QxLm9wZW54Lm9yZy9hanMucGhwXCc6XCdodHRwOi8vZDEub3Blbngub3JnL2Fqcy5waHBcJyk7DQogICB2YXIgbTNfciA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSo5OTk5OTk5OTk5OSk7DQogICBpZiAoIWRvY3VtZW50Lk1BWF91c2VkKSBkb2N1bWVudC5NQVhfdXNlZCA9IFwnLFwnOw0KICAgZG9jdW1lbnQud3JpdGUgKFwiPHNjclwiK1wiaXB0IHR5cGU9XCd0ZXh0L2phdmFzY3JpcHRcJyBzcmM9XCdcIittM191KTsNCiAgIGRvY3VtZW50LndyaXRlIChcIj96b25laWQ9ODM4OTYmYW1wO3RhcmdldD1fdG9wXCIpOw0KICAgZG9jdW1lbnQud3JpdGUgKFwnJmFtcDtjYj1cJyArIG0zX3IpOw0KICAgaWYgKGRvY3VtZW50Lk1BWF91c2VkICE9IFwnLFwnKSBkb2N1bWVudC53cml0ZSAoXCImYW1wO2V4Y2x1ZGU9XCIgKyBkb2N1bWVudC5NQVhfdXNlZCk7DQogICBkb2N1bWVudC53cml0ZSAoZG9jdW1lbnQuY2hhcnNldCA/IFwnJmFtcDtjaGFyc2V0PVwnK2RvY3VtZW50LmNoYXJzZXQgOiAoZG9jdW1lbnQuY2hhcmFjdGVyU2V0ID8gXCcmYW1wO2NoYXJzZXQ9XCcrZG9jdW1lbnQuY2hhcmFjdGVyU2V0IDogXCdcJykpOw0KICAgZG9jdW1lbnQud3JpdGUgKFwiJmFtcDtsb2M9XCIgKyBlc2NhcGUod2luZG93LmxvY2F0aW9uKSk7DQogICBpZiAoZG9jdW1lbnQucmVmZXJyZXIpIGRvY3VtZW50LndyaXRlIChcIiZhbXA7cmVmZXJlcj1cIiArIGVzY2FwZShkb2N1bWVudC5yZWZlcnJlcikpOw0KICAgaWYgKGRvY3VtZW50LmNvbnRleHQpIGRvY3VtZW50LndyaXRlIChcIiZjb250ZXh0PVwiICsgZXNjYXBlKGRvY3VtZW50LmNvbnRleHQpKTsNCiAgIGlmIChkb2N1bWVudC5tbW1fZm8pIGRvY3VtZW50LndyaXRlIChcIiZhbXA7bW1tX2ZvPTFcIik7DQogICBkb2N1bWVudC53cml0ZSAoXCJcJz48XFwvc2NyXCIrXCJpcHQ+XCIpOw0KLy9dXT4tLT48L3NjcmlwdD48bm9zY3JpcHQ+PGEgaHJlZj1cJ2h0dHA6Ly9kMS5vcGVueC5vcmcvY2sucGhwP249YTdmOTg4ZTAmY2I9SU5TRVJUX1JBTkRPTV9OVU1CRVJfSEVSRVwnIHRhcmdldD1cJ190b3BcJz48aW1nIHNyYz1cJ2h0dHA6Ly9kMS5vcGVueC5vcmcvYXZ3LnBocD96b25laWQ9ODM4OTYmY2I9SU5TRVJUX1JBTkRPTV9OVU1CRVJfSEVSRSZuPWE3Zjk4OGUwXCcgYm9yZGVyPVwnMFwnIGFsdD1cJ1wnIC8+PC9hPjwvbm9zY3JpcHQ+PC9saT48bGk+PHN0cm9uZz53b29fYWRfMjAwX2ltYWdlPC9zdHJvbmc+IC0gPC9saT48bGk+PHN0cm9uZz53b29fYWRfMjAwX3VybDwvc3Ryb25nPiAtIDwvbGk+PGxpPjxzdHJvbmc+d29vX2FkXzI1MF9hZHNlbnNlPC9zdHJvbmc+IC0gPC9saT48bGk+PHN0cm9uZz53b29fYWRfMjUwX2ltYWdlPC9zdHJvbmc+IC0gaHR0cDovL3NtYWxsZXkuY2MvaW1hZ2VzL0FzTG9uZ0FzV2VCb3RoLTI1MHgyNTAuanBnPC9saT48bGk+PHN0cm9uZz53b29fYWRfMjUwX3VybDwvc3Ryb25nPiAtIGh0dHA6Ly9zbWFsbGV5b25saW5lc3RvcmUuY29tL2FzbG9uZ2Fzd2Vib3Roc2hhbGxsaXZlLmFzcHg8L2xpPjxsaT48c3Ryb25nPndvb19hZF9jb250ZW50X2Fkc2Vuc2U8L3N0cm9uZz4gLSA8IS0tLyogT3BlblggSmF2YXNjcmlwdCBUYWcgdjIuOC41IChSaWNoIE1lZGlhIC0gT3BlblgpICovLS0+Cgo8IS0tLyoKICAqIFRoZSBiYWNrdXAgaW1hZ2Ugc2VjdGlvbiBvZiB0aGlzIHRhZyBoYXMgYmVlbiBnZW5lcmF0ZWQgZm9yIHVzZSBvbiBhCiAgKiBub24tU1NMIHBhZ2UuIElmIHRoaXMgdGFnIGlzIHRvIGJlIHBsYWNlZCBvbiBhbiBTU0wgcGFnZSwgY2hhbmdlIHRoZQogICogICBcJ2h0dHA6Ly9kMS5vcGVueC5vcmcvLi4uXCcKICAqIHRvCiAgKiAgIFwnaHR0cHM6Ly9kMS5vcGVueC5vcmcvLi4uXCcKICAqCiAgKiBUaGlzIG5vc2NyaXB0IHNlY3Rpb24gb2YgdGhpcyB0YWcgb25seSBzaG93cyBpbWFnZSBiYW5uZXJzLiBUaGVyZQogICogaXMgbm8gd2lkdGggb3IgaGVpZ2h0IGluIHRoZXNlIGJhbm5lcnMsIHNvIGlmIHlvdSB3YW50IHRoZXNlIHRhZ3MgdG8KICAqIGFsbG9jYXRlIHNwYWNlIGZvciB0aGUgYWQgYmVmb3JlIGl0IHNob3dzLCB5b3Ugd2lsbCBuZWVkIHRvIGFkZCB0aGlzCiAgKiBpbmZvcm1hdGlvbiB0byB0aGUgPGltZz4gdGFnLgogICoKICAqIElmIHlvdSBkbyBub3Qgd2FudCB0byBkZWFsIHdpdGggdGhlIGludHJpY2l0aWVzIG9mIHRoZSBub3NjcmlwdAogICogc2VjdGlvbiwgZGVsZXRlIHRoZSB0YWcgKGZyb20gPG5vc2NyaXB0Pi4uLiB0byA8L25vc2NyaXB0PikuIE9uCiAgKiBhdmVyYWdlLCB0aGUgbm9zY3JpcHQgdGFnIGlzIGNhbGxlZCBmcm9tIGxlc3MgdGhhbiAxJSBvZiBpbnRlcm5ldAogICogdXNlcnMuCiAgKi8tLT4KCjxzY3JpcHQgdHlwZT1cJ3RleHQvamF2YXNjcmlwdFwnPjwhLS0vLzwhW0NEQVRBWwogICBkb2N1bWVudC5NQVhfY3QwID1cJ3tjbGlja3VybH1cJzsKCiAgIHZhciBtM191ID0gKGxvY2F0aW9uLnByb3RvY29sPT1cJ2h0dHBzOlwnP1wnaHR0cHM6Ly9kMS5vcGVueC5vcmcvYWpzLnBocFwnOlwnaHR0cDovL2QxLm9wZW54Lm9yZy9hanMucGhwXCcpOwogICB2YXIgbTNfciA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSo5OTk5OTk5OTk5OSk7CiAgIGlmICghZG9jdW1lbnQuTUFYX3VzZWQpIGRvY3VtZW50Lk1BWF91c2VkID0gXCcsXCc7CiAgIGRvY3VtZW50LndyaXRlICgiPHNjciIrImlwdCB0eXBlPVwndGV4dC9qYXZhc2NyaXB0XCcgc3JjPVwnIittM191KTsKICAgZG9jdW1lbnQud3JpdGUgKCI/em9uZWlkPTExODE0OSIpOwogICBkb2N1bWVudC53cml0ZSAoXCcmYW1wO2NiPVwnICsgbTNfcik7CiAgIGlmIChkb2N1bWVudC5NQVhfdXNlZCAhPSBcJyxcJykgZG9jdW1lbnQud3JpdGUgKCImYW1wO2V4Y2x1ZGU9IiArIGRvY3VtZW50Lk1BWF91c2VkKTsKICAgZG9jdW1lbnQud3JpdGUgKGRvY3VtZW50LmNoYXJzZXQgPyBcJyZhbXA7Y2hhcnNldD1cJytkb2N1bWVudC5jaGFyc2V0IDogKGRvY3VtZW50LmNoYXJhY3RlclNldCA/IFwnJmFtcDtjaGFyc2V0PVwnK2RvY3VtZW50LmNoYXJhY3RlclNldCA6IFwnXCcpKTsKICAgZG9jdW1lbnQud3JpdGUgKCImYW1wO2xvYz0iICsgZXNjYXBlKHdpbmRvdy5sb2NhdGlvbikpOwogICBpZiAoZG9jdW1lbnQucmVmZXJyZXIpIGRvY3VtZW50LndyaXRlICgiJmFtcDtyZWZlcmVyPSIgKyBlc2NhcGUoZG9jdW1lbnQucmVmZXJyZXIpKTsKICAgaWYgKGRvY3VtZW50LmNvbnRleHQpIGRvY3VtZW50LndyaXRlICgiJmNvbnRleHQ9IiArIGVzY2FwZShkb2N1bWVudC5jb250ZXh0KSk7CiAgIGlmICgodHlwZW9mKGRvY3VtZW50Lk1BWF9jdDApICE9IFwndW5kZWZpbmVkXCcpICYmIChkb2N1bWVudC5NQVhfY3QwLnN1YnN0cmluZygwLDQpID09IFwnaHR0cFwnKSkgewogICAgICAgZG9jdW1lbnQud3JpdGUgKCImYW1wO2N0MD0iICsgZXNjYXBlKGRvY3VtZW50Lk1BWF9jdDApKTsKICAgfQogICBpZiAoZG9jdW1lbnQubW1tX2ZvKSBkb2N1bWVudC53cml0ZSAoIiZhbXA7bW1tX2ZvPTEiKTsKICAgZG9jdW1lbnQud3JpdGUgKCJcJz48L3NjciIrImlwdD4iKTsKLy9dXT4tLT48L3NjcmlwdD48bm9zY3JpcHQ+PGEgaHJlZj1cJ2h0dHA6Ly9kMS5vcGVueC5vcmcvY2sucGhwP249YTU0ZWFmZmEmY2I9e3JhbmRvbX1cJyB0YXJnZXQ9XCdfYmxhbmtcJz48aW1nIHNyYz1cJ2h0dHA6Ly9kMS5vcGVueC5vcmcvYXZ3LnBocD96b25laWQ9MTE4MTQ5JmNiPXtyYW5kb219Jm49YTU0ZWFmZmEmY3QwPXtjbGlja3VybH1cJyBib3JkZXI9XCcwXCcgYWx0PVwnXCcgLz48L2E+PC9ub3NjcmlwdD48L2xpPjxsaT48c3Ryb25nPndvb19hZF9jb250ZW50X2Rpc2FibGU8L3N0cm9uZz4gLSBmYWxzZTwvbGk+PGxpPjxzdHJvbmc+d29vX2FkX2NvbnRlbnRfaW1hZ2U8L3N0cm9uZz4gLSBodHRwOi8vd3d3Lndvb3RoZW1lcy5jb20vYWRzL3dvb3RoZW1lcy00Njh4NjAtMi5naWY8L2xpPjxsaT48c3Ryb25nPndvb19hZF9jb250ZW50X3VybDwvc3Ryb25nPiAtIGh0dHA6Ly93d3cud29vdGhlbWVzLmNvbTwvbGk+PGxpPjxzdHJvbmc+d29vX2FkX2ltYWdlXzE8L3N0cm9uZz4gLSBodHRwOi8vc21hbGxleS5jYy9pbWFnZXMvTmV3bHl3ZWRLaXQtMTI1eDEyNS5wbmc8L2xpPjxsaT48c3Ryb25nPndvb19hZF9pbWFnZV8yPC9zdHJvbmc+IC0gaHR0cDovL3NtYWxsZXkuY2MvaW1hZ2VzL1dvcmtib29rcy0xMjV4MTI1LnBuZzwvbGk+PGxpPjxzdHJvbmc+d29vX2FkX2ltYWdlXzM8L3N0cm9uZz4gLSBodHRwOi8vc21hbGxleS5jYy9pbWFnZXMvRW1icmFjZS0xMjV4MTI1LnBuZzwvbGk+PGxpPjxzdHJvbmc+d29vX2FkX2ltYWdlXzQ8L3N0cm9uZz4gLSBodHRwOi8vc21hbGxleS5jYy9pbWFnZXMvUFlGLTEyNXgxMjUuanBnPC9saT48bGk+PHN0cm9uZz53b29fYWRfaW1hZ2VfNTwvc3Ryb25nPiAtIGh0dHA6Ly93d3cud29vdGhlbWVzLmNvbS9hZHMvd29vdGhlbWVzLTEyNXgxMjUtNC5naWY8L2xpPjxsaT48c3Ryb25nPndvb19hZF9pbWFnZV82PC9zdHJvbmc+IC0gaHR0cDovL3d3dy53b290aGVtZXMuY29tL2Fkcy93b290aGVtZXMtMTI1eDEyNS00LmdpZjwvbGk+PGxpPjxzdHJvbmc+d29vX2FkX21wdV9hZHNlbnNlPC9zdHJvbmc+IC0gPC9saT48bGk+PHN0cm9uZz53b29fYWRfbXB1X2Rpc2FibGU8L3N0cm9uZz4gLSBmYWxzZTwvbGk+PGxpPjxzdHJvbmc+d29vX2FkX21wdV9pbWFnZTwvc3Ryb25nPiAtIGh0dHA6Ly9zbWFsbGV5LmNjL2ltYWdlcy9ETkEtMzAwWDI1MC5qcGc8L2xpPjxsaT48c3Ryb25nPndvb19hZF9tcHVfdXJsPC9zdHJvbmc+IC0gaHR0cDovL3NtYWxsZXlvbmxpbmVzdG9yZS5jb20vZG5hb2ZyZWxhdGlvbnNoaXBzc2VyaWVzb25kdmQuYXNweDwvbGk+PGxpPjxzdHJvbmc+d29vX2FkX3RvcF9hZHNlbnNlPC9zdHJvbmc+IC0gPCEtLS8qIE9wZW5YIEphdmFzY3JpcHQgVGFnIHYyLjguNSAoUmljaCBNZWRpYSAtIE9wZW5YKSAqLy0tPg0KDQo8IS0tLyoNCiAgKiBUaGUgYmFja3VwIGltYWdlIHNlY3Rpb24gb2YgdGhpcyB0YWcgaGFzIGJlZW4gZ2VuZXJhdGVkIGZvciB1c2Ugb24gYQ0KICAqIG5vbi1TU0wgcGFnZS4gSWYgdGhpcyB0YWcgaXMgdG8gYmUgcGxhY2VkIG9uIGFuIFNTTCBwYWdlLCBjaGFuZ2UgdGhlDQogICogICBcJ2h0dHA6Ly9kMS5vcGVueC5vcmcvLi4uXCcNCiAgKiB0bw0KICAqICAgXCdodHRwczovL2QxLm9wZW54Lm9yZy8uLi5cJw0KICAqDQogICogVGhpcyBub3NjcmlwdCBzZWN0aW9uIG9mIHRoaXMgdGFnIG9ubHkgc2hvd3MgaW1hZ2UgYmFubmVycy4gVGhlcmUNCiAgKiBpcyBubyB3aWR0aCBvciBoZWlnaHQgaW4gdGhlc2UgYmFubmVycywgc28gaWYgeW91IHdhbnQgdGhlc2UgdGFncyB0bw0KICAqIGFsbG9jYXRlIHNwYWNlIGZvciB0aGUgYWQgYmVmb3JlIGl0IHNob3dzLCB5b3Ugd2lsbCBuZWVkIHRvIGFkZCB0aGlzDQogICogaW5mb3JtYXRpb24gdG8gdGhlIDxpbWc+IHRhZy4NCiAgKg0KICAqIElmIHlvdSBkbyBub3Qgd2FudCB0byBkZWFsIHdpdGggdGhlIGludHJpY2l0aWVzIG9mIHRoZSBub3NjcmlwdA0KICAqIHNlY3Rpb24sIGRlbGV0ZSB0aGUgdGFnIChmcm9tIDxub3NjcmlwdD4uLi4gdG8gPC9ub3NjcmlwdD4pLiBPbg0KICAqIGF2ZXJhZ2UsIHRoZSBub3NjcmlwdCB0YWcgaXMgY2FsbGVkIGZyb20gbGVzcyB0aGFuIDElIG9mIGludGVybmV0DQogICogdXNlcnMuDQogICovLS0+DQoNCjxzY3JpcHQgdHlwZT1cJ3RleHQvamF2YXNjcmlwdFwnPjwhLS0vLzwhW0NEQVRBWw0KICAgZG9jdW1lbnQuTUFYX2N0MCA9XCd7Y2xpY2t1cmx9XCc7DQoNCiAgIHZhciBtM191ID0gKGxvY2F0aW9uLnByb3RvY29sPT1cJ2h0dHBzOlwnP1wnaHR0cHM6Ly9kMS5vcGVueC5vcmcvYWpzLnBocFwnOlwnaHR0cDovL2QxLm9wZW54Lm9yZy9hanMucGhwXCcpOw0KICAgdmFyIG0zX3IgPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqOTk5OTk5OTk5OTkpOw0KICAgaWYgKCFkb2N1bWVudC5NQVhfdXNlZCkgZG9jdW1lbnQuTUFYX3VzZWQgPSBcJyxcJzsNCiAgIGRvY3VtZW50LndyaXRlIChcIjxzY3JcIitcImlwdCB0eXBlPVwndGV4dC9qYXZhc2NyaXB0XCcgc3JjPVwnXCIrbTNfdSk7DQogICBkb2N1bWVudC53cml0ZSAoXCI/em9uZWlkPTY0NTgyXCIpOw0KICAgZG9jdW1lbnQud3JpdGUgKFwnJmFtcDtjYj1cJyArIG0zX3IpOw0KICAgaWYgKGRvY3VtZW50Lk1BWF91c2VkICE9IFwnLFwnKSBkb2N1bWVudC53cml0ZSAoXCImYW1wO2V4Y2x1ZGU9XCIgKyBkb2N1bWVudC5NQVhfdXNlZCk7DQogICBkb2N1bWVudC53cml0ZSAoZG9jdW1lbnQuY2hhcnNldCA/IFwnJmFtcDtjaGFyc2V0PVwnK2RvY3VtZW50LmNoYXJzZXQgOiAoZG9jdW1lbnQuY2hhcmFjdGVyU2V0ID8gXCcmYW1wO2NoYXJzZXQ9XCcrZG9jdW1lbnQuY2hhcmFjdGVyU2V0IDogXCdcJykpOw0KICAgZG9jdW1lbnQud3JpdGUgKFwiJmFtcDtsb2M9XCIgKyBlc2NhcGUod2luZG93LmxvY2F0aW9uKSk7DQogICBpZiAoZG9jdW1lbnQucmVmZXJyZXIpIGRvY3VtZW50LndyaXRlIChcIiZhbXA7cmVmZXJlcj1cIiArIGVzY2FwZShkb2N1bWVudC5yZWZlcnJlcikpOw0KICAgaWYgKGRvY3VtZW50LmNvbnRleHQpIGRvY3VtZW50LndyaXRlIChcIiZjb250ZXh0PVwiICsgZXNjYXBlKGRvY3VtZW50LmNvbnRleHQpKTsNCiAgIGlmICgodHlwZW9mKGRvY3VtZW50Lk1BWF9jdDApICE9IFwndW5kZWZpbmVkXCcpICYmIChkb2N1bWVudC5NQVhfY3QwLnN1YnN0cmluZygwLDQpID09IFwnaHR0cFwnKSkgew0KICAgICAgIGRvY3VtZW50LndyaXRlIChcIiZhbXA7Y3QwPVwiICsgZXNjYXBlKGRvY3VtZW50Lk1BWF9jdDApKTsNCiAgIH0NCiAgIGlmIChkb2N1bWVudC5tbW1fZm8pIGRvY3VtZW50LndyaXRlIChcIiZhbXA7bW1tX2ZvPTFcIik7DQogICBkb2N1bWVudC53cml0ZSAoXCJcJz48L3NjclwiK1wiaXB0PlwiKTsNCi8vXV0+LS0+PC9zY3JpcHQ+PG5vc2NyaXB0PjxhIGhyZWY9XCdodHRwOi8vZDEub3Blbngub3JnL2NrLnBocD9uPWExZGMxZDRmJmNiPXtyYW5kb219XCcgdGFyZ2V0PVwnX2JsYW5rXCc+PGltZyBzcmM9XCdodHRwOi8vZDEub3Blbngub3JnL2F2dy5waHA/em9uZWlkPTY0NTgyJmNiPXtyYW5kb219Jm49YTFkYzFkNGYmY3QwPXtjbGlja3VybH1cJyBib3JkZXI9XCcwXCcgYWx0PVwnXCcgLz48L2E+PC9ub3NjcmlwdD48L2xpPjxsaT48c3Ryb25nPndvb19hZF90b3BfZGlzYWJsZTwvc3Ryb25nPiAtIGZhbHNlPC9saT48bGk+PHN0cm9uZz53b29fYWRfdG9wX2ltYWdlPC9zdHJvbmc+IC0gaHR0cDovL3d3dy53b290aGVtZXMuY29tL2Fkcy93b290aGVtZXMtNDY4eDYwLTIuZ2lmPC9saT48bGk+PHN0cm9uZz53b29fYWRfdG9wX3VybDwvc3Ryb25nPiAtIGh0dHA6Ly93d3cud29vdGhlbWVzLmNvbTwvbGk+PGxpPjxzdHJvbmc+d29vX2FkX3VybF8xPC9zdHJvbmc+IC0gaHR0cDovL3NtYWxsZXlvbmxpbmVzdG9yZS5jb20vdGhlbmV3bHl3ZWRraXQuYXNweDwvbGk+PGxpPjxzdHJvbmc+d29vX2FkX3VybF8yPC9zdHJvbmc+IC0gaHR0cDovL3NtYWxsZXlvbmxpbmVzdG9yZS5jb20vd29ya2Jvb2tzc3R1ZHlndWlkZXMuYXNweDwvbGk+PGxpPjxzdHJvbmc+d29vX2FkX3VybF8zPC9zdHJvbmc+IC0gaHR0cDovL3NtYWxsZXlvbmxpbmVzdG9yZS5jb20vZW1icmFjZS10aGVtYXJyaWFnZXNlbWluYXJhdWRpb3Nlcmllcy5hc3B4PC9saT48bGk+PHN0cm9uZz53b29fYWRfdXJsXzQ8L3N0cm9uZz4gLSBodHRwOi8vc21hbGxleW9ubGluZXN0b3JlLmNvbTwvbGk+PGxpPjxzdHJvbmc+d29vX2FkX3VybF81PC9zdHJvbmc+IC0gaHR0cDovL3d3dy53b290aGVtZXMuY29tPC9saT48bGk+PHN0cm9uZz53b29fYWRfdXJsXzY8L3N0cm9uZz4gLSBodHRwOi8vd3d3Lndvb3RoZW1lcy5jb208L2xpPjxsaT48c3Ryb25nPndvb19hbHRfc3R5bGVzaGVldDwvc3Ryb25nPiAtIGRlZmF1bHQuY3NzPC9saT48bGk+PHN0cm9uZz53b29fYXJjaGl2ZV9ib3hlczwvc3Ryb25nPiAtIE9uPC9saT48bGk+PHN0cm9uZz53b29fYXJjaGl2ZV9jb250ZW50PC9zdHJvbmc+IC0gdHJ1ZTwvbGk+PGxpPjxzdHJvbmc+d29vX2F1dGhvcjwvc3Ryb25nPiAtIHRydWU8L2xpPjxsaT48c3Ryb25nPndvb19hdXRvX2ltZzwvc3Ryb25nPiAtIGZhbHNlPC9saT48bGk+PHN0cm9uZz53b29fYm94ZWRfdGh1bWJfaGVpZ2h0PC9zdHJvbmc+IC0gMTAwPC9saT48bGk+PHN0cm9uZz53b29fYm94ZWRfdGh1bWJfd2lkdGg8L3N0cm9uZz4gLSAyMzQ8L2xpPjxsaT48c3Ryb25nPndvb19icmVhZGNydW1iczwvc3Ryb25nPiAtIGZhbHNlPC9saT48bGk+PHN0cm9uZz53b29fYnV5X3RoZW1lczwvc3Ryb25nPiAtIHRydWU8L2xpPjxsaT48c3Ryb25nPndvb19jYXJvdXNlbF9oZWlnaHQ8L3N0cm9uZz4gLSAyOTI8L2xpPjxsaT48c3Ryb25nPndvb19jYXRuYXZfZXhjbHVkZTwvc3Ryb25nPiAtIDwvbGk+PGxpPjxzdHJvbmc+d29vX2NhdF9leDwvc3Ryb25nPiAtIDwvbGk+PGxpPjxzdHJvbmc+d29vX2NhdF9tZW51PC9zdHJvbmc+IC0gZmFsc2U8L2xpPjxsaT48c3Ryb25nPndvb19jb21tZW50X3Bvc3RzPC9zdHJvbmc+IC0gNTwvbGk+PGxpPjxzdHJvbmc+d29vX2NvbnRhY3Rmb3JtX2VtYWlsPC9zdHJvbmc+IC0gaW5mb0BzbWFsbGV5LmNjPC9saT48bGk+PHN0cm9uZz53b29fY29udGVudDwvc3Ryb25nPiAtIGZhbHNlPC9saT48bGk+PHN0cm9uZz53b29fY29udGVudF9hcmNoaXZlczwvc3Ryb25nPiAtIGZhbHNlPC9saT48bGk+PHN0cm9uZz53b29fY29udGVudF9mZWF0PC9zdHJvbmc+IC0gZmFsc2U8L2xpPjxsaT48c3Ryb25nPndvb19jdXN0b21fY3NzPC9zdHJvbmc+IC0gPC9saT48bGk+PHN0cm9uZz53b29fY3VzdG9tX2Zhdmljb248L3N0cm9uZz4gLSA8L2xpPjxsaT48c3Ryb25nPndvb19jdXN0b21fdXBsb2FkX3RyYWNraW5nPC9zdHJvbmc+IC0gYToxOntpOjA7YTo0OntzOjQ6ImZpbGUiO3M6NjA6Ii9ob21lcGFnZXMvMjQvZDE5MjcwNzQ1MC9odGRvY3MvR29TbWFsbGV5L2ltYWdlcy9kYXRpbmcyLmpwZyI7czozOiJ1cmwiO3M6MzY6Imh0dHA6Ly9zbWFsbGV5LmNjL2ltYWdlcy9kYXRpbmcyLmpwZyI7czo0OiJ0eXBlIjtzOjEwOiJpbWFnZS9qcGVnIjtzOjExOiJvcHRpb25fbmFtZSI7czo1OiJJbWFnZSI7fX08L2xpPjxsaT48c3Ryb25nPndvb19lbWJlZDwvc3Ryb25nPiAtIHRydWU8L2xpPjxsaT48c3Ryb25nPndvb19mZWF0dXJlZF9jYXRlZ29yeTwvc3Ryb25nPiAtIEZlYXR1cmVkPC9saT48bGk+PHN0cm9uZz53b29fZmVhdHVyZWRfcG9zdHM8L3N0cm9uZz4gLSAxPC9saT48bGk+PHN0cm9uZz53b29fZmVhdHVyZWRfdGFnczwvc3Ryb25nPiAtIDwvbGk+PGxpPjxzdHJvbmc+d29vX2ZlYXRfZW50cmllczwvc3Ryb25nPiAtIDQ8L2xpPjxsaT48c3Ryb25nPndvb19mZWVkYnVybmVyX2lkPC9zdHJvbmc+IC0gPC9saT48bGk+PHN0cm9uZz53b29fZmVlZGJ1cm5lcl91cmw8L3N0cm9uZz4gLSA8L2xpPjxsaT48c3Ryb25nPndvb19mb290ZXJfY3JlZGl0czwvc3Ryb25nPiAtIDwvbGk+PGxpPjxzdHJvbmc+d29vX2Zvb3Rlcl9pbWFnZTwvc3Ryb25nPiAtIDwvbGk+PGxpPjxzdHJvbmc+d29vX2ZyYW1ld29ya191cGRhdGU8L3N0cm9uZz4gLSBmYWxzZTwvbGk+PGxpPjxzdHJvbmc+d29vX2ZyYW1ld29ya192ZXJzaW9uPC9zdHJvbmc+IC0gMi41LjM8L2xpPjxsaT48c3Ryb25nPndvb19mdWxsX3RodW1iX2hlaWdodDwvc3Ryb25nPiAtIDE4MDwvbGk+PGxpPjxzdHJvbmc+d29vX2Z1bGxfdGh1bWJfd2lkdGg8L3N0cm9uZz4gLSA1NjA8L2xpPjxsaT48c3Ryb25nPndvb19nZXRfaW1hZ2VfaGVpZ2h0PC9zdHJvbmc+IC0gMTQyPC9saT48bGk+PHN0cm9uZz53b29fZ2V0X2ltYWdlX3dpZHRoPC9zdHJvbmc+IC0gMTkwPC9saT48bGk+PHN0cm9uZz53b29fZ29vZ2xlX2FuYWx5dGljczwvc3Ryb25nPiAtIDwvbGk+PGxpPjxzdHJvbmc+d29vX2hvbWU8L3N0cm9uZz4gLSBmYWxzZTwvbGk+PGxpPjxzdHJvbmc+d29vX2hvbWVfYXJjPC9zdHJvbmc+IC0gZmFsc2U8L2xpPjxsaT48c3Ryb25nPndvb19ob21lX2JveGVzPC9zdHJvbmc+IC0gT248L2xpPjxsaT48c3Ryb25nPndvb19ob21lX2NvbnRlbnQ8L3N0cm9uZz4gLSBmYWxzZTwvbGk+PGxpPjxzdHJvbmc+d29vX2hvbWVfZmVhdHVyZWQ8L3N0cm9uZz4gLSB0cnVlPC9saT48bGk+PHN0cm9uZz53b29faG9tZV9saW5rPC9zdHJvbmc+IC0gdHJ1ZTwvbGk+PGxpPjxzdHJvbmc+d29vX2hvbWVfbGlua19kZXNjPC9zdHJvbmc+IC0gPC9saT48bGk+PHN0cm9uZz53b29faG9tZV9saW5rX3RleHQ8L3N0cm9uZz4gLSBIb21lPC9saT48bGk+PHN0cm9uZz53b29faG9tZV90aHVtYl9oZWlnaHQ8L3N0cm9uZz4gLSA5MjwvbGk+PGxpPjxzdHJvbmc+d29vX2hvbWVfdGh1bWJfd2lkdGg8L3N0cm9uZz4gLSAyNDc8L2xpPjxsaT48c3Ryb25nPndvb19pbWFnZV9oZWlnaHQ8L3N0cm9uZz4gLSAyMTA8L2xpPjxsaT48c3Ryb25nPndvb19pbWFnZV9zaW5nbGU8L3N0cm9uZz4gLSBmYWxzZTwvbGk+PGxpPjxzdHJvbmc+d29vX2ltYWdlX3dpZHRoPC9zdHJvbmc+IC0gNTQwPC9saT48bGk+PHN0cm9uZz53b29fbG9nbzwvc3Ryb25nPiAtIGh0dHA6Ly9zbWFsbGV5LmNjL2ltYWdlcy9TSVRFLUhFQURFUjEucG5nPC9saT48bGk+PHN0cm9uZz53b29fbWFudWFsPC9zdHJvbmc+IC0gaHR0cDovL3d3dy53b290aGVtZXMuY29tL3N1cHBvcnQvdGhlbWUtZG9jdW1lbnRhdGlvbi9nYXpldHRlLWVkaXRpb24vPC9saT48bGk+PHN0cm9uZz53b29fbmF2X2V4Y2x1ZGU8L3N0cm9uZz4gLSA8L2xpPjxsaT48c3Ryb25nPndvb19vcHRpb25zPC9zdHJvbmc+IC0gYToxMDc6e3M6MTQ6Indvb19hZHNfcm90YXRlIjtzOjQ6InRydWUiO3M6MTg6Indvb19hZF8yMDBfYWRzZW5zZSI7czoxMzM4OiI8IS0tLyogT3BlblggSmF2YXNjcmlwdCBUYWcgdjIuOC4yLXJjMjUgKi8tLT4NCg0KPHNjcmlwdCB0eXBlPVwndGV4dC9qYXZhc2NyaXB0XCc+PCEtLS8vPCFbQ0RBVEFbDQogICB2YXIgbTNfdSA9IChsb2NhdGlvbi5wcm90b2NvbD09XCdodHRwczpcJz9cJ2h0dHBzOi8vZDEub3Blbngub3JnL2Fqcy5waHBcJzpcJ2h0dHA6Ly9kMS5vcGVueC5vcmcvYWpzLnBocFwnKTsNCiAgIHZhciBtM19yID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKjk5OTk5OTk5OTk5KTsNCiAgIGlmICghZG9jdW1lbnQuTUFYX3VzZWQpIGRvY3VtZW50Lk1BWF91c2VkID0gXCcsXCc7DQogICBkb2N1bWVudC53cml0ZSAoXCI8c2NyXCIrXCJpcHQgdHlwZT1cJ3RleHQvamF2YXNjcmlwdFwnIHNyYz1cJ1wiK20zX3UpOw0KICAgZG9jdW1lbnQud3JpdGUgKFwiP3pvbmVpZD04Mzg5NiZhbXA7dGFyZ2V0PV90b3BcIik7DQogICBkb2N1bWVudC53cml0ZSAoXCcmYW1wO2NiPVwnICsgbTNfcik7DQogICBpZiAoZG9jdW1lbnQuTUFYX3VzZWQgIT0gXCcsXCcpIGRvY3VtZW50LndyaXRlIChcIiZhbXA7ZXhjbHVkZT1cIiArIGRvY3VtZW50Lk1BWF91c2VkKTsNCiAgIGRvY3VtZW50LndyaXRlIChkb2N1bWVudC5jaGFyc2V0ID8gXCcmYW1wO2NoYXJzZXQ9XCcrZG9jdW1lbnQuY2hhcnNldCA6IChkb2N1bWVudC5jaGFyYWN0ZXJTZXQgPyBcJyZhbXA7Y2hhcnNldD1cJytkb2N1bWVudC5jaGFyYWN0ZXJTZXQgOiBcJ1wnKSk7DQogICBkb2N1bWVudC53cml0ZSAoXCImYW1wO2xvYz1cIiArIGVzY2FwZSh3aW5kb3cubG9jYXRpb24pKTsNCiAgIGlmIChkb2N1bWVudC5yZWZlcnJlcikgZG9jdW1lbnQud3JpdGUgKFwiJmFtcDtyZWZlcmVyPVwiICsgZXNjYXBlKGRvY3VtZW50LnJlZmVycmVyKSk7DQogICBpZiAoZG9jdW1lbnQuY29udGV4dCkgZG9jdW1lbnQud3JpdGUgKFwiJmNvbnRleHQ9XCIgKyBlc2NhcGUoZG9jdW1lbnQuY29udGV4dCkpOw0KICAgaWYgKGRvY3VtZW50Lm1tbV9mbykgZG9jdW1lbnQud3JpdGUgKFwiJmFtcDttbW1fZm89MVwiKTsNCiAgIGRvY3VtZW50LndyaXRlIChcIlwnPjxcXC9zY3JcIitcImlwdD5cIik7DQovL11dPi0tPjwvc2NyaXB0Pjxub3NjcmlwdD48YSBocmVmPVwnaHR0cDovL2QxLm9wZW54Lm9yZy9jay5waHA/bj1hN2Y5ODhlMCZjYj1JTlNFUlRfUkFORE9NX05VTUJFUl9IRVJFXCcgdGFyZ2V0PVwnX3RvcFwnPjxpbWcgc3JjPVwnaHR0cDovL2QxLm9wZW54Lm9yZy9hdncucGhwP3pvbmVpZD04Mzg5NiZjYj1JTlNFUlRfUkFORE9NX05VTUJFUl9IRVJFJm49YTdmOTg4ZTBcJyBib3JkZXI9XCcwXCcgYWx0PVwnXCcgLz48L2E+PC9ub3NjcmlwdD4iO3M6MTY6Indvb19hZF8yMDBfaW1hZ2UiO3M6MDoiIjtzOjE0OiJ3b29fYWRfMjAwX3VybCI7czowOiIiO3M6MTg6Indvb19hZF8yNTBfYWRzZW5zZSI7czowOiIiO3M6MTY6Indvb19hZF8yNTBfaW1hZ2UiO3M6NTE6Imh0dHA6Ly9zbWFsbGV5LmNjL2ltYWdlcy9Bc0xvbmdBc1dlQm90aC0yNTB4MjUwLmpwZyI7czoxNDoid29vX2FkXzI1MF91cmwiO3M6NTg6Imh0dHA6Ly9zbWFsbGV5b25saW5lc3RvcmUuY29tL2FzbG9uZ2Fzd2Vib3Roc2hhbGxsaXZlLmFzcHgiO3M6MjI6Indvb19hZF9jb250ZW50X2Fkc2Vuc2UiO3M6MjIwODoiPCEtLS8qIE9wZW5YIEphdmFzY3JpcHQgVGFnIHYyLjguNSAoUmljaCBNZWRpYSAtIE9wZW5YKSAqLy0tPgoKPCEtLS8qCiAgKiBUaGUgYmFja3VwIGltYWdlIHNlY3Rpb24gb2YgdGhpcyB0YWcgaGFzIGJlZW4gZ2VuZXJhdGVkIGZvciB1c2Ugb24gYQogICogbm9uLVNTTCBwYWdlLiBJZiB0aGlzIHRhZyBpcyB0byBiZSBwbGFjZWQgb24gYW4gU1NMIHBhZ2UsIGNoYW5nZSB0aGUKICAqICAgXCdodHRwOi8vZDEub3Blbngub3JnLy4uLlwnCiAgKiB0bwogICogICBcJ2h0dHBzOi8vZDEub3Blbngub3JnLy4uLlwnCiAgKgogICogVGhpcyBub3NjcmlwdCBzZWN0aW9uIG9mIHRoaXMgdGFnIG9ubHkgc2hvd3MgaW1hZ2UgYmFubmVycy4gVGhlcmUKICAqIGlzIG5vIHdpZHRoIG9yIGhlaWdodCBpbiB0aGVzZSBiYW5uZXJzLCBzbyBpZiB5b3Ugd2FudCB0aGVzZSB0YWdzIHRvCiAgKiBhbGxvY2F0ZSBzcGFjZSBmb3IgdGhlIGFkIGJlZm9yZSBpdCBzaG93cywgeW91IHdpbGwgbmVlZCB0byBhZGQgdGhpcwogICogaW5mb3JtYXRpb24gdG8gdGhlIDxpbWc+IHRhZy4KICAqCiAgKiBJZiB5b3UgZG8gbm90IHdhbnQgdG8gZGVhbCB3aXRoIHRoZSBpbnRyaWNpdGllcyBvZiB0aGUgbm9zY3JpcHQKICAqIHNlY3Rpb24sIGRlbGV0ZSB0aGUgdGFnIChmcm9tIDxub3NjcmlwdD4uLi4gdG8gPC9ub3NjcmlwdD4pLiBPbgogICogYXZlcmFnZSwgdGhlIG5vc2NyaXB0IHRhZyBpcyBjYWxsZWQgZnJvbSBsZXNzIHRoYW4gMSUgb2YgaW50ZXJuZXQKICAqIHVzZXJzLgogICovLS0+Cgo8c2NyaXB0IHR5cGU9XCd0ZXh0L2phdmFzY3JpcHRcJz48IS0tLy88IVtDREFUQVsKICAgZG9jdW1lbnQuTUFYX2N0MCA9XCd7Y2xpY2t1cmx9XCc7CgogICB2YXIgbTNfdSA9IChsb2NhdGlvbi5wcm90b2NvbD09XCdodHRwczpcJz9cJ2h0dHBzOi8vZDEub3Blbngub3JnL2Fqcy5waHBcJzpcJ2h0dHA6Ly9kMS5vcGVueC5vcmcvYWpzLnBocFwnKTsKICAgdmFyIG0zX3IgPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqOTk5OTk5OTk5OTkpOwogICBpZiAoIWRvY3VtZW50Lk1BWF91c2VkKSBkb2N1bWVudC5NQVhfdXNlZCA9IFwnLFwnOwogICBkb2N1bWVudC53cml0ZSAoIjxzY3IiKyJpcHQgdHlwZT1cJ3RleHQvamF2YXNjcmlwdFwnIHNyYz1cJyIrbTNfdSk7CiAgIGRvY3VtZW50LndyaXRlICgiP3pvbmVpZD0xMTgxNDkiKTsKICAgZG9jdW1lbnQud3JpdGUgKFwnJmFtcDtjYj1cJyArIG0zX3IpOwogICBpZiAoZG9jdW1lbnQuTUFYX3VzZWQgIT0gXCcsXCcpIGRvY3VtZW50LndyaXRlICgiJmFtcDtleGNsdWRlPSIgKyBkb2N1bWVudC5NQVhfdXNlZCk7CiAgIGRvY3VtZW50LndyaXRlIChkb2N1bWVudC5jaGFyc2V0ID8gXCcmYW1wO2NoYXJzZXQ9XCcrZG9jdW1lbnQuY2hhcnNldCA6IChkb2N1bWVudC5jaGFyYWN0ZXJTZXQgPyBcJyZhbXA7Y2hhcnNldD1cJytkb2N1bWVudC5jaGFyYWN0ZXJTZXQgOiBcJ1wnKSk7CiAgIGRvY3VtZW50LndyaXRlICgiJmFtcDtsb2M9IiArIGVzY2FwZSh3aW5kb3cubG9jYXRpb24pKTsKICAgaWYgKGRvY3VtZW50LnJlZmVycmVyKSBkb2N1bWVudC53cml0ZSAoIiZhbXA7cmVmZXJlcj0iICsgZXNjYXBlKGRvY3VtZW50LnJlZmVycmVyKSk7CiAgIGlmIChkb2N1bWVudC5jb250ZXh0KSBkb2N1bWVudC53cml0ZSAoIiZjb250ZXh0PSIgKyBlc2NhcGUoZG9jdW1lbnQuY29udGV4dCkpOwogICBpZiAoKHR5cGVvZihkb2N1bWVudC5NQVhfY3QwKSAhPSBcJ3VuZGVmaW5lZFwnKSAmJiAoZG9jdW1lbnQuTUFYX2N0MC5zdWJzdHJpbmcoMCw0KSA9PSBcJ2h0dHBcJykpIHsKICAgICAgIGRvY3VtZW50LndyaXRlICgiJmFtcDtjdDA9IiArIGVzY2FwZShkb2N1bWVudC5NQVhfY3QwKSk7CiAgIH0KICAgaWYgKGRvY3VtZW50Lm1tbV9mbykgZG9jdW1lbnQud3JpdGUgKCImYW1wO21tbV9mbz0xIik7CiAgIGRvY3VtZW50LndyaXRlICgiXCc+PC9zY3IiKyJpcHQ+Iik7Ci8vXV0+LS0+PC9zY3JpcHQ+PG5vc2NyaXB0PjxhIGhyZWY9XCdodHRwOi8vZDEub3Blbngub3JnL2NrLnBocD9uPWE1NGVhZmZhJmNiPXtyYW5kb219XCcgdGFyZ2V0PVwnX2JsYW5rXCc+PGltZyBzcmM9XCdodHRwOi8vZDEub3Blbngub3JnL2F2dy5waHA/em9uZWlkPTExODE0OSZjYj17cmFuZG9tfSZuPWE1NGVhZmZhJmN0MD17Y2xpY2t1cmx9XCcgYm9yZGVyPVwnMFwnIGFsdD1cJ1wnIC8+PC9hPjwvbm9zY3JpcHQ+IjtzOjIyOiJ3b29fYWRfY29udGVudF9kaXNhYmxlIjtzOjU6ImZhbHNlIjtzOjIwOiJ3b29fYWRfY29udGVudF9pbWFnZSI7czo1MToiaHR0cDovL3d3dy53b290aGVtZXMuY29tL2Fkcy93b290aGVtZXMtNDY4eDYwLTIuZ2lmIjtzOjE4OiJ3b29fYWRfY29udGVudF91cmwiO3M6MjQ6Imh0dHA6Ly93d3cud29vdGhlbWVzLmNvbSI7czoxNDoid29vX2FkX2ltYWdlXzEiO3M6NDg6Imh0dHA6Ly9zbWFsbGV5LmNjL2ltYWdlcy9OZXdseXdlZEtpdC0xMjV4MTI1LnBuZyI7czoxNDoid29vX2FkX2ltYWdlXzIiO3M6NDY6Imh0dHA6Ly9zbWFsbGV5LmNjL2ltYWdlcy9Xb3JrYm9va3MtMTI1eDEyNS5wbmciO3M6MTQ6Indvb19hZF9pbWFnZV8zIjtzOjQ0OiJodHRwOi8vc21hbGxleS5jYy9pbWFnZXMvRW1icmFjZS0xMjV4MTI1LnBuZyI7czoxNDoid29vX2FkX2ltYWdlXzQiO3M6NDA6Imh0dHA6Ly9zbWFsbGV5LmNjL2ltYWdlcy9QWUYtMTI1eDEyNS5qcGciO3M6MTQ6Indvb19hZF9pbWFnZV81IjtzOjUyOiJodHRwOi8vd3d3Lndvb3RoZW1lcy5jb20vYWRzL3dvb3RoZW1lcy0xMjV4MTI1LTQuZ2lmIjtzOjE0OiJ3b29fYWRfaW1hZ2VfNiI7czo1MjoiaHR0cDovL3d3dy53b290aGVtZXMuY29tL2Fkcy93b290aGVtZXMtMTI1eDEyNS00LmdpZiI7czoxODoid29vX2FkX21wdV9hZHNlbnNlIjtzOjA6IiI7czoxODoid29vX2FkX21wdV9kaXNhYmxlIjtzOjU6ImZhbHNlIjtzOjE2OiJ3b29fYWRfbXB1X2ltYWdlIjtzOjQwOiJodHRwOi8vc21hbGxleS5jYy9pbWFnZXMvRE5BLTMwMFgyNTAuanBnIjtzOjE0OiJ3b29fYWRfbXB1X3VybCI7czo2NDoiaHR0cDovL3NtYWxsZXlvbmxpbmVzdG9yZS5jb20vZG5hb2ZyZWxhdGlvbnNoaXBzc2VyaWVzb25kdmQuYXNweCI7czoxODoid29vX2FkX3RvcF9hZHNlbnNlIjtzOjIyMDY6IjwhLS0vKiBPcGVuWCBKYXZhc2NyaXB0IFRhZyB2Mi44LjUgKFJpY2ggTWVkaWEgLSBPcGVuWCkgKi8tLT4KCjwhLS0vKgogICogVGhlIGJhY2t1cCBpbWFnZSBzZWN0aW9uIG9mIHRoaXMgdGFnIGhhcyBiZWVuIGdlbmVyYXRlZCBmb3IgdXNlIG9uIGEKICAqIG5vbi1TU0wgcGFnZS4gSWYgdGhpcyB0YWcgaXMgdG8gYmUgcGxhY2VkIG9uIGFuIFNTTCBwYWdlLCBjaGFuZ2UgdGhlCiAgKiAgIFwnaHR0cDovL2QxLm9wZW54Lm9yZy8uLi5cJwogICogdG8KICAqICAgXCdodHRwczovL2QxLm9wZW54Lm9yZy8uLi5cJwogICoKICAqIFRoaXMgbm9zY3JpcHQgc2VjdGlvbiBvZiB0aGlzIHRhZyBvbmx5IHNob3dzIGltYWdlIGJhbm5lcnMuIFRoZXJlCiAgKiBpcyBubyB3aWR0aCBvciBoZWlnaHQgaW4gdGhlc2UgYmFubmVycywgc28gaWYgeW91IHdhbnQgdGhlc2UgdGFncyB0bwogICogYWxsb2NhdGUgc3BhY2UgZm9yIHRoZSBhZCBiZWZvcmUgaXQgc2hvd3MsIHlvdSB3aWxsIG5lZWQgdG8gYWRkIHRoaXMKICAqIGluZm9ybWF0aW9uIHRvIHRoZSA8aW1nPiB0YWcuCiAgKgogICogSWYgeW91IGRvIG5vdCB3YW50IHRvIGRlYWwgd2l0aCB0aGUgaW50cmljaXRpZXMgb2YgdGhlIG5vc2NyaXB0CiAgKiBzZWN0aW9uLCBkZWxldGUgdGhlIHRhZyAoZnJvbSA8bm9zY3JpcHQ+Li4uIHRvIDwvbm9zY3JpcHQ+KS4gT24KICAqIGF2ZXJhZ2UsIHRoZSBub3NjcmlwdCB0YWcgaXMgY2FsbGVkIGZyb20gbGVzcyB0aGFuIDElIG9mIGludGVybmV0CiAgKiB1c2Vycy4KICAqLy0tPgoKPHNjcmlwdCB0eXBlPVwndGV4dC9qYXZhc2NyaXB0XCc+PCEtLS8vPCFbQ0RBVEFbCiAgIGRvY3VtZW50Lk1BWF9jdDAgPVwne2NsaWNrdXJsfVwnOwoKICAgdmFyIG0zX3UgPSAobG9jYXRpb24ucHJvdG9jb2w9PVwnaHR0cHM6XCc/XCdodHRwczovL2QxLm9wZW54Lm9yZy9hanMucGhwXCc6XCdodHRwOi8vZDEub3Blbngub3JnL2Fqcy5waHBcJyk7CiAgIHZhciBtM19yID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKjk5OTk5OTk5OTk5KTsKICAgaWYgKCFkb2N1bWVudC5NQVhfdXNlZCkgZG9jdW1lbnQuTUFYX3VzZWQgPSBcJyxcJzsKICAgZG9jdW1lbnQud3JpdGUgKCI8c2NyIisiaXB0IHR5cGU9XCd0ZXh0L2phdmFzY3JpcHRcJyBzcmM9XCciK20zX3UpOwogICBkb2N1bWVudC53cml0ZSAoIj96b25laWQ9NjQ1ODIiKTsKICAgZG9jdW1lbnQud3JpdGUgKFwnJmFtcDtjYj1cJyArIG0zX3IpOwogICBpZiAoZG9jdW1lbnQuTUFYX3VzZWQgIT0gXCcsXCcpIGRvY3VtZW50LndyaXRlICgiJmFtcDtleGNsdWRlPSIgKyBkb2N1bWVudC5NQVhfdXNlZCk7CiAgIGRvY3VtZW50LndyaXRlIChkb2N1bWVudC5jaGFyc2V0ID8gXCcmYW1wO2NoYXJzZXQ9XCcrZG9jdW1lbnQuY2hhcnNldCA6IChkb2N1bWVudC5jaGFyYWN0ZXJTZXQgPyBcJyZhbXA7Y2hhcnNldD1cJytkb2N1bWVudC5jaGFyYWN0ZXJTZXQgOiBcJ1wnKSk7CiAgIGRvY3VtZW50LndyaXRlICgiJmFtcDtsb2M9IiArIGVzY2FwZSh3aW5kb3cubG9jYXRpb24pKTsKICAgaWYgKGRvY3VtZW50LnJlZmVycmVyKSBkb2N1bWVudC53cml0ZSAoIiZhbXA7cmVmZXJlcj0iICsgZXNjYXBlKGRvY3VtZW50LnJlZmVycmVyKSk7CiAgIGlmIChkb2N1bWVudC5jb250ZXh0KSBkb2N1bWVudC53cml0ZSAoIiZjb250ZXh0PSIgKyBlc2NhcGUoZG9jdW1lbnQuY29udGV4dCkpOwogICBpZiAoKHR5cGVvZihkb2N1bWVudC5NQVhfY3QwKSAhPSBcJ3VuZGVmaW5lZFwnKSAmJiAoZG9jdW1lbnQuTUFYX2N0MC5zdWJzdHJpbmcoMCw0KSA9PSBcJ2h0dHBcJykpIHsKICAgICAgIGRvY3VtZW50LndyaXRlICgiJmFtcDtjdDA9IiArIGVzY2FwZShkb2N1bWVudC5NQVhfY3QwKSk7CiAgIH0KICAgaWYgKGRvY3VtZW50Lm1tbV9mbykgZG9jdW1lbnQud3JpdGUgKCImYW1wO21tbV9mbz0xIik7CiAgIGRvY3VtZW50LndyaXRlICgiXCc+PC9zY3IiKyJpcHQ+Iik7Ci8vXV0+LS0+PC9zY3JpcHQ+PG5vc2NyaXB0PjxhIGhyZWY9XCdodHRwOi8vZDEub3Blbngub3JnL2NrLnBocD9uPWExZGMxZDRmJmNiPXtyYW5kb219XCcgdGFyZ2V0PVwnX2JsYW5rXCc+PGltZyBzcmM9XCdodHRwOi8vZDEub3Blbngub3JnL2F2dy5waHA/em9uZWlkPTY0NTgyJmNiPXtyYW5kb219Jm49YTFkYzFkNGYmY3QwPXtjbGlja3VybH1cJyBib3JkZXI9XCcwXCcgYWx0PVwnXCcgLz48L2E+PC9ub3NjcmlwdD4iO3M6MTg6Indvb19hZF90b3BfZGlzYWJsZSI7czo1OiJmYWxzZSI7czoxNjoid29vX2FkX3RvcF9pbWFnZSI7czo1MToiaHR0cDovL3d3dy53b290aGVtZXMuY29tL2Fkcy93b290aGVtZXMtNDY4eDYwLTIuZ2lmIjtzOjE0OiJ3b29fYWRfdG9wX3VybCI7czoyNDoiaHR0cDovL3d3dy53b290aGVtZXMuY29tIjtzOjEyOiJ3b29fYWRfdXJsXzEiO3M6NDk6Imh0dHA6Ly9zbWFsbGV5b25saW5lc3RvcmUuY29tL3RoZW5ld2x5d2Vka2l0LmFzcHgiO3M6MTI6Indvb19hZF91cmxfMiI7czo1NToiaHR0cDovL3NtYWxsZXlvbmxpbmVzdG9yZS5jb20vd29ya2Jvb2tzc3R1ZHlndWlkZXMuYXNweCI7czoxMjoid29vX2FkX3VybF8zIjtzOjcyOiJodHRwOi8vc21hbGxleW9ubGluZXN0b3JlLmNvbS9lbWJyYWNlLXRoZW1hcnJpYWdlc2VtaW5hcmF1ZGlvc2VyaWVzLmFzcHgiO3M6MTI6Indvb19hZF91cmxfNCI7czoyOToiaHR0cDovL3NtYWxsZXlvbmxpbmVzdG9yZS5jb20iO3M6MTI6Indvb19hZF91cmxfNSI7czoyNDoiaHR0cDovL3d3dy53b290aGVtZXMuY29tIjtzOjEyOiJ3b29fYWRfdXJsXzYiO3M6MjQ6Imh0dHA6Ly93d3cud29vdGhlbWVzLmNvbSI7czoxODoid29vX2FsdF9zdHlsZXNoZWV0IjtzOjExOiJza3libHVlLmNzcyI7czoxNzoid29vX2FyY2hpdmVfYm94ZXMiO3M6MjoiT24iO3M6MTk6Indvb19hcmNoaXZlX2NvbnRlbnQiO3M6NDoidHJ1ZSI7czoxMDoid29vX2F1dGhvciI7czo0OiJ0cnVlIjtzOjEyOiJ3b29fYXV0b19pbWciO3M6NToiZmFsc2UiO3M6MjI6Indvb19ib3hlZF90aHVtYl9oZWlnaHQiO3M6MzoiMTAwIjtzOjIxOiJ3b29fYm94ZWRfdGh1bWJfd2lkdGgiO3M6MzoiMjM0IjtzOjE1OiJ3b29fYnJlYWRjcnVtYnMiO3M6NToiZmFsc2UiO3M6MTQ6Indvb19idXlfdGhlbWVzIjtzOjQ6InRydWUiO3M6MTk6Indvb19jYXJvdXNlbF9oZWlnaHQiO3M6MzoiMjkyIjtzOjE4OiJ3b29fY2F0bmF2X2V4Y2x1ZGUiO3M6MDoiIjtzOjEwOiJ3b29fY2F0X2V4IjtzOjA6IiI7czoxMjoid29vX2NhdF9tZW51IjtzOjU6ImZhbHNlIjtzOjE3OiJ3b29fY29tbWVudF9wb3N0cyI7czoxOiI1IjtzOjIxOiJ3b29fY29udGFjdGZvcm1fZW1haWwiO3M6MTU6ImluZm9Ac21hbGxleS5jYyI7czoxMToid29vX2NvbnRlbnQiO3M6NToiZmFsc2UiO3M6MjA6Indvb19jb250ZW50X2FyY2hpdmVzIjtzOjU6ImZhbHNlIjtzOjE2OiJ3b29fY29udGVudF9mZWF0IjtzOjU6ImZhbHNlIjtzOjE0OiJ3b29fY3VzdG9tX2NzcyI7czowOiIiO3M6MTg6Indvb19jdXN0b21fZmF2aWNvbiI7czowOiIiO3M6MjY6Indvb19jdXN0b21fdXBsb2FkX3RyYWNraW5nIjthOjE6e2k6MDthOjQ6e3M6NDoiZmlsZSI7czo2MDoiL2hvbWVwYWdlcy8yNC9kMTkyNzA3NDUwL2h0ZG9jcy9Hb1NtYWxsZXkvaW1hZ2VzL2RhdGluZzIuanBnIjtzOjM6InVybCI7czozNjoiaHR0cDovL3NtYWxsZXkuY2MvaW1hZ2VzL2RhdGluZzIuanBnIjtzOjQ6InR5cGUiO3M6MTA6ImltYWdlL2pwZWciO3M6MTE6Im9wdGlvbl9uYW1lIjtzOjU6IkltYWdlIjt9fXM6OToid29vX2VtYmVkIjtzOjQ6InRydWUiO3M6MjE6Indvb19mZWF0dXJlZF9jYXRlZ29yeSI7czo4OiJGZWF0dXJlZCI7czoxODoid29vX2ZlYXR1cmVkX3Bvc3RzIjtzOjE6IjEiO3M6MTc6Indvb19mZWF0dXJlZF90YWdzIjtzOjA6IiI7czoxNjoid29vX2ZlYXRfZW50cmllcyI7czoxOiI2IjtzOjE3OiJ3b29fZmVlZGJ1cm5lcl9pZCI7czowOiIiO3M6MTg6Indvb19mZWVkYnVybmVyX3VybCI7czowOiIiO3M6MTg6Indvb19mb290ZXJfY3JlZGl0cyI7czowOiIiO3M6MTY6Indvb19mb290ZXJfaW1hZ2UiO3M6MDoiIjtzOjIwOiJ3b29fZnJhbWV3b3JrX3VwZGF0ZSI7czo1OiJmYWxzZSI7czoyMToid29vX2Z1bGxfdGh1bWJfaGVpZ2h0IjtzOjM6IjE4MCI7czoyMDoid29vX2Z1bGxfdGh1bWJfd2lkdGgiO3M6MzoiNTYwIjtzOjIwOiJ3b29fZ2V0X2ltYWdlX2hlaWdodCI7czozOiIxNDIiO3M6MTk6Indvb19nZXRfaW1hZ2Vfd2lkdGgiO3M6MzoiMTkwIjtzOjIwOiJ3b29fZ29vZ2xlX2FuYWx5dGljcyI7czowOiIiO3M6ODoid29vX2hvbWUiO3M6NToiZmFsc2UiO3M6MTI6Indvb19ob21lX2FyYyI7czo1OiJmYWxzZSI7czoxNDoid29vX2hvbWVfYm94ZXMiO3M6MjoiT24iO3M6MTY6Indvb19ob21lX2NvbnRlbnQiO3M6NToiZmFsc2UiO3M6MTc6Indvb19ob21lX2ZlYXR1cmVkIjtzOjQ6InRydWUiO3M6MTM6Indvb19ob21lX2xpbmsiO3M6NDoidHJ1ZSI7czoxODoid29vX2hvbWVfbGlua19kZXNjIjtzOjA6IiI7czoxODoid29vX2hvbWVfbGlua190ZXh0IjtzOjQ6IkhvbWUiO3M6MjE6Indvb19ob21lX3RodW1iX2hlaWdodCI7czoyOiI5MiI7czoyMDoid29vX2hvbWVfdGh1bWJfd2lkdGgiO3M6MzoiMjQ3IjtzOjE2OiJ3b29faW1hZ2VfaGVpZ2h0IjtzOjM6IjIxMCI7czoxNjoid29vX2ltYWdlX3NpbmdsZSI7czo1OiJmYWxzZSI7czoxNToid29vX2ltYWdlX3dpZHRoIjtzOjM6IjU0MCI7czo4OiJ3b29fbG9nbyI7czo0MToiaHR0cDovL3NtYWxsZXkuY2MvaW1hZ2VzL1NJVEUtSEVBREVSMS5wbmciO3M6MTU6Indvb19uYXZfZXhjbHVkZSI7czowOiIiO3M6MTc6Indvb19wb3B1bGFyX3Bvc3RzIjtzOjE6IjUiO3M6MTA6Indvb19yZXNpemUiO3M6NDoidHJ1ZSI7czoxNjoid29vX3Nob3duX3NsaWRlcyI7YToxOntpOjA7czozOiIyNDIiO31zOjE3OiJ3b29fc2hvd19jYXJvdXNlbCI7czo0OiJ0cnVlIjtzOjE2OiJ3b29fc2hvd19vcHRpb25zIjtzOjU6ImZhbHNlIjtzOjIzOiJ3b29fc2hvd190YWxraW5nX3BvaW50cyI7czo1OiJmYWxzZSI7czoxNDoid29vX3Nob3dfdmlkZW8iO3M6NDoidHJ1ZSI7czoxNzoid29vX3NpbmdsZV9oZWlnaHQiO3M6MzoiMTIwIjtzOjE2OiJ3b29fc2luZ2xlX3dpZHRoIjtzOjM6IjE4MCI7czoxNjoid29vX3NsaWRlcl9jZmFkZSI7czo1OiJmYWxzZSI7czoyNDoid29vX3NsaWRlcl9jb250ZW50X3NwZWVkIjtzOjQ6IjEwMDAiO3M6MTY6Indvb19zbGlkZXJfc2ZhZGUiO3M6NToiZmFsc2UiO3M6MTY6Indvb19zbGlkZXJfc3BlZWQiO3M6MzoiNTAwIjtzOjE4OiJ3b29fc2xpZGVyX3RpbWVvdXQiO3M6NDoiNjAwMCI7czo4OiJ3b29fdGFicyI7czo1OiJmYWxzZSI7czoyMzoid29vX3RhbGtpbmdfcG9pbnRzX3RhZ3MiO3M6MDoiIjtzOjEzOiJ3b29fdGhlbWVuYW1lIjtzOjg6IkJ1c3kgQmVlIjtzOjI1OiJ3b29fdGhlbWVfdmVyc2lvbl9jaGVja2VyIjtzOjQ6InRydWUiO3M6MTY6Indvb190aHVtYl9oZWlnaHQiO3M6MjoiODgiO3M6MTU6Indvb190aHVtYl93aWR0aCI7czoyOiI4OCI7czoxMToid29vX3R3aXR0ZXIiO3M6MDoiIjtzOjExOiJ3b29fdXBsb2FkcyI7YTo4OntpOjA7czo4MDoiaHR0cDovL3d3dy5nb3NtYWxsZXkuY29tL3dwLWNvbnRlbnQvd29vX3VwbG9hZHMvMTAtU21hbGxleU9ubGluZS1NYWluLUhlYWRlci5qcGciO2k6MTtzOjc5OiJodHRwOi8vd3d3Lmdvc21hbGxleS5jb20vd3AtY29udGVudC93b29fdXBsb2Fkcy85LVNtYWxsZXlPbmxpbmUtTWFpbi1IZWFkZXIuanBnIjtpOjI7czo3OToiaHR0cDovL3d3dy5nb3NtYWxsZXkuY29tL3dwLWNvbnRlbnQvd29vX3VwbG9hZHMvOC1TbWFsbGV5T25saW5lLU1haW4tSGVhZGVyLmpwZyI7aTozO3M6Nzk6Imh0dHA6Ly93d3cuZ29zbWFsbGV5LmNvbS93cC1jb250ZW50L3dvb191cGxvYWRzLzctU21hbGxleU9ubGluZS1NYWluLUhlYWRlci5qcGciO2k6NDtzOjcxOiJodHRwOi8vd3d3Lmdvc21hbGxleS5jb20vd3AtY29udGVudC93b29fdXBsb2Fkcy82LXN0b3JlLWhlYWRlci1sb2dvLnBuZyI7aTo1O3M6NzQ6Imh0dHA6Ly93d3cuZ29zbWFsbGV5LmNvbS93cC1jb250ZW50L3dvb191cGxvYWRzLzUtU21hbGxleS1sb2dvXzJjX21haW4uanBnIjtpOjY7czo3NDoiaHR0cDovL3d3dy5nb3NtYWxsZXkuY29tL3dwLWNvbnRlbnQvd29vX3VwbG9hZHMvNC1TbWFsbGV5LWxvZ29fMmNfbWFpbi5qcGciO2k6NztzOjU4OiJodHRwOi8vd3d3Lmdvc21hbGxleS5jb20vd3AtY29udGVudC93b29fdXBsb2Fkcy8zLWxvZ28ucG5nIjt9czoyMjoid29vX3ZpZGVvX2Jyb3dzZXJfaW5pdCI7czoxOiIzIjtzOjE4OiJ3b29fdmlkZW9fY2F0ZWdvcnkiO3M6MTQ6IlZpZGVvIFBvZGNhc3RzIjtzOjE0OiJ3b29fdmlkZW9fdGFncyI7czowOiIiO308L2xpPjxsaT48c3Ryb25nPndvb19wb3B1bGFyX3Bvc3RzPC9zdHJvbmc+IC0gNTwvbGk+PGxpPjxzdHJvbmc+d29vX3Jlc2l6ZTwvc3Ryb25nPiAtIHRydWU8L2xpPjxsaT48c3Ryb25nPndvb19zaG9ydG5hbWU8L3N0cm9uZz4gLSB3b288L2xpPjxsaT48c3Ryb25nPndvb19zaG93bl9zbGlkZXM8L3N0cm9uZz4gLSBhOjE6e2k6MDtzOjM6IjI0MiI7fTwvbGk+PGxpPjxzdHJvbmc+d29vX3Nob3dfY2Fyb3VzZWw8L3N0cm9uZz4gLSB0cnVlPC9saT48bGk+PHN0cm9uZz53b29fc2hvd19vcHRpb25zPC9zdHJvbmc+IC0gZmFsc2U8L2xpPjxsaT48c3Ryb25nPndvb19zaG93X3RhbGtpbmdfcG9pbnRzPC9zdHJvbmc+IC0gZmFsc2U8L2xpPjxsaT48c3Ryb25nPndvb19zaG93X3ZpZGVvPC9zdHJvbmc+IC0gdHJ1ZTwvbGk+PGxpPjxzdHJvbmc+d29vX3NpbmdsZV9oZWlnaHQ8L3N0cm9uZz4gLSAxMjA8L2xpPjxsaT48c3Ryb25nPndvb19zaW5nbGVfd2lkdGg8L3N0cm9uZz4gLSAxODA8L2xpPjxsaT48c3Ryb25nPndvb19zbGlkZXJfY2ZhZGU8L3N0cm9uZz4gLSBmYWxzZTwvbGk+PGxpPjxzdHJvbmc+d29vX3NsaWRlcl9jb250ZW50X3NwZWVkPC9zdHJvbmc+IC0gMTAwMDwvbGk+PGxpPjxzdHJvbmc+d29vX3NsaWRlcl9zZmFkZTwvc3Ryb25nPiAtIGZhbHNlPC9saT48bGk+PHN0cm9uZz53b29fc2xpZGVyX3NwZWVkPC9zdHJvbmc+IC0gNTAwPC9saT48bGk+PHN0cm9uZz53b29fc2xpZGVyX3RpbWVvdXQ8L3N0cm9uZz4gLSA2MDAwPC9saT48bGk+PHN0cm9uZz53b29fdGFiczwvc3Ryb25nPiAtIGZhbHNlPC9saT48bGk+PHN0cm9uZz53b29fdGFsa2luZ19wb2ludHNfdGFnczwvc3Ryb25nPiAtIDwvbGk+PGxpPjxzdHJvbmc+d29vX3RoZW1lbmFtZTwvc3Ryb25nPiAtIEdhemV0dGU8L2xpPjxsaT48c3Ryb25nPndvb190aGVtZV92ZXJzaW9uX2NoZWNrZXI8L3N0cm9uZz4gLSB0cnVlPC9saT48bGk+PHN0cm9uZz53b29fdGh1bWJfaGVpZ2h0PC9zdHJvbmc+IC0gODg8L2xpPjxsaT48c3Ryb25nPndvb190aHVtYl93aWR0aDwvc3Ryb25nPiAtIDg4PC9saT48bGk+PHN0cm9uZz53b29fdHdpdHRlcjwvc3Ryb25nPiAtIDwvbGk+PGxpPjxzdHJvbmc+d29vX3VwbG9hZHM8L3N0cm9uZz4gLSBhOjg6e2k6MDtzOjgwOiJodHRwOi8vd3d3Lmdvc21hbGxleS5jb20vd3AtY29udGVudC93b29fdXBsb2Fkcy8xMC1TbWFsbGV5T25saW5lLU1haW4tSGVhZGVyLmpwZyI7aToxO3M6Nzk6Imh0dHA6Ly93d3cuZ29zbWFsbGV5LmNvbS93cC1jb250ZW50L3dvb191cGxvYWRzLzktU21hbGxleU9ubGluZS1NYWluLUhlYWRlci5qcGciO2k6MjtzOjc5OiJodHRwOi8vd3d3Lmdvc21hbGxleS5jb20vd3AtY29udGVudC93b29fdXBsb2Fkcy84LVNtYWxsZXlPbmxpbmUtTWFpbi1IZWFkZXIuanBnIjtpOjM7czo3OToiaHR0cDovL3d3dy5nb3NtYWxsZXkuY29tL3dwLWNvbnRlbnQvd29vX3VwbG9hZHMvNy1TbWFsbGV5T25saW5lLU1haW4tSGVhZGVyLmpwZyI7aTo0O3M6NzE6Imh0dHA6Ly93d3cuZ29zbWFsbGV5LmNvbS93cC1jb250ZW50L3dvb191cGxvYWRzLzYtc3RvcmUtaGVhZGVyLWxvZ28ucG5nIjtpOjU7czo3NDoiaHR0cDovL3d3dy5nb3NtYWxsZXkuY29tL3dwLWNvbnRlbnQvd29vX3VwbG9hZHMvNS1TbWFsbGV5LWxvZ29fMmNfbWFpbi5qcGciO2k6NjtzOjc0OiJodHRwOi8vd3d3Lmdvc21hbGxleS5jb20vd3AtY29udGVudC93b29fdXBsb2Fkcy80LVNtYWxsZXktbG9nb18yY19tYWluLmpwZyI7aTo3O3M6NTg6Imh0dHA6Ly93d3cuZ29zbWFsbGV5LmNvbS93cC1jb250ZW50L3dvb191cGxvYWRzLzMtbG9nby5wbmciO308L2xpPjxsaT48c3Ryb25nPndvb192aWRlb19icm93c2VyX2luaXQ8L3N0cm9uZz4gLSAzPC9saT48bGk+PHN0cm9uZz53b29fdmlkZW9fY2F0ZWdvcnk8L3N0cm9uZz4gLSBWaWRlbyBQb2RjYXN0czwvbGk+PGxpPjxzdHJvbmc+d29vX3ZpZGVvX3RhZ3M8L3N0cm9uZz4gLSA8L2xpPjwvdWw+