<?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>81611</bug_id>
          
          <creation_ts>2012-03-19 18:36:01 -0700</creation_ts>
          <short_desc>Make CSSLonghandProperty use a lookup table instead of a hash map.</short_desc>
          <delta_ts>2012-03-22 16:53:08 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</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="Luke Macpherson">macpherson</reporter>
          <assigned_to name="Luke Macpherson">macpherson</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>582577</commentid>
    <comment_count>0</comment_count>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2012-03-19 18:36:01 -0700</bug_when>
    <thetext>Make CSSLonghandProperty use a lookup table instead of a hash map.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582579</commentid>
    <comment_count>1</comment_count>
      <attachid>132740</attachid>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2012-03-19 18:36:46 -0700</bug_when>
    <thetext>Created attachment 132740
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582583</commentid>
    <comment_count>2</comment_count>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2012-03-19 18:38:39 -0700</bug_when>
    <thetext>Hi Alexis, here is another idea for how you might do it. This way gives minimal code changes, while giving us very fast lookup performance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582735</commentid>
    <comment_count>3</comment_count>
      <attachid>132740</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-03-19 21:39:12 -0700</bug_when>
    <thetext>Comment on attachment 132740
Patch

Attachment 132740 did not pass win-ews (win):
Output: http://queues.webkit.org/results/11995065</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582768</commentid>
    <comment_count>4</comment_count>
      <attachid>132761</attachid>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2012-03-19 22:36:19 -0700</bug_when>
    <thetext>Created attachment 132761
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582791</commentid>
    <comment_count>5</comment_count>
      <attachid>132761</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-19 23:23:48 -0700</bug_when>
    <thetext>Comment on attachment 132761
Patch

Attachment 132761 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11995118</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582800</commentid>
    <comment_count>6</comment_count>
      <attachid>132770</attachid>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2012-03-19 23:47:14 -0700</bug_when>
    <thetext>Created attachment 132770
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582813</commentid>
    <comment_count>7</comment_count>
      <attachid>132770</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-03-20 00:09:57 -0700</bug_when>
    <thetext>Comment on attachment 132770
Patch

Globally I feel https://bugs.webkit.org/show_bug.cgi?id=81587 much easier to read.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583522</commentid>
    <comment_count>8</comment_count>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2012-03-20 15:42:26 -0700</bug_when>
    <thetext>Do you mind comparing the lookup table with your switch-based implementation? I&apos;m expecting that a straight lookup table like this will be slightly faster than the switch, and both should be faster than the existing HashMap, but it will be interesting to see.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583523</commentid>
    <comment_count>9</comment_count>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2012-03-20 15:46:07 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 132770 [details])
&gt; Globally I feel https://bugs.webkit.org/show_bug.cgi?id=81587 much easier to read.

Do you mean because of the singleton pattern? You could easily hide that behind the same single static function and not change the interface at all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583624</commentid>
    <comment_count>10</comment_count>
      <attachid>132929</attachid>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2012-03-20 17:01:04 -0700</bug_when>
    <thetext>Created attachment 132929
Hide singleton pattern behind inline static function</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132740</attachid>
            <date>2012-03-19 18:36:46 -0700</date>
            <delta_ts>2012-03-19 22:36:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81611-20120320123643.patch</filename>
            <type>text/plain</type>
            <size>19501</size>
            <attacher name="Luke Macpherson">macpherson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExMjU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzY1ZTJiZjZjNzUyNGJk
