<?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>89847</bug_id>
          
          <creation_ts>2012-06-24 20:20:35 -0700</creation_ts>
          <short_desc>Change the serialization format of form control state to make the code simple</short_desc>
          <delta_ts>2012-08-10 15:39:57 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Forms</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P3</priority>
          <bug_severity>Minor</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>89628</dependson>
          <blocked>23346</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kent Tamura">tkent</reporter>
          <assigned_to name="Kent Tamura">tkent</assigned_to>
          <cc>darin</cc>
    
    <cc>eric</cc>
    
    <cc>leviw</cc>
    
    <cc>morrita</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>656348</commentid>
    <comment_count>0</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-06-24 20:20:35 -0700</bug_when>
    <thetext>https://bugs.webkit.org/show_bug.cgi?id=89409#c6
&gt; The state (de)serialization flow looks becoming a bit cryptic. 
&gt; My feeling is that it is because the state is stored as a string vector instead of string.
&gt; If we control the format, the code will become much cleaner.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>656354</commentid>
    <comment_count>1</comment_count>
      <attachid>149229</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-06-24 20:37:52 -0700</bug_when>
    <thetext>Created attachment 149229
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>656355</commentid>
    <comment_count>2</comment_count>
      <attachid>149230</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-06-24 20:39:08 -0700</bug_when>
    <thetext>Created attachment 149230
Patch 2

Remove TAB</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>656377</commentid>
    <comment_count>3</comment_count>
      <attachid>149230</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-06-24 22:03:02 -0700</bug_when>
    <thetext>Comment on attachment 149230
Patch 2

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

&gt; Source/WebCore/html/FormController.cpp:61
&gt; +        }

Don&apos;t we have any escape function? If so, let&apos;s use it. Or let&apos;s define one.

&gt; Source/WebCore/html/FormController.cpp:95
&gt; +    }

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>656382</commentid>
    <comment_count>4</comment_count>
      <attachid>149230</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-06-24 22:21:07 -0700</bug_when>
    <thetext>Comment on attachment 149230
Patch 2

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

&gt;&gt; Source/WebCore/html/FormController.cpp:61
&gt;&gt; +        }
&gt; 
&gt; Don&apos;t we have any escape function? If so, let&apos;s use it. Or let&apos;s define one.

I couldn&apos;t find a generic escaping function. It&apos;s nice to have one because we have a similar code in CalendarPickerElement.cpp.

&gt;&gt; Source/WebCore/html/FormController.cpp:95
&gt;&gt; +    }
&gt; 
&gt; Ditto.

I have no good idea of unescaping function interface because we can&apos;t find delimiters of escaped strings without parsing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>656399</commentid>
    <comment_count>5</comment_count>
      <attachid>149246</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-06-24 23:13:21 -0700</bug_when>
    <thetext>Created attachment 149246
Patch 3

Add an escape function</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>656404</commentid>
    <comment_count>6</comment_count>
      <attachid>149248</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-06-24 23:23:34 -0700</bug_when>
    <thetext>Created attachment 149248
Patch 4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>656447</commentid>
    <comment_count>7</comment_count>
      <attachid>149248</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-25 02:43:25 -0700</bug_when>
    <thetext>Comment on attachment 149248
Patch 4

Clearing flags on attachment: 149248

Committed r121145: &lt;http://trac.webkit.org/changeset/121145&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>656448</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-25 02:43:30 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>657068</commentid>
    <comment_count>9</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-06-25 17:36:00 -0700</bug_when>
    <thetext>This seems like a step backwards to me. Serializing and then decoding the object is extra work. There is more code here than before.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>657105</commentid>
    <comment_count>10</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-06-25 18:13:52 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; This seems like a step backwards to me. Serializing and then decoding the object is extra work. There is more code here than before.

ok, I&apos;ll roll it out.  I don&apos;t have strong preference for this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>657114</commentid>
    <comment_count>11</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-06-25 18:20:21 -0700</bug_when>
    <thetext>Reverted r121145 for reason:

Had an objection for the change.

Committed r121207: &lt;http://trac.webkit.org/changeset/121207&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>657122</commentid>
    <comment_count>12</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-06-25 18:27:37 -0700</bug_when>
    <thetext>Maybe I came on too strong.

I liked the new helper function for appending an escaped string.

It’s also good to have all the state wrapped up in a single object rather than a confusing combination of a vector and a size.

But I do want us to keep serializing and then re-parsing to a minimum.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>692911</commentid>
    <comment_count>13</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2012-08-10 15:22:23 -0700</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>692912</commentid>
    <comment_count>14</comment_count>
      <attachid>157818</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2012-08-10 15:22:28 -0700</bug_when>
    <thetext>Created attachment 157818
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>692917</commentid>
    <comment_count>15</comment_count>
      <attachid>157818</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2012-08-10 15:29:52 -0700</bug_when>
    <thetext>Comment on attachment 157818
Patch

Whoops!! Wrong bug number! Sorry for the noise.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>692922</commentid>
    <comment_count>16</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2012-08-10 15:38:00 -0700</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149229</attachid>
            <date>2012-06-24 20:37:52 -0700</date>
            <delta_ts>2012-06-24 20:39:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89847-20120625123752.patch</filename>
            <type>text/plain</type>
            <size>13884</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxMTI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDcxNmFlODhiMGU2Nzcz
YjE4YzY3YjQ1NjNkYWUyZmEzMDY2MGJhNS4uZGYwNjc0M2FmN2RjNmQ4NjVhYzZmMTBkYmZhZGI1
MDBkYjMzYmVjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDEyLTA2LTI0ICBLZW50
IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KKworICAgICAgICBDaGFuZ2UgdGhlIHNlcmlh
bGl6YXRpb24gZm9ybWF0IG9mIGZvcm0gY29udHJvbCBzdGF0ZSB0byBtYWtlIHRoZSBjb2RlIHNp
bXBsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODk4
NDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSB1
c2VkIG11bHRpcGxlIHN0cmluZ3MgdG8gcmVwcmVzZW50IHN0YXRlIG9mIHNpbmdsZSBmb3JtIGNv
bnRyb2wuIEl0CisgICAgICAgIG1hZGUgdGhlIGNvZGUgY29tcGxleC4gV2UgY2hhbmdlIHRoZSBz
ZXJpYWxpemF0aW9uIGZvcm1hdCBzbyB0aGF0IG9uZQorICAgICAgICBDU1Ygc3RyaW5nIHJlcHJl
c2VudHMgc3RhdGUuCisKKyAgICAgICAgRXhhbXBsZXMgaW4gdGhlIG9sZCBmb3JtYXQ6CisgICAg
ICAgICAgICAiMCIKKyAgICAgICAgICAgICIxIiwgInZhbHVlIgorICAgICAgICAgICAgIjMiLCAi
dmFsdWUxIiwgInZhbHVlMix2YWx1ZTIiLCAidmFsdWUzIgorCisgICAgICAgIEV4YW1wbGVzIGlu
IHRoZSBuZXcgZm9ybWF0OgorICAgICAgICAgICAgIiIKKyAgICAgICAgICAgICIsdmFsdWUiCisg
ICAgICAgICAgICAiLHZhbHVlMSx2YWx1ZTJcLHZhbHVlMix2YWx1ZTMiCisKKyAgICAgICAgVGVz
dDogZmFzdC9mb3Jtcy9zdGF0ZS1yZXN0b3JlLXZhcmlvdXMtdmFsdWVzLmh0bWwKKworICAgICAg
ICAqIGh0bWwvRm9ybUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybUNvbnRy
b2xTdGF0ZTo6c2VyaWFsaXplKToKKyAgICAgICAgR2VuZXJhdGUgY29tbWEtc2VwYXJhdGVkIHN0
cmluZy4KKyAgICAgICAgJywnIGluIGEgdmFsdWUgaXMgc2VyaWFsaXplZCBhcyAiXCwiLgorICAg
ICAgICBXZSBjaGFuZ2VkIHRoZSBzaWduYXR1cmUgYmVjYXVzZSB3ZSBkb24ndCBuZWVkIHRoZSBv
dXQtYXJndW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpGb3JtQ29udHJvbFN0YXRlOjpkZXNlcmlh
bGl6ZSk6CisgICAgICAgIFBhcnNlcyB0aGUgaW5wdXQgY29tbWEtc2VwYXJhdGVkIHN0cmluZy4K
KyAgICAgICAgV2UgY2hhbmdlZCB0aGUgc2lnbmF0dXJlIGJlY2F1c2Ugd2UgZG9uJ3QgbmVlZCBt
dWx0aXBsZSBpbnB1dCBzdHJpbmdzLgorICAgICAgICAoV2ViQ29yZTo6Rm9ybUNvbnRyb2xsZXI6
OmZvcm1FbGVtZW50c1N0YXRlKToKKyAgICAgICAgVGhlIG5ldyBzZXJpYWxpemVkIGZvcm1hdCBv
Y2N1cGllcyBqdXN0IG9uZSBzdHJpbmcgZm9yIG9uZSBjb250cm9sLgorICAgICAgICAtIEV4cGVj
dGVkIHNpemUgaXMgbm93IDNuKzEuCisgICAgICAgIC0gVXNlIEZvcm1Db250cm9sU3RhdGU6OnNl
cmlhbGl6ZSgpLgorICAgICAgICAoV2ViQ29yZTo6Rm9ybUNvbnRyb2xsZXI6OnNldFN0YXRlRm9y
TmV3Rm9ybUVsZW1lbnRzKToKKyAgICAgICAgVGhlIG5ldyBzZXJpYWxpemVkIGZvcm1hdCBvY2N1
cGllcyBqdXN0IG9uZSBzdHJpbmcgZm9yIG9uZSBjb250cm9sLgorICAgICAgICBTbyB3ZSBjYW4g
Y2hlY2sgdGhlIHZlY3RvciBzaXplIGJlZm9yZSB0aGUgaXRlcmF0aW9uLgorICAgICAgICAqIGh0
bWwvRm9ybUNvbnRyb2xsZXIuaDoKKyAgICAgICAgKEZvcm1Db250cm9sU3RhdGUpOiBDaGFuZ2Ug
dGhlIGZ1bmN0aW9uIHNpZ25hdHVyZXMuCisKIDIwMTItMDYtMjIgIEtlbnQgVGFtdXJhICA8dGtl
bnRAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFNlbGVjdGVkIG9wdGlvbiBpcyBub3QgcmVzdG9y
ZWQgY29ycmVjdGx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Db250cm9s
bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUNvbnRyb2xsZXIuY3BwCmluZGV4IDMx
Yzc3NjM0M2NiM2M2ZmZiYzFmNTVhMmUyNDI2NDdkODY5NGQ5YzEuLmIyMTViNDJiYzY2Yzc5YmQ2
NTA0ZmMzNTkyOWIxNGI1MTdjYTYyZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Rm9ybUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUNvbnRyb2xs
ZXIuY3BwCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5jbHVkZSAiRm9ybUNvbnRyb2xsZXIuaCIKIAog
I2luY2x1ZGUgIkhUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGUuaCIKKyNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMzAs
MzggKzMxLDY5IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAvLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCiAKIC8vIFNlcmlsaXplZCBmb3JtIG9mIEZvcm1Db250cm9sU3RhdGU6Ci0vLyAgKCcs
JyBtZWFucyBzdHJpbmdzIGFyb3VuZCBpdCBhcmUgc2VwYXJhdGVkIGluIHN0YXRlVmVjdG9yLikK
IC8vCiAvLyBTZXJpYWxpemVkQ29udHJvbFN0YXRlIDo6PSBTa2lwU3RhdGUgfCBSZXN0b3JlU3Rh
dGUKLS8vIFNraXBTdGF0ZSA6Oj0gJzAnCi0vLyBSZXN0b3JlU3RhdGUgOjo9IFVuc2lnbmVkTnVt
YmVyLCBDb250cm9sVmFsdWUrCi0vLyBVbnNpZ25lZE51bWJlciA6Oj0gWzAtOV0rCi0vLyBDb250
cm9sVmFsdWUgOjo9IGFyYml0cmFyeSBzdHJpbmcKLS8vCi0vLyBSZXN0b3JlU3RhdGUgaGFzIGEg
c2VxdWVuY2Ugb2YgQ29udHJvbFZhbHVlcy4gVGhlIGxlbmd0aCBvZiB0aGUKLS8vIHNlcXVlbmNl
IGlzIHJlcHJlc2VudGVkIGJ5IFVuc2lnbmVkTnVtYmVyLgorLy8gU2tpcFN0YXRlIDo6PSAnJwor
Ly8gUmVzdG9yZVN0YXRlIDo6PSAoJywnIEVzY2FwZWRWYWx1ZSApKworLy8gRXNjYXBlZFZhbHVl
IDo6PSAoJ1xcJyB8ICdcLCcgfCBbXlwsXSkrCiAKLXZvaWQgRm9ybUNvbnRyb2xTdGF0ZTo6c2Vy
aWFsaXplVG8oVmVjdG9yPFN0cmluZz4mIHN0YXRlVmVjdG9yKSBjb25zdAorU3RyaW5nIEZvcm1D
b250cm9sU3RhdGU6OnNlcmlhbGl6ZSgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFpc0ZhaWx1cmUo
KSk7Ci0gICAgc3RhdGVWZWN0b3IuYXBwZW5kKFN0cmluZzo6bnVtYmVyKG1fdmFsdWVzLnNpemUo
KSkpOworICAgIGlmICghbV92YWx1ZXMuc2l6ZSgpKQorICAgICAgICByZXR1cm4gZW1wdHlTdHJp
bmcoKTsKKworICAgIHNpemVfdCBlbm91Z2hTaXplID0gMDsKICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IG1fdmFsdWVzLnNpemUoKTsgKytpKQotICAgICAgICBzdGF0ZVZlY3Rvci5hcHBlbmQo
bV92YWx1ZXNbaV0uaXNOdWxsKCkgPyBlbXB0eVN0cmluZygpIDogbV92YWx1ZXNbaV0pOworICAg
ICAgICBlbm91Z2hTaXplICs9IDEgKyBtX3ZhbHVlc1tpXS5sZW5ndGgoKSAqIDI7CisgICAgU3Ry
aW5nQnVpbGRlciBidWlsZGVyOworICAgIGJ1aWxkZXIucmVzZXJ2ZUNhcGFjaXR5KGVub3VnaFNp
emUpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV92YWx1ZXMuc2l6ZSgpOyArK2kpIHsK
KyAgICAgICAgYnVpbGRlci5hcHBlbmQoJywnKTsKKyAgICAgICAgY29uc3QgU3RyaW5nJiB2YWx1
ZSA9IG1fdmFsdWVzW2ldOworICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSAwOyBqIDwgdmFsdWUu
bGVuZ3RoKCk7ICsraikgeworICAgICAgICAgICAgaWYgKHZhbHVlW2pdID09ICdcXCcpCisgICAg
ICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIlxcXFwiKTsKKyAgICAgICAgICAgIGVsc2UgaWYg
KHZhbHVlW2pdID09ICcsJykKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiXFwsIik7
CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQodmFsdWVb
al0pOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CiB9
CiAKLUZvcm1Db250cm9sU3RhdGUgRm9ybUNvbnRyb2xTdGF0ZTo6ZGVzZXJpYWxpemUoY29uc3Qg
VmVjdG9yPFN0cmluZz4mIHN0YXRlVmVjdG9yLCBzaXplX3QmIGluZGV4KQorRm9ybUNvbnRyb2xT
dGF0ZSBGb3JtQ29udHJvbFN0YXRlOjpkZXNlcmlhbGl6ZShjb25zdCBTdHJpbmcmIGVzY2FwZWQp
CiB7Ci0gICAgaWYgKGluZGV4ID49IHN0YXRlVmVjdG9yLnNpemUoKSkKLSAgICAgICAgcmV0dXJu
IEZvcm1Db250cm9sU3RhdGUoVHlwZUZhaWx1cmUpOwotICAgIHNpemVfdCB2YWx1ZVNpemUgPSBz
dGF0ZVZlY3RvcltpbmRleCsrXS50b1VJbnQoKTsKLSAgICBpZiAoIXZhbHVlU2l6ZSkKKyAgICBp
ZiAoIWVzY2FwZWQubGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiBGb3JtQ29udHJvbFN0YXRlKCk7
Ci0gICAgaWYgKGluZGV4ICsgdmFsdWVTaXplID4gc3RhdGVWZWN0b3Iuc2l6ZSgpKQorICAgIGlm
IChlc2NhcGVkWzBdICE9ICcsJykKICAgICAgICAgcmV0dXJuIEZvcm1Db250cm9sU3RhdGUoVHlw
ZUZhaWx1cmUpOworCisgICAgc2l6ZV90IHZhbHVlU2l6ZSA9IDE7CisgICAgZm9yICh1bnNpZ25l
ZCBpID0gMTsgaSA8IGVzY2FwZWQubGVuZ3RoKCk7ICsraSkgeworICAgICAgICBpZiAoZXNjYXBl
ZFtpXSA9PSAnXFwnKSB7CisgICAgICAgICAgICBpZiAoKytpID49IGVzY2FwZWQubGVuZ3RoKCkp
CisgICAgICAgICAgICAgICAgcmV0dXJuIEZvcm1Db250cm9sU3RhdGUoVHlwZUZhaWx1cmUpOwor
ICAgICAgICB9IGVsc2UgaWYgKGVzY2FwZWRbaV0gPT0gJywnKQorICAgICAgICAgICAgdmFsdWVT
aXplKys7CisgICAgfQorCiAgICAgRm9ybUNvbnRyb2xTdGF0ZSBzdGF0ZTsKICAgICBzdGF0ZS5t
X3ZhbHVlcy5yZXNlcnZlQ2FwYWNpdHkodmFsdWVTaXplKTsKLSAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHZhbHVlU2l6ZTsgKytpKQotICAgICAgICBzdGF0ZS5hcHBlbmQoc3RhdGVWZWN0b3Jb
aW5kZXgrK10pOworICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICBmb3IgKHVuc2lnbmVk
IGkgPSAxOyBpIDwgZXNjYXBlZC5sZW5ndGgoKTsgKytpKSB7CisgICAgICAgIGlmIChlc2NhcGVk
W2ldID09ICdcXCcpIHsKKyAgICAgICAgICAgIGlmICgrK2kgPj0gZXNjYXBlZC5sZW5ndGgoKSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gRm9ybUNvbnRyb2xTdGF0ZShUeXBlRmFpbHVyZSk7Cisg
ICAgICAgICAgICBidWlsZGVyLmFwcGVuZChlc2NhcGVkW2ldKTsKKyAgICAgICAgfSBlbHNlIGlm
IChlc2NhcGVkW2ldID09ICcsJykgeworICAgICAgICAgICAgc3RhdGUuYXBwZW5kKGJ1aWxkZXIu
dG9TdHJpbmcoKSk7CisgICAgICAgICAgICBidWlsZGVyLmNsZWFyKCk7CisgICAgICAgIH0gZWxz
ZQorICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoZXNjYXBlZFtpXSk7CisgICAgfQorICAgIHN0
YXRlLmFwcGVuZChidWlsZGVyLnRvU3RyaW5nKCkpOwogICAgIHJldHVybiBzdGF0ZTsKIH0KIApA
QCAtODgsNyArMTIwLDcgQEAgc3RhdGljIFN0cmluZyBmb3JtU3RhdGVTaWduYXR1cmUoKQogVmVj
dG9yPFN0cmluZz4gRm9ybUNvbnRyb2xsZXI6OmZvcm1FbGVtZW50c1N0YXRlKCkgY29uc3QKIHsK
ICAgICBWZWN0b3I8U3RyaW5nPiBzdGF0ZVZlY3RvcjsKLSAgICBzdGF0ZVZlY3Rvci5yZXNlcnZl
SW5pdGlhbENhcGFjaXR5KG1fZm9ybUVsZW1lbnRzV2l0aFN0YXRlLnNpemUoKSAqIDQgKyAxKTsK
KyAgICBzdGF0ZVZlY3Rvci5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fZm9ybUVsZW1lbnRzV2l0
aFN0YXRlLnNpemUoKSAqIDMgKyAxKTsKICAgICBzdGF0ZVZlY3Rvci5hcHBlbmQoZm9ybVN0YXRl
U2lnbmF0dXJlKCkpOwogICAgIHR5cGVkZWYgRm9ybUVsZW1lbnRMaXN0SGFzaFNldDo6Y29uc3Rf
aXRlcmF0b3IgSXRlcmF0b3I7CiAgICAgSXRlcmF0b3IgZW5kID0gbV9mb3JtRWxlbWVudHNXaXRo
U3RhdGUuZW5kKCk7CkBAIC05OCw3ICsxMzAsNyBAQCBWZWN0b3I8U3RyaW5nPiBGb3JtQ29udHJv
bGxlcjo6Zm9ybUVsZW1lbnRzU3RhdGUoKSBjb25zdAogICAgICAgICAgICAgY29udGludWU7CiAg
ICAgICAgIHN0YXRlVmVjdG9yLmFwcGVuZChlbGVtZW50V2l0aFN0YXRlLT5uYW1lKCkuc3RyaW5n
KCkpOwogICAgICAgICBzdGF0ZVZlY3Rvci5hcHBlbmQoZWxlbWVudFdpdGhTdGF0ZS0+Zm9ybUNv
bnRyb2xUeXBlKCkuc3RyaW5nKCkpOwotICAgICAgICBlbGVtZW50V2l0aFN0YXRlLT5zYXZlRm9y
bUNvbnRyb2xTdGF0ZSgpLnNlcmlhbGl6ZVRvKHN0YXRlVmVjdG9yKTsKKyAgICAgICAgc3RhdGVW
ZWN0b3IuYXBwZW5kKGVsZW1lbnRXaXRoU3RhdGUtPnNhdmVGb3JtQ29udHJvbFN0YXRlKCkuc2Vy
aWFsaXplKCkpOwogICAgIH0KICAgICByZXR1cm4gc3RhdGVWZWN0b3I7CiB9CkBAIC0xMTMsMTQg
KzE0NSwxNSBAQCB2b2lkIEZvcm1Db250cm9sbGVyOjpzZXRTdGF0ZUZvck5ld0Zvcm1FbGVtZW50
cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgc3RhdGVWZWN0bwogICAgIHR5cGVkZWYgRm9ybUVsZW1l
bnRTdGF0ZU1hcDo6aXRlcmF0b3IgSXRlcmF0b3I7CiAgICAgbV9mb3JtRWxlbWVudHNXaXRoU3Rh
dGUuY2xlYXIoKTsKIAotICAgIHNpemVfdCBpID0gMDsKLSAgICBpZiAoc3RhdGVWZWN0b3Iuc2l6
ZSgpIDwgMSB8fCBzdGF0ZVZlY3RvcltpKytdICE9IGZvcm1TdGF0ZVNpZ25hdHVyZSgpKQorICAg
IGlmIChzdGF0ZVZlY3Rvci5zaXplKCkgPCAxIHx8IHN0YXRlVmVjdG9yWzBdICE9IGZvcm1TdGF0
ZVNpZ25hdHVyZSgpKQorICAgICAgICByZXR1cm47CisgICAgaWYgKChzdGF0ZVZlY3Rvci5zaXpl
KCkgLSAxKSAlIDMpCiAgICAgICAgIHJldHVybjsKIAotICAgIHdoaWxlIChpICsgMiA8IHN0YXRl
VmVjdG9yLnNpemUoKSkgewotICAgICAgICBBdG9taWNTdHJpbmcgbmFtZSA9IHN0YXRlVmVjdG9y
W2krK107Ci0gICAgICAgIEF0b21pY1N0cmluZyB0eXBlID0gc3RhdGVWZWN0b3JbaSsrXTsKLSAg
ICAgICAgRm9ybUNvbnRyb2xTdGF0ZSBzdGF0ZSA9IEZvcm1Db250cm9sU3RhdGU6OmRlc2VyaWFs
aXplKHN0YXRlVmVjdG9yLCBpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMTsgaSA8IHN0YXRlVmVj
dG9yLnNpemUoKTsgaSArPSAzKSB7CisgICAgICAgIEF0b21pY1N0cmluZyBuYW1lID0gc3RhdGVW
ZWN0b3JbaV07CisgICAgICAgIEF0b21pY1N0cmluZyB0eXBlID0gc3RhdGVWZWN0b3JbaSArIDFd
OworICAgICAgICBGb3JtQ29udHJvbFN0YXRlIHN0YXRlID0gRm9ybUNvbnRyb2xTdGF0ZTo6ZGVz
ZXJpYWxpemUoc3RhdGVWZWN0b3JbaSArIDJdKTsKICAgICAgICAgaWYgKHR5cGUuaXNFbXB0eSgp
IHx8IHR5cGUuaW1wbCgpLT5maW5kKGlzTm90Rm9ybUNvbnRyb2xUeXBlQ2hhcmFjdGVyKSAhPSBu
b3RGb3VuZCB8fCBzdGF0ZS5pc0ZhaWx1cmUoKSkKICAgICAgICAgICAgIGJyZWFrOwogCkBAIC0x
MzQsOCArMTY3LDYgQEAgdm9pZCBGb3JtQ29udHJvbGxlcjo6c2V0U3RhdGVGb3JOZXdGb3JtRWxl
bWVudHMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHN0YXRlVmVjdG8KICAgICAgICAgICAgIG1fc3Rh
dGVGb3JOZXdGb3JtRWxlbWVudHMuc2V0KGtleSwgc3RhdGVMaXN0KTsKICAgICAgICAgfQogICAg
IH0KLSAgICBpZiAoaSAhPSBzdGF0ZVZlY3Rvci5zaXplKCkpCi0gICAgICAgIG1fc3RhdGVGb3JO
ZXdGb3JtRWxlbWVudHMuY2xlYXIoKTsKIH0KIAogYm9vbCBGb3JtQ29udHJvbGxlcjo6aGFzU3Rh
dGVGb3JOZXdGb3JtRWxlbWVudHMoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9Gb3JtQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxl
ci5oCmluZGV4IGZhNTQ2M2I4YWUzNzY3NDYwMTNhZmJmYzg5NWRhZmQ3MDZkMmZlOWEuLjRkZTUx
ZjUyNGI1NjVjZTJlYWVmNDc1YjQyMDg2ZjllOGQzYWM4OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvRm9ybUNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zv
cm1Db250cm9sbGVyLmgKQEAgLTc4LDcgKzc4LDcgQEAgY2xhc3MgRm9ybUNvbnRyb2xTdGF0ZSB7
CiBwdWJsaWM6CiAgICAgRm9ybUNvbnRyb2xTdGF0ZSgpIDogbV90eXBlKFR5cGVTa2lwKSB7IH0K
ICAgICBleHBsaWNpdCBGb3JtQ29udHJvbFN0YXRlKGNvbnN0IFN0cmluZyYgdmFsdWUpIDogbV90
eXBlKFR5cGVSZXN0b3JlKSB7IG1fdmFsdWVzLmFwcGVuZCh2YWx1ZSk7IH0KLSAgICBzdGF0aWMg
Rm9ybUNvbnRyb2xTdGF0ZSBkZXNlcmlhbGl6ZShjb25zdCBWZWN0b3I8U3RyaW5nPiYgc3RhdGVW
ZWN0b3IsIHNpemVfdCYgaW5kZXgpOworICAgIHN0YXRpYyBGb3JtQ29udHJvbFN0YXRlIGRlc2Vy
aWFsaXplKGNvbnN0IFN0cmluZyYpOwogICAgIEZvcm1Db250cm9sU3RhdGUoY29uc3QgRm9ybUNv
bnRyb2xTdGF0ZSYgYW5vdGhlcikgOiBtX3R5cGUoYW5vdGhlci5tX3R5cGUpLCBtX3ZhbHVlcyhh
bm90aGVyLm1fdmFsdWVzKSB7IH0KICAgICBGb3JtQ29udHJvbFN0YXRlJiBvcGVyYXRvcj0oY29u
c3QgRm9ybUNvbnRyb2xTdGF0ZSYpOwogCkBAIC04Niw3ICs4Niw3IEBAIHB1YmxpYzoKICAgICBz
aXplX3QgdmFsdWVTaXplKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZXMuc2l6ZSgpOyB9CiAgICAg
Y29uc3QgU3RyaW5nJiBvcGVyYXRvcltdKHNpemVfdCBpKSBjb25zdCB7IHJldHVybiBtX3ZhbHVl
c1tpXTsgfQogICAgIHZvaWQgYXBwZW5kKGNvbnN0IFN0cmluZyYpOwotICAgIHZvaWQgc2VyaWFs
aXplVG8oVmVjdG9yPFN0cmluZz4mIHN0YXRlVmVjdG9yKSBjb25zdDsKKyAgICBTdHJpbmcgc2Vy
aWFsaXplKCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgZW51bSBUeXBlIHsgVHlwZVNraXAsIFR5
cGVSZXN0b3JlLCBUeXBlRmFpbHVyZSB9OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGY1NWQxNmE2MDg5YjA1ZjdmYzY4M2M1
NDE0NDcwNWJlYWM3NzUxNGMuLmM4NzE5OGUyYTUzNGVjMWM1Y2NjN2RlZjhjMmZiMGRkN2Y3ZTUy
ZDEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wNi0yNCAgS2VudCBUYW11cmEgIDx0a2Vu
dEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQ2hhbmdlIHRoZSBzZXJpYWxpemF0aW9uIGZvcm1h
dCBvZiBmb3JtIGNvbnRyb2wgc3RhdGUgdG8gbWFrZSB0aGUgY29kZSBzaW1wbGUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg5ODQ3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2Zvcm1zL3N0YXRl
LXJlc3RvcmUtYnJva2VuLXN0YXRlLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgQXBwbHkgdGhlIHNl
cmlhbGl6YXRpb24gZm9ybWF0IGNoYW5nZS4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL3N0YXRlLXJl
c3RvcmUtdmFyaW91cy12YWx1ZXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2Zvcm1zL3N0YXRlLXJlc3RvcmUtdmFyaW91cy12YWx1ZXMuaHRtbDogQWRkZWQuCisKIDIwMTIt
MDYtMjEgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFNlbGVj
dGVkIG9wdGlvbiBpcyBub3QgcmVzdG9yZWQgY29ycmVjdGx5CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2Zvcm1zL3N0YXRlLXJlc3RvcmUtYnJva2VuLXN0YXRlLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvc3RhdGUtcmVzdG9yZS1icm9rZW4tc3RhdGUtZXhwZWN0
ZWQudHh0CmluZGV4IGQ5NTJlOTNmNmIxNTU2MGIxMDI5ZDE4ZDc4YjA1YTRhNzJlYWMxMTUuLjI1
ZjZkYzc3MTQ4NzBmMTU2NDBlMjMwMTg4YmNiNmUyNTM5MjE5ZGEgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2Zhc3QvZm9ybXMvc3RhdGUtcmVzdG9yZS1icm9rZW4tc3RhdGUtZXhwZWN0ZWQudHh0
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvc3RhdGUtcmVzdG9yZS1icm9rZW4tc3RhdGUt
ZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsNCBAQAotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDU6IEdl
bmVyYXRlZCBzdGF0ZTogW25hbWUxLHRleHQsMSxtb2RpZmllZF0KK0NPTlNPTEUgTUVTU0FHRTog
bGluZSA1OiBHZW5lcmF0ZWQgc3RhdGU6IFtuYW1lMSx0ZXh0LCxtb2RpZmllZF0KIFRoZSB2YWx1
ZSB3YXMgbW9kaWZpZWQgaW4gdGhlIGZpcnN0IGxvYWQgb2Ygc3RhdGUtcmVzdG9yZS1icm9rZW4t
c3RhdGUtMS5odG1sLCBidXQgaXQgc2hvdWxkIG5vdCBiZSByZXN0b3JlZCBiZWNhdXNlIHRoZSBz
dGF0ZS1yZXN0b3JlLWJyb2tlbi1zdGF0ZS0yLmh0bWwgYnJlYWtzIHRoZSBzdGF0ZS4KIAogT24g
c3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93
ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jt
cy9zdGF0ZS1yZXN0b3JlLXZhcmlvdXMtdmFsdWVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2Zhc3QvZm9ybXMvc3RhdGUtcmVzdG9yZS12YXJpb3VzLXZhbHVlcy1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYWQzNjQ4MjFjYzIyMDc0YmI2MDlkNjE0Y2E5MDY0ZDgwNTBjY2Q5NgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvc3RhdGUtcmVzdG9yZS12YXJpb3Vz
LXZhbHVlcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNyBAQAorVGVzdCBpZiBzcGVjaWFsIGNo
YXJhY3RlcnMgYXJlIGNvcnJlY3RseSByZXN0b3JlZC4KKworUEFTUyAkKCJvcHQtMDEiKS5zZWxl
Y3RlZCBpcyB0cnVlCitQQVNTICQoIm9wdC0wMiIpLnNlbGVjdGVkIGlzIHRydWUKK1BBU1MgJCgi
b3B0LTAzIikuc2VsZWN0ZWQgaXMgdHJ1ZQorUEFTUyAkKCJvcHQtMDQiKS5zZWxlY3RlZCBpcyB0
cnVlCitQQVNTICQoIm9wdC0wNSIpLnNlbGVjdGVkIGlzIHRydWUKK1BBU1MgJCgib3B0LTA2Iiku
c2VsZWN0ZWQgaXMgdHJ1ZQorUEFTUyAkKCJvcHQtMDciKS5zZWxlY3RlZCBpcyB0cnVlCitQQVNT
ICQoIm9wdC0wOCIpLnNlbGVjdGVkIGlzIHRydWUKK1BBU1MgJCgib3B0LTA5Iikuc2VsZWN0ZWQg
aXMgdHJ1ZQorUEFTUyAkKCJvcHQtMTAiKS5zZWxlY3RlZCBpcyB0cnVlCitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKworCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2Zvcm1zL3N0YXRlLXJlc3RvcmUtdmFyaW91cy12YWx1ZXMuaHRtbCBiL0xh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvc3RhdGUtcmVzdG9yZS12YXJpb3VzLXZhbHVlcy5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmM1MTMwM2I1MzIwOWQ3YmM2OGNmN2QyMWI5ZDdiMjg3YWEyM2UyN2YKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3N0YXRlLXJlc3RvcmUtdmFyaW91
cy12YWx1ZXMuaHRtbApAQCAtMCwwICsxLDcwIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvY29tbW9uLmpzIj48L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPHA+VGVzdCBpZiBzcGVjaWFsIGNoYXJhY3RlcnMgYXJlIGNvcnJlY3RseSBy
ZXN0b3JlZC48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPGlucHV0IGlkPSJlbXB0
eU9uRmlyc3RWaXNpdCI+Cis8ZGl2IGlkPSJwYXJlbnQiPgorPGZvcm0gYWN0aW9uPSJkYXRhOnRl
eHQvaHRtbCwmbHQ7c2NyaXB0Pmhpc3RvcnkuYmFjaygpJmx0Oy9zY3JpcHQ+IiBpZD1mb3JtMT4K
KzxzZWxlY3QgaWQ9InNlbGVjdDEiIG11bHRpcGxlPgorICA8b3B0aW9uIGlkPSJvcHQtMDEiPjwv
b3B0aW9uPgorICA8b3B0aW9uIGlkPSJvcHQtMDIiPiw8L29wdGlvbj4KKyAgPG9wdGlvbiBpZD0i
b3B0LTAzIj5cPC9vcHRpb24+CisgIDxvcHRpb24gaWQ9Im9wdC0wNCI+LGEsPC9vcHRpb24+Cisg
IDxvcHRpb24gaWQ9Im9wdC0wNSI+LFwsPC9vcHRpb24+CisgIDxvcHRpb24gaWQ9Im9wdC0wNiI+
LFxcLDwvb3B0aW9uPgorICA8b3B0aW9uIGlkPSJvcHQtMDciPlxhXDwvb3B0aW9uPgorICA8b3B0
aW9uIGlkPSJvcHQtMDgiPlxuXDwvb3B0aW9uPgorICA8b3B0aW9uIGlkPSJvcHQtMDkiPlwsLFw8
L29wdGlvbj4KKyAgPG9wdGlvbiBpZD0ib3B0LTEwIj4mYW1wOyYjMDsmI3gwZDsmI3gwYTssPC9v
cHRpb24+Cis8L3NlbGVjdD4KKzwvZm9ybT4KKzwvZGl2PgorCis8c2NyaXB0PgorLy8gTm90ZSB0
aGF0IHRoaXMgdGVzdCBkZXBlbmRzIG9uIHRoZSBmYWN0IHRoYXQgc2VsZWN0IG9wdGlvbnMgYXJl
IHN0b3JlZCBieQorLy8gdmFsdWUgc3RyaW5ncywgbm90IGluZGV4ZXMuCisKK2pzVGVzdElzQXN5
bmMgPSB0cnVlOworCitmdW5jdGlvbiBydW5UZXN0KCkKK3sKKyAgICB2YXIgc3RhdGUgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnZW1wdHlPbkZpcnN0VmlzaXQnKTsKKyAgICBpZiAoIXN0YXRl
LnZhbHVlKSB7CisgICAgICAgIC8vIEZpcnN0IHZpc2l0LgorICAgICAgICBzZXRUaW1lb3V0KGZ1
bmN0aW9uKCkgeworICAgICAgICAgICAgc3RhdGUudmFsdWUgPSAndmlzaXRlZCc7CisJICAgIHZh
ciBvcHRpb25zID0gJCgnc2VsZWN0MScpLm9wdGlvbnM7CisJICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgb3B0aW9ucy5sZW5ndGg7ICsraSkKKwkJb3B0aW9uc1tpXS5zZWxlY3RlZCA9IHRydWU7Cisg
ICAgICAgICAgICAkKCdmb3JtMScpLnN1Ym1pdCgpOworICAgICAgICB9LCAwKTsKKyAgICB9IGVs
c2UgeworICAgICAgICAvLyBXZW50IGJhY2sgdG8gdGhpcyBwYWdlIGFnYWluLCBhbmQgZm9ybSBz
dGF0ZSBzaG91bGQgYmUgcmVzdG9yZWQuCisgICAgICAgIHNob3VsZEJlVHJ1ZSgnJCgib3B0LTAx
Iikuc2VsZWN0ZWQnKTsKKyAgICAgICAgc2hvdWxkQmVUcnVlKCckKCJvcHQtMDIiKS5zZWxlY3Rl
ZCcpOworICAgICAgICBzaG91bGRCZVRydWUoJyQoIm9wdC0wMyIpLnNlbGVjdGVkJyk7CisgICAg
ICAgIHNob3VsZEJlVHJ1ZSgnJCgib3B0LTA0Iikuc2VsZWN0ZWQnKTsKKyAgICAgICAgc2hvdWxk
QmVUcnVlKCckKCJvcHQtMDUiKS5zZWxlY3RlZCcpOworICAgICAgICBzaG91bGRCZVRydWUoJyQo
Im9wdC0wNiIpLnNlbGVjdGVkJyk7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgnJCgib3B0LTA3Iiku
c2VsZWN0ZWQnKTsKKyAgICAgICAgc2hvdWxkQmVUcnVlKCckKCJvcHQtMDgiKS5zZWxlY3RlZCcp
OworICAgICAgICBzaG91bGRCZVRydWUoJyQoIm9wdC0wOSIpLnNlbGVjdGVkJyk7CisgICAgICAg
IHNob3VsZEJlVHJ1ZSgnJCgib3B0LTEwIikuc2VsZWN0ZWQnKTsKKyAgICAKKyAgICAgICAgJCgn
cGFyZW50JykuaW5uZXJIVE1MID0gJyc7CisgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7
CisgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfSwgMCk7CisgICAgfQorfQor
CitydW5UZXN0KCk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149230</attachid>
            <date>2012-06-24 20:39:08 -0700</date>
            <delta_ts>2012-06-24 23:13:15 -0700</delta_ts>
            <desc>Patch 2</desc>
            <filename>bug-89847-20120625123907.patch</filename>
            <type>text/plain</type>
            <size>13912</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxMTI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDcxNmFlODhiMGU2Nzcz
