<?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>27941</bug_id>
          
          <creation_ts>2009-08-03 07:53:07 -0700</creation_ts>
          <short_desc>HTMLInputElement of type range is not controllable by assistive technologies</short_desc>
          <delta_ts>2009-08-03 13:43:25 -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>Accessibility</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Carlson">eric.carlson</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          <cc>bdakin</cc>
    
    <cc>darin</cc>
    
    <cc>eric</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>136630</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2009-08-03 07:53:07 -0700</bug_when>
    <thetext>&lt;input type=range&gt; should be identified as a slider and should be controllable by platform assistive technology.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>136633</commentid>
    <comment_count>1</comment_count>
      <attachid>33976</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2009-08-03 08:17:41 -0700</bug_when>
    <thetext>Created attachment 33976
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>136662</commentid>
    <comment_count>2</comment_count>
      <attachid>33976</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-03 09:42:41 -0700</bug_when>
    <thetext>Comment on attachment 33976
proposed patch

Seems this should be in some sort of method on HTMLInputElement instead:
8     // Fire change event manually, as RenderSlider::setValueForPosition does.
 109     input-&gt;dispatchFormControlChangeEvent();

Null check needed?
ntRect AccessibilitySliderThumb::elementRect() const
 139 {
 140     IntRect intRect = static_cast&lt;RenderSlider*&gt;(m_parentSlider-&gt;renderer())-&gt;thumbRect();
 141     FloatQuad floatQuad = m_parentSlider-&gt;renderer()-&gt;localToAbsoluteQuad(FloatRect(intRect));
 142 

Eventually we should write a helper to do this:
 296     thumbRect.setWidth(thumb-&gt;style()-&gt;width().calcMinValue(contentWidth()));
 297     thumbRect.setHeight(thumb-&gt;style()-&gt;height().calcMinValue(contentHeight()));
 I feel like we do that often all over the code. :)

Same is true with the centering algorithms you use in the next line.  :)  (Not for this patch, just noting that eventually we&apos;ll need more Rect/Point math code.)

I find AccessibilityUIElement.h is a confusing name for this DRT-only class.

It&apos;s sad that everyone replicates the js-testing harness in their tests. :(  You know about fast/js/resources/, TEMPLATE.html, and make-js-tests right?

In general this looks fine though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>136680</commentid>
    <comment_count>3</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2009-08-03 10:08:40 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/46720</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>136751</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-03 13:00:33 -0700</bug_when>
    <thetext>I was slightly surprised to see no response to my comments. ;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>136761</commentid>
    <comment_count>5</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2009-08-03 13:37:20 -0700</bug_when>
    <thetext>Oh, I took the final line in your comment literally, sorry.

For completeness: I added the NULL check, and I did not know about TEMPLATE.html or make-js-tests (but do now, thanks!).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>136764</commentid>
    <comment_count>6</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-03 13:43:25 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Oh, I took the final line in your comment literally, sorry.

It was definitely intended literarily!  So you took it as intended. :)

&gt; For completeness: I added the NULL check, and I did not know about
&gt; TEMPLATE.html or make-js-tests (but do now, thanks!).

Excellent.  Mostly I wanted to hear that you had added the null check when landing.  Thanks!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>33976</attachid>
            <date>2009-08-03 08:17:41 -0700</date>
            <delta_ts>2009-08-03 09:42:40 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>slider_patch_4.txt</filename>
            <type>text/plain</type>
            <size>40334</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NjcxNykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsODEgQEAKKzIwMDktMDgtMDMgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBh
cHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgSFRNTElucHV0RWxlbWVudCBpcyBub3QgY29udHJvbGxhYmxlIGJ5IGFzc2lzdGl2ZSB0ZWNo
bm9sb2dpZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTI3OTQxCisKKyAgICAgICAgVGVzdDogYWNjZXNzaWJpbGl0eS9pbnB1dC1zbGlkZXIuaHRtbAor
CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAg
ICAgQWRkIEFjY2Vzc2liaWxpdHlTbGlkZXIuY3BwLy5oCisKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L0FYT2JqZWN0Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6
Z2V0T3JDcmVhdGUpOgorICAgICAgICAgICAgQ3JlYXRlIEFjY2Vzc2liaWxpdHlTbGlkZXIgYW5k
IEFjY2Vzc2liaWxpdHlTbGlkZXJUaHVtYi4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU9iamVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVj
dDo6aW5jcmVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmRl
Y3JlbWVudCk6CisgICAgICAgICAgICBBZGQgZGVmYXVsdCwgZG8gbm90aGluZywgYmFzZSBjbGFz
cyBtZXRob2RzLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6
OmNhblNldEZvY3VzQXR0cmlidXRlKToKKyAgICAgICAgICAgIENvcnJlY3QgdHlwby4KKworICAg
ICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNsaWRlci5jcHA6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVNsaWRlcjo6QWNjZXNzaWJpbGl0eVNsaWRlcik6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2xpZGVyOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVNsaWRlcjo6Y2hpbGRyZW4pOgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eVNsaWRlcjo6YWRkQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eVNsaWRlcjo6Z2V0QXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlTbGlkZXI6OnZhbHVlRm9yUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eVNsaWRlcjo6bWF4VmFsdWVGb3JSYW5nZSk6CisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5U2xpZGVyOjptaW5WYWx1ZUZvclJhbmdlKToKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlTbGlkZXI6OmNoYW5nZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlTbGlkZXI6OnNldFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlTbGlkZXI6OmluY3JlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5U2xpZGVyOjpkZWNyZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVNs
aWRlcjo6ZWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2xpZGVyVGh1
bWI6OkFjY2Vzc2liaWxpdHlTbGlkZXJUaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5U2xpZGVyVGh1bWI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5U2xpZGVyVGh1bWI6OmVsZW1lbnRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlTbGlkZXJUaHVtYjo6c2l6ZSk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5U2xpZGVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVNs
aWRlcjo6fkFjY2Vzc2liaWxpdHlTbGlkZXIpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eVNsaWRlcjo6cm9sZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlT
bGlkZXI6OmFjY2Vzc2liaWxpdHlJc0lnbm9yZWQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eVNsaWRlcjo6aXNTbGlkZXIpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eVNsaWRlcjo6Y2FuU2V0VmFsdWVBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eVNsaWRlclRodW1iOjp+QWNjZXNzaWJpbGl0eVNsaWRlclRodW1iKToKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTbGlkZXJUaHVtYjo6cm9sZVZhbHVlKToKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTbGlkZXJUaHVtYjo6YWNjZXNzaWJpbGl0eUlzSWdub3Jl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2xpZGVyVGh1bWI6OnNldFBhcmVu
dE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2xpZGVyVGh1bWI6OnBh
cmVudE9iamVjdCk6CisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L21hYy9BY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlci5tbToKKyAgICAgICAgKFJvbGVFbnRyeTo6KToKKyAgICAgICAgICAgIFNs
aWRlclRodW1iUm9sZSAtPiBOU0FjY2Vzc2liaWxpdHlWYWx1ZUluZGljYXRvclJvbGUKKyAgICAg
ICAgKC1bQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgcm9sZURlc2NyaXB0aW9uXSk6CisgICAg
ICAgICAgICBSZXR1cm4gcm9sZSBkZXNjcmlwdGlvbiBmb3IgTlNBY2Nlc3NpYmlsaXR5U2xpZGVy
Um9sZSBhbmQgTlNBY2Nlc3NpYmlsaXR5VmFsdWVJbmRpY2F0b3JSb2xlLgorICAgICAgICAoLVtB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6XSk6
CisgICAgICAgICAgICBNaW5vciBjb2Rpbmcgc3R5bGUgY29ycmVjdGlvbi4KKyAgICAgICAgKC1b
QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eVBlcmZvcm1QcmVzc0FjdGlv
bl0pOgorICAgICAgICAgICAgSWYgYXR0YWNoZW1lbnQgdmlldyBoYW5kbGVzIHByZXNzIGFjdGlv
biwgZG9uJ3QgYWxzbyBjYWxsIG9iamVjdCB3cmFwcGVyLgorICAgICAgICAoLVtBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5UGVyZm9ybUluY3JlbWVudEFjdGlvbl0pOgor
ICAgICAgICAgICAgTmV3LCBjYWxsIG9iamVjdCdzIGluY3JlbWVudCgpIG1ldGhvZC4KKyAgICAg
ICAgKC1bQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eVBlcmZvcm1EZWNy
ZW1lbnRBY3Rpb25dKToKKyAgICAgICAgICAgIE5ldywgY2FsbCBvYmplY3QncyBkZWNyZW1lbnQo
KSBtZXRob2QuCisgICAgICAgICgtW0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2li
aWxpdHlQZXJmb3JtQWN0aW9uOl0pOgorICAgICAgICAgICAgUmVzcG9uZCB0byBOU0FjY2Vzc2li
aWxpdHlJbmNyZW1lbnRBY3Rpb24gYW5kIE5TQWNjZXNzaWJpbGl0eURlY3JlbWVudEFjdGlvbi4K
KworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTbGlkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyU2xpZGVyOjp0aHVtYlJlY3QpOgorICAgICAgICAgICAgRmFjdG9yIGxvZ2ljIG91
dCBvZiBsYXlvdXQgc28gQWNjZXNzaWJpbGl0eVNsaWRlclRodW1iIGNhbiBnZXQgdGh1bWIgbG9j
YXRpb24vc2l6ZS4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNsaWRlcjo6bGF5b3V0KToKKyAg
ICAgICAgICAgIE1vdmUgY29kZSB0byB0aHVtYlJlY3QoKS4KKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyU2xpZGVyLmg6CisKIDIwMDktMDgtMDIgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0
Lm9yZz4KICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCiAKSW5kZXg6IFdlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA0NjcxNikKKysrIFdl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBA
IC0zNSw2ICszNSw4IEBACiAJCTA2NkM3NzMxMEFCNjAzRkQwMDIzOENDNCAvKiBSZW5kZXJGaWxl
VXBsb2FkQ29udHJvbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMDY2Qzc3MkYwQUI2MDNGRDAwMjM4Q0M0IC8qIFJlbmRlckZpbGVVcGxvYWRDb250cm9s
LmggKi87IH07CiAJCTA2RTgxRUQ3MEFCNUQ1RTkwMEM4NzgzNyAvKiBMb2NhbEN1cnJlbnRHcmFw
aGljc0NvbnRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDA2RTgxRUQ2MEFCNUQ1RTkwMEM4NzgzNyAvKiBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRl
eHQuaCAqLzsgfTsKIAkJMDZFODFFRUMwQUI1REE5NzAwQzg3ODM3IC8qIExvY2FsQ3VycmVudEdy
YXBoaWNzQ29udGV4dC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDA2RTgxRUVCMEFCNURBOTcwMEM4NzgzNyAvKiBMb2NhbEN1cnJlbnRHcmFwaGljc0Nv
bnRleHQubW0gKi87IH07CisJCTA3MDlGQzRDMTAyNURFRDgwMDU5Q0RCQSAvKiBBY2Nlc3NpYmls
aXR5U2xpZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDA3MDlGQzRCMTAyNURFRDgwMDU5Q0RCQSAvKiBBY2Nlc3NpYmlsaXR5U2xpZGVyLmNwcCAq
LzsgfTsKKwkJMDcwOUZDNEUxMDI1REVFMzAwNTlDREJBIC8qIEFjY2Vzc2liaWxpdHlTbGlkZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MDlGQzRE
MTAyNURFRTMwMDU5Q0RCQSAvKiBBY2Nlc3NpYmlsaXR5U2xpZGVyLmggKi87IH07CiAJCTA3MzVF
RTZBMEY0MEM1RTQwMDRBMjYwNCAvKiBNZWRpYVBsYXllclByb3h5LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzM1RUU2OTBGNDBDNUU0MDA0QTI2MDQg
LyogTWVkaWFQbGF5ZXJQcm94eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTA4MDA4MTk2MEVEM0IyREQwMEM1M0JDMCAvKiBXTUxBbmNob3JFbGVt
ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4
MDA4MTk0MEVEM0IyREQwMEM1M0JDMCAvKiBXTUxBbmNob3JFbGVtZW50LmNwcCAqLzsgfTsKIAkJ
MDgwMDgxOTcwRUQzQjJERDAwQzUzQkMwIC8qIFdNTEFuY2hvckVsZW1lbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4MDA4MTk1MEVEM0IyREQwMEM1
M0JDMCAvKiBXTUxBbmNob3JFbGVtZW50LmggKi87IH07CkBAIC00OTczLDYgKzQ5NzUsOCBAQAog
CQkwNjZDNzcyRjBBQjYwM0ZEMDAyMzhDQzQgLyogUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlckZpbGVVcGxvYWRDb250cm9s
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA2RTgxRUQ2MEFCNUQ1RTkwMEM4Nzgz
NyAvKiBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTA2RTgxRUVCMEFCNURBOTcwMEM4NzgzNyAvKiBMb2NhbEN1cnJlbnRH
cmFwaGljc0NvbnRleHQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkwNzA5RkM0QjEwMjVERUQ4MDA1OUNEQkEgLyogQWNjZXNzaWJpbGl0eVNsaWRlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBY2Nlc3NpYmlsaXR5U2xp
ZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDcwOUZDNEQxMDI1REVFMzAw
NTlDREJBIC8qIEFjY2Vzc2liaWxpdHlTbGlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQWNjZXNzaWJpbGl0eVNsaWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwNzBERDhGNTBGMDE4NjgwMDA3MjdERUIgLyogbWVkaWFDb250cm9scy5jc3MgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gbWVkaWFDb250cm9scy5jc3M7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTA3MzVFRTY5MEY0MEM1RTQwMDRBMjYwNCAvKiBNZWRpYVBsYXllclByb3h5Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhUGxheWVyUHJveHkuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc5RjVFNEIwRjNCRUJFQTAwNUUwNzgyIC8qIE1l
ZGlhUGxheWVyUHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRp
YVBsYXllclByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTk5MTQsNiAr
OTkxOCw4IEBACiAJCQkJMjlBODEyMTgwRkJCOUMxRDAwNTEwMjkzIC8qIEFjY2Vzc2liaWxpdHlP
YmplY3QuaCAqLywKIAkJCQkyOUE4MTIwODBGQkI5QzFEMDA1MTAyOTMgLyogQWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdC5jcHAgKi8sCiAJCQkJMjlBODEyMUIwRkJCOUMxRDAwNTEwMjkzIC8qIEFj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaCAqLywKKwkJCQkwNzA5RkM0QjEwMjVERUQ4MDA1OUNE
QkEgLyogQWNjZXNzaWJpbGl0eVNsaWRlci5jcHAgKi8sCisJCQkJMDcwOUZDNEQxMDI1REVFMzAw
NTlDREJBIC8qIEFjY2Vzc2liaWxpdHlTbGlkZXIuaCAqLywKIAkJCQkyOUE4MTIwOTBGQkI5QzFE
MDA1MTAyOTMgLyogQWNjZXNzaWJpbGl0eVRhYmxlLmNwcCAqLywKIAkJCQkyOUE4MTIwRDBGQkI5
QzFEMDA1MTAyOTMgLyogQWNjZXNzaWJpbGl0eVRhYmxlLmggKi8sCiAJCQkJMjlBODEyMEMwRkJC
OUMxRDAwNTEwMjkzIC8qIEFjY2Vzc2liaWxpdHlUYWJsZUNlbGwuY3BwICovLApAQCAtMTcwNzcs
NiArMTcwODMsNyBAQAogCQkJCTI0RjU0RUFEMTAxRkU5MTQwMDBBRTc0MSAvKiBBcHBsaWNhdGlv
bkNhY2hlSG9zdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFBM0Q1OEYxMDFDMTUyRDAwMzE2RDA3
IC8qIERlZGljYXRlZFdvcmtlclRocmVhZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0EyNDU4N0Mx
MDIxRUFGNDAwMEEwMEFBIC8qIEluc3BlY3RvckRPTUFnZW50LmggaW4gSGVhZGVycyAqLywKKwkJ
CQkwNzA5RkM0RTEwMjVERUUzMDA1OUNEQkEgLyogQWNjZXNzaWJpbGl0eVNsaWRlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9
IDA7CiAJCX07CkBAIC0xOTEyMSw2ICsxOTEyOCw3IEBACiAJCQkJMjRGNTRFQUMxMDFGRTkxNDAw
MEFFNzQxIC8qIEFwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQx
QTNENThFMTAxQzE1MkQwMDMxNkQwNyAvKiBEZWRpY2F0ZWRXb3JrZXJUaHJlYWQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJN0EyNDU4N0IxMDIxRUFGNDAwMEEwMEFBIC8qIEluc3BlY3RvckRPTUFn
ZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTA3MDlGQzRDMTAyNURFRDgwMDU5Q0RCQSAvKiBB
Y2Nlc3NpYmlsaXR5U2xpZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlG
b3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAkocmV2aXNpb24gNDY3MTYpCisrKyBXZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3
LDcgQEAKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbi5oIgogI2luY2x1ZGUg
IkFjY2Vzc2liaWxpdHlJbWFnZU1hcExpbmsuaCIKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0LmgiCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVNsaWRlci5oIgogI2luY2x1ZGUg
IkFjY2Vzc2liaWxpdHlUYWJsZS5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlUYWJsZUNlbGwu
aCIKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4uaCIKQEAgLTEyNiw2ICsxMjcs
MTAgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQVhPYmplY3RDYWNoZTo6Z2V0TwogICAgICAgICBl
bHNlIGlmIChyZW5kZXJlci0+aXNUYWJsZUNlbGwoKSkKICAgICAgICAgICAgIG5ld09iaiA9IEFj
Y2Vzc2liaWxpdHlUYWJsZUNlbGw6OmNyZWF0ZShyZW5kZXJlcik7CiAKKyAgICAgICAgLy8gaW5w
dXQgdHlwZT1yYW5nZQorICAgICAgICBlbHNlIGlmIChyZW5kZXJlci0+aXNTbGlkZXIoKSkKKyAg
ICAgICAgICAgIG5ld09iaiA9IEFjY2Vzc2liaWxpdHlTbGlkZXI6OmNyZWF0ZShyZW5kZXJlcik7
CisKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbmV3T2JqID0gQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdDo6Y3JlYXRlKHJlbmRlcmVyKTsKICAgICAgICAgCkBAIC0xNTgsNyArMTYzLDEwIEBA
IEFjY2Vzc2liaWxpdHlPYmplY3QqIEFYT2JqZWN0Q2FjaGU6OmdldE8KICAgICAgICAgICAgIGJy
ZWFrOyAgICAgICAgICAgIAogICAgICAgICBjYXNlIFRhYmxlSGVhZGVyQ29udGFpbmVyUm9sZToK
ICAgICAgICAgICAgIG9iaiA9IEFjY2Vzc2liaWxpdHlUYWJsZUhlYWRlckNvbnRhaW5lcjo6Y3Jl
YXRlKCk7Ci0gICAgICAgICAgICBicmVhazsgICAgICAgICAgICAKKyAgICAgICAgICAgIGJyZWFr
OyAgIAorICAgICAgICBjYXNlIFNsaWRlclRodW1iUm9sZToKKyAgICAgICAgICAgIG9iaiA9IEFj
Y2Vzc2liaWxpdHlTbGlkZXJUaHVtYjo6Y3JlYXRlKCk7CisgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIG9iaiA9IDA7CiAgICAgfQpJbmRleDogV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCShyZXZpc2lvbiA0NjcxNikK
KysrIFdlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTE1NSw3ICsxNTUsOCBAQCBlbnVtIEFjY2Vzc2liaWxpdHlSb2xlIHsKICAgICBU
YWJsZUhlYWRlckNvbnRhaW5lclJvbGUsCiAgICAgRGVmaW5pdGlvbkxpc3RUZXJtUm9sZSwKICAg
ICBEZWZpbml0aW9uTGlzdERlZmluaXRpb25Sb2xlLAotICAgIEFubm90YXRpb25Sb2xlCisgICAg
QW5ub3RhdGlvblJvbGUsCisgICAgU2xpZGVyVGh1bWJSb2xlCiB9OwogCiBzdHJ1Y3QgVmlzaWJs
ZVBvc2l0aW9uUmFuZ2UgewpAQCAtMzMzLDcgKzMzNCwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIG1ha2VSYW5nZVZpc2libGUoY29uc3QgUGxhaW5UZXh0UmFuZ2UmKSB7IH0KICAgICB2
aXJ0dWFsIGJvb2wgcHJlc3MoKSBjb25zdDsKICAgICBib29sIHBlcmZvcm1EZWZhdWx0QWN0aW9u
KCkgY29uc3QgeyByZXR1cm4gcHJlc3MoKTsgfQotICAgIAorCisgICAgdmlydHVhbCB2b2lkIGlu
Y3JlbWVudCgpIHsgfTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVjcmVtZW50KCkgeyB9OworCiAgICAg
dmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdlZCgpIHsgfQogICAgIHZpcnR1YWwgY29uc3QgQWNj
ZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiBjaGlsZHJlbigpIHsgcmV0dXJuIG1fY2hpbGRyZW47
IH0KICAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGRyZW4oKSB7IH0KSW5kZXg6IFdlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAJKHJldmlz
aW9uIDQ2NzE2KQorKysgV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOTMsNyArMjkzLDcgQEAgYm9vbCBBY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0Ojppc1NsaWRlcgogewogICAgIHJldHVybiByb2xlVmFsdWUoKSA9
PSBTbGlkZXJSb2xlOwogfQotICAgIAorCiBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6
OmlzTWVudVJlbGF0ZWQoKSBjb25zdAogewogICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGUgPSBy
b2xlVmFsdWUoKTsKQEAgLTIzNjYsNyArMjM2Niw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdDo6Y2FuU2V0Rm8KICAgICBOb2RlKiBub2RlID0gbV9yZW5kZXJlci0+bm9kZSgpOwog
CiAgICAgLy8gTk9URTogSXQgd291bGQgYmUgbW9yZSBhY2N1cmF0ZSB0byBhc2sgdGhlIGRvY3Vt
ZW50IHdoZXRoZXIgc2V0Rm9jdXNlZE5vZGUoKSB3b3VsZAotICAgIC8vIGRvIGFueXRoaW5nLiAg
Rm9yIGV4YW1wbGUsIGl0IHNldEZvY3VzZWROb2RlKCkgd2lsbCBkbyBub3RoaW5nIGlmIHRoZSBj
dXJyZW50IGZvY3VzZWQKKyAgICAvLyBkbyBhbnl0aGluZy4gIEZvciBleGFtcGxlLCBzZXRGb2N1
c2VkTm9kZSgpIHdpbGwgZG8gbm90aGluZyBpZiB0aGUgY3VycmVudCBmb2N1c2VkCiAgICAgLy8g
bm9kZSB3aWxsIG5vdCByZWxpbnF1aXNoIHRoZSBmb2N1cy4KICAgICBpZiAoIW5vZGUgfHwgIW5v
ZGUtPmlzRWxlbWVudE5vZGUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpJbmRleDogV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTbGlkZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2xpZGVyLmNwcAkocmV2aXNpb24gMCkK
KysrIFdlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2xpZGVyLmNwcAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwxNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRo
ZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFt
ZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICog
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJB
Y2Nlc3NpYmlsaXR5U2xpZGVyLmgiCisKKyNpbmNsdWRlICJBWE9iamVjdENhY2hlLmgiCisjaW5j
bHVkZSAiSFRNTElucHV0RWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1
ZGUgIlJlbmRlck9iamVjdC5oIgorI2luY2x1ZGUgIlJlbmRlclNsaWRlci5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisgICAgCit1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOworCitBY2Nlc3Np
YmlsaXR5U2xpZGVyOjpBY2Nlc3NpYmlsaXR5U2xpZGVyKFJlbmRlck9iamVjdCogcmVuZGVyZXIp
CisgICAgOiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0KHJlbmRlcmVyKQoreworfQorCitQYXNz
UmVmUHRyPEFjY2Vzc2liaWxpdHlTbGlkZXI+IEFjY2Vzc2liaWxpdHlTbGlkZXI6OmNyZWF0ZShS
ZW5kZXJPYmplY3QqIHJlbmRlcmVyKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgQWNjZXNz
aWJpbGl0eVNsaWRlcihyZW5kZXJlcikpOworfQorCitjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0
OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIEFjY2Vzc2liaWxpdHlTbGlkZXI6OmNoaWxk
cmVuKCkKK3sKKyAgICBpZiAoIW1faGF2ZUNoaWxkcmVuKQorICAgICAgICBhZGRDaGlsZHJlbigp
OworICAgIHJldHVybiBtX2NoaWxkcmVuOworfQorCit2b2lkIEFjY2Vzc2liaWxpdHlTbGlkZXI6
OmFkZENoaWxkcmVuKCkKK3sKKyAgICBBU1NFUlQoIW1faGF2ZUNoaWxkcmVuKTsgCisgICAgCisg
ICAgbV9oYXZlQ2hpbGRyZW4gPSB0cnVlOworCisgICAgQWNjZXNzaWJpbGl0eVNsaWRlclRodW1i
KiB0aHVtYiA9IHN0YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlTbGlkZXJUaHVtYio+KG1fcmVuZGVy
ZXItPmRvY3VtZW50KCktPmF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUoU2xpZGVyVGh1bWJS
b2xlKSk7CisgICAgdGh1bWItPnNldFBhcmVudE9iamVjdCh0aGlzKTsKKyAgICBtX2NoaWxkcmVu
LmFwcGVuZCh0aHVtYik7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgQWNjZXNzaWJpbGl0eVNs
aWRlcjo6Z2V0QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZSkgY29uc3QK
K3sKKyAgICByZXR1cm4gZWxlbWVudCgpLT5nZXRBdHRyaWJ1dGUoYXR0cmlidXRlKTsKK30KKwor
ZmxvYXQgQWNjZXNzaWJpbGl0eVNsaWRlcjo6dmFsdWVGb3JSYW5nZSgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIGVsZW1lbnQoKS0+dmFsdWUoKS50b0Zsb2F0KCk7Cit9CisKK2Zsb2F0IEFjY2Vzc2li
aWxpdHlTbGlkZXI6Om1heFZhbHVlRm9yUmFuZ2UoKSBjb25zdAoreworICAgIHJldHVybiBnZXRB
dHRyaWJ1dGUobWF4QXR0cikudG9GbG9hdCgpOworfQorCitmbG9hdCBBY2Nlc3NpYmlsaXR5U2xp
ZGVyOjptaW5WYWx1ZUZvclJhbmdlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZ2V0QXR0cmlidXRl
KG1pbkF0dHIpLnRvRmxvYXQoKTsKK30KKwordm9pZCBBY2Nlc3NpYmlsaXR5U2xpZGVyOjpjaGFu
Z2VWYWx1ZShmbG9hdCBwZXJjZW50Q2hhbmdlKQoreworICAgIGZsb2F0IHJhbmdlID0gbWF4VmFs
dWVGb3JSYW5nZSgpIC0gbWluVmFsdWVGb3JSYW5nZSgpOworICAgIGZsb2F0IHZhbHVlID0gdmFs
dWVGb3JSYW5nZSgpOworICAgIAorICAgIHZhbHVlICs9IHJhbmdlICogKHBlcmNlbnRDaGFuZ2Ug
LyAxMDApOworICAgIHNldFZhbHVlKFN0cmluZzo6bnVtYmVyKHZhbHVlKSk7Cit9CisKK3ZvaWQg
QWNjZXNzaWJpbGl0eVNsaWRlcjo6c2V0VmFsdWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3sKKyAg
ICBIVE1MSW5wdXRFbGVtZW50KiBpbnB1dCA9IGVsZW1lbnQoKTsKKyAgICAKKyAgICBpZiAoaW5w
dXQtPnZhbHVlKCkgPT0gdmFsdWUpCisgICAgICAgIHJldHVybjsKKworICAgIGlucHV0LT5zZXRW
YWx1ZSh2YWx1ZSk7CisKKyAgICAvLyBGaXJlIGNoYW5nZSBldmVudCBtYW51YWxseSwgYXMgUmVu
ZGVyU2xpZGVyOjpzZXRWYWx1ZUZvclBvc2l0aW9uIGRvZXMuCisgICAgaW5wdXQtPmRpc3BhdGNo
Rm9ybUNvbnRyb2xDaGFuZ2VFdmVudCgpOworfQorCit2b2lkIEFjY2Vzc2liaWxpdHlTbGlkZXI6
OmluY3JlbWVudCgpCit7CisgICAgcmV0dXJuIGNoYW5nZVZhbHVlKDUpOworfQorCit2b2lkIEFj
Y2Vzc2liaWxpdHlTbGlkZXI6OmRlY3JlbWVudCgpCit7CisgICAgcmV0dXJuIGNoYW5nZVZhbHVl
KC01KTsKK30KKworSFRNTElucHV0RWxlbWVudCogQWNjZXNzaWJpbGl0eVNsaWRlcjo6ZWxlbWVu
dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPiht
X3JlbmRlcmVyLT5ub2RlKCkpOworfQorCisKK0FjY2Vzc2liaWxpdHlTbGlkZXJUaHVtYjo6QWNj
ZXNzaWJpbGl0eVNsaWRlclRodW1iKCkKKyAgICA6IG1fcGFyZW50U2xpZGVyKDApCit7Cit9CisK
K1Bhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVNsaWRlclRodW1iPiBBY2Nlc3NpYmlsaXR5U2xpZGVy
VGh1bWI6OmNyZWF0ZSgpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBBY2Nlc3NpYmlsaXR5
U2xpZGVyVGh1bWIoKSk7Cit9CisgICAgCitJbnRSZWN0IEFjY2Vzc2liaWxpdHlTbGlkZXJUaHVt
Yjo6ZWxlbWVudFJlY3QoKSBjb25zdAoreworICAgIEludFJlY3QgaW50UmVjdCA9IHN0YXRpY19j
YXN0PFJlbmRlclNsaWRlcio+KG1fcGFyZW50U2xpZGVyLT5yZW5kZXJlcigpKS0+dGh1bWJSZWN0
KCk7CisgICAgRmxvYXRRdWFkIGZsb2F0UXVhZCA9IG1fcGFyZW50U2xpZGVyLT5yZW5kZXJlcigp
LT5sb2NhbFRvQWJzb2x1dGVRdWFkKEZsb2F0UmVjdChpbnRSZWN0KSk7CisKKyAgICByZXR1cm4g
ZmxvYXRRdWFkLmVuY2xvc2luZ0JvdW5kaW5nQm94KCk7Cit9CisKK0ludFNpemUgQWNjZXNzaWJp
bGl0eVNsaWRlclRodW1iOjpzaXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZWxlbWVudFJlY3Qo
KS5zaXplKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2xpZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTbGlkZXIuaAkocmV2aXNpb24gMCkKKysrIFdlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2xpZGVyLmgJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsOTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUg
b2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAg
ICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgQWNjZXNzaWJpbGl0eVNsaWRlcl9oCisjZGVmaW5lIEFjY2Vz
c2liaWxpdHlTbGlkZXJfaAorCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyAgICBjbGFzcyBIVE1MSW5wdXRFbGVtZW50Owor
CisgICAgY2xhc3MgQWNjZXNzaWJpbGl0eVNsaWRlciA6IHB1YmxpYyBBY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0IHsKKyAgICAgICAgCisgICAgcHVibGljOgorICAgICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxBY2Nlc3NpYmlsaXR5U2xpZGVyPiBjcmVhdGUoUmVuZGVyT2JqZWN0Kik7CisgICAgICAg
IHZpcnR1YWwgfkFjY2Vzc2liaWxpdHlTbGlkZXIoKSB7IH0KKworICAgICAgICB2aXJ0dWFsIEFj
Y2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIFNsaWRlclJvbGU7IH0K
KyAgICAgICAgdmlydHVhbCBib29sIGFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQorCisgICAgICAgIHZpcnR1YWwgYm9vbCBpc1NsaWRlcigpIGNvbnN0IHsg
cmV0dXJuIHRydWU7IH0KKworICAgICAgICB2aXJ0dWFsIGNvbnN0IEFjY2Vzc2liaWxpdHlDaGls
ZHJlblZlY3RvciYgY2hpbGRyZW4oKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGFkZENoaWxkcmVu
KCk7CisKKyAgICAgICAgdmlydHVhbCBib29sIGNhblNldFZhbHVlQXR0cmlidXRlKCkgY29uc3Qg
eyByZXR1cm4gdHJ1ZTsgfTsKKyAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBnZXRBdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlKSBjb25zdDsKKworICAgICAgICB2aXJ0
dWFsIHZvaWQgc2V0VmFsdWUoY29uc3QgU3RyaW5nJik7CisgICAgICAgIHZpcnR1YWwgZmxvYXQg
dmFsdWVGb3JSYW5nZSgpIGNvbnN0OworICAgICAgICB2aXJ0dWFsIGZsb2F0IG1heFZhbHVlRm9y
UmFuZ2UoKSBjb25zdDsKKyAgICAgICAgdmlydHVhbCBmbG9hdCBtaW5WYWx1ZUZvclJhbmdlKCkg
Y29uc3Q7CisKKyAgICAgICAgdmlydHVhbCB2b2lkIGluY3JlbWVudCgpOworICAgICAgICB2aXJ0
dWFsIHZvaWQgZGVjcmVtZW50KCk7CisKKyAgICBwcml2YXRlOgorICAgICAgICBBY2Nlc3NpYmls
aXR5U2xpZGVyKFJlbmRlck9iamVjdCopOworICAgICAgICB2b2lkIGNoYW5nZVZhbHVlKGZsb2F0
IC8qcGVyY2VudENoYW5nZSovKTsKKyAgICAgICAgSFRNTElucHV0RWxlbWVudCogZWxlbWVudCgp
IGNvbnN0OworICAgIH07CisKKyAgICBjbGFzcyBBY2Nlc3NpYmlsaXR5U2xpZGVyVGh1bWIgOiBw
dWJsaWMgQWNjZXNzaWJpbGl0eU9iamVjdCB7CisgICAgICAgIAorICAgIHB1YmxpYzoKKyAgICAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVNsaWRlclRodW1iPiBjcmVhdGUoKTsK
KyAgICAgICAgdmlydHVhbCB+QWNjZXNzaWJpbGl0eVNsaWRlclRodW1iKCkgeyB9CisKKyAgICAg
ICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUoKSBjb25zdCB7IHJldHVybiBT
bGlkZXJUaHVtYlJvbGU7IH0KKyAgICAgICAgdmlydHVhbCBib29sIGFjY2Vzc2liaWxpdHlJc0ln
bm9yZWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorCisgICAgICAgIHZvaWQgc2V0UGFyZW50
T2JqZWN0KEFjY2Vzc2liaWxpdHlTbGlkZXIqIHNsaWRlcikgeyBtX3BhcmVudFNsaWRlciA9IHNs
aWRlcjsgfQorICAgICAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudE9iamVj
dCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyZW50U2xpZGVyOyB9CisKKyAgICAgICAgdmlydHVhbCBJ
bnRTaXplIHNpemUoKSBjb25zdDsKKyAgICAgICAgdmlydHVhbCBJbnRSZWN0IGVsZW1lbnRSZWN0
KCkgY29uc3Q7CisKKyAgICBwcml2YXRlOgorICAgICAgICBBY2Nlc3NpYmlsaXR5U2xpZGVyVGh1
bWIoKTsKKworICAgICAgICBBY2Nlc3NpYmlsaXR5U2xpZGVyKiBtX3BhcmVudFNsaWRlcjsKKyAg
ICB9OworCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEFjY2Vzc2liaWxp
dHlTbGlkZXJfaApJbmRleDogV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFj
L0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLm1tCShyZXZpc2lvbiA0NjcxNikKKysrIFdlYkNv
cmUvYWNjZXNzaWJpbGl0eS9tYWMvQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIubW0JKHdvcmtp
bmcgY29weSkKQEAgLTk1MSw3ICs5NTEsMTAgQEAgc3RhdGljIGNvbnN0IEFjY2Vzc2liaWxpdHlS
b2xlTWFwJiBjcmVhdAogI2VuZGlmCiAgICAgICAgIHsgVGFibGVIZWFkZXJDb250YWluZXJSb2xl
LCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKICAgICAgICAgeyBEZWZpbml0aW9uTGlzdERl
ZmluaXRpb25Sb2xlLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKLSAgICAgICAgeyBEZWZp
bml0aW9uTGlzdFRlcm1Sb2xlLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfQorICAgICAgICB7
IERlZmluaXRpb25MaXN0VGVybVJvbGUsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAorICAg
ICAgICAKKyAgICAgICAgeyBTbGlkZXJUaHVtYlJvbGUsIE5TQWNjZXNzaWJpbGl0eVZhbHVlSW5k
aWNhdG9yUm9sZSB9LAorICAgICAgICAKIAogICAgIH07CiAgICAgQWNjZXNzaWJpbGl0eVJvbGVN
YXAmIHJvbGVNYXAgPSAqbmV3IEFjY2Vzc2liaWxpdHlSb2xlTWFwOwpAQCAtMTA1Nyw2ICsxMDYw
LDEyIEBAIHN0YXRpYyBOU1N0cmluZyogcm9sZVZhbHVlVG9OU1N0cmluZyhBY2MKICAgICBpZiAo
W2F4Um9sZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5Q2VsbFJvbGVdKQogICAgICAg
ICByZXR1cm4gTlNBY2Nlc3NpYmlsaXR5Um9sZURlc2NyaXB0aW9uKE5TQWNjZXNzaWJpbGl0eUNl
bGxSb2xlLCBbc2VsZiBzdWJyb2xlXSk7CiAKKyAgICBpZiAoW2F4Um9sZSBpc0VxdWFsVG9TdHJp
bmc6TlNBY2Nlc3NpYmlsaXR5U2xpZGVyUm9sZV0pCisgICAgICAgIHJldHVybiBOU0FjY2Vzc2li
aWxpdHlSb2xlRGVzY3JpcHRpb24oTlNBY2Nlc3NpYmlsaXR5U2xpZGVyUm9sZSwgW3NlbGYgc3Vi
cm9sZV0pOworCisgICAgaWYgKFtheFJvbGUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0
eVZhbHVlSW5kaWNhdG9yUm9sZV0pCisgICAgICAgIHJldHVybiBOU0FjY2Vzc2liaWxpdHlSb2xl
RGVzY3JpcHRpb24oTlNBY2Nlc3NpYmlsaXR5VmFsdWVJbmRpY2F0b3JSb2xlLCBbc2VsZiBzdWJy
b2xlXSk7CisKICAgICBpZiAoW2F4Um9sZSBpc0VxdWFsVG9TdHJpbmc6QCJBWFdlYkFyZWEiXSkK
ICAgICAgICAgcmV0dXJuIEFYV2ViQXJlYVRleHQoKTsKICAgICAKQEAgLTEzNDUsNyArMTM1NCw3
IEBAIHN0YXRpYyBOU1N0cmluZyogcm9sZVZhbHVlVG9OU1N0cmluZyhBY2MKICAgICAgICAgfSAg
CiAgICAgfQogICAgIAotICAgIGlmICgobV9vYmplY3QtPmlzTGlzdEJveCgpIHx8bV9vYmplY3Qt
PmlzTGlzdCgpKSAmJiBbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmls
aXR5T3JpZW50YXRpb25BdHRyaWJ1dGVdKQorICAgIGlmICgobV9vYmplY3QtPmlzTGlzdEJveCgp
IHx8IG1fb2JqZWN0LT5pc0xpc3QoKSkgJiYgW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5n
Ok5TQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uQXR0cmlidXRlXSkKICAgICAgICAgcmV0dXJuIE5T
QWNjZXNzaWJpbGl0eVZlcnRpY2FsT3JpZW50YXRpb25WYWx1ZTsKIAogICAgIGlmIChbYXR0cmli
dXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6IEAiQVhTZWxlY3RlZFRleHRNYXJrZXJSYW5nZSJdKQpA
QCAtMTU3OSw4ICsxNTg4LDM0IEBAIHN0YXRpYyBOU1N0cmluZyogcm9sZVZhbHVlVG9OU1N0cmlu
ZyhBY2MKIAogICAgIGlmIChtX29iamVjdC0+aXNBdHRhY2htZW50KCkpCiAgICAgICAgIFtbc2Vs
ZiBhdHRhY2htZW50Vmlld10gYWNjZXNzaWJpbGl0eVBlcmZvcm1BY3Rpb246TlNBY2Nlc3NpYmls
aXR5UHJlc3NBY3Rpb25dOwotICAgIAotICAgIG1fb2JqZWN0LT5wcmVzcygpOyAgICAKKyAgICBl
bHNlCisgICAgICAgIG1fb2JqZWN0LT5wcmVzcygpOyAgICAKK30KKworLSAodm9pZClhY2Nlc3Np
YmlsaXR5UGVyZm9ybUluY3JlbWVudEFjdGlvbgoreworICAgIGlmICghbV9vYmplY3QpCisgICAg
ICAgIHJldHVybjsKKworICAgIG1fb2JqZWN0LT51cGRhdGVCYWNraW5nU3RvcmUoKTsKKworICAg
IGlmIChtX29iamVjdC0+aXNBdHRhY2htZW50KCkpCisgICAgICAgIFtbc2VsZiBhdHRhY2htZW50
Vmlld10gYWNjZXNzaWJpbGl0eVBlcmZvcm1BY3Rpb246TlNBY2Nlc3NpYmlsaXR5SW5jcmVtZW50
QWN0aW9uXTsKKyAgICBlbHNlCisgICAgICAgIG1fb2JqZWN0LT5pbmNyZW1lbnQoKTsgICAgCit9
CisKKy0gKHZvaWQpYWNjZXNzaWJpbGl0eVBlcmZvcm1EZWNyZW1lbnRBY3Rpb24KK3sKKyAgICBp
ZiAoIW1fb2JqZWN0KQorICAgICAgICByZXR1cm47CisKKyAgICBtX29iamVjdC0+dXBkYXRlQmFj
a2luZ1N0b3JlKCk7CisKKyAgICBpZiAobV9vYmplY3QtPmlzQXR0YWNobWVudCgpKQorICAgICAg
ICBbW3NlbGYgYXR0YWNobWVudFZpZXddIGFjY2Vzc2liaWxpdHlQZXJmb3JtQWN0aW9uOk5TQWNj
ZXNzaWJpbGl0eURlY3JlbWVudEFjdGlvbl07CisgICAgZWxzZQorICAgICAgICBtX29iamVjdC0+
ZGVjcmVtZW50KCk7ICAgIAogfQogCiAtICh2b2lkKWFjY2Vzc2liaWxpdHlQZXJmb3JtU2hvd01l
bnVBY3Rpb24KQEAgLTE2MzEsNiArMTY2NiwxMiBAQCBzdGF0aWMgTlNTdHJpbmcqIHJvbGVWYWx1
ZVRvTlNTdHJpbmcoQWNjCiAgICAgCiAgICAgZWxzZSBpZiAoW2FjdGlvbiBpc0VxdWFsVG9TdHJp
bmc6TlNBY2Nlc3NpYmlsaXR5U2hvd01lbnVBY3Rpb25dKQogICAgICAgICBbc2VsZiBhY2Nlc3Np
YmlsaXR5UGVyZm9ybVNob3dNZW51QWN0aW9uXTsKKworICAgIGVsc2UgaWYgKFthY3Rpb24gaXNF
cXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUluY3JlbWVudEFjdGlvbl0pCisgICAgICAgIFtz
ZWxmIGFjY2Vzc2liaWxpdHlQZXJmb3JtSW5jcmVtZW50QWN0aW9uXTsKKworICAgIGVsc2UgaWYg
KFthY3Rpb24gaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eURlY3JlbWVudEFjdGlvbl0p
CisgICAgICAgIFtzZWxmIGFjY2Vzc2liaWxpdHlQZXJmb3JtRGVjcmVtZW50QWN0aW9uXTsKIH0K
IAogLSAodm9pZClhY2Nlc3NpYmlsaXR5U2V0VmFsdWU6KGlkKXZhbHVlIGZvckF0dHJpYnV0ZToo
TlNTdHJpbmcqKWF0dHJpYnV0ZU5hbWUKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNs
aWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2xpZGVyLmNw
cAkocmV2aXNpb24gNDY3MTYpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbGlkZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yODUsNiArMjg1LDMwIEBAIFBhc3NSZWZQdHI8UmVuZGVyU3R5
bGU+IFJlbmRlclNsaWRlcjo6Y3IKICAgICByZXR1cm4gc3R5bGUucmVsZWFzZSgpOwogfQogCitJ
bnRSZWN0IFJlbmRlclNsaWRlcjo6dGh1bWJSZWN0KCkKK3sKKyAgICBpZiAoIW1fdGh1bWIpCisg
ICAgICAgIHJldHVybiBJbnRSZWN0KCk7CisKKyAgICBJbnRSZWN0IHRodW1iUmVjdDsKKyAgICBS
ZW5kZXJCb3gqIHRodW1iID0gdG9SZW5kZXJCb3gobV90aHVtYi0+cmVuZGVyZXIoKSk7CisKKyAg
ICB0aHVtYlJlY3Quc2V0V2lkdGgodGh1bWItPnN0eWxlKCktPndpZHRoKCkuY2FsY01pblZhbHVl
KGNvbnRlbnRXaWR0aCgpKSk7CisgICAgdGh1bWJSZWN0LnNldEhlaWdodCh0aHVtYi0+c3R5bGUo
KS0+aGVpZ2h0KCkuY2FsY01pblZhbHVlKGNvbnRlbnRIZWlnaHQoKSkpOworCisgICAgZG91Ymxl
IGZyYWN0aW9uID0gc2xpZGVyUG9zaXRpb24oc3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+
KG5vZGUoKSkpOworICAgIEludFJlY3QgY29udGVudFJlY3QgPSBjb250ZW50Qm94UmVjdCgpOwor
ICAgIGlmIChzdHlsZSgpLT5hcHBlYXJhbmNlKCkgPT0gU2xpZGVyVmVydGljYWxQYXJ0KSB7Cisg
ICAgICAgIHRodW1iUmVjdC5zZXRYKGNvbnRlbnRSZWN0LngoKSArIChjb250ZW50UmVjdC53aWR0
aCgpIC0gdGh1bWJSZWN0LndpZHRoKCkpIC8gMik7CisgICAgICAgIHRodW1iUmVjdC5zZXRZKGNv
bnRlbnRSZWN0LnkoKSArIHN0YXRpY19jYXN0PGludD4obmV4dGFmdGVyKChjb250ZW50UmVjdC5o
ZWlnaHQoKSAtIHRodW1iUmVjdC5oZWlnaHQoKSkgKyAxLCAwKSAqICgxIC0gZnJhY3Rpb24pKSk7
CisgICAgfSBlbHNlIHsKKyAgICAgICAgdGh1bWJSZWN0LnNldFgoY29udGVudFJlY3QueCgpICsg
c3RhdGljX2Nhc3Q8aW50PihuZXh0YWZ0ZXIoKGNvbnRlbnRSZWN0LndpZHRoKCkgLSB0aHVtYlJl
Y3Qud2lkdGgoKSkgKyAxLCAwKSAqIGZyYWN0aW9uKSk7CisgICAgICAgIHRodW1iUmVjdC5zZXRZ
KGNvbnRlbnRSZWN0LnkoKSArIChjb250ZW50UmVjdC5oZWlnaHQoKSAtIHRodW1iUmVjdC5oZWln
aHQoKSkgLyAyKTsKKyAgICB9CisKKyAgICByZXR1cm4gdGh1bWJSZWN0OworfQorCiB2b2lkIFJl
bmRlclNsaWRlcjo6bGF5b3V0KCkKIHsKICAgICBBU1NFUlQobmVlZHNMYXlvdXQoKSk7CkBAIC0z
MjQsMjMgKzM0OCw4IEBAIHZvaWQgUmVuZGVyU2xpZGVyOjpsYXlvdXQoKQogCiAgICAgICAgIHRo
dW1iLT5sYXlvdXRJZk5lZWRlZCgpOwogCi0gICAgICAgIEludFJlY3QgdGh1bWJSZWN0OwotCi0g
ICAgICAgIHRodW1iUmVjdC5zZXRXaWR0aCh0aHVtYi0+c3R5bGUoKS0+d2lkdGgoKS5jYWxjTWlu
VmFsdWUoY29udGVudFdpZHRoKCkpKTsKLSAgICAgICAgdGh1bWJSZWN0LnNldEhlaWdodCh0aHVt
Yi0+c3R5bGUoKS0+aGVpZ2h0KCkuY2FsY01pblZhbHVlKGNvbnRlbnRIZWlnaHQoKSkpOwotCi0g
ICAgICAgIGRvdWJsZSBmcmFjdGlvbiA9IHNsaWRlclBvc2l0aW9uKHN0YXRpY19jYXN0PEhUTUxJ
bnB1dEVsZW1lbnQqPihub2RlKCkpKTsKLSAgICAgICAgSW50UmVjdCBjb250ZW50UmVjdCA9IGNv
bnRlbnRCb3hSZWN0KCk7Ci0gICAgICAgIGlmIChzdHlsZSgpLT5hcHBlYXJhbmNlKCkgPT0gU2xp
ZGVyVmVydGljYWxQYXJ0KSB7Ci0gICAgICAgICAgICB0aHVtYlJlY3Quc2V0WChjb250ZW50UmVj
dC54KCkgKyAoY29udGVudFJlY3Qud2lkdGgoKSAtIHRodW1iUmVjdC53aWR0aCgpKSAvIDIpOwot
ICAgICAgICAgICAgdGh1bWJSZWN0LnNldFkoY29udGVudFJlY3QueSgpICsgc3RhdGljX2Nhc3Q8
aW50PihuZXh0YWZ0ZXIoKGNvbnRlbnRSZWN0LmhlaWdodCgpIC0gdGh1bWJSZWN0LmhlaWdodCgp
KSArIDEsIDApICogKDEgLSBmcmFjdGlvbikpKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgIHRodW1iUmVjdC5zZXRYKGNvbnRlbnRSZWN0LngoKSArIHN0YXRpY19jYXN0PGludD4obmV4
dGFmdGVyKChjb250ZW50UmVjdC53aWR0aCgpIC0gdGh1bWJSZWN0LndpZHRoKCkpICsgMSwgMCkg
KiBmcmFjdGlvbikpOwotICAgICAgICAgICAgdGh1bWJSZWN0LnNldFkoY29udGVudFJlY3QueSgp
ICsgKGNvbnRlbnRSZWN0LmhlaWdodCgpIC0gdGh1bWJSZWN0LmhlaWdodCgpKSAvIDIpOwotICAg
ICAgICB9Ci0KLSAgICAgICAgdGh1bWItPnNldEZyYW1lUmVjdCh0aHVtYlJlY3QpOwotCisgICAg
ICAgIEludFJlY3QgcmVjdCA9IHRodW1iUmVjdCgpOworICAgICAgICB0aHVtYi0+c2V0RnJhbWVS
ZWN0KHJlY3QpOwogICAgICAgICBpZiAodGh1bWItPmNoZWNrRm9yUmVwYWludER1cmluZ0xheW91
dCgpKQogICAgICAgICAgICAgdGh1bWItPnJlcGFpbnREdXJpbmdMYXlvdXRJZk1vdmVkKG9sZFRo
dW1iUmVjdCk7CiAKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNsaWRlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNsaWRlci5oCShyZXZpc2lvbiA0Njcx
NikKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNsaWRlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zNiw2ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2b2lkIGZvcndh
cmRFdmVudChFdmVudCopOwogICAgICAgICBib29sIGluRHJhZ01vZGUoKSBjb25zdDsKKyAgICAg
ICAgSW50UmVjdCB0aHVtYlJlY3QoKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwg
Y29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IHsgcmV0dXJuICJSZW5kZXJTbGlkZXIiOyB9
CkluZGV4OiBXZWJLaXRUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMv
Q2hhbmdlTG9nCShyZXZpc2lvbiA0NjcxNykKKysrIFdlYktpdFRvb2xzL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDI3IEBACisyMDA5LTA4LTAzICBFcmljIENhcmxzb24gIDxl
cmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEhUTUxJbnB1dEVsZW1lbnQgaXMgbm90IGNvbnRyb2xsYWJsZSBieSBh
c3Npc3RpdmUgdGVjaG5vbG9naWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yNzk0MQorCisgICAgICAgIEFjY2Vzc2liaWxpdHkgY29udHJvbCBvZiBh
IHNsaWRlciByZXF1aXJlZCBhZGRpbmcgaW5jcmVtZW50KCkgYW5kIGRlY3JlbWVudCgpCisgICAg
ICAgIG1ldGhvZHMgdG8gQWNjZXNzaWJpbGl0eU9iamVjdCwgc28gZXhwb3NlIHRob3MgbWV0aG9k
cyBvbiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50LgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
QWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHA6CisgICAgICAgIChpbmNyZW1lbnRDYWxsYmFjayk6
IE5ldy4KKyAgICAgICAgKGRlY3JlbWVudENhbGxiYWNrKTogTmV3LgorICAgICAgICAoQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6Z2V0SlNDbGFzcyk6IEV4cG9zZSBpbmNyZW1lbnQgYW5kIGRlY3Jl
bWVudCBtZXRob2RzLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudC5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5VUlF
bGVtZW50TWFjLm1tOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aW5jcmVtZW50
KTogTmV3LgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZGVjcmVtZW50KTogTmV3
LgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRX
aW4uY3BwOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aW5jcmVtZW50KTogTmV3
LgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZGVjcmVtZW50KTogTmV3LgorCiAy
MDA5LTA4LTAyICBEYXZpZCBELiBLaWx6ZXIgIDxkZGtpbHplckB3ZWJraXQub3JnPgogCiAgICAg
ICAgIDxodHRwOi8vd2Via2l0Lm9yZy9iLzI3OTMwPiBidWd6aWxsYS10b29sIGhhdGVzIFRvciBB
cm5lIFZlc3Riw7gKSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxp
dHlVSUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwCShyZXZpc2lvbiA0NjcxNikKKysrIFdlYktpdFRv
b2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yMTcsNiArMjE3LDE5IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIHNldFNlbGVjdGVkVGV4
dFJhbmdlQ2EKICAgICByZXR1cm4gMDsKIH0KIAorc3RhdGljIEpTVmFsdWVSZWYgaW5jcmVtZW50
Q2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09i
amVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJl
ZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIHRvQVhFbGVtZW50
KHRoaXNPYmplY3QpLT5pbmNyZW1lbnQoKTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIEpT
VmFsdWVSZWYgZGVjcmVtZW50Q2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0
UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3Vu
dCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQor
eworICAgIHRvQVhFbGVtZW50KHRoaXNPYmplY3QpLT5kZWNyZW1lbnQoKTsKKyAgICByZXR1cm4g
MDsKK30KKworCiAvLyBTdGF0aWMgVmFsdWUgR2V0dGVycwogCiBzdGF0aWMgSlNWYWx1ZVJlZiBn
ZXRSb2xlQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIHRoaXNPYmpl
Y3QsIEpTU3RyaW5nUmVmIHByb3BlcnR5TmFtZSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQpAQCAt
Mzc3LDYgKzM5MCw4IEBAIEpTQ2xhc3NSZWYgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Z2V0SlMK
ICAgICAgICAgeyAiYXR0cmlidXRlVmFsdWUiLCBhdHRyaWJ1dGVWYWx1ZUNhbGxiYWNrLCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRl
IH0sCiAgICAgICAgIHsgImlzQXR0cmlidXRlU2V0dGFibGUiLCBpc0F0dHJpYnV0ZVNldHRhYmxl
Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAicGFyZW50RWxlbWVudCIsIHBhcmVudEVsZW1l
bnRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0
cmlidXRlRG9udERlbGV0ZSB9LAorICAgICAgICB7ICJpbmNyZW1lbnQiLCBpbmNyZW1lbnRDYWxs
YmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRl
RG9udERlbGV0ZSB9LAorICAgICAgICB7ICJkZWNyZW1lbnQiLCBkZWNyZW1lbnRDYWxsYmFjaywg
a0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERl
bGV0ZSB9LAogICAgICAgICB7IDAsIDAsIDAgfQogICAgIH07CiAKSW5kZXg6IFdlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgJKHJldmlz
aW9uIDQ2NzE2KQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC03NCw3ICs3NCw5IEBAIHB1YmxpYzoKICAgICBK
U1N0cmluZ1JlZiBhdHRyaWJ1dGVzT2ZEb2N1bWVudExpbmtzKCk7CiAgICAgSlNTdHJpbmdSZWYg
YXR0cmlidXRlc09mQ2hpbGRyZW4oKTsKICAgICBKU1N0cmluZ1JlZiBwYXJhbWV0ZXJpemVkQXR0
cmlidXRlTmFtZXMoKTsKLSAgICAKKyAgICB2b2lkIGluY3JlbWVudCgpOworICAgIHZvaWQgZGVj
cmVtZW50KCk7CisKICAgICAvLyBBdHRyaWJ1dGVzIC0gcGxhdGZvcm0taW5kZXBlbmRlbnQgaW1w
bGVtZW50YXRpb25zCiAgICAgSlNTdHJpbmdSZWYgYXR0cmlidXRlVmFsdWUoSlNTdHJpbmdSZWYg
YXR0cmlidXRlKTsKICAgICBib29sIGlzQXR0cmlidXRlU2V0dGFibGUoSlNTdHJpbmdSZWYgYXR0
cmlidXRlKTsKQEAgLTExNCw3ICsxMTYsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgLy8gVGFibGUt
c3BlY2lmaWMKICAgICBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IGNlbGxGb3JDb2x1bW5BbmRSb3co
dW5zaWduZWQgY29sdW1uLCB1bnNpZ25lZCByb3cpOwotICAgIAorCiBwcml2YXRlOgogICAgIHN0
YXRpYyBKU0NsYXNzUmVmIGdldEpTQ2xhc3MoKTsKIApJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMu
bW0JKHJldmlzaW9uIDQ2NzE2KQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0Fj
Y2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTUyNSwzICs1MjUs
MTMgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZXRTZWxlY3RlZAogICAgIE5TVmFs
dWUgKnRleHRSYW5nZVZhbHVlID0gW05TVmFsdWUgdmFsdWVXaXRoUmFuZ2U6dGV4dFJhbmdlXTsK
ICAgICBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlTZXRWYWx1ZTp0ZXh0UmFuZ2VWYWx1ZSBmb3JB
dHRyaWJ1dGU6TlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRUZXh0UmFuZ2VBdHRyaWJ1dGVdOwogfQor
Cit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmluY3JlbWVudCgpCit7CisgICAgW21fZWxl
bWVudCBhY2Nlc3NpYmlsaXR5UGVyZm9ybUFjdGlvbjpOU0FjY2Vzc2liaWxpdHlJbmNyZW1lbnRB
Y3Rpb25dOworfQorCit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRlY3JlbWVudCgpCit7
CisgICAgW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5UGVyZm9ybUFjdGlvbjpOU0FjY2Vzc2liaWxp
dHlEZWNyZW1lbnRBY3Rpb25dOworfQpJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUv
d2luL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRv
b2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50V2luLmNwcAkocmV2
aXNpb24gNDY3MTYpCisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vQWNjZXNzaWJp
bGl0eVVJRWxlbWVudFdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzOSwzICszMzksMTAgQEAg
Ym9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0F0dHJpYnV0ZQogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjppbmNyZW1lbnQoKQoreworfQor
Cit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRlY3JlbWVudCgpCit7Cit9CkluZGV4OiBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NjcxNykKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDE1IEBACisyMDA5LTA4LTAzICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxz
b25AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEhUTUxJbnB1dEVsZW1lbnQgaXMgbm90IGNvbnRyb2xsYWJsZSBieSBhc3Npc3RpdmUg
dGVjaG5vbG9naWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yNzk0MQorICAgICAgICAKKyAgICAgICAgQWRkIHRlc3QgZm9yIDxpbnB1dCB0eXBlPXJh
bmdlPiBhY2Nlc3NpYmlsaXR5IC4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaW5wdXQtc2xp
ZGVyLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L2lu
cHV0LXNsaWRlci1leHBlY3RlZC50eHQ6IEFkZGVkLgorCiAyMDA5LTA4LTAyICBTYW0gV2Vpbmln
ICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgTGFuZCB1cGRhdGVkIGV4cGVjdGVkIHJlc3Vs
dC4KSW5kZXg6IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvaW5wdXQtc2xpZGVyLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9pbnB1dC1zbGlkZXIuaHRtbAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvaW5wdXQtc2xpZGVyLmh0
bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTUyIEBACis8aHRtbD4KKyAgICA8aGVhZD4KKyAg
ICAgICAgPHNjcmlwdD4KKyAgICAgICAgICAgIHZhciBzbGlkZXJBWE9iamVjdDsKKyAgICAgICAg
ICAgIHZhciB0aHVtYkFYT2JqZWN0OworICAgICAgICAgICAgdmFyIHZhbHVlRGl2OworCisgICAg
ICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSAKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAg
ICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBjb25zb2xlV3JpdGUodGV4dCkKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29s
ZSIpLmlubmVySFRNTCArPSB0ZXh0ICsgIjxicj4iOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgCisgICAgICAgICAgICBmdW5jdGlvbiBsb2dSZXN1bHQoc3VjY2VzcywgdGV4dCkKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAoc3VjY2VzcykKKyAgICAgICAgICAgICAgICAg
ICAgY29uc29sZVdyaXRlKHRleHQgKyAiIDxzcGFuIHN0eWxlPSdjb2xvcjpncmVlbic+T0s8IiAr
ICIvc3Bhbj4iKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGNv
bnNvbGVXcml0ZSh0ZXh0ICsgIiA8c3BhbiBzdHlsZT0nY29sb3I6cmVkJz5GQUlMPCIgKyAiL3Nw
YW4+Iik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZ1bmN0aW9u
IHRlc3RFeHBlY3RlZCh0ZXN0RnVuY1N0cmluZywgZXhwZWN0ZWQpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgdmFyIG9ic2VydmVkID0g
ZXZhbCh0ZXN0RnVuY1N0cmluZyk7CisgICAgICAgICAgICAgICAgfSBjYXRjaCAoZXgpIHsKKyAg
ICAgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKGV4KTsKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAg
ICAgICB2YXIgc3VjY2VzcyA9IChvYnNlcnZlZCA9PSBleHBlY3RlZCk7CisgICAgICAgICAgICAg
ICAgdmFyIG1zZyA9IG1zZyA9ICJFWFBFQ1RFRCAoPGVtPiIgKyB0ZXN0RnVuY1N0cmluZyArICIg
PC9lbT4gPT0gJzxlbT4iICsgZXhwZWN0ZWQgKyAiPC9lbT4nKSI7CisgICAgICAgICAgICAgICAg
aWYgKCFzdWNjZXNzKQorICAgICAgICAgICAgICAgICAgICBtc2cgKz0gICIsIE9CU0VSVkVEICc8
ZW0+IiArIG9ic2VydmVkICsgIjwvZW0+JyI7CisgICAgICAgICAgICAgICAgbG9nUmVzdWx0KHN1
Y2Nlc3MsIG1zZyk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHJ1bih0
ZXN0RnVuY1N0cmluZykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb25zb2xlV3Jp
dGUoIlJVTigiICsgdGVzdEZ1bmNTdHJpbmcgKyAiKSIpOworICAgICAgICAgICAgICAgIHRyeSB7
CisgICAgICAgICAgICAgICAgICAgIGV2YWwodGVzdEZ1bmNTdHJpbmcpOworICAgICAgICAgICAg
ICAgIH0gY2F0Y2ggKGV4KSB7CisgICAgICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZShleCk7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlv
biB0ZXN0UmFuZ2VzKG1pbiwgbWF4KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHRl
c3RFeHBlY3RlZCgic2xpZGVyQVhPYmplY3QubWluVmFsdWUiLCBtaW4pOworICAgICAgICAgICAg
ICAgIHRlc3RFeHBlY3RlZCgic2xpZGVyQVhPYmplY3QubWF4VmFsdWUiLCBtYXgpOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiB0ZXN0VmFsdWVzKG9sZFZhbHVlLCBkaXJl
Y3Rpb24pCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgLy8gaW5jcmVtZW50IGFuZCBk
ZWNyZW1lbnQgY2hhbmdlIGJ5IDUlIG9mIHRoZSBzbGlkZXIncyByYW5nZQorICAgICAgICAgICAg
ICAgIHZhciByYW5nZSA9IHNsaWRlcklucHV0LmdldEF0dHJpYnV0ZSgnbWF4JykgLSBzbGlkZXJJ
bnB1dC5nZXRBdHRyaWJ1dGUoJ21pbicpOworICAgICAgICAgICAgICAgIHZhciBleHBlY3RlZCA9
IGRpcmVjdGlvbiAqIHJhbmdlICogMC4wNSArIChvbGRWYWx1ZSAqIDEpOworICAgICAgICAgICAg
ICAgIHRlc3RFeHBlY3RlZCgic2xpZGVySW5wdXQudmFsdWUiLCAgZXhwZWN0ZWQpOworICAgICAg
ICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmFsdWVEaXYuaW5uZXJUZXh0IiwgZXhwZWN0ZWQpOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBmdW5jdGlvbiB0ZXN0SW5j
cmVtZW50KCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB2YXIgb2xkVmFsdWUgPSBz
bGlkZXJJbnB1dC52YWx1ZTsKKyAgICAgICAgICAgICAgICBydW4oInNsaWRlckFYT2JqZWN0Lmlu
Y3JlbWVudCgpIik7CisgICAgICAgICAgICAgICAgdGVzdFZhbHVlcyhvbGRWYWx1ZSwgMSkKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gdGVzdERlY3JlbWVudCgpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgdmFyIG9sZFZhbHVlID0gc2xpZGVySW5wdXQudmFs
dWU7CisgICAgICAgICAgICAgICAgcnVuKCJzbGlkZXJBWE9iamVjdC5kZWNyZW1lbnQoKSIpOwor
ICAgICAgICAgICAgICAgIHRlc3RWYWx1ZXMob2xkVmFsdWUsIC0xKQorICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBmdW5jdGlvbiB0ZXN0KCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBpZiAoIXdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgCisgICAgICAgICAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgICAgIHZhciBvbGRWYWx1ZTsKKyAgICAgICAg
ICAgICAgICB2YXIgbmV3VmFsdWU7CisKKyAgICAgICAgICAgICAgICB2YWx1ZURpdiA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJ2YWwiKTsKKyAgICAgICAgICAgICAgICBzbGlkZXJJbnB1dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzbGlkZXIiKTsKKworICAgICAgICAgICAgICAgIHNs
aWRlcklucHV0LmZvY3VzKCk7CisKKyAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIioqIFRl
c3Qgc2xpZGVyIGFjY2Vzc2liaWxpdHkgYXR0cmlidXRlcyIpOworICAgICAgICAgICAgICAgIHJ1
bigic2xpZGVyQVhPYmplY3QgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVu
dCIpOworICAgICAgICAgICAgICAgIHRlc3RSYW5nZXMoMCwgMTAwKTsKKyAgICAgICAgICAgICAg
ICB0ZXN0RXhwZWN0ZWQoInNsaWRlckFYT2JqZWN0LmNoaWxkcmVuQ291bnQiLCAxKTsKKyAgICAg
ICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInNsaWRlckFYT2JqZWN0LnJvbGUiLCAiQVhSb2xlOiBB
WFNsaWRlciIpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0
ZSgiIik7CisgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCIqKiBUZXN0IHRodW1iIGFjY2Vz
c2liaWxpdHkgYXR0cmlidXRlcyIpOworICAgICAgICAgICAgICAgIHJ1bigidGh1bWJBWE9iamVj
dCA9IHNsaWRlckFYT2JqZWN0LmNoaWxkQXRJbmRleCgwKSIpOworICAgICAgICAgICAgICAgIHRl
c3RFeHBlY3RlZCgidGh1bWJBWE9iamVjdC5jaGlsZHJlbkNvdW50IiwgMCk7CisgICAgICAgICAg
ICAgICAgY29uc29sZVdyaXRlKCJ0aHVtYkFYT2JqZWN0LnJvbGUgPSAiICsgdGh1bWJBWE9iamVj
dC5yb2xlKTsKKyAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInRodW1iQVhPYmplY3Qucm9s
ZSIsICJBWFJvbGU6IEFYVmFsdWVJbmRpY2F0b3IiKTsKKworICAgICAgICAgICAgICAgIGNvbnNv
bGVXcml0ZSgiIik7CisgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCIqKiBJbmNyZW1lbnQg
dGhlIHNsaWRlciwgdGVzdCBzbGlkZXIgdmFsdWUgYW5kIGRpdiBzZXQgb24gJ3VwZGF0ZScgZXZl
bnQiKTsKKyAgICAgICAgICAgICAgICB0ZXN0SW5jcmVtZW50KCk7CisKKyAgICAgICAgICAgICAg
ICBjb25zb2xlV3JpdGUoIiIpOworICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiKiogRGVj
cmVtZW50IHRoZSBzbGlkZXIsIHRlc3Qgc2xpZGVyIHZhbHVlIGFuZCBkaXYgc2V0IG9uICd1cGRh
dGUnIGV2ZW50Iik7CisgICAgICAgICAgICAgICAgcnVuKCJzbGlkZXJJbnB1dC52YWx1ZSA9IDIy
Iik7CisgICAgICAgICAgICAgICAgdGVzdERlY3JlbWVudCgpOworCisgICAgICAgICAgICAgICAg
Y29uc29sZVdyaXRlKCIiKTsKKyAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIioqIENoYW5n
ZSBzbGlkZXIgcmFuZ2UiKTsKKyAgICAgICAgICAgICAgICBydW4oInNsaWRlcklucHV0LnNldEF0
dHJpYnV0ZSgnbWF4JywgMTAwMCkiKTsKKyAgICAgICAgICAgICAgICBydW4oInNsaWRlcklucHV0
LnNldEF0dHJpYnV0ZSgnbWluJywgNTAwKSIpOworICAgICAgICAgICAgICAgIHRlc3RSYW5nZXMo
NTAwLCAxMDAwKTsKKworICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiIik7CisgICAgICAg
ICAgICAgICAgY29uc29sZVdyaXRlKCIqKiBSZS10ZXN0IGluY3JlbWVudGluZyB0aGUgc2xpZGVy
Iik7CisgICAgICAgICAgICAgICAgcnVuKCJzbGlkZXJJbnB1dC52YWx1ZSA9IDYwMCIpOworICAg
ICAgICAgICAgICAgIHRlc3RJbmNyZW1lbnQoKTsKKworICAgICAgICAgICAgICAgIGNvbnNvbGVX
cml0ZSgiIik7CisgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCIqKiBSZS10ZXN0IGRlY3Jl
bWVudGluZyB0aGUgc2xpZGVyIik7CisgICAgICAgICAgICAgICAgcnVuKCJzbGlkZXJJbnB1dC52
YWx1ZSA9IDg1MCIpOworICAgICAgICAgICAgICAgIHRlc3REZWNyZW1lbnQoKTsKKworICAgICAg
ICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsgICAgIAorICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiB1cGRhdGUob2JqKQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd2YWwnKS5pbm5lclRl
eHQgPSBvYmoudmFsdWU7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwv
aGVhZD4KKworICAgIDxib2R5IG9ubG9hZD0idGVzdCgpIj4KKyAgICAKKyAgICAgICAgPGlucHV0
IHR5cGU9cmFuZ2UgbWluPTAgbWF4PTEwMCB2YWx1ZT01MCBpZD1zbGlkZXIgb25jaGFuZ2U9InVw
ZGF0ZSh0aGlzKSIgPgorICAgICAgICA8c3BhbiBpZD12YWw+NTA8L3NwYW4+CisKKyAgICAgICAg
PGJyPjxicj48YnI+PGJyPgorICAgICAgICA8ZGl2IGlkPWNvbnNvbGU+PC9kaXY+CisgICAgICAg
IAorICAgIDwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9h
Y2Nlc3NpYmlsaXR5L2lucHV0LXNsaWRlci1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvaW5wdXQtc2xpZGVyLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmls
aXR5L2lucHV0LXNsaWRlci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDYg
QEAKKyA4MjUgCisKKworCisqKiBUZXN0IHNsaWRlciBhY2Nlc3NpYmlsaXR5IGF0dHJpYnV0ZXMK
K1JVTihzbGlkZXJBWE9iamVjdCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVt
ZW50KQorRVhQRUNURUQgKHNsaWRlckFYT2JqZWN0Lm1pblZhbHVlID09ICcwJykgT0sKK0VYUEVD
VEVEIChzbGlkZXJBWE9iamVjdC5tYXhWYWx1ZSA9PSAnMTAwJykgT0sKK0VYUEVDVEVEIChzbGlk
ZXJBWE9iamVjdC5jaGlsZHJlbkNvdW50ID09ICcxJykgT0sKK0VYUEVDVEVEIChzbGlkZXJBWE9i
amVjdC5yb2xlID09ICdBWFJvbGU6IEFYU2xpZGVyJykgT0sKKworKiogVGVzdCB0aHVtYiBhY2Nl
c3NpYmlsaXR5IGF0dHJpYnV0ZXMKK1JVTih0aHVtYkFYT2JqZWN0ID0gc2xpZGVyQVhPYmplY3Qu
Y2hpbGRBdEluZGV4KDApKQorRVhQRUNURUQgKHRodW1iQVhPYmplY3QuY2hpbGRyZW5Db3VudCA9
PSAnMCcpIE9LCit0aHVtYkFYT2JqZWN0LnJvbGUgPSBBWFJvbGU6IEFYVmFsdWVJbmRpY2F0b3IK
K0VYUEVDVEVEICh0aHVtYkFYT2JqZWN0LnJvbGUgPT0gJ0FYUm9sZTogQVhWYWx1ZUluZGljYXRv
cicpIE9LCisKKyoqIEluY3JlbWVudCB0aGUgc2xpZGVyLCB0ZXN0IHNsaWRlciB2YWx1ZSBhbmQg
ZGl2IHNldCBvbiAndXBkYXRlJyBldmVudAorUlVOKHNsaWRlckFYT2JqZWN0LmluY3JlbWVudCgp
KQorRVhQRUNURUQgKHNsaWRlcklucHV0LnZhbHVlID09ICc1NScpIE9LCitFWFBFQ1RFRCAodmFs
dWVEaXYuaW5uZXJUZXh0ID09ICc1NScpIE9LCisKKyoqIERlY3JlbWVudCB0aGUgc2xpZGVyLCB0
ZXN0IHNsaWRlciB2YWx1ZSBhbmQgZGl2IHNldCBvbiAndXBkYXRlJyBldmVudAorUlVOKHNsaWRl
cklucHV0LnZhbHVlID0gMjIpCitSVU4oc2xpZGVyQVhPYmplY3QuZGVjcmVtZW50KCkpCitFWFBF
Q1RFRCAoc2xpZGVySW5wdXQudmFsdWUgPT0gJzE3JykgT0sKK0VYUEVDVEVEICh2YWx1ZURpdi5p
bm5lclRleHQgPT0gJzE3JykgT0sKKworKiogQ2hhbmdlIHNsaWRlciByYW5nZQorUlVOKHNsaWRl
cklucHV0LnNldEF0dHJpYnV0ZSgnbWF4JywgMTAwMCkpCitSVU4oc2xpZGVySW5wdXQuc2V0QXR0
cmlidXRlKCdtaW4nLCA1MDApKQorRVhQRUNURUQgKHNsaWRlckFYT2JqZWN0Lm1pblZhbHVlID09
ICc1MDAnKSBPSworRVhQRUNURUQgKHNsaWRlckFYT2JqZWN0Lm1heFZhbHVlID09ICcxMDAwJykg
T0sKKworKiogUmUtdGVzdCBpbmNyZW1lbnRpbmcgdGhlIHNsaWRlcgorUlVOKHNsaWRlcklucHV0
LnZhbHVlID0gNjAwKQorUlVOKHNsaWRlckFYT2JqZWN0LmluY3JlbWVudCgpKQorRVhQRUNURUQg
KHNsaWRlcklucHV0LnZhbHVlID09ICc2MjUnKSBPSworRVhQRUNURUQgKHZhbHVlRGl2LmlubmVy
VGV4dCA9PSAnNjI1JykgT0sKKworKiogUmUtdGVzdCBkZWNyZW1lbnRpbmcgdGhlIHNsaWRlcgor
UlVOKHNsaWRlcklucHV0LnZhbHVlID0gODUwKQorUlVOKHNsaWRlckFYT2JqZWN0LmRlY3JlbWVu
dCgpKQorRVhQRUNURUQgKHNsaWRlcklucHV0LnZhbHVlID09ICc4MjUnKSBPSworRVhQRUNURUQg
KHZhbHVlRGl2LmlubmVyVGV4dCA9PSAnODI1JykgT0sKKwo=
</data>
<flag name="review"
          id="18147"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>