<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>52576</bug_id>
          
          <creation_ts>2011-01-17 07:28:21 -0800</creation_ts>
          <short_desc>IndexedDB: Support auto-increment keys</short_desc>
          <delta_ts>2011-01-19 08:24:28 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Hans Wennborg">hans</reporter>
          <assigned_to name="Hans Wennborg">hans</assigned_to>
          <cc>andreip</cc>
    
    <cc>jorlow</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>335314</commentid>
    <comment_count>0</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2011-01-17 07:28:21 -0800</bug_when>
    <thetext>IndexedDB: Support auto-increment keys</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>335321</commentid>
    <comment_count>1</comment_count>
      <attachid>79175</attachid>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2011-01-17 07:50:13 -0800</bug_when>
    <thetext>Created attachment 79175
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>335337</commentid>
    <comment_count>2</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2011-01-17 08:09:39 -0800</bug_when>
    <thetext>Let&apos;s cache the last autonumber.  It&apos;s even OK if we leak some numbers as long as it always increases.

Also, I believe that the expected behavior is that if you have a keypath and autoIncrement value, the latter should get inserted into the former...even if it already exists.  I don&apos;t remember in detail and maybe this should be brought up on list and/or changed.  Also, such behavior can be punted to a later patch if non-trivial...but we should catch the error and raise an exception if so.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336510</commentid>
    <comment_count>3</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2011-01-19 07:27:16 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; Let&apos;s cache the last autonumber.  It&apos;s even OK if we leak some numbers as long as it always increases.
Done.

&gt; Also, I believe that the expected behavior is that if you have a keypath and autoIncrement value, the latter should get inserted into the former...even if it already exists.  I don&apos;t remember in detail and maybe this should be brought up on list and/or changed.  Also, such behavior can be punted to a later patch if non-trivial...but we should catch the error and raise an exception if so.

You&apos;re right, I was reading an old version of the spec. And injecting the auto incremented value into an object is non-trivial, so I&apos;m punting on that.

Re-writing the big if-else block at the start of IDBObjectStoreBackendImpl::putInternal to hopefully make it a bit clearer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336512</commentid>
    <comment_count>4</comment_count>
      <attachid>79424</attachid>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2011-01-19 07:27:40 -0800</bug_when>
    <thetext>Created attachment 79424
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336514</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-01-19 07:29:59 -0800</bug_when>
    <thetext>Attachment 79424 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/update-webkit&apos;]&quot; exit_code: 2

perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
	LANGUAGE = (unset),
	LC_ALL = (unset),
	LANG = &quot;en_US.US-ASCII&quot;
    are supported and installed on your system.
perl: warning: Falling back to the standard locale (&quot;C&quot;).
Updating OpenSource
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
	LANGUAGE = (unset),
	LC_ALL = (unset),
	LANG = &quot;en_US.US-ASCII&quot;
    are supported and installed on your system.
perl: warning: Falling back to the standard locale (&quot;C&quot;).
RA layer request failed: OPTIONS of &apos;http://svn.webkit.org/repository/webkit&apos;: could not connect to server (http://svn.webkit.org) at /usr/lib/git-core/git-svn line 2295

Died at Tools/Scripts/update-webkit line 132.


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336535</commentid>
    <comment_count>6</comment_count>
      <attachid>79424</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2011-01-19 08:07:13 -0800</bug_when>
    <thetext>Comment on attachment 79424
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=79424&amp;action=review

r=me

&gt; Source/WebCore/storage/IDBObjectStoreBackendImpl.cpp:220
&gt; +            callbacks-&gt;onError(IDBDatabaseError::create(IDBDatabaseException::UNKNOWN_ERR, &quot;Adding data to object stores with auto increment and in-line keys not currently supported.&quot;));

&quot;Not yet supported&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336543</commentid>
    <comment_count>7</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2011-01-19 08:24:28 -0800</bug_when>
    <thetext>Committed r76126: &lt;http://trac.webkit.org/changeset/76126&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79175</attachid>
            <date>2011-01-17 07:50:13 -0800</date>
            <delta_ts>2011-01-19 07:27:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-52576-20110117155011.patch</filename>
            <type>text/plain</type>
            <size>19478</size>
            <attacher name="Hans Wennborg">hans</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA1ODU0MWE1MGJiYTVkZGQ2YTdhNWM5YTA2YzllNTAxNzJmMTVhNmQyLi45YzJjNzVj