YjE4YzY3YjQ1NjNkYWUyZmEzMDY2MGJhNS4uZGYwNjc0M2FmN2RjNmQ4NjVhYzZmMTBkYmZhZGI1
MDBkYjMzYmVjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDEyLTA2LTI0ICBLZW50
IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KKworICAgICAgICBDaGFuZ2UgdGhlIHNlcmlh
bGl6YXRpb24gZm9ybWF0IG9mIGZvcm0gY29udHJvbCBzdGF0ZSB0byBtYWtlIHRoZSBjb2RlIHNp
bXBsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODk4
NDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSB1
c2VkIG11bHRpcGxlIHN0cmluZ3MgdG8gcmVwcmVzZW50IHN0YXRlIG9mIHNpbmdsZSBmb3JtIGNv
bnRyb2wuIEl0CisgICAgICAgIG1hZGUgdGhlIGNvZGUgY29tcGxleC4gV2UgY2hhbmdlIHRoZSBz
ZXJpYWxpemF0aW9uIGZvcm1hdCBzbyB0aGF0IG9uZQorICAgICAgICBDU1Ygc3RyaW5nIHJlcHJl
c2VudHMgc3RhdGUuCisKKyAgICAgICAgRXhhbXBsZXMgaW4gdGhlIG9sZCBmb3JtYXQ6CisgICAg
ICAgICAgICAiMCIKKyAgICAgICAgICAgICIxIiwgInZhbHVlIgorICAgICAgICAgICAgIjMiLCAi
dmFsdWUxIiwgInZhbHVlMix2YWx1ZTIiLCAidmFsdWUzIgorCisgICAgICAgIEV4YW1wbGVzIGlu
IHRoZSBuZXcgZm9ybWF0OgorICAgICAgICAgICAgIiIKKyAgICAgICAgICAgICIsdmFsdWUiCisg
ICAgICAgICAgICAiLHZhbHVlMSx2YWx1ZTJcLHZhbHVlMix2YWx1ZTMiCisKKyAgICAgICAgVGVz
dDogZmFzdC9mb3Jtcy9zdGF0ZS1yZXN0b3JlLXZhcmlvdXMtdmFsdWVzLmh0bWwKKworICAgICAg
ICAqIGh0bWwvRm9ybUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybUNvbnRy
b2xTdGF0ZTo6c2VyaWFsaXplKToKKyAgICAgICAgR2VuZXJhdGUgY29tbWEtc2VwYXJhdGVkIHN0
cmluZy4KKyAgICAgICAgJywnIGluIGEgdmFsdWUgaXMgc2VyaWFsaXplZCBhcyAiXCwiLgorICAg
ICAgICBXZSBjaGFuZ2VkIHRoZSBzaWduYXR1cmUgYmVjYXVzZSB3ZSBkb24ndCBuZWVkIHRoZSBv
dXQtYXJndW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpGb3JtQ29udHJvbFN0YXRlOjpkZXNlcmlh
bGl6ZSk6CisgICAgICAgIFBhcnNlcyB0aGUgaW5wdXQgY29tbWEtc2VwYXJhdGVkIHN0cmluZy4K
KyAgICAgICAgV2UgY2hhbmdlZCB0aGUgc2lnbmF0dXJlIGJlY2F1c2Ugd2UgZG9uJ3QgbmVlZCBt
dWx0aXBsZSBpbnB1dCBzdHJpbmdzLgorICAgICAgICAoV2ViQ29yZTo6Rm9ybUNvbnRyb2xsZXI6
OmZvcm1FbGVtZW50c1N0YXRlKToKKyAgICAgICAgVGhlIG5ldyBzZXJpYWxpemVkIGZvcm1hdCBv
Y2N1cGllcyBqdXN0IG9uZSBzdHJpbmcgZm9yIG9uZSBjb250cm9sLgorICAgICAgICAtIEV4cGVj
dGVkIHNpemUgaXMgbm93IDNuKzEuCisgICAgICAgIC0gVXNlIEZvcm1Db250cm9sU3RhdGU6OnNl
cmlhbGl6ZSgpLgorICAgICAgICAoV2ViQ29yZTo6Rm9ybUNvbnRyb2xsZXI6OnNldFN0YXRlRm9y
TmV3Rm9ybUVsZW1lbnRzKToKKyAgICAgICAgVGhlIG5ldyBzZXJpYWxpemVkIGZvcm1hdCBvY2N1
cGllcyBqdXN0IG9uZSBzdHJpbmcgZm9yIG9uZSBjb250cm9sLgorICAgICAgICBTbyB3ZSBjYW4g
Y2hlY2sgdGhlIHZlY3RvciBzaXplIGJlZm9yZSB0aGUgaXRlcmF0aW9uLgorICAgICAgICAqIGh0
bWwvRm9ybUNvbnRyb2xsZXIuaDoKKyAgICAgICAgKEZvcm1Db250cm9sU3RhdGUpOiBDaGFuZ2Ug
dGhlIGZ1bmN0aW9uIHNpZ25hdHVyZXMuCisKIDIwMTItMDYtMjIgIEtlbnQgVGFtdXJhICA8dGtl
bnRAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFNlbGVjdGVkIG9wdGlvbiBpcyBub3QgcmVzdG9y
ZWQgY29ycmVjdGx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Db250cm9s
bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUNvbnRyb2xsZXIuY3BwCmluZGV4IDMx
Yzc3NjM0M2NiM2M2ZmZiYzFmNTVhMmUyNDI2NDdkODY5NGQ5YzEuLmIyMTViNDJiYzY2Yzc5YmQ2
NTA0ZmMzNTkyOWIxNGI1MTdjYTYyZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Rm9ybUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUNvbnRyb2xs
ZXIuY3BwCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5jbHVkZSAiRm9ybUNvbnRyb2xsZXIuaCIKIAog
I2luY2x1ZGUgIkhUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGUuaCIKKyNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMzAs
MzggKzMxLDY5IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAvLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCiAKIC8vIFNlcmlsaXplZCBmb3JtIG9mIEZvcm1Db250cm9sU3RhdGU6Ci0vLyAgKCcs
JyBtZWFucyBzdHJpbmdzIGFyb3VuZCBpdCBhcmUgc2VwYXJhdGVkIGluIHN0YXRlVmVjdG9yLikK
IC8vCiAvLyBTZXJpYWxpemVkQ29udHJvbFN0YXRlIDo6PSBTa2lwU3RhdGUgfCBSZXN0b3JlU3Rh
dGUKLS8vIFNraXBTdGF0ZSA6Oj0gJzAnCi0vLyBSZXN0b3JlU3RhdGUgOjo9IFVuc2lnbmVkTnVt
YmVyLCBDb250cm9sVmFsdWUrCi0vLyBVbnNpZ25lZE51bWJlciA6Oj0gWzAtOV0rCi0vLyBDb250
cm9sVmFsdWUgOjo9IGFyYml0cmFyeSBzdHJpbmcKLS8vCi0vLyBSZXN0b3JlU3RhdGUgaGFzIGEg
c2VxdWVuY2Ugb2YgQ29udHJvbFZhbHVlcy4gVGhlIGxlbmd0aCBvZiB0aGUKLS8vIHNlcXVlbmNl
IGlzIHJlcHJlc2VudGVkIGJ5IFVuc2lnbmVkTnVtYmVyLgorLy8gU2tpcFN0YXRlIDo6PSAnJwor
Ly8gUmVzdG9yZVN0YXRlIDo6PSAoJywnIEVzY2FwZWRWYWx1ZSApKworLy8gRXNjYXBlZFZhbHVl
IDo6PSAoJ1xcJyB8ICdcLCcgfCBbXlwsXSkrCiAKLXZvaWQgRm9ybUNvbnRyb2xTdGF0ZTo6c2Vy
aWFsaXplVG8oVmVjdG9yPFN0cmluZz4mIHN0YXRlVmVjdG9yKSBjb25zdAorU3RyaW5nIEZvcm1D
b250cm9sU3RhdGU6OnNlcmlhbGl6ZSgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFpc0ZhaWx1cmUo
KSk7Ci0gICAgc3RhdGVWZWN0b3IuYXBwZW5kKFN0cmluZzo6bnVtYmVyKG1fdmFsdWVzLnNpemUo
KSkpOworICAgIGlmICghbV92YWx1ZXMuc2l6ZSgpKQorICAgICAgICByZXR1cm4gZW1wdHlTdHJp
bmcoKTsKKworICAgIHNpemVfdCBlbm91Z2hTaXplID0gMDsKICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IG1fdmFsdWVzLnNpemUoKTsgKytpKQotICAgICAgICBzdGF0ZVZlY3Rvci5hcHBlbmQo
bV92YWx1ZXNbaV0uaXNOdWxsKCkgPyBlbXB0eVN0cmluZygpIDogbV92YWx1ZXNbaV0pOworICAg
ICAgICBlbm91Z2hTaXplICs9IDEgKyBtX3ZhbHVlc1tpXS5sZW5ndGgoKSAqIDI7CisgICAgU3Ry
aW5nQnVpbGRlciBidWlsZGVyOworICAgIGJ1aWxkZXIucmVzZXJ2ZUNhcGFjaXR5KGVub3VnaFNp
emUpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV92YWx1ZXMuc2l6ZSgpOyArK2kpIHsK
KyAgICAgICAgYnVpbGRlci5hcHBlbmQoJywnKTsKKyAgICAgICAgY29uc3QgU3RyaW5nJiB2YWx1
ZSA9IG1fdmFsdWVzW2ldOworICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSAwOyBqIDwgdmFsdWUu
bGVuZ3RoKCk7ICsraikgeworICAgICAgICAgICAgaWYgKHZhbHVlW2pdID09ICdcXCcpCisgICAg
ICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIlxcXFwiKTsKKyAgICAgICAgICAgIGVsc2UgaWYg
KHZhbHVlW2pdID09ICcsJykKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiXFwsIik7
CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQodmFsdWVb
al0pOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CiB9
CiAKLUZvcm1Db250cm9sU3RhdGUgRm9ybUNvbnRyb2xTdGF0ZTo6ZGVzZXJpYWxpemUoY29uc3Qg
VmVjdG9yPFN0cmluZz4mIHN0YXRlVmVjdG9yLCBzaXplX3QmIGluZGV4KQorRm9ybUNvbnRyb2xT
dGF0ZSBGb3JtQ29udHJvbFN0YXRlOjpkZXNlcmlhbGl6ZShjb25zdCBTdHJpbmcmIGVzY2FwZWQp
CiB7Ci0gICAgaWYgKGluZGV4ID49IHN0YXRlVmVjdG9yLnNpemUoKSkKLSAgICAgICAgcmV0dXJu
IEZvcm1Db250cm9sU3RhdGUoVHlwZUZhaWx1cmUpOwotICAgIHNpemVfdCB2YWx1ZVNpemUgPSBz
dGF0ZVZlY3RvcltpbmRleCsrXS50b1VJbnQoKTsKLSAgICBpZiAoIXZhbHVlU2l6ZSkKKyAgICBp
ZiAoIWVzY2FwZWQubGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiBGb3JtQ29udHJvbFN0YXRlKCk7
Ci0gICAgaWYgKGluZGV4ICsgdmFsdWVTaXplID4gc3RhdGVWZWN0b3Iuc2l6ZSgpKQorICAgIGlm
IChlc2NhcGVkWzBdICE9ICcsJykKICAgICAgICAgcmV0dXJuIEZvcm1Db250cm9sU3RhdGUoVHlw
ZUZhaWx1cmUpOworCisgICAgc2l6ZV90IHZhbHVlU2l6ZSA9IDE7CisgICAgZm9yICh1bnNpZ25l
ZCBpID0gMTsgaSA8IGVzY2FwZWQubGVuZ3RoKCk7ICsraSkgeworICAgICAgICBpZiAoZXNjYXBl
ZFtpXSA9PSAnXFwnKSB7CisgICAgICAgICAgICBpZiAoKytpID49IGVzY2FwZWQubGVuZ3RoKCkp
CisgICAgICAgICAgICAgICAgcmV0dXJuIEZvcm1Db250cm9sU3RhdGUoVHlwZUZhaWx1cmUpOwor
ICAgICAgICB9IGVsc2UgaWYgKGVzY2FwZWRbaV0gPT0gJywnKQorICAgICAgICAgICAgdmFsdWVT
aXplKys7CisgICAgfQorCiAgICAgRm9ybUNvbnRyb2xTdGF0ZSBzdGF0ZTsKICAgICBzdGF0ZS5t
X3ZhbHVlcy5yZXNlcnZlQ2FwYWNpdHkodmFsdWVTaXplKTsKLSAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHZhbHVlU2l6ZTsgKytpKQotICAgICAgICBzdGF0ZS5hcHBlbmQoc3RhdGVWZWN0b3Jb
aW5kZXgrK10pOworICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICBmb3IgKHVuc2lnbmVk
IGkgPSAxOyBpIDwgZXNjYXBlZC5sZW5ndGgoKTsgKytpKSB7CisgICAgICAgIGlmIChlc2NhcGVk
W2ldID09ICdcXCcpIHsKKyAgICAgICAgICAgIGlmICgrK2kgPj0gZXNjYXBlZC5sZW5ndGgoKSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gRm9ybUNvbnRyb2xTdGF0ZShUeXBlRmFpbHVyZSk7Cisg
ICAgICAgICAgICBidWlsZGVyLmFwcGVuZChlc2NhcGVkW2ldKTsKKyAgICAgICAgfSBlbHNlIGlm
IChlc2NhcGVkW2ldID09ICcsJykgeworICAgICAgICAgICAgc3RhdGUuYXBwZW5kKGJ1aWxkZXIu
dG9TdHJpbmcoKSk7CisgICAgICAgICAgICBidWlsZGVyLmNsZWFyKCk7CisgICAgICAgIH0gZWxz
ZQorICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoZXNjYXBlZFtpXSk7CisgICAgfQorICAgIHN0
YXRlLmFwcGVuZChidWlsZGVyLnRvU3RyaW5nKCkpOwogICAgIHJldHVybiBzdGF0ZTsKIH0KIApA
QCAtODgsNyArMTIwLDcgQEAgc3RhdGljIFN0cmluZyBmb3JtU3RhdGVTaWduYXR1cmUoKQogVmVj
dG9yPFN0cmluZz4gRm9ybUNvbnRyb2xsZXI6OmZvcm1FbGVtZW50c1N0YXRlKCkgY29uc3QKIHsK
ICAgICBWZWN0b3I8U3RyaW5nPiBzdGF0ZVZlY3RvcjsKLSAgICBzdGF0ZVZlY3Rvci5yZXNlcnZl
SW5pdGlhbENhcGFjaXR5KG1fZm9ybUVsZW1lbnRzV2l0aFN0YXRlLnNpemUoKSAqIDQgKyAxKTsK
KyAgICBzdGF0ZVZlY3Rvci5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fZm9ybUVsZW1lbnRzV2l0
aFN0YXRlLnNpemUoKSAqIDMgKyAxKTsKICAgICBzdGF0ZVZlY3Rvci5hcHBlbmQoZm9ybVN0YXRl
U2lnbmF0dXJlKCkpOwogICAgIHR5cGVkZWYgRm9ybUVsZW1lbnRMaXN0SGFzaFNldDo6Y29uc3Rf
aXRlcmF0b3IgSXRlcmF0b3I7CiAgICAgSXRlcmF0b3IgZW5kID0gbV9mb3JtRWxlbWVudHNXaXRo
U3RhdGUuZW5kKCk7CkBAIC05OCw3ICsxMzAsNyBAQCBWZWN0b3I8U3RyaW5nPiBGb3JtQ29udHJv
bGxlcjo6Zm9ybUVsZW1lbnRzU3RhdGUoKSBjb25zdAogICAgICAgICAgICAgY29udGludWU7CiAg
ICAgICAgIHN0YXRlVmVjdG9yLmFwcGVuZChlbGVtZW50V2l0aFN0YXRlLT5uYW1lKCkuc3RyaW5n
KCkpOwogICAgICAgICBzdGF0ZVZlY3Rvci5hcHBlbmQoZWxlbWVudFdpdGhTdGF0ZS0+Zm9ybUNv
bnRyb2xUeXBlKCkuc3RyaW5nKCkpOwotICAgICAgICBlbGVtZW50V2l0aFN0YXRlLT5zYXZlRm9y
bUNvbnRyb2xTdGF0ZSgpLnNlcmlhbGl6ZVRvKHN0YXRlVmVjdG9yKTsKKyAgICAgICAgc3RhdGVW
ZWN0b3IuYXBwZW5kKGVsZW1lbnRXaXRoU3RhdGUtPnNhdmVGb3JtQ29udHJvbFN0YXRlKCkuc2Vy
aWFsaXplKCkpOwogICAgIH0KICAgICByZXR1cm4gc3RhdGVWZWN0b3I7CiB9CkBAIC0xMTMsMTQg
KzE0NSwxNSBAQCB2b2lkIEZvcm1Db250cm9sbGVyOjpzZXRTdGF0ZUZvck5ld0Zvcm1FbGVtZW50
cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgc3RhdGVWZWN0bwogICAgIHR5cGVkZWYgRm9ybUVsZW1l
bnRTdGF0ZU1hcDo6aXRlcmF0b3IgSXRlcmF0b3I7CiAgICAgbV9mb3JtRWxlbWVudHNXaXRoU3Rh
dGUuY2xlYXIoKTsKIAotICAgIHNpemVfdCBpID0gMDsKLSAgICBpZiAoc3RhdGVWZWN0b3Iuc2l6
ZSgpIDwgMSB8fCBzdGF0ZVZlY3RvcltpKytdICE9IGZvcm1TdGF0ZVNpZ25hdHVyZSgpKQorICAg
IGlmIChzdGF0ZVZlY3Rvci5zaXplKCkgPCAxIHx8IHN0YXRlVmVjdG9yWzBdICE9IGZvcm1TdGF0
ZVNpZ25hdHVyZSgpKQorICAgICAgICByZXR1cm47CisgICAgaWYgKChzdGF0ZVZlY3Rvci5zaXpl
KCkgLSAxKSAlIDMpCiAgICAgICAgIHJldHVybjsKIAotICAgIHdoaWxlIChpICsgMiA8IHN0YXRl
VmVjdG9yLnNpemUoKSkgewotICAgICAgICBBdG9taWNTdHJpbmcgbmFtZSA9IHN0YXRlVmVjdG9y
W2krK107Ci0gICAgICAgIEF0b21pY1N0cmluZyB0eXBlID0gc3RhdGVWZWN0b3JbaSsrXTsKLSAg
ICAgICAgRm9ybUNvbnRyb2xTdGF0ZSBzdGF0ZSA9IEZvcm1Db250cm9sU3RhdGU6OmRlc2VyaWFs
aXplKHN0YXRlVmVjdG9yLCBpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMTsgaSA8IHN0YXRlVmVj
dG9yLnNpemUoKTsgaSArPSAzKSB7CisgICAgICAgIEF0b21pY1N0cmluZyBuYW1lID0gc3RhdGVW
ZWN0b3JbaV07CisgICAgICAgIEF0b21pY1N0cmluZyB0eXBlID0gc3RhdGVWZWN0b3JbaSArIDFd
OworICAgICAgICBGb3JtQ29udHJvbFN0YXRlIHN0YXRlID0gRm9ybUNvbnRyb2xTdGF0ZTo6ZGVz
ZXJpYWxpemUoc3RhdGVWZWN0b3JbaSArIDJdKTsKICAgICAgICAgaWYgKHR5cGUuaXNFbXB0eSgp
IHx8IHR5cGUuaW1wbCgpLT5maW5kKGlzTm90Rm9ybUNvbnRyb2xUeXBlQ2hhcmFjdGVyKSAhPSBu
b3RGb3VuZCB8fCBzdGF0ZS5pc0ZhaWx1cmUoKSkKICAgICAgICAgICAgIGJyZWFrOwogCkBAIC0x
MzQsOCArMTY3LDYgQEAgdm9pZCBGb3JtQ29udHJvbGxlcjo6c2V0U3RhdGVGb3JOZXdGb3JtRWxl
bWVudHMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHN0YXRlVmVjdG8KICAgICAgICAgICAgIG1fc3Rh
dGVGb3JOZXdGb3JtRWxlbWVudHMuc2V0KGtleSwgc3RhdGVMaXN0KTsKICAgICAgICAgfQogICAg
IH0KLSAgICBpZiAoaSAhPSBzdGF0ZVZlY3Rvci5zaXplKCkpCi0gICAgICAgIG1fc3RhdGVGb3JO
ZXdGb3JtRWxlbWVudHMuY2xlYXIoKTsKIH0KIAogYm9vbCBGb3JtQ29udHJvbGxlcjo6aGFzU3Rh
dGVGb3JOZXdGb3JtRWxlbWVudHMoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9Gb3JtQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxl
ci5oCmluZGV4IGZhNTQ2M2I4YWUzNzY3NDYwMTNhZmJmYzg5NWRhZmQ3MDZkMmZlOWEuLjRkZTUx
ZjUyNGI1NjVjZTJlYWVmNDc1YjQyMDg2ZjllOGQzYWM4OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvRm9ybUNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zv
cm1Db250cm9sbGVyLmgKQEAgLTc4LDcgKzc4LDcgQEAgY2xhc3MgRm9ybUNvbnRyb2xTdGF0ZSB7
CiBwdWJsaWM6CiAgICAgRm9ybUNvbnRyb2xTdGF0ZSgpIDogbV90eXBlKFR5cGVTa2lwKSB7IH0K
ICAgICBleHBsaWNpdCBGb3JtQ29udHJvbFN0YXRlKGNvbnN0IFN0cmluZyYgdmFsdWUpIDogbV90
eXBlKFR5cGVSZXN0b3JlKSB7IG1fdmFsdWVzLmFwcGVuZCh2YWx1ZSk7IH0KLSAgICBzdGF0aWMg
Rm9ybUNvbnRyb2xTdGF0ZSBkZXNlcmlhbGl6ZShjb25zdCBWZWN0b3I8U3RyaW5nPiYgc3RhdGVW
ZWN0b3IsIHNpemVfdCYgaW5kZXgpOworICAgIHN0YXRpYyBGb3JtQ29udHJvbFN0YXRlIGRlc2Vy
aWFsaXplKGNvbnN0IFN0cmluZyYpOwogICAgIEZvcm1Db250cm9sU3RhdGUoY29uc3QgRm9ybUNv
bnRyb2xTdGF0ZSYgYW5vdGhlcikgOiBtX3R5cGUoYW5vdGhlci5tX3R5cGUpLCBtX3ZhbHVlcyhh
bm90aGVyLm1fdmFsdWVzKSB7IH0KICAgICBGb3JtQ29udHJvbFN0YXRlJiBvcGVyYXRvcj0oY29u
c3QgRm9ybUNvbnRyb2xTdGF0ZSYpOwogCkBAIC04Niw3ICs4Niw3IEBAIHB1YmxpYzoKICAgICBz
aXplX3QgdmFsdWVTaXplKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZXMuc2l6ZSgpOyB9CiAgICAg
Y29uc3QgU3RyaW5nJiBvcGVyYXRvcltdKHNpemVfdCBpKSBjb25zdCB7IHJldHVybiBtX3ZhbHVl
c1tpXTsgfQogICAgIHZvaWQgYXBwZW5kKGNvbnN0IFN0cmluZyYpOwotICAgIHZvaWQgc2VyaWFs
aXplVG8oVmVjdG9yPFN0cmluZz4mIHN0YXRlVmVjdG9yKSBjb25zdDsKKyAgICBTdHJpbmcgc2Vy
aWFsaXplKCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgZW51bSBUeXBlIHsgVHlwZVNraXAsIFR5
cGVSZXN0b3JlLCBUeXBlRmFpbHVyZSB9OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGY1NWQxNmE2MDg5YjA1ZjdmYzY4M2M1
NDE0NDcwNWJlYWM3NzUxNGMuLmM4NzE5OGUyYTUzNGVjMWM1Y2NjN2RlZjhjMmZiMGRkN2Y3ZTUy
ZDEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wNi0yNCAgS2VudCBUYW11cmEgIDx0a2Vu
dEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQ2hhbmdlIHRoZSBzZXJpYWxpemF0aW9uIGZvcm1h
dCBvZiBmb3JtIGNvbnRyb2wgc3RhdGUgdG8gbWFrZSB0aGUgY29kZSBzaW1wbGUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg5ODQ3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2Zvcm1zL3N0YXRl
LXJlc3RvcmUtYnJva2VuLXN0YXRlLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgQXBwbHkgdGhlIHNl
cmlhbGl6YXRpb24gZm9ybWF0IGNoYW5nZS4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL3N0YXRlLXJl
c3RvcmUtdmFyaW91cy12YWx1ZXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2Zvcm1zL3N0YXRlLXJlc3RvcmUtdmFyaW91cy12YWx1ZXMuaHRtbDogQWRkZWQuCisKIDIwMTIt
MDYtMjEgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFNlbGVj
dGVkIG9wdGlvbiBpcyBub3QgcmVzdG9yZWQgY29ycmVjdGx5CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2Zvcm1zL3N0YXRlLXJlc3RvcmUtYnJva2VuLXN0YXRlLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvc3RhdGUtcmVzdG9yZS1icm9rZW4tc3RhdGUtZXhwZWN0
ZWQudHh0CmluZGV4IGQ5NTJlOTNmNmIxNTU2MGIxMDI5ZDE4ZDc4YjA1YTRhNzJlYWMxMTUuLjI1
ZjZkYzc3MTQ4NzBmMTU2NDBlMjMwMTg4YmNiNmUyNTM5MjE5ZGEgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2Zhc3QvZm9ybXMvc3RhdGUtcmVzdG9yZS1icm9rZW4tc3RhdGUtZXhwZWN0ZWQudHh0
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvc3RhdGUtcmVzdG9yZS1icm9rZW4tc3RhdGUt
ZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsNCBAQAotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDU6IEdl
bmVyYXRlZCBzdGF0ZTogW25hbWUxLHRleHQsMSxtb2RpZmllZF0KK0NPTlNPTEUgTUVTU0FHRTog
bGluZSA1OiBHZW5lcmF0ZWQgc3RhdGU6IFtuYW1lMSx0ZXh0LCxtb2RpZmllZF0KIFRoZSB2YWx1
ZSB3YXMgbW9kaWZpZWQgaW4gdGhlIGZpcnN0IGxvYWQgb2Ygc3RhdGUtcmVzdG9yZS1icm9rZW4t
c3RhdGUtMS5odG1sLCBidXQgaXQgc2hvdWxkIG5vdCBiZSByZXN0b3JlZCBiZWNhdXNlIHRoZSBz
dGF0ZS1yZXN0b3JlLWJyb2tlbi1zdGF0ZS0yLmh0bWwgYnJlYWtzIHRoZSBzdGF0ZS4KIAogT24g
c3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93
ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jt
cy9zdGF0ZS1yZXN0b3JlLXZhcmlvdXMtdmFsdWVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2Zhc3QvZm9ybXMvc3RhdGUtcmVzdG9yZS12YXJpb3VzLXZhbHVlcy1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYWQzNjQ4MjFjYzIyMDc0YmI2MDlkNjE0Y2E5MDY0ZDgwNTBjY2Q5NgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvc3RhdGUtcmVzdG9yZS12YXJpb3Vz
LXZhbHVlcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNyBAQAorVGVzdCBpZiBzcGVjaWFsIGNo
YXJhY3RlcnMgYXJlIGNvcnJlY3RseSByZXN0b3JlZC4KKworUEFTUyAkKCJvcHQtMDEiKS5zZWxl
Y3RlZCBpcyB0cnVlCitQQVNTICQoIm9wdC0wMiIpLnNlbGVjdGVkIGlzIHRydWUKK1BBU1MgJCgi
b3B0LTAzIikuc2VsZWN0ZWQgaXMgdHJ1ZQorUEFTUyAkKCJvcHQtMDQiKS5zZWxlY3RlZCBpcyB0
cnVlCitQQVNTICQoIm9wdC0wNSIpLnNlbGVjdGVkIGlzIHRydWUKK1BBU1MgJCgib3B0LTA2Iiku
c2VsZWN0ZWQgaXMgdHJ1ZQorUEFTUyAkKCJvcHQtMDciKS5zZWxlY3RlZCBpcyB0cnVlCitQQVNT
ICQoIm9wdC0wOCIpLnNlbGVjdGVkIGlzIHRydWUKK1BBU1MgJCgib3B0LTA5Iikuc2VsZWN0ZWQg
aXMgdHJ1ZQorUEFTUyAkKCJvcHQtMTAiKS5zZWxlY3RlZCBpcyB0cnVlCitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKworCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2Zvcm1zL3N0YXRlLXJlc3RvcmUtdmFyaW91cy12YWx1ZXMuaHRtbCBiL0xh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvc3RhdGUtcmVzdG9yZS12YXJpb3VzLXZhbHVlcy5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjVlMTM3ZTUzN2M4Yjc1YzM3ZmI3YWYyNmQ5NWIyOGY0YTVlOWFmZTkKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3N0YXRlLXJlc3RvcmUtdmFyaW91
cy12YWx1ZXMuaHRtbApAQCAtMCwwICsxLDcwIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvY29tbW9uLmpzIj48L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPHA+VGVzdCBpZiBzcGVjaWFsIGNoYXJhY3RlcnMgYXJlIGNvcnJlY3RseSBy
ZXN0b3JlZC48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPGlucHV0IGlkPSJlbXB0
eU9uRmlyc3RWaXNpdCI+Cis8ZGl2IGlkPSJwYXJlbnQiPgorPGZvcm0gYWN0aW9uPSJkYXRhOnRl
eHQvaHRtbCwmbHQ7c2NyaXB0Pmhpc3RvcnkuYmFjaygpJmx0Oy9zY3JpcHQ+IiBpZD1mb3JtMT4K
KzxzZWxlY3QgaWQ9InNlbGVjdDEiIG11bHRpcGxlPgorICA8b3B0aW9uIGlkPSJvcHQtMDEiPjwv
b3B0aW9uPgorICA8b3B0aW9uIGlkPSJvcHQtMDIiPiw8L29wdGlvbj4KKyAgPG9wdGlvbiBpZD0i
b3B0LTAzIj5cPC9vcHRpb24+CisgIDxvcHRpb24gaWQ9Im9wdC0wNCI+LGEsPC9vcHRpb24+Cisg
IDxvcHRpb24gaWQ9Im9wdC0wNSI+LFwsPC9vcHRpb24+CisgIDxvcHRpb24gaWQ9Im9wdC0wNiI+
LFxcLDwvb3B0aW9uPgorICA8b3B0aW9uIGlkPSJvcHQtMDciPlxhXDwvb3B0aW9uPgorICA8b3B0
aW9uIGlkPSJvcHQtMDgiPlxuXDwvb3B0aW9uPgorICA8b3B0aW9uIGlkPSJvcHQtMDkiPlwsLFw8
L29wdGlvbj4KKyAgPG9wdGlvbiBpZD0ib3B0LTEwIj4mYW1wOyYjMDsmI3gwZDsmI3gwYTssPC9v
cHRpb24+Cis8L3NlbGVjdD4KKzwvZm9ybT4KKzwvZGl2PgorCis8c2NyaXB0PgorLy8gTm90ZSB0
aGF0IHRoaXMgdGVzdCBkZXBlbmRzIG9uIHRoZSBmYWN0IHRoYXQgc2VsZWN0IG9wdGlvbnMgYXJl
IHN0b3JlZCBieQorLy8gdmFsdWUgc3RyaW5ncywgbm90IGluZGV4ZXMuCisKK2pzVGVzdElzQXN5
bmMgPSB0cnVlOworCitmdW5jdGlvbiBydW5UZXN0KCkKK3sKKyAgICB2YXIgc3RhdGUgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnZW1wdHlPbkZpcnN0VmlzaXQnKTsKKyAgICBpZiAoIXN0YXRl
LnZhbHVlKSB7CisgICAgICAgIC8vIEZpcnN0IHZpc2l0LgorICAgICAgICBzZXRUaW1lb3V0KGZ1
bmN0aW9uKCkgeworICAgICAgICAgICAgc3RhdGUudmFsdWUgPSAndmlzaXRlZCc7CisgICAgICAg
ICAgICB2YXIgb3B0aW9ucyA9ICQoJ3NlbGVjdDEnKS5vcHRpb25zOworICAgICAgICAgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBvcHRpb25zLmxlbmd0aDsgKytpKQorICAgICAgICAgICAgICAgIG9w
dGlvbnNbaV0uc2VsZWN0ZWQgPSB0cnVlOworICAgICAgICAgICAgJCgnZm9ybTEnKS5zdWJtaXQo
KTsKKyAgICAgICAgfSwgMCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gV2VudCBiYWNrIHRv
IHRoaXMgcGFnZSBhZ2FpbiwgYW5kIGZvcm0gc3RhdGUgc2hvdWxkIGJlIHJlc3RvcmVkLgorICAg
ICAgICBzaG91bGRCZVRydWUoJyQoIm9wdC0wMSIpLnNlbGVjdGVkJyk7CisgICAgICAgIHNob3Vs
ZEJlVHJ1ZSgnJCgib3B0LTAyIikuc2VsZWN0ZWQnKTsKKyAgICAgICAgc2hvdWxkQmVUcnVlKCck
KCJvcHQtMDMiKS5zZWxlY3RlZCcpOworICAgICAgICBzaG91bGRCZVRydWUoJyQoIm9wdC0wNCIp
LnNlbGVjdGVkJyk7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgnJCgib3B0LTA1Iikuc2VsZWN0ZWQn
KTsKKyAgICAgICAgc2hvdWxkQmVUcnVlKCckKCJvcHQtMDYiKS5zZWxlY3RlZCcpOworICAgICAg
ICBzaG91bGRCZVRydWUoJyQoIm9wdC0wNyIpLnNlbGVjdGVkJyk7CisgICAgICAgIHNob3VsZEJl
VHJ1ZSgnJCgib3B0LTA4Iikuc2VsZWN0ZWQnKTsKKyAgICAgICAgc2hvdWxkQmVUcnVlKCckKCJv
cHQtMDkiKS5zZWxlY3RlZCcpOworICAgICAgICBzaG91bGRCZVRydWUoJyQoIm9wdC0xMCIpLnNl
bGVjdGVkJyk7CisgICAgCisgICAgICAgICQoJ3BhcmVudCcpLmlubmVySFRNTCA9ICcnOworICAg
ICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7
CisgICAgICAgIH0sIDApOworICAgIH0KK30KKworcnVuVGVzdCgpOworPC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2Jv
ZHk+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149246</attachid>
            <date>2012-06-24 23:13:21 -0700</date>
            <delta_ts>2012-06-24 23:23:28 -0700</delta_ts>
            <desc>Patch 3</desc>
            <filename>bug-89847-20120625151320.patch</filename>
            <type>text/plain</type>
            <size>16360</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxMTI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDllMzI5NTg4OGMwNzM5Zjg5ZWQ4Yzlm