NTExM2JhMTYxZWZiOTZjMjc2YjY2ODZkNi4uMzYxMDQwZGMwNmJiOWI5NWY3NTA2NDlkMjA1NGZh
ZDA3YTM0ZDcxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEyLTAzLTE5ICBMdWtl
IE1hY3BoZXJzb24gIDxtYWNwaGVyc29uQGNocm9taXVtLm9yZz4KKworICAgICAgICBNYWtlIENT
U0xvbmdoYW5kUHJvcGVydHkgdXNlIGEgbG9va3VwIHRhYmxlIGluc3RlYWQgb2YgYSBoYXNoIG1h
cC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgxNjEx
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3
IHRlc3RzIC0gcmVmYWN0b3Jpbmcgb25seS4KKworICAgICAgICAqIGNzcy9DU1NQcm9wZXJ0eUxv
bmdoYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5TG9uZ2hhbmRNYXA6OnNo
YXJlZENTU1Byb3BlcnR5TG9uZ2hhbmRNYXApOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVy
dHlMb25naGFuZE1hcDo6Q1NTUHJvcGVydHlMb25naGFuZE1hcCk6CisgICAgICAgICogY3NzL0NT
U1Byb3BlcnR5TG9uZ2hhbmQuaDoKKyAgICAgICAgKENTU1Byb3BlcnR5TG9uZ2hhbmRNYXApOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlMb25naGFuZE1hcDo6bG9uZ2hhbmRGb3JQcm9w
ZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eUxvbmdoYW5kTWFwOjppbmRleCk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eUxvbmdoYW5kTWFwOjp2YWxpZCk6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eUxvbmdoYW5kTWFwOjpzZXRQcm9wZXJ0eUhhbmRsZXIp
OgorICAgICAgICAqIGNzcy9TdHlsZVByb3BlcnR5U2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlUHJvcGVydHlTZXQ6OnJlbW92ZVNob3J0aGFuZFByb3BlcnR5KToKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlUHJvcGVydHlTZXQ6OnByb3BlcnR5SXNJbXBvcnRhbnQpOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGVQcm9wZXJ0eVNldDo6c2V0UHJvcGVydHkpOgorICAgICAgICAqIHBhZ2Uv
YW5pbWF0aW9uL0FuaW1hdGlvbkJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YWRkU2hvcnRo
YW5kUHJvcGVydGllcyk6CisKIDIwMTItMDMtMTkgIERhbmEgSmFuc2VucyAgPGRhbmFrakBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBJbnZhbGlkYXRlL3VwZGF0ZSBldmljdGVk
IHRpbGVzIGR1cmluZyBjb21taXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
cm9wZXJ0eUxvbmdoYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eUxvbmdo
YW5kLmNwcAppbmRleCAwZDAzYjIwYmZkNDUxNmZjYzdmOWM1MzExMjE3MzFiNzU4MDBjMWRjLi42
Nzk5OTllZDM1MzY3MDQ0NThlZDkzMjI4ZDc5NTY4MmM5YTdkOGFiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlMb25naGFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1Byb3BlcnR5TG9uZ2hhbmQuY3BwCkBAIC0yNywxMiArMjcsMTkgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi10eXBlZGVmIEhhc2hNYXA8aW50LCBDU1NQcm9wZXJ0eUxvbmdo
YW5kPiBTaG9ydGhhbmRNYXA7Citjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kTWFwJiBDU1NQcm9w
ZXJ0eUxvbmdoYW5kTWFwOjpzaGFyZWRDU1NQcm9wZXJ0eUxvbmdoYW5kTWFwKCkKK3sKKyAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmRNYXAsIGNzc1Byb3BlcnR5TG9u
Z2hhbmRNYXBJbnN0YW5jZSwgKCkpOworICAgIHJldHVybiBjc3NQcm9wZXJ0eUxvbmdoYW5kTWFw
SW5zdGFuY2U7Cit9CiAKLXN0YXRpYyB2b2lkIGluaXRTaG9ydGhhbmRNYXAoU2hvcnRoYW5kTWFw
JiBzaG9ydGhhbmRNYXApCitDU1NQcm9wZXJ0eUxvbmdoYW5kTWFwOjpDU1NQcm9wZXJ0eUxvbmdo
YW5kTWFwKCkKIHsKLSAgICAjZGVmaW5lIFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZKG1hcCwgcHJv
cElELCBhcnJheSkgXAotICAgICAgICBtYXAuc2V0KHByb3BJRCwgQ1NTUHJvcGVydHlMb25naGFu
ZChhcnJheSwgV1RGX0FSUkFZX0xFTkdUSChhcnJheSkpKQorICAgIGZvciAoaW50IGkgPSAwOyBp
IDwgbnVtQ1NTUHJvcGVydGllczsgKytpKQorICAgICAgICBtX3Byb3BlcnR5TWFwW2ldID0gQ1NT
UHJvcGVydHlMb25naGFuZCgpOworCisgICAgI2RlZmluZSBTRVRfU0hPUlRIQU5EX01BUF9FTlRS
WShwcm9wSUQsIGFycmF5KSBcCisgICAgICAgIG1fcHJvcGVydHlNYXBbcHJvcElEXSA9IENTU1By
b3BlcnR5TG9uZ2hhbmQoYXJyYXksIFdURl9BUlJBWV9MRU5HVEgoYXJyYXkpKQogCiAgICAgc3Rh
dGljIGNvbnN0IGludCBmb250UHJvcGVydGllc1tdID0gewogICAgICAgICBDU1NQcm9wZXJ0eUZv
bnRGYW1pbHksCkBAIC00Miw3ICs0OSw3IEBAIHN0YXRpYyB2b2lkIGluaXRTaG9ydGhhbmRNYXAo
U2hvcnRoYW5kTWFwJiBzaG9ydGhhbmRNYXApCiAgICAgICAgIENTU1Byb3BlcnR5Rm9udFdlaWdo
dCwKICAgICAgICAgQ1NTUHJvcGVydHlMaW5lSGVpZ2h0CiAgICAgfTsKLSAgICBTRVRfU0hPUlRI
QU5EX01BUF9FTlRSWShzaG9ydGhhbmRNYXAsIENTU1Byb3BlcnR5Rm9udCwgZm9udFByb3BlcnRp
ZXMpOworICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZKENTU1Byb3BlcnR5Rm9udCwgZm9udFBy
b3BlcnRpZXMpOwogCiAgICAgLy8gRG8gbm90IGNoYW5nZSB0aGUgb3JkZXIgb2YgdGhlIGZvbGxv
d2luZyBmb3VyIHNob3J0aGFuZHMsIGFuZCBrZWVwIHRoZW0gdG9nZXRoZXIuCiAgICAgc3RhdGlj
IGNvbnN0IGludCBib3JkZXJQcm9wZXJ0aWVzWzRdWzNdID0gewpAQCAtNTEsMTIgKzU4LDEyIEBA
IHN0YXRpYyB2b2lkIGluaXRTaG9ydGhhbmRNYXAoU2hvcnRoYW5kTWFwJiBzaG9ydGhhbmRNYXAp
CiAgICAgICAgIHsgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21Db2xvciwgQ1NTUHJvcGVydHlCb3Jk
ZXJCb3R0b21TdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21XaWR0aCB9LAogICAgICAgICB7
IENTU1Byb3BlcnR5Qm9yZGVyTGVmdENvbG9yLCBDU1NQcm9wZXJ0eUJvcmRlckxlZnRTdHlsZSwg
Q1NTUHJvcGVydHlCb3JkZXJMZWZ0V2lkdGggfQogICAgIH07Ci0gICAgU0VUX1NIT1JUSEFORF9N
QVBfRU5UUlkoc2hvcnRoYW5kTWFwLCBDU1NQcm9wZXJ0eUJvcmRlclRvcCwgYm9yZGVyUHJvcGVy
dGllc1swXSk7Ci0gICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoc2hvcnRoYW5kTWFwLCBDU1NQ
cm9wZXJ0eUJvcmRlclJpZ2h0LCBib3JkZXJQcm9wZXJ0aWVzWzFdKTsKLSAgICBTRVRfU0hPUlRI
QU5EX01BUF9FTlRSWShzaG9ydGhhbmRNYXAsIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tLCBib3Jk
ZXJQcm9wZXJ0aWVzWzJdKTsKLSAgICBTRVRfU0hPUlRIQU5EX01BUF9FTlRSWShzaG9ydGhhbmRN
YXAsIENTU1Byb3BlcnR5Qm9yZGVyTGVmdCwgYm9yZGVyUHJvcGVydGllc1szXSk7CisgICAgU0VU
X1NIT1JUSEFORF9NQVBfRU5UUlkoQ1NTUHJvcGVydHlCb3JkZXJUb3AsIGJvcmRlclByb3BlcnRp
ZXNbMF0pOworICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZKENTU1Byb3BlcnR5Qm9yZGVyUmln
aHQsIGJvcmRlclByb3BlcnRpZXNbMV0pOworICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZKENT
U1Byb3BlcnR5Qm9yZGVyQm90dG9tLCBib3JkZXJQcm9wZXJ0aWVzWzJdKTsKKyAgICBTRVRfU0hP
UlRIQU5EX01BUF9FTlRSWShDU1NQcm9wZXJ0eUJvcmRlckxlZnQsIGJvcmRlclByb3BlcnRpZXNb
M10pOwogCi0gICAgc2hvcnRoYW5kTWFwLnNldChDU1NQcm9wZXJ0eUJvcmRlciwgQ1NTUHJvcGVy
dHlMb25naGFuZChib3JkZXJQcm9wZXJ0aWVzWzBdLCBzaXplb2YoYm9yZGVyUHJvcGVydGllcykg
LyBzaXplb2YoYm9yZGVyUHJvcGVydGllc1swXVswXSkpKTsKKyAgICBtX3Byb3BlcnR5TWFwW0NT
U1Byb3BlcnR5Qm9yZGVyXSA9IENTU1Byb3BlcnR5TG9uZ2hhbmQoYm9yZGVyUHJvcGVydGllc1sw
XSwgc2l6ZW9mKGJvcmRlclByb3BlcnRpZXMpIC8gc2l6ZW9mKGJvcmRlclByb3BlcnRpZXNbMF1b
MF0pKTsKIAogICAgIHN0YXRpYyBjb25zdCBpbnQgYm9yZGVyQ29sb3JQcm9wZXJ0aWVzW10gPSB7
CiAgICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyVG9wQ29sb3IsCkBAIC02NCw3ICs3MSw3IEBAIHN0
YXRpYyB2b2lkIGluaXRTaG9ydGhhbmRNYXAoU2hvcnRoYW5kTWFwJiBzaG9ydGhhbmRNYXApCiAg
ICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tQ29sb3IsCiAgICAgICAgIENTU1Byb3BlcnR5
Qm9yZGVyTGVmdENvbG9yCiAgICAgfTsKLSAgICBTRVRfU0hPUlRIQU5EX01BUF9FTlRSWShzaG9y
dGhhbmRNYXAsIENTU1Byb3BlcnR5Qm9yZGVyQ29sb3IsIGJvcmRlckNvbG9yUHJvcGVydGllcyk7
CisgICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoQ1NTUHJvcGVydHlCb3JkZXJDb2xvciwgYm9y
ZGVyQ29sb3JQcm9wZXJ0aWVzKTsKIAogICAgIHN0YXRpYyBjb25zdCBpbnQgYm9yZGVySW1hZ2VQ
cm9wZXJ0aWVzW10gPSB7CiAgICAgICAgIENTU1Byb3BlcnR5Qm9yZGVySW1hZ2VTb3VyY2UsCkBA
IC03Myw3ICs4MCw3IEBAIHN0YXRpYyB2b2lkIGluaXRTaG9ydGhhbmRNYXAoU2hvcnRoYW5kTWFw
JiBzaG9ydGhhbmRNYXApCiAgICAgICAgIENTU1Byb3BlcnR5Qm9yZGVySW1hZ2VPdXRzZXQsCiAg
ICAgICAgIENTU1Byb3BlcnR5Qm9yZGVySW1hZ2VSZXBlYXQKICAgICB9OwotICAgIFNFVF9TSE9S
VEhBTkRfTUFQX0VOVFJZKHNob3J0aGFuZE1hcCwgQ1NTUHJvcGVydHlCb3JkZXJJbWFnZSwgYm9y
ZGVySW1hZ2VQcm9wZXJ0aWVzKTsKKyAgICBTRVRfU0hPUlRIQU5EX01BUF9FTlRSWShDU1NQcm9w
ZXJ0eUJvcmRlckltYWdlLCBib3JkZXJJbWFnZVByb3BlcnRpZXMpOwogCiAgICAgc3RhdGljIGNv
bnN0IGludCBib3JkZXJTdHlsZVByb3BlcnRpZXNbXSA9IHsKICAgICAgICAgQ1NTUHJvcGVydHlC
b3JkZXJUb3BTdHlsZSwKQEAgLTgxLDcgKzg4LDcgQEAgc3RhdGljIHZvaWQgaW5pdFNob3J0aGFu
ZE1hcChTaG9ydGhhbmRNYXAmIHNob3J0aGFuZE1hcCkKICAgICAgICAgQ1NTUHJvcGVydHlCb3Jk
ZXJCb3R0b21TdHlsZSwKICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0U3R5bGUKICAgICB9
OwotICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZKHNob3J0aGFuZE1hcCwgQ1NTUHJvcGVydHlC
b3JkZXJTdHlsZSwgYm9yZGVyU3R5bGVQcm9wZXJ0aWVzKTsKKyAgICBTRVRfU0hPUlRIQU5EX01B
UF9FTlRSWShDU1NQcm9wZXJ0eUJvcmRlclN0eWxlLCBib3JkZXJTdHlsZVByb3BlcnRpZXMpOwog
CiAgICAgc3RhdGljIGNvbnN0IGludCBib3JkZXJXaWR0aFByb3BlcnRpZXNbXSA9IHsKICAgICAg
ICAgQ1NTUHJvcGVydHlCb3JkZXJUb3BXaWR0aCwKQEAgLTg5LDI2ICs5NiwyNiBAQCBzdGF0aWMg
dm9pZCBpbml0U2hvcnRoYW5kTWFwKFNob3J0aGFuZE1hcCYgc2hvcnRoYW5kTWFwKQogICAgICAg
ICBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVdpZHRoLAogICAgICAgICBDU1NQcm9wZXJ0eUJvcmRl
ckxlZnRXaWR0aAogICAgIH07Ci0gICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoc2hvcnRoYW5k
TWFwLCBDU1NQcm9wZXJ0eUJvcmRlcldpZHRoLCBib3JkZXJXaWR0aFByb3BlcnRpZXMpOworICAg
IFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZKENTU1Byb3BlcnR5Qm9yZGVyV2lkdGgsIGJvcmRlcldp
ZHRoUHJvcGVydGllcyk7CiAKICAgICBzdGF0aWMgY29uc3QgaW50IGJhY2tncm91bmRQb3NpdGlv
blByb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25YLCBDU1NQcm9w
ZXJ0eUJhY2tncm91bmRQb3NpdGlvblkgfTsKLSAgICBTRVRfU0hPUlRIQU5EX01BUF9FTlRSWShz
aG9ydGhhbmRNYXAsIENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uLCBiYWNrZ3JvdW5kUG9z
aXRpb25Qcm9wZXJ0aWVzKTsKKyAgICBTRVRfU0hPUlRIQU5EX01BUF9FTlRSWShDU1NQcm9wZXJ0
eUJhY2tncm91bmRQb3NpdGlvbiwgYmFja2dyb3VuZFBvc2l0aW9uUHJvcGVydGllcyk7CiAKICAg
ICBzdGF0aWMgY29uc3QgaW50IGJhY2tncm91bmRSZXBlYXRQcm9wZXJ0aWVzW10gPSB7IENTU1By
b3BlcnR5QmFja2dyb3VuZFJlcGVhdFgsIENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFkgfTsK
LSAgICBTRVRfU0hPUlRIQU5EX01BUF9FTlRSWShzaG9ydGhhbmRNYXAsIENTU1Byb3BlcnR5QmFj
a2dyb3VuZFJlcGVhdCwgYmFja2dyb3VuZFJlcGVhdFByb3BlcnRpZXMpOworICAgIFNFVF9TSE9S
VEhBTkRfTUFQX0VOVFJZKENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdCwgYmFja2dyb3VuZFJl
cGVhdFByb3BlcnRpZXMpOwogCiAgICAgc3RhdGljIGNvbnN0IGludCBib3JkZXJTcGFjaW5nUHJv
cGVydGllc1tdID0geyBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckhvcml6b250YWxTcGFjaW5nLCBD
U1NQcm9wZXJ0eVdlYmtpdEJvcmRlclZlcnRpY2FsU3BhY2luZyB9OwotICAgIFNFVF9TSE9SVEhB
TkRfTUFQX0VOVFJZKHNob3J0aGFuZE1hcCwgQ1NTUHJvcGVydHlCb3JkZXJTcGFjaW5nLCBib3Jk
ZXJTcGFjaW5nUHJvcGVydGllcyk7CisgICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoQ1NTUHJv
cGVydHlCb3JkZXJTcGFjaW5nLCBib3JkZXJTcGFjaW5nUHJvcGVydGllcyk7CiAKICAgICBzdGF0
aWMgY29uc3QgaW50IGZsZXhGbG93UHJvcGVydGllc1tdID0geyBDU1NQcm9wZXJ0eVdlYmtpdEZs
ZXhEaXJlY3Rpb24sIENTU1Byb3BlcnR5V2Via2l0RmxleFdyYXAgfTsKLSAgICBTRVRfU0hPUlRI
QU5EX01BUF9FTlRSWShzaG9ydGhhbmRNYXAsIENTU1Byb3BlcnR5V2Via2l0RmxleEZsb3csIGZs
ZXhGbG93UHJvcGVydGllcyk7CisgICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoQ1NTUHJvcGVy
dHlXZWJraXRGbGV4RmxvdywgZmxleEZsb3dQcm9wZXJ0aWVzKTsKIAogICAgIHN0YXRpYyBjb25z
dCBpbnQgbGlzdFN0eWxlUHJvcGVydGllc1tdID0gewogICAgICAgICBDU1NQcm9wZXJ0eUxpc3RT
dHlsZUltYWdlLAogICAgICAgICBDU1NQcm9wZXJ0eUxpc3RTdHlsZVBvc2l0aW9uLAogICAgICAg
ICBDU1NQcm9wZXJ0eUxpc3RTdHlsZVR5cGUKICAgICB9OwotICAgIFNFVF9TSE9SVEhBTkRfTUFQ
X0VOVFJZKHNob3J0aGFuZE1hcCwgQ1NTUHJvcGVydHlMaXN0U3R5bGUsIGxpc3RTdHlsZVByb3Bl
cnRpZXMpOworICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZKENTU1Byb3BlcnR5TGlzdFN0eWxl
LCBsaXN0U3R5bGVQcm9wZXJ0aWVzKTsKIAogICAgIHN0YXRpYyBjb25zdCBpbnQgbWFyZ2luUHJv
cGVydGllc1tdID0gewogICAgICAgICBDU1NQcm9wZXJ0eU1hcmdpblRvcCwKQEAgLTExNiwxMCAr
MTIzLDEwIEBAIHN0YXRpYyB2b2lkIGluaXRTaG9ydGhhbmRNYXAoU2hvcnRoYW5kTWFwJiBzaG9y
dGhhbmRNYXApCiAgICAgICAgIENTU1Byb3BlcnR5TWFyZ2luQm90dG9tLAogICAgICAgICBDU1NQ
cm9wZXJ0eU1hcmdpbkxlZnQKICAgICB9OwotICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZKHNo
b3J0aGFuZE1hcCwgQ1NTUHJvcGVydHlNYXJnaW4sIG1hcmdpblByb3BlcnRpZXMpOworICAgIFNF
VF9TSE9SVEhBTkRfTUFQX0VOVFJZKENTU1Byb3BlcnR5TWFyZ2luLCBtYXJnaW5Qcm9wZXJ0aWVz
KTsKIAogICAgIHN0YXRpYyBjb25zdCBpbnQgbWFyZ2luQ29sbGFwc2VQcm9wZXJ0aWVzW10gPSB7
IENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQmVmb3JlQ29sbGFwc2UsIENTU1Byb3BlcnR5V2Via2l0
TWFyZ2luQWZ0ZXJDb2xsYXBzZSB9OwotICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZKHNob3J0
aGFuZE1hcCwgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5Db2xsYXBzZSwgbWFyZ2luQ29sbGFwc2VQ
cm9wZXJ0aWVzKTsKKyAgICBTRVRfU0hPUlRIQU5EX01BUF9FTlRSWShDU1NQcm9wZXJ0eVdlYmtp
dE1hcmdpbkNvbGxhcHNlLCBtYXJnaW5Db2xsYXBzZVByb3BlcnRpZXMpOwogCiAgICAgc3RhdGlj
IGNvbnN0IGludCBtYXJxdWVlUHJvcGVydGllc1tdID0gewogICAgICAgICBDU1NQcm9wZXJ0eVdl
YmtpdE1hcnF1ZWVEaXJlY3Rpb24sCkBAIC0xMjgsNyArMTM1LDcgQEAgc3RhdGljIHZvaWQgaW5p
dFNob3J0aGFuZE1hcChTaG9ydGhhbmRNYXAmIHNob3J0aGFuZE1hcCkKICAgICAgICAgQ1NTUHJv
cGVydHlXZWJraXRNYXJxdWVlU3R5bGUsCiAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0TWFycXVl
ZVNwZWVkCiAgICAgfTsKLSAgICBTRVRfU0hPUlRIQU5EX01BUF9FTlRSWShzaG9ydGhhbmRNYXAs
IENTU1Byb3BlcnR5V2Via2l0TWFycXVlZSwgbWFycXVlZVByb3BlcnRpZXMpOworICAgIFNFVF9T
SE9SVEhBTkRfTUFQX0VOVFJZKENTU1Byb3BlcnR5V2Via2l0TWFycXVlZSwgbWFycXVlZVByb3Bl
cnRpZXMpOwogCiAgICAgc3RhdGljIGNvbnN0IGludCBvdXRsaW5lUHJvcGVydGllc1tdID0gewog
ICAgICAgICBDU1NQcm9wZXJ0eU91dGxpbmVDb2xvciwKQEAgLTEzNiw3ICsxNDMsNyBAQCBzdGF0
aWMgdm9pZCBpbml0U2hvcnRoYW5kTWFwKFNob3J0aGFuZE1hcCYgc2hvcnRoYW5kTWFwKQogICAg
ICAgICBDU1NQcm9wZXJ0eU91dGxpbmVTdHlsZSwKICAgICAgICAgQ1NTUHJvcGVydHlPdXRsaW5l
V2lkdGgKICAgICB9OwotICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZKHNob3J0aGFuZE1hcCwg
Q1NTUHJvcGVydHlPdXRsaW5lLCBvdXRsaW5lUHJvcGVydGllcyk7CisgICAgU0VUX1NIT1JUSEFO
RF9NQVBfRU5UUlkoQ1NTUHJvcGVydHlPdXRsaW5lLCBvdXRsaW5lUHJvcGVydGllcyk7CiAKICAg
ICBzdGF0aWMgY29uc3QgaW50IHBhZGRpbmdQcm9wZXJ0aWVzW10gPSB7CiAgICAgICAgIENTU1By
b3BlcnR5UGFkZGluZ1RvcCwKQEAgLTE0NCwxNyArMTUxLDE3IEBAIHN0YXRpYyB2b2lkIGluaXRT
aG9ydGhhbmRNYXAoU2hvcnRoYW5kTWFwJiBzaG9ydGhhbmRNYXApCiAgICAgICAgIENTU1Byb3Bl
cnR5UGFkZGluZ0JvdHRvbSwKICAgICAgICAgQ1NTUHJvcGVydHlQYWRkaW5nTGVmdAogICAgIH07
Ci0gICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoc2hvcnRoYW5kTWFwLCBDU1NQcm9wZXJ0eVBh
ZGRpbmcsIHBhZGRpbmdQcm9wZXJ0aWVzKTsKKyAgICBTRVRfU0hPUlRIQU5EX01BUF9FTlRSWShD
U1NQcm9wZXJ0eVBhZGRpbmcsIHBhZGRpbmdQcm9wZXJ0aWVzKTsKIAogICAgIHN0YXRpYyBjb25z
dCBpbnQgd2Via2l0V3JhcFByb3BlcnRpZXNbXSA9IHsKICAgICAgICAgQ1NTUHJvcGVydHlXZWJr
aXRXcmFwRmxvdywKICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRXcmFwTWFyZ2luLAogICAgICAg
ICBDU1NQcm9wZXJ0eVdlYmtpdFdyYXBQYWRkaW5nCiAgICAgfTsKLSAgICBTRVRfU0hPUlRIQU5E
X01BUF9FTlRSWShzaG9ydGhhbmRNYXAsIENTU1Byb3BlcnR5V2Via2l0V3JhcCwgd2Via2l0V3Jh
cFByb3BlcnRpZXMpOworICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZKENTU1Byb3BlcnR5V2Vi
a2l0V3JhcCwgd2Via2l0V3JhcFByb3BlcnRpZXMpOwogCiAgICAgc3RhdGljIGNvbnN0IGludCB0
ZXh0U3Ryb2tlUHJvcGVydGllc1tdID0geyBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2VDb2xv
ciwgQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlV2lkdGggfTsKLSAgICBTRVRfU0hPUlRIQU5E
X01BUF9FTlRSWShzaG9ydGhhbmRNYXAsIENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZSwgdGV4
dFN0cm9rZVByb3BlcnRpZXMpOworICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZKENTU1Byb3Bl
cnR5V2Via2l0VGV4dFN0cm9rZSwgdGV4dFN0cm9rZVByb3BlcnRpZXMpOwogCiAgICAgc3RhdGlj
IGNvbnN0IGludCBiYWNrZ3JvdW5kUHJvcGVydGllc1tdID0gewogICAgICAgICBDU1NQcm9wZXJ0
eUJhY2tncm91bmRBdHRhY2htZW50LApAQCAtMTY3LDIwICsxNzQsMjAgQEAgc3RhdGljIHZvaWQg
aW5pdFNob3J0aGFuZE1hcChTaG9ydGhhbmRNYXAmIHNob3J0aGFuZE1hcCkKICAgICAgICAgQ1NT
UHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WCwKICAgICAgICAgQ1NTUHJvcGVydHlCYWNrZ3JvdW5k
UmVwZWF0WQogICAgIH07Ci0gICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoc2hvcnRoYW5kTWFw
LCBDU1NQcm9wZXJ0eUJhY2tncm91bmQsIGJhY2tncm91bmRQcm9wZXJ0aWVzKTsKKyAgICBTRVRf
U0hPUlRIQU5EX01BUF9FTlRSWShDU1NQcm9wZXJ0eUJhY2tncm91bmQsIGJhY2tncm91bmRQcm9w
ZXJ0aWVzKTsKIAogICAgIHN0YXRpYyBjb25zdCBpbnQgY29sdW1uc1Byb3BlcnRpZXNbXSA9IHsg
Q1NTUHJvcGVydHlXZWJraXRDb2x1bW5XaWR0aCwgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5Db3Vu
dCB9OwotICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZKHNob3J0aGFuZE1hcCwgQ1NTUHJvcGVy
dHlXZWJraXRDb2x1bW5zLCBjb2x1bW5zUHJvcGVydGllcyk7CisgICAgU0VUX1NIT1JUSEFORF9N
QVBfRU5UUlkoQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5zLCBjb2x1bW5zUHJvcGVydGllcyk7CiAK
ICAgICBzdGF0aWMgY29uc3QgaW50IGNvbHVtblJ1bGVQcm9wZXJ0aWVzW10gPSB7CiAgICAgICAg
IENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUnVsZUNvbG9yLAogICAgICAgICBDU1NQcm9wZXJ0eVdl
YmtpdENvbHVtblJ1bGVTdHlsZSwKICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxl
V2lkdGgKICAgICB9OwotICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZKHNob3J0aGFuZE1hcCwg
Q1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxlLCBjb2x1bW5SdWxlUHJvcGVydGllcyk7CisgICAg
U0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxlLCBjb2x1
bW5SdWxlUHJvcGVydGllcyk7CiAKICAgICBzdGF0aWMgY29uc3QgaW50IG92ZXJmbG93UHJvcGVy
dGllc1tdID0geyBDU1NQcm9wZXJ0eU92ZXJmbG93WCwgQ1NTUHJvcGVydHlPdmVyZmxvd1kgfTsK
LSAgICBTRVRfU0hPUlRIQU5EX01BUF9FTlRSWShzaG9ydGhhbmRNYXAsIENTU1Byb3BlcnR5T3Zl
cmZsb3csIG92ZXJmbG93UHJvcGVydGllcyk7CisgICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlko
Q1NTUHJvcGVydHlPdmVyZmxvdywgb3ZlcmZsb3dQcm9wZXJ0aWVzKTsKIAogICAgIHN0YXRpYyBj
b25zdCBpbnQgYm9yZGVyUmFkaXVzUHJvcGVydGllc1tdID0gewogICAgICAgICBDU1NQcm9wZXJ0
eUJvcmRlclRvcFJpZ2h0UmFkaXVzLApAQCAtMTg4LDE0ICsxOTUsMTQgQEAgc3RhdGljIHZvaWQg
aW5pdFNob3J0aGFuZE1hcChTaG9ydGhhbmRNYXAmIHNob3J0aGFuZE1hcCkKICAgICAgICAgQ1NT
UHJvcGVydHlCb3JkZXJCb3R0b21MZWZ0UmFkaXVzLAogICAgICAgICBDU1NQcm9wZXJ0eUJvcmRl
ckJvdHRvbVJpZ2h0UmFkaXVzCiAgICAgfTsKLSAgICBTRVRfU0hPUlRIQU5EX01BUF9FTlRSWShz
aG9ydGhhbmRNYXAsIENTU1Byb3BlcnR5Qm9yZGVyUmFkaXVzLCBib3JkZXJSYWRpdXNQcm9wZXJ0
aWVzKTsKLSAgICBTRVRfU0hPUlRIQU5EX01BUF9FTlRSWShzaG9ydGhhbmRNYXAsIENTU1Byb3Bl
cnR5V2Via2l0Qm9yZGVyUmFkaXVzLCBib3JkZXJSYWRpdXNQcm9wZXJ0aWVzKTsKKyAgICBTRVRf
U0hPUlRIQU5EX01BUF9FTlRSWShDU1NQcm9wZXJ0eUJvcmRlclJhZGl1cywgYm9yZGVyUmFkaXVz
UHJvcGVydGllcyk7CisgICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoQ1NTUHJvcGVydHlXZWJr
aXRCb3JkZXJSYWRpdXMsIGJvcmRlclJhZGl1c1Byb3BlcnRpZXMpOwogCiAgICAgc3RhdGljIGNv
bnN0IGludCBtYXNrUG9zaXRpb25Qcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5V2Via2l0TWFz
a1Bvc2l0aW9uWCwgQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25ZIH07Ci0gICAgU0VUX1NI
T1JUSEFORF9NQVBfRU5UUlkoc2hvcnRoYW5kTWFwLCBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3Np
dGlvbiwgbWFza1Bvc2l0aW9uUHJvcGVydGllcyk7CisgICAgU0VUX1NIT1JUSEFORF9NQVBfRU5U
UlkoQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb24sIG1hc2tQb3NpdGlvblByb3BlcnRpZXMp
OwogCiAgICAgc3RhdGljIGNvbnN0IGludCBtYXNrUmVwZWF0UHJvcGVydGllc1tdID0geyBDU1NQ
cm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXRYLCBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXRZIH07
Ci0gICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoc2hvcnRoYW5kTWFwLCBDU1NQcm9wZXJ0eVdl
YmtpdE1hc2tSZXBlYXQsIG1hc2tSZXBlYXRQcm9wZXJ0aWVzKTsKKyAgICBTRVRfU0hPUlRIQU5E
X01BUF9FTlRSWShDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXQsIG1hc2tSZXBlYXRQcm9wZXJ0
aWVzKTsKIAogICAgIHN0YXRpYyBjb25zdCBpbnQgbWFza1Byb3BlcnRpZXNbXSA9IHsKICAgICAg
ICAgQ1NTUHJvcGVydHlXZWJraXRNYXNrQXR0YWNobWVudCwKQEAgLTIwNyw3ICsyMTQsNyBAQCBz
dGF0aWMgdm9pZCBpbml0U2hvcnRoYW5kTWFwKFNob3J0aGFuZE1hcCYgc2hvcnRoYW5kTWFwKQog
ICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXRYLAogICAgICAgICBDU1NQcm9wZXJ0
eVdlYmtpdE1hc2tSZXBlYXRZCiAgICAgfTsKLSAgICBTRVRfU0hPUlRIQU5EX01BUF9FTlRSWShz
aG9ydGhhbmRNYXAsIENTU1Byb3BlcnR5V2Via2l0TWFzaywgbWFza1Byb3BlcnRpZXMpOworICAg
IFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZKENTU1Byb3BlcnR5V2Via2l0TWFzaywgbWFza1Byb3Bl
cnRpZXMpOwogCiAgICAgc3RhdGljIGNvbnN0IGludCBhbmltYXRpb25Qcm9wZXJ0aWVzW10gPSB7
CiAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uTmFtZSwKQEAgLTIxOCw3ICsyMjUs
NyBAQCBzdGF0aWMgdm9pZCBpbml0U2hvcnRoYW5kTWFwKFNob3J0aGFuZE1hcCYgc2hvcnRoYW5k
TWFwKQogICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkRpcmVjdGlvbiwKICAgICAg
ICAgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25GaWxsTW9kZQogICAgIH07Ci0gICAgU0VUX1NI
T1JUSEFORF9NQVBfRU5UUlkoc2hvcnRoYW5kTWFwLCBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlv
biwgYW5pbWF0aW9uUHJvcGVydGllcyk7CisgICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoQ1NT
UHJvcGVydHlXZWJraXRBbmltYXRpb24sIGFuaW1hdGlvblByb3BlcnRpZXMpOwogCiAgICAgc3Rh
dGljIGNvbnN0IGludCB0cmFuc2l0aW9uUHJvcGVydGllc1tdID0gewogICAgICAgICBDU1NQcm9w
ZXJ0eVdlYmtpdFRyYW5zaXRpb25Qcm9wZXJ0eSwKQEAgLTIyNiwzMSArMjMzLDIxIEBAIHN0YXRp
YyB2b2lkIGluaXRTaG9ydGhhbmRNYXAoU2hvcnRoYW5kTWFwJiBzaG9ydGhhbmRNYXApCiAgICAg
ICAgIENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvblRpbWluZ0Z1bmN0aW9uLAogICAgICAgICBD
U1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb25EZWxheQogICAgIH07Ci0gICAgU0VUX1NIT1JUSEFO
RF9NQVBfRU5UUlkoc2hvcnRoYW5kTWFwLCBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb24sIHRy
YW5zaXRpb25Qcm9wZXJ0aWVzKTsKKyAgICBTRVRfU0hPUlRIQU5EX01BUF9FTlRSWShDU1NQcm9w
ZXJ0eVdlYmtpdFRyYW5zaXRpb24sIHRyYW5zaXRpb25Qcm9wZXJ0aWVzKTsKIAogICAgIHN0YXRp
YyBjb25zdCBpbnQgdHJhbnNmb3JtT3JpZ2luUHJvcGVydGllc1tdID0gewogICAgICAgICBDU1NQ
cm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdpblgsCiAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0
VHJhbnNmb3JtT3JpZ2luWQogICAgIH07Ci0gICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoc2hv
cnRoYW5kTWFwLCBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdpbiwgdHJhbnNmb3JtT3Jp
Z2luUHJvcGVydGllcyk7CisgICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoQ1NTUHJvcGVydHlX
ZWJraXRUcmFuc2Zvcm1PcmlnaW4sIHRyYW5zZm9ybU9yaWdpblByb3BlcnRpZXMpOwogCiAgICAg
c3RhdGljIGNvbnN0IGludCB0ZXh0RW1waGFzaXNQcm9wZXJ0aWVzW10gPSB7CiAgICAgICAgIENT
U1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzQ29sb3IsCiAgICAgICAgIENTU1Byb3BlcnR5V2Vi
a2l0VGV4dEVtcGhhc2lzU3R5bGUKICAgICB9OwotICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZ
KHNob3J0aGFuZE1hcCwgQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXMsIHRleHRFbXBoYXNp
c1Byb3BlcnRpZXMpOworICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZKENTU1Byb3BlcnR5V2Vi
a2l0VGV4dEVtcGhhc2lzLCB0ZXh0RW1waGFzaXNQcm9wZXJ0aWVzKTsKIAogICAgICN1bmRlZiBT
RVRfU0hPUlRIQU5EX01BUF9FTlRSWQogfQogCi1DU1NQcm9wZXJ0eUxvbmdoYW5kIGxvbmdoYW5k
Rm9yUHJvcGVydHkoaW50IHByb3BlcnR5SUQpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChT
aG9ydGhhbmRNYXAsIHNob3J0aGFuZE1hcCwgKCkpOwotICAgIGlmIChzaG9ydGhhbmRNYXAuaXNF
bXB0eSgpKQotICAgICAgICBpbml0U2hvcnRoYW5kTWFwKHNob3J0aGFuZE1hcCk7Ci0KLSAgICBy
ZXR1cm4gc2hvcnRoYW5kTWFwLmdldChwcm9wZXJ0eUlEKTsKLX0KLQotCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlMb25n
aGFuZC5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TG9uZ2hhbmQuaAppbmRleCA5
NjMzYzAyNWFiZmRhYTJjN2Q5YzhmMzRlNDIyNmNhMWQxM2IxZDQzLi5jNDc1MGM2MmZiMjM0MmU5
MGE1YWE3ZGUwMDA3YWQzMjk0MmYyZmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTUHJvcGVydHlMb25naGFuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0
eUxvbmdoYW5kLmgKQEAgLTIxLDYgKzIxLDEwIEBACiAjaWZuZGVmIENTU1Byb3BlcnR5TG9uZ2hh
bmRfaAogI2RlZmluZSBDU1NQcm9wZXJ0eUxvbmdoYW5kX2gKIAorI2luY2x1ZGUgIkNTU1Byb3Bl
cnR5TmFtZXMuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ1NTUHJvcGVydHlM
b25naGFuZCB7CkBAIC00NSw4ICs0OSw0MCBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fbGVu
Z3RoOwogfTsKIAotLy8gUmV0dXJucyBhbiBlbXB0eSBsaXN0IGlmIHRoZSBwcm9wZXJ0eSBpcyBu
b3QgYSBzaG9ydGhhbmQKLUNTU1Byb3BlcnR5TG9uZ2hhbmQgbG9uZ2hhbmRGb3JQcm9wZXJ0eShp
bnQpOworY2xhc3MgQ1NTUHJvcGVydHlMb25naGFuZE1hcCB7CisgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoQ1NTUHJvcGVydHlMb25naGFuZE1hcCk7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0
IENTU1Byb3BlcnR5TG9uZ2hhbmRNYXAmIHNoYXJlZENTU1Byb3BlcnR5TG9uZ2hhbmRNYXAoKTsK
KworICAgIC8vIFJldHVybnMgYW4gZW1wdHkgbGlzdCBpZiB0aGUgcHJvcGVydHkgaXMgbm90IGEg
c2hvcnRoYW5kCisgICAgY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgbG9uZ2hhbmRGb3JQcm9w
ZXJ0eShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5KSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJU
KHZhbGlkKHByb3BlcnR5KSk7CisgICAgICAgIHJldHVybiBtX3Byb3BlcnR5TWFwW2luZGV4KHBy
b3BlcnR5KV07CisgICAgfQorcHJpdmF0ZToKKyAgICBDU1NQcm9wZXJ0eUxvbmdoYW5kTWFwKCk7
CisKKyAgICBzdGF0aWMgaW50IGluZGV4KENTU1Byb3BlcnR5SUQgcHJvcGVydHkpCisgICAgewor
ICAgICAgICByZXR1cm4gcHJvcGVydHkgLSBmaXJzdENTU1Byb3BlcnR5OworICAgIH0KKworICAg
IHN0YXRpYyBib29sIHZhbGlkKENTU1Byb3BlcnR5SUQgcHJvcGVydHkpCisgICAgeworICAgICAg
ICBpbnQgaSA9IGluZGV4KHByb3BlcnR5KTsKKyAgICAgICAgcmV0dXJuIGkgPj0gMCAmJiBpIDwg
bnVtQ1NTUHJvcGVydGllczsKKyAgICB9CisKKyAgICB2b2lkIHNldFByb3BlcnR5SGFuZGxlcihD
U1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBDU1NQcm9wZXJ0eUxvbmdoYW5kIGhhbmRsZXIpCisgICAg
eworICAgICAgICBBU1NFUlQodmFsaWQocHJvcGVydHkpKTsKKyAgICAgICAgQVNTRVJUKCFwcm9w
ZXJ0eUhhbmRsZXIocHJvcGVydHkpLmlzVmFsaWQoKSk7CisgICAgICAgIG1fcHJvcGVydHlNYXBb
aW5kZXgocHJvcGVydHkpXSA9IGhhbmRsZXI7CisgICAgfQorCisgICAgQ1NTUHJvcGVydHlMb25n
aGFuZCBtX3Byb3BlcnR5TWFwW251bUNTU1Byb3BlcnRpZXNdOworfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0
eVNldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5jcHAKaW5kZXgg
NjU0NTJlYzNiMGFhODE1MDc0NzkyOWYxNzgwZmFiZGQ2NDZiZjRmZS4uYTBlNTgwMGVmOTY0Yjc2
M2E1OGM5OWMyODIwZGUzMmQ0ZWNmNTZjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlUHJvcGVydHlTZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3Bl
cnR5U2V0LmNwcApAQCAtNTA4LDcgKzUwOCw4IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IFN0eWxl
UHJvcGVydHlTZXQ6OmdldFByb3BlcnR5Q1NTVmFsdWUoaW50IHByb3BlcnR5SUQpIGNvbnN0CiAK
IGJvb2wgU3R5bGVQcm9wZXJ0eVNldDo6cmVtb3ZlU2hvcnRoYW5kUHJvcGVydHkoaW50IHByb3Bl
cnR5SUQpCiB7Ci0gICAgQ1NTUHJvcGVydHlMb25naGFuZCBsb25naGFuZCA9IGxvbmdoYW5kRm9y
UHJvcGVydHkocHJvcGVydHlJRCk7CisgICAgY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZE1hcCYg
bG9uZ2hhbmRNYXAgPSBDU1NQcm9wZXJ0eUxvbmdoYW5kTWFwOjpzaGFyZWRDU1NQcm9wZXJ0eUxv
bmdoYW5kTWFwKCk7CisgICAgQ1NTUHJvcGVydHlMb25naGFuZCBsb25naGFuZCA9IGxvbmdoYW5k
TWFwLmxvbmdoYW5kRm9yUHJvcGVydHkoc3RhdGljX2Nhc3Q8Q1NTUHJvcGVydHlJRD4ocHJvcGVy
dHlJRCkpOwogICAgIGlmICghbG9uZ2hhbmQubGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICByZXR1cm4gcmVtb3ZlUHJvcGVydGllc0luU2V0KGxvbmdoYW5kLnByb3BlcnRpZXMo
KSwgbG9uZ2hhbmQubGVuZ3RoKCkpOwpAQCAtNTQ2LDcgKzU0Nyw4IEBAIGJvb2wgU3R5bGVQcm9w
ZXJ0eVNldDo6cHJvcGVydHlJc0ltcG9ydGFudChpbnQgcHJvcGVydHlJRCkgY29uc3QKICAgICBp
ZiAocHJvcGVydHkpCiAgICAgICAgIHJldHVybiBwcm9wZXJ0eS0+aXNJbXBvcnRhbnQoKTsKIAot
ICAgIENTU1Byb3BlcnR5TG9uZ2hhbmQgbG9uZ2hhbmRzID0gbG9uZ2hhbmRGb3JQcm9wZXJ0eShw
cm9wZXJ0eUlEKTsKKyAgICBjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kTWFwJiBsb25naGFuZE1h
cCA9IENTU1Byb3BlcnR5TG9uZ2hhbmRNYXA6OnNoYXJlZENTU1Byb3BlcnR5TG9uZ2hhbmRNYXAo
KTsKKyAgICBDU1NQcm9wZXJ0eUxvbmdoYW5kIGxvbmdoYW5kcyA9IGxvbmdoYW5kTWFwLmxvbmdo
YW5kRm9yUHJvcGVydHkoc3RhdGljX2Nhc3Q8Q1NTUHJvcGVydHlJRD4ocHJvcGVydHlJRCkpOwog
ICAgIGlmICghbG9uZ2hhbmRzLmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAg
LTU4NSw3ICs1ODcsOCBAQCBib29sIFN0eWxlUHJvcGVydHlTZXQ6OnNldFByb3BlcnR5KGludCBw
cm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmIHZhbHVlLCBib29sIGltcAogCiB2b2lkIFN0eWxlUHJv
cGVydHlTZXQ6OnNldFByb3BlcnR5KGludCBwcm9wZXJ0eUlELCBQYXNzUmVmUHRyPENTU1ZhbHVl
PiBwcnBWYWx1ZSwgYm9vbCBpbXBvcnRhbnQpCiB7Ci0gICAgQ1NTUHJvcGVydHlMb25naGFuZCBs
b25naGFuZCA9IGxvbmdoYW5kRm9yUHJvcGVydHkocHJvcGVydHlJRCk7CisgICAgY29uc3QgQ1NT
UHJvcGVydHlMb25naGFuZE1hcCYgbG9uZ2hhbmRNYXAgPSBDU1NQcm9wZXJ0eUxvbmdoYW5kTWFw
OjpzaGFyZWRDU1NQcm9wZXJ0eUxvbmdoYW5kTWFwKCk7CisgICAgQ1NTUHJvcGVydHlMb25naGFu
ZCBsb25naGFuZCA9IGxvbmdoYW5kTWFwLmxvbmdoYW5kRm9yUHJvcGVydHkoc3RhdGljX2Nhc3Q8
Q1NTUHJvcGVydHlJRD4ocHJvcGVydHlJRCkpOwogICAgIGlmICghbG9uZ2hhbmQubGVuZ3RoKCkp
IHsKICAgICAgICAgc2V0UHJvcGVydHkoQ1NTUHJvcGVydHkocHJvcGVydHlJRCwgcHJwVmFsdWUs
IGltcG9ydGFudCkpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
YW5pbWF0aW9uL0FuaW1hdGlvbkJhc2UuY3BwCmluZGV4IGUwNmMwN2ZjODgyYTYyOTZlMzQ1NTMw
MTRjMTA4OGUwOTExODA0NWQuLmE4NzFmNjM4MWMzODVlZmVhMmE0M2I2ODAwYmEwOWQ0MzI3MmEy
YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJh
c2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJhc2Uu
Y3BwCkBAIC0xMTY3LDkgKzExNjcsMTAgQEAgc3RhdGljIHZvaWQgYWRkU2hvcnRoYW5kUHJvcGVy
dGllcygpCiAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luCiAgICAgfTsK
IAorICAgIGNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmRNYXAmIGxvbmdoYW5kTWFwID0gQ1NTUHJv
cGVydHlMb25naGFuZE1hcDo6c2hhcmVkQ1NTUHJvcGVydHlMb25naGFuZE1hcCgpOwogICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgV1RGX0FSUkFZX0xFTkdUSChhbmltYXRhYmxlU2hvcnRoYW5k
UHJvcGVydGllcyk7ICsraSkgewogICAgICAgICBpbnQgcHJvcGVydHlJRCA9IGFuaW1hdGFibGVT
aG9ydGhhbmRQcm9wZXJ0aWVzW2ldOwotICAgICAgICBDU1NQcm9wZXJ0eUxvbmdoYW5kIGxvbmdo
YW5kID0gbG9uZ2hhbmRGb3JQcm9wZXJ0eShwcm9wZXJ0eUlEKTsKKyAgICAgICAgQ1NTUHJvcGVy
dHlMb25naGFuZCBsb25naGFuZCA9IGxvbmdoYW5kTWFwLmxvbmdoYW5kRm9yUHJvcGVydHkoc3Rh
dGljX2Nhc3Q8Q1NTUHJvcGVydHlJRD4ocHJvcGVydHlJRCkpOwogICAgICAgICBpZiAobG9uZ2hh
bmQubGVuZ3RoKCkgPiAwKQogICAgICAgICAgICAgYWRkUHJvcGVydHlXcmFwcGVyKHByb3BlcnR5
SUQsIG5ldyBTaG9ydGhhbmRQcm9wZXJ0eVdyYXBwZXIocHJvcGVydHlJRCwgbG9uZ2hhbmQpKTsK
ICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132761</attachid>
            <date>2012-03-19 22:36:19 -0700</date>
            <delta_ts>2012-03-19 23:47:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81611-20120320163617.patch</filename>
            <type>text/plain</type>
            <size>19493</size>
            <attacher name="Luke Macpherson">macpherson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExMzUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzExNDJlNzIyZjgwOWZm
OTI4NzRhZjlmNjEwNjAxOTBiYzQ4ZDg1NS4uZTI3NWY3ZDU5MmQ4ZjMxODM5ODY4YjRiZGQ4YTc3
MjdiMTZkN2Q2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEyLTAzLTE5ICBMdWtl
IE1hY3BoZXJzb24gIDxtYWNwaGVyc29uQGNocm9taXVtLm9yZz4KKworICAgICAgICBNYWtlIENT
U0xvbmdoYW5kUHJvcGVydHkgdXNlIGEgbG9va3VwIHRhYmxlIGluc3RlYWQgb2YgYSBoYXNoIG1h
cC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgxNjEx
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3
IHRlc3RzIC0gcmVmYWN0b3Jpbmcgb25seS4KKworICAgICAgICAqIGNzcy9DU1NQcm9wZXJ0eUxv
bmdoYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5TG9uZ2hhbmRNYXA6OnNo
YXJlZENTU1Byb3BlcnR5TG9uZ2hhbmRNYXApOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVy
dHlMb25naGFuZE1hcDo6Q1NTUHJvcGVydHlMb25naGFuZE1hcCk6CisgICAgICAgICogY3NzL0NT
U1Byb3BlcnR5TG9uZ2hhbmQuaDoKKyAgICAgICAgKENTU1Byb3BlcnR5TG9uZ2hhbmRNYXApOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlMb25naGFuZE1hcDo6bG9uZ2hhbmRGb3JQcm9w
ZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eUxvbmdoYW5kTWFwOjppbmRleCk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eUxvbmdoYW5kTWFwOjp2YWxpZCk6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eUxvbmdoYW5kTWFwOjpzZXRQcm9wZXJ0eUhhbmRsZXIp
OgorICAgICAgICAqIGNzcy9TdHlsZVByb3BlcnR5U2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlUHJvcGVydHlTZXQ6OnJlbW92ZVNob3J0aGFuZFByb3BlcnR5KToKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlUHJvcGVydHlTZXQ6OnByb3BlcnR5SXNJbXBvcnRhbnQpOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGVQcm9wZXJ0eVNldDo6c2V0UHJvcGVydHkpOgorICAgICAgICAqIHBhZ2Uv
YW5pbWF0aW9uL0FuaW1hdGlvbkJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YWRkU2hvcnRo
YW5kUHJvcGVydGllcyk6CisKIDIwMTItMDMtMTkgIEp1bGllbiBDaGFmZnJhaXggIDxqY2hhZmZy
YWl4QHdlYmtpdC5vcmc+CiAKICAgICAgICAgTW92ZSB0aGUgZXh0cmEgbG9naWNhbCBoZWlnaHQg
ZGlzdHJpYnV0aW9uIGludG8gUmVuZGVyVGFibGUgYXMgYSBuZXcgc3RlcCBpbiBvdXIgbGF5b3V0
IGFsZ29yaXRobQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TG9u
Z2hhbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TG9uZ2hhbmQuY3BwCmlu
ZGV4IDBkMDNiMjBiZmQ0NTE2ZmNjN2Y5YzUzMTEyMTczMWI3NTgwMGMxZGMuLjY3OTk5OWVkMzUz
NjcwNDQ1OGVkOTMyMjhkNzk1NjgyYzlhN2Q4YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NQcm9wZXJ0eUxvbmdoYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UHJvcGVydHlMb25naGFuZC5jcHAKQEAgLTI3LDEyICsyNywxOSBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLXR5cGVkZWYgSGFzaE1hcDxpbnQsIENTU1Byb3BlcnR5TG9uZ2hhbmQ+IFNob3J0
aGFuZE1hcDsKK2NvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmRNYXAmIENTU1Byb3BlcnR5TG9uZ2hh
bmRNYXA6OnNoYXJlZENTU1Byb3BlcnR5TG9uZ2hhbmRNYXAoKQoreworICAgIERFRklORV9TVEFU
SUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZE1hcCwgY3NzUHJvcGVydHlMb25naGFuZE1hcElu
c3RhbmNlLCAoKSk7CisgICAgcmV0dXJuIGNzc1Byb3BlcnR5TG9uZ2hhbmRNYXBJbnN0YW5jZTsK
K30KIAotc3RhdGljIHZvaWQgaW5pdFNob3J0aGFuZE1hcChTaG9ydGhhbmRNYXAmIHNob3J0aGFu
ZE1hcCkKK0NTU1Byb3BlcnR5TG9uZ2hhbmRNYXA6OkNTU1Byb3BlcnR5TG9uZ2hhbmRNYXAoKQog
ewotICAgICNkZWZpbmUgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkobWFwLCBwcm9wSUQsIGFycmF5
KSBcCi0gICAgICAgIG1hcC5zZXQocHJvcElELCBDU1NQcm9wZXJ0eUxvbmdoYW5kKGFycmF5LCBX
VEZfQVJSQVlfTEVOR1RIKGFycmF5KSkpCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1DU1NQ
cm9wZXJ0aWVzOyArK2kpCisgICAgICAgIG1fcHJvcGVydHlNYXBbaV0gPSBDU1NQcm9wZXJ0eUxv
bmdoYW5kKCk7CisKKyAgICAjZGVmaW5lIFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZKHByb3BJRCwg
YXJyYXkpIFwKKyAgICAgICAgbV9wcm9wZXJ0eU1hcFtwcm9wSURdID0gQ1NTUHJvcGVydHlMb25n
aGFuZChhcnJheSwgV1RGX0FSUkFZX0xFTkdUSChhcnJheSkpCiAKICAgICBzdGF0aWMgY29uc3Qg
aW50IGZvbnRQcm9wZXJ0aWVzW10gPSB7CiAgICAgICAgIENTU1Byb3BlcnR5Rm9udEZhbWlseSwK
QEAgLTQyLDcgKzQ5LDcgQEAgc3RhdGljIHZvaWQgaW5pdFNob3J0aGFuZE1hcChTaG9ydGhhbmRN
YXAmIHNob3J0aGFuZE1hcCkKICAgICAgICAgQ1NTUHJvcGVydHlGb250V2VpZ2h0LAogICAgICAg
ICBDU1NQcm9wZXJ0eUxpbmVIZWlnaHQKICAgICB9OwotICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VO
VFJZKHNob3J0aGFuZE1hcCwgQ1NTUHJvcGVydHlGb250LCBmb250UHJvcGVydGllcyk7CisgICAg
U0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoQ1NTUHJvcGVydHlGb250LCBmb250UHJvcGVydGllcyk7
CiAKICAgICAvLyBEbyBub3QgY2hhbmdlIHRoZSBvcmRlciBvZiB0aGUgZm9sbG93aW5nIGZvdXIg
c2hvcnRoYW5kcywgYW5kIGtlZXAgdGhlbSB0b2dldGhlci4KICAgICBzdGF0aWMgY29uc3QgaW50
IGJvcmRlclByb3BlcnRpZXNbNF1bM10gPSB7CkBAIC01MSwxMiArNTgsMTIgQEAgc3RhdGljIHZv
aWQgaW5pdFNob3J0aGFuZE1hcChTaG9ydGhhbmRNYXAmIHNob3J0aGFuZE1hcCkKICAgICAgICAg
eyBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbUNvbG9yLCBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVN0
eWxlLCBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVdpZHRoIH0sCiAgICAgICAgIHsgQ1NTUHJvcGVy
dHlCb3JkZXJMZWZ0Q29sb3IsIENTU1Byb3BlcnR5Qm9yZGVyTGVmdFN0eWxlLCBDU1NQcm9wZXJ0
eUJvcmRlckxlZnRXaWR0aCB9CiAgICAgfTsKLSAgICBTRVRfU0hPUlRIQU5EX01BUF9FTlRSWShz
aG9ydGhhbmRNYXAsIENTU1Byb3BlcnR5Qm9yZGVyVG9wLCBib3JkZXJQcm9wZXJ0aWVzWzBdKTsK
LSAgICBTRVRfU0hPUlRIQU5EX01BUF9FTlRSWShzaG9ydGhhbmRNYXAsIENTU1Byb3BlcnR5Qm9y
ZGVyUmlnaHQsIGJvcmRlclByb3BlcnRpZXNbMV0pOwotICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VO
VFJZKHNob3J0aGFuZE1hcCwgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b20sIGJvcmRlclByb3BlcnRp
ZXNbMl0pOwotICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZKHNob3J0aGFuZE1hcCwgQ1NTUHJv
cGVydHlCb3JkZXJMZWZ0LCBib3JkZXJQcm9wZXJ0aWVzWzNdKTsKKyAgICBTRVRfU0hPUlRIQU5E
X01BUF9FTlRSWShDU1NQcm9wZXJ0eUJvcmRlclRvcCwgYm9yZGVyUHJvcGVydGllc1swXSk7Cisg
ICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoQ1NTUHJvcGVydHlCb3JkZXJSaWdodCwgYm9yZGVy
UHJvcGVydGllc1sxXSk7CisgICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoQ1NTUHJvcGVydHlC
b3JkZXJCb3R0b20sIGJvcmRlclByb3BlcnRpZXNbMl0pOworICAgIFNFVF9TSE9SVEhBTkRfTUFQ
X0VOVFJZKENTU1Byb3BlcnR5Qm9yZGVyTGVmdCwgYm9yZGVyUHJvcGVydGllc1szXSk7CiAKLSAg
ICBzaG9ydGhhbmRNYXAuc2V0KENTU1Byb3BlcnR5Qm9yZGVyLCBDU1NQcm9wZXJ0eUxvbmdoYW5k
KGJvcmRlclByb3BlcnRpZXNbMF0sIHNpemVvZihib3JkZXJQcm9wZXJ0aWVzKSAvIHNpemVvZihi
b3JkZXJQcm9wZXJ0aWVzWzBdWzBdKSkpOworICAgIG1fcHJvcGVydHlNYXBbQ1NTUHJvcGVydHlC
b3JkZXJdID0gQ1NTUHJvcGVydHlMb25naGFuZChib3JkZXJQcm9wZXJ0aWVzWzBdLCBzaXplb2Yo
Ym9yZGVyUHJvcGVydGllcykgLyBzaXplb2YoYm9yZGVyUHJvcGVydGllc1swXVswXSkpOwogCiAg
ICAgc3RhdGljIGNvbnN0IGludCBib3JkZXJDb2xvclByb3BlcnRpZXNbXSA9IHsKICAgICAgICAg
Q1NTUHJvcGVydHlCb3JkZXJUb3BDb2xvciwKQEAgLTY0LDcgKzcxLDcgQEAgc3RhdGljIHZvaWQg
aW5pdFNob3J0aGFuZE1hcChTaG9ydGhhbmRNYXAmIHNob3J0aGFuZE1hcCkKICAgICAgICAgQ1NT
UHJvcGVydHlCb3JkZXJCb3R0b21Db2xvciwKICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0
Q29sb3IKICAgICB9OwotICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZKHNob3J0aGFuZE1hcCwg
Q1NTUHJvcGVydHlCb3JkZXJDb2xvciwgYm9yZGVyQ29sb3JQcm9wZXJ0aWVzKTsKKyAgICBTRVRf
U0hPUlRIQU5EX01BUF9FTlRSWShDU1NQcm9wZXJ0eUJvcmRlckNvbG9yLCBib3JkZXJDb2xvclBy
b3BlcnRpZXMpOwogCiAgICAgc3RhdGljIGNvbnN0IGludCBib3JkZXJJbWFnZVByb3BlcnRpZXNb
XSA9IHsKICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJJbWFnZVNvdXJjZSwKQEAgLTczLDcgKzgw
LDcgQEAgc3RhdGljIHZvaWQgaW5pdFNob3J0aGFuZE1hcChTaG9ydGhhbmRNYXAmIHNob3J0aGFu
ZE1hcCkKICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJJbWFnZU91dHNldCwKICAgICAgICAgQ1NT
UHJvcGVydHlCb3JkZXJJbWFnZVJlcGVhdAogICAgIH07Ci0gICAgU0VUX1NIT1JUSEFORF9NQVBf
RU5UUlkoc2hvcnRoYW5kTWFwLCBDU1NQcm9wZXJ0eUJvcmRlckltYWdlLCBib3JkZXJJbWFnZVBy
b3BlcnRpZXMpOworICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZKENTU1Byb3BlcnR5Qm9yZGVy
SW1hZ2UsIGJvcmRlckltYWdlUHJvcGVydGllcyk7CiAKICAgICBzdGF0aWMgY29uc3QgaW50IGJv
cmRlclN0eWxlUHJvcGVydGllc1tdID0gewogICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlclRvcFN0
eWxlLApAQCAtODEsNyArODgsNyBAQCBzdGF0aWMgdm9pZCBpbml0U2hvcnRoYW5kTWFwKFNob3J0
aGFuZE1hcCYgc2hvcnRoYW5kTWFwKQogICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVN0
eWxlLAogICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlckxlZnRTdHlsZQogICAgIH07Ci0gICAgU0VU
X1NIT1JUSEFORF9NQVBfRU5UUlkoc2hvcnRoYW5kTWFwLCBDU1NQcm9wZXJ0eUJvcmRlclN0eWxl
LCBib3JkZXJTdHlsZVByb3BlcnRpZXMpOworICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZKENT
U1Byb3BlcnR5Qm9yZGVyU3R5bGUsIGJvcmRlclN0eWxlUHJvcGVydGllcyk7CiAKICAgICBzdGF0
aWMgY29uc3QgaW50IGJvcmRlcldpZHRoUHJvcGVydGllc1tdID0gewogICAgICAgICBDU1NQcm9w
ZXJ0eUJvcmRlclRvcFdpZHRoLApAQCAtODksMjYgKzk2LDI2IEBAIHN0YXRpYyB2b2lkIGluaXRT
aG9ydGhhbmRNYXAoU2hvcnRoYW5kTWFwJiBzaG9ydGhhbmRNYXApCiAgICAgICAgIENTU1Byb3Bl
cnR5Qm9yZGVyQm90dG9tV2lkdGgsCiAgICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyTGVmdFdpZHRo
CiAgICAgfTsKLSAgICBTRVRfU0hPUlRIQU5EX01BUF9FTlRSWShzaG9ydGhhbmRNYXAsIENTU1By
b3BlcnR5Qm9yZGVyV2lkdGgsIGJvcmRlcldpZHRoUHJvcGVydGllcyk7CisgICAgU0VUX1NIT1JU
SEFORF9NQVBfRU5UUlkoQ1NTUHJvcGVydHlCb3JkZXJXaWR0aCwgYm9yZGVyV2lkdGhQcm9wZXJ0
aWVzKTsKIAogICAgIHN0YXRpYyBjb25zdCBpbnQgYmFja2dyb3VuZFBvc2l0aW9uUHJvcGVydGll
c1tdID0geyBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvblgsIENTU1Byb3BlcnR5QmFja2dy
b3VuZFBvc2l0aW9uWSB9OwotICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZKHNob3J0aGFuZE1h
cCwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb24sIGJhY2tncm91bmRQb3NpdGlvblByb3Bl
cnRpZXMpOworICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZKENTU1Byb3BlcnR5QmFja2dyb3Vu
ZFBvc2l0aW9uLCBiYWNrZ3JvdW5kUG9zaXRpb25Qcm9wZXJ0aWVzKTsKIAogICAgIHN0YXRpYyBj
b25zdCBpbnQgYmFja2dyb3VuZFJlcGVhdFByb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlCYWNr
Z3JvdW5kUmVwZWF0WCwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WSB9OwotICAgIFNFVF9T
SE9SVEhBTkRfTUFQX0VOVFJZKHNob3J0aGFuZE1hcCwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVw
ZWF0LCBiYWNrZ3JvdW5kUmVwZWF0UHJvcGVydGllcyk7CisgICAgU0VUX1NIT1JUSEFORF9NQVBf
RU5UUlkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0LCBiYWNrZ3JvdW5kUmVwZWF0UHJvcGVy
dGllcyk7CiAKICAgICBzdGF0aWMgY29uc3QgaW50IGJvcmRlclNwYWNpbmdQcm9wZXJ0aWVzW10g
PSB7IENTU1Byb3BlcnR5V2Via2l0Qm9yZGVySG9yaXpvbnRhbFNwYWNpbmcsIENTU1Byb3BlcnR5
V2Via2l0Qm9yZGVyVmVydGljYWxTcGFjaW5nIH07Ci0gICAgU0VUX1NIT1JUSEFORF9NQVBfRU5U
Ulkoc2hvcnRoYW5kTWFwLCBDU1NQcm9wZXJ0eUJvcmRlclNwYWNpbmcsIGJvcmRlclNwYWNpbmdQ
cm9wZXJ0aWVzKTsKKyAgICBTRVRfU0hPUlRIQU5EX01BUF9FTlRSWShDU1NQcm9wZXJ0eUJvcmRl
clNwYWNpbmcsIGJvcmRlclNwYWNpbmdQcm9wZXJ0aWVzKTsKIAogICAgIHN0YXRpYyBjb25zdCBp
bnQgZmxleEZsb3dQcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5V2Via2l0RmxleERpcmVjdGlv
biwgQ1NTUHJvcGVydHlXZWJraXRGbGV4V3JhcCB9OwotICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VO
VFJZKHNob3J0aGFuZE1hcCwgQ1NTUHJvcGVydHlXZWJraXRGbGV4RmxvdywgZmxleEZsb3dQcm9w
ZXJ0aWVzKTsKKyAgICBTRVRfU0hPUlRIQU5EX01BUF9FTlRSWShDU1NQcm9wZXJ0eVdlYmtpdEZs
ZXhGbG93LCBmbGV4Rmxvd1Byb3BlcnRpZXMpOwogCiAgICAgc3RhdGljIGNvbnN0IGludCBsaXN0
U3R5bGVQcm9wZXJ0aWVzW10gPSB7CiAgICAgICAgIENTU1Byb3BlcnR5TGlzdFN0eWxlSW1hZ2Us
CiAgICAgICAgIENTU1Byb3BlcnR5TGlzdFN0eWxlUG9zaXRpb24sCiAgICAgICAgIENTU1Byb3Bl
cnR5TGlzdFN0eWxlVHlwZQogICAgIH07Ci0gICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoc2hv
cnRoYW5kTWFwLCBDU1NQcm9wZXJ0eUxpc3RTdHlsZSwgbGlzdFN0eWxlUHJvcGVydGllcyk7Cisg
ICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoQ1NTUHJvcGVydHlMaXN0U3R5bGUsIGxpc3RTdHls
ZVByb3BlcnRpZXMpOwogCiAgICAgc3RhdGljIGNvbnN0IGludCBtYXJnaW5Qcm9wZXJ0aWVzW10g
PSB7CiAgICAgICAgIENTU1Byb3BlcnR5TWFyZ2luVG9wLApAQCAtMTE2LDEwICsxMjMsMTAgQEAg
c3RhdGljIHZvaWQgaW5pdFNob3J0aGFuZE1hcChTaG9ydGhhbmRNYXAmIHNob3J0aGFuZE1hcCkK
ICAgICAgICAgQ1NTUHJvcGVydHlNYXJnaW5Cb3R0b20sCiAgICAgICAgIENTU1Byb3BlcnR5TWFy
Z2luTGVmdAogICAgIH07Ci0gICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoc2hvcnRoYW5kTWFw
LCBDU1NQcm9wZXJ0eU1hcmdpbiwgbWFyZ2luUHJvcGVydGllcyk7CisgICAgU0VUX1NIT1JUSEFO
RF9NQVBfRU5UUlkoQ1NTUHJvcGVydHlNYXJnaW4sIG1hcmdpblByb3BlcnRpZXMpOwogCiAgICAg
c3RhdGljIGNvbnN0IGludCBtYXJnaW5Db2xsYXBzZVByb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVy
dHlXZWJraXRNYXJnaW5CZWZvcmVDb2xsYXBzZSwgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5BZnRl
ckNvbGxhcHNlIH07Ci0gICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoc2hvcnRoYW5kTWFwLCBD
U1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkNvbGxhcHNlLCBtYXJnaW5Db2xsYXBzZVByb3BlcnRpZXMp
OworICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZKENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQ29s
bGFwc2UsIG1hcmdpbkNvbGxhcHNlUHJvcGVydGllcyk7CiAKICAgICBzdGF0aWMgY29uc3QgaW50
IG1hcnF1ZWVQcm9wZXJ0aWVzW10gPSB7CiAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0TWFycXVl
ZURpcmVjdGlvbiwKQEAgLTEyOCw3ICsxMzUsNyBAQCBzdGF0aWMgdm9pZCBpbml0U2hvcnRoYW5k
TWFwKFNob3J0aGFuZE1hcCYgc2hvcnRoYW5kTWFwKQogICAgICAgICBDU1NQcm9wZXJ0eVdlYmtp
dE1hcnF1ZWVTdHlsZSwKICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlU3BlZWQKICAg
ICB9OwotICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZKHNob3J0aGFuZE1hcCwgQ1NTUHJvcGVy
dHlXZWJraXRNYXJxdWVlLCBtYXJxdWVlUHJvcGVydGllcyk7CisgICAgU0VUX1NIT1JUSEFORF9N
QVBfRU5UUlkoQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlLCBtYXJxdWVlUHJvcGVydGllcyk7CiAK
ICAgICBzdGF0aWMgY29uc3QgaW50IG91dGxpbmVQcm9wZXJ0aWVzW10gPSB7CiAgICAgICAgIENT
U1Byb3BlcnR5T3V0bGluZUNvbG9yLApAQCAtMTM2LDcgKzE0Myw3IEBAIHN0YXRpYyB2b2lkIGlu
aXRTaG9ydGhhbmRNYXAoU2hvcnRoYW5kTWFwJiBzaG9ydGhhbmRNYXApCiAgICAgICAgIENTU1By
b3BlcnR5T3V0bGluZVN0eWxlLAogICAgICAgICBDU1NQcm9wZXJ0eU91dGxpbmVXaWR0aAogICAg
IH07Ci0gICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoc2hvcnRoYW5kTWFwLCBDU1NQcm9wZXJ0
eU91dGxpbmUsIG91dGxpbmVQcm9wZXJ0aWVzKTsKKyAgICBTRVRfU0hPUlRIQU5EX01BUF9FTlRS
WShDU1NQcm9wZXJ0eU91dGxpbmUsIG91dGxpbmVQcm9wZXJ0aWVzKTsKIAogICAgIHN0YXRpYyBj
b25zdCBpbnQgcGFkZGluZ1Byb3BlcnRpZXNbXSA9IHsKICAgICAgICAgQ1NTUHJvcGVydHlQYWRk
aW5nVG9wLApAQCAtMTQ0LDE3ICsxNTEsMTcgQEAgc3RhdGljIHZvaWQgaW5pdFNob3J0aGFuZE1h
cChTaG9ydGhhbmRNYXAmIHNob3J0aGFuZE1hcCkKICAgICAgICAgQ1NTUHJvcGVydHlQYWRkaW5n
Qm90dG9tLAogICAgICAgICBDU1NQcm9wZXJ0eVBhZGRpbmdMZWZ0CiAgICAgfTsKLSAgICBTRVRf
U0hPUlRIQU5EX01BUF9FTlRSWShzaG9ydGhhbmRNYXAsIENTU1Byb3BlcnR5UGFkZGluZywgcGFk
ZGluZ1Byb3BlcnRpZXMpOworICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZKENTU1Byb3BlcnR5
UGFkZGluZywgcGFkZGluZ1Byb3BlcnRpZXMpOwogCiAgICAgc3RhdGljIGNvbnN0IGludCB3ZWJr
aXRXcmFwUHJvcGVydGllc1tdID0gewogICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdFdyYXBGbG93
LAogICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdFdyYXBNYXJnaW4sCiAgICAgICAgIENTU1Byb3Bl
cnR5V2Via2l0V3JhcFBhZGRpbmcKICAgICB9OwotICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZ
KHNob3J0aGFuZE1hcCwgQ1NTUHJvcGVydHlXZWJraXRXcmFwLCB3ZWJraXRXcmFwUHJvcGVydGll
cyk7CisgICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoQ1NTUHJvcGVydHlXZWJraXRXcmFwLCB3
ZWJraXRXcmFwUHJvcGVydGllcyk7CiAKICAgICBzdGF0aWMgY29uc3QgaW50IHRleHRTdHJva2VQ
cm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZUNvbG9yLCBDU1NQcm9w
ZXJ0eVdlYmtpdFRleHRTdHJva2VXaWR0aCB9OwotICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZ
KHNob3J0aGFuZE1hcCwgQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlLCB0ZXh0U3Ryb2tlUHJv
cGVydGllcyk7CisgICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoQ1NTUHJvcGVydHlXZWJraXRU
ZXh0U3Ryb2tlLCB0ZXh0U3Ryb2tlUHJvcGVydGllcyk7CiAKICAgICBzdGF0aWMgY29uc3QgaW50
IGJhY2tncm91bmRQcm9wZXJ0aWVzW10gPSB7CiAgICAgICAgIENTU1Byb3BlcnR5QmFja2dyb3Vu
ZEF0dGFjaG1lbnQsCkBAIC0xNjcsMjAgKzE3NCwyMCBAQCBzdGF0aWMgdm9pZCBpbml0U2hvcnRo
YW5kTWFwKFNob3J0aGFuZE1hcCYgc2hvcnRoYW5kTWFwKQogICAgICAgICBDU1NQcm9wZXJ0eUJh
Y2tncm91bmRSZXBlYXRYLAogICAgICAgICBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRZCiAg
ICAgfTsKLSAgICBTRVRfU0hPUlRIQU5EX01BUF9FTlRSWShzaG9ydGhhbmRNYXAsIENTU1Byb3Bl
cnR5QmFja2dyb3VuZCwgYmFja2dyb3VuZFByb3BlcnRpZXMpOworICAgIFNFVF9TSE9SVEhBTkRf
TUFQX0VOVFJZKENTU1Byb3BlcnR5QmFja2dyb3VuZCwgYmFja2dyb3VuZFByb3BlcnRpZXMpOwog
CiAgICAgc3RhdGljIGNvbnN0IGludCBjb2x1bW5zUHJvcGVydGllc1tdID0geyBDU1NQcm9wZXJ0
eVdlYmtpdENvbHVtbldpZHRoLCBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbkNvdW50IH07Ci0gICAg
U0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoc2hvcnRoYW5kTWFwLCBDU1NQcm9wZXJ0eVdlYmtpdENv
bHVtbnMsIGNvbHVtbnNQcm9wZXJ0aWVzKTsKKyAgICBTRVRfU0hPUlRIQU5EX01BUF9FTlRSWShD
U1NQcm9wZXJ0eVdlYmtpdENvbHVtbnMsIGNvbHVtbnNQcm9wZXJ0aWVzKTsKIAogICAgIHN0YXRp
YyBjb25zdCBpbnQgY29sdW1uUnVsZVByb3BlcnRpZXNbXSA9IHsKICAgICAgICAgQ1NTUHJvcGVy
dHlXZWJraXRDb2x1bW5SdWxlQ29sb3IsCiAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0Q29sdW1u
UnVsZVN0eWxlLAogICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGVXaWR0aAogICAg
IH07Ci0gICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoc2hvcnRoYW5kTWFwLCBDU1NQcm9wZXJ0
eVdlYmtpdENvbHVtblJ1bGUsIGNvbHVtblJ1bGVQcm9wZXJ0aWVzKTsKKyAgICBTRVRfU0hPUlRI
QU5EX01BUF9FTlRSWShDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGUsIGNvbHVtblJ1bGVQcm9w
ZXJ0aWVzKTsKIAogICAgIHN0YXRpYyBjb25zdCBpbnQgb3ZlcmZsb3dQcm9wZXJ0aWVzW10gPSB7
IENTU1Byb3BlcnR5T3ZlcmZsb3dYLCBDU1NQcm9wZXJ0eU92ZXJmbG93WSB9OwotICAgIFNFVF9T
SE9SVEhBTkRfTUFQX0VOVFJZKHNob3J0aGFuZE1hcCwgQ1NTUHJvcGVydHlPdmVyZmxvdywgb3Zl
cmZsb3dQcm9wZXJ0aWVzKTsKKyAgICBTRVRfU0hPUlRIQU5EX01BUF9FTlRSWShDU1NQcm9wZXJ0
eU92ZXJmbG93LCBvdmVyZmxvd1Byb3BlcnRpZXMpOwogCiAgICAgc3RhdGljIGNvbnN0IGludCBi
b3JkZXJSYWRpdXNQcm9wZXJ0aWVzW10gPSB7CiAgICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyVG9w
UmlnaHRSYWRpdXMsCkBAIC0xODgsMTQgKzE5NSwxNCBAQCBzdGF0aWMgdm9pZCBpbml0U2hvcnRo
YW5kTWFwKFNob3J0aGFuZE1hcCYgc2hvcnRoYW5kTWFwKQogICAgICAgICBDU1NQcm9wZXJ0eUJv
cmRlckJvdHRvbUxlZnRSYWRpdXMsCiAgICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tUmln
aHRSYWRpdXMKICAgICB9OwotICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZKHNob3J0aGFuZE1h
cCwgQ1NTUHJvcGVydHlCb3JkZXJSYWRpdXMsIGJvcmRlclJhZGl1c1Byb3BlcnRpZXMpOwotICAg
IFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZKHNob3J0aGFuZE1hcCwgQ1NTUHJvcGVydHlXZWJraXRC
b3JkZXJSYWRpdXMsIGJvcmRlclJhZGl1c1Byb3BlcnRpZXMpOworICAgIFNFVF9TSE9SVEhBTkRf
TUFQX0VOVFJZKENTU1Byb3BlcnR5Qm9yZGVyUmFkaXVzLCBib3JkZXJSYWRpdXNQcm9wZXJ0aWVz
KTsKKyAgICBTRVRfU0hPUlRIQU5EX01BUF9FTlRSWShDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclJh
ZGl1cywgYm9yZGVyUmFkaXVzUHJvcGVydGllcyk7CiAKICAgICBzdGF0aWMgY29uc3QgaW50IG1h
c2tQb3NpdGlvblByb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25Y
LCBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblkgfTsKLSAgICBTRVRfU0hPUlRIQU5EX01B
UF9FTlRSWShzaG9ydGhhbmRNYXAsIENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uLCBtYXNr
UG9zaXRpb25Qcm9wZXJ0aWVzKTsKKyAgICBTRVRfU0hPUlRIQU5EX01BUF9FTlRSWShDU1NQcm9w
ZXJ0eVdlYmtpdE1hc2tQb3NpdGlvbiwgbWFza1Bvc2l0aW9uUHJvcGVydGllcyk7CiAKICAgICBz
dGF0aWMgY29uc3QgaW50IG1hc2tSZXBlYXRQcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5V2Vi
a2l0TWFza1JlcGVhdFgsIENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdFkgfTsKLSAgICBTRVRf
U0hPUlRIQU5EX01BUF9FTlRSWShzaG9ydGhhbmRNYXAsIENTU1Byb3BlcnR5V2Via2l0TWFza1Jl
cGVhdCwgbWFza1JlcGVhdFByb3BlcnRpZXMpOworICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZ
KENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdCwgbWFza1JlcGVhdFByb3BlcnRpZXMpOwogCiAg
ICAgc3RhdGljIGNvbnN0IGludCBtYXNrUHJvcGVydGllc1tdID0gewogICAgICAgICBDU1NQcm9w
ZXJ0eVdlYmtpdE1hc2tBdHRhY2htZW50LApAQCAtMjA3LDcgKzIxNCw3IEBAIHN0YXRpYyB2b2lk
IGluaXRTaG9ydGhhbmRNYXAoU2hvcnRoYW5kTWFwJiBzaG9ydGhhbmRNYXApCiAgICAgICAgIENT
U1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdFgsCiAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0TWFz
a1JlcGVhdFkKICAgICB9OwotICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZKHNob3J0aGFuZE1h
cCwgQ1NTUHJvcGVydHlXZWJraXRNYXNrLCBtYXNrUHJvcGVydGllcyk7CisgICAgU0VUX1NIT1JU
SEFORF9NQVBfRU5UUlkoQ1NTUHJvcGVydHlXZWJraXRNYXNrLCBtYXNrUHJvcGVydGllcyk7CiAK
ICAgICBzdGF0aWMgY29uc3QgaW50IGFuaW1hdGlvblByb3BlcnRpZXNbXSA9IHsKICAgICAgICAg
Q1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25OYW1lLApAQCAtMjE4LDcgKzIyNSw3IEBAIHN0YXRp
YyB2b2lkIGluaXRTaG9ydGhhbmRNYXAoU2hvcnRoYW5kTWFwJiBzaG9ydGhhbmRNYXApCiAgICAg
ICAgIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uRGlyZWN0aW9uLAogICAgICAgICBDU1NQcm9w
ZXJ0eVdlYmtpdEFuaW1hdGlvbkZpbGxNb2RlCiAgICAgfTsKLSAgICBTRVRfU0hPUlRIQU5EX01B
UF9FTlRSWShzaG9ydGhhbmRNYXAsIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uLCBhbmltYXRp
b25Qcm9wZXJ0aWVzKTsKKyAgICBTRVRfU0hPUlRIQU5EX01BUF9FTlRSWShDU1NQcm9wZXJ0eVdl
YmtpdEFuaW1hdGlvbiwgYW5pbWF0aW9uUHJvcGVydGllcyk7CiAKICAgICBzdGF0aWMgY29uc3Qg
aW50IHRyYW5zaXRpb25Qcm9wZXJ0aWVzW10gPSB7CiAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0
VHJhbnNpdGlvblByb3BlcnR5LApAQCAtMjI2LDMxICsyMzMsMjEgQEAgc3RhdGljIHZvaWQgaW5p
dFNob3J0aGFuZE1hcChTaG9ydGhhbmRNYXAmIHNob3J0aGFuZE1hcCkKICAgICAgICAgQ1NTUHJv
cGVydHlXZWJraXRUcmFuc2l0aW9uVGltaW5nRnVuY3Rpb24sCiAgICAgICAgIENTU1Byb3BlcnR5
V2Via2l0VHJhbnNpdGlvbkRlbGF5CiAgICAgfTsKLSAgICBTRVRfU0hPUlRIQU5EX01BUF9FTlRS
WShzaG9ydGhhbmRNYXAsIENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvbiwgdHJhbnNpdGlvblBy
b3BlcnRpZXMpOworICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZKENTU1Byb3BlcnR5V2Via2l0
VHJhbnNpdGlvbiwgdHJhbnNpdGlvblByb3BlcnRpZXMpOwogCiAgICAgc3RhdGljIGNvbnN0IGlu
dCB0cmFuc2Zvcm1PcmlnaW5Qcm9wZXJ0aWVzW10gPSB7CiAgICAgICAgIENTU1Byb3BlcnR5V2Vi
a2l0VHJhbnNmb3JtT3JpZ2luWCwKICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1P
cmlnaW5ZCiAgICAgfTsKLSAgICBTRVRfU0hPUlRIQU5EX01BUF9FTlRSWShzaG9ydGhhbmRNYXAs
IENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luLCB0cmFuc2Zvcm1PcmlnaW5Qcm9wZXJ0
aWVzKTsKKyAgICBTRVRfU0hPUlRIQU5EX01BUF9FTlRSWShDU1NQcm9wZXJ0eVdlYmtpdFRyYW5z
Zm9ybU9yaWdpbiwgdHJhbnNmb3JtT3JpZ2luUHJvcGVydGllcyk7CiAKICAgICBzdGF0aWMgY29u
c3QgaW50IHRleHRFbXBoYXNpc1Byb3BlcnRpZXNbXSA9IHsKICAgICAgICAgQ1NTUHJvcGVydHlX
ZWJraXRUZXh0RW1waGFzaXNDb2xvciwKICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1w
aGFzaXNTdHlsZQogICAgIH07Ci0gICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoc2hvcnRoYW5k
TWFwLCBDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpcywgdGV4dEVtcGhhc2lzUHJvcGVydGll
cyk7CisgICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1w
aGFzaXMsIHRleHRFbXBoYXNpc1Byb3BlcnRpZXMpOwogCiAgICAgI3VuZGVmIFNFVF9TSE9SVEhB
TkRfTUFQX0VOVFJZCiB9CiAKLUNTU1Byb3BlcnR5TG9uZ2hhbmQgbG9uZ2hhbmRGb3JQcm9wZXJ0
eShpbnQgcHJvcGVydHlJRCkKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFNob3J0aGFuZE1h
cCwgc2hvcnRoYW5kTWFwLCAoKSk7Ci0gICAgaWYgKHNob3J0aGFuZE1hcC5pc0VtcHR5KCkpCi0g
ICAgICAgIGluaXRTaG9ydGhhbmRNYXAoc2hvcnRoYW5kTWFwKTsKLQotICAgIHJldHVybiBzaG9y
dGhhbmRNYXAuZ2V0KHByb3BlcnR5SUQpOwotfQotCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eUxvbmdoYW5kLmggYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlMb25naGFuZC5oCmluZGV4IDk2MzNjMDI1YWJm
ZGFhMmM3ZDljOGYzNGU0MjI2Y2ExZDEzYjFkNDMuLmYzNWQxNzk5ZGQ0ZGFjN2IzYjVlZDJhM2I4
ZmNiOTQ0NWQzNjZjOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0
eUxvbmdoYW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TG9uZ2hhbmQu
aApAQCAtMjEsNiArMjEsMTAgQEAKICNpZm5kZWYgQ1NTUHJvcGVydHlMb25naGFuZF9oCiAjZGVm
aW5lIENTU1Byb3BlcnR5TG9uZ2hhbmRfaAogCisjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5o
IgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDU1NQcm9wZXJ0eUxvbmdoYW5kIHsK
QEAgLTQ1LDggKzQ5LDM5IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9sZW5ndGg7CiB9Owog
Ci0vLyBSZXR1cm5zIGFuIGVtcHR5IGxpc3QgaWYgdGhlIHByb3BlcnR5IGlzIG5vdCBhIHNob3J0
aGFuZAotQ1NTUHJvcGVydHlMb25naGFuZCBsb25naGFuZEZvclByb3BlcnR5KGludCk7CitjbGFz
cyBDU1NQcm9wZXJ0eUxvbmdoYW5kTWFwIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDU1NQ
cm9wZXJ0eUxvbmdoYW5kTWFwKTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3QgQ1NTUHJvcGVy
dHlMb25naGFuZE1hcCYgc2hhcmVkQ1NTUHJvcGVydHlMb25naGFuZE1hcCgpOworCisgICAgLy8g
UmV0dXJucyBhbiBlbXB0eSBsaXN0IGlmIHRoZSBwcm9wZXJ0eSBpcyBub3QgYSBzaG9ydGhhbmQK
KyAgICBjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBsb25naGFuZEZvclByb3BlcnR5KENTU1By
b3BlcnR5SUQgcHJvcGVydHkpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQodmFsaWQocHJv
cGVydHkpKTsKKyAgICAgICAgcmV0dXJuIG1fcHJvcGVydHlNYXBbaW5kZXgocHJvcGVydHkpXTsK
KyAgICB9Citwcml2YXRlOgorICAgIENTU1Byb3BlcnR5TG9uZ2hhbmRNYXAoKTsKKworICAgIHN0
YXRpYyBpbnQgaW5kZXgoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSkKKyAgICB7CisgICAgICAgIHJl
dHVybiBwcm9wZXJ0eSAtIGZpcnN0Q1NTUHJvcGVydHk7CisgICAgfQorCisgICAgc3RhdGljIGJv
b2wgdmFsaWQoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSkKKyAgICB7CisgICAgICAgIGludCBpID0g
aW5kZXgocHJvcGVydHkpOworICAgICAgICByZXR1cm4gaSA+PSAwICYmIGkgPCBudW1DU1NQcm9w
ZXJ0aWVzOworICAgIH0KKworICAgIHZvaWQgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5
SUQgcHJvcGVydHksIENTU1Byb3BlcnR5TG9uZ2hhbmQgaGFuZGxlcikKKyAgICB7CisgICAgICAg
IEFTU0VSVCh2YWxpZChwcm9wZXJ0eSkpOworICAgICAgICBtX3Byb3BlcnR5TWFwW2luZGV4KHBy
b3BlcnR5KV0gPSBoYW5kbGVyOworICAgIH0KKworICAgIENTU1Byb3BlcnR5TG9uZ2hhbmQgbV9w
cm9wZXJ0eU1hcFtudW1DU1NQcm9wZXJ0aWVzXTsKK307CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydHlTZXQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydHlTZXQuY3BwCmluZGV4IDY1NDUyZWMz
YjBhYTgxNTA3NDc5MjlmMTc4MGZhYmRkNjQ2YmY0ZmUuLmEwZTU4MDBlZjk2NGI3NjNhNThjOTlj
MjgyMGRlMzJkNGVjZjU2YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVBy
b3BlcnR5U2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5j
cHAKQEAgLTUwOCw3ICs1MDgsOCBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBTdHlsZVByb3BlcnR5
U2V0OjpnZXRQcm9wZXJ0eUNTU1ZhbHVlKGludCBwcm9wZXJ0eUlEKSBjb25zdAogCiBib29sIFN0
eWxlUHJvcGVydHlTZXQ6OnJlbW92ZVNob3J0aGFuZFByb3BlcnR5KGludCBwcm9wZXJ0eUlEKQog
ewotICAgIENTU1Byb3BlcnR5TG9uZ2hhbmQgbG9uZ2hhbmQgPSBsb25naGFuZEZvclByb3BlcnR5
KHByb3BlcnR5SUQpOworICAgIGNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmRNYXAmIGxvbmdoYW5k
TWFwID0gQ1NTUHJvcGVydHlMb25naGFuZE1hcDo6c2hhcmVkQ1NTUHJvcGVydHlMb25naGFuZE1h
cCgpOworICAgIENTU1Byb3BlcnR5TG9uZ2hhbmQgbG9uZ2hhbmQgPSBsb25naGFuZE1hcC5sb25n
aGFuZEZvclByb3BlcnR5KHN0YXRpY19jYXN0PENTU1Byb3BlcnR5SUQ+KHByb3BlcnR5SUQpKTsK
ICAgICBpZiAoIWxvbmdoYW5kLmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
cmV0dXJuIHJlbW92ZVByb3BlcnRpZXNJblNldChsb25naGFuZC5wcm9wZXJ0aWVzKCksIGxvbmdo
YW5kLmxlbmd0aCgpKTsKQEAgLTU0Niw3ICs1NDcsOCBAQCBib29sIFN0eWxlUHJvcGVydHlTZXQ6
OnByb3BlcnR5SXNJbXBvcnRhbnQoaW50IHByb3BlcnR5SUQpIGNvbnN0CiAgICAgaWYgKHByb3Bl
cnR5KQogICAgICAgICByZXR1cm4gcHJvcGVydHktPmlzSW1wb3J0YW50KCk7CiAKLSAgICBDU1NQ
cm9wZXJ0eUxvbmdoYW5kIGxvbmdoYW5kcyA9IGxvbmdoYW5kRm9yUHJvcGVydHkocHJvcGVydHlJ
RCk7CisgICAgY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZE1hcCYgbG9uZ2hhbmRNYXAgPSBDU1NQ
cm9wZXJ0eUxvbmdoYW5kTWFwOjpzaGFyZWRDU1NQcm9wZXJ0eUxvbmdoYW5kTWFwKCk7CisgICAg
Q1NTUHJvcGVydHlMb25naGFuZCBsb25naGFuZHMgPSBsb25naGFuZE1hcC5sb25naGFuZEZvclBy
b3BlcnR5KHN0YXRpY19jYXN0PENTU1Byb3BlcnR5SUQ+KHByb3BlcnR5SUQpKTsKICAgICBpZiAo
IWxvbmdoYW5kcy5sZW5ndGgoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC01ODUsNyAr
NTg3LDggQEAgYm9vbCBTdHlsZVByb3BlcnR5U2V0OjpzZXRQcm9wZXJ0eShpbnQgcHJvcGVydHlJ
RCwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgYm9vbCBpbXAKIAogdm9pZCBTdHlsZVByb3BlcnR5U2V0
OjpzZXRQcm9wZXJ0eShpbnQgcHJvcGVydHlJRCwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gcHJwVmFs
dWUsIGJvb2wgaW1wb3J0YW50KQogewotICAgIENTU1Byb3BlcnR5TG9uZ2hhbmQgbG9uZ2hhbmQg
PSBsb25naGFuZEZvclByb3BlcnR5KHByb3BlcnR5SUQpOworICAgIGNvbnN0IENTU1Byb3BlcnR5
TG9uZ2hhbmRNYXAmIGxvbmdoYW5kTWFwID0gQ1NTUHJvcGVydHlMb25naGFuZE1hcDo6c2hhcmVk
Q1NTUHJvcGVydHlMb25naGFuZE1hcCgpOworICAgIENTU1Byb3BlcnR5TG9uZ2hhbmQgbG9uZ2hh
bmQgPSBsb25naGFuZE1hcC5sb25naGFuZEZvclByb3BlcnR5KHN0YXRpY19jYXN0PENTU1Byb3Bl
cnR5SUQ+KHByb3BlcnR5SUQpKTsKICAgICBpZiAoIWxvbmdoYW5kLmxlbmd0aCgpKSB7CiAgICAg
ICAgIHNldFByb3BlcnR5KENTU1Byb3BlcnR5KHByb3BlcnR5SUQsIHBycFZhbHVlLCBpbXBvcnRh
bnQpKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9h
bmltYXRpb24vQW5pbWF0aW9uQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlv
bi9BbmltYXRpb25CYXNlLmNwcAppbmRleCBlMDZjMDdmYzg4MmE2Mjk2ZTM0NTUzMDE0YzEwODhl
MDkxMTgwNDVkLi5hODcxZjYzODFjMzg1ZWZlYTJhNDNiNjgwMGJhMDlkNDMyNzJhMmE4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcApAQCAt
MTE2Nyw5ICsxMTY3LDEwIEBAIHN0YXRpYyB2b2lkIGFkZFNob3J0aGFuZFByb3BlcnRpZXMoKQog
ICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdpbgogICAgIH07CiAKKyAgICBj
b25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kTWFwJiBsb25naGFuZE1hcCA9IENTU1Byb3BlcnR5TG9u
Z2hhbmRNYXA6OnNoYXJlZENTU1Byb3BlcnR5TG9uZ2hhbmRNYXAoKTsKICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IFdURl9BUlJBWV9MRU5HVEgoYW5pbWF0YWJsZVNob3J0aGFuZFByb3BlcnRp
ZXMpOyArK2kpIHsKICAgICAgICAgaW50IHByb3BlcnR5SUQgPSBhbmltYXRhYmxlU2hvcnRoYW5k
UHJvcGVydGllc1tpXTsKLSAgICAgICAgQ1NTUHJvcGVydHlMb25naGFuZCBsb25naGFuZCA9IGxv
bmdoYW5kRm9yUHJvcGVydHkocHJvcGVydHlJRCk7CisgICAgICAgIENTU1Byb3BlcnR5TG9uZ2hh
bmQgbG9uZ2hhbmQgPSBsb25naGFuZE1hcC5sb25naGFuZEZvclByb3BlcnR5KHN0YXRpY19jYXN0
PENTU1Byb3BlcnR5SUQ+KHByb3BlcnR5SUQpKTsKICAgICAgICAgaWYgKGxvbmdoYW5kLmxlbmd0
aCgpID4gMCkKICAgICAgICAgICAgIGFkZFByb3BlcnR5V3JhcHBlcihwcm9wZXJ0eUlELCBuZXcg
U2hvcnRoYW5kUHJvcGVydHlXcmFwcGVyKHByb3BlcnR5SUQsIGxvbmdoYW5kKSk7CiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132770</attachid>
            <date>2012-03-19 23:47:14 -0700</date>
            <delta_ts>2012-03-20 17:00:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81611-20120320174711.patch</filename>
            <type>text/plain</type>
            <size>19439</size>
            <attacher name="Luke Macpherson">macpherson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExMzYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2M2MjQ5NGZkMDI3OGUx