Y2Y1MzljMjE2MTI3YzgzOGMxOWVkNTFjYzA4ZTYxYzhhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAK
KzIwMTEtMDEtMTcgIEhhbnMgV2VubmJvcmcgIDxoYW5zQGNocm9taXVtLm9yZz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbmRleGVkREI6IFN1cHBv
cnQgYXV0by1pbmNyZW1lbnQga2V5cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NTI1NzYKKworICAgICAgICBBZGQgbGF5b3V0IHRlc3QgZm9yIGF1dG8g
aW5jcmVtZW50IGtleXMuCisgICAgICAgIFVwZGF0ZSBwcmV2aW91cyB0ZXN0IG5vdCB0byBjb25z
aWRlciBhdXRvIGluY3JlbWVudCBhbiBlcnJvci4KKworICAgICAgICAqIHN0b3JhZ2UvaW5kZXhl
ZGRiL2NyZWF0ZS1vYmplY3Qtc3RvcmUtb3B0aW9ucy1leHBlY3RlZC50eHQ6CisgICAgICAgICog
c3RvcmFnZS9pbmRleGVkZGIvY3JlYXRlLW9iamVjdC1zdG9yZS1vcHRpb25zLmh0bWw6CisgICAg
ICAgICogc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtYXV0b2luY3JlbWVudC1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWF1
dG9pbmNyZW1lbnQuaHRtbDogQWRkZWQuCisKIDIwMTEtMDEtMTQgIElseWEgVGlraG9ub3Zza3kg
IDxsb2lzbG9AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFBhdmVsIEZlbGRt
YW4uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jcmVhdGUtb2Jq
ZWN0LXN0b3JlLW9wdGlvbnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvY3JlYXRlLW9iamVjdC1zdG9yZS1vcHRpb25zLWV4cGVjdGVkLnR4dAppbmRleCA4MzAx
NmQ2ZTllNDIwZGY2ZWNiNDhlMTJiZmNkYjkwYTg0MjI4NzE5Li45ZTcyN2E1NWZiNzlkZTYxNmI0
MDg1NTE4MmY5NmJhYmYzMzhjNTU4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9jcmVhdGUtb2JqZWN0LXN0b3JlLW9wdGlvbnMtZXhwZWN0ZWQudHh0CisrKyBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2NyZWF0ZS1vYmplY3Qtc3RvcmUtb3B0aW9ucy1l
eHBlY3RlZC50eHQKQEAgLTE3LDggKzE3LDYgQEAgRGVsZXRlZCBhbGwgb2JqZWN0IHN0b3Jlcy4K
IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdhJywge2tleVBhdGg6ICdhJ30pCiBkYi5jcmVhdGVPYmpl
Y3RTdG9yZSgnYicpCiBkYi5jcmVhdGVPYmplY3RTdG9yZSgnYycsIHthdXRvSW5jcmVtZW50OiB0
cnVlfSk7Ci1QQVNTIEV4Y2VwdGlvbiB0aHJvd24KLVBBU1MgY29kZSBpcyB3ZWJraXRJREJEYXRh
YmFzZUV4Y2VwdGlvbi5VTktOT1dOX0VSUgogdHJhbnMgPSBkYi50cmFuc2FjdGlvbih7bW9kZTog
d2Via2l0SURCVHJhbnNhY3Rpb24uUkVBRF9XUklURX0pCiBQQVNTIHRyYW5zLm1vZGUgaXMgd2Vi
a2l0SURCVHJhbnNhY3Rpb24uUkVBRF9XUklURQogdHJhbnMub2JqZWN0U3RvcmUoJ2EnKS5wdXQo
eydhJzogMH0pCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9jcmVh
dGUtb2JqZWN0LXN0b3JlLW9wdGlvbnMuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL2NyZWF0ZS1vYmplY3Qtc3RvcmUtb3B0aW9ucy5odG1sCmluZGV4IDRhYmI4ZjY0MTc5MTc2
YjljODFjYjFmNGY5NWQ5ZTQ0Yjg1NmE0MDQuLmVhY2IwOWQxYjQ4ZmU3NDQ1OTc3NWU5OWU2NGU4
N2FjMGE4OWI4NDIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2Ny
ZWF0ZS1vYmplY3Qtc3RvcmUtb3B0aW9ucy5odG1sCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL2NyZWF0ZS1vYmplY3Qtc3RvcmUtb3B0aW9ucy5odG1sCkBAIC00NCwxNiArNDQs
OCBAQCBmdW5jdGlvbiBjbGVhbmVkKCkKICAgICBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RT
dG9yZSgnYScsIHtrZXlQYXRoOiAnYSd9KSIpOwogICAgIGV2YWxBbmRMb2coImRiLmNyZWF0ZU9i
amVjdFN0b3JlKCdiJykiKTsKIAotICAgIHRyeSB7Ci0gICAgICAgIC8vIEZJWE1FOiBUaGlzIHNo
b3VsZCB3b3JrIGluIHRoZSBmdXR1cmUuCi0gICAgICAgIGRlYnVnKCJkYi5jcmVhdGVPYmplY3RT
dG9yZSgnYycsIHthdXRvSW5jcmVtZW50OiB0cnVlfSk7Iik7Ci0gICAgICAgIGRiLmNyZWF0ZU9i
amVjdFN0b3JlKCdjJywge2F1dG9JbmNyZW1lbnQ6IHRydWV9KTsKLSAgICAgICAgdGVzdEZhaWxl
ZCgnY3JlYXRlT2JqZWN0U3RvcmUgd2l0aCBhdXRvSW5jcmVtZW50ID0gdHJ1ZSBzaG91bGQgdGhy
b3cnKTsKLSAgICB9IGNhdGNoIChlcnIpIHsKLSAgICAgICAgdGVzdFBhc3NlZCgiRXhjZXB0aW9u
IHRocm93biIpOwotICAgICAgICBjb2RlID0gZXJyLmNvZGU7Ci0gICAgICAgIHNob3VsZEJlKCJj
b2RlIiwgIndlYmtpdElEQkRhdGFiYXNlRXhjZXB0aW9uLlVOS05PV05fRVJSIik7Ci0gICAgfQor
ICAgIGRlYnVnKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnYycsIHthdXRvSW5jcmVtZW50OiB0cnVl
fSk7Iik7CisgICAgZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2MnLCB7YXV0b0luY3JlbWVudDogdHJ1
ZX0pOwogCiAgICAgdHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGRiLnRyYW5zYWN0aW9uKHtt
b2RlOiB3ZWJraXRJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFfSkiKTsKICAgICBzaG91bGRCZSgi
dHJhbnMubW9kZSIsICJ3ZWJraXRJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFIik7CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1hdXRvaW5jcmVt
ZW50LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0
b3JlLWF1dG9pbmNyZW1lbnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAwZDAxOTc5ODMxMTlk
ZjRkYTM3NWJlZDVlMDFiZWQwNGRiNGI0YTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1hdXRvaW5jcmVtZW50LWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDE4MSBAQAorVGVzdCBJbmRleGVkREIncyBJREJPYmplY3RTdG9yZSBhdXRv
LWluY3JlbWVudCBmZWF0dXJlLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKword2Vi
a2l0SW5kZXhlZERCLm9wZW4oJ0FkZHJlc3MgQm9vaycpCitQQVNTICdvbnN1Y2Nlc3MnIGluIHJl
c3VsdCBpcyB0cnVlCitQQVNTICdvbmVycm9yJyBpbiByZXN1bHQgaXMgdHJ1ZQorUEFTUyAncmVh
ZHlTdGF0ZScgaW4gcmVzdWx0IGlzIHRydWUKK0FuIGV2ZW50IHNob3VsZCBmaXJlIHNob3J0bHku
Li4KKworb3BlblN1Y2Nlc3MoKToKK1N1Y2Nlc3MgZXZlbnQgZmlyZWQ6CitQQVNTICdyZXN1bHQn
IGluIGV2ZW50IGlzIHRydWUKK1BBU1MgJ2NvZGUnIGluIGV2ZW50IGlzIGZhbHNlCitQQVNTICdt
ZXNzYWdlJyBpbiBldmVudCBpcyBmYWxzZQorUEFTUyAnc291cmNlJyBpbiBldmVudCBpcyB0cnVl
CitQQVNTIGV2ZW50LnNvdXJjZSAhPSBudWxsIGlzIHRydWUKK1BBU1MgJ29uc3VjY2VzcycgaW4g
ZXZlbnQudGFyZ2V0IGlzIHRydWUKK1BBU1MgJ29uZXJyb3InIGluIGV2ZW50LnRhcmdldCBpcyB0
cnVlCitQQVNTICdyZWFkeVN0YXRlJyBpbiBldmVudC50YXJnZXQgaXMgdHJ1ZQorUEFTUyBldmVu
dC50YXJnZXQucmVhZHlTdGF0ZSBpcyBldmVudC50YXJnZXQuRE9ORQorCitkYiA9IGV2ZW50LnJl
c3VsdAorZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24nKQorUEFTUyAnb25zdWNjZXNzJyBpbiBy
ZXN1bHQgaXMgdHJ1ZQorUEFTUyAnb25lcnJvcicgaW4gcmVzdWx0IGlzIHRydWUKK1BBU1MgJ3Jl
YWR5U3RhdGUnIGluIHJlc3VsdCBpcyB0cnVlCitBbiBldmVudCBzaG91bGQgZmlyZSBzaG9ydGx5
Li4uCisKK3NldFZlcnNpb25TdWNjZXNzKCk6CitTdWNjZXNzIGV2ZW50IGZpcmVkOgorUEFTUyAn
cmVzdWx0JyBpbiBldmVudCBpcyB0cnVlCitQQVNTICdjb2RlJyBpbiBldmVudCBpcyBmYWxzZQor
UEFTUyAnbWVzc2FnZScgaW4gZXZlbnQgaXMgZmFsc2UKK1BBU1MgJ3NvdXJjZScgaW4gZXZlbnQg
aXMgdHJ1ZQorUEFTUyBldmVudC5zb3VyY2UgIT0gbnVsbCBpcyB0cnVlCitQQVNTICdvbnN1Y2Nl
c3MnIGluIGV2ZW50LnRhcmdldCBpcyB0cnVlCitQQVNTICdvbmVycm9yJyBpbiBldmVudC50YXJn
ZXQgaXMgdHJ1ZQorUEFTUyAncmVhZHlTdGF0ZScgaW4gZXZlbnQudGFyZ2V0IGlzIHRydWUKK1BB
U1MgZXZlbnQudGFyZ2V0LnJlYWR5U3RhdGUgaXMgZXZlbnQudGFyZ2V0LkRPTkUKKwordHJhbnMg
PSBldmVudC5yZXN1bHQKK1BBU1MgdHJhbnMgIT09IG51bGwgaXMgdHJ1ZQorRGVsZXRlZCBhbGwg
b2JqZWN0IHN0b3Jlcy4KK2NyZWF0ZU9iamVjdFN0b3JlKCk6CitzdG9yZSA9IGRiLmNyZWF0ZU9i
amVjdFN0b3JlKCdDb250YWN0cycsIHtrZXlQYXRoOiAnaWQnLCBhdXRvSW5jcmVtZW50OiB0cnVl
fSkKK2RiLmNyZWF0ZU9iamVjdFN0b3JlKCdOYW1lcycsIHthdXRvSW5jcmVtZW50OiB0cnVlfSkK
K2RiLmNyZWF0ZU9iamVjdFN0b3JlKCdOdW1iZXJzJywge2F1dG9JbmNyZW1lbnQ6IGZhbHNlfSkK
K3N0b3JlTmFtZXMgPSBkYi5vYmplY3RTdG9yZU5hbWVzCitQQVNTIHN0b3JlLm5hbWUgaXMgIkNv
bnRhY3RzIgorUEFTUyBzdG9yZS5rZXlQYXRoIGlzICdpZCcKK1BBU1Mgc3RvcmVOYW1lcy5jb250
YWlucygnQ29udGFjdHMnKSBpcyB0cnVlCitQQVNTIHN0b3JlTmFtZXMuY29udGFpbnMoJ05hbWVz
JykgaXMgdHJ1ZQorUEFTUyBzdG9yZU5hbWVzLmNvbnRhaW5zKCdOdW1iZXJzJykgaXMgdHJ1ZQor
UEFTUyBzdG9yZU5hbWVzLmxlbmd0aCBpcyAzCitzZXRWZXJzaW9uQ29tcGxldGVkKCk6Cit0cmFu
cyA9IGRiLnRyYW5zYWN0aW9uKHttb2RlOiB3ZWJraXRJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRF
fSkKK3N0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ0NvbnRhY3RzJykKK0luc2VydCBkYXRhOgor
c3RvcmUuYWRkKHtuYW1lOiAnTGluY29sbicsIG51bWJlcjogJzcwMTInfSkKK2FkZExpbmNvbG5T
dWNjZXNzKCk6CitTdWNjZXNzIGV2ZW50IGZpcmVkOgorUEFTUyAncmVzdWx0JyBpbiBldmVudCBp
cyB0cnVlCitQQVNTICdjb2RlJyBpbiBldmVudCBpcyBmYWxzZQorUEFTUyAnbWVzc2FnZScgaW4g
ZXZlbnQgaXMgZmFsc2UKK1BBU1MgJ3NvdXJjZScgaW4gZXZlbnQgaXMgdHJ1ZQorUEFTUyBldmVu
dC5zb3VyY2UgIT0gbnVsbCBpcyB0cnVlCitQQVNTICdvbnN1Y2Nlc3MnIGluIGV2ZW50LnRhcmdl
dCBpcyB0cnVlCitQQVNTICdvbmVycm9yJyBpbiBldmVudC50YXJnZXQgaXMgdHJ1ZQorUEFTUyAn
cmVhZHlTdGF0ZScgaW4gZXZlbnQudGFyZ2V0IGlzIHRydWUKK1BBU1MgZXZlbnQudGFyZ2V0LnJl
YWR5U3RhdGUgaXMgZXZlbnQudGFyZ2V0LkRPTkUKKworUEFTUyBldmVudC5yZXN1bHQgaXMgMQor
c3RvcmUuZ2V0KDEpCitnZXRMaW5jb2xuU3VjY2VzcygpOgorU3VjY2VzcyBldmVudCBmaXJlZDoK
K1BBU1MgJ3Jlc3VsdCcgaW4gZXZlbnQgaXMgdHJ1ZQorUEFTUyAnY29kZScgaW4gZXZlbnQgaXMg
ZmFsc2UKK1BBU1MgJ21lc3NhZ2UnIGluIGV2ZW50IGlzIGZhbHNlCitQQVNTICdzb3VyY2UnIGlu
IGV2ZW50IGlzIHRydWUKK1BBU1MgZXZlbnQuc291cmNlICE9IG51bGwgaXMgdHJ1ZQorUEFTUyAn
b25zdWNjZXNzJyBpbiBldmVudC50YXJnZXQgaXMgdHJ1ZQorUEFTUyAnb25lcnJvcicgaW4gZXZl
bnQudGFyZ2V0IGlzIHRydWUKK1BBU1MgJ3JlYWR5U3RhdGUnIGluIGV2ZW50LnRhcmdldCBpcyB0
cnVlCitQQVNTIGV2ZW50LnRhcmdldC5yZWFkeVN0YXRlIGlzIGV2ZW50LnRhcmdldC5ET05FCisK
K1BBU1MgZXZlbnQucmVzdWx0Lm5hbWUgaXMgIkxpbmNvbG4iCitQQVNTIGV2ZW50LnJlc3VsdC5u
dW1iZXIgaXMgIjcwMTIiCitzdG9yZS5wdXQoe2lkOiAxLCBuYW1lOiAnQWJyYWhhbScsIG51bWJl
cjogJzIxMDcnfSkKK3B1dEFicmFoYW1TdWNjZXNzKCk6CitTdWNjZXNzIGV2ZW50IGZpcmVkOgor
UEFTUyAncmVzdWx0JyBpbiBldmVudCBpcyB0cnVlCitQQVNTICdjb2RlJyBpbiBldmVudCBpcyBm
YWxzZQorUEFTUyAnbWVzc2FnZScgaW4gZXZlbnQgaXMgZmFsc2UKK1BBU1MgJ3NvdXJjZScgaW4g
ZXZlbnQgaXMgdHJ1ZQorUEFTUyBldmVudC5zb3VyY2UgIT0gbnVsbCBpcyB0cnVlCitQQVNTICdv
bnN1Y2Nlc3MnIGluIGV2ZW50LnRhcmdldCBpcyB0cnVlCitQQVNTICdvbmVycm9yJyBpbiBldmVu
dC50YXJnZXQgaXMgdHJ1ZQorUEFTUyAncmVhZHlTdGF0ZScgaW4gZXZlbnQudGFyZ2V0IGlzIHRy
dWUKK1BBU1MgZXZlbnQudGFyZ2V0LnJlYWR5U3RhdGUgaXMgZXZlbnQudGFyZ2V0LkRPTkUKKwor
UEFTUyBldmVudC5yZXN1bHQgaXMgMQorc3RvcmUuZ2V0KDEpCitnZXRBYnJhaGFtU3VjY2Vzcygp
OgorU3VjY2VzcyBldmVudCBmaXJlZDoKK1BBU1MgJ3Jlc3VsdCcgaW4gZXZlbnQgaXMgdHJ1ZQor
UEFTUyAnY29kZScgaW4gZXZlbnQgaXMgZmFsc2UKK1BBU1MgJ21lc3NhZ2UnIGluIGV2ZW50IGlz
IGZhbHNlCitQQVNTICdzb3VyY2UnIGluIGV2ZW50IGlzIHRydWUKK1BBU1MgZXZlbnQuc291cmNl
ICE9IG51bGwgaXMgdHJ1ZQorUEFTUyAnb25zdWNjZXNzJyBpbiBldmVudC50YXJnZXQgaXMgdHJ1
ZQorUEFTUyAnb25lcnJvcicgaW4gZXZlbnQudGFyZ2V0IGlzIHRydWUKK1BBU1MgJ3JlYWR5U3Rh
dGUnIGluIGV2ZW50LnRhcmdldCBpcyB0cnVlCitQQVNTIGV2ZW50LnRhcmdldC5yZWFkeVN0YXRl
IGlzIGV2ZW50LnRhcmdldC5ET05FCisKK1BBU1MgZXZlbnQucmVzdWx0LmlkIGlzIDEKK1BBU1Mg
ZXZlbnQucmVzdWx0Lm5hbWUgaXMgIkFicmFoYW0iCitQQVNTIGV2ZW50LnJlc3VsdC5udW1iZXIg
aXMgIjIxMDciCitzdG9yZS5hZGQoe25hbWU6ICdKb2huc29uJywgbnVtYmVyOiAnMTg2MSd9KQor
YWRkSm9obnNvblN1Y2Nlc3MoKToKK1N1Y2Nlc3MgZXZlbnQgZmlyZWQ6CitQQVNTICdyZXN1bHQn
IGluIGV2ZW50IGlzIHRydWUKK1BBU1MgJ2NvZGUnIGluIGV2ZW50IGlzIGZhbHNlCitQQVNTICdt
ZXNzYWdlJyBpbiBldmVudCBpcyBmYWxzZQorUEFTUyAnc291cmNlJyBpbiBldmVudCBpcyB0cnVl
CitQQVNTIGV2ZW50LnNvdXJjZSAhPSBudWxsIGlzIHRydWUKK1BBU1MgJ29uc3VjY2VzcycgaW4g
ZXZlbnQudGFyZ2V0IGlzIHRydWUKK1BBU1MgJ29uZXJyb3InIGluIGV2ZW50LnRhcmdldCBpcyB0
cnVlCitQQVNTICdyZWFkeVN0YXRlJyBpbiBldmVudC50YXJnZXQgaXMgdHJ1ZQorUEFTUyBldmVu
dC50YXJnZXQucmVhZHlTdGF0ZSBpcyBldmVudC50YXJnZXQuRE9ORQorCitQQVNTIGV2ZW50LnJl
c3VsdCBpcyAyCitzdG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdOYW1lcycpCitzdG9yZS5hZGQo
e25hbWU6ICdBZGFtJ30pCithZGRBZGFtU3VjY2VzcygpOgorU3VjY2VzcyBldmVudCBmaXJlZDoK
K1BBU1MgJ3Jlc3VsdCcgaW4gZXZlbnQgaXMgdHJ1ZQorUEFTUyAnY29kZScgaW4gZXZlbnQgaXMg
ZmFsc2UKK1BBU1MgJ21lc3NhZ2UnIGluIGV2ZW50IGlzIGZhbHNlCitQQVNTICdzb3VyY2UnIGlu
IGV2ZW50IGlzIHRydWUKK1BBU1MgZXZlbnQuc291cmNlICE9IG51bGwgaXMgdHJ1ZQorUEFTUyAn
b25zdWNjZXNzJyBpbiBldmVudC50YXJnZXQgaXMgdHJ1ZQorUEFTUyAnb25lcnJvcicgaW4gZXZl
bnQudGFyZ2V0IGlzIHRydWUKK1BBU1MgJ3JlYWR5U3RhdGUnIGluIGV2ZW50LnRhcmdldCBpcyB0
cnVlCitQQVNTIGV2ZW50LnRhcmdldC5yZWFkeVN0YXRlIGlzIGV2ZW50LnRhcmdldC5ET05FCisK
K1BBU1MgZXZlbnQucmVzdWx0IGlzIDEKK3N0b3JlLmFkZCh7bmFtZTogJ0V2ZSd9KQorYWRkRXZl
U3VjY2VzcygpOgorU3VjY2VzcyBldmVudCBmaXJlZDoKK1BBU1MgJ3Jlc3VsdCcgaW4gZXZlbnQg
aXMgdHJ1ZQorUEFTUyAnY29kZScgaW4gZXZlbnQgaXMgZmFsc2UKK1BBU1MgJ21lc3NhZ2UnIGlu
IGV2ZW50IGlzIGZhbHNlCitQQVNTICdzb3VyY2UnIGluIGV2ZW50IGlzIHRydWUKK1BBU1MgZXZl
bnQuc291cmNlICE9IG51bGwgaXMgdHJ1ZQorUEFTUyAnb25zdWNjZXNzJyBpbiBldmVudC50YXJn
ZXQgaXMgdHJ1ZQorUEFTUyAnb25lcnJvcicgaW4gZXZlbnQudGFyZ2V0IGlzIHRydWUKK1BBU1Mg
J3JlYWR5U3RhdGUnIGluIGV2ZW50LnRhcmdldCBpcyB0cnVlCitQQVNTIGV2ZW50LnRhcmdldC5y
ZWFkeVN0YXRlIGlzIGV2ZW50LnRhcmdldC5ET05FCisKK1BBU1MgZXZlbnQucmVzdWx0IGlzIDIK
K3N0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ051bWJlcnMnKQorc3RvcmUuYWRkKHtudW1iZXI6
IDMuMTR9KQorYWRkUGlFcnJvcigpOgorRXJyb3IgZXZlbnQgZmlyZWQ6CitQQVNTICdyZXN1bHQn
IGluIGV2ZW50IGlzIGZhbHNlCitQQVNTICdjb2RlJyBpbiBldmVudCBpcyB0cnVlCitQQVNTICdt
ZXNzYWdlJyBpbiBldmVudCBpcyB0cnVlCitQQVNTICdzb3VyY2UnIGluIGV2ZW50IGlzIHRydWUK
K1BBU1MgZXZlbnQuc291cmNlICE9IG51bGwgaXMgdHJ1ZQorUEFTUyAnb25zdWNjZXNzJyBpbiBl
dmVudC50YXJnZXQgaXMgdHJ1ZQorUEFTUyAnb25lcnJvcicgaW4gZXZlbnQudGFyZ2V0IGlzIHRy
dWUKK1BBU1MgJ3JlYWR5U3RhdGUnIGluIGV2ZW50LnRhcmdldCBpcyB0cnVlCitQQVNTIGV2ZW50
LnRhcmdldC5yZWFkeVN0YXRlIGlzIGV2ZW50LnRhcmdldC5ET05FCisKK1BBU1MgZXZlbnQuY29k
ZSBpcyB3ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUgorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWF1dG9pbmNyZW1lbnQuaHRtbCBiL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWF1dG9pbmNyZW1lbnQuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5lNmQ1YWE3ZDkzMTY4ZGFmZWRlZDBkYTA2NGQ5MDAxYWM4MzgyZmQxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3Rv
cmUtYXV0b2luY3JlbWVudC5odG1sCkBAIC0wLDAgKzEsMTc4IEBACis8aHRtbD4KKzxoZWFkPgor
PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10
ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcG9zdC1mdW5jdGlvbi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNj
cmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorCitkZXNj
cmlwdGlvbigiVGVzdCBJbmRleGVkREIncyBJREJPYmplY3RTdG9yZSBhdXRvLWluY3JlbWVudCBm
ZWF0dXJlLiIpOworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAg
IHJlc3VsdCA9IGV2YWxBbmRMb2coIndlYmtpdEluZGV4ZWREQi5vcGVuKCdBZGRyZXNzIEJvb2sn
KSIpOworICAgIHZlcmlmeVJlc3VsdChyZXN1bHQpOworICAgIHJlc3VsdC5vbnN1Y2Nlc3MgPSBv
cGVuU3VjY2VzczsKKyAgICByZXN1bHQub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNr
OworfQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgZGVidWcoIm9wZW5TdWNjZXNz
KCk6Iik7CisgICAgdmVyaWZ5U3VjY2Vzc0V2ZW50KGV2ZW50KTsKKyAgICB3aW5kb3cuZGIgPSBl
dmFsQW5kTG9nKCJkYiA9IGV2ZW50LnJlc3VsdCIpOworCisgICAgcmVzdWx0ID0gZXZhbEFuZExv
ZygiZGIuc2V0VmVyc2lvbignbmV3IHZlcnNpb24nKSIpOworICAgIHZlcmlmeVJlc3VsdChyZXN1
bHQpOworICAgIHJlc3VsdC5vbnN1Y2Nlc3MgPSBzZXRWZXJzaW9uU3VjY2VzczsKKyAgICByZXN1
bHQub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBzZXRW
ZXJzaW9uU3VjY2VzcygpCit7CisgICAgZGVidWcoInNldFZlcnNpb25TdWNjZXNzKCk6Iik7Cisg
ICAgdmVyaWZ5U3VjY2Vzc0V2ZW50KGV2ZW50KTsKKyAgICB3aW5kb3cudHJhbnMgPSBldmFsQW5k
TG9nKCJ0cmFucyA9IGV2ZW50LnJlc3VsdCIpOworICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09
IG51bGwiKTsKKyAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7Cisg
ICAgdHJhbnMub25jb21wbGV0ZSA9IHNldFZlcnNpb25Db21wbGV0ZWQ7CisKKyAgICBkZWxldGVB
bGxPYmplY3RTdG9yZXMoZGIsIGNyZWF0ZU9iamVjdFN0b3JlKTsKK30KKworZnVuY3Rpb24gY3Jl
YXRlT2JqZWN0U3RvcmUoKQoreworICAgIGRlYnVnKCJjcmVhdGVPYmplY3RTdG9yZSgpOiIpOwor
ICAgIHdpbmRvdy5zdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3Rv
cmUoJ0NvbnRhY3RzJywge2tleVBhdGg6ICdpZCcsIGF1dG9JbmNyZW1lbnQ6IHRydWV9KSIpOwor
ICAgIGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdOYW1lcycsIHthdXRvSW5jcmVt
ZW50OiB0cnVlfSkiKTsKKyAgICBldmFsQW5kTG9nKCJkYi5jcmVhdGVPYmplY3RTdG9yZSgnTnVt
YmVycycsIHthdXRvSW5jcmVtZW50OiBmYWxzZX0pIik7CisgICAgdmFyIHN0b3JlTmFtZXMgPSBl
dmFsQW5kTG9nKCJzdG9yZU5hbWVzID0gZGIub2JqZWN0U3RvcmVOYW1lcyIpOworCisgICAgc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCJzdG9yZS5uYW1lIiwgIkNvbnRhY3RzIik7CisgICAgc2hvdWxk
QmUoInN0b3JlLmtleVBhdGgiLCAiJ2lkJyIpOworICAgIHNob3VsZEJlKCJzdG9yZU5hbWVzLmNv
bnRhaW5zKCdDb250YWN0cycpIiwgInRydWUiKTsKKyAgICBzaG91bGRCZSgic3RvcmVOYW1lcy5j
b250YWlucygnTmFtZXMnKSIsICJ0cnVlIik7CisgICAgc2hvdWxkQmUoInN0b3JlTmFtZXMuY29u
dGFpbnMoJ051bWJlcnMnKSIsICJ0cnVlIik7CisgICAgc2hvdWxkQmUoInN0b3JlTmFtZXMubGVu
Z3RoIiwgIjMiKTsKKworICAgIC8vIExldCB0aGUgc2V0VmVyc2lvbiB0cmFuc2FjdGlvbiBjb21w
bGV0ZS4KK30KKworZnVuY3Rpb24gc2V0VmVyc2lvbkNvbXBsZXRlZCgpCit7CisgICAgZGVidWco
InNldFZlcnNpb25Db21wbGV0ZWQoKToiKTsKKworICAgIHdpbmRvdy50cmFucyA9IGV2YWxBbmRM
b2coInRyYW5zID0gZGIudHJhbnNhY3Rpb24oe21vZGU6IHdlYmtpdElEQlRyYW5zYWN0aW9uLlJF
QURfV1JJVEV9KSIpOworICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFj
azsKKyAgICB0cmFucy5vbmNvbXBsZXRlID0gZG9uZTsKKworICAgIHdpbmRvdy5zdG9yZSA9IGV2
YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUoJ0NvbnRhY3RzJykiKTsKKworICAg
IGRlYnVnKCJJbnNlcnQgZGF0YToiKTsKKyAgICByZXN1bHQgPSBldmFsQW5kTG9nKCJzdG9yZS5h
ZGQoe25hbWU6ICdMaW5jb2xuJywgbnVtYmVyOiAnNzAxMid9KSIpOworICAgIHJlc3VsdC5vbnN1
Y2Nlc3MgPSBhZGRMaW5jb2xuU3VjY2VzczsKKyAgICByZXN1bHQub25lcnJvciA9IHVuZXhwZWN0
ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBhZGRMaW5jb2xuU3VjY2VzcygpCit7Cisg
ICAgZGVidWcoImFkZExpbmNvbG5TdWNjZXNzKCk6Iik7CisgICAgdmVyaWZ5U3VjY2Vzc0V2ZW50
KGV2ZW50KTsKKyAgICBzaG91bGRCZSgiZXZlbnQucmVzdWx0IiwgIjEiKTsKKworICAgIHJlc3Vs
dCA9IGV2YWxBbmRMb2coInN0b3JlLmdldCgxKSIpOworICAgIHJlc3VsdC5vbnN1Y2Nlc3MgPSBn
ZXRMaW5jb2xuU3VjY2VzczsKKyAgICByZXN1bHQub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOworfQorCitmdW5jdGlvbiBnZXRMaW5jb2xuU3VjY2VzcygpCit7CisgICAgZGVidWco
ImdldExpbmNvbG5TdWNjZXNzKCk6Iik7CisgICAgdmVyaWZ5U3VjY2Vzc0V2ZW50KGV2ZW50KTsK
KyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnJlc3VsdC5uYW1lIiwgIkxpbmNvbG4i
KTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnJlc3VsdC5udW1iZXIiLCAiNzAx
MiIpOworCisgICAgcmVzdWx0ID0gZXZhbEFuZExvZygic3RvcmUucHV0KHtpZDogMSwgbmFtZTog
J0FicmFoYW0nLCBudW1iZXI6ICcyMTA3J30pIik7CisgICAgcmVzdWx0Lm9uc3VjY2VzcyA9IHB1
dEFicmFoYW1TdWNjZXNzOworICAgIHJlc3VsdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2s7Cit9CisKK2Z1bmN0aW9uIHB1dEFicmFoYW1TdWNjZXNzKCkKK3sKKyAgICBkZWJ1Zygi
cHV0QWJyYWhhbVN1Y2Nlc3MoKToiKTsKKyAgICB2ZXJpZnlTdWNjZXNzRXZlbnQoZXZlbnQpOwor
ICAgIHNob3VsZEJlKCJldmVudC5yZXN1bHQiLCAiMSIpOworCisgICAgcmVzdWx0ID0gZXZhbEFu
ZExvZygic3RvcmUuZ2V0KDEpIik7CisgICAgcmVzdWx0Lm9uc3VjY2VzcyA9IGdldEFicmFoYW1T
dWNjZXNzOworICAgIHJlc3VsdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9
CisKK2Z1bmN0aW9uIGdldEFicmFoYW1TdWNjZXNzKCkKK3sKKyAgICBkZWJ1ZygiZ2V0QWJyYWhh
bVN1Y2Nlc3MoKToiKTsKKyAgICB2ZXJpZnlTdWNjZXNzRXZlbnQoZXZlbnQpOworICAgIHNob3Vs
ZEJlKCJldmVudC5yZXN1bHQuaWQiLCAiMSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygi
ZXZlbnQucmVzdWx0Lm5hbWUiLCAiQWJyYWhhbSIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
ZygiZXZlbnQucmVzdWx0Lm51bWJlciIsICIyMTA3Iik7CisKKyAgICByZXN1bHQgPSBldmFsQW5k
TG9nKCJzdG9yZS5hZGQoe25hbWU6ICdKb2huc29uJywgbnVtYmVyOiAnMTg2MSd9KSIpOworICAg
IHJlc3VsdC5vbnN1Y2Nlc3MgPSBhZGRKb2huc29uU3VjY2VzczsKKyAgICByZXN1bHQub25lcnJv
ciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBhZGRKb2huc29uU3Vj
Y2VzcygpCit7CisgICAgZGVidWcoImFkZEpvaG5zb25TdWNjZXNzKCk6Iik7CisgICAgdmVyaWZ5
U3VjY2Vzc0V2ZW50KGV2ZW50KTsKKyAgICBzaG91bGRCZSgiZXZlbnQucmVzdWx0IiwgIjIiKTsK
KworICAgIHdpbmRvdy5zdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gdHJhbnMub2JqZWN0U3Rv
cmUoJ05hbWVzJykiKTsKKyAgICByZXN1bHQgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe25hbWU6
ICdBZGFtJ30pIik7CisgICAgcmVzdWx0Lm9uc3VjY2VzcyA9IGFkZEFkYW1TdWNjZXNzOworICAg
IHJlc3VsdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9u
IGFkZEFkYW1TdWNjZXNzKCkKK3sKKyAgICBkZWJ1ZygiYWRkQWRhbVN1Y2Nlc3MoKToiKTsKKyAg
ICB2ZXJpZnlTdWNjZXNzRXZlbnQoZXZlbnQpOworICAgIHNob3VsZEJlKCJldmVudC5yZXN1bHQi
LCAiMSIpOworCisgICAgcmVzdWx0ID0gZXZhbEFuZExvZygic3RvcmUuYWRkKHtuYW1lOiAnRXZl
J30pIik7CisgICAgcmVzdWx0Lm9uc3VjY2VzcyA9IGFkZEV2ZVN1Y2Nlc3M7CisgICAgcmVzdWx0
Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gYWRkRXZl
U3VjY2VzcygpCit7CisgICAgZGVidWcoImFkZEV2ZVN1Y2Nlc3MoKToiKTsKKyAgICB2ZXJpZnlT
dWNjZXNzRXZlbnQoZXZlbnQpOworICAgIHNob3VsZEJlKCJldmVudC5yZXN1bHQiLCAiMiIpOwor
CisgICAgd2luZG93LnN0b3JlID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFucy5vYmplY3RTdG9y
ZSgnTnVtYmVycycpIik7CisgICAgcmVzdWx0ID0gZXZhbEFuZExvZygic3RvcmUuYWRkKHtudW1i
ZXI6IDMuMTR9KSIpOworICAgIHJlc3VsdC5vbnN1Y2Nlc3MgPSB1bmV4cGVjdGVkU3VjY2Vzc0Nh
bGxiYWNrOworICAgIHJlc3VsdC5vbmVycm9yID0gYWRkUGlFcnJvcjsKK30KKworZnVuY3Rpb24g
YWRkUGlFcnJvcigpCit7CisgICAgZGVidWcoImFkZFBpRXJyb3IoKToiKTsKKyAgICB2ZXJpZnlF
cnJvckV2ZW50KGV2ZW50KTsKKyAgICBzaG91bGRCZSgiZXZlbnQuY29kZSIsICJ3ZWJraXRJREJE
YXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOworfQorCit0ZXN0KCk7CisKK3ZhciBzdWNjZXNz
ZnVsbHlQYXJzZWQgPSB0cnVlOworCis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCAwYzQwZmRhZjE1YzgwNmYyYTAwODAwYWNmNDc4MzczYjIyYTQyMzA3Li44M2NhYTZj
MzUwZjkyNDI3OTJiYjhlN2EwMmQ4YzRmMDUyZTc5NzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjAgQEAKKzIwMTEtMDEtMTcgIEhhbnMgV2VubmJvcmcgIDxoYW5zQGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbmRleGVkREI6
IFN1cHBvcnQgYXV0by1pbmNyZW1lbnQga2V5cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTI1NzYKKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgYXV0
by1pbmNyZW1lbnQga2V5cy4KKworICAgICAgICBUZXN0OiBzdG9yYWdlL2luZGV4ZWRkYi9vYmpl
Y3RzdG9yZS1hdXRvaW5jcmVtZW50Lmh0bWwKKworICAgICAgICAqIHN0b3JhZ2UvSURCRGF0YWJh
c2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6OmNyZWF0ZU9iamVjdFN0b3Jl
KToKKyAgICAgICAgKiBzdG9yYWdlL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Z2VuQXV0b0luY3JlbWVudEtleSk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpwdXRJbnRlcm5hbCk6CisKIDIwMTEtMDEtMTcgIFBh
dmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgTm90IHJldmll
d2VkOiBRdCBidWlsZCBmaXguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lE
QkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuY3BwCmlu
ZGV4IDdhOTE0MWE2ZDgzNTlhMjJkZDQ1YjkxYjFmNzA1ZGU1MjljMjNkNWEuLjMzZjAwNGI2NGNk
ZTZmY2E0ZDQzNDRiNTg0NjlhMGMyMWJlNWJjYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N0b3JhZ2UvSURCRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURC
RGF0YWJhc2UuY3BwCkBAIC03MywxMiArNzMsNiBAQCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3Jl
PiBJREJEYXRhYmFzZTo6Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBjbwog
ICAgIG9wdGlvbnMuZ2V0S2V5Qm9vbCgiYXV0b0luY3JlbWVudCIsIGF1dG9JbmNyZW1lbnQpOwog
ICAgIC8vIEZJWE1FOiBMb29rIHVwIGV2aWN0YWJsZSBhbmQgcGFzcyB0aGF0IG9uIGFzIHdlbGwu
CiAKLSAgICBpZiAoYXV0b0luY3JlbWVudCkgewotICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50
IHN1cHBvcnQgZm9yIGF1dG8gaW5jcmVtZW50LgotICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhj
ZXB0aW9uOjpVTktOT1dOX0VSUjsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCiAgICAgUmVm
UHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gb2JqZWN0U3RvcmUgPSBtX2JhY2tl
bmQtPmNyZWF0ZU9iamVjdFN0b3JlKG5hbWUsIGtleVBhdGgsIGF1dG9JbmNyZW1lbnQsIG1fc2V0
VmVyc2lvblRyYW5zYWN0aW9uLmdldCgpLCBlYyk7CiAgICAgaWYgKCFvYmplY3RTdG9yZSkgewog
ICAgICAgICBBU1NFUlQoZWMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9J
REJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURC
T2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHAKaW5kZXggMzk2ZjU0NGViNjZkNTVmZmNhOGRmODRm
OGZiM2MzODQwNTYyYmJjNy4uNDVmOGE2NGZhNDFiYzdjNjUzYWExNjMyNmZlM2RjNmMxMmM5ZTI5
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZUJhY2tl
bmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlQmFj
a2VuZEltcGwuY3BwCkBAIC0xOTUsMTMgKzE5NSwyNyBAQCB2b2lkIElEQk9iamVjdFN0b3JlQmFj
a2VuZEltcGw6OnB1dChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gcHJwVmFsdWUs
CiAgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246Ok5PVF9BTExPV0VEX0VSUjsKIH0K
IAorc3RhdGljIFBhc3NSZWZQdHI8SURCS2V5PiBnZW5BdXRvSW5jcmVtZW50S2V5KFNRTGl0ZURh
dGFiYXNlJiBkYiwgaW50NjRfdCBvYmplY3RTdG9yZUlkKQoreworICAgIFN0cmluZyBzcWwgPSAi
U0VMRUNUIG1heChrZXlOdW1iZXIpICsgMSBGUk9NIE9iamVjdFN0b3JlRGF0YSBXSEVSRSBvYmpl
Y3RTdG9yZUlkID0gPyBBTkQga2V5U3RyaW5nIElTIE5VTEwgQU5EIGtleURhdGUgSVMgTlVMTCI7
CisKKyAgICBTUUxpdGVTdGF0ZW1lbnQgcXVlcnkoZGIsIHNxbCk7CisgICAgYm9vbCBvayA9IHF1
ZXJ5LnByZXBhcmUoKSA9PSBTUUxSZXN1bHRPazsKKyAgICBBU1NFUlRfVU5VU0VEKG9rLCBvayk7
CisKKyAgICBxdWVyeS5iaW5kSW50NjQoMSwgb2JqZWN0U3RvcmVJZCk7CisKKyAgICBpZiAocXVl
cnkuc3RlcCgpICE9IFNRTFJlc3VsdFJvdyB8fCBxdWVyeS5pc0NvbHVtbk51bGwoMCkpCisgICAg
ICAgIHJldHVybiBJREJLZXk6OmNyZWF0ZU51bWJlcigxKTsKKworICAgIHJldHVybiBJREJLZXk6
OmNyZWF0ZU51bWJlcihxdWVyeS5nZXRDb2x1bW5Eb3VibGUoMCkpOworfQorCiB2b2lkIElEQk9i
amVjdFN0b3JlQmFja2VuZEltcGw6OnB1dEludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+IG9iamVjdFN0b3JlLCBQYXNz
UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gcHJwVmFsdWUsIFBhc3NSZWZQdHI8SURCS2V5
PiBwcnBLZXksIGJvb2wgYWRkT25seSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNr
cywgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IHRyYW5zYWN0aW9u
KQogewogICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZhbHVlID0gcHJwVmFsdWU7
CiAgICAgUmVmUHRyPElEQktleT4ga2V5ID0gcHJwS2V5OwogCi0gICAgLy8gRklYTUU6IFN1cHBv
cnQgYXV0by1pbmNyZW1lbnQuCi0KICAgICBpZiAoIW9iamVjdFN0b3JlLT5tX2tleVBhdGguaXNO
dWxsKCkpIHsKICAgICAgICAgaWYgKGtleSkgewogICAgICAgICAgICAgY2FsbGJhY2tzLT5vbkVy
cm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VU5LTk9X
Tl9FUlIsICJBIGtleSB3YXMgc3VwcGxpZWQgZm9yIGFuIG9iamVjdFN0b3JlIHRoYXQgaGFzIGEg
a2V5UGF0aC4iKSk7CkBAIC0yMDksMTIgKzIyMywyMCBAQCB2b2lkIElEQk9iamVjdFN0b3JlQmFj
a2VuZEltcGw6OnB1dEludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRy
PAogICAgICAgICB9CiAgICAgICAgIGtleSA9IGZldGNoS2V5RnJvbUtleVBhdGgodmFsdWUuZ2V0
KCksIG9iamVjdFN0b3JlLT5tX2tleVBhdGgpOwogICAgICAgICBpZiAoIWtleSkgewotICAgICAg
ICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRh
YmFzZUV4Y2VwdGlvbjo6VU5LTk9XTl9FUlIsICJUaGUga2V5IGNvdWxkIG5vdCBiZSBmZXRjaGVk
IGZyb20gdGhlIGtleVBhdGguIikpOwotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
aWYgKG9iamVjdFN0b3JlLT5hdXRvSW5jcmVtZW50KCkpCisgICAgICAgICAgICAgICAga2V5ID0g
Z2VuQXV0b0luY3JlbWVudEtleShvYmplY3RTdG9yZS0+c3FsaXRlRGF0YWJhc2UoKSwgb2JqZWN0
U3RvcmUtPmlkKCkpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgY2FsbGJh
Y2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlv
bjo6VU5LTk9XTl9FUlIsICJUaGUga2V5IGNvdWxkIG5vdCBiZSBmZXRjaGVkIGZyb20gdGhlIGtl
eVBhdGguIikpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KICAgICAg
ICAgfQogICAgIH0gZWxzZSBpZiAoIWtleSkgewotICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3Io
SURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpEQVRBX0VSUiwg
Ik5vIGtleSBzdXBwbGllZC4iKSk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKG9iamVj
dFN0b3JlLT5hdXRvSW5jcmVtZW50KCkpCisgICAgICAgICAgICBrZXkgPSBnZW5BdXRvSW5jcmVt
ZW50S2V5KG9iamVjdFN0b3JlLT5zcWxpdGVEYXRhYmFzZSgpLCBvYmplY3RTdG9yZS0+aWQoKSk7
CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFi
YXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6REFUQV9FUlIsICJObyBrZXkg
c3VwcGxpZWQuIikpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAgICAgfQogICAg
IGlmIChrZXktPnR5cGUoKSA9PSBJREJLZXk6Ok51bGxUeXBlKSB7CiAgICAgICAgIGNhbGxiYWNr
cy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246
OkRBVEFfRVJSLCAiTlVMTCBrZXkgaXMgbm90IGFsbG93ZWQuIikpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79424</attachid>
            <date>2011-01-19 07:27:40 -0800</date>
            <delta_ts>2011-01-19 08:07:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-52576-20110119152738.patch</filename>
            <type>text/plain</type>
            <size>22665</size>
            <attacher name="Hans Wennborg">hans</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA5MWRmNTJhOTIxMjIxM2I0MTQ0MzMyMTUxN2JlMjk4MTkzMmJiNDQzLi5hZWIwNDU2