ZDA1NWM2NTlhOTY0NzMzMTUuLmNlYmRjNmU0ODc0NTAyMWQ5OTk2Y2ZmOThmNzI2OGI1ZjI4ODAz
NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDYtMjQgIEtlbnQgVGFtdXJhICA8dGtlbnRA
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIENoYW5nZSB0aGUgc2VyaWFsaXphdGlvbiBmb3JtYXQg
b2YgZm9ybSBjb250cm9sIHN0YXRlIHRvIG1ha2UgdGhlIGNvZGUgc2ltcGxlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04OTg0NworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL3RleHQvU3RyaW5nQnVp
bGRlci5oOgorICAgICAgICAoV1RGOjpTdHJpbmdCdWlsZGVyOjphcHBlbmRFc2NhcGVkKTogQWRk
ZWQuIFRoaXMgZnVuY3Rpb24gYWRkcyB0aGUKKyAgICAgICAgZXNjYXBlZCBmb3JtIG9mIHRoZSBp
bnB1dCBzdHJpbmcuIGUuZy4gaWYgc3RpcmluZz0iZm9vLGJhciIgZXNjYXBlPSdcJworICAgICAg
ICBzcGVjaWFsPScsJywgdGhlIGFwcGVuZGVkIHN0cmluZyBpcyBmb29cLGJhci4KKwogMjAxMi0w
Ni0yMiAgUGV0ZXIgQmV2ZXJsb28gIDxwZXRlckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0No
cm9taXVtXSBEaXNhYmxlIGMrKzB4IGNvbXBhdGliaWxpdHkgd2FybmluZ3MgaW4gSmF2YVNjcmlw
dENvcmUuZ3lwIHdoZW4gYnVpbGRpbmcgZm9yIEFuZHJvaWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwNzE2YWU4
OGIwZTY3NzNiMThjNjdiNDU2M2RhZTJmYTMwNjYwYmE1Li42NWEwZGZkNDFhNjJlYmY0MjBlMzg1
MDhjOWU0Y2VkNjFmYjIzODJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDcgQEAKKzIwMTItMDYt
MjQgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIENoYW5nZSB0
aGUgc2VyaWFsaXphdGlvbiBmb3JtYXQgb2YgZm9ybSBjb250cm9sIHN0YXRlIHRvIG1ha2UgdGhl
IGNvZGUgc2ltcGxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD04OTg0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFdlIHVzZWQgbXVsdGlwbGUgc3RyaW5ncyB0byByZXByZXNlbnQgc3RhdGUgb2Ygc2luZ2xl
IGZvcm0gY29udHJvbC4gSXQKKyAgICAgICAgbWFkZSB0aGUgY29kZSBjb21wbGV4LiBXZSBjaGFu
Z2UgdGhlIHNlcmlhbGl6YXRpb24gZm9ybWF0IHNvIHRoYXQgb25lCisgICAgICAgIENTViBzdHJp
bmcgcmVwcmVzZW50cyBzdGF0ZS4KKworICAgICAgICBFeGFtcGxlcyBpbiB0aGUgb2xkIGZvcm1h
dDoKKyAgICAgICAgICAgICIwIgorICAgICAgICAgICAgIjEiLCAidmFsdWUiCisgICAgICAgICAg
ICAiMyIsICJ2YWx1ZTEiLCAidmFsdWUyLHZhbHVlMiIsICJ2YWx1ZTMiCisKKyAgICAgICAgRXhh
bXBsZXMgaW4gdGhlIG5ldyBmb3JtYXQ6CisgICAgICAgICAgICAiIgorICAgICAgICAgICAgIix2
YWx1ZSIKKyAgICAgICAgICAgICIsdmFsdWUxLHZhbHVlMlwsdmFsdWUyLHZhbHVlMyIKKworICAg
ICAgICBUZXN0OiBmYXN0L2Zvcm1zL3N0YXRlLXJlc3RvcmUtdmFyaW91cy12YWx1ZXMuaHRtbAor
CisgICAgICAgICogaHRtbC9Gb3JtQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
b3JtQ29udHJvbFN0YXRlOjpzZXJpYWxpemUpOgorICAgICAgICBHZW5lcmF0ZSBjb21tYS1zZXBh
cmF0ZWQgc3RyaW5nLgorICAgICAgICAnLCcgaW4gYSB2YWx1ZSBpcyBzZXJpYWxpemVkIGFzICJc
LCIuCisgICAgICAgIFdlIGNoYW5nZWQgdGhlIHNpZ25hdHVyZSBiZWNhdXNlIHdlIGRvbid0IG5l
ZWQgdGhlIG91dC1hcmd1bWVudC4KKyAgICAgICAgKFdlYkNvcmU6OkZvcm1Db250cm9sU3RhdGU6
OmRlc2VyaWFsaXplKToKKyAgICAgICAgUGFyc2VzIHRoZSBpbnB1dCBjb21tYS1zZXBhcmF0ZWQg
c3RyaW5nLgorICAgICAgICBXZSBjaGFuZ2VkIHRoZSBzaWduYXR1cmUgYmVjYXVzZSB3ZSBkb24n
dCBuZWVkIG11bHRpcGxlIGlucHV0IHN0cmluZ3MuCisgICAgICAgIChXZWJDb3JlOjpGb3JtQ29u
dHJvbGxlcjo6Zm9ybUVsZW1lbnRzU3RhdGUpOgorICAgICAgICBUaGUgbmV3IHNlcmlhbGl6ZWQg
Zm9ybWF0IG9jY3VwaWVzIGp1c3Qgb25lIHN0cmluZyBmb3Igb25lIGNvbnRyb2wuCisgICAgICAg
IC0gRXhwZWN0ZWQgc2l6ZSBpcyBub3cgM24rMS4KKyAgICAgICAgLSBVc2UgRm9ybUNvbnRyb2xT
dGF0ZTo6c2VyaWFsaXplKCkuCisgICAgICAgIChXZWJDb3JlOjpGb3JtQ29udHJvbGxlcjo6c2V0
U3RhdGVGb3JOZXdGb3JtRWxlbWVudHMpOgorICAgICAgICBUaGUgbmV3IHNlcmlhbGl6ZWQgZm9y
bWF0IG9jY3VwaWVzIGp1c3Qgb25lIHN0cmluZyBmb3Igb25lIGNvbnRyb2wuCisgICAgICAgIFNv
IHdlIGNhbiBjaGVjayB0aGUgdmVjdG9yIHNpemUgYmVmb3JlIHRoZSBpdGVyYXRpb24uCisgICAg
ICAgICogaHRtbC9Gb3JtQ29udHJvbGxlci5oOgorICAgICAgICAoRm9ybUNvbnRyb2xTdGF0ZSk6
IENoYW5nZSB0aGUgZnVuY3Rpb24gc2lnbmF0dXJlcy4KKworICAgICAgICAqIGh0bWwvc2hhZG93
L0NhbGVuZGFyUGlja2VyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjphZGRKYXZhU2Ny
aXB0U3RyaW5nKTogVXNlIFN0cmluZ0J1aWxkZXI6OmFwcGVuZEVzY2FwZWQoKS4KKwogMjAxMi0w
Ni0yMiAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgU2VsZWN0
ZWQgb3B0aW9uIGlzIG5vdCByZXN0b3JlZCBjb3JyZWN0bHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL3RleHQvU3RyaW5nQnVpbGRlci5oIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdC
dWlsZGVyLmgKaW5kZXggZDg5NmQxN2IxNTUxYzRkZGFiYzRkYWEzYTI3MWYxOWJmZGYwYzZhMC4u
YzczZDQ2MzcyY2I1NGMwYzYzYjM0MDljOGZjMTQyYmUxYTBmMjNjZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4
dC9TdHJpbmdCdWlsZGVyLmgKQEAgLTEzMCw2ICsxMzAsMjEgQEAgcHVibGljOgogICAgICAgICBh
cHBlbmQoc3RhdGljX2Nhc3Q8TENoYXI+KGMpKTsKICAgICB9CiAKKyAgICB2b2lkIGFwcGVuZEVz
Y2FwZWQoY29uc3QgU3RyaW5nJiBzdHJpbmcsIFVDaGFyIGVzY2FwZSwgVUNoYXIgc3BlY2lhbCkK
KyAgICB7CisgICAgICAgIGlmIChzdHJpbmcuaXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB1bnNpZ25lZCByZXF1aXJlZFNpemUgPSBsZW5ndGgoKSArIHN0cmluZy5sZW5n
dGgoKTsKKyAgICAgICAgaWYgKGNhcGFjaXR5KCkgPCByZXF1aXJlZFNpemUpCisgICAgICAgICAg
ICByZXNlcnZlQ2FwYWNpdHkocmVxdWlyZWRTaXplKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IHN0cmluZy5sZW5ndGgoKTsgKytpKSB7CisgICAgICAgICAgICBVQ2hhciBjaCA9
IHN0cmluZ1tpXTsKKyAgICAgICAgICAgIGlmIChjaCA9PSBlc2NhcGUgfHwgY2ggPT0gc3BlY2lh
bCkKKyAgICAgICAgICAgICAgICBhcHBlbmQoZXNjYXBlKTsKKyAgICAgICAgICAgIGFwcGVuZChj
aCk7CisgICAgICAgIH0KKyAgICB9CisKICAgICBTdHJpbmcgdG9TdHJpbmcoKQogICAgIHsKICAg
ICAgICAgc2hyaW5rVG9GaXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9y
bUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5jcHAK
aW5kZXggMzFjNzc2MzQzY2IzYzZmZmJjMWY1NWEyZTI0MjY0N2Q4Njk0ZDljMS4uOGNlYjc5NGJl
OTQxMzNlYzJhZTA0YjJjNjk0MzU4ZGU3ZDY5NGNlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9Gb3JtQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3Jt
Q29udHJvbGxlci5jcHAKQEAgLTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlICJGb3JtQ29udHJvbGxl
ci5oIgogCiAjaW5jbHVkZSAiSFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZS5oIgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkBAIC0zMCwzOCArMzEsNjEgQEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIC8vIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KIAogLy8gU2VyaWxpemVkIGZvcm0gb2YgRm9ybUNvbnRyb2xTdGF0ZToK
LS8vICAoJywnIG1lYW5zIHN0cmluZ3MgYXJvdW5kIGl0IGFyZSBzZXBhcmF0ZWQgaW4gc3RhdGVW
ZWN0b3IuKQogLy8KIC8vIFNlcmlhbGl6ZWRDb250cm9sU3RhdGUgOjo9IFNraXBTdGF0ZSB8IFJl
c3RvcmVTdGF0ZQotLy8gU2tpcFN0YXRlIDo6PSAnMCcKLS8vIFJlc3RvcmVTdGF0ZSA6Oj0gVW5z
aWduZWROdW1iZXIsIENvbnRyb2xWYWx1ZSsKLS8vIFVuc2lnbmVkTnVtYmVyIDo6PSBbMC05XSsK
LS8vIENvbnRyb2xWYWx1ZSA6Oj0gYXJiaXRyYXJ5IHN0cmluZwotLy8KLS8vIFJlc3RvcmVTdGF0
ZSBoYXMgYSBzZXF1ZW5jZSBvZiBDb250cm9sVmFsdWVzLiBUaGUgbGVuZ3RoIG9mIHRoZQotLy8g
c2VxdWVuY2UgaXMgcmVwcmVzZW50ZWQgYnkgVW5zaWduZWROdW1iZXIuCisvLyBTa2lwU3RhdGUg
Ojo9ICcnCisvLyBSZXN0b3JlU3RhdGUgOjo9ICgnLCcgRXNjYXBlZFZhbHVlICkrCisvLyBFc2Nh
cGVkVmFsdWUgOjo9ICgnXFwnIHwgJ1wsJyB8IFteXCxdKSsKIAotdm9pZCBGb3JtQ29udHJvbFN0
YXRlOjpzZXJpYWxpemVUbyhWZWN0b3I8U3RyaW5nPiYgc3RhdGVWZWN0b3IpIGNvbnN0CitTdHJp
bmcgRm9ybUNvbnRyb2xTdGF0ZTo6c2VyaWFsaXplKCkgY29uc3QKIHsKICAgICBBU1NFUlQoIWlz
RmFpbHVyZSgpKTsKLSAgICBzdGF0ZVZlY3Rvci5hcHBlbmQoU3RyaW5nOjpudW1iZXIobV92YWx1
ZXMuc2l6ZSgpKSk7CisgICAgaWYgKCFtX3ZhbHVlcy5zaXplKCkpCisgICAgICAgIHJldHVybiBl
bXB0eVN0cmluZygpOworCisgICAgc2l6ZV90IGVub3VnaFNpemUgPSAwOwogICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbV92YWx1ZXMuc2l6ZSgpOyArK2kpCi0gICAgICAgIHN0YXRlVmVjdG9y
LmFwcGVuZChtX3ZhbHVlc1tpXS5pc051bGwoKSA/IGVtcHR5U3RyaW5nKCkgOiBtX3ZhbHVlc1tp
XSk7CisgICAgICAgIGVub3VnaFNpemUgKz0gMSArIG1fdmFsdWVzW2ldLmxlbmd0aCgpICogMjsK
KyAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgYnVpbGRlci5yZXNlcnZlQ2FwYWNpdHko
ZW5vdWdoU2l6ZSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3ZhbHVlcy5zaXplKCk7
ICsraSkgeworICAgICAgICBidWlsZGVyLmFwcGVuZCgnLCcpOworICAgICAgICBidWlsZGVyLmFw
cGVuZEVzY2FwZWQobV92YWx1ZXNbaV0sICdcXCcsICcsJyk7CisgICAgfQorICAgIHJldHVybiBi
dWlsZGVyLnRvU3RyaW5nKCk7CiB9CiAKLUZvcm1Db250cm9sU3RhdGUgRm9ybUNvbnRyb2xTdGF0
ZTo6ZGVzZXJpYWxpemUoY29uc3QgVmVjdG9yPFN0cmluZz4mIHN0YXRlVmVjdG9yLCBzaXplX3Qm
IGluZGV4KQorRm9ybUNvbnRyb2xTdGF0ZSBGb3JtQ29udHJvbFN0YXRlOjpkZXNlcmlhbGl6ZShj
b25zdCBTdHJpbmcmIGVzY2FwZWQpCiB7Ci0gICAgaWYgKGluZGV4ID49IHN0YXRlVmVjdG9yLnNp
emUoKSkKLSAgICAgICAgcmV0dXJuIEZvcm1Db250cm9sU3RhdGUoVHlwZUZhaWx1cmUpOwotICAg
IHNpemVfdCB2YWx1ZVNpemUgPSBzdGF0ZVZlY3RvcltpbmRleCsrXS50b1VJbnQoKTsKLSAgICBp
ZiAoIXZhbHVlU2l6ZSkKKyAgICBpZiAoIWVzY2FwZWQubGVuZ3RoKCkpCiAgICAgICAgIHJldHVy
biBGb3JtQ29udHJvbFN0YXRlKCk7Ci0gICAgaWYgKGluZGV4ICsgdmFsdWVTaXplID4gc3RhdGVW
ZWN0b3Iuc2l6ZSgpKQorICAgIGlmIChlc2NhcGVkWzBdICE9ICcsJykKICAgICAgICAgcmV0dXJu
IEZvcm1Db250cm9sU3RhdGUoVHlwZUZhaWx1cmUpOworCisgICAgc2l6ZV90IHZhbHVlU2l6ZSA9
IDE7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8IGVzY2FwZWQubGVuZ3RoKCk7ICsraSkg
eworICAgICAgICBpZiAoZXNjYXBlZFtpXSA9PSAnXFwnKSB7CisgICAgICAgICAgICBpZiAoKytp
ID49IGVzY2FwZWQubGVuZ3RoKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIEZvcm1Db250cm9s
U3RhdGUoVHlwZUZhaWx1cmUpOworICAgICAgICB9IGVsc2UgaWYgKGVzY2FwZWRbaV0gPT0gJywn
KQorICAgICAgICAgICAgdmFsdWVTaXplKys7CisgICAgfQorCiAgICAgRm9ybUNvbnRyb2xTdGF0
ZSBzdGF0ZTsKICAgICBzdGF0ZS5tX3ZhbHVlcy5yZXNlcnZlQ2FwYWNpdHkodmFsdWVTaXplKTsK
LSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHZhbHVlU2l6ZTsgKytpKQotICAgICAgICBzdGF0
ZS5hcHBlbmQoc3RhdGVWZWN0b3JbaW5kZXgrK10pOworICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRl
cjsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDwgZXNjYXBlZC5sZW5ndGgoKTsgKytpKSB7
CisgICAgICAgIGlmIChlc2NhcGVkW2ldID09ICdcXCcpIHsKKyAgICAgICAgICAgIGlmICgrK2kg
Pj0gZXNjYXBlZC5sZW5ndGgoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gRm9ybUNvbnRyb2xT
dGF0ZShUeXBlRmFpbHVyZSk7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChlc2NhcGVkW2ld
KTsKKyAgICAgICAgfSBlbHNlIGlmIChlc2NhcGVkW2ldID09ICcsJykgeworICAgICAgICAgICAg
c3RhdGUuYXBwZW5kKGJ1aWxkZXIudG9TdHJpbmcoKSk7CisgICAgICAgICAgICBidWlsZGVyLmNs
ZWFyKCk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoZXNjYXBl
ZFtpXSk7CisgICAgfQorICAgIHN0YXRlLmFwcGVuZChidWlsZGVyLnRvU3RyaW5nKCkpOwogICAg
IHJldHVybiBzdGF0ZTsKIH0KIApAQCAtODgsNyArMTEyLDcgQEAgc3RhdGljIFN0cmluZyBmb3Jt
U3RhdGVTaWduYXR1cmUoKQogVmVjdG9yPFN0cmluZz4gRm9ybUNvbnRyb2xsZXI6OmZvcm1FbGVt
ZW50c1N0YXRlKCkgY29uc3QKIHsKICAgICBWZWN0b3I8U3RyaW5nPiBzdGF0ZVZlY3RvcjsKLSAg
ICBzdGF0ZVZlY3Rvci5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fZm9ybUVsZW1lbnRzV2l0aFN0
YXRlLnNpemUoKSAqIDQgKyAxKTsKKyAgICBzdGF0ZVZlY3Rvci5yZXNlcnZlSW5pdGlhbENhcGFj
aXR5KG1fZm9ybUVsZW1lbnRzV2l0aFN0YXRlLnNpemUoKSAqIDMgKyAxKTsKICAgICBzdGF0ZVZl
Y3Rvci5hcHBlbmQoZm9ybVN0YXRlU2lnbmF0dXJlKCkpOwogICAgIHR5cGVkZWYgRm9ybUVsZW1l
bnRMaXN0SGFzaFNldDo6Y29uc3RfaXRlcmF0b3IgSXRlcmF0b3I7CiAgICAgSXRlcmF0b3IgZW5k
ID0gbV9mb3JtRWxlbWVudHNXaXRoU3RhdGUuZW5kKCk7CkBAIC05OCw3ICsxMjIsNyBAQCBWZWN0
b3I8U3RyaW5nPiBGb3JtQ29udHJvbGxlcjo6Zm9ybUVsZW1lbnRzU3RhdGUoKSBjb25zdAogICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgIHN0YXRlVmVjdG9yLmFwcGVuZChlbGVtZW50V2l0
aFN0YXRlLT5uYW1lKCkuc3RyaW5nKCkpOwogICAgICAgICBzdGF0ZVZlY3Rvci5hcHBlbmQoZWxl
bWVudFdpdGhTdGF0ZS0+Zm9ybUNvbnRyb2xUeXBlKCkuc3RyaW5nKCkpOwotICAgICAgICBlbGVt
ZW50V2l0aFN0YXRlLT5zYXZlRm9ybUNvbnRyb2xTdGF0ZSgpLnNlcmlhbGl6ZVRvKHN0YXRlVmVj
dG9yKTsKKyAgICAgICAgc3RhdGVWZWN0b3IuYXBwZW5kKGVsZW1lbnRXaXRoU3RhdGUtPnNhdmVG
b3JtQ29udHJvbFN0YXRlKCkuc2VyaWFsaXplKCkpOwogICAgIH0KICAgICByZXR1cm4gc3RhdGVW
ZWN0b3I7CiB9CkBAIC0xMTMsMTQgKzEzNywxNSBAQCB2b2lkIEZvcm1Db250cm9sbGVyOjpzZXRT
dGF0ZUZvck5ld0Zvcm1FbGVtZW50cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgc3RhdGVWZWN0bwog
ICAgIHR5cGVkZWYgRm9ybUVsZW1lbnRTdGF0ZU1hcDo6aXRlcmF0b3IgSXRlcmF0b3I7CiAgICAg
bV9mb3JtRWxlbWVudHNXaXRoU3RhdGUuY2xlYXIoKTsKIAotICAgIHNpemVfdCBpID0gMDsKLSAg
ICBpZiAoc3RhdGVWZWN0b3Iuc2l6ZSgpIDwgMSB8fCBzdGF0ZVZlY3RvcltpKytdICE9IGZvcm1T
dGF0ZVNpZ25hdHVyZSgpKQorICAgIGlmIChzdGF0ZVZlY3Rvci5zaXplKCkgPCAxIHx8IHN0YXRl
VmVjdG9yWzBdICE9IGZvcm1TdGF0ZVNpZ25hdHVyZSgpKQorICAgICAgICByZXR1cm47CisgICAg
aWYgKChzdGF0ZVZlY3Rvci5zaXplKCkgLSAxKSAlIDMpCiAgICAgICAgIHJldHVybjsKIAotICAg
IHdoaWxlIChpICsgMiA8IHN0YXRlVmVjdG9yLnNpemUoKSkgewotICAgICAgICBBdG9taWNTdHJp
bmcgbmFtZSA9IHN0YXRlVmVjdG9yW2krK107Ci0gICAgICAgIEF0b21pY1N0cmluZyB0eXBlID0g
c3RhdGVWZWN0b3JbaSsrXTsKLSAgICAgICAgRm9ybUNvbnRyb2xTdGF0ZSBzdGF0ZSA9IEZvcm1D
b250cm9sU3RhdGU6OmRlc2VyaWFsaXplKHN0YXRlVmVjdG9yLCBpKTsKKyAgICBmb3IgKHNpemVf
dCBpID0gMTsgaSA8IHN0YXRlVmVjdG9yLnNpemUoKTsgaSArPSAzKSB7CisgICAgICAgIEF0b21p
Y1N0cmluZyBuYW1lID0gc3RhdGVWZWN0b3JbaV07CisgICAgICAgIEF0b21pY1N0cmluZyB0eXBl
ID0gc3RhdGVWZWN0b3JbaSArIDFdOworICAgICAgICBGb3JtQ29udHJvbFN0YXRlIHN0YXRlID0g
Rm9ybUNvbnRyb2xTdGF0ZTo6ZGVzZXJpYWxpemUoc3RhdGVWZWN0b3JbaSArIDJdKTsKICAgICAg
ICAgaWYgKHR5cGUuaXNFbXB0eSgpIHx8IHR5cGUuaW1wbCgpLT5maW5kKGlzTm90Rm9ybUNvbnRy
b2xUeXBlQ2hhcmFjdGVyKSAhPSBub3RGb3VuZCB8fCBzdGF0ZS5pc0ZhaWx1cmUoKSkKICAgICAg
ICAgICAgIGJyZWFrOwogCkBAIC0xMzQsOCArMTU5LDYgQEAgdm9pZCBGb3JtQ29udHJvbGxlcjo6
c2V0U3RhdGVGb3JOZXdGb3JtRWxlbWVudHMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHN0YXRlVmVj
dG8KICAgICAgICAgICAgIG1fc3RhdGVGb3JOZXdGb3JtRWxlbWVudHMuc2V0KGtleSwgc3RhdGVM
aXN0KTsKICAgICAgICAgfQogICAgIH0KLSAgICBpZiAoaSAhPSBzdGF0ZVZlY3Rvci5zaXplKCkp
Ci0gICAgICAgIG1fc3RhdGVGb3JOZXdGb3JtRWxlbWVudHMuY2xlYXIoKTsKIH0KIAogYm9vbCBG
b3JtQ29udHJvbGxlcjo6aGFzU3RhdGVGb3JOZXdGb3JtRWxlbWVudHMoKSBjb25zdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9Gb3JtQ29udHJvbGxlci5oCmluZGV4IGZhNTQ2M2I4YWUzNzY3NDYwMTNhZmJmYzg5
NWRhZmQ3MDZkMmZlOWEuLjRkZTUxZjUyNGI1NjVjZTJlYWVmNDc1YjQyMDg2ZjllOGQzYWM4OTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUNvbnRyb2xsZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Db250cm9sbGVyLmgKQEAgLTc4LDcgKzc4LDcgQEAgY2xh
c3MgRm9ybUNvbnRyb2xTdGF0ZSB7CiBwdWJsaWM6CiAgICAgRm9ybUNvbnRyb2xTdGF0ZSgpIDog
bV90eXBlKFR5cGVTa2lwKSB7IH0KICAgICBleHBsaWNpdCBGb3JtQ29udHJvbFN0YXRlKGNvbnN0
IFN0cmluZyYgdmFsdWUpIDogbV90eXBlKFR5cGVSZXN0b3JlKSB7IG1fdmFsdWVzLmFwcGVuZCh2
YWx1ZSk7IH0KLSAgICBzdGF0aWMgRm9ybUNvbnRyb2xTdGF0ZSBkZXNlcmlhbGl6ZShjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgc3RhdGVWZWN0b3IsIHNpemVfdCYgaW5kZXgpOworICAgIHN0YXRpYyBG
b3JtQ29udHJvbFN0YXRlIGRlc2VyaWFsaXplKGNvbnN0IFN0cmluZyYpOwogICAgIEZvcm1Db250
cm9sU3RhdGUoY29uc3QgRm9ybUNvbnRyb2xTdGF0ZSYgYW5vdGhlcikgOiBtX3R5cGUoYW5vdGhl
ci5tX3R5cGUpLCBtX3ZhbHVlcyhhbm90aGVyLm1fdmFsdWVzKSB7IH0KICAgICBGb3JtQ29udHJv
bFN0YXRlJiBvcGVyYXRvcj0oY29uc3QgRm9ybUNvbnRyb2xTdGF0ZSYpOwogCkBAIC04Niw3ICs4
Niw3IEBAIHB1YmxpYzoKICAgICBzaXplX3QgdmFsdWVTaXplKCkgY29uc3QgeyByZXR1cm4gbV92
YWx1ZXMuc2l6ZSgpOyB9CiAgICAgY29uc3QgU3RyaW5nJiBvcGVyYXRvcltdKHNpemVfdCBpKSBj
b25zdCB7IHJldHVybiBtX3ZhbHVlc1tpXTsgfQogICAgIHZvaWQgYXBwZW5kKGNvbnN0IFN0cmlu
ZyYpOwotICAgIHZvaWQgc2VyaWFsaXplVG8oVmVjdG9yPFN0cmluZz4mIHN0YXRlVmVjdG9yKSBj
b25zdDsKKyAgICBTdHJpbmcgc2VyaWFsaXplKCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgZW51
bSBUeXBlIHsgVHlwZVNraXAsIFR5cGVSZXN0b3JlLCBUeXBlRmFpbHVyZSB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ2FsZW5kYXJQaWNrZXJFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NhbGVuZGFyUGlja2VyRWxlbWVudC5jcHAKaW5k
ZXggNTM1OGNjYWY3YTNkZjJlMzNhMDNlYmYwYzg4OTExYjBjMDg4MmJjNS4uZmUxZjY0ZTEzZTdh
Y2EyYWM3MTRhZTZjM2Y4ZTJiMmVlMDBmODA3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvQ2FsZW5kYXJQaWNrZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9DYWxlbmRhclBpY2tlckVsZW1lbnQuY3BwCkBAIC0xNTEsMTIgKzE1MSw3
IEBAIHN0YXRpYyB2b2lkIGFkZEphdmFTY3JpcHRTdHJpbmcoY29uc3QgU3RyaW5nJiBzdHIsIERv
Y3VtZW50V3JpdGVyJiB3cml0ZXIpCiB7CiAgICAgYWRkTGl0ZXJhbCgiXCIiLCB3cml0ZXIpOwog
ICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKLSAgICBidWlsZGVyLnJlc2VydmVDYXBhY2l0eShz
dHIubGVuZ3RoKCkpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzdHIubGVuZ3RoKCk7
ICsraSkgewotICAgICAgICBpZiAoc3RyW2ldID09ICdcXCcgfHwgc3RyW2ldID09ICciJykKLSAg
ICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCdcXCcpOwotICAgICAgICBidWlsZGVyLmFwcGVuZChz
dHJbaV0pOwotICAgIH0KKyAgICBidWlsZGVyLmFwcGVuZEVzY2FwZWQoc3RyLCAnXFwnLCAnIicp
OwogICAgIGFkZFN0cmluZyhidWlsZGVyLnRvU3RyaW5nKCksIHdyaXRlcik7CiAgICAgYWRkTGl0
ZXJhbCgiXCIiLCB3cml0ZXIpOwogfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGY1NWQxNmE2MDg5YjA1ZjdmYzY4M2M1NDE0
NDcwNWJlYWM3NzUxNGMuLmM4NzE5OGUyYTUzNGVjMWM1Y2NjN2RlZjhjMmZiMGRkN2Y3ZTUyZDEg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wNi0yNCAgS2VudCBUYW11cmEgIDx0a2VudEBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgQ2hhbmdlIHRoZSBzZXJpYWxpemF0aW9uIGZvcm1hdCBv
ZiBmb3JtIGNvbnRyb2wgc3RhdGUgdG8gbWFrZSB0aGUgY29kZSBzaW1wbGUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg5ODQ3CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2Zvcm1zL3N0YXRlLXJl
c3RvcmUtYnJva2VuLXN0YXRlLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgQXBwbHkgdGhlIHNlcmlh
bGl6YXRpb24gZm9ybWF0IGNoYW5nZS4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL3N0YXRlLXJlc3Rv
cmUtdmFyaW91cy12YWx1ZXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zv
cm1zL3N0YXRlLXJlc3RvcmUtdmFyaW91cy12YWx1ZXMuaHRtbDogQWRkZWQuCisKIDIwMTItMDYt
MjEgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFNlbGVjdGVk
IG9wdGlvbiBpcyBub3QgcmVzdG9yZWQgY29ycmVjdGx5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2Zvcm1zL3N0YXRlLXJlc3RvcmUtYnJva2VuLXN0YXRlLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvc3RhdGUtcmVzdG9yZS1icm9rZW4tc3RhdGUtZXhwZWN0ZWQu
dHh0CmluZGV4IGQ5NTJlOTNmNmIxNTU2MGIxMDI5ZDE4ZDc4YjA1YTRhNzJlYWMxMTUuLjI1ZjZk
Yzc3MTQ4NzBmMTU2NDBlMjMwMTg4YmNiNmUyNTM5MjE5ZGEgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2Zhc3QvZm9ybXMvc3RhdGUtcmVzdG9yZS1icm9rZW4tc3RhdGUtZXhwZWN0ZWQudHh0Cisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvc3RhdGUtcmVzdG9yZS1icm9rZW4tc3RhdGUtZXhw
ZWN0ZWQudHh0CkBAIC0xLDQgKzEsNCBAQAotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDU6IEdlbmVy
YXRlZCBzdGF0ZTogW25hbWUxLHRleHQsMSxtb2RpZmllZF0KK0NPTlNPTEUgTUVTU0FHRTogbGlu
ZSA1OiBHZW5lcmF0ZWQgc3RhdGU6IFtuYW1lMSx0ZXh0LCxtb2RpZmllZF0KIFRoZSB2YWx1ZSB3
YXMgbW9kaWZpZWQgaW4gdGhlIGZpcnN0IGxvYWQgb2Ygc3RhdGUtcmVzdG9yZS1icm9rZW4tc3Rh
dGUtMS5odG1sLCBidXQgaXQgc2hvdWxkIG5vdCBiZSByZXN0b3JlZCBiZWNhdXNlIHRoZSBzdGF0
ZS1yZXN0b3JlLWJyb2tlbi1zdGF0ZS0yLmh0bWwgYnJlYWtzIHRoZSBzdGF0ZS4KIAogT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9z
dGF0ZS1yZXN0b3JlLXZhcmlvdXMtdmFsdWVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zh
c3QvZm9ybXMvc3RhdGUtcmVzdG9yZS12YXJpb3VzLXZhbHVlcy1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYWQzNjQ4MjFjYzIyMDc0YmI2MDlkNjE0Y2E5MDY0ZDgwNTBjY2Q5NgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvc3RhdGUtcmVzdG9yZS12YXJpb3VzLXZh
bHVlcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNyBAQAorVGVzdCBpZiBzcGVjaWFsIGNoYXJh
Y3RlcnMgYXJlIGNvcnJlY3RseSByZXN0b3JlZC4KKworUEFTUyAkKCJvcHQtMDEiKS5zZWxlY3Rl
ZCBpcyB0cnVlCitQQVNTICQoIm9wdC0wMiIpLnNlbGVjdGVkIGlzIHRydWUKK1BBU1MgJCgib3B0
LTAzIikuc2VsZWN0ZWQgaXMgdHJ1ZQorUEFTUyAkKCJvcHQtMDQiKS5zZWxlY3RlZCBpcyB0cnVl
CitQQVNTICQoIm9wdC0wNSIpLnNlbGVjdGVkIGlzIHRydWUKK1BBU1MgJCgib3B0LTA2Iikuc2Vs
ZWN0ZWQgaXMgdHJ1ZQorUEFTUyAkKCJvcHQtMDciKS5zZWxlY3RlZCBpcyB0cnVlCitQQVNTICQo
Im9wdC0wOCIpLnNlbGVjdGVkIGlzIHRydWUKK1BBU1MgJCgib3B0LTA5Iikuc2VsZWN0ZWQgaXMg
dHJ1ZQorUEFTUyAkKCJvcHQtMTAiKS5zZWxlY3RlZCBpcyB0cnVlCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKworCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2Zvcm1zL3N0YXRlLXJlc3RvcmUtdmFyaW91cy12YWx1ZXMuaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3QvZm9ybXMvc3RhdGUtcmVzdG9yZS12YXJpb3VzLXZhbHVlcy5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjVlMTM3ZTUzN2M4Yjc1YzM3ZmI3YWYyNmQ5NWIyOGY0YTVlOWFmZTkKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3N0YXRlLXJlc3RvcmUtdmFyaW91cy12
YWx1ZXMuaHRtbApAQCAtMCwwICsxLDcwIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhl
YWQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvY29tbW9uLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPHA+VGVzdCBpZiBzcGVjaWFsIGNoYXJhY3RlcnMgYXJlIGNvcnJlY3RseSByZXN0
b3JlZC48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPGlucHV0IGlkPSJlbXB0eU9u
Rmlyc3RWaXNpdCI+Cis8ZGl2IGlkPSJwYXJlbnQiPgorPGZvcm0gYWN0aW9uPSJkYXRhOnRleHQv
aHRtbCwmbHQ7c2NyaXB0Pmhpc3RvcnkuYmFjaygpJmx0Oy9zY3JpcHQ+IiBpZD1mb3JtMT4KKzxz
ZWxlY3QgaWQ9InNlbGVjdDEiIG11bHRpcGxlPgorICA8b3B0aW9uIGlkPSJvcHQtMDEiPjwvb3B0
aW9uPgorICA8b3B0aW9uIGlkPSJvcHQtMDIiPiw8L29wdGlvbj4KKyAgPG9wdGlvbiBpZD0ib3B0
LTAzIj5cPC9vcHRpb24+CisgIDxvcHRpb24gaWQ9Im9wdC0wNCI+LGEsPC9vcHRpb24+CisgIDxv
cHRpb24gaWQ9Im9wdC0wNSI+LFwsPC9vcHRpb24+CisgIDxvcHRpb24gaWQ9Im9wdC0wNiI+LFxc
LDwvb3B0aW9uPgorICA8b3B0aW9uIGlkPSJvcHQtMDciPlxhXDwvb3B0aW9uPgorICA8b3B0aW9u
IGlkPSJvcHQtMDgiPlxuXDwvb3B0aW9uPgorICA8b3B0aW9uIGlkPSJvcHQtMDkiPlwsLFw8L29w
dGlvbj4KKyAgPG9wdGlvbiBpZD0ib3B0LTEwIj4mYW1wOyYjMDsmI3gwZDsmI3gwYTssPC9vcHRp
b24+Cis8L3NlbGVjdD4KKzwvZm9ybT4KKzwvZGl2PgorCis8c2NyaXB0PgorLy8gTm90ZSB0aGF0
IHRoaXMgdGVzdCBkZXBlbmRzIG9uIHRoZSBmYWN0IHRoYXQgc2VsZWN0IG9wdGlvbnMgYXJlIHN0
b3JlZCBieQorLy8gdmFsdWUgc3RyaW5ncywgbm90IGluZGV4ZXMuCisKK2pzVGVzdElzQXN5bmMg
PSB0cnVlOworCitmdW5jdGlvbiBydW5UZXN0KCkKK3sKKyAgICB2YXIgc3RhdGUgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnZW1wdHlPbkZpcnN0VmlzaXQnKTsKKyAgICBpZiAoIXN0YXRlLnZh
bHVlKSB7CisgICAgICAgIC8vIEZpcnN0IHZpc2l0LgorICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0
aW9uKCkgeworICAgICAgICAgICAgc3RhdGUudmFsdWUgPSAndmlzaXRlZCc7CisgICAgICAgICAg
ICB2YXIgb3B0aW9ucyA9ICQoJ3NlbGVjdDEnKS5vcHRpb25zOworICAgICAgICAgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBvcHRpb25zLmxlbmd0aDsgKytpKQorICAgICAgICAgICAgICAgIG9wdGlv
bnNbaV0uc2VsZWN0ZWQgPSB0cnVlOworICAgICAgICAgICAgJCgnZm9ybTEnKS5zdWJtaXQoKTsK
KyAgICAgICAgfSwgMCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gV2VudCBiYWNrIHRvIHRo
aXMgcGFnZSBhZ2FpbiwgYW5kIGZvcm0gc3RhdGUgc2hvdWxkIGJlIHJlc3RvcmVkLgorICAgICAg
ICBzaG91bGRCZVRydWUoJyQoIm9wdC0wMSIpLnNlbGVjdGVkJyk7CisgICAgICAgIHNob3VsZEJl
VHJ1ZSgnJCgib3B0LTAyIikuc2VsZWN0ZWQnKTsKKyAgICAgICAgc2hvdWxkQmVUcnVlKCckKCJv
cHQtMDMiKS5zZWxlY3RlZCcpOworICAgICAgICBzaG91bGRCZVRydWUoJyQoIm9wdC0wNCIpLnNl
bGVjdGVkJyk7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgnJCgib3B0LTA1Iikuc2VsZWN0ZWQnKTsK
KyAgICAgICAgc2hvdWxkQmVUcnVlKCckKCJvcHQtMDYiKS5zZWxlY3RlZCcpOworICAgICAgICBz
aG91bGRCZVRydWUoJyQoIm9wdC0wNyIpLnNlbGVjdGVkJyk7CisgICAgICAgIHNob3VsZEJlVHJ1
ZSgnJCgib3B0LTA4Iikuc2VsZWN0ZWQnKTsKKyAgICAgICAgc2hvdWxkQmVUcnVlKCckKCJvcHQt
MDkiKS5zZWxlY3RlZCcpOworICAgICAgICBzaG91bGRCZVRydWUoJyQoIm9wdC0xMCIpLnNlbGVj
dGVkJyk7CisgICAgCisgICAgICAgICQoJ3BhcmVudCcpLmlubmVySFRNTCA9ICcnOworICAgICAg
ICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7Cisg
ICAgICAgIH0sIDApOworICAgIH0KK30KKworcnVuVGVzdCgpOworPC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149248</attachid>
            <date>2012-06-24 23:23:34 -0700</date>
            <delta_ts>2012-08-10 15:22:20 -0700</delta_ts>
            <desc>Patch 4</desc>
            <filename>bug-89847-20120625152333.patch</filename>
            <type>text/plain</type>
            <size>16931</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxMTI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDllMzI5NTg4OGMwNzM5Zjg5ZWQ4Yzlm