MDY1NGJjZjRkNDAwYWI4MjQ0YTFkMjY0Mi4uNDI3NTQ0MjZmNzFlNTJjMmE1NzgxZmVmMzYwNGRm
ZjI3NmEyMDlmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEyLTAzLTE5ICBMdWtl
IE1hY3BoZXJzb24gIDxtYWNwaGVyc29uQGNocm9taXVtLm9yZz4KKworICAgICAgICBNYWtlIENT
U0xvbmdoYW5kUHJvcGVydHkgdXNlIGEgbG9va3VwIHRhYmxlIGluc3RlYWQgb2YgYSBoYXNoIG1h
cC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgxNjEx
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3
IHRlc3RzIC0gcmVmYWN0b3Jpbmcgb25seS4KKworICAgICAgICAqIGNzcy9DU1NQcm9wZXJ0eUxv
bmdoYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5TG9uZ2hhbmRNYXA6OnNo
YXJlZENTU1Byb3BlcnR5TG9uZ2hhbmRNYXApOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVy
dHlMb25naGFuZE1hcDo6Q1NTUHJvcGVydHlMb25naGFuZE1hcCk6CisgICAgICAgICogY3NzL0NT
U1Byb3BlcnR5TG9uZ2hhbmQuaDoKKyAgICAgICAgKENTU1Byb3BlcnR5TG9uZ2hhbmRNYXApOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlMb25naGFuZE1hcDo6bG9uZ2hhbmRGb3JQcm9w
ZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eUxvbmdoYW5kTWFwOjppbmRleCk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eUxvbmdoYW5kTWFwOjp2YWxpZCk6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eUxvbmdoYW5kTWFwOjpzZXRQcm9wZXJ0eUhhbmRsZXIp
OgorICAgICAgICAqIGNzcy9TdHlsZVByb3BlcnR5U2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlUHJvcGVydHlTZXQ6OnJlbW92ZVNob3J0aGFuZFByb3BlcnR5KToKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlUHJvcGVydHlTZXQ6OnByb3BlcnR5SXNJbXBvcnRhbnQpOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGVQcm9wZXJ0eVNldDo6c2V0UHJvcGVydHkpOgorICAgICAgICAqIHBhZ2Uv
YW5pbWF0aW9uL0FuaW1hdGlvbkJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YWRkU2hvcnRo
YW5kUHJvcGVydGllcyk6CisKIDIwMTItMDMtMTkgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0
Lm9yZz4KIAogICAgICAgICBSZW1vdmUgc3VwcG9ydCBmb3IgIm1hZ2ljIiBpZnJhbWUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eUxvbmdoYW5kLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eUxvbmdoYW5kLmNwcAppbmRleCAwZDAzYjIwYmZkNDUx
NmZjYzdmOWM1MzExMjE3MzFiNzU4MDBjMWRjLi4yZGNmYzk0Y2EzYzQzYzYxOTIyNWIzMzJjMTVm
OTlhMWRiMzVjMTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlM
b25naGFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TG9uZ2hhbmQu
Y3BwCkBAIC0yNywxMiArMjcsMTkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi10eXBlZGVm
IEhhc2hNYXA8aW50LCBDU1NQcm9wZXJ0eUxvbmdoYW5kPiBTaG9ydGhhbmRNYXA7Citjb25zdCBD
U1NQcm9wZXJ0eUxvbmdoYW5kTWFwJiBDU1NQcm9wZXJ0eUxvbmdoYW5kTWFwOjpzaGFyZWRDU1NQ
cm9wZXJ0eUxvbmdoYW5kTWFwKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3Bl
cnR5TG9uZ2hhbmRNYXAsIGNzc1Byb3BlcnR5TG9uZ2hhbmRNYXBJbnN0YW5jZSwgKCkpOworICAg
IHJldHVybiBjc3NQcm9wZXJ0eUxvbmdoYW5kTWFwSW5zdGFuY2U7Cit9CiAKLXN0YXRpYyB2b2lk
IGluaXRTaG9ydGhhbmRNYXAoU2hvcnRoYW5kTWFwJiBzaG9ydGhhbmRNYXApCitDU1NQcm9wZXJ0
eUxvbmdoYW5kTWFwOjpDU1NQcm9wZXJ0eUxvbmdoYW5kTWFwKCkKIHsKLSAgICAjZGVmaW5lIFNF
VF9TSE9SVEhBTkRfTUFQX0VOVFJZKG1hcCwgcHJvcElELCBhcnJheSkgXAotICAgICAgICBtYXAu
c2V0KHByb3BJRCwgQ1NTUHJvcGVydHlMb25naGFuZChhcnJheSwgV1RGX0FSUkFZX0xFTkdUSChh
cnJheSkpKQorICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtQ1NTUHJvcGVydGllczsgKytpKQor
ICAgICAgICBtX3Byb3BlcnR5TWFwW2ldID0gQ1NTUHJvcGVydHlMb25naGFuZCgpOworCisgICAg
I2RlZmluZSBTRVRfU0hPUlRIQU5EX01BUF9FTlRSWShwcm9wSUQsIGFycmF5KSBcCisgICAgICAg
IHNldExvbmdoYW5kRm9yUHJvcGVydHkocHJvcElELCBDU1NQcm9wZXJ0eUxvbmdoYW5kKGFycmF5
LCBXVEZfQVJSQVlfTEVOR1RIKGFycmF5KSkpCiAKICAgICBzdGF0aWMgY29uc3QgaW50IGZvbnRQ
cm9wZXJ0aWVzW10gPSB7CiAgICAgICAgIENTU1Byb3BlcnR5Rm9udEZhbWlseSwKQEAgLTQyLDcg
KzQ5LDcgQEAgc3RhdGljIHZvaWQgaW5pdFNob3J0aGFuZE1hcChTaG9ydGhhbmRNYXAmIHNob3J0
aGFuZE1hcCkKICAgICAgICAgQ1NTUHJvcGVydHlGb250V2VpZ2h0LAogICAgICAgICBDU1NQcm9w
ZXJ0eUxpbmVIZWlnaHQKICAgICB9OwotICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZKHNob3J0
aGFuZE1hcCwgQ1NTUHJvcGVydHlGb250LCBmb250UHJvcGVydGllcyk7CisgICAgU0VUX1NIT1JU
SEFORF9NQVBfRU5UUlkoQ1NTUHJvcGVydHlGb250LCBmb250UHJvcGVydGllcyk7CiAKICAgICAv
LyBEbyBub3QgY2hhbmdlIHRoZSBvcmRlciBvZiB0aGUgZm9sbG93aW5nIGZvdXIgc2hvcnRoYW5k
cywgYW5kIGtlZXAgdGhlbSB0b2dldGhlci4KICAgICBzdGF0aWMgY29uc3QgaW50IGJvcmRlclBy
b3BlcnRpZXNbNF1bM10gPSB7CkBAIC01MSwxMiArNTgsMTIgQEAgc3RhdGljIHZvaWQgaW5pdFNo
b3J0aGFuZE1hcChTaG9ydGhhbmRNYXAmIHNob3J0aGFuZE1hcCkKICAgICAgICAgeyBDU1NQcm9w
ZXJ0eUJvcmRlckJvdHRvbUNvbG9yLCBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVN0eWxlLCBDU1NQ
cm9wZXJ0eUJvcmRlckJvdHRvbVdpZHRoIH0sCiAgICAgICAgIHsgQ1NTUHJvcGVydHlCb3JkZXJM
ZWZ0Q29sb3IsIENTU1Byb3BlcnR5Qm9yZGVyTGVmdFN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlckxl
ZnRXaWR0aCB9CiAgICAgfTsKLSAgICBTRVRfU0hPUlRIQU5EX01BUF9FTlRSWShzaG9ydGhhbmRN
YXAsIENTU1Byb3BlcnR5Qm9yZGVyVG9wLCBib3JkZXJQcm9wZXJ0aWVzWzBdKTsKLSAgICBTRVRf
U0hPUlRIQU5EX01BUF9FTlRSWShzaG9ydGhhbmRNYXAsIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHQs
IGJvcmRlclByb3BlcnRpZXNbMV0pOwotICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZKHNob3J0
aGFuZE1hcCwgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b20sIGJvcmRlclByb3BlcnRpZXNbMl0pOwot
ICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZKHNob3J0aGFuZE1hcCwgQ1NTUHJvcGVydHlCb3Jk
ZXJMZWZ0LCBib3JkZXJQcm9wZXJ0aWVzWzNdKTsKKyAgICBTRVRfU0hPUlRIQU5EX01BUF9FTlRS
WShDU1NQcm9wZXJ0eUJvcmRlclRvcCwgYm9yZGVyUHJvcGVydGllc1swXSk7CisgICAgU0VUX1NI
T1JUSEFORF9NQVBfRU5UUlkoQ1NTUHJvcGVydHlCb3JkZXJSaWdodCwgYm9yZGVyUHJvcGVydGll
c1sxXSk7CisgICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoQ1NTUHJvcGVydHlCb3JkZXJCb3R0
b20sIGJvcmRlclByb3BlcnRpZXNbMl0pOworICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZKENT
U1Byb3BlcnR5Qm9yZGVyTGVmdCwgYm9yZGVyUHJvcGVydGllc1szXSk7CiAKLSAgICBzaG9ydGhh
bmRNYXAuc2V0KENTU1Byb3BlcnR5Qm9yZGVyLCBDU1NQcm9wZXJ0eUxvbmdoYW5kKGJvcmRlclBy
b3BlcnRpZXNbMF0sIHNpemVvZihib3JkZXJQcm9wZXJ0aWVzKSAvIHNpemVvZihib3JkZXJQcm9w
ZXJ0aWVzWzBdWzBdKSkpOworICAgIHNldExvbmdoYW5kRm9yUHJvcGVydHkoQ1NTUHJvcGVydHlC
b3JkZXIsIENTU1Byb3BlcnR5TG9uZ2hhbmQoYm9yZGVyUHJvcGVydGllc1swXSwgc2l6ZW9mKGJv
cmRlclByb3BlcnRpZXMpIC8gc2l6ZW9mKGJvcmRlclByb3BlcnRpZXNbMF1bMF0pKSk7CiAKICAg
ICBzdGF0aWMgY29uc3QgaW50IGJvcmRlckNvbG9yUHJvcGVydGllc1tdID0gewogICAgICAgICBD
U1NQcm9wZXJ0eUJvcmRlclRvcENvbG9yLApAQCAtNjQsNyArNzEsNyBAQCBzdGF0aWMgdm9pZCBp
bml0U2hvcnRoYW5kTWFwKFNob3J0aGFuZE1hcCYgc2hvcnRoYW5kTWFwKQogICAgICAgICBDU1NQ
cm9wZXJ0eUJvcmRlckJvdHRvbUNvbG9yLAogICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlckxlZnRD
b2xvcgogICAgIH07Ci0gICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoc2hvcnRoYW5kTWFwLCBD
U1NQcm9wZXJ0eUJvcmRlckNvbG9yLCBib3JkZXJDb2xvclByb3BlcnRpZXMpOworICAgIFNFVF9T
SE9SVEhBTkRfTUFQX0VOVFJZKENTU1Byb3BlcnR5Qm9yZGVyQ29sb3IsIGJvcmRlckNvbG9yUHJv
cGVydGllcyk7CiAKICAgICBzdGF0aWMgY29uc3QgaW50IGJvcmRlckltYWdlUHJvcGVydGllc1td
ID0gewogICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlckltYWdlU291cmNlLApAQCAtNzMsNyArODAs
NyBAQCBzdGF0aWMgdm9pZCBpbml0U2hvcnRoYW5kTWFwKFNob3J0aGFuZE1hcCYgc2hvcnRoYW5k
TWFwKQogICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlckltYWdlT3V0c2V0LAogICAgICAgICBDU1NQ
cm9wZXJ0eUJvcmRlckltYWdlUmVwZWF0CiAgICAgfTsKLSAgICBTRVRfU0hPUlRIQU5EX01BUF9F
TlRSWShzaG9ydGhhbmRNYXAsIENTU1Byb3BlcnR5Qm9yZGVySW1hZ2UsIGJvcmRlckltYWdlUHJv
cGVydGllcyk7CisgICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoQ1NTUHJvcGVydHlCb3JkZXJJ
bWFnZSwgYm9yZGVySW1hZ2VQcm9wZXJ0aWVzKTsKIAogICAgIHN0YXRpYyBjb25zdCBpbnQgYm9y
ZGVyU3R5bGVQcm9wZXJ0aWVzW10gPSB7CiAgICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyVG9wU3R5
bGUsCkBAIC04MSw3ICs4OCw3IEBAIHN0YXRpYyB2b2lkIGluaXRTaG9ydGhhbmRNYXAoU2hvcnRo
YW5kTWFwJiBzaG9ydGhhbmRNYXApCiAgICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tU3R5
bGUsCiAgICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyTGVmdFN0eWxlCiAgICAgfTsKLSAgICBTRVRf
U0hPUlRIQU5EX01BUF9FTlRSWShzaG9ydGhhbmRNYXAsIENTU1Byb3BlcnR5Qm9yZGVyU3R5bGUs
IGJvcmRlclN0eWxlUHJvcGVydGllcyk7CisgICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoQ1NT
UHJvcGVydHlCb3JkZXJTdHlsZSwgYm9yZGVyU3R5bGVQcm9wZXJ0aWVzKTsKIAogICAgIHN0YXRp
YyBjb25zdCBpbnQgYm9yZGVyV2lkdGhQcm9wZXJ0aWVzW10gPSB7CiAgICAgICAgIENTU1Byb3Bl
cnR5Qm9yZGVyVG9wV2lkdGgsCkBAIC04OSwyNiArOTYsMjYgQEAgc3RhdGljIHZvaWQgaW5pdFNo
b3J0aGFuZE1hcChTaG9ydGhhbmRNYXAmIHNob3J0aGFuZE1hcCkKICAgICAgICAgQ1NTUHJvcGVy
dHlCb3JkZXJCb3R0b21XaWR0aCwKICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0V2lkdGgK
ICAgICB9OwotICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZKHNob3J0aGFuZE1hcCwgQ1NTUHJv
cGVydHlCb3JkZXJXaWR0aCwgYm9yZGVyV2lkdGhQcm9wZXJ0aWVzKTsKKyAgICBTRVRfU0hPUlRI
QU5EX01BUF9FTlRSWShDU1NQcm9wZXJ0eUJvcmRlcldpZHRoLCBib3JkZXJXaWR0aFByb3BlcnRp
ZXMpOwogCiAgICAgc3RhdGljIGNvbnN0IGludCBiYWNrZ3JvdW5kUG9zaXRpb25Qcm9wZXJ0aWVz
W10gPSB7IENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWCwgQ1NTUHJvcGVydHlCYWNrZ3Jv
dW5kUG9zaXRpb25ZIH07Ci0gICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoc2hvcnRoYW5kTWFw
LCBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvbiwgYmFja2dyb3VuZFBvc2l0aW9uUHJvcGVy
dGllcyk7CisgICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5k
UG9zaXRpb24sIGJhY2tncm91bmRQb3NpdGlvblByb3BlcnRpZXMpOwogCiAgICAgc3RhdGljIGNv
bnN0IGludCBiYWNrZ3JvdW5kUmVwZWF0UHJvcGVydGllc1tdID0geyBDU1NQcm9wZXJ0eUJhY2tn
cm91bmRSZXBlYXRYLCBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRZIH07Ci0gICAgU0VUX1NI
T1JUSEFORF9NQVBfRU5UUlkoc2hvcnRoYW5kTWFwLCBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBl
YXQsIGJhY2tncm91bmRSZXBlYXRQcm9wZXJ0aWVzKTsKKyAgICBTRVRfU0hPUlRIQU5EX01BUF9F
TlRSWShDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXQsIGJhY2tncm91bmRSZXBlYXRQcm9wZXJ0
aWVzKTsKIAogICAgIHN0YXRpYyBjb25zdCBpbnQgYm9yZGVyU3BhY2luZ1Byb3BlcnRpZXNbXSA9
IHsgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJIb3Jpem9udGFsU3BhY2luZywgQ1NTUHJvcGVydHlX
ZWJraXRCb3JkZXJWZXJ0aWNhbFNwYWNpbmcgfTsKLSAgICBTRVRfU0hPUlRIQU5EX01BUF9FTlRS
WShzaG9ydGhhbmRNYXAsIENTU1Byb3BlcnR5Qm9yZGVyU3BhY2luZywgYm9yZGVyU3BhY2luZ1By
b3BlcnRpZXMpOworICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZKENTU1Byb3BlcnR5Qm9yZGVy
U3BhY2luZywgYm9yZGVyU3BhY2luZ1Byb3BlcnRpZXMpOwogCiAgICAgc3RhdGljIGNvbnN0IGlu
dCBmbGV4Rmxvd1Byb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRGbGV4RGlyZWN0aW9u
LCBDU1NQcm9wZXJ0eVdlYmtpdEZsZXhXcmFwIH07Ci0gICAgU0VUX1NIT1JUSEFORF9NQVBfRU5U
Ulkoc2hvcnRoYW5kTWFwLCBDU1NQcm9wZXJ0eVdlYmtpdEZsZXhGbG93LCBmbGV4Rmxvd1Byb3Bl
cnRpZXMpOworICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZKENTU1Byb3BlcnR5V2Via2l0Rmxl
eEZsb3csIGZsZXhGbG93UHJvcGVydGllcyk7CiAKICAgICBzdGF0aWMgY29uc3QgaW50IGxpc3RT
dHlsZVByb3BlcnRpZXNbXSA9IHsKICAgICAgICAgQ1NTUHJvcGVydHlMaXN0U3R5bGVJbWFnZSwK
ICAgICAgICAgQ1NTUHJvcGVydHlMaXN0U3R5bGVQb3NpdGlvbiwKICAgICAgICAgQ1NTUHJvcGVy
dHlMaXN0U3R5bGVUeXBlCiAgICAgfTsKLSAgICBTRVRfU0hPUlRIQU5EX01BUF9FTlRSWShzaG9y
dGhhbmRNYXAsIENTU1Byb3BlcnR5TGlzdFN0eWxlLCBsaXN0U3R5bGVQcm9wZXJ0aWVzKTsKKyAg
ICBTRVRfU0hPUlRIQU5EX01BUF9FTlRSWShDU1NQcm9wZXJ0eUxpc3RTdHlsZSwgbGlzdFN0eWxl
UHJvcGVydGllcyk7CiAKICAgICBzdGF0aWMgY29uc3QgaW50IG1hcmdpblByb3BlcnRpZXNbXSA9
IHsKICAgICAgICAgQ1NTUHJvcGVydHlNYXJnaW5Ub3AsCkBAIC0xMTYsMTAgKzEyMywxMCBAQCBz
dGF0aWMgdm9pZCBpbml0U2hvcnRoYW5kTWFwKFNob3J0aGFuZE1hcCYgc2hvcnRoYW5kTWFwKQog
ICAgICAgICBDU1NQcm9wZXJ0eU1hcmdpbkJvdHRvbSwKICAgICAgICAgQ1NTUHJvcGVydHlNYXJn
aW5MZWZ0CiAgICAgfTsKLSAgICBTRVRfU0hPUlRIQU5EX01BUF9FTlRSWShzaG9ydGhhbmRNYXAs
IENTU1Byb3BlcnR5TWFyZ2luLCBtYXJnaW5Qcm9wZXJ0aWVzKTsKKyAgICBTRVRfU0hPUlRIQU5E
X01BUF9FTlRSWShDU1NQcm9wZXJ0eU1hcmdpbiwgbWFyZ2luUHJvcGVydGllcyk7CiAKICAgICBz
dGF0aWMgY29uc3QgaW50IG1hcmdpbkNvbGxhcHNlUHJvcGVydGllc1tdID0geyBDU1NQcm9wZXJ0
eVdlYmtpdE1hcmdpbkJlZm9yZUNvbGxhcHNlLCBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkFmdGVy
Q29sbGFwc2UgfTsKLSAgICBTRVRfU0hPUlRIQU5EX01BUF9FTlRSWShzaG9ydGhhbmRNYXAsIENT
U1Byb3BlcnR5V2Via2l0TWFyZ2luQ29sbGFwc2UsIG1hcmdpbkNvbGxhcHNlUHJvcGVydGllcyk7
CisgICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5Db2xs
YXBzZSwgbWFyZ2luQ29sbGFwc2VQcm9wZXJ0aWVzKTsKIAogICAgIHN0YXRpYyBjb25zdCBpbnQg
bWFycXVlZVByb3BlcnRpZXNbXSA9IHsKICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVl
RGlyZWN0aW9uLApAQCAtMTI4LDcgKzEzNSw3IEBAIHN0YXRpYyB2b2lkIGluaXRTaG9ydGhhbmRN
YXAoU2hvcnRoYW5kTWFwJiBzaG9ydGhhbmRNYXApCiAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0
TWFycXVlZVN0eWxlLAogICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVTcGVlZAogICAg
IH07Ci0gICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoc2hvcnRoYW5kTWFwLCBDU1NQcm9wZXJ0
eVdlYmtpdE1hcnF1ZWUsIG1hcnF1ZWVQcm9wZXJ0aWVzKTsKKyAgICBTRVRfU0hPUlRIQU5EX01B
UF9FTlRSWShDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWUsIG1hcnF1ZWVQcm9wZXJ0aWVzKTsKIAog
ICAgIHN0YXRpYyBjb25zdCBpbnQgb3V0bGluZVByb3BlcnRpZXNbXSA9IHsKICAgICAgICAgQ1NT
UHJvcGVydHlPdXRsaW5lQ29sb3IsCkBAIC0xMzYsNyArMTQzLDcgQEAgc3RhdGljIHZvaWQgaW5p
dFNob3J0aGFuZE1hcChTaG9ydGhhbmRNYXAmIHNob3J0aGFuZE1hcCkKICAgICAgICAgQ1NTUHJv
cGVydHlPdXRsaW5lU3R5bGUsCiAgICAgICAgIENTU1Byb3BlcnR5T3V0bGluZVdpZHRoCiAgICAg
fTsKLSAgICBTRVRfU0hPUlRIQU5EX01BUF9FTlRSWShzaG9ydGhhbmRNYXAsIENTU1Byb3BlcnR5
T3V0bGluZSwgb3V0bGluZVByb3BlcnRpZXMpOworICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZ
KENTU1Byb3BlcnR5T3V0bGluZSwgb3V0bGluZVByb3BlcnRpZXMpOwogCiAgICAgc3RhdGljIGNv
bnN0IGludCBwYWRkaW5nUHJvcGVydGllc1tdID0gewogICAgICAgICBDU1NQcm9wZXJ0eVBhZGRp
bmdUb3AsCkBAIC0xNDQsMTcgKzE1MSwxNyBAQCBzdGF0aWMgdm9pZCBpbml0U2hvcnRoYW5kTWFw
KFNob3J0aGFuZE1hcCYgc2hvcnRoYW5kTWFwKQogICAgICAgICBDU1NQcm9wZXJ0eVBhZGRpbmdC
b3R0b20sCiAgICAgICAgIENTU1Byb3BlcnR5UGFkZGluZ0xlZnQKICAgICB9OwotICAgIFNFVF9T
SE9SVEhBTkRfTUFQX0VOVFJZKHNob3J0aGFuZE1hcCwgQ1NTUHJvcGVydHlQYWRkaW5nLCBwYWRk
aW5nUHJvcGVydGllcyk7CisgICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoQ1NTUHJvcGVydHlQ
YWRkaW5nLCBwYWRkaW5nUHJvcGVydGllcyk7CiAKICAgICBzdGF0aWMgY29uc3QgaW50IHdlYmtp
dFdyYXBQcm9wZXJ0aWVzW10gPSB7CiAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0V3JhcEZsb3cs
CiAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0V3JhcE1hcmdpbiwKICAgICAgICAgQ1NTUHJvcGVy
dHlXZWJraXRXcmFwUGFkZGluZwogICAgIH07Ci0gICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlko
c2hvcnRoYW5kTWFwLCBDU1NQcm9wZXJ0eVdlYmtpdFdyYXAsIHdlYmtpdFdyYXBQcm9wZXJ0aWVz
KTsKKyAgICBTRVRfU0hPUlRIQU5EX01BUF9FTlRSWShDU1NQcm9wZXJ0eVdlYmtpdFdyYXAsIHdl
YmtpdFdyYXBQcm9wZXJ0aWVzKTsKIAogICAgIHN0YXRpYyBjb25zdCBpbnQgdGV4dFN0cm9rZVBy
b3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlQ29sb3IsIENTU1Byb3Bl
cnR5V2Via2l0VGV4dFN0cm9rZVdpZHRoIH07Ci0gICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlko
c2hvcnRoYW5kTWFwLCBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2UsIHRleHRTdHJva2VQcm9w
ZXJ0aWVzKTsKKyAgICBTRVRfU0hPUlRIQU5EX01BUF9FTlRSWShDU1NQcm9wZXJ0eVdlYmtpdFRl
eHRTdHJva2UsIHRleHRTdHJva2VQcm9wZXJ0aWVzKTsKIAogICAgIHN0YXRpYyBjb25zdCBpbnQg
YmFja2dyb3VuZFByb3BlcnRpZXNbXSA9IHsKICAgICAgICAgQ1NTUHJvcGVydHlCYWNrZ3JvdW5k
QXR0YWNobWVudCwKQEAgLTE2NywyMCArMTc0LDIwIEBAIHN0YXRpYyB2b2lkIGluaXRTaG9ydGhh
bmRNYXAoU2hvcnRoYW5kTWFwJiBzaG9ydGhhbmRNYXApCiAgICAgICAgIENTU1Byb3BlcnR5QmFj
a2dyb3VuZFJlcGVhdFgsCiAgICAgICAgIENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFkKICAg
ICB9OwotICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZKHNob3J0aGFuZE1hcCwgQ1NTUHJvcGVy
dHlCYWNrZ3JvdW5kLCBiYWNrZ3JvdW5kUHJvcGVydGllcyk7CisgICAgU0VUX1NIT1JUSEFORF9N
QVBfRU5UUlkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kLCBiYWNrZ3JvdW5kUHJvcGVydGllcyk7CiAK
ICAgICBzdGF0aWMgY29uc3QgaW50IGNvbHVtbnNQcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5
V2Via2l0Q29sdW1uV2lkdGgsIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uQ291bnQgfTsKLSAgICBT
RVRfU0hPUlRIQU5EX01BUF9FTlRSWShzaG9ydGhhbmRNYXAsIENTU1Byb3BlcnR5V2Via2l0Q29s
dW1ucywgY29sdW1uc1Byb3BlcnRpZXMpOworICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZKENT
U1Byb3BlcnR5V2Via2l0Q29sdW1ucywgY29sdW1uc1Byb3BlcnRpZXMpOwogCiAgICAgc3RhdGlj
IGNvbnN0IGludCBjb2x1bW5SdWxlUHJvcGVydGllc1tdID0gewogICAgICAgICBDU1NQcm9wZXJ0
eVdlYmtpdENvbHVtblJ1bGVDb2xvciwKICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5S
dWxlU3R5bGUsCiAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUnVsZVdpZHRoCiAgICAg
fTsKLSAgICBTRVRfU0hPUlRIQU5EX01BUF9FTlRSWShzaG9ydGhhbmRNYXAsIENTU1Byb3BlcnR5
V2Via2l0Q29sdW1uUnVsZSwgY29sdW1uUnVsZVByb3BlcnRpZXMpOworICAgIFNFVF9TSE9SVEhB
TkRfTUFQX0VOVFJZKENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUnVsZSwgY29sdW1uUnVsZVByb3Bl
cnRpZXMpOwogCiAgICAgc3RhdGljIGNvbnN0IGludCBvdmVyZmxvd1Byb3BlcnRpZXNbXSA9IHsg
Q1NTUHJvcGVydHlPdmVyZmxvd1gsIENTU1Byb3BlcnR5T3ZlcmZsb3dZIH07Ci0gICAgU0VUX1NI
T1JUSEFORF9NQVBfRU5UUlkoc2hvcnRoYW5kTWFwLCBDU1NQcm9wZXJ0eU92ZXJmbG93LCBvdmVy
Zmxvd1Byb3BlcnRpZXMpOworICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZKENTU1Byb3BlcnR5
T3ZlcmZsb3csIG92ZXJmbG93UHJvcGVydGllcyk7CiAKICAgICBzdGF0aWMgY29uc3QgaW50IGJv
cmRlclJhZGl1c1Byb3BlcnRpZXNbXSA9IHsKICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJUb3BS
aWdodFJhZGl1cywKQEAgLTE4OCwxNCArMTk1LDE0IEBAIHN0YXRpYyB2b2lkIGluaXRTaG9ydGhh
bmRNYXAoU2hvcnRoYW5kTWFwJiBzaG9ydGhhbmRNYXApCiAgICAgICAgIENTU1Byb3BlcnR5Qm9y
ZGVyQm90dG9tTGVmdFJhZGl1cywKICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21SaWdo
dFJhZGl1cwogICAgIH07Ci0gICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoc2hvcnRoYW5kTWFw
LCBDU1NQcm9wZXJ0eUJvcmRlclJhZGl1cywgYm9yZGVyUmFkaXVzUHJvcGVydGllcyk7Ci0gICAg
U0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoc2hvcnRoYW5kTWFwLCBDU1NQcm9wZXJ0eVdlYmtpdEJv
cmRlclJhZGl1cywgYm9yZGVyUmFkaXVzUHJvcGVydGllcyk7CisgICAgU0VUX1NIT1JUSEFORF9N
QVBfRU5UUlkoQ1NTUHJvcGVydHlCb3JkZXJSYWRpdXMsIGJvcmRlclJhZGl1c1Byb3BlcnRpZXMp
OworICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyUmFk
aXVzLCBib3JkZXJSYWRpdXNQcm9wZXJ0aWVzKTsKIAogICAgIHN0YXRpYyBjb25zdCBpbnQgbWFz
a1Bvc2l0aW9uUHJvcGVydGllc1tdID0geyBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblgs
IENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uWSB9OwotICAgIFNFVF9TSE9SVEhBTkRfTUFQ
X0VOVFJZKHNob3J0aGFuZE1hcCwgQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb24sIG1hc2tQ
b3NpdGlvblByb3BlcnRpZXMpOworICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZKENTU1Byb3Bl
cnR5V2Via2l0TWFza1Bvc2l0aW9uLCBtYXNrUG9zaXRpb25Qcm9wZXJ0aWVzKTsKIAogICAgIHN0
YXRpYyBjb25zdCBpbnQgbWFza1JlcGVhdFByb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlXZWJr
aXRNYXNrUmVwZWF0WCwgQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0WSB9OwotICAgIFNFVF9T
SE9SVEhBTkRfTUFQX0VOVFJZKHNob3J0aGFuZE1hcCwgQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVw
ZWF0LCBtYXNrUmVwZWF0UHJvcGVydGllcyk7CisgICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlko
Q1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0LCBtYXNrUmVwZWF0UHJvcGVydGllcyk7CiAKICAg
ICBzdGF0aWMgY29uc3QgaW50IG1hc2tQcm9wZXJ0aWVzW10gPSB7CiAgICAgICAgIENTU1Byb3Bl
cnR5V2Via2l0TWFza0F0dGFjaG1lbnQsCkBAIC0yMDcsNyArMjE0LDcgQEAgc3RhdGljIHZvaWQg
aW5pdFNob3J0aGFuZE1hcChTaG9ydGhhbmRNYXAmIHNob3J0aGFuZE1hcCkKICAgICAgICAgQ1NT
UHJvcGVydHlXZWJraXRNYXNrUmVwZWF0WCwKICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRNYXNr
UmVwZWF0WQogICAgIH07Ci0gICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoc2hvcnRoYW5kTWFw
LCBDU1NQcm9wZXJ0eVdlYmtpdE1hc2ssIG1hc2tQcm9wZXJ0aWVzKTsKKyAgICBTRVRfU0hPUlRI
QU5EX01BUF9FTlRSWShDU1NQcm9wZXJ0eVdlYmtpdE1hc2ssIG1hc2tQcm9wZXJ0aWVzKTsKIAog
ICAgIHN0YXRpYyBjb25zdCBpbnQgYW5pbWF0aW9uUHJvcGVydGllc1tdID0gewogICAgICAgICBD
U1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbk5hbWUsCkBAIC0yMTgsNyArMjI1LDcgQEAgc3RhdGlj
IHZvaWQgaW5pdFNob3J0aGFuZE1hcChTaG9ydGhhbmRNYXAmIHNob3J0aGFuZE1hcCkKICAgICAg
ICAgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25EaXJlY3Rpb24sCiAgICAgICAgIENTU1Byb3Bl
cnR5V2Via2l0QW5pbWF0aW9uRmlsbE1vZGUKICAgICB9OwotICAgIFNFVF9TSE9SVEhBTkRfTUFQ
X0VOVFJZKHNob3J0aGFuZE1hcCwgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb24sIGFuaW1hdGlv
blByb3BlcnRpZXMpOworICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZKENTU1Byb3BlcnR5V2Vi
a2l0QW5pbWF0aW9uLCBhbmltYXRpb25Qcm9wZXJ0aWVzKTsKIAogICAgIHN0YXRpYyBjb25zdCBp
bnQgdHJhbnNpdGlvblByb3BlcnRpZXNbXSA9IHsKICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRU
cmFuc2l0aW9uUHJvcGVydHksCkBAIC0yMjYsMzEgKzIzMywyMSBAQCBzdGF0aWMgdm9pZCBpbml0
U2hvcnRoYW5kTWFwKFNob3J0aGFuZE1hcCYgc2hvcnRoYW5kTWFwKQogICAgICAgICBDU1NQcm9w
ZXJ0eVdlYmtpdFRyYW5zaXRpb25UaW1pbmdGdW5jdGlvbiwKICAgICAgICAgQ1NTUHJvcGVydHlX
ZWJraXRUcmFuc2l0aW9uRGVsYXkKICAgICB9OwotICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZ
KHNob3J0aGFuZE1hcCwgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uLCB0cmFuc2l0aW9uUHJv
cGVydGllcyk7CisgICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoQ1NTUHJvcGVydHlXZWJraXRU
cmFuc2l0aW9uLCB0cmFuc2l0aW9uUHJvcGVydGllcyk7CiAKICAgICBzdGF0aWMgY29uc3QgaW50
IHRyYW5zZm9ybU9yaWdpblByb3BlcnRpZXNbXSA9IHsKICAgICAgICAgQ1NTUHJvcGVydHlXZWJr
aXRUcmFuc2Zvcm1PcmlnaW5YLAogICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9y
aWdpblkKICAgICB9OwotICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZKHNob3J0aGFuZE1hcCwg
Q1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1PcmlnaW4sIHRyYW5zZm9ybU9yaWdpblByb3BlcnRp
ZXMpOworICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZKENTU1Byb3BlcnR5V2Via2l0VHJhbnNm
b3JtT3JpZ2luLCB0cmFuc2Zvcm1PcmlnaW5Qcm9wZXJ0aWVzKTsKIAogICAgIHN0YXRpYyBjb25z
dCBpbnQgdGV4dEVtcGhhc2lzUHJvcGVydGllc1tdID0gewogICAgICAgICBDU1NQcm9wZXJ0eVdl
YmtpdFRleHRFbXBoYXNpc0NvbG9yLAogICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBo
YXNpc1N0eWxlCiAgICAgfTsKLSAgICBTRVRfU0hPUlRIQU5EX01BUF9FTlRSWShzaG9ydGhhbmRN
YXAsIENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzLCB0ZXh0RW1waGFzaXNQcm9wZXJ0aWVz
KTsKKyAgICBTRVRfU0hPUlRIQU5EX01BUF9FTlRSWShDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBo
YXNpcywgdGV4dEVtcGhhc2lzUHJvcGVydGllcyk7CiAKICAgICAjdW5kZWYgU0VUX1NIT1JUSEFO
RF9NQVBfRU5UUlkKIH0KIAotQ1NTUHJvcGVydHlMb25naGFuZCBsb25naGFuZEZvclByb3BlcnR5
KGludCBwcm9wZXJ0eUlEKQotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoU2hvcnRoYW5kTWFw
LCBzaG9ydGhhbmRNYXAsICgpKTsKLSAgICBpZiAoc2hvcnRoYW5kTWFwLmlzRW1wdHkoKSkKLSAg
ICAgICAgaW5pdFNob3J0aGFuZE1hcChzaG9ydGhhbmRNYXApOwotCi0gICAgcmV0dXJuIHNob3J0
aGFuZE1hcC5nZXQocHJvcGVydHlJRCk7Ci19Ci0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TG9uZ2hhbmQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eUxvbmdoYW5kLmgKaW5kZXggOTYzM2MwMjVhYmZk
YWEyYzdkOWM4ZjM0ZTQyMjZjYTFkMTNiMWQ0My4uMjMxMWJmOGQyMWI2ZTRhZWMxZWEwMGE5ZmZl
YmQxM2FjMjc0NGYwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5
TG9uZ2hhbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlMb25naGFuZC5o
CkBAIC0yMSw2ICsyMSwxMCBAQAogI2lmbmRlZiBDU1NQcm9wZXJ0eUxvbmdoYW5kX2gKICNkZWZp
bmUgQ1NTUHJvcGVydHlMb25naGFuZF9oCiAKKyNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgi
CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5o
PgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENTU1Byb3BlcnR5TG9uZ2hhbmQgewpA
QCAtNDUsOCArNDksMzkgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX2xlbmd0aDsKIH07CiAK
LS8vIFJldHVybnMgYW4gZW1wdHkgbGlzdCBpZiB0aGUgcHJvcGVydHkgaXMgbm90IGEgc2hvcnRo
YW5kCi1DU1NQcm9wZXJ0eUxvbmdoYW5kIGxvbmdoYW5kRm9yUHJvcGVydHkoaW50KTsKK2NsYXNz
IENTU1Byb3BlcnR5TG9uZ2hhbmRNYXAgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENTU1By
b3BlcnR5TG9uZ2hhbmRNYXApOworcHVibGljOgorICAgIHN0YXRpYyBjb25zdCBDU1NQcm9wZXJ0
eUxvbmdoYW5kTWFwJiBzaGFyZWRDU1NQcm9wZXJ0eUxvbmdoYW5kTWFwKCk7CisKKyAgICAvLyBS
ZXR1cm5zIGFuIGVtcHR5IGxpc3QgaWYgdGhlIHByb3BlcnR5IGlzIG5vdCBhIHNob3J0aGFuZAor
ICAgIGNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIGxvbmdoYW5kRm9yUHJvcGVydHkoQ1NTUHJv
cGVydHlJRCBwcm9wZXJ0eSkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVCh2YWxpZChwcm9w
ZXJ0eSkpOworICAgICAgICByZXR1cm4gbV9wcm9wZXJ0eU1hcFtpbmRleChwcm9wZXJ0eSldOwor
ICAgIH0KK3ByaXZhdGU6CisgICAgQ1NTUHJvcGVydHlMb25naGFuZE1hcCgpOworCisgICAgc3Rh
dGljIGludCBpbmRleChDU1NQcm9wZXJ0eUlEIHByb3BlcnR5KQorICAgIHsKKyAgICAgICAgcmV0
dXJuIHByb3BlcnR5IC0gZmlyc3RDU1NQcm9wZXJ0eTsKKyAgICB9CisKKyAgICBzdGF0aWMgYm9v
bCB2YWxpZChDU1NQcm9wZXJ0eUlEIHByb3BlcnR5KQorICAgIHsKKyAgICAgICAgaW50IGkgPSBp
bmRleChwcm9wZXJ0eSk7CisgICAgICAgIHJldHVybiBpID49IDAgJiYgaSA8IG51bUNTU1Byb3Bl
cnRpZXM7CisgICAgfQorCisgICAgdm9pZCBzZXRMb25naGFuZEZvclByb3BlcnR5KENTU1Byb3Bl
cnR5SUQgcHJvcGVydHksIENTU1Byb3BlcnR5TG9uZ2hhbmQgaGFuZGxlcikKKyAgICB7CisgICAg
ICAgIEFTU0VSVCh2YWxpZChwcm9wZXJ0eSkpOworICAgICAgICBtX3Byb3BlcnR5TWFwW2luZGV4
KHByb3BlcnR5KV0gPSBoYW5kbGVyOworICAgIH0KKworICAgIENTU1Byb3BlcnR5TG9uZ2hhbmQg
bV9wcm9wZXJ0eU1hcFtudW1DU1NQcm9wZXJ0aWVzXTsKK307CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydHlTZXQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydHlTZXQuY3BwCmluZGV4IDY1NDUy
ZWMzYjBhYTgxNTA3NDc5MjlmMTc4MGZhYmRkNjQ2YmY0ZmUuLmEwZTU4MDBlZjk2NGI3NjNhNThj
OTljMjgyMGRlMzJkNGVjZjU2YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHls
ZVByb3BlcnR5U2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNl
dC5jcHAKQEAgLTUwOCw3ICs1MDgsOCBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBTdHlsZVByb3Bl
cnR5U2V0OjpnZXRQcm9wZXJ0eUNTU1ZhbHVlKGludCBwcm9wZXJ0eUlEKSBjb25zdAogCiBib29s
IFN0eWxlUHJvcGVydHlTZXQ6OnJlbW92ZVNob3J0aGFuZFByb3BlcnR5KGludCBwcm9wZXJ0eUlE
KQogewotICAgIENTU1Byb3BlcnR5TG9uZ2hhbmQgbG9uZ2hhbmQgPSBsb25naGFuZEZvclByb3Bl
cnR5KHByb3BlcnR5SUQpOworICAgIGNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmRNYXAmIGxvbmdo
YW5kTWFwID0gQ1NTUHJvcGVydHlMb25naGFuZE1hcDo6c2hhcmVkQ1NTUHJvcGVydHlMb25naGFu
ZE1hcCgpOworICAgIENTU1Byb3BlcnR5TG9uZ2hhbmQgbG9uZ2hhbmQgPSBsb25naGFuZE1hcC5s
b25naGFuZEZvclByb3BlcnR5KHN0YXRpY19jYXN0PENTU1Byb3BlcnR5SUQ+KHByb3BlcnR5SUQp
KTsKICAgICBpZiAoIWxvbmdoYW5kLmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgcmV0dXJuIHJlbW92ZVByb3BlcnRpZXNJblNldChsb25naGFuZC5wcm9wZXJ0aWVzKCksIGxv
bmdoYW5kLmxlbmd0aCgpKTsKQEAgLTU0Niw3ICs1NDcsOCBAQCBib29sIFN0eWxlUHJvcGVydHlT
ZXQ6OnByb3BlcnR5SXNJbXBvcnRhbnQoaW50IHByb3BlcnR5SUQpIGNvbnN0CiAgICAgaWYgKHBy
b3BlcnR5KQogICAgICAgICByZXR1cm4gcHJvcGVydHktPmlzSW1wb3J0YW50KCk7CiAKLSAgICBD
U1NQcm9wZXJ0eUxvbmdoYW5kIGxvbmdoYW5kcyA9IGxvbmdoYW5kRm9yUHJvcGVydHkocHJvcGVy
dHlJRCk7CisgICAgY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZE1hcCYgbG9uZ2hhbmRNYXAgPSBD
U1NQcm9wZXJ0eUxvbmdoYW5kTWFwOjpzaGFyZWRDU1NQcm9wZXJ0eUxvbmdoYW5kTWFwKCk7Cisg
ICAgQ1NTUHJvcGVydHlMb25naGFuZCBsb25naGFuZHMgPSBsb25naGFuZE1hcC5sb25naGFuZEZv
clByb3BlcnR5KHN0YXRpY19jYXN0PENTU1Byb3BlcnR5SUQ+KHByb3BlcnR5SUQpKTsKICAgICBp
ZiAoIWxvbmdoYW5kcy5sZW5ndGgoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC01ODUs
NyArNTg3LDggQEAgYm9vbCBTdHlsZVByb3BlcnR5U2V0OjpzZXRQcm9wZXJ0eShpbnQgcHJvcGVy
dHlJRCwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgYm9vbCBpbXAKIAogdm9pZCBTdHlsZVByb3BlcnR5
U2V0OjpzZXRQcm9wZXJ0eShpbnQgcHJvcGVydHlJRCwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gcHJw
VmFsdWUsIGJvb2wgaW1wb3J0YW50KQogewotICAgIENTU1Byb3BlcnR5TG9uZ2hhbmQgbG9uZ2hh
bmQgPSBsb25naGFuZEZvclByb3BlcnR5KHByb3BlcnR5SUQpOworICAgIGNvbnN0IENTU1Byb3Bl
cnR5TG9uZ2hhbmRNYXAmIGxvbmdoYW5kTWFwID0gQ1NTUHJvcGVydHlMb25naGFuZE1hcDo6c2hh
cmVkQ1NTUHJvcGVydHlMb25naGFuZE1hcCgpOworICAgIENTU1Byb3BlcnR5TG9uZ2hhbmQgbG9u
Z2hhbmQgPSBsb25naGFuZE1hcC5sb25naGFuZEZvclByb3BlcnR5KHN0YXRpY19jYXN0PENTU1By
b3BlcnR5SUQ+KHByb3BlcnR5SUQpKTsKICAgICBpZiAoIWxvbmdoYW5kLmxlbmd0aCgpKSB7CiAg
ICAgICAgIHNldFByb3BlcnR5KENTU1Byb3BlcnR5KHByb3BlcnR5SUQsIHBycFZhbHVlLCBpbXBv
cnRhbnQpKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1h
dGlvbi9BbmltYXRpb25CYXNlLmNwcAppbmRleCBlMDZjMDdmYzg4MmE2Mjk2ZTM0NTUzMDE0YzEw
ODhlMDkxMTgwNDVkLi5hODcxZjYzODFjMzg1ZWZlYTJhNDNiNjgwMGJhMDlkNDMyNzJhMmE4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcApA
QCAtMTE2Nyw5ICsxMTY3LDEwIEBAIHN0YXRpYyB2b2lkIGFkZFNob3J0aGFuZFByb3BlcnRpZXMo
KQogICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdpbgogICAgIH07CiAKKyAg
ICBjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kTWFwJiBsb25naGFuZE1hcCA9IENTU1Byb3BlcnR5
TG9uZ2hhbmRNYXA6OnNoYXJlZENTU1Byb3BlcnR5TG9uZ2hhbmRNYXAoKTsKICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IFdURl9BUlJBWV9MRU5HVEgoYW5pbWF0YWJsZVNob3J0aGFuZFByb3Bl
cnRpZXMpOyArK2kpIHsKICAgICAgICAgaW50IHByb3BlcnR5SUQgPSBhbmltYXRhYmxlU2hvcnRo
YW5kUHJvcGVydGllc1tpXTsKLSAgICAgICAgQ1NTUHJvcGVydHlMb25naGFuZCBsb25naGFuZCA9
IGxvbmdoYW5kRm9yUHJvcGVydHkocHJvcGVydHlJRCk7CisgICAgICAgIENTU1Byb3BlcnR5TG9u
Z2hhbmQgbG9uZ2hhbmQgPSBsb25naGFuZE1hcC5sb25naGFuZEZvclByb3BlcnR5KHN0YXRpY19j
YXN0PENTU1Byb3BlcnR5SUQ+KHByb3BlcnR5SUQpKTsKICAgICAgICAgaWYgKGxvbmdoYW5kLmxl
bmd0aCgpID4gMCkKICAgICAgICAgICAgIGFkZFByb3BlcnR5V3JhcHBlcihwcm9wZXJ0eUlELCBu
ZXcgU2hvcnRoYW5kUHJvcGVydHlXcmFwcGVyKHByb3BlcnR5SUQsIGxvbmdoYW5kKSk7CiAgICAg
fQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132929</attachid>
            <date>2012-03-20 17:01:04 -0700</date>
            <delta_ts>2012-03-22 16:51:55 -0700</delta_ts>
            <desc>Hide singleton pattern behind inline static function</desc>
            <filename>bug-81611-20120321110102.patch</filename>
            <type>text/plain</type>
            <size>16653</size>
            <attacher name="Luke Macpherson">macpherson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExNDYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTQ3N2IzMGFiNDhmNGE4