YTk5ZTNlZjQ3MzRlYmJmZTcwMjMxZTZmZGI4OTQxYTllIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAK
KzIwMTEtMDEtMTkgIEhhbnMgV2VubmJvcmcgIDxoYW5zQGNocm9taXVtLm9yZz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbmRleGVkREI6IFN1cHBv
cnQgYXV0by1pbmNyZW1lbnQga2V5cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NTI1NzYKKworICAgICAgICBBZGQgbGF5b3V0IHRlc3QgZm9yIGF1dG8g
aW5jcmVtZW50IGtleXMuCisgICAgICAgIFVwZGF0ZSBwcmV2aW91cyB0ZXN0IG5vdCB0byBjb25z
aWRlciBhdXRvIGluY3JlbWVudCBhbiBlcnJvci4KKworICAgICAgICAqIHN0b3JhZ2UvaW5kZXhl
ZGRiL2NyZWF0ZS1vYmplY3Qtc3RvcmUtb3B0aW9ucy1leHBlY3RlZC50eHQ6CisgICAgICAgICog
c3RvcmFnZS9pbmRleGVkZGIvY3JlYXRlLW9iamVjdC1zdG9yZS1vcHRpb25zLmh0bWw6CisgICAg
ICAgICogc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtYXV0b2luY3JlbWVudC1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWF1
dG9pbmNyZW1lbnQuaHRtbDogQWRkZWQuCisKIDIwMTEtMDEtMTkgIFBhdmVsIEZlbGRtYW4gIDxw
ZmVsZG1hbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgTm90IHJldmlld2VkOiBmaXhlZCBmbGFr
eSBpbnNwZWN0b3IgdGVzdC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL2NyZWF0ZS1vYmplY3Qtc3RvcmUtb3B0aW9ucy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9jcmVhdGUtb2JqZWN0LXN0b3JlLW9wdGlvbnMtZXhwZWN0ZWQu
dHh0CmluZGV4IDgzMDE2ZDZlOWU0MjBkZjZlY2I0OGUxMmJmY2RiOTBhODQyMjg3MTkuLjllNzI3
YTU1ZmI3OWRlNjE2YjQwODU1MTgyZjk2YmFiZjMzOGM1NTggMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2NyZWF0ZS1vYmplY3Qtc3RvcmUtb3B0aW9ucy1leHBlY3Rl
ZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3JlYXRlLW9iamVjdC1z
dG9yZS1vcHRpb25zLWV4cGVjdGVkLnR4dApAQCAtMTcsOCArMTcsNiBAQCBEZWxldGVkIGFsbCBv
YmplY3Qgc3RvcmVzLgogZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2EnLCB7a2V5UGF0aDogJ2EnfSkK
IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdiJykKIGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdjJywge2F1
dG9JbmNyZW1lbnQ6IHRydWV9KTsKLVBBU1MgRXhjZXB0aW9uIHRocm93bgotUEFTUyBjb2RlIGlz
IHdlYmtpdElEQkRhdGFiYXNlRXhjZXB0aW9uLlVOS05PV05fRVJSCiB0cmFucyA9IGRiLnRyYW5z
YWN0aW9uKHttb2RlOiB3ZWJraXRJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFfSkKIFBBU1MgdHJh
bnMubW9kZSBpcyB3ZWJraXRJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFCiB0cmFucy5vYmplY3RT
dG9yZSgnYScpLnB1dCh7J2EnOiAwfSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL2NyZWF0ZS1vYmplY3Qtc3RvcmUtb3B0aW9ucy5odG1sIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvY3JlYXRlLW9iamVjdC1zdG9yZS1vcHRpb25zLmh0bWwKaW5kZXgg
NGFiYjhmNjQxNzkxNzZiOWM4MWNiMWY0Zjk1ZDllNDRiODU2YTQwNC4uZWFjYjA5ZDFiNDhmZTc0
NDU5Nzc1ZTk5ZTY0ZTg3YWMwYTg5Yjg0MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvY3JlYXRlLW9iamVjdC1zdG9yZS1vcHRpb25zLmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvY3JlYXRlLW9iamVjdC1zdG9yZS1vcHRpb25zLmh0bWwK
QEAgLTQ0LDE2ICs0NCw4IEBAIGZ1bmN0aW9uIGNsZWFuZWQoKQogICAgIGV2YWxBbmRMb2coImRi
LmNyZWF0ZU9iamVjdFN0b3JlKCdhJywge2tleVBhdGg6ICdhJ30pIik7CiAgICAgZXZhbEFuZExv
ZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2InKSIpOwogCi0gICAgdHJ5IHsKLSAgICAgICAgLy8g
RklYTUU6IFRoaXMgc2hvdWxkIHdvcmsgaW4gdGhlIGZ1dHVyZS4KLSAgICAgICAgZGVidWcoImRi
LmNyZWF0ZU9iamVjdFN0b3JlKCdjJywge2F1dG9JbmNyZW1lbnQ6IHRydWV9KTsiKTsKLSAgICAg
ICAgZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2MnLCB7YXV0b0luY3JlbWVudDogdHJ1ZX0pOwotICAg
ICAgICB0ZXN0RmFpbGVkKCdjcmVhdGVPYmplY3RTdG9yZSB3aXRoIGF1dG9JbmNyZW1lbnQgPSB0
cnVlIHNob3VsZCB0aHJvdycpOwotICAgIH0gY2F0Y2ggKGVycikgewotICAgICAgICB0ZXN0UGFz
c2VkKCJFeGNlcHRpb24gdGhyb3duIik7Ci0gICAgICAgIGNvZGUgPSBlcnIuY29kZTsKLSAgICAg
ICAgc2hvdWxkQmUoImNvZGUiLCAid2Via2l0SURCRGF0YWJhc2VFeGNlcHRpb24uVU5LTk9XTl9F
UlIiKTsKLSAgICB9CisgICAgZGVidWcoImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdjJywge2F1dG9J
bmNyZW1lbnQ6IHRydWV9KTsiKTsKKyAgICBkYi5jcmVhdGVPYmplY3RTdG9yZSgnYycsIHthdXRv
SW5jcmVtZW50OiB0cnVlfSk7CiAKICAgICB0cmFucyA9IGV2YWxBbmRMb2coInRyYW5zID0gZGIu
dHJhbnNhY3Rpb24oe21vZGU6IHdlYmtpdElEQlRyYW5zYWN0aW9uLlJFQURfV1JJVEV9KSIpOwog
ICAgIHNob3VsZEJlKCJ0cmFucy5tb2RlIiwgIndlYmtpdElEQlRyYW5zYWN0aW9uLlJFQURfV1JJ
VEUiKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0
b3JlLWF1dG9pbmNyZW1lbnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvb2JqZWN0c3RvcmUtYXV0b2luY3JlbWVudC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
OGUzNmM5NmM1OTAzOWZhZWVmMDA4MTdjMTMxYzBjNTY3OTM4OGY0ZAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWF1dG9pbmNyZW1l
bnQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTgzIEBACitUZXN0IEluZGV4ZWREQidzIElEQk9i
amVjdFN0b3JlIGF1dG8taW5jcmVtZW50IGZlYXR1cmUuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBM
RVRFIi4KKworCit3ZWJraXRJbmRleGVkREIub3BlbignQWRkcmVzcyBCb29rJykKK1BBU1MgJ29u
c3VjY2VzcycgaW4gcmVzdWx0IGlzIHRydWUKK1BBU1MgJ29uZXJyb3InIGluIHJlc3VsdCBpcyB0
cnVlCitQQVNTICdyZWFkeVN0YXRlJyBpbiByZXN1bHQgaXMgdHJ1ZQorQW4gZXZlbnQgc2hvdWxk
IGZpcmUgc2hvcnRseS4uLgorCitvcGVuU3VjY2VzcygpOgorU3VjY2VzcyBldmVudCBmaXJlZDoK
K1BBU1MgJ3Jlc3VsdCcgaW4gZXZlbnQgaXMgdHJ1ZQorUEFTUyAnY29kZScgaW4gZXZlbnQgaXMg
ZmFsc2UKK1BBU1MgJ21lc3NhZ2UnIGluIGV2ZW50IGlzIGZhbHNlCitQQVNTICdzb3VyY2UnIGlu
IGV2ZW50IGlzIHRydWUKK1BBU1MgZXZlbnQuc291cmNlICE9IG51bGwgaXMgdHJ1ZQorUEFTUyAn
b25zdWNjZXNzJyBpbiBldmVudC50YXJnZXQgaXMgdHJ1ZQorUEFTUyAnb25lcnJvcicgaW4gZXZl
bnQudGFyZ2V0IGlzIHRydWUKK1BBU1MgJ3JlYWR5U3RhdGUnIGluIGV2ZW50LnRhcmdldCBpcyB0
cnVlCitQQVNTIGV2ZW50LnRhcmdldC5yZWFkeVN0YXRlIGlzIGV2ZW50LnRhcmdldC5ET05FCisK
K2RiID0gZXZlbnQucmVzdWx0CitkYi5zZXRWZXJzaW9uKCduZXcgdmVyc2lvbicpCitQQVNTICdv
bnN1Y2Nlc3MnIGluIHJlc3VsdCBpcyB0cnVlCitQQVNTICdvbmVycm9yJyBpbiByZXN1bHQgaXMg
dHJ1ZQorUEFTUyAncmVhZHlTdGF0ZScgaW4gcmVzdWx0IGlzIHRydWUKK0FuIGV2ZW50IHNob3Vs
ZCBmaXJlIHNob3J0bHkuLi4KKworc2V0VmVyc2lvblN1Y2Nlc3MoKToKK1N1Y2Nlc3MgZXZlbnQg
ZmlyZWQ6CitQQVNTICdyZXN1bHQnIGluIGV2ZW50IGlzIHRydWUKK1BBU1MgJ2NvZGUnIGluIGV2
ZW50IGlzIGZhbHNlCitQQVNTICdtZXNzYWdlJyBpbiBldmVudCBpcyBmYWxzZQorUEFTUyAnc291
cmNlJyBpbiBldmVudCBpcyB0cnVlCitQQVNTIGV2ZW50LnNvdXJjZSAhPSBudWxsIGlzIHRydWUK
K1BBU1MgJ29uc3VjY2VzcycgaW4gZXZlbnQudGFyZ2V0IGlzIHRydWUKK1BBU1MgJ29uZXJyb3In
IGluIGV2ZW50LnRhcmdldCBpcyB0cnVlCitQQVNTICdyZWFkeVN0YXRlJyBpbiBldmVudC50YXJn
ZXQgaXMgdHJ1ZQorUEFTUyBldmVudC50YXJnZXQucmVhZHlTdGF0ZSBpcyBldmVudC50YXJnZXQu
RE9ORQorCit0cmFucyA9IGV2ZW50LnJlc3VsdAorUEFTUyB0cmFucyAhPT0gbnVsbCBpcyB0cnVl
CitEZWxldGVkIGFsbCBvYmplY3Qgc3RvcmVzLgorY3JlYXRlT2JqZWN0U3RvcmUoKToKK3N0b3Jl
ID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ1N0b3JlV2l0aEtleVBhdGgnLCB7a2V5UGF0aDogJ2lk
JywgYXV0b0luY3JlbWVudDogdHJ1ZX0pCitkYi5jcmVhdGVPYmplY3RTdG9yZSgnU3RvcmVXaXRo
QXV0b0luY3JlbWVudCcsIHthdXRvSW5jcmVtZW50OiB0cnVlfSkKK2RiLmNyZWF0ZU9iamVjdFN0
b3JlKCdQbGFpbk9sZFN0b3JlJywge2F1dG9JbmNyZW1lbnQ6IGZhbHNlfSkKK3N0b3JlTmFtZXMg
PSBkYi5vYmplY3RTdG9yZU5hbWVzCitQQVNTIHN0b3JlLm5hbWUgaXMgIlN0b3JlV2l0aEtleVBh
dGgiCitQQVNTIHN0b3JlLmtleVBhdGggaXMgJ2lkJworUEFTUyBzdG9yZU5hbWVzLmNvbnRhaW5z
KCdTdG9yZVdpdGhLZXlQYXRoJykgaXMgdHJ1ZQorUEFTUyBzdG9yZU5hbWVzLmNvbnRhaW5zKCdT
dG9yZVdpdGhBdXRvSW5jcmVtZW50JykgaXMgdHJ1ZQorUEFTUyBzdG9yZU5hbWVzLmNvbnRhaW5z
KCdQbGFpbk9sZFN0b3JlJykgaXMgdHJ1ZQorUEFTUyBzdG9yZU5hbWVzLmxlbmd0aCBpcyAzCitz
ZXRWZXJzaW9uQ29tcGxldGVkKCk6Cit0cmFucyA9IGRiLnRyYW5zYWN0aW9uKHttb2RlOiB3ZWJr
aXRJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFfSkKK3N0b3JlID0gdHJhbnMub2JqZWN0U3RvcmUo
J1N0b3JlV2l0aEtleVBhdGgnKQorSW5zZXJ0IGluIG9iamVjdCBzdG9yZSB3aXRoIGtleSBnZW4g
YW5kIGtleSBwYXRoCitzdG9yZS5hZGQoe25hbWU6ICdMaW5jb2xuJywgbnVtYmVyOiAnNzAxMid9
KQorYWRkTGluY29sbkVycm9yKCk6CitFcnJvciBldmVudCBmaXJlZDoKK1BBU1MgJ3Jlc3VsdCcg
aW4gZXZlbnQgaXMgZmFsc2UKK1BBU1MgJ2NvZGUnIGluIGV2ZW50IGlzIHRydWUKK1BBU1MgJ21l
c3NhZ2UnIGluIGV2ZW50IGlzIHRydWUKK1BBU1MgJ3NvdXJjZScgaW4gZXZlbnQgaXMgdHJ1ZQor
UEFTUyBldmVudC5zb3VyY2UgIT0gbnVsbCBpcyB0cnVlCitQQVNTICdvbnN1Y2Nlc3MnIGluIGV2
ZW50LnRhcmdldCBpcyB0cnVlCitQQVNTICdvbmVycm9yJyBpbiBldmVudC50YXJnZXQgaXMgdHJ1
ZQorUEFTUyAncmVhZHlTdGF0ZScgaW4gZXZlbnQudGFyZ2V0IGlzIHRydWUKK1BBU1MgZXZlbnQu
dGFyZ2V0LnJlYWR5U3RhdGUgaXMgZXZlbnQudGFyZ2V0LkRPTkUKKworUEFTUyBldmVudC5jb2Rl
IGlzIHdlYmtpdElEQkRhdGFiYXNlRXhjZXB0aW9uLlVOS05PV05fRVJSCitzdG9yZSA9IHRyYW5z
Lm9iamVjdFN0b3JlKCdTdG9yZVdpdGhBdXRvSW5jcmVtZW50JykKK0luc2VydCBpbnRvIG9iamVj
dCBzdG9yZSB3aXRoIGtleSBnZW4gdXNpbmcgZXhwbGljaXQga2V5CitzdG9yZS5hZGQoe25hbWU6
ICdMaW5jb2xuJ30sIDEpCithZGRXaXRoRXhwbGljaXRLZXlFcnJvcigpOgorRXJyb3IgZXZlbnQg
ZmlyZWQ6CitQQVNTICdyZXN1bHQnIGluIGV2ZW50IGlzIGZhbHNlCitQQVNTICdjb2RlJyBpbiBl
dmVudCBpcyB0cnVlCitQQVNTICdtZXNzYWdlJyBpbiBldmVudCBpcyB0cnVlCitQQVNTICdzb3Vy
Y2UnIGluIGV2ZW50IGlzIHRydWUKK1BBU1MgZXZlbnQuc291cmNlICE9IG51bGwgaXMgdHJ1ZQor
UEFTUyAnb25zdWNjZXNzJyBpbiBldmVudC50YXJnZXQgaXMgdHJ1ZQorUEFTUyAnb25lcnJvcicg
aW4gZXZlbnQudGFyZ2V0IGlzIHRydWUKK1BBU1MgJ3JlYWR5U3RhdGUnIGluIGV2ZW50LnRhcmdl
dCBpcyB0cnVlCitQQVNTIGV2ZW50LnRhcmdldC5yZWFkeVN0YXRlIGlzIGV2ZW50LnRhcmdldC5E
T05FCisKK1BBU1MgZXZlbnQuY29kZSBpcyB3ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRB
X0VSUgorSW5zZXJ0IGludG8gb2JqZWN0IHN0b3JlIHdpdGgga2V5IGdlbiBhbmQgbm8ga2V5IHBh
dGgKK3N0b3JlLmFkZCh7bmFtZTogJ0xpbmNvbG4nLCBudW1iZXI6ICc3MDEyJ30pCithZGRMaW5j
b2xuU3VjY2VzcygpOgorU3VjY2VzcyBldmVudCBmaXJlZDoKK1BBU1MgJ3Jlc3VsdCcgaW4gZXZl
bnQgaXMgdHJ1ZQorUEFTUyAnY29kZScgaW4gZXZlbnQgaXMgZmFsc2UKK1BBU1MgJ21lc3NhZ2Un
IGluIGV2ZW50IGlzIGZhbHNlCitQQVNTICdzb3VyY2UnIGluIGV2ZW50IGlzIHRydWUKK1BBU1Mg
ZXZlbnQuc291cmNlICE9IG51bGwgaXMgdHJ1ZQorUEFTUyAnb25zdWNjZXNzJyBpbiBldmVudC50
YXJnZXQgaXMgdHJ1ZQorUEFTUyAnb25lcnJvcicgaW4gZXZlbnQudGFyZ2V0IGlzIHRydWUKK1BB
U1MgJ3JlYWR5U3RhdGUnIGluIGV2ZW50LnRhcmdldCBpcyB0cnVlCitQQVNTIGV2ZW50LnRhcmdl
dC5yZWFkeVN0YXRlIGlzIGV2ZW50LnRhcmdldC5ET05FCisKK1BBU1MgZXZlbnQucmVzdWx0IGlz
IDEKK3N0b3JlLmdldCgxKQorZ2V0TGluY29sblN1Y2Nlc3MoKToKK1N1Y2Nlc3MgZXZlbnQgZmly
ZWQ6CitQQVNTICdyZXN1bHQnIGluIGV2ZW50IGlzIHRydWUKK1BBU1MgJ2NvZGUnIGluIGV2ZW50
IGlzIGZhbHNlCitQQVNTICdtZXNzYWdlJyBpbiBldmVudCBpcyBmYWxzZQorUEFTUyAnc291cmNl
JyBpbiBldmVudCBpcyB0cnVlCitQQVNTIGV2ZW50LnNvdXJjZSAhPSBudWxsIGlzIHRydWUKK1BB
U1MgJ29uc3VjY2VzcycgaW4gZXZlbnQudGFyZ2V0IGlzIHRydWUKK1BBU1MgJ29uZXJyb3InIGlu
IGV2ZW50LnRhcmdldCBpcyB0cnVlCitQQVNTICdyZWFkeVN0YXRlJyBpbiBldmVudC50YXJnZXQg
aXMgdHJ1ZQorUEFTUyBldmVudC50YXJnZXQucmVhZHlTdGF0ZSBpcyBldmVudC50YXJnZXQuRE9O
RQorCitQQVNTIGV2ZW50LnJlc3VsdC5uYW1lIGlzICJMaW5jb2xuIgorUEFTUyBldmVudC5yZXN1
bHQubnVtYmVyIGlzICI3MDEyIgorc3RvcmUucHV0KHtuYW1lOiAnQWJyYWhhbScsIG51bWJlcjog
JzIxMDcnfSkKK3B1dEFicmFoYW1TdWNjZXNzKCk6CitTdWNjZXNzIGV2ZW50IGZpcmVkOgorUEFT
UyAncmVzdWx0JyBpbiBldmVudCBpcyB0cnVlCitQQVNTICdjb2RlJyBpbiBldmVudCBpcyBmYWxz
ZQorUEFTUyAnbWVzc2FnZScgaW4gZXZlbnQgaXMgZmFsc2UKK1BBU1MgJ3NvdXJjZScgaW4gZXZl
bnQgaXMgdHJ1ZQorUEFTUyBldmVudC5zb3VyY2UgIT0gbnVsbCBpcyB0cnVlCitQQVNTICdvbnN1
Y2Nlc3MnIGluIGV2ZW50LnRhcmdldCBpcyB0cnVlCitQQVNTICdvbmVycm9yJyBpbiBldmVudC50
YXJnZXQgaXMgdHJ1ZQorUEFTUyAncmVhZHlTdGF0ZScgaW4gZXZlbnQudGFyZ2V0IGlzIHRydWUK
K1BBU1MgZXZlbnQudGFyZ2V0LnJlYWR5U3RhdGUgaXMgZXZlbnQudGFyZ2V0LkRPTkUKKworUEFT
UyBldmVudC5yZXN1bHQgaXMgMgorc3RvcmUuZ2V0KDIpCitnZXRBYnJhaGFtU3VjY2VzcygpOgor
U3VjY2VzcyBldmVudCBmaXJlZDoKK1BBU1MgJ3Jlc3VsdCcgaW4gZXZlbnQgaXMgdHJ1ZQorUEFT
UyAnY29kZScgaW4gZXZlbnQgaXMgZmFsc2UKK1BBU1MgJ21lc3NhZ2UnIGluIGV2ZW50IGlzIGZh
bHNlCitQQVNTICdzb3VyY2UnIGluIGV2ZW50IGlzIHRydWUKK1BBU1MgZXZlbnQuc291cmNlICE9
IG51bGwgaXMgdHJ1ZQorUEFTUyAnb25zdWNjZXNzJyBpbiBldmVudC50YXJnZXQgaXMgdHJ1ZQor
UEFTUyAnb25lcnJvcicgaW4gZXZlbnQudGFyZ2V0IGlzIHRydWUKK1BBU1MgJ3JlYWR5U3RhdGUn
IGluIGV2ZW50LnRhcmdldCBpcyB0cnVlCitQQVNTIGV2ZW50LnRhcmdldC5yZWFkeVN0YXRlIGlz
IGV2ZW50LnRhcmdldC5ET05FCisKK1BBU1MgZXZlbnQucmVzdWx0Lm5hbWUgaXMgIkFicmFoYW0i
CitQQVNTIGV2ZW50LnJlc3VsdC5udW1iZXIgaXMgIjIxMDciCitzdG9yZSA9IHRyYW5zLm9iamVj
dFN0b3JlKCdQbGFpbk9sZFN0b3JlJykKK1RyeSBhZGRpbmcgd2l0aCBubyBrZXkgdG8gb2JqZWN0
IHN0b3JlIHdpdGhvdXQgYXV0byBpbmNyZW1lbnQuCitzdG9yZS5hZGQoe25hbWU6ICdBZGFtJ30p
CithZGRBZGFtRXJyb3IoKToKK0Vycm9yIGV2ZW50IGZpcmVkOgorUEFTUyAncmVzdWx0JyBpbiBl
dmVudCBpcyBmYWxzZQorUEFTUyAnY29kZScgaW4gZXZlbnQgaXMgdHJ1ZQorUEFTUyAnbWVzc2Fn
ZScgaW4gZXZlbnQgaXMgdHJ1ZQorUEFTUyAnc291cmNlJyBpbiBldmVudCBpcyB0cnVlCitQQVNT
IGV2ZW50LnNvdXJjZSAhPSBudWxsIGlzIHRydWUKK1BBU1MgJ29uc3VjY2VzcycgaW4gZXZlbnQu
dGFyZ2V0IGlzIHRydWUKK1BBU1MgJ29uZXJyb3InIGluIGV2ZW50LnRhcmdldCBpcyB0cnVlCitQ
QVNTICdyZWFkeVN0YXRlJyBpbiBldmVudC50YXJnZXQgaXMgdHJ1ZQorUEFTUyBldmVudC50YXJn
ZXQucmVhZHlTdGF0ZSBpcyBldmVudC50YXJnZXQuRE9ORQorCitQQVNTIGV2ZW50LmNvZGUgaXMg
d2Via2l0SURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIKK3N0b3JlLmFkZCh7bmFtZTogJ0Fk
YW0nfSwgMSkKK2FkZEFkYW1TdWNjZXNzKCk6CitTdWNjZXNzIGV2ZW50IGZpcmVkOgorUEFTUyAn
cmVzdWx0JyBpbiBldmVudCBpcyB0cnVlCitQQVNTICdjb2RlJyBpbiBldmVudCBpcyBmYWxzZQor
UEFTUyAnbWVzc2FnZScgaW4gZXZlbnQgaXMgZmFsc2UKK1BBU1MgJ3NvdXJjZScgaW4gZXZlbnQg
aXMgdHJ1ZQorUEFTUyBldmVudC5zb3VyY2UgIT0gbnVsbCBpcyB0cnVlCitQQVNTICdvbnN1Y2Nl
c3MnIGluIGV2ZW50LnRhcmdldCBpcyB0cnVlCitQQVNTICdvbmVycm9yJyBpbiBldmVudC50YXJn
ZXQgaXMgdHJ1ZQorUEFTUyAncmVhZHlTdGF0ZScgaW4gZXZlbnQudGFyZ2V0IGlzIHRydWUKK1BB
U1MgZXZlbnQudGFyZ2V0LnJlYWR5U3RhdGUgaXMgZXZlbnQudGFyZ2V0LkRPTkUKKworUEFTUyBl
dmVudC5yZXN1bHQgaXMgMQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNU
IENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL29i
amVjdHN0b3JlLWF1dG9pbmNyZW1lbnQuaHRtbCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL29iamVjdHN0b3JlLWF1dG9pbmNyZW1lbnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYjQ0YTdhMmY3
MzUxYWNiMDg2M2JkM2I2MGI0YzZmZjBmMGQzNjgyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtYXV0b2luY3JlbWVudC5odG1sCkBA
IC0wLDAgKzEsMTgxIEBACis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC1mdW5jdGlv
bi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorCitkZXNjcmlwdGlvbigiVGVzdCBJbmRleGVkREIn
cyBJREJPYmplY3RTdG9yZSBhdXRvLWluY3JlbWVudCBmZWF0dXJlLiIpOworaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxE
b25lKCk7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJlc3VsdCA9IGV2YWxBbmRMb2coIndl
YmtpdEluZGV4ZWREQi5vcGVuKCdBZGRyZXNzIEJvb2snKSIpOworICAgIHZlcmlmeVJlc3VsdChy
ZXN1bHQpOworICAgIHJlc3VsdC5vbnN1Y2Nlc3MgPSBvcGVuU3VjY2VzczsKKyAgICByZXN1bHQu
b25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuU3Vj
Y2VzcygpCit7CisgICAgZGVidWcoIm9wZW5TdWNjZXNzKCk6Iik7CisgICAgdmVyaWZ5U3VjY2Vz
c0V2ZW50KGV2ZW50KTsKKyAgICB3aW5kb3cuZGIgPSBldmFsQW5kTG9nKCJkYiA9IGV2ZW50LnJl
c3VsdCIpOworCisgICAgcmVzdWx0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignbmV3IHZl
cnNpb24nKSIpOworICAgIHZlcmlmeVJlc3VsdChyZXN1bHQpOworICAgIHJlc3VsdC5vbnN1Y2Nl
c3MgPSBzZXRWZXJzaW9uU3VjY2VzczsKKyAgICByZXN1bHQub25lcnJvciA9IHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBzZXRWZXJzaW9uU3VjY2VzcygpCit7CisgICAg
ZGVidWcoInNldFZlcnNpb25TdWNjZXNzKCk6Iik7CisgICAgdmVyaWZ5U3VjY2Vzc0V2ZW50KGV2
ZW50KTsKKyAgICB3aW5kb3cudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9IGV2ZW50LnJlc3Vs
dCIpOworICAgIHNob3VsZEJlVHJ1ZSgidHJhbnMgIT09IG51bGwiKTsKKyAgICB0cmFucy5vbmFi
b3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisgICAgdHJhbnMub25jb21wbGV0ZSA9IHNl
dFZlcnNpb25Db21wbGV0ZWQ7CisKKyAgICBkZWxldGVBbGxPYmplY3RTdG9yZXMoZGIsIGNyZWF0
ZU9iamVjdFN0b3JlKTsKK30KKworZnVuY3Rpb24gY3JlYXRlT2JqZWN0U3RvcmUoKQoreworICAg
IGRlYnVnKCJjcmVhdGVPYmplY3RTdG9yZSgpOiIpOworICAgIHdpbmRvdy5zdG9yZSA9IGV2YWxB
bmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ1N0b3JlV2l0aEtleVBhdGgnLCB7
a2V5UGF0aDogJ2lkJywgYXV0b0luY3JlbWVudDogdHJ1ZX0pIik7CisgICAgZXZhbEFuZExvZygi
ZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ1N0b3JlV2l0aEF1dG9JbmNyZW1lbnQnLCB7YXV0b0luY3Jl
bWVudDogdHJ1ZX0pIik7CisgICAgZXZhbEFuZExvZygiZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ1Bs
YWluT2xkU3RvcmUnLCB7YXV0b0luY3JlbWVudDogZmFsc2V9KSIpOworICAgIHZhciBzdG9yZU5h
bWVzID0gZXZhbEFuZExvZygic3RvcmVOYW1lcyA9IGRiLm9iamVjdFN0b3JlTmFtZXMiKTsKKwor
ICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygic3RvcmUubmFtZSIsICJTdG9yZVdpdGhLZXlQYXRo
Iik7CisgICAgc2hvdWxkQmUoInN0b3JlLmtleVBhdGgiLCAiJ2lkJyIpOworICAgIHNob3VsZEJl
KCJzdG9yZU5hbWVzLmNvbnRhaW5zKCdTdG9yZVdpdGhLZXlQYXRoJykiLCAidHJ1ZSIpOworICAg
IHNob3VsZEJlKCJzdG9yZU5hbWVzLmNvbnRhaW5zKCdTdG9yZVdpdGhBdXRvSW5jcmVtZW50Jyki
LCAidHJ1ZSIpOworICAgIHNob3VsZEJlKCJzdG9yZU5hbWVzLmNvbnRhaW5zKCdQbGFpbk9sZFN0
b3JlJykiLCAidHJ1ZSIpOworICAgIHNob3VsZEJlKCJzdG9yZU5hbWVzLmxlbmd0aCIsICIzIik7
CisKKyAgICAvLyBMZXQgdGhlIHNldFZlcnNpb24gdHJhbnNhY3Rpb24gY29tcGxldGUuCit9CisK
K2Z1bmN0aW9uIHNldFZlcnNpb25Db21wbGV0ZWQoKQoreworICAgIGRlYnVnKCJzZXRWZXJzaW9u
Q29tcGxldGVkKCk6Iik7CisKKyAgICB3aW5kb3cudHJhbnMgPSBldmFsQW5kTG9nKCJ0cmFucyA9
IGRiLnRyYW5zYWN0aW9uKHttb2RlOiB3ZWJraXRJREJUcmFuc2FjdGlvbi5SRUFEX1dSSVRFfSki
KTsKKyAgICB0cmFucy5vbmFib3J0ID0gdW5leHBlY3RlZEFib3J0Q2FsbGJhY2s7CisgICAgdHJh
bnMub25jb21wbGV0ZSA9IGRvbmU7CisKKyAgICB3aW5kb3cuc3RvcmUgPSBldmFsQW5kTG9nKCJz
dG9yZSA9IHRyYW5zLm9iamVjdFN0b3JlKCdTdG9yZVdpdGhLZXlQYXRoJykiKTsKKworICAgIGRl
YnVnKCJJbnNlcnQgaW4gb2JqZWN0IHN0b3JlIHdpdGgga2V5IGdlbiBhbmQga2V5IHBhdGgiKTsK
KyAgICByZXN1bHQgPSBldmFsQW5kTG9nKCJzdG9yZS5hZGQoe25hbWU6ICdMaW5jb2xuJywgbnVt
YmVyOiAnNzAxMid9KSIpOworICAgIHJlc3VsdC5vbnN1Y2Nlc3MgPSB1bmV4cGVjdGVkU3VjY2Vz
c0NhbGxiYWNrOworICAgIHJlc3VsdC5vbmVycm9yID0gYWRkTGluY29sbkVycm9yOworfQorCitm
dW5jdGlvbiBhZGRMaW5jb2xuRXJyb3IoKQoreworICAgIGRlYnVnKCJhZGRMaW5jb2xuRXJyb3Io
KToiKTsKKyAgICB2ZXJpZnlFcnJvckV2ZW50KGV2ZW50KTsKKyAgICAvLyBGSVhNRTogVGhpcyBz
aG91bGQgYmUgaW1wbGVtZW50ZWQsIGJ1dCB3ZSBtYWtlIGl0IGFuIGVycm9yIGZvciBub3cuCisg
ICAgc2hvdWxkQmUoImV2ZW50LmNvZGUiLCAid2Via2l0SURCRGF0YWJhc2VFeGNlcHRpb24uVU5L
Tk9XTl9FUlIiKTsKKworICAgIHdpbmRvdy5zdG9yZSA9IGV2YWxBbmRMb2coInN0b3JlID0gdHJh
bnMub2JqZWN0U3RvcmUoJ1N0b3JlV2l0aEF1dG9JbmNyZW1lbnQnKSIpOworICAgIGRlYnVnKCJJ
bnNlcnQgaW50byBvYmplY3Qgc3RvcmUgd2l0aCBrZXkgZ2VuIHVzaW5nIGV4cGxpY2l0IGtleSIp
OworICAgIHJlc3VsdCA9IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7bmFtZTogJ0xpbmNvbG4nfSwg
MSkiKTsKKyAgICByZXN1bHQub25zdWNjZXNzID0gdW5leHBlY3RlZFN1Y2Nlc3NDYWxsYmFjazsK
KyAgICByZXN1bHQub25lcnJvciA9IGFkZFdpdGhFeHBsaWNpdEtleUVycm9yOworfQorCitmdW5j
dGlvbiBhZGRXaXRoRXhwbGljaXRLZXlFcnJvcigpCit7CisgICAgZGVidWcoImFkZFdpdGhFeHBs
aWNpdEtleUVycm9yKCk6Iik7CisgICAgdmVyaWZ5RXJyb3JFdmVudChldmVudCk7CisgICAgc2hv
dWxkQmUoImV2ZW50LmNvZGUiLCAid2Via2l0SURCRGF0YWJhc2VFeGNlcHRpb24uREFUQV9FUlIi
KTsKKworICAgIGRlYnVnKCJJbnNlcnQgaW50byBvYmplY3Qgc3RvcmUgd2l0aCBrZXkgZ2VuIGFu
ZCBubyBrZXkgcGF0aCIpOworICAgIHJlc3VsdCA9IGV2YWxBbmRMb2coInN0b3JlLmFkZCh7bmFt
ZTogJ0xpbmNvbG4nLCBudW1iZXI6ICc3MDEyJ30pIik7CisgICAgcmVzdWx0Lm9uc3VjY2VzcyA9
IGFkZExpbmNvbG5TdWNjZXNzOworICAgIHJlc3VsdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9y
Q2FsbGJhY2s7Cit9CisKK2Z1bmN0aW9uIGFkZExpbmNvbG5TdWNjZXNzKCkKK3sKKyAgICBkZWJ1
ZygiYWRkTGluY29sblN1Y2Nlc3MoKToiKTsKKyAgICB2ZXJpZnlTdWNjZXNzRXZlbnQoZXZlbnQp
OworICAgIHNob3VsZEJlKCJldmVudC5yZXN1bHQiLCAiMSIpOworCisgICAgcmVzdWx0ID0gZXZh
bEFuZExvZygic3RvcmUuZ2V0KDEpIik7CisgICAgcmVzdWx0Lm9uc3VjY2VzcyA9IGdldExpbmNv
bG5TdWNjZXNzOworICAgIHJlc3VsdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7
Cit9CisKK2Z1bmN0aW9uIGdldExpbmNvbG5TdWNjZXNzKCkKK3sKKyAgICBkZWJ1ZygiZ2V0TGlu
Y29sblN1Y2Nlc3MoKToiKTsKKyAgICB2ZXJpZnlTdWNjZXNzRXZlbnQoZXZlbnQpOworICAgIHNo
b3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQucmVzdWx0Lm5hbWUiLCAiTGluY29sbiIpOworICAg
IHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQucmVzdWx0Lm51bWJlciIsICI3MDEyIik7CisK
KyAgICByZXN1bHQgPSBldmFsQW5kTG9nKCJzdG9yZS5wdXQoe25hbWU6ICdBYnJhaGFtJywgbnVt
YmVyOiAnMjEwNyd9KSIpOworICAgIHJlc3VsdC5vbnN1Y2Nlc3MgPSBwdXRBYnJhaGFtU3VjY2Vz
czsKKyAgICByZXN1bHQub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitm
dW5jdGlvbiBwdXRBYnJhaGFtU3VjY2VzcygpCit7CisgICAgZGVidWcoInB1dEFicmFoYW1TdWNj
ZXNzKCk6Iik7CisgICAgdmVyaWZ5U3VjY2Vzc0V2ZW50KGV2ZW50KTsKKyAgICBzaG91bGRCZSgi
ZXZlbnQucmVzdWx0IiwgIjIiKTsKKworICAgIHJlc3VsdCA9IGV2YWxBbmRMb2coInN0b3JlLmdl
dCgyKSIpOworICAgIHJlc3VsdC5vbnN1Y2Nlc3MgPSBnZXRBYnJhaGFtU3VjY2VzczsKKyAgICBy
ZXN1bHQub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBn
ZXRBYnJhaGFtU3VjY2VzcygpCit7CisgICAgZGVidWcoImdldEFicmFoYW1TdWNjZXNzKCk6Iik7
CisgICAgdmVyaWZ5U3VjY2Vzc0V2ZW50KGV2ZW50KTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJp
bmcoImV2ZW50LnJlc3VsdC5uYW1lIiwgIkFicmFoYW0iKTsKKyAgICBzaG91bGRCZUVxdWFsVG9T
dHJpbmcoImV2ZW50LnJlc3VsdC5udW1iZXIiLCAiMjEwNyIpOworCisgICAgd2luZG93LnN0b3Jl
ID0gZXZhbEFuZExvZygic3RvcmUgPSB0cmFucy5vYmplY3RTdG9yZSgnUGxhaW5PbGRTdG9yZScp
Iik7CisgICAgZGVidWcoIlRyeSBhZGRpbmcgd2l0aCBubyBrZXkgdG8gb2JqZWN0IHN0b3JlIHdp
dGhvdXQgYXV0byBpbmNyZW1lbnQuIik7CisgICAgcmVzdWx0ID0gZXZhbEFuZExvZygic3RvcmUu
YWRkKHtuYW1lOiAnQWRhbSd9KSIpOworICAgIHJlc3VsdC5vbnN1Y2Nlc3MgPSB1bmV4cGVjdGVk
U3VjY2Vzc0NhbGxiYWNrOworICAgIHJlc3VsdC5vbmVycm9yID0gYWRkQWRhbUVycm9yOworfQor
CitmdW5jdGlvbiBhZGRBZGFtRXJyb3IoKQoreworICAgIGRlYnVnKCJhZGRBZGFtRXJyb3IoKToi
KTsKKyAgICB2ZXJpZnlFcnJvckV2ZW50KGV2ZW50KTsKKyAgICBzaG91bGRCZSgiZXZlbnQuY29k
ZSIsICJ3ZWJraXRJREJEYXRhYmFzZUV4Y2VwdGlvbi5EQVRBX0VSUiIpOworCisgICAgcmVzdWx0
ID0gZXZhbEFuZExvZygic3RvcmUuYWRkKHtuYW1lOiAnQWRhbSd9LCAxKSIpOworICAgIHJlc3Vs
dC5vbnN1Y2Nlc3MgPSBhZGRBZGFtU3VjY2VzczsKKyAgICByZXN1bHQub25lcnJvciA9IHVuZXhw
ZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBhZGRBZGFtU3VjY2VzcygpCit7Cisg
ICAgZGVidWcoImFkZEFkYW1TdWNjZXNzKCk6Iik7CisgICAgdmVyaWZ5U3VjY2Vzc0V2ZW50KGV2
ZW50KTsKKyAgICBzaG91bGRCZSgiZXZlbnQucmVzdWx0IiwgIjEiKTsKK30KKwordGVzdCgpOwor
Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKaW5kZXggMDc4ZWM5OWE0MGVjMjZlZDdjYjNjMzczZWNlZWEyZWZkMTJh
YjIzYi4uY2EzNDY4OTA2NTU0NTFjNjEyNTI1NTg2M2MzZDIxYTM5NzFjYzU1YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDIwIEBACisyMDExLTAxLTE5ICBIYW5zIFdlbm5ib3JnICA8aGFuc0BjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgSW5kZXhlZERCOiBTdXBwb3J0IGF1dG8taW5jcmVtZW50IGtleXMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUyNTc2CisKKyAgICAgICAgQWRkIHN1
cHBvcnQgZm9yIGF1dG8taW5jcmVtZW50IGtleXMuCisKKyAgICAgICAgVGVzdDogc3RvcmFnZS9p
bmRleGVkZGIvb2JqZWN0c3RvcmUtYXV0b2luY3JlbWVudC5odG1sCisKKyAgICAgICAgKiBzdG9y
YWdlL0lEQkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjpjcmVh
dGVPYmplY3RTdG9yZSk6CisgICAgICAgICogc3RvcmFnZS9JREJPYmplY3RTdG9yZUJhY2tlbmRJ
bXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdlbkF1dG9JbmNyZW1lbnRLZXkpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6cHV0SW50ZXJuYWwpOgorCiAy
MDExLTAxLTE5ICBBbGV4YW5kZXIgUGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwgRmVsZG1hbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvSURCRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJE
YXRhYmFzZS5jcHAKaW5kZXggN2E5MTQxYTZkODM1OWEyMmRkNDViOTFiMWY3MDVkZTUyOWMyM2Q1
YS4uMzNmMDA0YjY0Y2RlNmZjYTRkNDM0NGI1ODQ2OWEwYzIxYmU1YmNhNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9JREJEYXRhYmFzZS5jcHAKQEAgLTczLDEyICs3Myw2IEBAIFBhc3NSZWZQdHI8
SURCT2JqZWN0U3RvcmU+IElEQkRhdGFiYXNlOjpjcmVhdGVPYmplY3RTdG9yZShjb25zdCBTdHJp
bmcmIG5hbWUsIGNvCiAgICAgb3B0aW9ucy5nZXRLZXlCb29sKCJhdXRvSW5jcmVtZW50IiwgYXV0
b0luY3JlbWVudCk7CiAgICAgLy8gRklYTUU6IExvb2sgdXAgZXZpY3RhYmxlIGFuZCBwYXNzIHRo
YXQgb24gYXMgd2VsbC4KIAotICAgIGlmIChhdXRvSW5jcmVtZW50KSB7Ci0gICAgICAgIC8vIEZJ
WE1FOiBJbXBsZW1lbnQgc3VwcG9ydCBmb3IgYXV0byBpbmNyZW1lbnQuCi0gICAgICAgIGVjID0g
SURCRGF0YWJhc2VFeGNlcHRpb246OlVOS05PV05fRVJSOwotICAgICAgICByZXR1cm4gMDsKLSAg
ICB9Ci0KICAgICBSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBvYmplY3RT
dG9yZSA9IG1fYmFja2VuZC0+Y3JlYXRlT2JqZWN0U3RvcmUobmFtZSwga2V5UGF0aCwgYXV0b0lu
Y3JlbWVudCwgbV9zZXRWZXJzaW9uVHJhbnNhY3Rpb24uZ2V0KCksIGVjKTsKICAgICBpZiAoIW9i
amVjdFN0b3JlKSB7CiAgICAgICAgIEFTU0VSVChlYyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdG9yYWdlL0lEQk9iamVjdFN0b3JlQmFja2VuZEltcGwuY3BwIGIvU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcAppbmRleCAzOTZmNTQ0ZWI2
NmQ1NWZmY2E4ZGY4NGY4ZmIzYzM4NDA1NjJiYmM3Li41MDcwODljMTk3ODNjNDc3NzM4MWQ3ZDRk
Y2M2YjgzZjNmZTUxMzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQk9i
amVjdFN0b3JlQmFja2VuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURC
T2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHAKQEAgLTU5LDYgKzU5LDcgQEAgSURCT2JqZWN0U3Rv
cmVCYWNrZW5kSW1wbDo6SURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbChJREJTUUxpdGVEYXRhYmFz
ZSogZGF0YWJhc2UKICAgICAsIG1fbmFtZShuYW1lKQogICAgICwgbV9rZXlQYXRoKGtleVBhdGgp
CiAgICAgLCBtX2F1dG9JbmNyZW1lbnQoYXV0b0luY3JlbWVudCkKKyAgICAsIG1fYXV0b0luY3Jl
bWVudE51bWJlcigtMSkKIHsKICAgICBsb2FkSW5kZXhlcygpOwogfQpAQCAtNjksNiArNzAsNyBA
QCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsKElE
QlNRTGl0ZURhdGFiYXNlKiBkYXRhYmFzZQogICAgICwgbV9uYW1lKG5hbWUpCiAgICAgLCBtX2tl
eVBhdGgoa2V5UGF0aCkKICAgICAsIG1fYXV0b0luY3JlbWVudChhdXRvSW5jcmVtZW50KQorICAg
ICwgbV9hdXRvSW5jcmVtZW50TnVtYmVyKC0xKQogewogfQogCkBAIC0xMTMsNyArMTE1LDcgQEAg
dm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpnZXRJbnRlcm5hbChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgUGFzc1JlZlB0cjwKICAgICB9CiAKICAgICBBU1NFUlQoKGtleS0+dHlwZSgp
ID09IElEQktleTo6U3RyaW5nVHlwZSkgIT0gcXVlcnkuaXNDb2x1bW5OdWxsKDApKTsKLSAgICAv
LyBGSVhNRTogSW1wbGVtZW50IGRhdGUuCisgICAgQVNTRVJUKChrZXktPnR5cGUoKSA9PSBJREJL
ZXk6OkRhdGVUeXBlKSAhPSBxdWVyeS5pc0NvbHVtbk51bGwoMSkpOwogICAgIEFTU0VSVCgoa2V5
LT50eXBlKCkgPT0gSURCS2V5OjpOdW1iZXJUeXBlKSAhPSBxdWVyeS5pc0NvbHVtbk51bGwoMikp
OwogCiAgICAgY2FsbGJhY2tzLT5vblN1Y2Nlc3MoU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVh
dGVGcm9tV2lyZShxdWVyeS5nZXRDb2x1bW5UZXh0KDMpKSk7CkBAIC0yMDAsMjIgKzIwMiwzNiBA
QCB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnB1dEludGVybmFsKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPAogICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+IHZhbHVlID0gcHJwVmFsdWU7CiAgICAgUmVmUHRyPElEQktleT4ga2V5ID0gcHJwS2V5Owog
Ci0gICAgLy8gRklYTUU6IFN1cHBvcnQgYXV0by1pbmNyZW1lbnQuCisgICAgaWYgKCFvYmplY3RT
dG9yZS0+bV9rZXlQYXRoLmlzTnVsbCgpICYmIGtleSkgeworICAgICAgICBjYWxsYmFja3MtPm9u
RXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpEQVRB
X0VSUiwgIkEga2V5IHdhcyBzdXBwbGllZCBmb3IgYW4gb2JqZWN0U3RvcmUgdGhhdCBoYXMgYSBr
ZXlQYXRoLiIpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChvYmplY3RTdG9y
ZS0+YXV0b0luY3JlbWVudCgpICYmIGtleSkgeworICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3Io
SURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpEQVRBX0VSUiwg
IkEga2V5IHdhcyBzdXBwbGllZCBmb3IgYW4gb2JqZWN0U3RvcmUgdGhhdCBpcyB1c2luZyBhdXRv
IGluY3JlbWVudC4iKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKLSAgICBpZiAoIW9iamVj
dFN0b3JlLT5tX2tleVBhdGguaXNOdWxsKCkpIHsKLSAgICAgICAgaWYgKGtleSkgewotICAgICAg
ICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRh
YmFzZUV4Y2VwdGlvbjo6VU5LTk9XTl9FUlIsICJBIGtleSB3YXMgc3VwcGxpZWQgZm9yIGFuIG9i
amVjdFN0b3JlIHRoYXQgaGFzIGEga2V5UGF0aC4iKSk7CisgICAgaWYgKG9iamVjdFN0b3JlLT5h
dXRvSW5jcmVtZW50KCkpIHsKKyAgICAgICAga2V5ID0gb2JqZWN0U3RvcmUtPmdlbkF1dG9JbmNy
ZW1lbnRLZXkoKTsKKworICAgICAgICBpZiAoIW9iamVjdFN0b3JlLT5tX2tleVBhdGguaXNOdWxs
KCkpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBJbmplY3QgdGhlIGdlbmVyYXRlZCBrZXkgaW50
byB0aGUgb2JqZWN0LgorICAgICAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNl
RXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VU5LTk9XTl9FUlIsICJBZGRpbmcg
ZGF0YSB0byBvYmplY3Qgc3RvcmVzIHdpdGggYXV0byBpbmNyZW1lbnQgYW5kIGluLWxpbmUga2V5
cyBub3QgY3VycmVudGx5IHN1cHBvcnRlZC4iKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KKyAgICB9IGVsc2UgaWYgKCFvYmplY3RTdG9yZS0+bV9rZXlQYXRoLmlzTnVsbCgpKSB7
CiAgICAgICAgIGtleSA9IGZldGNoS2V5RnJvbUtleVBhdGgodmFsdWUuZ2V0KCksIG9iamVjdFN0
b3JlLT5tX2tleVBhdGgpOworCiAgICAgICAgIGlmICgha2V5KSB7Ci0gICAgICAgICAgICBjYWxs
YmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0
aW9uOjpVTktOT1dOX0VSUiwgIlRoZSBrZXkgY291bGQgbm90IGJlIGZldGNoZWQgZnJvbSB0aGUg
a2V5UGF0aC4iKSk7CisgICAgICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VF
cnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpEQVRBX0VSUiwgIlRoZSBrZXkgY291
bGQgbm90IGJlIGZldGNoZWQgZnJvbSB0aGUga2V5UGF0aC4iKSk7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKCFrZXkpIHsKICAgICAgICAgY2FsbGJhY2tz
LT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6
REFUQV9FUlIsICJObyBrZXkgc3VwcGxpZWQuIikpOwogICAgICAgICByZXR1cm47CiAgICAgfQor
CiAgICAgaWYgKGtleS0+dHlwZSgpID09IElEQktleTo6TnVsbFR5cGUpIHsKICAgICAgICAgY2Fs
bGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2Vw
dGlvbjo6REFUQV9FUlIsICJOVUxMIGtleSBpcyBub3QgYWxsb3dlZC4iKSk7CiAgICAgICAgIHJl
dHVybjsKQEAgLTUxMSw2ICs1MjcsMjcgQEAgdm9pZCBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBs
OjphZGRJbmRleFRvTWFwKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHQKICAgICBv
YmplY3RTdG9yZS0+bV9pbmRleGVzLnNldChpbmRleFB0ci0+bmFtZSgpLCBpbmRleFB0cik7CiB9
CiAKK1Bhc3NSZWZQdHI8SURCS2V5PiBJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpnZW5BdXRv
SW5jcmVtZW50S2V5KCkKK3sKKyAgICBpZiAobV9hdXRvSW5jcmVtZW50TnVtYmVyID4gMCkKKyAg
ICAgICAgcmV0dXJuIElEQktleTo6Y3JlYXRlTnVtYmVyKG1fYXV0b0luY3JlbWVudE51bWJlcisr
KTsKKworICAgIFN0cmluZyBzcWwgPSAiU0VMRUNUIG1heChrZXlOdW1iZXIpICsgMSBGUk9NIE9i
amVjdFN0b3JlRGF0YSBXSEVSRSBvYmplY3RTdG9yZUlkID0gPyBBTkQga2V5U3RyaW5nIElTIE5V
TEwgQU5EIGtleURhdGUgSVMgTlVMTCI7CisKKyAgICBTUUxpdGVTdGF0ZW1lbnQgcXVlcnkoc3Fs
aXRlRGF0YWJhc2UoKSwgc3FsKTsKKyAgICBib29sIG9rID0gcXVlcnkucHJlcGFyZSgpID09IFNR
TFJlc3VsdE9rOworICAgIEFTU0VSVF9VTlVTRUQob2ssIG9rKTsKKworICAgIHF1ZXJ5LmJpbmRJ
bnQ2NCgxLCBpZCgpKTsKKworICAgIGlmIChxdWVyeS5zdGVwKCkgIT0gU1FMUmVzdWx0Um93IHx8
IHF1ZXJ5LmlzQ29sdW1uTnVsbCgwKSkKKyAgICAgICAgbV9hdXRvSW5jcmVtZW50TnVtYmVyID0g
MTsKKyAgICBlbHNlCisgICAgICAgIG1fYXV0b0luY3JlbWVudE51bWJlciA9IHN0YXRpY19jYXN0
PGludD4ocXVlcnkuZ2V0Q29sdW1uRG91YmxlKDApKTsKKworICAgIHJldHVybiBJREJLZXk6OmNy
ZWF0ZU51bWJlcihtX2F1dG9JbmNyZW1lbnROdW1iZXIrKyk7Cit9CisKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQk9iamVj
dFN0b3JlQmFja2VuZEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3Rv
cmVCYWNrZW5kSW1wbC5oCmluZGV4IDJhYjQyZjJmYzZhY2FlYmY5NGI5NzY5MWVjZTUyYmVlNTYz
MzM0YjMuLjlmYjFiN2M0NjdiNzcyNjJiYzcyM2Q5NWRiY2NiODk4YTA5NDYyMDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5oCkBA
IC04Miw2ICs4Miw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGxvYWRJbmRleGVzKCk7CiAgICAg
U1FMaXRlRGF0YWJhc2UmIHNxbGl0ZURhdGFiYXNlKCkgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxJ
REJLZXk+IGdlbkF1dG9JbmNyZW1lbnRLZXkoKTsKIAogICAgIHN0YXRpYyB2b2lkIGdldEludGVy
bmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFj
a2VuZEltcGw+LCBQYXNzUmVmUHRyPElEQktleT4ga2V5LCBQYXNzUmVmUHRyPElEQkNhbGxiYWNr
cz4pOwogICAgIHN0YXRpYyB2b2lkIHB1dEludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw+LCBQYXNzUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUsIFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIGJvb2wgYWRk
T25seSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9u
QmFja2VuZEludGVyZmFjZT4pOwpAQCAtMTAzLDYgKzEwNCw3IEBAIHByaXZhdGU6CiAKICAgICB0
eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW1wbD4gPiBJbmRl
eE1hcDsKICAgICBJbmRleE1hcCBtX2luZGV4ZXM7CisgICAgaW50IG1fYXV0b0luY3JlbWVudE51
bWJlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>
<flag name="review"
          id="70835"
          type_id="1"
          status="+"
          setter="jorlow"
    />
          </attachment>
      

    </bug>

</bugzilla>