ZDA1NWM2NTlhOTY0NzMzMTUuLmNlYmRjNmU0ODc0NTAyMWQ5OTk2Y2ZmOThmNzI2OGI1ZjI4ODAz
NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDYtMjQgIEtlbnQgVGFtdXJhICA8dGtlbnRA
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIENoYW5nZSB0aGUgc2VyaWFsaXphdGlvbiBmb3JtYXQg
b2YgZm9ybSBjb250cm9sIHN0YXRlIHRvIG1ha2UgdGhlIGNvZGUgc2ltcGxlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04OTg0NworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL3RleHQvU3RyaW5nQnVp
bGRlci5oOgorICAgICAgICAoV1RGOjpTdHJpbmdCdWlsZGVyOjphcHBlbmRFc2NhcGVkKTogQWRk
ZWQuIFRoaXMgZnVuY3Rpb24gYWRkcyB0aGUKKyAgICAgICAgZXNjYXBlZCBmb3JtIG9mIHRoZSBp
bnB1dCBzdHJpbmcuIGUuZy4gaWYgc3RpcmluZz0iZm9vLGJhciIgZXNjYXBlPSdcJworICAgICAg
ICBzcGVjaWFsPScsJywgdGhlIGFwcGVuZGVkIHN0cmluZyBpcyBmb29cLGJhci4KKwogMjAxMi0w
Ni0yMiAgUGV0ZXIgQmV2ZXJsb28gIDxwZXRlckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0No
cm9taXVtXSBEaXNhYmxlIGMrKzB4IGNvbXBhdGliaWxpdHkgd2FybmluZ3MgaW4gSmF2YVNjcmlw
dENvcmUuZ3lwIHdoZW4gYnVpbGRpbmcgZm9yIEFuZHJvaWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwNzE2YWU4
OGIwZTY3NzNiMThjNjdiNDU2M2RhZTJmYTMwNjYwYmE1Li40NTY3ZDZkM2NlYzg3MmNhNGM5MmIz
MmE5NjQ0ZTI0OWU3ZDA1ZGM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDkgQEAKKzIwMTItMDYt
MjQgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIENoYW5nZSB0
aGUgc2VyaWFsaXphdGlvbiBmb3JtYXQgb2YgZm9ybSBjb250cm9sIHN0YXRlIHRvIG1ha2UgdGhl
IGNvZGUgc2ltcGxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD04OTg0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFdlIHVzZWQgbXVsdGlwbGUgc3RyaW5ncyB0byByZXByZXNlbnQgc3RhdGUgb2Ygc2luZ2xl
IGZvcm0gY29udHJvbC4gSXQKKyAgICAgICAgbWFkZSB0aGUgY29kZSBjb21wbGV4LiBXZSBjaGFu
Z2UgdGhlIHNlcmlhbGl6YXRpb24gZm9ybWF0IHNvIHRoYXQgb25lCisgICAgICAgIENTViBzdHJp
bmcgcmVwcmVzZW50cyBzdGF0ZS4KKworICAgICAgICBFeGFtcGxlcyBpbiB0aGUgb2xkIGZvcm1h
dDoKKyAgICAgICAgICAgICIwIgorICAgICAgICAgICAgIjEiLCAidmFsdWUiCisgICAgICAgICAg
ICAiMyIsICJ2YWx1ZTEiLCAidmFsdWUyLHZhbHVlMiIsICJ2YWx1ZTMiCisKKyAgICAgICAgRXhh
bXBsZXMgaW4gdGhlIG5ldyBmb3JtYXQ6CisgICAgICAgICAgICAiIgorICAgICAgICAgICAgIix2
YWx1ZSIKKyAgICAgICAgICAgICIsdmFsdWUxLHZhbHVlMlwsdmFsdWUyLHZhbHVlMyIKKworICAg
ICAgICBUZXN0OiBmYXN0L2Zvcm1zL3N0YXRlLXJlc3RvcmUtdmFyaW91cy12YWx1ZXMuaHRtbAor
CisgICAgICAgICogaHRtbC9Gb3JtQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
b3JtQ29udHJvbFN0YXRlOjpzZXJpYWxpemUpOgorICAgICAgICBHZW5lcmF0ZSBjb21tYS1zZXBh
cmF0ZWQgc3RyaW5nLgorICAgICAgICAnLCcgaW4gYSB2YWx1ZSBpcyBzZXJpYWxpemVkIGFzICJc
LCIuCisgICAgICAgIFdlIGNoYW5nZWQgdGhlIHNpZ25hdHVyZSBiZWNhdXNlIHdlIGRvbid0IG5l
ZWQgdGhlIG91dC1hcmd1bWVudC4KKyAgICAgICAgKFdlYkNvcmU6OkZvcm1Db250cm9sU3RhdGU6
OmRlc2VyaWFsaXplKToKKyAgICAgICAgUGFyc2VzIHRoZSBpbnB1dCBjb21tYS1zZXBhcmF0ZWQg
c3RyaW5nLgorICAgICAgICBXZSBjaGFuZ2VkIHRoZSBzaWduYXR1cmUgYmVjYXVzZSB3ZSBkb24n
dCBuZWVkIG11bHRpcGxlIGlucHV0IHN0cmluZ3MuCisgICAgICAgIChmb3JtU3RhdGVTaWduYXR1
cmUpOgorICAgICAgICBCdW1wIHVwIHRoZSB2ZXJzaW9uIGJlY2F1c2Ugb2YgdGhlIHJlcHJlc2Vu
dGF0aW9uIGNoYW5nZS4KKyAgICAgICAgKFdlYkNvcmU6OkZvcm1Db250cm9sbGVyOjpmb3JtRWxl
bWVudHNTdGF0ZSk6CisgICAgICAgIFRoZSBuZXcgc2VyaWFsaXplZCBmb3JtYXQgb2NjdXBpZXMg
anVzdCBvbmUgc3RyaW5nIGZvciBvbmUgY29udHJvbC4KKyAgICAgICAgLSBFeHBlY3RlZCBzaXpl
IGlzIG5vdyAzbisxLgorICAgICAgICAtIFVzZSBGb3JtQ29udHJvbFN0YXRlOjpzZXJpYWxpemUo
KS4KKyAgICAgICAgKFdlYkNvcmU6OkZvcm1Db250cm9sbGVyOjpzZXRTdGF0ZUZvck5ld0Zvcm1F
bGVtZW50cyk6CisgICAgICAgIFRoZSBuZXcgc2VyaWFsaXplZCBmb3JtYXQgb2NjdXBpZXMganVz
dCBvbmUgc3RyaW5nIGZvciBvbmUgY29udHJvbC4KKyAgICAgICAgU28gd2UgY2FuIGNoZWNrIHRo
ZSB2ZWN0b3Igc2l6ZSBiZWZvcmUgdGhlIGl0ZXJhdGlvbi4KKyAgICAgICAgKiBodG1sL0Zvcm1D
b250cm9sbGVyLmg6CisgICAgICAgIChGb3JtQ29udHJvbFN0YXRlKTogQ2hhbmdlIHRoZSBmdW5j
dGlvbiBzaWduYXR1cmVzLgorCisgICAgICAgICogaHRtbC9zaGFkb3cvQ2FsZW5kYXJQaWNrZXJF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFkZEphdmFTY3JpcHRTdHJpbmcpOiBVc2Ug
U3RyaW5nQnVpbGRlcjo6YXBwZW5kRXNjYXBlZCgpLgorCiAyMDEyLTA2LTIyICBLZW50IFRhbXVy
YSAgPHRrZW50QGNocm9taXVtLm9yZz4KIAogICAgICAgICBTZWxlY3RlZCBvcHRpb24gaXMgbm90
IHJlc3RvcmVkIGNvcnJlY3RseQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJp
bmdCdWlsZGVyLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaAppbmRleCBk
ODk2ZDE3YjE1NTFjNGRkYWJjNGRhYTNhMjcxZjE5YmZkZjBjNmEwLi5jNzNkNDYzNzJjYjU0YzBj
NjNiMzQwOWM4ZmMxNDJiZTFhMGYyM2NlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L1N0cmluZ0J1aWxkZXIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXIu
aApAQCAtMTMwLDYgKzEzMCwyMSBAQCBwdWJsaWM6CiAgICAgICAgIGFwcGVuZChzdGF0aWNfY2Fz
dDxMQ2hhcj4oYykpOwogICAgIH0KIAorICAgIHZvaWQgYXBwZW5kRXNjYXBlZChjb25zdCBTdHJp
bmcmIHN0cmluZywgVUNoYXIgZXNjYXBlLCBVQ2hhciBzcGVjaWFsKQorICAgIHsKKyAgICAgICAg
aWYgKHN0cmluZy5pc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHVuc2ln
bmVkIHJlcXVpcmVkU2l6ZSA9IGxlbmd0aCgpICsgc3RyaW5nLmxlbmd0aCgpOworICAgICAgICBp
ZiAoY2FwYWNpdHkoKSA8IHJlcXVpcmVkU2l6ZSkKKyAgICAgICAgICAgIHJlc2VydmVDYXBhY2l0
eShyZXF1aXJlZFNpemUpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc3RyaW5n
Lmxlbmd0aCgpOyArK2kpIHsKKyAgICAgICAgICAgIFVDaGFyIGNoID0gc3RyaW5nW2ldOworICAg
ICAgICAgICAgaWYgKGNoID09IGVzY2FwZSB8fCBjaCA9PSBzcGVjaWFsKQorICAgICAgICAgICAg
ICAgIGFwcGVuZChlc2NhcGUpOworICAgICAgICAgICAgYXBwZW5kKGNoKTsKKyAgICAgICAgfQor
ICAgIH0KKwogICAgIFN0cmluZyB0b1N0cmluZygpCiAgICAgewogICAgICAgICBzaHJpbmtUb0Zp
dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Db250cm9sbGVyLmNwcAppbmRleCAzMWM3NzYzNDNj
YjNjNmZmYmMxZjU1YTJlMjQyNjQ3ZDg2OTRkOWMxLi44NGY0NGVlOTQxNmRmMDhlOTg3MmIyMzA3
MzBmMTkzYmQ2ZGU4ZTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Db250
cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Db250cm9sbGVyLmNwcApA
QCAtMjIsNiArMjIsNyBAQAogI2luY2x1ZGUgIkZvcm1Db250cm9sbGVyLmgiCiAKICNpbmNsdWRl
ICJIVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlLmgiCisjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nQnVpbGRlci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTMwLDM4ICszMSw2
MSBAQCB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog
CiAvLyBTZXJpbGl6ZWQgZm9ybSBvZiBGb3JtQ29udHJvbFN0YXRlOgotLy8gICgnLCcgbWVhbnMg
c3RyaW5ncyBhcm91bmQgaXQgYXJlIHNlcGFyYXRlZCBpbiBzdGF0ZVZlY3Rvci4pCiAvLwogLy8g
U2VyaWFsaXplZENvbnRyb2xTdGF0ZSA6Oj0gU2tpcFN0YXRlIHwgUmVzdG9yZVN0YXRlCi0vLyBT
a2lwU3RhdGUgOjo9ICcwJwotLy8gUmVzdG9yZVN0YXRlIDo6PSBVbnNpZ25lZE51bWJlciwgQ29u
dHJvbFZhbHVlKwotLy8gVW5zaWduZWROdW1iZXIgOjo9IFswLTldKwotLy8gQ29udHJvbFZhbHVl
IDo6PSBhcmJpdHJhcnkgc3RyaW5nCi0vLwotLy8gUmVzdG9yZVN0YXRlIGhhcyBhIHNlcXVlbmNl
IG9mIENvbnRyb2xWYWx1ZXMuIFRoZSBsZW5ndGggb2YgdGhlCi0vLyBzZXF1ZW5jZSBpcyByZXBy
ZXNlbnRlZCBieSBVbnNpZ25lZE51bWJlci4KKy8vIFNraXBTdGF0ZSA6Oj0gJycKKy8vIFJlc3Rv
cmVTdGF0ZSA6Oj0gKCcsJyBFc2NhcGVkVmFsdWUgKSsKKy8vIEVzY2FwZWRWYWx1ZSA6Oj0gKCdc
XCcgfCAnXCwnIHwgW15cLF0pKwogCi12b2lkIEZvcm1Db250cm9sU3RhdGU6OnNlcmlhbGl6ZVRv
KFZlY3RvcjxTdHJpbmc+JiBzdGF0ZVZlY3RvcikgY29uc3QKK1N0cmluZyBGb3JtQ29udHJvbFN0
YXRlOjpzZXJpYWxpemUoKSBjb25zdAogewogICAgIEFTU0VSVCghaXNGYWlsdXJlKCkpOwotICAg
IHN0YXRlVmVjdG9yLmFwcGVuZChTdHJpbmc6Om51bWJlcihtX3ZhbHVlcy5zaXplKCkpKTsKKyAg
ICBpZiAoIW1fdmFsdWVzLnNpemUoKSkKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CisK
KyAgICBzaXplX3QgZW5vdWdoU2l6ZSA9IDA7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBt
X3ZhbHVlcy5zaXplKCk7ICsraSkKLSAgICAgICAgc3RhdGVWZWN0b3IuYXBwZW5kKG1fdmFsdWVz
W2ldLmlzTnVsbCgpID8gZW1wdHlTdHJpbmcoKSA6IG1fdmFsdWVzW2ldKTsKKyAgICAgICAgZW5v
dWdoU2l6ZSArPSAxICsgbV92YWx1ZXNbaV0ubGVuZ3RoKCkgKiAyOworICAgIFN0cmluZ0J1aWxk
ZXIgYnVpbGRlcjsKKyAgICBidWlsZGVyLnJlc2VydmVDYXBhY2l0eShlbm91Z2hTaXplKTsKKyAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fdmFsdWVzLnNpemUoKTsgKytpKSB7CisgICAgICAg
IGJ1aWxkZXIuYXBwZW5kKCcsJyk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kRXNjYXBlZChtX3Zh
bHVlc1tpXSwgJ1xcJywgJywnKTsKKyAgICB9CisgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmco
KTsKIH0KIAotRm9ybUNvbnRyb2xTdGF0ZSBGb3JtQ29udHJvbFN0YXRlOjpkZXNlcmlhbGl6ZShj
b25zdCBWZWN0b3I8U3RyaW5nPiYgc3RhdGVWZWN0b3IsIHNpemVfdCYgaW5kZXgpCitGb3JtQ29u
dHJvbFN0YXRlIEZvcm1Db250cm9sU3RhdGU6OmRlc2VyaWFsaXplKGNvbnN0IFN0cmluZyYgZXNj
YXBlZCkKIHsKLSAgICBpZiAoaW5kZXggPj0gc3RhdGVWZWN0b3Iuc2l6ZSgpKQotICAgICAgICBy
ZXR1cm4gRm9ybUNvbnRyb2xTdGF0ZShUeXBlRmFpbHVyZSk7Ci0gICAgc2l6ZV90IHZhbHVlU2l6
ZSA9IHN0YXRlVmVjdG9yW2luZGV4KytdLnRvVUludCgpOwotICAgIGlmICghdmFsdWVTaXplKQor
ICAgIGlmICghZXNjYXBlZC5sZW5ndGgoKSkKICAgICAgICAgcmV0dXJuIEZvcm1Db250cm9sU3Rh
dGUoKTsKLSAgICBpZiAoaW5kZXggKyB2YWx1ZVNpemUgPiBzdGF0ZVZlY3Rvci5zaXplKCkpCisg
ICAgaWYgKGVzY2FwZWRbMF0gIT0gJywnKQogICAgICAgICByZXR1cm4gRm9ybUNvbnRyb2xTdGF0
ZShUeXBlRmFpbHVyZSk7CisKKyAgICBzaXplX3QgdmFsdWVTaXplID0gMTsKKyAgICBmb3IgKHVu
c2lnbmVkIGkgPSAxOyBpIDwgZXNjYXBlZC5sZW5ndGgoKTsgKytpKSB7CisgICAgICAgIGlmIChl
c2NhcGVkW2ldID09ICdcXCcpIHsKKyAgICAgICAgICAgIGlmICgrK2kgPj0gZXNjYXBlZC5sZW5n
dGgoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gRm9ybUNvbnRyb2xTdGF0ZShUeXBlRmFpbHVy
ZSk7CisgICAgICAgIH0gZWxzZSBpZiAoZXNjYXBlZFtpXSA9PSAnLCcpCisgICAgICAgICAgICB2
YWx1ZVNpemUrKzsKKyAgICB9CisKICAgICBGb3JtQ29udHJvbFN0YXRlIHN0YXRlOwogICAgIHN0
YXRlLm1fdmFsdWVzLnJlc2VydmVDYXBhY2l0eSh2YWx1ZVNpemUpOwotICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgdmFsdWVTaXplOyArK2kpCi0gICAgICAgIHN0YXRlLmFwcGVuZChzdGF0ZVZl
Y3RvcltpbmRleCsrXSk7CisgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAgIGZvciAodW5z
aWduZWQgaSA9IDE7IGkgPCBlc2NhcGVkLmxlbmd0aCgpOyArK2kpIHsKKyAgICAgICAgaWYgKGVz
Y2FwZWRbaV0gPT0gJ1xcJykgeworICAgICAgICAgICAgaWYgKCsraSA+PSBlc2NhcGVkLmxlbmd0
aCgpKQorICAgICAgICAgICAgICAgIHJldHVybiBGb3JtQ29udHJvbFN0YXRlKFR5cGVGYWlsdXJl
KTsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGVzY2FwZWRbaV0pOworICAgICAgICB9IGVs
c2UgaWYgKGVzY2FwZWRbaV0gPT0gJywnKSB7CisgICAgICAgICAgICBzdGF0ZS5hcHBlbmQoYnVp
bGRlci50b1N0cmluZygpKTsKKyAgICAgICAgICAgIGJ1aWxkZXIuY2xlYXIoKTsKKyAgICAgICAg
fSBlbHNlCisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChlc2NhcGVkW2ldKTsKKyAgICB9Cisg
ICAgc3RhdGUuYXBwZW5kKGJ1aWxkZXIudG9TdHJpbmcoKSk7CiAgICAgcmV0dXJuIHN0YXRlOwog
fQogCkBAIC04MSwxNCArMTA1LDE0IEBAIHN0YXRpYyBTdHJpbmcgZm9ybVN0YXRlU2lnbmF0dXJl
KCkKICAgICAvLyBJbiB0aGUgbGVnYWN5IHZlcnNpb24gb2Ygc2VyaWFsaXplZCBzdGF0ZSwgdGhl
IGZpcnN0IGl0ZW0gd2FzIGEgbmFtZQogICAgIC8vIGF0dHJpYnV0ZSB2YWx1ZSBvZiBhIGZvcm0g
Y29udHJvbC4gVGhlIGZvbGxvd2luZyBzdHJpbmcgbGl0ZXJhbCBzaG91bGQKICAgICAvLyBjb250
YWluIHNvbWUgY2hhcmFjdGVycyB3aGljaCBhcmUgcmFyZWx5IHVzZWQgZm9yIG5hbWUgYXR0cmli
dXRlIHZhbHVlcy4KLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgc2lnbmF0dXJlLCAo
IlxuXHI/JSBXZWJLaXQgc2VyaWFsaXplZCBmb3JtIHN0YXRlIHZlcnNpb24gMyBcblxyPSYiKSk7
CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIHNpZ25hdHVyZSwgKCJcblxyPyUgV2Vi
S2l0IHNlcmlhbGl6ZWQgZm9ybSBzdGF0ZSB2ZXJzaW9uIDQgXG5ccj0mIikpOwogICAgIHJldHVy
biBzaWduYXR1cmU7CiB9CiAKIFZlY3RvcjxTdHJpbmc+IEZvcm1Db250cm9sbGVyOjpmb3JtRWxl
bWVudHNTdGF0ZSgpIGNvbnN0CiB7CiAgICAgVmVjdG9yPFN0cmluZz4gc3RhdGVWZWN0b3I7Ci0g
ICAgc3RhdGVWZWN0b3IucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShtX2Zvcm1FbGVtZW50c1dpdGhT
dGF0ZS5zaXplKCkgKiA0ICsgMSk7CisgICAgc3RhdGVWZWN0b3IucmVzZXJ2ZUluaXRpYWxDYXBh
Y2l0eShtX2Zvcm1FbGVtZW50c1dpdGhTdGF0ZS5zaXplKCkgKiAzICsgMSk7CiAgICAgc3RhdGVW
ZWN0b3IuYXBwZW5kKGZvcm1TdGF0ZVNpZ25hdHVyZSgpKTsKICAgICB0eXBlZGVmIEZvcm1FbGVt
ZW50TGlzdEhhc2hTZXQ6OmNvbnN0X2l0ZXJhdG9yIEl0ZXJhdG9yOwogICAgIEl0ZXJhdG9yIGVu
ZCA9IG1fZm9ybUVsZW1lbnRzV2l0aFN0YXRlLmVuZCgpOwpAQCAtOTgsNyArMTIyLDcgQEAgVmVj
dG9yPFN0cmluZz4gRm9ybUNvbnRyb2xsZXI6OmZvcm1FbGVtZW50c1N0YXRlKCkgY29uc3QKICAg
ICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBzdGF0ZVZlY3Rvci5hcHBlbmQoZWxlbWVudFdp
dGhTdGF0ZS0+bmFtZSgpLnN0cmluZygpKTsKICAgICAgICAgc3RhdGVWZWN0b3IuYXBwZW5kKGVs
ZW1lbnRXaXRoU3RhdGUtPmZvcm1Db250cm9sVHlwZSgpLnN0cmluZygpKTsKLSAgICAgICAgZWxl
bWVudFdpdGhTdGF0ZS0+c2F2ZUZvcm1Db250cm9sU3RhdGUoKS5zZXJpYWxpemVUbyhzdGF0ZVZl
Y3Rvcik7CisgICAgICAgIHN0YXRlVmVjdG9yLmFwcGVuZChlbGVtZW50V2l0aFN0YXRlLT5zYXZl
Rm9ybUNvbnRyb2xTdGF0ZSgpLnNlcmlhbGl6ZSgpKTsKICAgICB9CiAgICAgcmV0dXJuIHN0YXRl
VmVjdG9yOwogfQpAQCAtMTEzLDE0ICsxMzcsMTUgQEAgdm9pZCBGb3JtQ29udHJvbGxlcjo6c2V0
U3RhdGVGb3JOZXdGb3JtRWxlbWVudHMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHN0YXRlVmVjdG8K
ICAgICB0eXBlZGVmIEZvcm1FbGVtZW50U3RhdGVNYXA6Oml0ZXJhdG9yIEl0ZXJhdG9yOwogICAg
IG1fZm9ybUVsZW1lbnRzV2l0aFN0YXRlLmNsZWFyKCk7CiAKLSAgICBzaXplX3QgaSA9IDA7Ci0g
ICAgaWYgKHN0YXRlVmVjdG9yLnNpemUoKSA8IDEgfHwgc3RhdGVWZWN0b3JbaSsrXSAhPSBmb3Jt
U3RhdGVTaWduYXR1cmUoKSkKKyAgICBpZiAoc3RhdGVWZWN0b3Iuc2l6ZSgpIDwgMSB8fCBzdGF0
ZVZlY3RvclswXSAhPSBmb3JtU3RhdGVTaWduYXR1cmUoKSkKKyAgICAgICAgcmV0dXJuOworICAg
IGlmICgoc3RhdGVWZWN0b3Iuc2l6ZSgpIC0gMSkgJSAzKQogICAgICAgICByZXR1cm47CiAKLSAg
ICB3aGlsZSAoaSArIDIgPCBzdGF0ZVZlY3Rvci5zaXplKCkpIHsKLSAgICAgICAgQXRvbWljU3Ry
aW5nIG5hbWUgPSBzdGF0ZVZlY3RvcltpKytdOwotICAgICAgICBBdG9taWNTdHJpbmcgdHlwZSA9
IHN0YXRlVmVjdG9yW2krK107Ci0gICAgICAgIEZvcm1Db250cm9sU3RhdGUgc3RhdGUgPSBGb3Jt
Q29udHJvbFN0YXRlOjpkZXNlcmlhbGl6ZShzdGF0ZVZlY3RvciwgaSk7CisgICAgZm9yIChzaXpl
X3QgaSA9IDE7IGkgPCBzdGF0ZVZlY3Rvci5zaXplKCk7IGkgKz0gMykgeworICAgICAgICBBdG9t
aWNTdHJpbmcgbmFtZSA9IHN0YXRlVmVjdG9yW2ldOworICAgICAgICBBdG9taWNTdHJpbmcgdHlw
ZSA9IHN0YXRlVmVjdG9yW2kgKyAxXTsKKyAgICAgICAgRm9ybUNvbnRyb2xTdGF0ZSBzdGF0ZSA9
IEZvcm1Db250cm9sU3RhdGU6OmRlc2VyaWFsaXplKHN0YXRlVmVjdG9yW2kgKyAyXSk7CiAgICAg
ICAgIGlmICh0eXBlLmlzRW1wdHkoKSB8fCB0eXBlLmltcGwoKS0+ZmluZChpc05vdEZvcm1Db250
cm9sVHlwZUNoYXJhY3RlcikgIT0gbm90Rm91bmQgfHwgc3RhdGUuaXNGYWlsdXJlKCkpCiAgICAg
ICAgICAgICBicmVhazsKIApAQCAtMTM0LDggKzE1OSw2IEBAIHZvaWQgRm9ybUNvbnRyb2xsZXI6
OnNldFN0YXRlRm9yTmV3Rm9ybUVsZW1lbnRzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzdGF0ZVZl
Y3RvCiAgICAgICAgICAgICBtX3N0YXRlRm9yTmV3Rm9ybUVsZW1lbnRzLnNldChrZXksIHN0YXRl
TGlzdCk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgaWYgKGkgIT0gc3RhdGVWZWN0b3Iuc2l6ZSgp
KQotICAgICAgICBtX3N0YXRlRm9yTmV3Rm9ybUVsZW1lbnRzLmNsZWFyKCk7CiB9CiAKIGJvb2wg
Rm9ybUNvbnRyb2xsZXI6Omhhc1N0YXRlRm9yTmV3Rm9ybUVsZW1lbnRzKCkgY29uc3QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvRm9ybUNvbnRyb2xsZXIuaAppbmRleCBmYTU0NjNiOGFlMzc2NzQ2MDEzYWZiZmM4
OTVkYWZkNzA2ZDJmZTlhLi40ZGU1MWY1MjRiNTY1Y2UyZWFlZjQ3NWI0MjA4NmY5ZThkM2FjODkz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Db250cm9sbGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQ29udHJvbGxlci5oCkBAIC03OCw3ICs3OCw3IEBAIGNs
YXNzIEZvcm1Db250cm9sU3RhdGUgewogcHVibGljOgogICAgIEZvcm1Db250cm9sU3RhdGUoKSA6
IG1fdHlwZShUeXBlU2tpcCkgeyB9CiAgICAgZXhwbGljaXQgRm9ybUNvbnRyb2xTdGF0ZShjb25z
dCBTdHJpbmcmIHZhbHVlKSA6IG1fdHlwZShUeXBlUmVzdG9yZSkgeyBtX3ZhbHVlcy5hcHBlbmQo
dmFsdWUpOyB9Ci0gICAgc3RhdGljIEZvcm1Db250cm9sU3RhdGUgZGVzZXJpYWxpemUoY29uc3Qg
VmVjdG9yPFN0cmluZz4mIHN0YXRlVmVjdG9yLCBzaXplX3QmIGluZGV4KTsKKyAgICBzdGF0aWMg
Rm9ybUNvbnRyb2xTdGF0ZSBkZXNlcmlhbGl6ZShjb25zdCBTdHJpbmcmKTsKICAgICBGb3JtQ29u
dHJvbFN0YXRlKGNvbnN0IEZvcm1Db250cm9sU3RhdGUmIGFub3RoZXIpIDogbV90eXBlKGFub3Ro
ZXIubV90eXBlKSwgbV92YWx1ZXMoYW5vdGhlci5tX3ZhbHVlcykgeyB9CiAgICAgRm9ybUNvbnRy
b2xTdGF0ZSYgb3BlcmF0b3I9KGNvbnN0IEZvcm1Db250cm9sU3RhdGUmKTsKIApAQCAtODYsNyAr
ODYsNyBAQCBwdWJsaWM6CiAgICAgc2l6ZV90IHZhbHVlU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
dmFsdWVzLnNpemUoKTsgfQogICAgIGNvbnN0IFN0cmluZyYgb3BlcmF0b3JbXShzaXplX3QgaSkg
Y29uc3QgeyByZXR1cm4gbV92YWx1ZXNbaV07IH0KICAgICB2b2lkIGFwcGVuZChjb25zdCBTdHJp
bmcmKTsKLSAgICB2b2lkIHNlcmlhbGl6ZVRvKFZlY3RvcjxTdHJpbmc+JiBzdGF0ZVZlY3Rvcikg
Y29uc3Q7CisgICAgU3RyaW5nIHNlcmlhbGl6ZSgpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIGVu
dW0gVHlwZSB7IFR5cGVTa2lwLCBUeXBlUmVzdG9yZSwgVHlwZUZhaWx1cmUgfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NhbGVuZGFyUGlja2VyRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9DYWxlbmRhclBpY2tlckVsZW1lbnQuY3BwCmlu
ZGV4IDUzNThjY2FmN2EzZGYyZTMzYTAzZWJmMGM4ODkxMWIwYzA4ODJiYzUuLmZlMWY2NGUxM2U3
YWNhMmFjNzE0YWU2YzNmOGUyYjJlZTAwZjgwNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L0NhbGVuZGFyUGlja2VyRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvQ2FsZW5kYXJQaWNrZXJFbGVtZW50LmNwcApAQCAtMTUxLDEyICsxNTEs
NyBAQCBzdGF0aWMgdm9pZCBhZGRKYXZhU2NyaXB0U3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyLCBE
b2N1bWVudFdyaXRlciYgd3JpdGVyKQogewogICAgIGFkZExpdGVyYWwoIlwiIiwgd3JpdGVyKTsK
ICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgYnVpbGRlci5yZXNlcnZlQ2FwYWNpdHko
c3RyLmxlbmd0aCgpKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc3RyLmxlbmd0aCgp
OyArK2kpIHsKLSAgICAgICAgaWYgKHN0cltpXSA9PSAnXFwnIHx8IHN0cltpXSA9PSAnIicpCi0g
ICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnXFwnKTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQo
c3RyW2ldKTsKLSAgICB9CisgICAgYnVpbGRlci5hcHBlbmRFc2NhcGVkKHN0ciwgJ1xcJywgJyIn
KTsKICAgICBhZGRTdHJpbmcoYnVpbGRlci50b1N0cmluZygpLCB3cml0ZXIpOwogICAgIGFkZExp
dGVyYWwoIlwiIiwgd3JpdGVyKTsKIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBmNTVkMTZhNjA4OWIwNWY3ZmM2ODNjNTQx
NDQ3MDViZWFjNzc1MTRjLi5jODcxOThlMmE1MzRlYzFjNWNjYzdkZWY4YzJmYjBkZDdmN2U1MmQx
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDYtMjQgIEtlbnQgVGFtdXJhICA8dGtlbnRA
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIENoYW5nZSB0aGUgc2VyaWFsaXphdGlvbiBmb3JtYXQg
b2YgZm9ybSBjb250cm9sIHN0YXRlIHRvIG1ha2UgdGhlIGNvZGUgc2ltcGxlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04OTg0NworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9mb3Jtcy9zdGF0ZS1y
ZXN0b3JlLWJyb2tlbi1zdGF0ZS1leHBlY3RlZC50eHQ6CisgICAgICAgIEFwcGx5IHRoZSBzZXJp
YWxpemF0aW9uIGZvcm1hdCBjaGFuZ2UuCisgICAgICAgICogZmFzdC9mb3Jtcy9zdGF0ZS1yZXN0
b3JlLXZhcmlvdXMtdmFsdWVzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9m
b3Jtcy9zdGF0ZS1yZXN0b3JlLXZhcmlvdXMtdmFsdWVzLmh0bWw6IEFkZGVkLgorCiAyMDEyLTA2
LTIxICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KIAogICAgICAgICBTZWxlY3Rl
ZCBvcHRpb24gaXMgbm90IHJlc3RvcmVkIGNvcnJlY3RseQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9mb3Jtcy9zdGF0ZS1yZXN0b3JlLWJyb2tlbi1zdGF0ZS1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3N0YXRlLXJlc3RvcmUtYnJva2VuLXN0YXRlLWV4cGVjdGVk
LnR4dAppbmRleCBkOTUyZTkzZjZiMTU1NjBiMTAyOWQxOGQ3OGIwNWE0YTcyZWFjMTE1Li4yNWY2
ZGM3NzE0ODcwZjE1NjQwZTIzMDE4OGJjYjZlMjUzOTIxOWRhIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9mYXN0L2Zvcm1zL3N0YXRlLXJlc3RvcmUtYnJva2VuLXN0YXRlLWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3N0YXRlLXJlc3RvcmUtYnJva2VuLXN0YXRlLWV4
cGVjdGVkLnR4dApAQCAtMSw0ICsxLDQgQEAKLUNPTlNPTEUgTUVTU0FHRTogbGluZSA1OiBHZW5l
cmF0ZWQgc3RhdGU6IFtuYW1lMSx0ZXh0LDEsbW9kaWZpZWRdCitDT05TT0xFIE1FU1NBR0U6IGxp
bmUgNTogR2VuZXJhdGVkIHN0YXRlOiBbbmFtZTEsdGV4dCwsbW9kaWZpZWRdCiBUaGUgdmFsdWUg
d2FzIG1vZGlmaWVkIGluIHRoZSBmaXJzdCBsb2FkIG9mIHN0YXRlLXJlc3RvcmUtYnJva2VuLXN0
YXRlLTEuaHRtbCwgYnV0IGl0IHNob3VsZCBub3QgYmUgcmVzdG9yZWQgYmVjYXVzZSB0aGUgc3Rh
dGUtcmVzdG9yZS1icm9rZW4tc3RhdGUtMi5odG1sIGJyZWFrcyB0aGUgc3RhdGUuCiAKIE9uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMv
c3RhdGUtcmVzdG9yZS12YXJpb3VzLXZhbHVlcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9m
YXN0L2Zvcm1zL3N0YXRlLXJlc3RvcmUtdmFyaW91cy12YWx1ZXMtZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmFkMzY0ODIxY2MyMjA3NGJiNjA5ZDYxNGNhOTA2NGQ4MDUwY2NkOTYKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3N0YXRlLXJlc3RvcmUtdmFyaW91cy12
YWx1ZXMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTcgQEAKK1Rlc3QgaWYgc3BlY2lhbCBjaGFy
YWN0ZXJzIGFyZSBjb3JyZWN0bHkgcmVzdG9yZWQuCisKK1BBU1MgJCgib3B0LTAxIikuc2VsZWN0
ZWQgaXMgdHJ1ZQorUEFTUyAkKCJvcHQtMDIiKS5zZWxlY3RlZCBpcyB0cnVlCitQQVNTICQoIm9w
dC0wMyIpLnNlbGVjdGVkIGlzIHRydWUKK1BBU1MgJCgib3B0LTA0Iikuc2VsZWN0ZWQgaXMgdHJ1
ZQorUEFTUyAkKCJvcHQtMDUiKS5zZWxlY3RlZCBpcyB0cnVlCitQQVNTICQoIm9wdC0wNiIpLnNl
bGVjdGVkIGlzIHRydWUKK1BBU1MgJCgib3B0LTA3Iikuc2VsZWN0ZWQgaXMgdHJ1ZQorUEFTUyAk
KCJvcHQtMDgiKS5zZWxlY3RlZCBpcyB0cnVlCitQQVNTICQoIm9wdC0wOSIpLnNlbGVjdGVkIGlz
IHRydWUKK1BBU1MgJCgib3B0LTEwIikuc2VsZWN0ZWQgaXMgdHJ1ZQorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9mb3Jtcy9zdGF0ZS1yZXN0b3JlLXZhcmlvdXMtdmFsdWVzLmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L2Zvcm1zL3N0YXRlLXJlc3RvcmUtdmFyaW91cy12YWx1ZXMuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi41ZTEzN2U1MzdjOGI3NWMzN2ZiN2FmMjZkOTViMjhmNGE1ZTlhZmU5Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9zdGF0ZS1yZXN0b3JlLXZhcmlvdXMt
dmFsdWVzLmh0bWwKQEAgLTAsMCArMSw3MCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2NvbW1vbi5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxwPlRlc3QgaWYgc3BlY2lhbCBjaGFyYWN0ZXJzIGFyZSBjb3JyZWN0bHkgcmVz
dG9yZWQuPC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxpbnB1dCBpZD0iZW1wdHlP
bkZpcnN0VmlzaXQiPgorPGRpdiBpZD0icGFyZW50Ij4KKzxmb3JtIGFjdGlvbj0iZGF0YTp0ZXh0
L2h0bWwsJmx0O3NjcmlwdD5oaXN0b3J5LmJhY2soKSZsdDsvc2NyaXB0PiIgaWQ9Zm9ybTE+Cis8
c2VsZWN0IGlkPSJzZWxlY3QxIiBtdWx0aXBsZT4KKyAgPG9wdGlvbiBpZD0ib3B0LTAxIj48L29w
dGlvbj4KKyAgPG9wdGlvbiBpZD0ib3B0LTAyIj4sPC9vcHRpb24+CisgIDxvcHRpb24gaWQ9Im9w
dC0wMyI+XDwvb3B0aW9uPgorICA8b3B0aW9uIGlkPSJvcHQtMDQiPixhLDwvb3B0aW9uPgorICA8
b3B0aW9uIGlkPSJvcHQtMDUiPixcLDwvb3B0aW9uPgorICA8b3B0aW9uIGlkPSJvcHQtMDYiPixc
XCw8L29wdGlvbj4KKyAgPG9wdGlvbiBpZD0ib3B0LTA3Ij5cYVw8L29wdGlvbj4KKyAgPG9wdGlv
biBpZD0ib3B0LTA4Ij5cblw8L29wdGlvbj4KKyAgPG9wdGlvbiBpZD0ib3B0LTA5Ij5cLCxcPC9v
cHRpb24+CisgIDxvcHRpb24gaWQ9Im9wdC0xMCI+JmFtcDsmIzA7JiN4MGQ7JiN4MGE7LDwvb3B0
aW9uPgorPC9zZWxlY3Q+Cis8L2Zvcm0+Cis8L2Rpdj4KKworPHNjcmlwdD4KKy8vIE5vdGUgdGhh
dCB0aGlzIHRlc3QgZGVwZW5kcyBvbiB0aGUgZmFjdCB0aGF0IHNlbGVjdCBvcHRpb25zIGFyZSBz
dG9yZWQgYnkKKy8vIHZhbHVlIHN0cmluZ3MsIG5vdCBpbmRleGVzLgorCitqc1Rlc3RJc0FzeW5j
ID0gdHJ1ZTsKKworZnVuY3Rpb24gcnVuVGVzdCgpCit7CisgICAgdmFyIHN0YXRlID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2VtcHR5T25GaXJzdFZpc2l0Jyk7CisgICAgaWYgKCFzdGF0ZS52
YWx1ZSkgeworICAgICAgICAvLyBGaXJzdCB2aXNpdC4KKyAgICAgICAgc2V0VGltZW91dChmdW5j
dGlvbigpIHsKKyAgICAgICAgICAgIHN0YXRlLnZhbHVlID0gJ3Zpc2l0ZWQnOworICAgICAgICAg
ICAgdmFyIG9wdGlvbnMgPSAkKCdzZWxlY3QxJykub3B0aW9uczsKKyAgICAgICAgICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgb3B0aW9ucy5sZW5ndGg7ICsraSkKKyAgICAgICAgICAgICAgICBvcHRp
b25zW2ldLnNlbGVjdGVkID0gdHJ1ZTsKKyAgICAgICAgICAgICQoJ2Zvcm0xJykuc3VibWl0KCk7
CisgICAgICAgIH0sIDApOworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIFdlbnQgYmFjayB0byB0
aGlzIHBhZ2UgYWdhaW4sIGFuZCBmb3JtIHN0YXRlIHNob3VsZCBiZSByZXN0b3JlZC4KKyAgICAg
ICAgc2hvdWxkQmVUcnVlKCckKCJvcHQtMDEiKS5zZWxlY3RlZCcpOworICAgICAgICBzaG91bGRC
ZVRydWUoJyQoIm9wdC0wMiIpLnNlbGVjdGVkJyk7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgnJCgi
b3B0LTAzIikuc2VsZWN0ZWQnKTsKKyAgICAgICAgc2hvdWxkQmVUcnVlKCckKCJvcHQtMDQiKS5z
ZWxlY3RlZCcpOworICAgICAgICBzaG91bGRCZVRydWUoJyQoIm9wdC0wNSIpLnNlbGVjdGVkJyk7
CisgICAgICAgIHNob3VsZEJlVHJ1ZSgnJCgib3B0LTA2Iikuc2VsZWN0ZWQnKTsKKyAgICAgICAg
c2hvdWxkQmVUcnVlKCckKCJvcHQtMDciKS5zZWxlY3RlZCcpOworICAgICAgICBzaG91bGRCZVRy
dWUoJyQoIm9wdC0wOCIpLnNlbGVjdGVkJyk7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgnJCgib3B0
LTA5Iikuc2VsZWN0ZWQnKTsKKyAgICAgICAgc2hvdWxkQmVUcnVlKCckKCJvcHQtMTAiKS5zZWxl
Y3RlZCcpOworICAgIAorICAgICAgICAkKCdwYXJlbnQnKS5pbm5lckhUTUwgPSAnJzsKKyAgICAg
ICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwor
ICAgICAgICB9LCAwKTsKKyAgICB9Cit9CisKK3J1blRlc3QoKTsKKzwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5
Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>157818</attachid>
            <date>2012-08-10 15:22:28 -0700</date>
            <delta_ts>2012-08-10 15:29:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89847-20120810152159.patch</filename>
            <type>text/plain</type>
            <size>31493</size>
            <attacher name="Levi Weintraub">leviw</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyNTMxNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU1IEBACisyMDEyLTA4LTEwICBMZXZpIFdl