YjMwZWU1MWRlNTE3ZDIzYjdhZDE3YWM3Ni4uYzdiZTAwNWU2ZDY0OWRlODI0YjE3OTllYzljYWY5
NmUxN2NjMmZjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEyLTAzLTE5ICBMdWtl
IE1hY3BoZXJzb24gIDxtYWNwaGVyc29uQGNocm9taXVtLm9yZz4KKworICAgICAgICBNYWtlIENT
U0xvbmdoYW5kUHJvcGVydHkgdXNlIGEgbG9va3VwIHRhYmxlIGluc3RlYWQgb2YgYSBoYXNoIG1h
cC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgxNjEx
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3
IHRlc3RzIC0gcmVmYWN0b3Jpbmcgb25seS4KKworICAgICAgICAqIGNzcy9DU1NQcm9wZXJ0eUxv
bmdoYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5TG9uZ2hhbmRNYXA6OnNo
YXJlZENTU1Byb3BlcnR5TG9uZ2hhbmRNYXApOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVy
dHlMb25naGFuZE1hcDo6Q1NTUHJvcGVydHlMb25naGFuZE1hcCk6CisgICAgICAgICogY3NzL0NT
U1Byb3BlcnR5TG9uZ2hhbmQuaDoKKyAgICAgICAgKENTU1Byb3BlcnR5TG9uZ2hhbmRNYXApOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlMb25naGFuZE1hcDo6bG9uZ2hhbmRGb3JQcm9w
ZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eUxvbmdoYW5kTWFwOjppbmRleCk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eUxvbmdoYW5kTWFwOjp2YWxpZCk6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eUxvbmdoYW5kTWFwOjpzZXRQcm9wZXJ0eUhhbmRsZXIp
OgorCiAyMDEyLTAzLTIwICBMdWtlIE1hY3BoZXJzb24gIDxtYWNwaGVyc29uQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBVc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OmNvbnZlcnRUb0xlbmd0aCgpIHRv
IGhhbmRsZSBDU1NQcm9wZXJ0eVdlYmtpdEJveFJlZmxlY3QgYW5kIGluIGNyZWF0ZUdyaWRUcmFj
a0JyZWFkdGguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlMb25n
aGFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlMb25naGFuZC5jcHAKaW5k
ZXggMGQwM2IyMGJmZDQ1MTZmY2M3ZjljNTMxMTIxNzMxYjc1ODAwYzFkYy4uMmRjZmM5NGNhM2M0
M2M2MTkyMjViMzMyYzE1Zjk5YTFkYjM1YzE4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1Byb3BlcnR5TG9uZ2hhbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
cm9wZXJ0eUxvbmdoYW5kLmNwcApAQCAtMjcsMTIgKzI3LDE5IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotdHlwZWRlZiBIYXNoTWFwPGludCwgQ1NTUHJvcGVydHlMb25naGFuZD4gU2hvcnRo
YW5kTWFwOworY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZE1hcCYgQ1NTUHJvcGVydHlMb25naGFu
ZE1hcDo6c2hhcmVkQ1NTUHJvcGVydHlMb25naGFuZE1hcCgpCit7CisgICAgREVGSU5FX1NUQVRJ
Q19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kTWFwLCBjc3NQcm9wZXJ0eUxvbmdoYW5kTWFwSW5z
dGFuY2UsICgpKTsKKyAgICByZXR1cm4gY3NzUHJvcGVydHlMb25naGFuZE1hcEluc3RhbmNlOwor
fQogCi1zdGF0aWMgdm9pZCBpbml0U2hvcnRoYW5kTWFwKFNob3J0aGFuZE1hcCYgc2hvcnRoYW5k
TWFwKQorQ1NTUHJvcGVydHlMb25naGFuZE1hcDo6Q1NTUHJvcGVydHlMb25naGFuZE1hcCgpCiB7
Ci0gICAgI2RlZmluZSBTRVRfU0hPUlRIQU5EX01BUF9FTlRSWShtYXAsIHByb3BJRCwgYXJyYXkp
IFwKLSAgICAgICAgbWFwLnNldChwcm9wSUQsIENTU1Byb3BlcnR5TG9uZ2hhbmQoYXJyYXksIFdU
Rl9BUlJBWV9MRU5HVEgoYXJyYXkpKSkKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bUNTU1By
b3BlcnRpZXM7ICsraSkKKyAgICAgICAgbV9wcm9wZXJ0eU1hcFtpXSA9IENTU1Byb3BlcnR5TG9u
Z2hhbmQoKTsKKworICAgICNkZWZpbmUgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkocHJvcElELCBh
cnJheSkgXAorICAgICAgICBzZXRMb25naGFuZEZvclByb3BlcnR5KHByb3BJRCwgQ1NTUHJvcGVy
dHlMb25naGFuZChhcnJheSwgV1RGX0FSUkFZX0xFTkdUSChhcnJheSkpKQogCiAgICAgc3RhdGlj
IGNvbnN0IGludCBmb250UHJvcGVydGllc1tdID0gewogICAgICAgICBDU1NQcm9wZXJ0eUZvbnRG
YW1pbHksCkBAIC00Miw3ICs0OSw3IEBAIHN0YXRpYyB2b2lkIGluaXRTaG9ydGhhbmRNYXAoU2hv
cnRoYW5kTWFwJiBzaG9ydGhhbmRNYXApCiAgICAgICAgIENTU1Byb3BlcnR5Rm9udFdlaWdodCwK
ICAgICAgICAgQ1NTUHJvcGVydHlMaW5lSGVpZ2h0CiAgICAgfTsKLSAgICBTRVRfU0hPUlRIQU5E
X01BUF9FTlRSWShzaG9ydGhhbmRNYXAsIENTU1Byb3BlcnR5Rm9udCwgZm9udFByb3BlcnRpZXMp
OworICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZKENTU1Byb3BlcnR5Rm9udCwgZm9udFByb3Bl
cnRpZXMpOwogCiAgICAgLy8gRG8gbm90IGNoYW5nZSB0aGUgb3JkZXIgb2YgdGhlIGZvbGxvd2lu
ZyBmb3VyIHNob3J0aGFuZHMsIGFuZCBrZWVwIHRoZW0gdG9nZXRoZXIuCiAgICAgc3RhdGljIGNv
bnN0IGludCBib3JkZXJQcm9wZXJ0aWVzWzRdWzNdID0gewpAQCAtNTEsMTIgKzU4LDEyIEBAIHN0
YXRpYyB2b2lkIGluaXRTaG9ydGhhbmRNYXAoU2hvcnRoYW5kTWFwJiBzaG9ydGhhbmRNYXApCiAg
ICAgICAgIHsgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21Db2xvciwgQ1NTUHJvcGVydHlCb3JkZXJC
b3R0b21TdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21XaWR0aCB9LAogICAgICAgICB7IENT
U1Byb3BlcnR5Qm9yZGVyTGVmdENvbG9yLCBDU1NQcm9wZXJ0eUJvcmRlckxlZnRTdHlsZSwgQ1NT
UHJvcGVydHlCb3JkZXJMZWZ0V2lkdGggfQogICAgIH07Ci0gICAgU0VUX1NIT1JUSEFORF9NQVBf
RU5UUlkoc2hvcnRoYW5kTWFwLCBDU1NQcm9wZXJ0eUJvcmRlclRvcCwgYm9yZGVyUHJvcGVydGll
c1swXSk7Ci0gICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoc2hvcnRoYW5kTWFwLCBDU1NQcm9w
ZXJ0eUJvcmRlclJpZ2h0LCBib3JkZXJQcm9wZXJ0aWVzWzFdKTsKLSAgICBTRVRfU0hPUlRIQU5E
X01BUF9FTlRSWShzaG9ydGhhbmRNYXAsIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tLCBib3JkZXJQ
cm9wZXJ0aWVzWzJdKTsKLSAgICBTRVRfU0hPUlRIQU5EX01BUF9FTlRSWShzaG9ydGhhbmRNYXAs
IENTU1Byb3BlcnR5Qm9yZGVyTGVmdCwgYm9yZGVyUHJvcGVydGllc1szXSk7CisgICAgU0VUX1NI
T1JUSEFORF9NQVBfRU5UUlkoQ1NTUHJvcGVydHlCb3JkZXJUb3AsIGJvcmRlclByb3BlcnRpZXNb
MF0pOworICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZKENTU1Byb3BlcnR5Qm9yZGVyUmlnaHQs
IGJvcmRlclByb3BlcnRpZXNbMV0pOworICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZKENTU1By
b3BlcnR5Qm9yZGVyQm90dG9tLCBib3JkZXJQcm9wZXJ0aWVzWzJdKTsKKyAgICBTRVRfU0hPUlRI
QU5EX01BUF9FTlRSWShDU1NQcm9wZXJ0eUJvcmRlckxlZnQsIGJvcmRlclByb3BlcnRpZXNbM10p
OwogCi0gICAgc2hvcnRoYW5kTWFwLnNldChDU1NQcm9wZXJ0eUJvcmRlciwgQ1NTUHJvcGVydHlM
b25naGFuZChib3JkZXJQcm9wZXJ0aWVzWzBdLCBzaXplb2YoYm9yZGVyUHJvcGVydGllcykgLyBz
aXplb2YoYm9yZGVyUHJvcGVydGllc1swXVswXSkpKTsKKyAgICBzZXRMb25naGFuZEZvclByb3Bl
cnR5KENTU1Byb3BlcnR5Qm9yZGVyLCBDU1NQcm9wZXJ0eUxvbmdoYW5kKGJvcmRlclByb3BlcnRp
ZXNbMF0sIHNpemVvZihib3JkZXJQcm9wZXJ0aWVzKSAvIHNpemVvZihib3JkZXJQcm9wZXJ0aWVz
WzBdWzBdKSkpOwogCiAgICAgc3RhdGljIGNvbnN0IGludCBib3JkZXJDb2xvclByb3BlcnRpZXNb
XSA9IHsKICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJUb3BDb2xvciwKQEAgLTY0LDcgKzcxLDcg
QEAgc3RhdGljIHZvaWQgaW5pdFNob3J0aGFuZE1hcChTaG9ydGhhbmRNYXAmIHNob3J0aGFuZE1h
cCkKICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21Db2xvciwKICAgICAgICAgQ1NTUHJv
cGVydHlCb3JkZXJMZWZ0Q29sb3IKICAgICB9OwotICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZ
KHNob3J0aGFuZE1hcCwgQ1NTUHJvcGVydHlCb3JkZXJDb2xvciwgYm9yZGVyQ29sb3JQcm9wZXJ0
aWVzKTsKKyAgICBTRVRfU0hPUlRIQU5EX01BUF9FTlRSWShDU1NQcm9wZXJ0eUJvcmRlckNvbG9y
LCBib3JkZXJDb2xvclByb3BlcnRpZXMpOwogCiAgICAgc3RhdGljIGNvbnN0IGludCBib3JkZXJJ
bWFnZVByb3BlcnRpZXNbXSA9IHsKICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJJbWFnZVNvdXJj
ZSwKQEAgLTczLDcgKzgwLDcgQEAgc3RhdGljIHZvaWQgaW5pdFNob3J0aGFuZE1hcChTaG9ydGhh
bmRNYXAmIHNob3J0aGFuZE1hcCkKICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJJbWFnZU91dHNl
dCwKICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJJbWFnZVJlcGVhdAogICAgIH07Ci0gICAgU0VU
X1NIT1JUSEFORF9NQVBfRU5UUlkoc2hvcnRoYW5kTWFwLCBDU1NQcm9wZXJ0eUJvcmRlckltYWdl
LCBib3JkZXJJbWFnZVByb3BlcnRpZXMpOworICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZKENT
U1Byb3BlcnR5Qm9yZGVySW1hZ2UsIGJvcmRlckltYWdlUHJvcGVydGllcyk7CiAKICAgICBzdGF0
aWMgY29uc3QgaW50IGJvcmRlclN0eWxlUHJvcGVydGllc1tdID0gewogICAgICAgICBDU1NQcm9w
ZXJ0eUJvcmRlclRvcFN0eWxlLApAQCAtODEsNyArODgsNyBAQCBzdGF0aWMgdm9pZCBpbml0U2hv
cnRoYW5kTWFwKFNob3J0aGFuZE1hcCYgc2hvcnRoYW5kTWFwKQogICAgICAgICBDU1NQcm9wZXJ0
eUJvcmRlckJvdHRvbVN0eWxlLAogICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlckxlZnRTdHlsZQog
ICAgIH07Ci0gICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoc2hvcnRoYW5kTWFwLCBDU1NQcm9w
ZXJ0eUJvcmRlclN0eWxlLCBib3JkZXJTdHlsZVByb3BlcnRpZXMpOworICAgIFNFVF9TSE9SVEhB
TkRfTUFQX0VOVFJZKENTU1Byb3BlcnR5Qm9yZGVyU3R5bGUsIGJvcmRlclN0eWxlUHJvcGVydGll
cyk7CiAKICAgICBzdGF0aWMgY29uc3QgaW50IGJvcmRlcldpZHRoUHJvcGVydGllc1tdID0gewog
ICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlclRvcFdpZHRoLApAQCAtODksMjYgKzk2LDI2IEBAIHN0
YXRpYyB2b2lkIGluaXRTaG9ydGhhbmRNYXAoU2hvcnRoYW5kTWFwJiBzaG9ydGhhbmRNYXApCiAg
ICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tV2lkdGgsCiAgICAgICAgIENTU1Byb3BlcnR5
Qm9yZGVyTGVmdFdpZHRoCiAgICAgfTsKLSAgICBTRVRfU0hPUlRIQU5EX01BUF9FTlRSWShzaG9y
dGhhbmRNYXAsIENTU1Byb3BlcnR5Qm9yZGVyV2lkdGgsIGJvcmRlcldpZHRoUHJvcGVydGllcyk7
CisgICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoQ1NTUHJvcGVydHlCb3JkZXJXaWR0aCwgYm9y
ZGVyV2lkdGhQcm9wZXJ0aWVzKTsKIAogICAgIHN0YXRpYyBjb25zdCBpbnQgYmFja2dyb3VuZFBv
c2l0aW9uUHJvcGVydGllc1tdID0geyBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvblgsIENT
U1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWSB9OwotICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VO
VFJZKHNob3J0aGFuZE1hcCwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb24sIGJhY2tncm91
bmRQb3NpdGlvblByb3BlcnRpZXMpOworICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZKENTU1By
b3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uLCBiYWNrZ3JvdW5kUG9zaXRpb25Qcm9wZXJ0aWVzKTsK
IAogICAgIHN0YXRpYyBjb25zdCBpbnQgYmFja2dyb3VuZFJlcGVhdFByb3BlcnRpZXNbXSA9IHsg
Q1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WCwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0
WSB9OwotICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZKHNob3J0aGFuZE1hcCwgQ1NTUHJvcGVy
dHlCYWNrZ3JvdW5kUmVwZWF0LCBiYWNrZ3JvdW5kUmVwZWF0UHJvcGVydGllcyk7CisgICAgU0VU
X1NIT1JUSEFORF9NQVBfRU5UUlkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0LCBiYWNrZ3Jv
dW5kUmVwZWF0UHJvcGVydGllcyk7CiAKICAgICBzdGF0aWMgY29uc3QgaW50IGJvcmRlclNwYWNp
bmdQcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5V2Via2l0Qm9yZGVySG9yaXpvbnRhbFNwYWNp
bmcsIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyVmVydGljYWxTcGFjaW5nIH07Ci0gICAgU0VUX1NI
T1JUSEFORF9NQVBfRU5UUlkoc2hvcnRoYW5kTWFwLCBDU1NQcm9wZXJ0eUJvcmRlclNwYWNpbmcs
IGJvcmRlclNwYWNpbmdQcm9wZXJ0aWVzKTsKKyAgICBTRVRfU0hPUlRIQU5EX01BUF9FTlRSWShD
U1NQcm9wZXJ0eUJvcmRlclNwYWNpbmcsIGJvcmRlclNwYWNpbmdQcm9wZXJ0aWVzKTsKIAogICAg
IHN0YXRpYyBjb25zdCBpbnQgZmxleEZsb3dQcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5V2Vi
a2l0RmxleERpcmVjdGlvbiwgQ1NTUHJvcGVydHlXZWJraXRGbGV4V3JhcCB9OwotICAgIFNFVF9T
SE9SVEhBTkRfTUFQX0VOVFJZKHNob3J0aGFuZE1hcCwgQ1NTUHJvcGVydHlXZWJraXRGbGV4Rmxv
dywgZmxleEZsb3dQcm9wZXJ0aWVzKTsKKyAgICBTRVRfU0hPUlRIQU5EX01BUF9FTlRSWShDU1NQ
cm9wZXJ0eVdlYmtpdEZsZXhGbG93LCBmbGV4Rmxvd1Byb3BlcnRpZXMpOwogCiAgICAgc3RhdGlj
IGNvbnN0IGludCBsaXN0U3R5bGVQcm9wZXJ0aWVzW10gPSB7CiAgICAgICAgIENTU1Byb3BlcnR5
TGlzdFN0eWxlSW1hZ2UsCiAgICAgICAgIENTU1Byb3BlcnR5TGlzdFN0eWxlUG9zaXRpb24sCiAg
ICAgICAgIENTU1Byb3BlcnR5TGlzdFN0eWxlVHlwZQogICAgIH07Ci0gICAgU0VUX1NIT1JUSEFO
RF9NQVBfRU5UUlkoc2hvcnRoYW5kTWFwLCBDU1NQcm9wZXJ0eUxpc3RTdHlsZSwgbGlzdFN0eWxl
UHJvcGVydGllcyk7CisgICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoQ1NTUHJvcGVydHlMaXN0
U3R5bGUsIGxpc3RTdHlsZVByb3BlcnRpZXMpOwogCiAgICAgc3RhdGljIGNvbnN0IGludCBtYXJn
aW5Qcm9wZXJ0aWVzW10gPSB7CiAgICAgICAgIENTU1Byb3BlcnR5TWFyZ2luVG9wLApAQCAtMTE2
LDEwICsxMjMsMTAgQEAgc3RhdGljIHZvaWQgaW5pdFNob3J0aGFuZE1hcChTaG9ydGhhbmRNYXAm
IHNob3J0aGFuZE1hcCkKICAgICAgICAgQ1NTUHJvcGVydHlNYXJnaW5Cb3R0b20sCiAgICAgICAg
IENTU1Byb3BlcnR5TWFyZ2luTGVmdAogICAgIH07Ci0gICAgU0VUX1NIT1JUSEFORF9NQVBfRU5U
Ulkoc2hvcnRoYW5kTWFwLCBDU1NQcm9wZXJ0eU1hcmdpbiwgbWFyZ2luUHJvcGVydGllcyk7Cisg
ICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoQ1NTUHJvcGVydHlNYXJnaW4sIG1hcmdpblByb3Bl
cnRpZXMpOwogCiAgICAgc3RhdGljIGNvbnN0IGludCBtYXJnaW5Db2xsYXBzZVByb3BlcnRpZXNb
XSA9IHsgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5CZWZvcmVDb2xsYXBzZSwgQ1NTUHJvcGVydHlX
ZWJraXRNYXJnaW5BZnRlckNvbGxhcHNlIH07Ci0gICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlko
c2hvcnRoYW5kTWFwLCBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkNvbGxhcHNlLCBtYXJnaW5Db2xs
YXBzZVByb3BlcnRpZXMpOworICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZKENTU1Byb3BlcnR5
V2Via2l0TWFyZ2luQ29sbGFwc2UsIG1hcmdpbkNvbGxhcHNlUHJvcGVydGllcyk7CiAKICAgICBz
dGF0aWMgY29uc3QgaW50IG1hcnF1ZWVQcm9wZXJ0aWVzW10gPSB7CiAgICAgICAgIENTU1Byb3Bl
cnR5V2Via2l0TWFycXVlZURpcmVjdGlvbiwKQEAgLTEyOCw3ICsxMzUsNyBAQCBzdGF0aWMgdm9p
ZCBpbml0U2hvcnRoYW5kTWFwKFNob3J0aGFuZE1hcCYgc2hvcnRoYW5kTWFwKQogICAgICAgICBD
U1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVTdHlsZSwKICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRN
YXJxdWVlU3BlZWQKICAgICB9OwotICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZKHNob3J0aGFu
ZE1hcCwgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlLCBtYXJxdWVlUHJvcGVydGllcyk7CisgICAg
U0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlLCBtYXJxdWVl
UHJvcGVydGllcyk7CiAKICAgICBzdGF0aWMgY29uc3QgaW50IG91dGxpbmVQcm9wZXJ0aWVzW10g
PSB7CiAgICAgICAgIENTU1Byb3BlcnR5T3V0bGluZUNvbG9yLApAQCAtMTM2LDcgKzE0Myw3IEBA
IHN0YXRpYyB2b2lkIGluaXRTaG9ydGhhbmRNYXAoU2hvcnRoYW5kTWFwJiBzaG9ydGhhbmRNYXAp
CiAgICAgICAgIENTU1Byb3BlcnR5T3V0bGluZVN0eWxlLAogICAgICAgICBDU1NQcm9wZXJ0eU91
dGxpbmVXaWR0aAogICAgIH07Ci0gICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoc2hvcnRoYW5k
TWFwLCBDU1NQcm9wZXJ0eU91dGxpbmUsIG91dGxpbmVQcm9wZXJ0aWVzKTsKKyAgICBTRVRfU0hP
UlRIQU5EX01BUF9FTlRSWShDU1NQcm9wZXJ0eU91dGxpbmUsIG91dGxpbmVQcm9wZXJ0aWVzKTsK
IAogICAgIHN0YXRpYyBjb25zdCBpbnQgcGFkZGluZ1Byb3BlcnRpZXNbXSA9IHsKICAgICAgICAg
Q1NTUHJvcGVydHlQYWRkaW5nVG9wLApAQCAtMTQ0LDE3ICsxNTEsMTcgQEAgc3RhdGljIHZvaWQg
aW5pdFNob3J0aGFuZE1hcChTaG9ydGhhbmRNYXAmIHNob3J0aGFuZE1hcCkKICAgICAgICAgQ1NT
UHJvcGVydHlQYWRkaW5nQm90dG9tLAogICAgICAgICBDU1NQcm9wZXJ0eVBhZGRpbmdMZWZ0CiAg
ICAgfTsKLSAgICBTRVRfU0hPUlRIQU5EX01BUF9FTlRSWShzaG9ydGhhbmRNYXAsIENTU1Byb3Bl
cnR5UGFkZGluZywgcGFkZGluZ1Byb3BlcnRpZXMpOworICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VO
VFJZKENTU1Byb3BlcnR5UGFkZGluZywgcGFkZGluZ1Byb3BlcnRpZXMpOwogCiAgICAgc3RhdGlj
IGNvbnN0IGludCB3ZWJraXRXcmFwUHJvcGVydGllc1tdID0gewogICAgICAgICBDU1NQcm9wZXJ0
eVdlYmtpdFdyYXBGbG93LAogICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdFdyYXBNYXJnaW4sCiAg
ICAgICAgIENTU1Byb3BlcnR5V2Via2l0V3JhcFBhZGRpbmcKICAgICB9OwotICAgIFNFVF9TSE9S
VEhBTkRfTUFQX0VOVFJZKHNob3J0aGFuZE1hcCwgQ1NTUHJvcGVydHlXZWJraXRXcmFwLCB3ZWJr
aXRXcmFwUHJvcGVydGllcyk7CisgICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoQ1NTUHJvcGVy
dHlXZWJraXRXcmFwLCB3ZWJraXRXcmFwUHJvcGVydGllcyk7CiAKICAgICBzdGF0aWMgY29uc3Qg
aW50IHRleHRTdHJva2VQcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9r
ZUNvbG9yLCBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2VXaWR0aCB9OwotICAgIFNFVF9TSE9S
VEhBTkRfTUFQX0VOVFJZKHNob3J0aGFuZE1hcCwgQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tl
LCB0ZXh0U3Ryb2tlUHJvcGVydGllcyk7CisgICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoQ1NT
UHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlLCB0ZXh0U3Ryb2tlUHJvcGVydGllcyk7CiAKICAgICBz
dGF0aWMgY29uc3QgaW50IGJhY2tncm91bmRQcm9wZXJ0aWVzW10gPSB7CiAgICAgICAgIENTU1By
b3BlcnR5QmFja2dyb3VuZEF0dGFjaG1lbnQsCkBAIC0xNjcsMjAgKzE3NCwyMCBAQCBzdGF0aWMg
dm9pZCBpbml0U2hvcnRoYW5kTWFwKFNob3J0aGFuZE1hcCYgc2hvcnRoYW5kTWFwKQogICAgICAg
ICBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRYLAogICAgICAgICBDU1NQcm9wZXJ0eUJhY2tn
cm91bmRSZXBlYXRZCiAgICAgfTsKLSAgICBTRVRfU0hPUlRIQU5EX01BUF9FTlRSWShzaG9ydGhh
bmRNYXAsIENTU1Byb3BlcnR5QmFja2dyb3VuZCwgYmFja2dyb3VuZFByb3BlcnRpZXMpOworICAg
IFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZKENTU1Byb3BlcnR5QmFja2dyb3VuZCwgYmFja2dyb3Vu
ZFByb3BlcnRpZXMpOwogCiAgICAgc3RhdGljIGNvbnN0IGludCBjb2x1bW5zUHJvcGVydGllc1td
ID0geyBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbldpZHRoLCBDU1NQcm9wZXJ0eVdlYmtpdENvbHVt
bkNvdW50IH07Ci0gICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoc2hvcnRoYW5kTWFwLCBDU1NQ
cm9wZXJ0eVdlYmtpdENvbHVtbnMsIGNvbHVtbnNQcm9wZXJ0aWVzKTsKKyAgICBTRVRfU0hPUlRI
QU5EX01BUF9FTlRSWShDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbnMsIGNvbHVtbnNQcm9wZXJ0aWVz
KTsKIAogICAgIHN0YXRpYyBjb25zdCBpbnQgY29sdW1uUnVsZVByb3BlcnRpZXNbXSA9IHsKICAg
ICAgICAgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxlQ29sb3IsCiAgICAgICAgIENTU1Byb3Bl
cnR5V2Via2l0Q29sdW1uUnVsZVN0eWxlLAogICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdENvbHVt
blJ1bGVXaWR0aAogICAgIH07Ci0gICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoc2hvcnRoYW5k
TWFwLCBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGUsIGNvbHVtblJ1bGVQcm9wZXJ0aWVzKTsK
KyAgICBTRVRfU0hPUlRIQU5EX01BUF9FTlRSWShDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGUs
IGNvbHVtblJ1bGVQcm9wZXJ0aWVzKTsKIAogICAgIHN0YXRpYyBjb25zdCBpbnQgb3ZlcmZsb3dQ
cm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5T3ZlcmZsb3dYLCBDU1NQcm9wZXJ0eU92ZXJmbG93
WSB9OwotICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZKHNob3J0aGFuZE1hcCwgQ1NTUHJvcGVy
dHlPdmVyZmxvdywgb3ZlcmZsb3dQcm9wZXJ0aWVzKTsKKyAgICBTRVRfU0hPUlRIQU5EX01BUF9F
TlRSWShDU1NQcm9wZXJ0eU92ZXJmbG93LCBvdmVyZmxvd1Byb3BlcnRpZXMpOwogCiAgICAgc3Rh
dGljIGNvbnN0IGludCBib3JkZXJSYWRpdXNQcm9wZXJ0aWVzW10gPSB7CiAgICAgICAgIENTU1By
b3BlcnR5Qm9yZGVyVG9wUmlnaHRSYWRpdXMsCkBAIC0xODgsMTQgKzE5NSwxNCBAQCBzdGF0aWMg
dm9pZCBpbml0U2hvcnRoYW5kTWFwKFNob3J0aGFuZE1hcCYgc2hvcnRoYW5kTWFwKQogICAgICAg
ICBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbUxlZnRSYWRpdXMsCiAgICAgICAgIENTU1Byb3BlcnR5
Qm9yZGVyQm90dG9tUmlnaHRSYWRpdXMKICAgICB9OwotICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VO
VFJZKHNob3J0aGFuZE1hcCwgQ1NTUHJvcGVydHlCb3JkZXJSYWRpdXMsIGJvcmRlclJhZGl1c1By
b3BlcnRpZXMpOwotICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZKHNob3J0aGFuZE1hcCwgQ1NT
UHJvcGVydHlXZWJraXRCb3JkZXJSYWRpdXMsIGJvcmRlclJhZGl1c1Byb3BlcnRpZXMpOworICAg
IFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZKENTU1Byb3BlcnR5Qm9yZGVyUmFkaXVzLCBib3JkZXJS
YWRpdXNQcm9wZXJ0aWVzKTsKKyAgICBTRVRfU0hPUlRIQU5EX01BUF9FTlRSWShDU1NQcm9wZXJ0
eVdlYmtpdEJvcmRlclJhZGl1cywgYm9yZGVyUmFkaXVzUHJvcGVydGllcyk7CiAKICAgICBzdGF0
aWMgY29uc3QgaW50IG1hc2tQb3NpdGlvblByb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlXZWJr
aXRNYXNrUG9zaXRpb25YLCBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblkgfTsKLSAgICBT
RVRfU0hPUlRIQU5EX01BUF9FTlRSWShzaG9ydGhhbmRNYXAsIENTU1Byb3BlcnR5V2Via2l0TWFz
a1Bvc2l0aW9uLCBtYXNrUG9zaXRpb25Qcm9wZXJ0aWVzKTsKKyAgICBTRVRfU0hPUlRIQU5EX01B
UF9FTlRSWShDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvbiwgbWFza1Bvc2l0aW9uUHJvcGVy
dGllcyk7CiAKICAgICBzdGF0aWMgY29uc3QgaW50IG1hc2tSZXBlYXRQcm9wZXJ0aWVzW10gPSB7
IENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdFgsIENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVh
dFkgfTsKLSAgICBTRVRfU0hPUlRIQU5EX01BUF9FTlRSWShzaG9ydGhhbmRNYXAsIENTU1Byb3Bl
cnR5V2Via2l0TWFza1JlcGVhdCwgbWFza1JlcGVhdFByb3BlcnRpZXMpOworICAgIFNFVF9TSE9S
VEhBTkRfTUFQX0VOVFJZKENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdCwgbWFza1JlcGVhdFBy
b3BlcnRpZXMpOwogCiAgICAgc3RhdGljIGNvbnN0IGludCBtYXNrUHJvcGVydGllc1tdID0gewog
ICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tBdHRhY2htZW50LApAQCAtMjA3LDcgKzIxNCw3
IEBAIHN0YXRpYyB2b2lkIGluaXRTaG9ydGhhbmRNYXAoU2hvcnRoYW5kTWFwJiBzaG9ydGhhbmRN
YXApCiAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdFgsCiAgICAgICAgIENTU1By
b3BlcnR5V2Via2l0TWFza1JlcGVhdFkKICAgICB9OwotICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VO
VFJZKHNob3J0aGFuZE1hcCwgQ1NTUHJvcGVydHlXZWJraXRNYXNrLCBtYXNrUHJvcGVydGllcyk7
CisgICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoQ1NTUHJvcGVydHlXZWJraXRNYXNrLCBtYXNr
UHJvcGVydGllcyk7CiAKICAgICBzdGF0aWMgY29uc3QgaW50IGFuaW1hdGlvblByb3BlcnRpZXNb
XSA9IHsKICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25OYW1lLApAQCAtMjE4LDcg
KzIyNSw3IEBAIHN0YXRpYyB2b2lkIGluaXRTaG9ydGhhbmRNYXAoU2hvcnRoYW5kTWFwJiBzaG9y
dGhhbmRNYXApCiAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uRGlyZWN0aW9uLAog
ICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkZpbGxNb2RlCiAgICAgfTsKLSAgICBT
RVRfU0hPUlRIQU5EX01BUF9FTlRSWShzaG9ydGhhbmRNYXAsIENTU1Byb3BlcnR5V2Via2l0QW5p
bWF0aW9uLCBhbmltYXRpb25Qcm9wZXJ0aWVzKTsKKyAgICBTRVRfU0hPUlRIQU5EX01BUF9FTlRS
WShDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbiwgYW5pbWF0aW9uUHJvcGVydGllcyk7CiAKICAg
ICBzdGF0aWMgY29uc3QgaW50IHRyYW5zaXRpb25Qcm9wZXJ0aWVzW10gPSB7CiAgICAgICAgIENT
U1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvblByb3BlcnR5LApAQCAtMjI2LDMxICsyMzMsMjEgQEAg
c3RhdGljIHZvaWQgaW5pdFNob3J0aGFuZE1hcChTaG9ydGhhbmRNYXAmIHNob3J0aGFuZE1hcCkK
ICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uVGltaW5nRnVuY3Rpb24sCiAgICAg
ICAgIENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvbkRlbGF5CiAgICAgfTsKLSAgICBTRVRfU0hP
UlRIQU5EX01BUF9FTlRSWShzaG9ydGhhbmRNYXAsIENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlv
biwgdHJhbnNpdGlvblByb3BlcnRpZXMpOworICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZKENT
U1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvbiwgdHJhbnNpdGlvblByb3BlcnRpZXMpOwogCiAgICAg
c3RhdGljIGNvbnN0IGludCB0cmFuc2Zvcm1PcmlnaW5Qcm9wZXJ0aWVzW10gPSB7CiAgICAgICAg
IENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luWCwKICAgICAgICAgQ1NTUHJvcGVydHlX
ZWJraXRUcmFuc2Zvcm1PcmlnaW5ZCiAgICAgfTsKLSAgICBTRVRfU0hPUlRIQU5EX01BUF9FTlRS
WShzaG9ydGhhbmRNYXAsIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luLCB0cmFuc2Zv
cm1PcmlnaW5Qcm9wZXJ0aWVzKTsKKyAgICBTRVRfU0hPUlRIQU5EX01BUF9FTlRSWShDU1NQcm9w
ZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdpbiwgdHJhbnNmb3JtT3JpZ2luUHJvcGVydGllcyk7CiAK
ICAgICBzdGF0aWMgY29uc3QgaW50IHRleHRFbXBoYXNpc1Byb3BlcnRpZXNbXSA9IHsKICAgICAg
ICAgQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNDb2xvciwKICAgICAgICAgQ1NTUHJvcGVy
dHlXZWJraXRUZXh0RW1waGFzaXNTdHlsZQogICAgIH07Ci0gICAgU0VUX1NIT1JUSEFORF9NQVBf
RU5UUlkoc2hvcnRoYW5kTWFwLCBDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpcywgdGV4dEVt
cGhhc2lzUHJvcGVydGllcyk7CisgICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoQ1NTUHJvcGVy
dHlXZWJraXRUZXh0RW1waGFzaXMsIHRleHRFbXBoYXNpc1Byb3BlcnRpZXMpOwogCiAgICAgI3Vu
ZGVmIFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZCiB9CiAKLUNTU1Byb3BlcnR5TG9uZ2hhbmQgbG9u
Z2hhbmRGb3JQcm9wZXJ0eShpbnQgcHJvcGVydHlJRCkKLXsKLSAgICBERUZJTkVfU1RBVElDX0xP
Q0FMKFNob3J0aGFuZE1hcCwgc2hvcnRoYW5kTWFwLCAoKSk7Ci0gICAgaWYgKHNob3J0aGFuZE1h
cC5pc0VtcHR5KCkpCi0gICAgICAgIGluaXRTaG9ydGhhbmRNYXAoc2hvcnRoYW5kTWFwKTsKLQot
ICAgIHJldHVybiBzaG9ydGhhbmRNYXAuZ2V0KHByb3BlcnR5SUQpOwotfQotCi0KIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0
eUxvbmdoYW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlMb25naGFuZC5oCmlu
ZGV4IDk2MzNjMDI1YWJmZGFhMmM3ZDljOGYzNGU0MjI2Y2ExZDEzYjFkNDMuLjJiOTAxMDkyYTgw
ZWVlNmUzYzJjOTE0NzRiMjFlZTRkYWE2YTUxNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NQcm9wZXJ0eUxvbmdoYW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1By
b3BlcnR5TG9uZ2hhbmQuaApAQCAtMjEsNiArMjEsMTAgQEAKICNpZm5kZWYgQ1NTUHJvcGVydHlM
b25naGFuZF9oCiAjZGVmaW5lIENTU1Byb3BlcnR5TG9uZ2hhbmRfaAogCisjaW5jbHVkZSAiQ1NT
UHJvcGVydHlOYW1lcy5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWQuaD4KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDU1NQcm9w
ZXJ0eUxvbmdoYW5kIHsKQEAgLTQ1LDggKzQ5LDUxIEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQg
bV9sZW5ndGg7CiB9OwogCi0vLyBSZXR1cm5zIGFuIGVtcHR5IGxpc3QgaWYgdGhlIHByb3BlcnR5
IGlzIG5vdCBhIHNob3J0aGFuZAorY2xhc3MgQ1NTUHJvcGVydHlMb25naGFuZE1hcCB7CisgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoQ1NTUHJvcGVydHlMb25naGFuZE1hcCk7CitwdWJsaWM6Cisg
ICAgc3RhdGljIGNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmRNYXAmIHNoYXJlZENTU1Byb3BlcnR5
TG9uZ2hhbmRNYXAoKTsKKworICAgIC8vIFJldHVybnMgYW4gZW1wdHkgbGlzdCBpZiB0aGUgcHJv
cGVydHkgaXMgbm90IGEgc2hvcnRoYW5kCisgICAgY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYg
bG9uZ2hhbmRGb3JQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5KSBjb25zdAorICAgIHsK
KyAgICAgICAgQVNTRVJUKHZhbGlkKHByb3BlcnR5KSk7CisgICAgICAgIHJldHVybiBtX3Byb3Bl
cnR5TWFwW2luZGV4KHByb3BlcnR5KV07CisgICAgfQorcHJpdmF0ZToKKyAgICBDU1NQcm9wZXJ0
eUxvbmdoYW5kTWFwKCk7CisKKyAgICBzdGF0aWMgaW50IGluZGV4KENTU1Byb3BlcnR5SUQgcHJv
cGVydHkpCisgICAgeworICAgICAgICByZXR1cm4gcHJvcGVydHkgLSBmaXJzdENTU1Byb3BlcnR5
OworICAgIH0KKworICAgIHN0YXRpYyBib29sIHZhbGlkKENTU1Byb3BlcnR5SUQgcHJvcGVydHkp
CisgICAgeworICAgICAgICBpbnQgaSA9IGluZGV4KHByb3BlcnR5KTsKKyAgICAgICAgcmV0dXJu
IGkgPj0gMCAmJiBpIDwgbnVtQ1NTUHJvcGVydGllczsKKyAgICB9CisKKyAgICB2b2lkIHNldExv
bmdoYW5kRm9yUHJvcGVydHkoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSwgQ1NTUHJvcGVydHlMb25n
aGFuZCBoYW5kbGVyKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHZhbGlkKHByb3BlcnR5KSk7Cisg
ICAgICAgIG1fcHJvcGVydHlNYXBbaW5kZXgocHJvcGVydHkpXSA9IGhhbmRsZXI7CisgICAgfQor
CisgICAgQ1NTUHJvcGVydHlMb25naGFuZCBtX3Byb3BlcnR5TWFwW251bUNTU1Byb3BlcnRpZXNd
OworfTsKKworQ1NTUHJvcGVydHlMb25naGFuZCBsb25naGFuZEZvclByb3BlcnR5KENTU1Byb3Bl
cnR5SUQpOworaW5saW5lIENTU1Byb3BlcnR5TG9uZ2hhbmQgbG9uZ2hhbmRGb3JQcm9wZXJ0eShD
U1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQpCit7CisgICAgcmV0dXJuIENTU1Byb3BlcnR5TG9uZ2hh
bmRNYXA6OnNoYXJlZENTU1Byb3BlcnR5TG9uZ2hhbmRNYXAoKS5sb25naGFuZEZvclByb3BlcnR5
KHByb3BlcnR5SUQpOworfQorCiBDU1NQcm9wZXJ0eUxvbmdoYW5kIGxvbmdoYW5kRm9yUHJvcGVy
dHkoaW50KTsKK2lubGluZSBDU1NQcm9wZXJ0eUxvbmdoYW5kIGxvbmdoYW5kRm9yUHJvcGVydHko
aW50IHByb3BlcnR5SUQpCit7CisgICAgcmV0dXJuIGxvbmdoYW5kRm9yUHJvcGVydHkoc3RhdGlj
X2Nhc3Q8Q1NTUHJvcGVydHlJRD4ocHJvcGVydHlJRCkpOworfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>