aW50cmF1YiAgPGxldml3QGNocm9taXVtLm9yZz4KKworICAgICAgICBDaGFuZ2UgdGhlIHNlcmlh
bGl6YXRpb24gZm9ybWF0IG9mIGZvcm0gY29udHJvbCBzdGF0ZSB0byBtYWtlIHRoZSBjb2RlIHNp
bXBsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODk4
NDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUg
cHJldmlvdXMgbWV0aG9kIGZvciB0cmFja2luZyBhIFJlbmRlckJsb2NrJ3Mgb3V0LW9mLWZsb3cg
cG9zaXRpb25lZCBjaGlsZHJlbiB3YXMgZXJyb3IgcHJvbmUsIHN1YmplY3QKKyAgICAgICAgdG8g
YmVjb21pbmcgaW5jb25zaXN0ZW50LCBhbmQgaW4gdGhlIGNhc2Ugb2YgcmVtb3ZlUG9zaXRpb25l
ZE9iamVjdHMsIGluZWZmaWNpZW50LiBUaGlzIHBhdGNoIGV4dHJhY3RzCisgICAgICAgIHRoZSBh
bGdvcml0aG0gdXNlZCBmb3IgcGVyY2VudCBoZWlnaCBkZXNjZW5kYW50cyBhbmQgcmUtdXNlcyBp
dCBmb3IgcG9zaXRpb25lZCBvYmplY3RzLiBUaGlzIHNhbWUgbWV0aG9kCisgICAgICAgIGNvdWxk
IGZ1cnRoZXIgYmUgcmUtdXNlZCBmb3IgZmxvYXRzLgorCisgICAgICAgIFRoaXMgY2hhbmdlIHJl
bW92ZXMgdGhlIG1fcG9zaXRpb25lZE9iamVjdHMgcG9pbnRlciwgd2hpY2ggYnJpbmdzIFJlbmRl
ckJsb2NrJ3Mgc2l6ZSBkb3duICh5YXkhKS4KKworICAgICAgICBUZXN0OiBmYXN0L2Jsb2NrL3Bv
c2l0aW9uaW5nL3JlbGF5b3V0LW5lc3RlZC1wb3NpdGlvbmVkLWVsZW1lbnRzLWNyYXNoLTIuaHRt
bAorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFNhbWVT
aXplQXNSZW5kZXJCbG9jayk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OnJlbW92ZUJsb2NrRnJvbURlc2NlbmRhbnRBbmRDb250YWluZXJNYXBzKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJsb2NrOjp+UmVuZGVyQmxvY2spOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyQmxvY2s6OmFkZE92ZXJmbG93RnJvbVBvc2l0aW9uZWRPYmplY3RzKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJsb2NrOjpsYXlvdXRCbG9ja0NoaWxkcmVuKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJsb2NrOjpsYXlvdXRQb3NpdGlvbmVkT2JqZWN0cyk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCbG9jazo6bWFya1Bvc2l0aW9uZWRPYmplY3RzRm9yTGF5b3V0KToKKyAgICAg
ICAgKFdlYkNvcmU6OmNsaXBPdXRQb3NpdGlvbmVkT2JqZWN0cyk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCbG9jazo6c2VsZWN0aW9uR2Fwcyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJC
bG9jazo6aW5zZXJ0SW50b1RyYWNrZWRSZW5kZXJlck1hcHMpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyQmxvY2s6OnJlbW92ZUZyb21UcmFja2VkUmVuZGVyZXJNYXBzKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJsb2NrOjpwb3NpdGlvbmVkT2JqZWN0cyk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCbG9jazo6aW5zZXJ0UG9zaXRpb25lZE9iamVjdCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCbG9jazo6cmVtb3ZlUG9zaXRpb25lZE9iamVjdCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCbG9jazo6cmVtb3ZlUG9zaXRpb25lZE9iamVjdHMpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyQmxvY2s6OmFkZFBlcmNlbnRIZWlnaHREZXNjZW5kYW50KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJsb2NrOjpyZW1vdmVQZXJjZW50SGVpZ2h0RGVzY2VuZGFudCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6cGVyY2VudEhlaWdodERlc2NlbmRhbnRzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpjaGVja1Bvc2l0aW9uZWRPYmplY3RzTmVlZExh
eW91dCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmg6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFJlbmRlckJsb2NrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJs
b2NrOjpoYXNQb3NpdGlvbmVkT2JqZWN0cyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJv
eC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnJlbW92ZUZsb2F0aW5nT3JQb3Np
dGlvbmVkQ2hpbGRGcm9tQmxvY2tMaXN0cyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJv
eE1vZGVsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0
Ojptb3ZlQ2hpbGRUbyk6IENoYW5naW5nIHRoZSBmaXhtZSB0byByZWZsZWN0IHRoZSBhc3N1bXB0
aW9uIHRoYXQgdGhlIGNhbGxlcgorICAgICAgICBoYXMgdGFrZW4gY2FyZSBvZiB1cGRhdGluZyB0
aGUgcG9zaXRpb25lZCByZW5kZXJlciBtYXBzIGlzIGEgZGVjaXNpb24gbm90IGEgYnVnLiBUaGUg
QVNTRVJUIHNob3VsZCBoZWxwCisgICAgICAgIGFzc3VyZSB0aGlzLgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFi
bGVTZWN0aW9uOjpsYXlvdXRSb3dzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVmlldy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3OjpzZXRGaXhlZFBvc2l0aW9uZWRPYmpl
Y3RzTmVlZExheW91dCk6CisKIDIwMTItMDgtMTAgIEFiaGlzaGVrIEFyeWEgIDxpbmZlcm5vQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBDcmFzaCBvbiBhY2Nlc3NpbmcgYSByZW1vdmVkIGxheW91
dCByb290IGluIEZyYW1lVmlldzo6c2NoZWR1bGVSZWxheW91dC4KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAkocmV2aXNpb24gMTI1MjkyKQorKysgU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzEs
NyArNzEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVz
OwogCiBzdHJ1Y3QgU2FtZVNpemVBc1JlbmRlckJsb2NrIDogcHVibGljIFJlbmRlckJveCB7Ci0g
ICAgdm9pZCogcG9pbnRlcnNbM107CisgICAgdm9pZCogcG9pbnRlcnNbMl07CiAgICAgUmVuZGVy
T2JqZWN0Q2hpbGRMaXN0IGNoaWxkcmVuOwogICAgIFJlbmRlckxpbmVCb3hMaXN0IGxpbmVCb3hl
czsKICAgICB1aW50MzJfdCBiaXRmaWVsZHM7CkBAIC05NiwxMSArOTYsMTEgQEAgc3RydWN0IFNh
bWVTaXplQXNNYXJnaW5JbmZvIHsKIHR5cGVkZWYgV1RGOjpIYXNoTWFwPGNvbnN0IFJlbmRlckJv
eCosIENvbHVtbkluZm8qPiBDb2x1bW5JbmZvTWFwOwogc3RhdGljIENvbHVtbkluZm9NYXAqIGdD
b2x1bW5JbmZvTWFwID0gMDsKIAotdHlwZWRlZiBXVEY6Okhhc2hNYXA8Y29uc3QgUmVuZGVyQmxv
Y2sqLCBIYXNoU2V0PFJlbmRlckJveCo+Kj4gUGVyY2VudEhlaWdodERlc2NlbmRhbnRzTWFwOwot
c3RhdGljIFBlcmNlbnRIZWlnaHREZXNjZW5kYW50c01hcCogZ1BlcmNlbnRIZWlnaHREZXNjZW5k
YW50c01hcCA9IDA7CitzdGF0aWMgVHJhY2tlZERlc2NlbmRhbnRzTWFwKiBnUG9zaXRpb25lZERl
c2NlbmRhbnRzTWFwID0gMDsKK3N0YXRpYyBUcmFja2VkRGVzY2VuZGFudHNNYXAqIGdQZXJjZW50
SGVpZ2h0RGVzY2VuZGFudHNNYXAgPSAwOwogCi10eXBlZGVmIFdURjo6SGFzaE1hcDxjb25zdCBS
ZW5kZXJCb3gqLCBIYXNoU2V0PFJlbmRlckJsb2NrKj4qPiBQZXJjZW50SGVpZ2h0Q29udGFpbmVy
TWFwOwotc3RhdGljIFBlcmNlbnRIZWlnaHRDb250YWluZXJNYXAqIGdQZXJjZW50SGVpZ2h0Q29u
dGFpbmVyTWFwID0gMDsKK3N0YXRpYyBUcmFja2VkQ29udGFpbmVyTWFwKiBnUG9zaXRpb25lZENv
bnRhaW5lck1hcCA9IDA7CitzdGF0aWMgVHJhY2tlZENvbnRhaW5lck1hcCogZ1BlcmNlbnRIZWln
aHRDb250YWluZXJNYXAgPSAwOwogICAgIAogdHlwZWRlZiBXVEY6Okhhc2hNYXA8UmVuZGVyQmxv
Y2sqLCBMaXN0SGFzaFNldDxSZW5kZXJJbmxpbmUqPio+IENvbnRpbnVhdGlvbk91dGxpbmVUYWJs
ZU1hcDsKIApAQCAtMTk2LDYgKzE5NiwyNiBAQCBSZW5kZXJCbG9jazo6UmVuZGVyQmxvY2soTm9k
ZSogbm9kZSkKICAgICBDT01QSUxFX0FTU0VSVChzaXplb2YoUmVuZGVyQmxvY2s6Ok1hcmdpbklu
Zm8pID09IHNpemVvZihTYW1lU2l6ZUFzTWFyZ2luSW5mbyksIE1hcmdpbkluZm9fc2hvdWxkX3N0
YXlfc21hbGwpOwogfQogCitzdGF0aWMgdm9pZCByZW1vdmVCbG9ja0Zyb21EZXNjZW5kYW50QW5k
Q29udGFpbmVyTWFwcyhSZW5kZXJCbG9jayogYmxvY2ssIFRyYWNrZWREZXNjZW5kYW50c01hcCom
IGRlc2NlbmRhbnRNYXAsIFRyYWNrZWRDb250YWluZXJNYXAqJiBjb250YWluZXJNYXApCit7Cisg
ICAgaWYgKFRyYWNrZWRSZW5kZXJlckxpc3RIYXNoU2V0KiBkZXNjZW5kYW50U2V0ID0gZGVzY2Vu
ZGFudE1hcC0+dGFrZShibG9jaykpIHsKKyAgICAgICAgVHJhY2tlZFJlbmRlcmVyTGlzdEhhc2hT
ZXQ6Oml0ZXJhdG9yIGVuZCA9IGRlc2NlbmRhbnRTZXQtPmVuZCgpOworICAgICAgICBmb3IgKFRy
YWNrZWRSZW5kZXJlckxpc3RIYXNoU2V0OjppdGVyYXRvciBkZXNjZW5kYW50ID0gZGVzY2VuZGFu
dFNldC0+YmVnaW4oKTsgZGVzY2VuZGFudCAhPSBlbmQ7ICsrZGVzY2VuZGFudCkgeworICAgICAg
ICAgICAgSGFzaFNldDxSZW5kZXJCbG9jayo+KiBjb250YWluZXJTZXQgPSBjb250YWluZXJNYXAt
PmdldCgqZGVzY2VuZGFudCk7CisgICAgICAgICAgICBBU1NFUlQoY29udGFpbmVyU2V0KTsKKyAg
ICAgICAgICAgIGlmICghY29udGFpbmVyU2V0KQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICAgICAgQVNTRVJUKGNvbnRhaW5lclNldC0+Y29udGFpbnMoYmxvY2spKTsKKyAgICAg
ICAgICAgIGNvbnRhaW5lclNldC0+cmVtb3ZlKGJsb2NrKTsKKyAgICAgICAgICAgIGlmIChjb250
YWluZXJTZXQtPmlzRW1wdHkoKSkgeworICAgICAgICAgICAgICAgIGNvbnRhaW5lck1hcC0+cmVt
b3ZlKCpkZXNjZW5kYW50KTsKKyAgICAgICAgICAgICAgICBkZWxldGUgY29udGFpbmVyU2V0Owor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGRlbGV0ZSBkZXNjZW5kYW50U2V0Owor
ICAgIH0KK30KKwogUmVuZGVyQmxvY2s6On5SZW5kZXJCbG9jaygpCiB7CiAgICAgaWYgKG1fZmxv
YXRpbmdPYmplY3RzKQpAQCAtMjA0LDI0ICsyMjQsMTAgQEAgUmVuZGVyQmxvY2s6On5SZW5kZXJC
bG9jaygpCiAgICAgaWYgKGhhc0NvbHVtbnMoKSkKICAgICAgICAgZGVsZXRlIGdDb2x1bW5JbmZv
TWFwLT50YWtlKHRoaXMpOwogCi0gICAgaWYgKGdQZXJjZW50SGVpZ2h0RGVzY2VuZGFudHNNYXAp
IHsKLSAgICAgICAgaWYgKEhhc2hTZXQ8UmVuZGVyQm94Kj4qIGRlc2NlbmRhbnRTZXQgPSBnUGVy
Y2VudEhlaWdodERlc2NlbmRhbnRzTWFwLT50YWtlKHRoaXMpKSB7Ci0gICAgICAgICAgICBIYXNo
U2V0PFJlbmRlckJveCo+OjppdGVyYXRvciBlbmQgPSBkZXNjZW5kYW50U2V0LT5lbmQoKTsKLSAg
ICAgICAgICAgIGZvciAoSGFzaFNldDxSZW5kZXJCb3gqPjo6aXRlcmF0b3IgZGVzY2VuZGFudCA9
IGRlc2NlbmRhbnRTZXQtPmJlZ2luKCk7IGRlc2NlbmRhbnQgIT0gZW5kOyArK2Rlc2NlbmRhbnQp
IHsKLSAgICAgICAgICAgICAgICBIYXNoU2V0PFJlbmRlckJsb2NrKj4qIGNvbnRhaW5lclNldCA9
IGdQZXJjZW50SGVpZ2h0Q29udGFpbmVyTWFwLT5nZXQoKmRlc2NlbmRhbnQpOwotICAgICAgICAg
ICAgICAgIEFTU0VSVChjb250YWluZXJTZXQpOwotICAgICAgICAgICAgICAgIGlmICghY29udGFp
bmVyU2V0KQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICBB
U1NFUlQoY29udGFpbmVyU2V0LT5jb250YWlucyh0aGlzKSk7Ci0gICAgICAgICAgICAgICAgY29u
dGFpbmVyU2V0LT5yZW1vdmUodGhpcyk7Ci0gICAgICAgICAgICAgICAgaWYgKGNvbnRhaW5lclNl
dC0+aXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGdQZXJjZW50SGVpZ2h0Q29udGFp
bmVyTWFwLT5yZW1vdmUoKmRlc2NlbmRhbnQpOwotICAgICAgICAgICAgICAgICAgICBkZWxldGUg
Y29udGFpbmVyU2V0OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIGRlbGV0ZSBkZXNjZW5kYW50U2V0OwotICAgICAgICB9Ci0gICAgfQorICAgIGlmIChnUGVy
Y2VudEhlaWdodERlc2NlbmRhbnRzTWFwKQorICAgICAgICByZW1vdmVCbG9ja0Zyb21EZXNjZW5k
YW50QW5kQ29udGFpbmVyTWFwcyh0aGlzLCBnUGVyY2VudEhlaWdodERlc2NlbmRhbnRzTWFwLCBn
UGVyY2VudEhlaWdodENvbnRhaW5lck1hcCk7CisgICAgaWYgKGdQb3NpdGlvbmVkRGVzY2VuZGFu
dHNNYXApCisgICAgICAgIHJlbW92ZUJsb2NrRnJvbURlc2NlbmRhbnRBbmRDb250YWluZXJNYXBz
KHRoaXMsIGdQb3NpdGlvbmVkRGVzY2VuZGFudHNNYXAsIGdQb3NpdGlvbmVkQ29udGFpbmVyTWFw
KTsKIH0KIAogdm9pZCBSZW5kZXJCbG9jazo6d2lsbEJlRGVzdHJveWVkKCkKQEAgLTE2NTQsMjAg
KzE2NjAsMjEgQEAgdm9pZCBSZW5kZXJCbG9jazo6YWRkT3ZlcmZsb3dGcm9tRmxvYXRzKAogCiB2
b2lkIFJlbmRlckJsb2NrOjphZGRPdmVyZmxvd0Zyb21Qb3NpdGlvbmVkT2JqZWN0cygpCiB7Ci0g
ICAgaWYgKCFtX3Bvc2l0aW9uZWRPYmplY3RzKQorICAgIFRyYWNrZWRSZW5kZXJlckxpc3RIYXNo
U2V0KiBwb3NpdGlvbmVkQ2hpbGRyZW4gPSBwb3NpdGlvbmVkT2JqZWN0cygpOworICAgIGlmICgh
cG9zaXRpb25lZENoaWxkcmVuKQogICAgICAgICByZXR1cm47CiAKICAgICBSZW5kZXJCb3gqIHBv
c2l0aW9uZWRPYmplY3Q7Ci0gICAgSXRlcmF0b3IgZW5kID0gbV9wb3NpdGlvbmVkT2JqZWN0cy0+
ZW5kKCk7Ci0gICAgZm9yIChJdGVyYXRvciBpdCA9IG1fcG9zaXRpb25lZE9iamVjdHMtPmJlZ2lu
KCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgIFRyYWNrZWRSZW5kZXJlckxpc3RIYXNoU2V0Ojpp
dGVyYXRvciBlbmQgPSBwb3NpdGlvbmVkQ2hpbGRyZW4tPmVuZCgpOworICAgIGZvciAoVHJhY2tl
ZFJlbmRlcmVyTGlzdEhhc2hTZXQ6Oml0ZXJhdG9yIGl0ID0gcG9zaXRpb25lZENoaWxkcmVuLT5i
ZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgcG9zaXRpb25lZE9iamVjdCA9ICpp
dDsKICAgICAgICAgCiAgICAgICAgIC8vIEZpeGVkIHBvc2l0aW9uZWQgZWxlbWVudHMgZG9uJ3Qg
Y29udHJpYnV0ZSB0byBsYXlvdXQgb3ZlcmZsb3csIHNpbmNlIHRoZXkgZG9uJ3Qgc2Nyb2xsIHdp
dGggdGhlIGNvbnRlbnQuCiAgICAgICAgIGlmIChwb3NpdGlvbmVkT2JqZWN0LT5zdHlsZSgpLT5w
b3NpdGlvbigpICE9IEZpeGVkUG9zaXRpb24pIHsKLSAgICAgICAgICAgIGludCB4ID0gcG9zaXRp
b25lZE9iamVjdC0+eCgpOworICAgICAgICAgICAgTGF5b3V0VW5pdCB4ID0gcG9zaXRpb25lZE9i
amVjdC0+eCgpOwogICAgICAgICAgICAgaWYgKHN0eWxlKCktPnNob3VsZFBsYWNlQmxvY2tEaXJl
Y3Rpb25TY3JvbGxiYXJPbkxvZ2ljYWxMZWZ0KCkpCiAgICAgICAgICAgICAgICAgeCAtPSB2ZXJ0
aWNhbFNjcm9sbGJhcldpZHRoKCk7Ci0gICAgICAgICAgICBhZGRPdmVyZmxvd0Zyb21DaGlsZChw
b3NpdGlvbmVkT2JqZWN0LCBJbnRTaXplKHgsIHBvc2l0aW9uZWRPYmplY3QtPnkoKSkpOworICAg
ICAgICAgICAgYWRkT3ZlcmZsb3dGcm9tQ2hpbGQocG9zaXRpb25lZE9iamVjdCwgTGF5b3V0U2l6
ZSh4LCBwb3NpdGlvbmVkT2JqZWN0LT55KCkpKTsKICAgICAgICAgfQogICAgIH0KIH0KQEAgLTIy
NzQsOSArMjI4MSw5IEBAIHZvaWQgUmVuZGVyQmxvY2s6OnNldExvZ2ljYWxUb3BGb3JDaGlsZCgK
IHZvaWQgUmVuZGVyQmxvY2s6OmxheW91dEJsb2NrQ2hpbGRyZW4oYm9vbCByZWxheW91dENoaWxk
cmVuLCBMYXlvdXRVbml0JiBtYXhGbG9hdExvZ2ljYWxCb3R0b20pCiB7CiAgICAgaWYgKGdQZXJj
ZW50SGVpZ2h0RGVzY2VuZGFudHNNYXApIHsKLSAgICAgICAgaWYgKEhhc2hTZXQ8UmVuZGVyQm94
Kj4qIGRlc2NlbmRhbnRzID0gZ1BlcmNlbnRIZWlnaHREZXNjZW5kYW50c01hcC0+Z2V0KHRoaXMp
KSB7Ci0gICAgICAgICAgICBIYXNoU2V0PFJlbmRlckJveCo+OjppdGVyYXRvciBlbmQgPSBkZXNj
ZW5kYW50cy0+ZW5kKCk7Ci0gICAgICAgICAgICBmb3IgKEhhc2hTZXQ8UmVuZGVyQm94Kj46Oml0
ZXJhdG9yIGl0ID0gZGVzY2VuZGFudHMtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAg
ICAgICBpZiAoVHJhY2tlZFJlbmRlcmVyTGlzdEhhc2hTZXQqIGRlc2NlbmRhbnRzID0gZ1BlcmNl
bnRIZWlnaHREZXNjZW5kYW50c01hcC0+Z2V0KHRoaXMpKSB7CisgICAgICAgICAgICBUcmFja2Vk
UmVuZGVyZXJMaXN0SGFzaFNldDo6aXRlcmF0b3IgZW5kID0gZGVzY2VuZGFudHMtPmVuZCgpOwor
ICAgICAgICAgICAgZm9yIChUcmFja2VkUmVuZGVyZXJMaXN0SGFzaFNldDo6aXRlcmF0b3IgaXQg
PSBkZXNjZW5kYW50cy0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CiAgICAgICAgICAgICAg
ICAgUmVuZGVyQm94KiBib3ggPSAqaXQ7CiAgICAgICAgICAgICAgICAgd2hpbGUgKGJveCAhPSB0
aGlzKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChib3gtPm5vcm1hbENoaWxkTmVlZHNMYXlv
dXQoKSkKQEAgLTI1NTUsMTUgKzI1NjIsMTYgQEAgYm9vbCBSZW5kZXJCbG9jazo6c2ltcGxpZmll
ZExheW91dCgpCiAKIHZvaWQgUmVuZGVyQmxvY2s6OmxheW91dFBvc2l0aW9uZWRPYmplY3RzKGJv
b2wgcmVsYXlvdXRDaGlsZHJlbikKIHsKLSAgICBpZiAoIW1fcG9zaXRpb25lZE9iamVjdHMpCisg
ICAgVHJhY2tlZFJlbmRlcmVyTGlzdEhhc2hTZXQqIHBvc2l0aW9uZWRDaGlsZHJlbiA9IHBvc2l0
aW9uZWRPYmplY3RzKCk7CisgICAgaWYgKCFwb3NpdGlvbmVkQ2hpbGRyZW4pCiAgICAgICAgIHJl
dHVybjsKICAgICAgICAgCiAgICAgaWYgKGhhc0NvbHVtbnMoKSkKICAgICAgICAgdmlldygpLT5s
YXlvdXRTdGF0ZSgpLT5jbGVhclBhZ2luYXRpb25JbmZvcm1hdGlvbigpOyAvLyBQb3NpdGlvbmVk
IG9iamVjdHMgYXJlIG5vdCBwYXJ0IG9mIHRoZSBjb2x1bW4gZmxvdywgc28gdGhleSBkb24ndCBw
YWdpbmF0ZSB3aXRoIHRoZSBjb2x1bW5zLgogCiAgICAgUmVuZGVyQm94KiByOwotICAgIEl0ZXJh
dG9yIGVuZCA9IG1fcG9zaXRpb25lZE9iamVjdHMtPmVuZCgpOwotICAgIGZvciAoSXRlcmF0b3Ig
aXQgPSBtX3Bvc2l0aW9uZWRPYmplY3RzLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAg
ICBUcmFja2VkUmVuZGVyZXJMaXN0SGFzaFNldDo6aXRlcmF0b3IgZW5kID0gcG9zaXRpb25lZENo
aWxkcmVuLT5lbmQoKTsKKyAgICBmb3IgKFRyYWNrZWRSZW5kZXJlckxpc3RIYXNoU2V0OjppdGVy
YXRvciBpdCA9IHBvc2l0aW9uZWRDaGlsZHJlbi0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7
CiAgICAgICAgIHIgPSAqaXQ7CiAgICAgICAgIC8vIFdoZW4gYSBub24tcG9zaXRpb25lZCBibG9j
ayBlbGVtZW50IG1vdmVzLCBpdCBtYXkgaGF2ZSBwb3NpdGlvbmVkIGNoaWxkcmVuIHRoYXQgYXJl
IGltcGxpY2l0bHkgcG9zaXRpb25lZCByZWxhdGl2ZSB0byB0aGUKICAgICAgICAgLy8gbm9uLXBv
c2l0aW9uZWQgYmxvY2suICBSYXRoZXIgdGhhbiB0cnlpbmcgdG8gZGV0ZWN0IGFsbCBvZiB0aGVz
ZSBtb3ZlbWVudCBjYXNlcywgd2UganVzdCBhbHdheXMgbGF5IG91dCBwb3NpdGlvbmVkCkBAIC0y
NjE5LDEwICsyNjI3LDExIEBAIHZvaWQgUmVuZGVyQmxvY2s6OmxheW91dFBvc2l0aW9uZWRPYmpl
Y3QKIAogdm9pZCBSZW5kZXJCbG9jazo6bWFya1Bvc2l0aW9uZWRPYmplY3RzRm9yTGF5b3V0KCkK
IHsKLSAgICBpZiAobV9wb3NpdGlvbmVkT2JqZWN0cykgeworICAgIFRyYWNrZWRSZW5kZXJlckxp
c3RIYXNoU2V0KiBwb3NpdGlvbmVkQ2hpbGRyZW4gPSBwb3NpdGlvbmVkT2JqZWN0cygpOworICAg
IGlmIChwb3NpdGlvbmVkQ2hpbGRyZW4pIHsKICAgICAgICAgUmVuZGVyQm94KiByOwotICAgICAg
ICBJdGVyYXRvciBlbmQgPSBtX3Bvc2l0aW9uZWRPYmplY3RzLT5lbmQoKTsKLSAgICAgICAgZm9y
IChJdGVyYXRvciBpdCA9IG1fcG9zaXRpb25lZE9iamVjdHMtPmJlZ2luKCk7IGl0ICE9IGVuZDsg
KytpdCkgeworICAgICAgICBUcmFja2VkUmVuZGVyZXJMaXN0SGFzaFNldDo6aXRlcmF0b3IgZW5k
ID0gcG9zaXRpb25lZENoaWxkcmVuLT5lbmQoKTsKKyAgICAgICAgZm9yIChUcmFja2VkUmVuZGVy
ZXJMaXN0SGFzaFNldDo6aXRlcmF0b3IgaXQgPSBwb3NpdGlvbmVkQ2hpbGRyZW4tPmJlZ2luKCk7
IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAgICAgICAgciA9ICppdDsKICAgICAgICAgICAgIHIt
PnNldENoaWxkTmVlZHNMYXlvdXQodHJ1ZSk7CiAgICAgICAgIH0KQEAgLTMyNDQsMTMgKzMyNTMs
MTMgQEAgdm9pZCBSZW5kZXJCbG9jazo6cGFpbnRTZWxlY3Rpb24oUGFpbnRJbgogICAgIH0KIH0K
IAotc3RhdGljIHZvaWQgY2xpcE91dFBvc2l0aW9uZWRPYmplY3RzKGNvbnN0IFBhaW50SW5mbyog
cGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgb2Zmc2V0LCBSZW5kZXJCbG9jazo6UG9zaXRp
b25lZE9iamVjdHNMaXN0SGFzaFNldCogcG9zaXRpb25lZE9iamVjdHMpCitzdGF0aWMgdm9pZCBj
bGlwT3V0UG9zaXRpb25lZE9iamVjdHMoY29uc3QgUGFpbnRJbmZvKiBwYWludEluZm8sIGNvbnN0
IExheW91dFBvaW50JiBvZmZzZXQsIFRyYWNrZWRSZW5kZXJlckxpc3RIYXNoU2V0KiBwb3NpdGlv
bmVkT2JqZWN0cykKIHsKICAgICBpZiAoIXBvc2l0aW9uZWRPYmplY3RzKQogICAgICAgICByZXR1
cm47CiAgICAgCi0gICAgUmVuZGVyQmxvY2s6OlBvc2l0aW9uZWRPYmplY3RzTGlzdEhhc2hTZXQ6
OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHBvc2l0aW9uZWRPYmplY3RzLT5lbmQoKTsKLSAgICBmb3Ig
KFJlbmRlckJsb2NrOjpQb3NpdGlvbmVkT2JqZWN0c0xpc3RIYXNoU2V0Ojpjb25zdF9pdGVyYXRv
ciBpdCA9IHBvc2l0aW9uZWRPYmplY3RzLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAg
ICBUcmFja2VkUmVuZGVyZXJMaXN0SGFzaFNldDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gcG9zaXRp
b25lZE9iamVjdHMtPmVuZCgpOworICAgIGZvciAoVHJhY2tlZFJlbmRlcmVyTGlzdEhhc2hTZXQ6
OmNvbnN0X2l0ZXJhdG9yIGl0ID0gcG9zaXRpb25lZE9iamVjdHMtPmJlZ2luKCk7IGl0ICE9IGVu
ZDsgKytpdCkgewogICAgICAgICBSZW5kZXJCb3gqIHIgPSAqaXQ7CiAgICAgICAgIHBhaW50SW5m
by0+Y29udGV4dC0+Y2xpcE91dChJbnRSZWN0KG9mZnNldC54KCkgKyByLT54KCksIG9mZnNldC55
KCkgKyByLT55KCksIHItPndpZHRoKCksIHItPmhlaWdodCgpKSk7CiAgICAgfQpAQCAtMzI4OCwx
MCArMzI5NywxMCBAQCBHYXBSZWN0cyBSZW5kZXJCbG9jazo6c2VsZWN0aW9uR2FwcyhSZW5kCiAg
ICAgICAgIExheW91dFJlY3QgZmxpcHBlZEJsb2NrUmVjdChvZmZzZXRGcm9tUm9vdEJsb2NrLndp
ZHRoKCksIG9mZnNldEZyb21Sb290QmxvY2suaGVpZ2h0KCksIHdpZHRoKCksIGhlaWdodCgpKTsK
ICAgICAgICAgcm9vdEJsb2NrLT5mbGlwRm9yV3JpdGluZ01vZGUoZmxpcHBlZEJsb2NrUmVjdCk7
CiAgICAgICAgIGZsaXBwZWRCbG9ja1JlY3QubW92ZUJ5KHJvb3RCbG9ja1BoeXNpY2FsUG9zaXRp
b24pOwotICAgICAgICBjbGlwT3V0UG9zaXRpb25lZE9iamVjdHMocGFpbnRJbmZvLCBmbGlwcGVk
QmxvY2tSZWN0LmxvY2F0aW9uKCksIG1fcG9zaXRpb25lZE9iamVjdHMuZ2V0KCkpOworICAgICAg
ICBjbGlwT3V0UG9zaXRpb25lZE9iamVjdHMocGFpbnRJbmZvLCBmbGlwcGVkQmxvY2tSZWN0Lmxv
Y2F0aW9uKCksIHBvc2l0aW9uZWRPYmplY3RzKCkpOwogICAgICAgICBpZiAoaXNCb2R5KCkgfHwg
aXNSb290KCkpIC8vIFRoZSA8Ym9keT4gbXVzdCBtYWtlIHN1cmUgdG8gZXhhbWluZSBpdHMgY29u
dGFpbmluZ0Jsb2NrJ3MgcG9zaXRpb25lZCBvYmplY3RzLgogICAgICAgICAgICAgZm9yIChSZW5k
ZXJCbG9jayogY2IgPSBjb250YWluaW5nQmxvY2soKTsgY2IgJiYgIWNiLT5pc1JlbmRlclZpZXco
KTsgY2IgPSBjYi0+Y29udGFpbmluZ0Jsb2NrKCkpCi0gICAgICAgICAgICAgICAgY2xpcE91dFBv
c2l0aW9uZWRPYmplY3RzKHBhaW50SW5mbywgTGF5b3V0UG9pbnQoY2ItPngoKSwgY2ItPnkoKSks
IGNiLT5tX3Bvc2l0aW9uZWRPYmplY3RzLmdldCgpKTsgLy8gRklYTUU6IE5vdCByaWdodCBmb3Ig
ZmxpcHBlZCB3cml0aW5nIG1vZGVzLgorICAgICAgICAgICAgICAgIGNsaXBPdXRQb3NpdGlvbmVk
T2JqZWN0cyhwYWludEluZm8sIExheW91dFBvaW50KGNiLT54KCksIGNiLT55KCkpLCBjYi0+cG9z
aXRpb25lZE9iamVjdHMoKSk7IC8vIEZJWE1FOiBOb3QgcmlnaHQgZm9yIGZsaXBwZWQgd3JpdGlu
ZyBtb2Rlcy4KICAgICAgICAgaWYgKG1fZmxvYXRpbmdPYmplY3RzKSB7CiAgICAgICAgICAgICBj
b25zdCBGbG9hdGluZ09iamVjdFNldCYgZmxvYXRpbmdPYmplY3RTZXQgPSBtX2Zsb2F0aW5nT2Jq
ZWN0cy0+c2V0KCk7CiAgICAgICAgICAgICBGbG9hdGluZ09iamVjdFNldEl0ZXJhdG9yIGVuZCA9
IGZsb2F0aW5nT2JqZWN0U2V0LmVuZCgpOwpAQCAtMzU4Miw2ICszNTkxLDY5IEBAIFJlbmRlckJs
b2NrKiBSZW5kZXJCbG9jazo6YmxvY2tCZWZvcmVXaXQKICAgICByZXR1cm4gYmVmb3JlQmxvY2s7
CiB9CiAKK3ZvaWQgUmVuZGVyQmxvY2s6Omluc2VydEludG9UcmFja2VkUmVuZGVyZXJNYXBzKFJl
bmRlckJveCogZGVzY2VuZGFudCwgVHJhY2tlZERlc2NlbmRhbnRzTWFwKiYgZGVzY2VuZGFudHNN
YXAsIFRyYWNrZWRDb250YWluZXJNYXAqJiBjb250YWluZXJNYXApCit7CisgICAgaWYgKCFkZXNj
ZW5kYW50c01hcCkgeworICAgICAgICBkZXNjZW5kYW50c01hcCA9IG5ldyBUcmFja2VkRGVzY2Vu
ZGFudHNNYXA7CisgICAgICAgIGNvbnRhaW5lck1hcCA9IG5ldyBUcmFja2VkQ29udGFpbmVyTWFw
OworICAgIH0KKyAgICAKKyAgICBUcmFja2VkUmVuZGVyZXJMaXN0SGFzaFNldCogZGVzY2VuZGFu
dFNldCA9IGRlc2NlbmRhbnRzTWFwLT5nZXQodGhpcyk7CisgICAgaWYgKCFkZXNjZW5kYW50U2V0
KSB7CisgICAgICAgIGRlc2NlbmRhbnRTZXQgPSBuZXcgVHJhY2tlZFJlbmRlcmVyTGlzdEhhc2hT
ZXQ7CisgICAgICAgIGRlc2NlbmRhbnRzTWFwLT5zZXQodGhpcywgZGVzY2VuZGFudFNldCk7Cisg
ICAgfQorICAgIGJvb2wgYWRkZWQgPSBkZXNjZW5kYW50U2V0LT5hZGQoZGVzY2VuZGFudCkuaXNO
ZXdFbnRyeTsKKyAgICBpZiAoIWFkZGVkKSB7CisgICAgICAgIEFTU0VSVChjb250YWluZXJNYXAt
PmdldChkZXNjZW5kYW50KSk7CisgICAgICAgIEFTU0VSVChjb250YWluZXJNYXAtPmdldChkZXNj
ZW5kYW50KS0+Y29udGFpbnModGhpcykpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAor
ICAgIEhhc2hTZXQ8UmVuZGVyQmxvY2sqPiogY29udGFpbmVyU2V0ID0gY29udGFpbmVyTWFwLT5n
ZXQoZGVzY2VuZGFudCk7CisgICAgaWYgKCFjb250YWluZXJTZXQpIHsKKyAgICAgICAgY29udGFp
bmVyU2V0ID0gbmV3IEhhc2hTZXQ8UmVuZGVyQmxvY2sqPjsKKyAgICAgICAgY29udGFpbmVyTWFw
LT5zZXQoZGVzY2VuZGFudCwgY29udGFpbmVyU2V0KTsKKyAgICB9CisgICAgQVNTRVJUKCFjb250
YWluZXJTZXQtPmNvbnRhaW5zKHRoaXMpKTsKKyAgICBjb250YWluZXJTZXQtPmFkZCh0aGlzKTsK
K30KKwordm9pZCBSZW5kZXJCbG9jazo6cmVtb3ZlRnJvbVRyYWNrZWRSZW5kZXJlck1hcHMoUmVu
ZGVyQm94KiBkZXNjZW5kYW50LCBUcmFja2VkRGVzY2VuZGFudHNNYXAqJiBkZXNjZW5kYW50c01h
cCwgVHJhY2tlZENvbnRhaW5lck1hcComIGNvbnRhaW5lck1hcCkKK3sKKyAgICBpZiAoIWRlc2Nl
bmRhbnRzTWFwKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgSGFzaFNldDxSZW5kZXJCbG9j
ayo+KiBjb250YWluZXJTZXQgPSBjb250YWluZXJNYXAtPnRha2UoZGVzY2VuZGFudCk7CisgICAg
aWYgKCFjb250YWluZXJTZXQpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBIYXNoU2V0PFJl
bmRlckJsb2NrKj46Oml0ZXJhdG9yIGVuZCA9IGNvbnRhaW5lclNldC0+ZW5kKCk7CisgICAgZm9y
IChIYXNoU2V0PFJlbmRlckJsb2NrKj46Oml0ZXJhdG9yIGl0ID0gY29udGFpbmVyU2V0LT5iZWdp
bigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgUmVuZGVyQmxvY2sqIGNvbnRhaW5lciA9
ICppdDsKKyAgICAgICAgQVNTRVJUKGRlc2NlbmRhbnQtPmlzRGVzY2VuZGFudE9mKGNvbnRhaW5l
cikpOworICAgICAgICBUcmFja2VkUmVuZGVyZXJMaXN0SGFzaFNldCogZGVzY2VuZGFudFNldCA9
IGRlc2NlbmRhbnRzTWFwLT5nZXQoY29udGFpbmVyKTsKKyAgICAgICAgQVNTRVJUKGRlc2NlbmRh
bnRTZXQpOworICAgICAgICBpZiAoIWRlc2NlbmRhbnRTZXQpCisgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgQVNTRVJUKGRlc2NlbmRhbnRTZXQtPmNvbnRhaW5zKGRlc2NlbmRhbnQpKTsK
KyAgICAgICAgZGVzY2VuZGFudFNldC0+cmVtb3ZlKGRlc2NlbmRhbnQpOworICAgICAgICBpZiAo
ZGVzY2VuZGFudFNldC0+aXNFbXB0eSgpKSB7CisgICAgICAgICAgICBkZXNjZW5kYW50c01hcC0+
cmVtb3ZlKGNvbnRhaW5lcik7CisgICAgICAgICAgICBkZWxldGUgZGVzY2VuZGFudFNldDsKKyAg
ICAgICAgfQorICAgIH0KKyAgICAKKyAgICBkZWxldGUgY29udGFpbmVyU2V0OworfQorCitUcmFj
a2VkUmVuZGVyZXJMaXN0SGFzaFNldCogUmVuZGVyQmxvY2s6OnBvc2l0aW9uZWRPYmplY3RzKCkg
Y29uc3QKK3sKKyAgICBpZiAoZ1Bvc2l0aW9uZWREZXNjZW5kYW50c01hcCkKKyAgICAgICAgcmV0
dXJuIGdQb3NpdGlvbmVkRGVzY2VuZGFudHNNYXAtPmdldCh0aGlzKTsKKyAgICByZXR1cm4gMDsK
K30KKwogdm9pZCBSZW5kZXJCbG9jazo6aW5zZXJ0UG9zaXRpb25lZE9iamVjdChSZW5kZXJCb3gq
IG8pCiB7CiAgICAgQVNTRVJUKCFpc0Fub255bW91c0Jsb2NrKCkpOwpAQCAtMzU4OSwzMSArMzY2
MSwyNyBAQCB2b2lkIFJlbmRlckJsb2NrOjppbnNlcnRQb3NpdGlvbmVkT2JqZWN0CiAgICAgaWYg
KG8tPmlzUmVuZGVyRmxvd1RocmVhZCgpKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgLy8g
Q3JlYXRlIHRoZSBsaXN0IG9mIHNwZWNpYWwgb2JqZWN0cyBpZiB3ZSBkb24ndCBhbGVhZHkgaGF2
ZSBvbmUKLSAgICBpZiAoIW1fcG9zaXRpb25lZE9iamVjdHMpCi0gICAgICAgIG1fcG9zaXRpb25l
ZE9iamVjdHMgPSBhZG9wdFB0cihuZXcgUG9zaXRpb25lZE9iamVjdHNMaXN0SGFzaFNldCk7Ci0K
LSAgICBtX3Bvc2l0aW9uZWRPYmplY3RzLT5hZGQobyk7CisgICAgaW5zZXJ0SW50b1RyYWNrZWRS
ZW5kZXJlck1hcHMobywgZ1Bvc2l0aW9uZWREZXNjZW5kYW50c01hcCwgZ1Bvc2l0aW9uZWRDb250
YWluZXJNYXApOwogfQogCiB2b2lkIFJlbmRlckJsb2NrOjpyZW1vdmVQb3NpdGlvbmVkT2JqZWN0
KFJlbmRlckJveCogbykKIHsKLSAgICBpZiAobV9wb3NpdGlvbmVkT2JqZWN0cykKLSAgICAgICAg
bV9wb3NpdGlvbmVkT2JqZWN0cy0+cmVtb3ZlKG8pOworICAgIHJlbW92ZUZyb21UcmFja2VkUmVu
ZGVyZXJNYXBzKG8sIGdQb3NpdGlvbmVkRGVzY2VuZGFudHNNYXAsIGdQb3NpdGlvbmVkQ29udGFp
bmVyTWFwKTsKIH0KIAogdm9pZCBSZW5kZXJCbG9jazo6cmVtb3ZlUG9zaXRpb25lZE9iamVjdHMo
UmVuZGVyQmxvY2sqIG8pCiB7Ci0gICAgaWYgKCFtX3Bvc2l0aW9uZWRPYmplY3RzKQorICAgIFRy
YWNrZWRSZW5kZXJlckxpc3RIYXNoU2V0KiBwb3NpdGlvbmVkRGVzY2VuZGFudHMgPSBwb3NpdGlv
bmVkT2JqZWN0cygpOworICAgIGlmICghcG9zaXRpb25lZERlc2NlbmRhbnRzKQogICAgICAgICBy
ZXR1cm47CiAgICAgCiAgICAgUmVuZGVyQm94KiByOwogICAgIAotICAgIEl0ZXJhdG9yIGVuZCA9
IG1fcG9zaXRpb25lZE9iamVjdHMtPmVuZCgpOworICAgIFRyYWNrZWRSZW5kZXJlckxpc3RIYXNo
U2V0OjppdGVyYXRvciBlbmQgPSBwb3NpdGlvbmVkRGVzY2VuZGFudHMtPmVuZCgpOwogICAgIAog
ICAgIFZlY3RvcjxSZW5kZXJCb3gqLCAxNj4gZGVhZE9iamVjdHM7CiAKLSAgICBmb3IgKEl0ZXJh
dG9yIGl0ID0gbV9wb3NpdGlvbmVkT2JqZWN0cy0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7
CisgICAgZm9yIChUcmFja2VkUmVuZGVyZXJMaXN0SGFzaFNldDo6aXRlcmF0b3IgaXQgPSBwb3Np
dGlvbmVkRGVzY2VuZGFudHMtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAgICBy
ID0gKml0OwogICAgICAgICBpZiAoIW8gfHwgci0+aXNEZXNjZW5kYW50T2YobykpIHsKICAgICAg
ICAgICAgIGlmIChvKQpAQCAtMzYzMiw3ICszNzAwLDcgQEAgdm9pZCBSZW5kZXJCbG9jazo6cmVt
b3ZlUG9zaXRpb25lZE9iamVjdAogICAgIH0KICAgICAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgZGVhZE9iamVjdHMuc2l6ZSgpOyBpKyspCi0gICAgICAgIG1fcG9zaXRpb25lZE9iamVj
dHMtPnJlbW92ZShkZWFkT2JqZWN0cy5hdChpKSk7CisgICAgICAgIHJlbW92ZVBvc2l0aW9uZWRP
YmplY3QoZGVhZE9iamVjdHMuYXQoaSkpOwogfQogCiBSZW5kZXJCbG9jazo6RmxvYXRpbmdPYmpl
Y3QqIFJlbmRlckJsb2NrOjppbnNlcnRGbG9hdGluZ09iamVjdChSZW5kZXJCb3gqIG8pCkBAIC0z
OTEwLDYwICszOTc4LDE1IEBAIHZvaWQgUmVuZGVyQmxvY2s6Om5ld0xpbmUoRUNsZWFyIGNsZWFy
KQogCiB2b2lkIFJlbmRlckJsb2NrOjphZGRQZXJjZW50SGVpZ2h0RGVzY2VuZGFudChSZW5kZXJC
b3gqIGRlc2NlbmRhbnQpCiB7Ci0gICAgaWYgKCFnUGVyY2VudEhlaWdodERlc2NlbmRhbnRzTWFw
KSB7Ci0gICAgICAgIGdQZXJjZW50SGVpZ2h0RGVzY2VuZGFudHNNYXAgPSBuZXcgUGVyY2VudEhl
aWdodERlc2NlbmRhbnRzTWFwOwotICAgICAgICBnUGVyY2VudEhlaWdodENvbnRhaW5lck1hcCA9
IG5ldyBQZXJjZW50SGVpZ2h0Q29udGFpbmVyTWFwOwotICAgIH0KLQotICAgIEhhc2hTZXQ8UmVu
ZGVyQm94Kj4qIGRlc2NlbmRhbnRTZXQgPSBnUGVyY2VudEhlaWdodERlc2NlbmRhbnRzTWFwLT5n
ZXQodGhpcyk7Ci0gICAgaWYgKCFkZXNjZW5kYW50U2V0KSB7Ci0gICAgICAgIGRlc2NlbmRhbnRT
ZXQgPSBuZXcgSGFzaFNldDxSZW5kZXJCb3gqPjsKLSAgICAgICAgZ1BlcmNlbnRIZWlnaHREZXNj
ZW5kYW50c01hcC0+c2V0KHRoaXMsIGRlc2NlbmRhbnRTZXQpOwotICAgIH0KLSAgICBib29sIGFk
ZGVkID0gZGVzY2VuZGFudFNldC0+YWRkKGRlc2NlbmRhbnQpLmlzTmV3RW50cnk7Ci0gICAgaWYg
KCFhZGRlZCkgewotICAgICAgICBBU1NFUlQoZ1BlcmNlbnRIZWlnaHRDb250YWluZXJNYXAtPmdl
dChkZXNjZW5kYW50KSk7Ci0gICAgICAgIEFTU0VSVChnUGVyY2VudEhlaWdodENvbnRhaW5lck1h
cC0+Z2V0KGRlc2NlbmRhbnQpLT5jb250YWlucyh0aGlzKSk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBIYXNoU2V0PFJlbmRlckJsb2NrKj4qIGNvbnRhaW5lclNldCA9IGdQZXJjZW50
SGVpZ2h0Q29udGFpbmVyTWFwLT5nZXQoZGVzY2VuZGFudCk7Ci0gICAgaWYgKCFjb250YWluZXJT
ZXQpIHsKLSAgICAgICAgY29udGFpbmVyU2V0ID0gbmV3IEhhc2hTZXQ8UmVuZGVyQmxvY2sqPjsK
LSAgICAgICAgZ1BlcmNlbnRIZWlnaHRDb250YWluZXJNYXAtPnNldChkZXNjZW5kYW50LCBjb250
YWluZXJTZXQpOwotICAgIH0KLSAgICBBU1NFUlQoIWNvbnRhaW5lclNldC0+Y29udGFpbnModGhp
cykpOwotICAgIGNvbnRhaW5lclNldC0+YWRkKHRoaXMpOworICAgIGluc2VydEludG9UcmFja2Vk
UmVuZGVyZXJNYXBzKGRlc2NlbmRhbnQsIGdQZXJjZW50SGVpZ2h0RGVzY2VuZGFudHNNYXAsIGdQ
ZXJjZW50SGVpZ2h0Q29udGFpbmVyTWFwKTsKIH0KIAogdm9pZCBSZW5kZXJCbG9jazo6cmVtb3Zl
UGVyY2VudEhlaWdodERlc2NlbmRhbnQoUmVuZGVyQm94KiBkZXNjZW5kYW50KQogewotICAgIGlm
ICghZ1BlcmNlbnRIZWlnaHRDb250YWluZXJNYXApCi0gICAgICAgIHJldHVybjsKLQotICAgIEhh
c2hTZXQ8UmVuZGVyQmxvY2sqPiogY29udGFpbmVyU2V0ID0gZ1BlcmNlbnRIZWlnaHRDb250YWlu
ZXJNYXAtPnRha2UoZGVzY2VuZGFudCk7Ci0gICAgaWYgKCFjb250YWluZXJTZXQpCi0gICAgICAg
IHJldHVybjsKLQotICAgIEhhc2hTZXQ8UmVuZGVyQmxvY2sqPjo6aXRlcmF0b3IgZW5kID0gY29u
dGFpbmVyU2V0LT5lbmQoKTsKLSAgICBmb3IgKEhhc2hTZXQ8UmVuZGVyQmxvY2sqPjo6aXRlcmF0
b3IgaXQgPSBjb250YWluZXJTZXQtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAg
ICBSZW5kZXJCbG9jayogY29udGFpbmVyID0gKml0OwotICAgICAgICBIYXNoU2V0PFJlbmRlckJv
eCo+KiBkZXNjZW5kYW50U2V0ID0gZ1BlcmNlbnRIZWlnaHREZXNjZW5kYW50c01hcC0+Z2V0KGNv
bnRhaW5lcik7Ci0gICAgICAgIEFTU0VSVChkZXNjZW5kYW50U2V0KTsKLSAgICAgICAgaWYgKCFk
ZXNjZW5kYW50U2V0KQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIEFTU0VSVChkZXNj
ZW5kYW50U2V0LT5jb250YWlucyhkZXNjZW5kYW50KSk7Ci0gICAgICAgIGRlc2NlbmRhbnRTZXQt
PnJlbW92ZShkZXNjZW5kYW50KTsKLSAgICAgICAgaWYgKGRlc2NlbmRhbnRTZXQtPmlzRW1wdHko
KSkgewotICAgICAgICAgICAgZ1BlcmNlbnRIZWlnaHREZXNjZW5kYW50c01hcC0+cmVtb3ZlKGNv
bnRhaW5lcik7Ci0gICAgICAgICAgICBkZWxldGUgZGVzY2VuZGFudFNldDsKLSAgICAgICAgfQot
ICAgIH0KLQotICAgIGRlbGV0ZSBjb250YWluZXJTZXQ7CisgICAgcmVtb3ZlRnJvbVRyYWNrZWRS
ZW5kZXJlck1hcHMoZGVzY2VuZGFudCwgZ1BlcmNlbnRIZWlnaHREZXNjZW5kYW50c01hcCwgZ1Bl
cmNlbnRIZWlnaHRDb250YWluZXJNYXApOwogfQogCi1IYXNoU2V0PFJlbmRlckJveCo+KiBSZW5k
ZXJCbG9jazo6cGVyY2VudEhlaWdodERlc2NlbmRhbnRzKCkgY29uc3QKK1RyYWNrZWRSZW5kZXJl
ckxpc3RIYXNoU2V0KiBSZW5kZXJCbG9jazo6cGVyY2VudEhlaWdodERlc2NlbmRhbnRzKCkgY29u
c3QKIHsKICAgICByZXR1cm4gZ1BlcmNlbnRIZWlnaHREZXNjZW5kYW50c01hcCA/IGdQZXJjZW50
SGVpZ2h0RGVzY2VuZGFudHNNYXAtPmdldCh0aGlzKSA6IDA7CiB9CkBAIC03NDI0LDkgKzc0NDcs
MTIgQEAgUmVuZGVyQmxvY2sqIFJlbmRlckJsb2NrOjpjcmVhdGVBbm9ueW1vdQogI2lmbmRlZiBO
REVCVUcKIHZvaWQgUmVuZGVyQmxvY2s6OmNoZWNrUG9zaXRpb25lZE9iamVjdHNOZWVkTGF5b3V0
KCkKIHsKLSAgICBpZiAoUG9zaXRpb25lZE9iamVjdHNMaXN0SGFzaFNldCogcG9zaXRpb25lZE9i
amVjdHMgPSB0aGlzLT5wb3NpdGlvbmVkT2JqZWN0cygpKSB7Ci0gICAgICAgIFBvc2l0aW9uZWRP
YmplY3RzTGlzdEhhc2hTZXQ6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHBvc2l0aW9uZWRPYmplY3Rz
LT5lbmQoKTsKLSAgICAgICAgZm9yIChQb3NpdGlvbmVkT2JqZWN0c0xpc3RIYXNoU2V0Ojpjb25z
dF9pdGVyYXRvciBpdCA9IHBvc2l0aW9uZWRPYmplY3RzLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsr
aXQpIHsKKyAgICBpZiAoIWdQb3NpdGlvbmVkRGVzY2VuZGFudHNNYXApCisgICAgICAgIHJldHVy
bjsKKworICAgIGlmIChUcmFja2VkUmVuZGVyZXJMaXN0SGFzaFNldCogcG9zaXRpb25lZERlc2Nl
bmRhbnRTZXQgPSBnUG9zaXRpb25lZERlc2NlbmRhbnRzTWFwLT5nZXQodGhpcykpIHsKKyAgICAg
ICAgVHJhY2tlZFJlbmRlcmVyTGlzdEhhc2hTZXQ6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHBvc2l0
aW9uZWREZXNjZW5kYW50U2V0LT5lbmQoKTsKKyAgICAgICAgZm9yIChUcmFja2VkUmVuZGVyZXJM
aXN0SGFzaFNldDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBwb3NpdGlvbmVkRGVzY2VuZGFudFNldC0+
YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CiAgICAgICAgICAgICBSZW5kZXJCb3gqIGN1cnJC
b3ggPSAqaXQ7CiAgICAgICAgICAgICBBU1NFUlQoIWN1cnJCb3gtPm5lZWRzTGF5b3V0KCkpOwog
ICAgICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAkocmV2
aXNpb24gMTI1MjkyKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTU0LDYgKzU0LDkgQEAgdGVtcGxhdGUgPGNsYXNzIFJ1bj4gY2xh
c3MgQmlkaVJ1bkxpc3Q7CiB0ZW1wbGF0ZSA8Y2xhc3MgSXRlcmF0b3I+IHN0cnVjdCBNaWRwb2lu
dFN0YXRlOwogdHlwZWRlZiBCaWRpUmVzb2x2ZXI8SW5saW5lSXRlcmF0b3IsIEJpZGlSdW4+IElu
bGluZUJpZGlSZXNvbHZlcjsKIHR5cGVkZWYgTWlkcG9pbnRTdGF0ZTxJbmxpbmVJdGVyYXRvcj4g
TGluZU1pZHBvaW50U3RhdGU7Cit0eXBlZGVmIFdURjo6TGlzdEhhc2hTZXQ8UmVuZGVyQm94Kj4g
VHJhY2tlZFJlbmRlcmVyTGlzdEhhc2hTZXQ7Cit0eXBlZGVmIFdURjo6SGFzaE1hcDxjb25zdCBS
ZW5kZXJCbG9jayosIFRyYWNrZWRSZW5kZXJlckxpc3RIYXNoU2V0Kj4gVHJhY2tlZERlc2NlbmRh
bnRzTWFwOwordHlwZWRlZiBXVEY6Okhhc2hNYXA8Y29uc3QgUmVuZGVyQm94KiwgSGFzaFNldDxS
ZW5kZXJCbG9jayo+Kj4gVHJhY2tlZENvbnRhaW5lck1hcDsKIAogZW51bSBDYXJldFR5cGUgeyBD
dXJzb3JDYXJldCwgRHJhZ0NhcmV0IH07CiAKQEAgLTk5LDE2ICsxMDIsMTkgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBsYXlvdXRCbG9jayhib29sIHJlbGF5b3V0Q2hpbGRyZW4sIExheW91
dFVuaXQgcGFnZUxvZ2ljYWxIZWlnaHQgPSAwKTsKIAogICAgIHZvaWQgaW5zZXJ0UG9zaXRpb25l
ZE9iamVjdChSZW5kZXJCb3gqKTsKLSAgICB2b2lkIHJlbW92ZVBvc2l0aW9uZWRPYmplY3QoUmVu
ZGVyQm94Kik7CisgICAgc3RhdGljIHZvaWQgcmVtb3ZlUG9zaXRpb25lZE9iamVjdChSZW5kZXJC
b3gqKTsKICAgICB2b2lkIHJlbW92ZVBvc2l0aW9uZWRPYmplY3RzKFJlbmRlckJsb2NrKik7CiAK
LSAgICB0eXBlZGVmIExpc3RIYXNoU2V0PFJlbmRlckJveCosIDQ+IFBvc2l0aW9uZWRPYmplY3Rz
TGlzdEhhc2hTZXQ7Ci0gICAgUG9zaXRpb25lZE9iamVjdHNMaXN0SGFzaFNldCogcG9zaXRpb25l
ZE9iamVjdHMoKSBjb25zdCB7IHJldHVybiBtX3Bvc2l0aW9uZWRPYmplY3RzLmdldCgpOyB9Ci0g
ICAgYm9vbCBoYXNQb3NpdGlvbmVkT2JqZWN0cygpIGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRpb25l
ZE9iamVjdHMgJiYgIW1fcG9zaXRpb25lZE9iamVjdHMtPmlzRW1wdHkoKTsgfQorICAgIFRyYWNr
ZWRSZW5kZXJlckxpc3RIYXNoU2V0KiBwb3NpdGlvbmVkT2JqZWN0cygpIGNvbnN0OworICAgIGJv
b2wgaGFzUG9zaXRpb25lZE9iamVjdHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgVHJhY2tlZFJl
bmRlcmVyTGlzdEhhc2hTZXQqIG9iamVjdHMgPSBwb3NpdGlvbmVkT2JqZWN0cygpOworICAgICAg
ICByZXR1cm4gb2JqZWN0cyAmJiAhb2JqZWN0cy0+aXNFbXB0eSgpOworICAgIH0KIAogICAgIHZv
aWQgYWRkUGVyY2VudEhlaWdodERlc2NlbmRhbnQoUmVuZGVyQm94Kik7CiAgICAgc3RhdGljIHZv
aWQgcmVtb3ZlUGVyY2VudEhlaWdodERlc2NlbmRhbnQoUmVuZGVyQm94Kik7Ci0gICAgSGFzaFNl
dDxSZW5kZXJCb3gqPiogcGVyY2VudEhlaWdodERlc2NlbmRhbnRzKCkgY29uc3Q7CisgICAgVHJh
Y2tlZFJlbmRlcmVyTGlzdEhhc2hTZXQqIHBlcmNlbnRIZWlnaHREZXNjZW5kYW50cygpIGNvbnN0
OwogICAgIHN0YXRpYyBib29sIGhhc1BlcmNlbnRIZWlnaHRDb250YWluZXJNYXAoKTsKICAgICBz
dGF0aWMgYm9vbCBoYXNQZXJjZW50SGVpZ2h0RGVzY2VuZGFudChSZW5kZXJCb3gqKTsKICAgICBz
dGF0aWMgdm9pZCBjbGVhclBlcmNlbnRIZWlnaHREZXNjZW5kYW50c0Zyb20oUmVuZGVyQm94Kik7
CkBAIC01MTAsNiArNTE2LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIGxheW91dElubGluZUNoaWxk
cmVuKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCYgcmVwYWludExvZ2ljYWxUb3As
IExheW91dFVuaXQmIHJlcGFpbnRMb2dpY2FsQm90dG9tKTsKICAgICBCaWRpUnVuKiBoYW5kbGVU
cmFpbGluZ1NwYWNlcyhCaWRpUnVuTGlzdDxCaWRpUnVuPiYsIEJpZGlDb250ZXh0Kik7CiAKKyAg
ICB2b2lkIGluc2VydEludG9UcmFja2VkUmVuZGVyZXJNYXBzKFJlbmRlckJveCogZGVzY2VuZGFu
dCwgVHJhY2tlZERlc2NlbmRhbnRzTWFwKiYsIFRyYWNrZWRDb250YWluZXJNYXAqJik7CisgICAg
c3RhdGljIHZvaWQgcmVtb3ZlRnJvbVRyYWNrZWRSZW5kZXJlck1hcHMoUmVuZGVyQm94KiBkZXNj
ZW5kYW50LCBUcmFja2VkRGVzY2VuZGFudHNNYXAqJiwgVHJhY2tlZENvbnRhaW5lck1hcComKTsK
KwogICAgIHZpcnR1YWwgdm9pZCBib3JkZXJGaXRBZGp1c3QoTGF5b3V0UmVjdCYpIGNvbnN0OyAv
LyBTaHJpbmsgdGhlIGJveCBpbiB3aGljaCB0aGUgYm9yZGVyIHBhaW50cyBpZiBib3JkZXItZml0
IGlzIHNldC4KIAogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVCZWZvcmVBZnRlckNvbnRlbnQoUHNl
dWRvSWQpOwpAQCAtMTA2OCw5ICsxMDc3LDYgQEAgcHJvdGVjdGVkOgogICAgICAgICBjb25zdCBS
ZW5kZXJCbG9jayogbV9yZW5kZXJlcjsKICAgICB9OwogICAgIE93blB0cjxGbG9hdGluZ09iamVj
dHM+IG1fZmxvYXRpbmdPYmplY3RzOwotICAgIAotICAgIHR5cGVkZWYgUG9zaXRpb25lZE9iamVj
dHNMaXN0SGFzaFNldDo6Y29uc3RfaXRlcmF0b3IgSXRlcmF0b3I7Ci0gICAgT3duUHRyPFBvc2l0
aW9uZWRPYmplY3RzTGlzdEhhc2hTZXQ+IG1fcG9zaXRpb25lZE9iamVjdHM7CiAKICAgICAvLyBB
bGxvY2F0ZWQgb25seSB3aGVuIHNvbWUgb2YgdGhlc2UgZmllbGRzIGhhdmUgbm9uLWRlZmF1bHQg
dmFsdWVzCiAgICAgc3RydWN0IFJlbmRlckJsb2NrUmFyZURhdGEgewpJbmRleDogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAJKHJldmlzaW9uIDEyNTI5MikKKysrIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzUsMTIg
KzE3NSw4IEBAIHZvaWQgUmVuZGVyQm94OjpyZW1vdmVGbG9hdGluZ09yUG9zaXRpb24KICAgICAg
ICAgfQogICAgIH0KIAotICAgIGlmIChpc091dE9mRmxvd1Bvc2l0aW9uZWQoKSkgewotICAgICAg
ICBmb3IgKFJlbmRlck9iamVjdCogY3VyciA9IHBhcmVudCgpOyBjdXJyOyBjdXJyID0gY3Vyci0+
cGFyZW50KCkpIHsKLSAgICAgICAgICAgIGlmIChjdXJyLT5pc1JlbmRlckJsb2NrKCkpCi0gICAg
ICAgICAgICAgICAgdG9SZW5kZXJCbG9jayhjdXJyKS0+cmVtb3ZlUG9zaXRpb25lZE9iamVjdCh0
aGlzKTsKLSAgICAgICAgfQotICAgIH0KKyAgICBpZiAoaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkp
CisgICAgICAgIFJlbmRlckJsb2NrOjpyZW1vdmVQb3NpdGlvbmVkT2JqZWN0KHRoaXMpOwogfQog
CiB2b2lkIFJlbmRlckJveDo6c3R5bGVXaWxsQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBj
b25zdCBSZW5kZXJTdHlsZSogbmV3U3R5bGUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAJKHJldmlzaW9uIDEyNTI5MikKKysr
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI3NDksOSArMjc0OSw4IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6
Om1hcEFic29sdXRlVG8KIAogdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6bW92ZUNoaWxkVG8o
UmVuZGVyQm94TW9kZWxPYmplY3QqIHRvQm94TW9kZWxPYmplY3QsIFJlbmRlck9iamVjdCogY2hp
bGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQsIGJvb2wgZnVsbFJlbW92ZUluc2VydCkKIHsK
LSAgICAvLyBGSVhNRTogV2UgbmVlZCBhIHBlcmZvcm1hbnQgd2F5IHRvIGhhbmRsZSBjbGVhcmlu
ZyBwb3NpdGlvbmVkIG9iamVjdHMgZnJvbSBvdXIgbGlzdCB0aGF0IGFyZQotICAgIC8vIGluIHxj
aGlsZHwncyBzdWJ0cmVlIHNvIHdlIGNvdWxkIGp1c3QgY2xlYXIgdGhlbSBoZXJlLiBCZWNhdXNl
IG9mIHRoaXMsIHdlIGFzc3VtZSB0aGF0IGNhbGxlcnMKLSAgICAvLyBoYXZlIGNsZWFyZWQgdGhl
aXIgcG9zaXRpb25lZCBvYmplY3RzIGxpc3QgZm9yIGNoaWxkIG1vdmVzICghZnVsbFJlbW92ZUlu
c2VydCkgdG8gYXZvaWQgYW55IGJhZG5lc3MuCisgICAgLy8gV2UgYXNzdW1lIHRoYXQgY2FsbGVy
cyBoYXZlIGNsZWFyZWQgdGhlaXIgcG9zaXRpb25lZCBvYmplY3RzIGxpc3QgZm9yIGNoaWxkIG1v
dmVzICghZnVsbFJlbW92ZUluc2VydCkgc28gdGhlCisgICAgLy8gcG9zaXRpb25lZCByZW5kZXJl
ciBtYXBzIGRvbid0IGJlY29tZSBzdGFsZS4gSXQgd291bGQgYmUgdG9vIHNsb3cgdG8gZG8gdGhl
IG1hcCBsb29rdXAgb24gZWFjaCBjYWxsLgogICAgIEFTU0VSVCghZnVsbFJlbW92ZUluc2VydCB8
fCAhaXNSZW5kZXJCbG9jaygpIHx8ICF0b1JlbmRlckJsb2NrKHRoaXMpLT5oYXNQb3NpdGlvbmVk
T2JqZWN0cygpKTsKIAogICAgIEFTU0VSVCh0aGlzID09IGNoaWxkLT5wYXJlbnQoKSk7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcAko
cmV2aXNpb24gMTI1MjkyKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxl
U2VjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU4Nyw5ICs1ODcsOSBAQCB2b2lkIFJlbmRl
clRhYmxlU2VjdGlvbjo6bGF5b3V0Um93cygpCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgfQogCi0gICAgICAgICAgICBpZiAoSGFzaFNldDxSZW5kZXJCb3gqPiogcGVyY2VudEhlaWdo
dERlc2NlbmRhbnRzID0gY2VsbC0+cGVyY2VudEhlaWdodERlc2NlbmRhbnRzKCkpIHsKLSAgICAg
ICAgICAgICAgICBIYXNoU2V0PFJlbmRlckJveCo+OjppdGVyYXRvciBlbmQgPSBwZXJjZW50SGVp
Z2h0RGVzY2VuZGFudHMtPmVuZCgpOwotICAgICAgICAgICAgICAgIGZvciAoSGFzaFNldDxSZW5k
ZXJCb3gqPjo6aXRlcmF0b3IgaXQgPSBwZXJjZW50SGVpZ2h0RGVzY2VuZGFudHMtPmJlZ2luKCk7
IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICAgICAgaWYgKExpc3RIYXNoU2V0PFJlbmRlckJv
eCo+KiBwZXJjZW50SGVpZ2h0RGVzY2VuZGFudHMgPSBjZWxsLT5wZXJjZW50SGVpZ2h0RGVzY2Vu
ZGFudHMoKSkgeworICAgICAgICAgICAgICAgIExpc3RIYXNoU2V0PFJlbmRlckJveCo+OjppdGVy
YXRvciBlbmQgPSBwZXJjZW50SGVpZ2h0RGVzY2VuZGFudHMtPmVuZCgpOworICAgICAgICAgICAg
ICAgIGZvciAoTGlzdEhhc2hTZXQ8UmVuZGVyQm94Kj46Oml0ZXJhdG9yIGl0ID0gcGVyY2VudEhl
aWdodERlc2NlbmRhbnRzLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgICAg
ICAgICAgICAgUmVuZGVyQm94KiBib3ggPSAqaXQ7CiAgICAgICAgICAgICAgICAgICAgIGlmICgh
Ym94LT5pc1JlcGxhY2VkKCkgJiYgIWJveC0+c2Nyb2xsc092ZXJmbG93KCkgJiYgIWZsZXhBbGxD
aGlsZHJlbikKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpJbmRleDogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAkocmV2aXNpb24gMTI1MjkyKQorKysgU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05
NjEsMTIgKzk2MSwxMiBAQCB2b2lkIFJlbmRlclZpZXc6OnNldEZpeGVkUG9zaXRpb25lZE9iamVj
CiB7CiAgICAgQVNTRVJUKG1fZnJhbWVWaWV3KTsKIAotICAgIFBvc2l0aW9uZWRPYmplY3RzTGlz
dEhhc2hTZXQqIHBvc2l0aW9uZWRPYmplY3RzID0gdGhpcy0+cG9zaXRpb25lZE9iamVjdHMoKTsK
KyAgICBMaXN0SGFzaFNldDxSZW5kZXJCb3gqPiogcG9zaXRpb25lZE9iamVjdHMgPSB0aGlzLT5w
b3NpdGlvbmVkT2JqZWN0cygpOwogICAgIGlmICghcG9zaXRpb25lZE9iamVjdHMpCiAgICAgICAg
IHJldHVybjsKIAotICAgIFBvc2l0aW9uZWRPYmplY3RzTGlzdEhhc2hTZXQ6OmNvbnN0X2l0ZXJh
dG9yIGVuZCA9IHBvc2l0aW9uZWRPYmplY3RzLT5lbmQoKTsKLSAgICBmb3IgKFBvc2l0aW9uZWRP
YmplY3RzTGlzdEhhc2hTZXQ6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gcG9zaXRpb25lZE9iamVjdHMt
PmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgIExpc3RIYXNoU2V0PFJlbmRlckJveCo+
Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBwb3NpdGlvbmVkT2JqZWN0cy0+ZW5kKCk7CisgICAgZm9y
IChMaXN0SGFzaFNldDxSZW5kZXJCb3gqPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBwb3NpdGlvbmVk
T2JqZWN0cy0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CiAgICAgICAgIFJlbmRlckJveCog
Y3VyckJveCA9ICppdDsKICAgICAgICAgY3VyckJveC0+c2V0TmVlZHNMYXlvdXQodHJ1ZSk7CiAg
ICAgfQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTI1MzE3KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMDgtMTAgIExldmkgV2VpbnRy
YXViICA8bGV2aXdAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFRyYWNrIGJsb2NrJ3MgcG9zaXRp
b25lZCBvYmplY3RzIGxpa2UgcGVyY2VudC1oZWlnaHQgY2hpbGRyZW4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg5ODQ4CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkaW5nIGFub3RoZXIgdGVzdCB0byBj
b25maXJtIHRoYXQgUmVuZGVyQmxvY2sncyBwb3NpdGlvbmVkIGNoaWxkcmVuIGxpc3RzIGRvbid0
IGJlY29tZQorICAgICAgICBpbmNvbnNpc3RlbnQuCisKKyAgICAgICAgKiBmYXN0L2Jsb2NrL3Bv
c2l0aW9uaW5nL3JlbGF5b3V0LW5lc3RlZC1wb3NpdGlvbmVkLWVsZW1lbnRzLWNyYXNoLTItZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Jsb2NrL3Bvc2l0aW9uaW5nL3JlbGF5
b3V0LW5lc3RlZC1wb3NpdGlvbmVkLWVsZW1lbnRzLWNyYXNoLTIuaHRtbDogQWRkZWQuCisKIDIw
MTItMDgtMTAgIFphbiBEb2JlcnNlayAgPHphbmRvYmVyc2VrQGdtYWlsLmNvbT4KIAogICAgICAg
ICBVbnJldmlld2VkIEdUSyBnYXJkZW5pbmcuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Jsb2Nr
L3Bvc2l0aW9uaW5nL3JlbGF5b3V0LW5lc3RlZC1wb3NpdGlvbmVkLWVsZW1lbnRzLWNyYXNoLTIt
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvYmxvY2svcG9zaXRp
b25pbmcvcmVsYXlvdXQtbmVzdGVkLXBvc2l0aW9uZWQtZWxlbWVudHMtY3Jhc2gtMi1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Jsb2NrL3Bvc2l0aW9uaW5n
L3JlbGF5b3V0LW5lc3RlZC1wb3NpdGlvbmVkLWVsZW1lbnRzLWNyYXNoLTItZXhwZWN0ZWQudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMyBAQAorVGVzdHMgdGhhdCBsaXN0cyBpbiB0aGUg
cmVuZGVyaW5nIHRyZWUgdGhhdCB0cmFjayBwb3NpdGlvbmVkIG9iamVjdHMgYXJlIGtlcHQgcHJv
cGVybHkgdXAtdG8tZGF0ZSB0aHJvdWdoIHJlLWxheW91dC4gCitQQVNTLiBXZWJLaXQgZGlkbid0
IGNyYXNoLgorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Jsb2NrL3Bvc2l0aW9uaW5nL3JlbGF5
b3V0LW5lc3RlZC1wb3NpdGlvbmVkLWVsZW1lbnRzLWNyYXNoLTIuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2Jsb2NrL3Bvc2l0aW9uaW5nL3JlbGF5b3V0LW5lc3RlZC1wb3Np
dGlvbmVkLWVsZW1lbnRzLWNyYXNoLTIuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2Zhc3QvYmxvY2svcG9zaXRpb25pbmcvcmVsYXlvdXQtbmVzdGVkLXBvc2l0aW9uZWQtZWxlbWVu
dHMtY3Jhc2gtMi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDggQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8c3R5bGU+CisuZml4ZWRQb3NpdGlvbiB7IHBvc2l0aW9uOiBmaXhl
ZDsgfQorLnJ1bkluOm50aC1sYXN0LW9mLXR5cGUoMm4rMSkgeyBkaXNwbGF5OiBydW4taW47IH0K
Ky50cmFuc2Zvcm1lZCB7IGZsb2F0OiBub25lOyAtd2Via2l0LXRyYW5zZm9ybTogc2tld1goNDVk
ZWcpOyB9CisuZmxvYXRMYXN0Q2hpbGQ6bGFzdC1jaGlsZCB7IGRpc3BsYXk6IGlubGluZS1ibG9j
azsgZmxvYXQ6IGxlZnQ7fQorPC9zdHlsZT4KKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5u
ZXIpIHsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB0ZXN0UnVubmVyLmR1
bXBBc1RleHQoKTsKK30KK3ZhciB0YWJsZUVsZW1lbnQsIGxpRWxlbWVudCwgZm9ybUVsZW1lbnQs
IGJ1dHRvbkVsZW1lbnQsIGZpZWxkc2V0RWxlbWVudCwgbGFiZWxFbGVtZW50LCBpbnNFbGVtZW50
OworZnVuY3Rpb24gY3Jhc2goKSB7Cit0cnkgeyB0YWJsZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCd0YWJsZScpOyB9IGNhdGNoKGUpIHt9Cit0cnkgeyB0YWJsZUVsZW1lbnQuc2V0
QXR0cmlidXRlKCdjbGFzcycsICdydW5JbicpOyB9IGNhdGNoKGUpIHt9Cit0cnkgeyBkb2N1bWVu
dC5kb2N1bWVudEVsZW1lbnQuYXBwZW5kQ2hpbGQodGFibGVFbGVtZW50KTsgfSBjYXRjaChlKSB7
fQordHJ5IHsgbGlFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGknKTsgfSBjYXRj
aChlKSB7fQordHJ5IHsgbGlFbGVtZW50LnNldEF0dHJpYnV0ZSgnY2xhc3MnLCAndHJhbnNmb3Jt
ZWQnKTsgfSBjYXRjaChlKSB7fQordHJ5IHsgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmFwcGVu
ZENoaWxkKGxpRWxlbWVudCk7IH0gY2F0Y2goZSkge30KK3RyeSB7IGZvcm1FbGVtZW50ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnZm9ybScpOyB9IGNhdGNoKGUpIHt9Cit0cnkgeyBmb3JtRWxl
bWVudC5zZXRBdHRyaWJ1dGUoJ2NsYXNzJywgJ2Zsb2F0TGFzdENoaWxkJyk7IH0gY2F0Y2goZSkg
e30KK3RyeSB7IGJ1dHRvbkVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdidXR0b24n
KTsgfSBjYXRjaChlKSB7fQordHJ5IHsgYnV0dG9uRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2NsYXNz
JywgJ2Zsb2F0TGFzdENoaWxkJyk7IH0gY2F0Y2goZSkge30KK3RyeSB7IHRhYmxlRWxlbWVudC5h
cHBlbmRDaGlsZChidXR0b25FbGVtZW50KTsgfSBjYXRjaChlKSB7fQordHJ5IHsgZmllbGRzZXRF
bGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZmllbGRzZXQnKTsgfSBjYXRjaChlKSB7
fQordHJ5IHsgbGFiZWxFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGFiZWwnKTsg
fSBjYXRjaChlKSB7fQordHJ5IHsgaW5zRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J2lucycpOyB9IGNhdGNoKGUpIHt9Cit0cnkgeyBpbnNFbGVtZW50LnNldEF0dHJpYnV0ZSgnY2xh
c3MnLCAnZml4ZWRQb3NpdGlvbicpOyB9IGNhdGNoKGUpIHt9CitzZXRUaW1lb3V0KCd0cnkgeyB0
YWJsZUVsZW1lbnQuYXBwZW5kQ2hpbGQoZm9ybUVsZW1lbnQpOyB9IGNhdGNoKGUpIHt9JywgMTQp
Oworc2V0VGltZW91dCgndHJ5IHsgYnV0dG9uRWxlbWVudC5hcHBlbmRDaGlsZChpbnNFbGVtZW50
KTsgfSBjYXRjaChlKSB7fScsIDI2NSk7CitzZXRUaW1lb3V0KCd0cnkgeyBsaUVsZW1lbnQuYXBw
ZW5kQ2hpbGQoZmllbGRzZXRFbGVtZW50KTsgfSBjYXRjaChlKSB7fScsIDM0MSk7CitzZXRUaW1l
b3V0KCd0cnkgeyBsYWJlbEVsZW1lbnQuYXBwZW5kQ2hpbGQoZm9ybUVsZW1lbnQpOyB9IGNhdGNo
KGUpIHt9JywgMzY0KTsKK30KK2Z1bmN0aW9uIHJlbW92ZUNvbnRlbnQoKSB7CisgICAgZG9jdW1l
bnQuYm9keS5pbm5lckhUTUwgPSAiVGVzdHMgdGhhdCBsaXN0cyBpbiB0aGUgcmVuZGVyaW5nIHRy
ZWUgdGhhdCB0cmFjayBwb3NpdGlvbmVkIG9iamVjdHMgYXJlIGtlcHQgcHJvcGVybHkgdXAtdG8t
ZGF0ZSB0aHJvdWdoIHJlLWxheW91dC4gPGJyIC8+XAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFBBU1MuIFdlYktpdCBkaWRuJ3QgY3Jhc2guIjsKKyAgICBpZiAod2luZG93LnRlc3RS
dW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpCit9CisKK3dpbmRvdy5hZGRF
dmVudExpc3RlbmVyKCdsb2FkJywgcmVtb3ZlQ29udGVudCwgZmFsc2UpOworZG9jdW1lbnQuYWRk
RXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGNyYXNoLCBmYWxzZSk7Cis8L3Njcmlw
dD4KKzxib2R5PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>