<?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>150543</bug_id>
          
          <creation_ts>2015-10-24 21:50:07 -0700</creation_ts>
          <short_desc>Modern IDB: Backing store objectStores (plumbing for b/150468)</short_desc>
          <delta_ts>2015-10-26 14:08:23 -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>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>149117</blocked>
    
    <blocked>150468</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>achristensen</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1136351</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-10-24 21:50:07 -0700</bug_when>
    <thetext>Modern IDB: Backing store objectStores (plumbing for b/150468)

This is followup to https://bugs.webkit.org/show_bug.cgi?id=150455, but untestable until https://bugs.webkit.org/show_bug.cgi?id=150468

Why separate from 150468?

Makes both this and 150468 smaller patches to review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1136353</commentid>
    <comment_count>1</comment_count>
      <attachid>264002</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-10-24 21:55:53 -0700</bug_when>
    <thetext>Created attachment 264002
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1136356</commentid>
    <comment_count>2</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-10-24 22:05:38 -0700</bug_when>
    <thetext>My tree is two days out of date. I was hoping this patch would build without having to update... oh well!

r- for now until I can rebase and rebuild.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1136401</commentid>
    <comment_count>3</comment_count>
      <attachid>264011</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-10-25 10:24:14 -0700</bug_when>
    <thetext>Created attachment 264011
Patch v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1136410</commentid>
    <comment_count>4</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-10-25 11:08:18 -0700</bug_when>
    <thetext>Guh.  Okay...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1136412</commentid>
    <comment_count>5</comment_count>
      <attachid>264015</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-10-25 11:10:37 -0700</bug_when>
    <thetext>Created attachment 264015
Patch v3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1136413</commentid>
    <comment_count>6</comment_count>
      <attachid>264016</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-10-25 11:27:00 -0700</bug_when>
    <thetext>Created attachment 264016
Patch v4 - Attempt to placate busted gcc</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1136543</commentid>
    <comment_count>7</comment_count>
      <attachid>264016</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-10-26 10:18:11 -0700</bug_when>
    <thetext>Comment on attachment 264016
Patch v4 - Attempt to placate busted gcc

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

&gt; Source/WebCore/Modules/indexeddb/server/MemoryIDBBackingStore.cpp:110
&gt; +    if (m_databaseInfo-&gt;hasObjectStore(info.name()))

ASSERT(m_databaseInfo);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1136544</commentid>
    <comment_count>8</comment_count>
      <attachid>264016</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-10-26 10:20:44 -0700</bug_when>
    <thetext>Comment on attachment 264016
Patch v4 - Attempt to placate busted gcc

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

&gt; Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabase.cpp:225
&gt; +    m_backingStore-&gt;createObjectStore(transaction.info().identifier(), info);

ASSERT(m_backingStore)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1136631</commentid>
    <comment_count>9</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-10-26 14:08:23 -0700</bug_when>
    <thetext>https://trac.webkit.org/changeset/191598</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264002</attachid>
            <date>2015-10-24 21:55:53 -0700</date>
            <delta_ts>2015-10-25 10:24:14 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>23394</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggOThmM2VhNC4uZGM4Mzg3ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTkwMiw2ICs5MDIsNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlck9wZXJhdGlvbi5jcHAKICAgICBNb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24uY3BwCiAgICAgTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5jcHAKKyAgICBNb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuY3BwCiAgICAgTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcAogICAgIE1vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24uY3BwCiAgICAgTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
aW5kZXggMTgxN2I5Yi4uMWZmYzFmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDE1
LTEwLTI0ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBNb2Rl
cm4gSURCOiBCYWNraW5nIHN0b3JlIG9iamVjdFN0b3JlcyAocGx1bWJpbmcgZm9yIGIvMTUwNDY4
KS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDU0
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5l
dyB0ZXN0cyAoTm8gY2hhbmdlIGluIGJlaGF2aW9yLCBwbHVtYmluZyBmb3IgZnV0dXJlIHRlc3Rh
YmlsaXR5KQorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL0lEQkJhY2tpbmdTdG9yZS5oOgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL01lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6TWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb246OmFkZE5ld09iamVj
dFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5QmFja2luZ1N0b3Jl
VHJhbnNhY3Rpb246OmFib3J0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5
QmFja2luZ1N0b3JlVHJhbnNhY3Rpb246OmNvbW1pdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJT
ZXJ2ZXI6Ok1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uOjpmaW5pc2gpOgorICAgICAgICAq
IE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbi5o
OgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2Fj
dGlvbjo6aXNXcml0aW5nKToKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9N
ZW1vcnlJREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpN
ZW1vcnlJREJCYWNraW5nU3RvcmU6OmNyZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6TWVtb3J5SURCQmFja2luZ1N0b3JlOjpyZW1vdmVPYmplY3RTdG9yZUZv
clZlcnNpb25DaGFuZ2VBYm9ydCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L01lbW9yeUlEQkJhY2tpbmdTdG9yZS5oOgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL01lbW9yeU9iamVjdFN0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZl
cjo6TWVtb3J5T2JqZWN0U3RvcmU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2
ZXI6Ok1lbW9yeU9iamVjdFN0b3JlOjpNZW1vcnlPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJD
b3JlOjpJREJTZXJ2ZXI6Ok1lbW9yeU9iamVjdFN0b3JlOjp+TWVtb3J5T2JqZWN0U3RvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlPYmplY3RTdG9yZTo6d3JpdGVUcmFu
c2FjdGlvblN0YXJ0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlPYmpl
Y3RTdG9yZTo6d3JpdGVUcmFuc2FjdGlvbkZpbmlzaGVkKToKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuaDoKKyAgICAgICAgKFdlYkNvcmU6OklE
QlNlcnZlcjo6TWVtb3J5T2JqZWN0U3RvcmU6OmluZm8pOgorCisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmNyZWF0ZU9iamVjdFN0b3JlKToKKworICAg
ICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJFcnJvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjppZGJFcnJvck5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6aWRiRXJyb3JEZXNjcmlw
dGlvbik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkVycm9yLmg6CisK
IDIwMTUtMTAtMjIgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAg
IE1vZGVybiBJREI6IEJhc2ljIGNyZWF0ZU9iamVjdFN0b3JlIGltcGxlbWVudGF0aW9uLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkJhY2tp
bmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkJh
Y2tpbmdTdG9yZS5oCmluZGV4IDZmZjFlYzEuLjdlM2U1YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJCYWNraW5nU3RvcmUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCQmFja2luZ1N0b3JlLmgK
QEAgLTMzLDYgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBJREJPYmpl
Y3RTdG9yZUluZm87CiBjbGFzcyBJREJSZXNvdXJjZUlkZW50aWZpZXI7CiBjbGFzcyBJREJUcmFu
c2FjdGlvbkluZm87CiAKQEAgLTQ3LDYgKzQ4LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgSURC
RXJyb3IgYmVnaW5UcmFuc2FjdGlvbihjb25zdCBJREJUcmFuc2FjdGlvbkluZm8mKSA9IDA7CiAg
ICAgdmlydHVhbCBJREJFcnJvciBhYm9ydFRyYW5zYWN0aW9uKGNvbnN0IElEQlJlc291cmNlSWRl
bnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyKSA9IDA7CiAgICAgdmlydHVhbCBJREJFcnJv
ciBjb21taXRUcmFuc2FjdGlvbihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0
aW9uSWRlbnRpZmllcikgPSAwOworCisgICAgdmlydHVhbCBJREJFcnJvciBjcmVhdGVPYmplY3RT
dG9yZShjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwg
Y29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJikgPSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSURC
U2VydmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uLmNwcApp
bmRleCBlYzJhM2U4Li41YzQ0NzdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlCYWNraW5nU3Rv
cmVUcmFuc2FjdGlvbi5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJJbmRleGVkREIu
aCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTWVtb3J5SURCQmFja2luZ1N0b3Jl
LmgiCisjaW5jbHVkZSAiTWVtb3J5T2JqZWN0U3RvcmUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogbmFtZXNwYWNlIElEQlNlcnZlciB7CkBAIC01Myw2ICs1NCwxOSBAQCBNZW1vcnlCYWNraW5n
U3RvcmVUcmFuc2FjdGlvbjo6fk1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCkKICAgICBB
U1NFUlQoIW1faW5Qcm9ncmVzcyk7CiB9CiAKK3ZvaWQgTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNh
Y3Rpb246OmFkZE5ld09iamVjdFN0b3JlKE1lbW9yeU9iamVjdFN0b3JlJiBvYmplY3RTdG9yZSkK
K3sKKyAgICBMT0coSW5kZXhlZERCLCAiTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb246OmFk
ZE5ld09iamVjdFN0b3JlKCkiKTsKKworICAgIEFTU0VSVChpc1ZlcnNpb25DaGFuZ2UoKSk7CisK
KyAgICBBU1NFUlQoIW1fb2JqZWN0U3RvcmVzLmNvbnRhaW5zKCZvYmplY3RTdG9yZSkpOworICAg
IG1fb2JqZWN0U3RvcmVzLmFkZCgmb2JqZWN0U3RvcmUpOworICAgIG1fdmVyc2lvbkNoYW5nZUFk
ZGVkT2JqZWN0U3RvcmVzLmFkZCgmb2JqZWN0U3RvcmUpOworCisgICAgb2JqZWN0U3RvcmUud3Jp
dGVUcmFuc2FjdGlvblN0YXJ0ZWQoKnRoaXMpOworfQorCiB2b2lkIE1lbW9yeUJhY2tpbmdTdG9y
ZVRyYW5zYWN0aW9uOjphYm9ydCgpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIk1lbW9yeUJhY2tp
bmdTdG9yZVRyYW5zYWN0aW9uOjphYm9ydCgpIik7CkBAIC02MiwxNCArNzYsMjggQEAgdm9pZCBN
ZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbjo6YWJvcnQoKQogICAgICAgICBtX2JhY2tpbmdT
dG9yZS5zZXREYXRhYmFzZUluZm8oKm1fb3JpZ2luYWxEYXRhYmFzZUluZm8pOwogICAgIH0KIAot
ICAgIG1faW5Qcm9ncmVzcyA9IGZhbHNlOworICAgIGZpbmlzaCgpOworCisgICAgZm9yIChhdXRv
IG9iamVjdFN0b3JlIDogbV92ZXJzaW9uQ2hhbmdlQWRkZWRPYmplY3RTdG9yZXMpCisgICAgICAg
IG1fYmFja2luZ1N0b3JlLnJlbW92ZU9iamVjdFN0b3JlRm9yVmVyc2lvbkNoYW5nZUFib3J0KCpv
YmplY3RTdG9yZSk7CiB9CiAKIHZvaWQgTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb246OmNv
bW1pdCgpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIk1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0
aW9uOjpjb21taXQoKSIpOwogCisgICAgZmluaXNoKCk7Cit9CisKK3ZvaWQgTWVtb3J5QmFja2lu
Z1N0b3JlVHJhbnNhY3Rpb246OmZpbmlzaCgpCit7CiAgICAgbV9pblByb2dyZXNzID0gZmFsc2U7
CisKKyAgICBpZiAoIWlzV3JpdGluZygpKQorICAgICAgICByZXR1cm47CisKKyAgICBmb3IgKGF1
dG8gb2JqZWN0U3RvcmUgOiBtX29iamVjdFN0b3JlcykKKyAgICAgICAgb2JqZWN0U3RvcmUtPndy
aXRlVHJhbnNhY3Rpb25GaW5pc2hlZCgqdGhpcyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIElEQlNl
cnZlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L01lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24uaAppbmRleCBm
NTM5MTYxLi5hYThhYTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNh
Y3Rpb24uaApAQCAtMzAsMTEgKzMwLDEzIEBACiAKICNpbmNsdWRlICJJREJEYXRhYmFzZUluZm8u
aCIKICNpbmNsdWRlICJJREJUcmFuc2FjdGlvbkluZm8uaCIKKyNpbmNsdWRlIDx3dGYvSGFzaFNl
dC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgSURCU2VydmVyIHsKIAogY2xh
c3MgTWVtb3J5SURCQmFja2luZ1N0b3JlOworY2xhc3MgTWVtb3J5T2JqZWN0U3RvcmU7CiAKIGNs
YXNzIE1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uIHsKICAgICBmcmllbmQgc3RkOjp1bmlx
dWVfcHRyPE1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uPiBzdGQ6Om1ha2VfdW5pcXVlPE1l
bW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uPihXZWJDb3JlOjpJREJTZXJ2ZXI6Ok1lbW9yeUlE
QkJhY2tpbmdTdG9yZSYsIGNvbnN0IFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uSW5mbyYpOwpAQCAt
NDQsMjEgKzQ2LDMwIEBAIHB1YmxpYzoKICAgICB+TWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rp
b24oKTsKIAogICAgIGJvb2wgaXNWZXJzaW9uQ2hhbmdlKCkgY29uc3QgeyByZXR1cm4gbV9pbmZv
Lm1vZGUoKSA9PSBJbmRleGVkREI6OlRyYW5zYWN0aW9uTW9kZTo6VmVyc2lvbkNoYW5nZTsgfQor
ICAgIGJvb2wgaXNXcml0aW5nKCkgY29uc3QgeyByZXR1cm4gbV9pbmZvLm1vZGUoKSAhPSBJbmRl
eGVkREI6OlRyYW5zYWN0aW9uTW9kZTo6UmVhZE9ubHk7IH0KIAogICAgIGNvbnN0IElEQkRhdGFi
YXNlSW5mbyYgb3JpZ2luYWxEYXRhYmFzZUluZm8oKSBjb25zdDsKIAorICAgIHZvaWQgYWRkTmV3
T2JqZWN0U3RvcmUoTWVtb3J5T2JqZWN0U3RvcmUmKTsKKwogICAgIHZvaWQgYWJvcnQoKTsKICAg
ICB2b2lkIGNvbW1pdCgpOwogCiBwcml2YXRlOgogICAgIE1lbW9yeUJhY2tpbmdTdG9yZVRyYW5z
YWN0aW9uKE1lbW9yeUlEQkJhY2tpbmdTdG9yZSYsIGNvbnN0IElEQlRyYW5zYWN0aW9uSW5mbyYp
OwogCisgICAgdm9pZCBmaW5pc2goKTsKKwogICAgIE1lbW9yeUlEQkJhY2tpbmdTdG9yZSYgbV9i
YWNraW5nU3RvcmU7CiAgICAgSURCVHJhbnNhY3Rpb25JbmZvIG1faW5mbzsKIAogICAgIHN0ZDo6
dW5pcXVlX3B0cjxJREJEYXRhYmFzZUluZm8+IG1fb3JpZ2luYWxEYXRhYmFzZUluZm87CiAKICAg
ICBib29sIG1faW5Qcm9ncmVzcyB7IHRydWUgfTsKKworICAgIEhhc2hTZXQ8TWVtb3J5T2JqZWN0
U3RvcmUqPiBtX29iamVjdFN0b3JlczsKKyAgICBIYXNoU2V0PE1lbW9yeU9iamVjdFN0b3JlKj4g
bV92ZXJzaW9uQ2hhbmdlQWRkZWRPYmplY3RTdG9yZXM7CisKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IElEQlNlcnZlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmNwcAppbmRleCBhYWUwNjdh
Li5hOTA4YmEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmNwcApAQCAtMjksNiAr
MjksNyBAQAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogCiAjaW5jbHVkZSAiTG9nZ2lu
Zy5oIgorI2luY2x1ZGUgIk1lbW9yeU9iamVjdFN0b3JlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIG5hbWVzcGFjZSBJREJTZXJ2ZXIgewpAQCAtMTAyLDYgKzEwMywzOCBAQCBJREJFcnJvciBN
ZW1vcnlJREJCYWNraW5nU3RvcmU6OmNvbW1pdFRyYW5zYWN0aW9uKGNvbnN0IElEQlJlc291cmNl
SWRlbnRpZmllciYgdAogICAgIHJldHVybiBJREJFcnJvcigpOwogfQogCitJREJFcnJvciBNZW1v
cnlJREJCYWNraW5nU3RvcmU6OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlc291cmNlSWRl
bnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJPYmplY3RTdG9yZUluZm8m
IGluZm8pCit7CisgICAgTE9HKEluZGV4ZWREQiwgIk1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6Y3Jl
YXRlT2JqZWN0U3RvcmUiKTsKKworICAgIGlmIChtX2RhdGFiYXNlSW5mby0+aGFzT2JqZWN0U3Rv
cmUoaW5mby5uYW1lKCkpKQorICAgICAgICByZXR1cm4gSURCRXJyb3IoSURCRXhjZXB0aW9uQ29k
ZTo6Q29uc3RyYWludEVycm9yKTsKKworICAgIEFTU0VSVCghbV9vYmplY3RTdG9yZXMuY29udGFp
bnMoaW5mby5pZGVudGlmaWVyKCkpKTsKKyAgICBhdXRvIG9iamVjdFN0b3JlID0gTWVtb3J5T2Jq
ZWN0U3RvcmU6OmNyZWF0ZShpbmZvKTsKKworICAgIG1fZGF0YWJhc2VJbmZvLT5hZGRFeGlzdGlu
Z09iamVjdFN0b3JlKGluZm8pOworCisgICAgYXV0byByYXdUcmFuc2FjdGlvbiA9IG1fdHJhbnNh
Y3Rpb25zLmdldCh0cmFuc2FjdGlvbklkZW50aWZpZXIpOworICAgIEFTU0VSVChyYXdUcmFuc2Fj
dGlvbik7CisgICAgQVNTRVJUKHJhd1RyYW5zYWN0aW9uLT5pc1ZlcnNpb25DaGFuZ2UoKSk7CisK
KyAgICByYXdUcmFuc2FjdGlvbi0+YWRkTmV3T2JqZWN0U3RvcmUoKm9iamVjdFN0b3JlKTsKKyAg
ICBtX29iamVjdFN0b3Jlcy5zZXQoaW5mby5pZGVudGlmaWVyKCksIFdURjo6bW92ZShvYmplY3RT
dG9yZSkpOworCisgICAgcmV0dXJuIElEQkVycm9yKCk7Cit9CisKK3ZvaWQgTWVtb3J5SURCQmFj
a2luZ1N0b3JlOjpyZW1vdmVPYmplY3RTdG9yZUZvclZlcnNpb25DaGFuZ2VBYm9ydChNZW1vcnlP
YmplY3RTdG9yZSYgb2JqZWN0U3RvcmUpCit7CisgICAgTE9HKEluZGV4ZWREQiwgIk1lbW9yeUlE
QkJhY2tpbmdTdG9yZTo6cmVtb3ZlT2JqZWN0U3RvcmVGb3JWZXJzaW9uQ2hhbmdlQWJvcnQiKTsK
KworICAgIEFTU0VSVChtX29iamVjdFN0b3Jlcy5jb250YWlucyhvYmplY3RTdG9yZS5pbmZvKCku
aWRlbnRpZmllcigpKSk7CisgICAgQVNTRVJUKG1fb2JqZWN0U3RvcmVzLmdldChvYmplY3RTdG9y
ZS5pbmZvKCkuaWRlbnRpZmllcigpKSA9PSAmb2JqZWN0U3RvcmUpOworCisgICAgbV9vYmplY3RT
dG9yZXMucmVtb3ZlKG9iamVjdFN0b3JlLmluZm8oKS5pZGVudGlmaWVyKCkpOworfQorCiB9IC8v
IG5hbWVzcGFjZSBJREJTZXJ2ZXIKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tp
bmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9y
eUlEQkJhY2tpbmdTdG9yZS5oCmluZGV4IDI1NDk5ZjQuLjI2OTU4ZmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3Rv
cmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5
SURCQmFja2luZ1N0b3JlLmgKQEAgLTM3LDYgKzM3LDggQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IG5hbWVzcGFjZSBJREJTZXJ2ZXIgewogCitjbGFzcyBNZW1vcnlPYmplY3RTdG9yZTsKKwogY2xh
c3MgTWVtb3J5SURCQmFja2luZ1N0b3JlIDogcHVibGljIElEQkJhY2tpbmdTdG9yZSB7CiAgICAg
ZnJpZW5kIHN0ZDo6dW5pcXVlX3B0cjxNZW1vcnlJREJCYWNraW5nU3RvcmU+IHN0ZDo6bWFrZV91
bmlxdWU8TWVtb3J5SURCQmFja2luZ1N0b3JlPihjb25zdCBXZWJDb3JlOjpJREJEYXRhYmFzZUlk
ZW50aWZpZXImKTsKIHB1YmxpYzoKQEAgLTUwLDYgKzUyLDkgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgSURCRXJyb3IgYmVnaW5UcmFuc2FjdGlvbihjb25zdCBJREJUcmFuc2FjdGlvbkluZm8mKSBv
dmVycmlkZSBmaW5hbDsKICAgICB2aXJ0dWFsIElEQkVycm9yIGFib3J0VHJhbnNhY3Rpb24oY29u
c3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIpIG92ZXJyaWRl
IGZpbmFsOwogICAgIHZpcnR1YWwgSURCRXJyb3IgY29tbWl0VHJhbnNhY3Rpb24oY29uc3QgSURC
UmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIpIG92ZXJyaWRlIGZpbmFs
OworICAgIHZpcnR1YWwgSURCRXJyb3IgY3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgSURCUmVzb3Vy
Y2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQk9iamVjdFN0b3Jl
SW5mbyYpIG92ZXJyaWRlIGZpbmFsOworCisgICAgdm9pZCByZW1vdmVPYmplY3RTdG9yZUZvclZl
cnNpb25DaGFuZ2VBYm9ydChNZW1vcnlPYmplY3RTdG9yZSYpOwogCiBwcml2YXRlOgogICAgIE1l
bW9yeUlEQkJhY2tpbmdTdG9yZShjb25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXImKTsKQEAgLTU4
LDcgKzYzLDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SURCRGF0YWJhc2VJbmZv
PiBtX2RhdGFiYXNlSW5mbzsKIAogICAgIEhhc2hNYXA8SURCUmVzb3VyY2VJZGVudGlmaWVyLCBz
dGQ6OnVuaXF1ZV9wdHI8TWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24+PiBtX3RyYW5zYWN0
aW9uczsKLQorICAgIEhhc2hNYXA8dWludDY0X3QsIHN0ZDo6dW5pcXVlX3B0cjxNZW1vcnlPYmpl
Y3RTdG9yZT4+IG1fb2JqZWN0U3RvcmVzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSURCU2VydmVy
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVt
b3J5T2JqZWN0U3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL01lbW9yeU9iamVjdFN0b3JlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi5mODM0ZDJkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3JlLmNwcApAQCAtMCwwICsxLDcwIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIk1lbW9yeU9iamVjdFN0b3JlLmgiCisKKyNpZiBFTkFCTEUoSU5E
RVhFRF9EQVRBQkFTRSkKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworbmFtZXNwYWNlIElEQlNlcnZlciB7CisKK3N0ZDo6dW5pcXVlX3B0cjxNZW1vcnlPYmpl
Y3RTdG9yZT4gTWVtb3J5T2JqZWN0U3RvcmU6OmNyZWF0ZShjb25zdCBJREJPYmplY3RTdG9yZUlu
Zm8mIGluZm8pCit7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TWVtb3J5T2JqZWN0U3Rv
cmU+KGluZm8pOworfQorCitNZW1vcnlPYmplY3RTdG9yZTo6TWVtb3J5T2JqZWN0U3RvcmUoY29u
c3QgSURCT2JqZWN0U3RvcmVJbmZvJiBpbmZvKQorICAgIDogbV9pbmZvKGluZm8pCit7Cit9CisK
K01lbW9yeU9iamVjdFN0b3JlOjp+TWVtb3J5T2JqZWN0U3RvcmUoKQoreworICAgIEFTU0VSVCgh
bV93cml0ZVRyYW5zYWN0aW9uKTsKK30KKwordm9pZCBNZW1vcnlPYmplY3RTdG9yZTo6d3JpdGVU
cmFuc2FjdGlvblN0YXJ0ZWQoTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24mIHRyYW5zYWN0
aW9uKQoreworICAgIExPRyhJbmRleGVkREIsICJNZW1vcnlPYmplY3RTdG9yZTo6d3JpdGVUcmFu
c2FjdGlvblN0YXJ0ZWQiKTsKKworICAgIEFTU0VSVCghbV93cml0ZVRyYW5zYWN0aW9uKTsKKyAg
ICBtX3dyaXRlVHJhbnNhY3Rpb24gPSAmdHJhbnNhY3Rpb247Cit9CisKK3ZvaWQgTWVtb3J5T2Jq
ZWN0U3RvcmU6OndyaXRlVHJhbnNhY3Rpb25GaW5pc2hlZChNZW1vcnlCYWNraW5nU3RvcmVUcmFu
c2FjdGlvbiYgdHJhbnNhY3Rpb24pCit7CisgICAgTE9HKEluZGV4ZWREQiwgIk1lbW9yeU9iamVj
dFN0b3JlOjp3cml0ZVRyYW5zYWN0aW9uRmluaXNoZWQiKTsKKworICAgIEFTU0VSVChtX3dyaXRl
VHJhbnNhY3Rpb24gPT0gJnRyYW5zYWN0aW9uKTsKKyAgICBtX3dyaXRlVHJhbnNhY3Rpb24gPSBu
dWxscHRyOworfQorCit9IC8vIG5hbWVzcGFjZSBJREJTZXJ2ZXIKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3Jl
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0
U3RvcmUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mM2YzNDY3Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01l
bW9yeU9iamVjdFN0b3JlLmgKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTWVtb3J5T2JqZWN0U3RvcmVfaAorI2Rl
ZmluZSBNZW1vcnlPYmplY3RTdG9yZV9oCisKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkK
KworI2luY2x1ZGUgIklEQk9iamVjdFN0b3JlSW5mby5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CituYW1lc3BhY2UgSURCU2VydmVyIHsKKworY2xhc3MgTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNh
Y3Rpb247CisKK2NsYXNzIE1lbW9yeU9iamVjdFN0b3JlIHsKKyAgICBmcmllbmQgc3RkOjp1bmlx
dWVfcHRyPE1lbW9yeU9iamVjdFN0b3JlPiBzdGQ6Om1ha2VfdW5pcXVlPE1lbW9yeU9iamVjdFN0
b3JlPihjb25zdCBJREJPYmplY3RTdG9yZUluZm8mKTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgc3Rk
Ojp1bmlxdWVfcHRyPE1lbW9yeU9iamVjdFN0b3JlPiBjcmVhdGUoY29uc3QgSURCT2JqZWN0U3Rv
cmVJbmZvJik7CisKKyAgICB+TWVtb3J5T2JqZWN0U3RvcmUoKTsKKworICAgIHZvaWQgd3JpdGVU
cmFuc2FjdGlvblN0YXJ0ZWQoTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24mKTsKKyAgICB2
b2lkIHdyaXRlVHJhbnNhY3Rpb25GaW5pc2hlZChNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlv
biYpOworCisgICAgY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJiBpbmZvKCkgY29uc3QgeyByZXR1
cm4gbV9pbmZvOyB9CisKK3ByaXZhdGU6CisgICAgTWVtb3J5T2JqZWN0U3RvcmUoY29uc3QgSURC
T2JqZWN0U3RvcmVJbmZvJik7CisKKyAgICBJREJPYmplY3RTdG9yZUluZm8gbV9pbmZvOworCisg
ICAgTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24qIG1fd3JpdGVUcmFuc2FjdGlvbiB7IG51
bGxwdHIgfTsKK307CisKK30gLy8gbmFtZXNwYWNlIElEQlNlcnZlcgorfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisjZW5kaWYgLy8g
TWVtb3J5T2JqZWN0U3RvcmVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5jcHAKaW5kZXggM2JiNmE4
MS4uMDU0YTc4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwCkBAIC0yMjIsNiArMjIyLDgg
QEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Y3JlYXRlT2JqZWN0U3RvcmUoVW5pcXVlSURCRGF0
YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3QKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwog
ICAgIExPRyhJbmRleGVkREIsICIobWFpbikgVW5pcXVlSURCRGF0YWJhc2U6OmNyZWF0ZU9iamVj
dFN0b3JlIik7CiAKKyAgICBtX2JhY2tpbmdTdG9yZS0+Y3JlYXRlT2JqZWN0U3RvcmUodHJhbnNh
Y3Rpb24uaW5mbygpLmlkZW50aWZpZXIoKSwgaW5mbyk7CisKICAgICB1aW50NjRfdCBjYWxsYmFj
a0lEID0gc3RvcmVDYWxsYmFjayhjYWxsYmFjayk7CiAgICAgbV9zZXJ2ZXIucG9zdERhdGFiYXNl
VGFzayhjcmVhdGVDcm9zc1RocmVhZFRhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6cGVy
Zm9ybUNyZWF0ZU9iamVjdFN0b3JlLCBjYWxsYmFja0lELCB0cmFuc2FjdGlvbi5pbmZvKCkuaWRl
bnRpZmllcigpLCBpbmZvKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zaGFyZWQvSURCRXJyb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2hhcmVkL0lEQkVycm9yLmNwcAppbmRleCA4YTg3NWE3Li4yMjg4Y2U4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCRXJyb3Iu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJFcnJv
ci5jcHAKQEAgLTM5LDYgKzM5LDEwIEBAIHN0YXRpYyBjb25zdCBTdHJpbmcmIGlkYkVycm9yTmFt
ZShJREJFeGNlcHRpb25Db2RlIGNvZGUpCiAgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxT
dHJpbmc+IGVudHJ5ID0gQVNDSUlMaXRlcmFsKCJVbmtub3duRXJyb3IiKTsKICAgICAgICAgcmV0
dXJuIGVudHJ5OwogICAgIH0KKyAgICBjYXNlIElEQkV4Y2VwdGlvbkNvZGU6OkNvbnN0cmFpbnRF
cnJvcjogeworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBlbnRyeSA9IEFT
Q0lJTGl0ZXJhbCgiQ29uc3RyYWludEVycm9yIik7CisgICAgICAgIHJldHVybiBlbnRyeTsKKyAg
ICB9CiAgICAgY2FzZSBJREJFeGNlcHRpb25Db2RlOjpWZXJzaW9uRXJyb3I6IHsKICAgICAgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gZW50cnkgPSBBU0NJSUxpdGVyYWwoIlZlcnNp
b25FcnJvciIpOwogICAgICAgICByZXR1cm4gZW50cnk7CkBAIC02MSw2ICs2NSwxMCBAQCBzdGF0
aWMgY29uc3QgU3RyaW5nJiBpZGJFcnJvckRlc2NyaXB0aW9uKElEQkV4Y2VwdGlvbkNvZGUgY29k
ZSkKICAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gZW50cnkgPSBBU0NJSUxp
dGVyYWwoIk9wZXJhdGlvbiBmYWlsZWQgZm9yIHJlYXNvbnMgdW5yZWxhdGVkIHRvIHRoZSBkYXRh
YmFzZSBpdHNlbGYgYW5kIG5vdCBjb3ZlcmVkIGJ5IGFueSBvdGhlciBlcnJvcnMuIik7CiAgICAg
ICAgIHJldHVybiBlbnRyeS5nZXQoKTsKICAgICB9CisgICAgY2FzZSBJREJFeGNlcHRpb25Db2Rl
OjpDb25zdHJhaW50RXJyb3I6IHsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmlu
Zz4gZW50cnkgPSBBU0NJSUxpdGVyYWwoIk11dGF0aW9uIG9wZXJhdGlvbiBpbiB0aGUgdHJhbnNh
Y3Rpb24gZmFpbGVkIGJlY2F1c2UgYSBjb25zdHJhaW50IHdhcyBub3Qgc2F0aXNmaWVkLiIpOwor
ICAgICAgICByZXR1cm4gZW50cnkuZ2V0KCk7CisgICAgfQogICAgIGNhc2UgSURCRXhjZXB0aW9u
Q29kZTo6VmVyc2lvbkVycm9yOiB7CiAgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJp
bmc+IGVudHJ5ID0gQVNDSUlMaXRlcmFsKCJBbiBhdHRlbXB0IHdhcyBtYWRlIHRvIG9wZW4gYSBk
YXRhYmFzZSB1c2luZyBhIGxvd2VyIHZlcnNpb24gdGhhbiB0aGUgZXhpc3RpbmcgdmVyc2lvbi4i
KTsKICAgICAgICAgcmV0dXJuIGVudHJ5LmdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkVycm9yLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCRXJyb3IuaAppbmRleCA2ZTc3NWY4Li5iOTE5NjM2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURC
RXJyb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURC
RXJyb3IuaApAQCAtMzUsNiArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBlbnVtIGNsYXNz
IElEQkV4Y2VwdGlvbkNvZGUgewogICAgIE5vbmUgPSAwLAogICAgIFVua25vd24sCisgICAgQ29u
c3RyYWludEVycm9yLAogICAgIFZlcnNpb25FcnJvciwKIAogICAgIC8vIEluZGV4ZWQgREIgZXhp
c3RpbmcgZXhjZXB0aW9uIGNvZGVzIHdpdGggSURCLXNwZWNpZmljIGVycm9yIG1lc3NhZ2VzOgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IDlmNjQ4M2YuLmUwNjc3ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIwNTEsNiArMjA1MSw4IEBACiAJCTUxNzQxRDEx
MEIwNzI1OUEwMEVENDQyQyAvKiBIaXN0b3J5SXRlbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3NDFEMEQwQjA3MjU5QTAwRUQ0NDJDIC8qIEhpc3Rv
cnlJdGVtLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNTE3NDFEMTIwQjA3MjU5QTAwRUQ0NDJDIC8qIEhpc3RvcnlJdGVtLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNzQxRDBFMEIwNzI1OUEwMEVE
NDQyQyAvKiBIaXN0b3J5SXRlbS5jcHAgKi87IH07CiAJCTUxNzRFMjBBMTBBMUY0NEYwMEY5NUU2
RiAvKiBQb3BTdGF0ZUV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MTc0RTIwODEwQTFGNDRGMDBGOTVFNkYgLyogUG9wU3RhdGVFdmVudC5oICov
OyB9OworCQk1MTc3MURGRTFCREI0ODUwMDBDQUU4RTQgLyogTWVtb3J5T2JqZWN0U3RvcmUuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3NzFERkMx
QkRCNDc1NjAwQ0FFOEU0IC8qIE1lbW9yeU9iamVjdFN0b3JlLmNwcCAqLzsgfTsKKwkJNTE3NzFE
RkYxQkRCNDg1MDAwQ0FFOEU0IC8qIE1lbW9yeU9iamVjdFN0b3JlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTc3MURGRDFCREI0NzU2MDBDQUU4RTQg
LyogTWVtb3J5T2JqZWN0U3RvcmUuaCAqLzsgfTsKIAkJNTE3OUNFMjQxOTVDODE0MjAwMTlDMTk4
IC8qIEdhbWVwYWRQcm92aWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTE3OUNFMjMxOTVDODE0MjAwMTlDMTk4IC8qIEdhbWVwYWRQcm92aWRlci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxNzlD
RTI2MTk1QzgyMUQwMDE5QzE5OCAvKiBHYW1lcGFkUHJvdmlkZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3OUNFMjUxOTVDODIxRDAwMTlDMTk4
IC8qIEdhbWVwYWRQcm92aWRlci5jcHAgKi87IH07CiAJCTUxNzlDRTJBMTk1QzkxODYwMDE5QzE5
OCAvKiBHYW1lcGFkUHJvdmlkZXJDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxNzlDRTI5MTk1QzkxODYwMDE5QzE5OCAvKiBHYW1lcGFkUHJv
dmlkZXJDbGllbnQuaCAqLzsgfTsKQEAgLTk0NzMsNiArOTQ3NSw4IEBACiAJCTUxNzQxRDBFMEIw
NzI1OUEwMEVENDQyQyAvKiBIaXN0b3J5SXRlbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSGlzdG9yeUl0ZW0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1MTc0RTIwODEwQTFGNDRGMDBGOTVFNkYgLyogUG9wU3RhdGVFdmVudC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQb3BTdGF0ZUV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTUxNzRFMjBCMTBBMUY0OUEwMEY5NUU2RiAvKiBQb3BTdGF0ZUV2ZW50
LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBQb3BTdGF0ZUV2ZW50LmlkbDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE3NzFERkMxQkRCNDc1NjAwQ0FFOEU0IC8qIE1lbW9yeU9i
amVjdFN0b3JlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lbW9y
eU9iamVjdFN0b3JlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE3NzFERkQx
QkRCNDc1NjAwQ0FFOEU0IC8qIE1lbW9yeU9iamVjdFN0b3JlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IE1lbW9yeU9iamVjdFN0b3JlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTUxNzlDRTIzMTk1QzgxNDIwMDE5QzE5OCAvKiBHYW1lcGFkUHJvdmlkZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2FtZXBhZFByb3ZpZGVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNzlDRTI1MTk1QzgyMUQwMDE5QzE5OCAvKiBHYW1l
cGFkUHJvdmlkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR2Ft
ZXBhZFByb3ZpZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE3OUNFMjkx
OTVDOTE4NjAwMTlDMTk4IC8qIEdhbWVwYWRQcm92aWRlckNsaWVudC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBHYW1lcGFkUHJvdmlkZXJDbGllbnQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTE2ODQ3LDYgKzE2ODUxLDggQEAKIAkJCQk1MUUxQkFDMTFCRDgw
NjQ3MDA1NUQ4MUYgLyogTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24uaCAqLywKIAkJCQk1
MUJBNEFDODFCQkM1QjlFMDBERjNENkQgLyogTWVtb3J5SURCQmFja2luZ1N0b3JlLmNwcCAqLywK
IAkJCQk1MUJBNEFDOTFCQkM1QjlFMDBERjNENkQgLyogTWVtb3J5SURCQmFja2luZ1N0b3JlLmgg
Ki8sCisJCQkJNTE3NzFERkMxQkRCNDc1NjAwQ0FFOEU0IC8qIE1lbW9yeU9iamVjdFN0b3JlLmNw
cCAqLywKKwkJCQk1MTc3MURGRDFCREI0NzU2MDBDQUU4RTQgLyogTWVtb3J5T2JqZWN0U3RvcmUu
aCAqLywKIAkJCQk1MTg4NjRERTFCQkFGMzBGMDBFNTQwQzkgLyogVW5pcXVlSURCRGF0YWJhc2Uu
Y3BwICovLAogCQkJCTUxODg2NERGMUJCQUYzMEYwMEU1NDBDOSAvKiBVbmlxdWVJREJEYXRhYmFz
ZS5oICovLAogCQkJCTUxOThGN0EyMUJCREFBMjkwMEUyQ0M1RiAvKiBVbmlxdWVJREJEYXRhYmFz
ZUNvbm5lY3Rpb24uY3BwICovLApAQCAtMjQ5MDIsNiArMjQ5MDgsNyBAQAogCQkJCTg1MDMxQjNF
MEE0NEVGQzcwMEY5OTJFMCAvKiBEYXRhVHJhbnNmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTRC
OEFGNEFBMEIxQ0UwMkIwMDY4NzY5MCAvKiBEYXRhVHJhbnNmZXJBY2Nlc3NQb2xpY3kuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTgxQUM1OTk5MTMxNjM2RTYwMDA5QTdFMCAvKiBEYXRhVHJhbnNmZXJJ
dGVtLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTc3MURGRjFCREI0ODUwMDBDQUU4RTQgLyogTWVt
b3J5T2JqZWN0U3RvcmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTgxQUM1OTlBMTMxNjM2RTYwMDA5
QTdFMCAvKiBEYXRhVHJhbnNmZXJJdGVtTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTRBMDA3
ODMxQjgyMEVDODAwMkM1QTZFIC8qIERhdGFVUkxEZWNvZGVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlFNEEwMDc4MzFCODIwRUM4MDAyQzVBNkUgLyogRGF0YVVSTERlY29kZXIuaCBpbiBIZWFkZXJz
ICovLApAQCAtMjg1NDMsNiArMjg1NTAsNyBAQAogCQkJCUJDQzA2NTdEMEYzQ0UxQjcwMENEMkQ4
NyAvKiBDbGllbnRSZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDQzA2NTgwMEYzQ0UxQjcw
MENEMkQ4NyAvKiBDbGllbnRSZWN0TGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NTAzMUIz
RjBBNDRFRkM3MDBGOTkyRTAgLyogQ2xpcGJvYXJkRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJNTE3NzFERkUxQkRCNDg1MDAwQ0FFOEU0IC8qIE1lbW9yeU9iamVjdFN0b3JlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTU4MDM3MTYxMUE2NkYwMEEwMEJBRjUxOSAvKiBDbGlwUmVjdC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlDREVBNzYzNTE0NjBCNzFBMDA4QjMxRjEgLyogQ2xvY2suY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RFQTc2MzQxNDYwQjU2RjAwOEIzMUYxIC8qIENsb2NrR2Vu
ZXJpYy5jcHAgaW4gU291cmNlcyAqLywK
</data>
<flag name="review"
          id="289130"
          type_id="1"
          status="-"
          setter="beidson"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264011</attachid>
            <date>2015-10-25 10:24:14 -0700</date>
            <delta_ts>2015-10-25 11:10:37 -0700</delta_ts>
            <desc>Patch v2</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>23397</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggOThmM2VhNC4uZGM4Mzg3ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTkwMiw2ICs5MDIsNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlck9wZXJhdGlvbi5jcHAKICAgICBNb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24uY3BwCiAgICAgTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5jcHAKKyAgICBNb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuY3BwCiAgICAgTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcAogICAgIE1vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24uY3BwCiAgICAgTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
aW5kZXggOWMzOWNiOC4uZDYwZjMzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDE1
LTEwLTI1ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBNb2Rl
cm4gSURCOiBCYWNraW5nIHN0b3JlIG9iamVjdFN0b3JlcyAocGx1bWJpbmcgZm9yIGIvMTUwNDY4
KS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDU0
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5l
dyB0ZXN0cyAoTm8gY2hhbmdlIGluIGJlaGF2aW9yLCBwbHVtYmluZyBmb3IgZnV0dXJlIHRlc3Rh
YmlsaXR5KQorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL0lEQkJhY2tpbmdTdG9yZS5oOgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL01lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6TWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb246OmFkZE5ld09iamVj
dFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5QmFja2luZ1N0b3Jl
VHJhbnNhY3Rpb246OmFib3J0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5
QmFja2luZ1N0b3JlVHJhbnNhY3Rpb246OmNvbW1pdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJT
ZXJ2ZXI6Ok1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uOjpmaW5pc2gpOgorICAgICAgICAq
IE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbi5o
OgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2Fj
dGlvbjo6aXNXcml0aW5nKToKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9N
ZW1vcnlJREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpN
ZW1vcnlJREJCYWNraW5nU3RvcmU6OmNyZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6TWVtb3J5SURCQmFja2luZ1N0b3JlOjpyZW1vdmVPYmplY3RTdG9yZUZv
clZlcnNpb25DaGFuZ2VBYm9ydCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L01lbW9yeUlEQkJhY2tpbmdTdG9yZS5oOgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL01lbW9yeU9iamVjdFN0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZl
cjo6TWVtb3J5T2JqZWN0U3RvcmU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2
ZXI6Ok1lbW9yeU9iamVjdFN0b3JlOjpNZW1vcnlPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJD
b3JlOjpJREJTZXJ2ZXI6Ok1lbW9yeU9iamVjdFN0b3JlOjp+TWVtb3J5T2JqZWN0U3RvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlPYmplY3RTdG9yZTo6d3JpdGVUcmFu
c2FjdGlvblN0YXJ0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlPYmpl
Y3RTdG9yZTo6d3JpdGVUcmFuc2FjdGlvbkZpbmlzaGVkKToKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuaDoKKyAgICAgICAgKFdlYkNvcmU6OklE
QlNlcnZlcjo6TWVtb3J5T2JqZWN0U3RvcmU6OmluZm8pOgorCisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmNyZWF0ZU9iamVjdFN0b3JlKToKKworICAg
ICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJFcnJvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjppZGJFcnJvck5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6aWRiRXJyb3JEZXNjcmlw
dGlvbik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkVycm9yLmg6CisK
IDIwMTUtMTAtMjQgIEd3YW5nIFlvb24gSHdhbmcgIDx5b29uQGlnYWxpYS5jb20+CiAKICAgICAg
ICAgW1RleE1hcF0gQ2xlYW4gdXAgQml0bWFwVGV4dHVyZSBhbmQgQml0bWFwVGV4dHVyZUdMLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkJh
Y2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lE
QkJhY2tpbmdTdG9yZS5oCmluZGV4IDZmZjFlYzEuLjdlM2U1YzAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJCYWNraW5nU3RvcmUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCQmFja2luZ1N0b3Jl
LmgKQEAgLTMzLDYgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBJREJP
YmplY3RTdG9yZUluZm87CiBjbGFzcyBJREJSZXNvdXJjZUlkZW50aWZpZXI7CiBjbGFzcyBJREJU
cmFuc2FjdGlvbkluZm87CiAKQEAgLTQ3LDYgKzQ4LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwg
SURCRXJyb3IgYmVnaW5UcmFuc2FjdGlvbihjb25zdCBJREJUcmFuc2FjdGlvbkluZm8mKSA9IDA7
CiAgICAgdmlydHVhbCBJREJFcnJvciBhYm9ydFRyYW5zYWN0aW9uKGNvbnN0IElEQlJlc291cmNl
SWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyKSA9IDA7CiAgICAgdmlydHVhbCBJREJF
cnJvciBjb21taXRUcmFuc2FjdGlvbihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5z
YWN0aW9uSWRlbnRpZmllcikgPSAwOworCisgICAgdmlydHVhbCBJREJFcnJvciBjcmVhdGVPYmpl
Y3RTdG9yZShjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmll
ciwgY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJikgPSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
SURCU2VydmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uLmNw
cAppbmRleCBlYzJhM2U4Li41YzQ0NzdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlCYWNraW5n
U3RvcmVUcmFuc2FjdGlvbi5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJJbmRleGVk
REIuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTWVtb3J5SURCQmFja2luZ1N0
b3JlLmgiCisjaW5jbHVkZSAiTWVtb3J5T2JqZWN0U3RvcmUuaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogbmFtZXNwYWNlIElEQlNlcnZlciB7CkBAIC01Myw2ICs1NCwxOSBAQCBNZW1vcnlCYWNr
aW5nU3RvcmVUcmFuc2FjdGlvbjo6fk1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCkKICAg
ICBBU1NFUlQoIW1faW5Qcm9ncmVzcyk7CiB9CiAKK3ZvaWQgTWVtb3J5QmFja2luZ1N0b3JlVHJh
bnNhY3Rpb246OmFkZE5ld09iamVjdFN0b3JlKE1lbW9yeU9iamVjdFN0b3JlJiBvYmplY3RTdG9y
ZSkKK3sKKyAgICBMT0coSW5kZXhlZERCLCAiTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb246
OmFkZE5ld09iamVjdFN0b3JlKCkiKTsKKworICAgIEFTU0VSVChpc1ZlcnNpb25DaGFuZ2UoKSk7
CisKKyAgICBBU1NFUlQoIW1fb2JqZWN0U3RvcmVzLmNvbnRhaW5zKCZvYmplY3RTdG9yZSkpOwor
ICAgIG1fb2JqZWN0U3RvcmVzLmFkZCgmb2JqZWN0U3RvcmUpOworICAgIG1fdmVyc2lvbkNoYW5n
ZUFkZGVkT2JqZWN0U3RvcmVzLmFkZCgmb2JqZWN0U3RvcmUpOworCisgICAgb2JqZWN0U3RvcmUu
d3JpdGVUcmFuc2FjdGlvblN0YXJ0ZWQoKnRoaXMpOworfQorCiB2b2lkIE1lbW9yeUJhY2tpbmdT
dG9yZVRyYW5zYWN0aW9uOjphYm9ydCgpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIk1lbW9yeUJh
Y2tpbmdTdG9yZVRyYW5zYWN0aW9uOjphYm9ydCgpIik7CkBAIC02MiwxNCArNzYsMjggQEAgdm9p
ZCBNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbjo6YWJvcnQoKQogICAgICAgICBtX2JhY2tp
bmdTdG9yZS5zZXREYXRhYmFzZUluZm8oKm1fb3JpZ2luYWxEYXRhYmFzZUluZm8pOwogICAgIH0K
IAotICAgIG1faW5Qcm9ncmVzcyA9IGZhbHNlOworICAgIGZpbmlzaCgpOworCisgICAgZm9yIChh
dXRvIG9iamVjdFN0b3JlIDogbV92ZXJzaW9uQ2hhbmdlQWRkZWRPYmplY3RTdG9yZXMpCisgICAg
ICAgIG1fYmFja2luZ1N0b3JlLnJlbW92ZU9iamVjdFN0b3JlRm9yVmVyc2lvbkNoYW5nZUFib3J0
KCpvYmplY3RTdG9yZSk7CiB9CiAKIHZvaWQgTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb246
OmNvbW1pdCgpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIk1lbW9yeUJhY2tpbmdTdG9yZVRyYW5z
YWN0aW9uOjpjb21taXQoKSIpOwogCisgICAgZmluaXNoKCk7Cit9CisKK3ZvaWQgTWVtb3J5QmFj
a2luZ1N0b3JlVHJhbnNhY3Rpb246OmZpbmlzaCgpCit7CiAgICAgbV9pblByb2dyZXNzID0gZmFs
c2U7CisKKyAgICBpZiAoIWlzV3JpdGluZygpKQorICAgICAgICByZXR1cm47CisKKyAgICBmb3Ig
KGF1dG8gb2JqZWN0U3RvcmUgOiBtX29iamVjdFN0b3JlcykKKyAgICAgICAgb2JqZWN0U3RvcmUt
PndyaXRlVHJhbnNhY3Rpb25GaW5pc2hlZCgqdGhpcyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIElE
QlNlcnZlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL01lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24uaAppbmRl
eCBmNTM5MTYxLi5hYThhYTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5QmFja2luZ1N0b3JlVHJh
bnNhY3Rpb24uaApAQCAtMzAsMTEgKzMwLDEzIEBACiAKICNpbmNsdWRlICJJREJEYXRhYmFzZUlu
Zm8uaCIKICNpbmNsdWRlICJJREJUcmFuc2FjdGlvbkluZm8uaCIKKyNpbmNsdWRlIDx3dGYvSGFz
aFNldC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgSURCU2VydmVyIHsKIAog
Y2xhc3MgTWVtb3J5SURCQmFja2luZ1N0b3JlOworY2xhc3MgTWVtb3J5T2JqZWN0U3RvcmU7CiAK
IGNsYXNzIE1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uIHsKICAgICBmcmllbmQgc3RkOjp1
bmlxdWVfcHRyPE1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uPiBzdGQ6Om1ha2VfdW5pcXVl
PE1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uPihXZWJDb3JlOjpJREJTZXJ2ZXI6Ok1lbW9y
eUlEQkJhY2tpbmdTdG9yZSYsIGNvbnN0IFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uSW5mbyYpOwpA
QCAtNDQsMjEgKzQ2LDMwIEBAIHB1YmxpYzoKICAgICB+TWVtb3J5QmFja2luZ1N0b3JlVHJhbnNh
Y3Rpb24oKTsKIAogICAgIGJvb2wgaXNWZXJzaW9uQ2hhbmdlKCkgY29uc3QgeyByZXR1cm4gbV9p
bmZvLm1vZGUoKSA9PSBJbmRleGVkREI6OlRyYW5zYWN0aW9uTW9kZTo6VmVyc2lvbkNoYW5nZTsg
fQorICAgIGJvb2wgaXNXcml0aW5nKCkgY29uc3QgeyByZXR1cm4gbV9pbmZvLm1vZGUoKSAhPSBJ
bmRleGVkREI6OlRyYW5zYWN0aW9uTW9kZTo6UmVhZE9ubHk7IH0KIAogICAgIGNvbnN0IElEQkRh
dGFiYXNlSW5mbyYgb3JpZ2luYWxEYXRhYmFzZUluZm8oKSBjb25zdDsKIAorICAgIHZvaWQgYWRk
TmV3T2JqZWN0U3RvcmUoTWVtb3J5T2JqZWN0U3RvcmUmKTsKKwogICAgIHZvaWQgYWJvcnQoKTsK
ICAgICB2b2lkIGNvbW1pdCgpOwogCiBwcml2YXRlOgogICAgIE1lbW9yeUJhY2tpbmdTdG9yZVRy
YW5zYWN0aW9uKE1lbW9yeUlEQkJhY2tpbmdTdG9yZSYsIGNvbnN0IElEQlRyYW5zYWN0aW9uSW5m
byYpOwogCisgICAgdm9pZCBmaW5pc2goKTsKKwogICAgIE1lbW9yeUlEQkJhY2tpbmdTdG9yZSYg
bV9iYWNraW5nU3RvcmU7CiAgICAgSURCVHJhbnNhY3Rpb25JbmZvIG1faW5mbzsKIAogICAgIHN0
ZDo6dW5pcXVlX3B0cjxJREJEYXRhYmFzZUluZm8+IG1fb3JpZ2luYWxEYXRhYmFzZUluZm87CiAK
ICAgICBib29sIG1faW5Qcm9ncmVzcyB7IHRydWUgfTsKKworICAgIEhhc2hTZXQ8TWVtb3J5T2Jq
ZWN0U3RvcmUqPiBtX29iamVjdFN0b3JlczsKKyAgICBIYXNoU2V0PE1lbW9yeU9iamVjdFN0b3Jl
Kj4gbV92ZXJzaW9uQ2hhbmdlQWRkZWRPYmplY3RTdG9yZXM7CisKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIElEQlNlcnZlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmNwcAppbmRleCBhYWUw
NjdhLi5hOTA4YmEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmNwcApAQCAtMjks
NiArMjksNyBAQAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogCiAjaW5jbHVkZSAiTG9n
Z2luZy5oIgorI2luY2x1ZGUgIk1lbW9yeU9iamVjdFN0b3JlLmgiCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIG5hbWVzcGFjZSBJREJTZXJ2ZXIgewpAQCAtMTAyLDYgKzEwMywzOCBAQCBJREJFcnJv
ciBNZW1vcnlJREJCYWNraW5nU3RvcmU6OmNvbW1pdFRyYW5zYWN0aW9uKGNvbnN0IElEQlJlc291
cmNlSWRlbnRpZmllciYgdAogICAgIHJldHVybiBJREJFcnJvcigpOwogfQogCitJREJFcnJvciBN
ZW1vcnlJREJCYWNraW5nU3RvcmU6OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlc291cmNl
SWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJPYmplY3RTdG9yZUlu
Zm8mIGluZm8pCit7CisgICAgTE9HKEluZGV4ZWREQiwgIk1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6
Y3JlYXRlT2JqZWN0U3RvcmUiKTsKKworICAgIGlmIChtX2RhdGFiYXNlSW5mby0+aGFzT2JqZWN0
U3RvcmUoaW5mby5uYW1lKCkpKQorICAgICAgICByZXR1cm4gSURCRXJyb3IoSURCRXhjZXB0aW9u
Q29kZTo6Q29uc3RyYWludEVycm9yKTsKKworICAgIEFTU0VSVCghbV9vYmplY3RTdG9yZXMuY29u
dGFpbnMoaW5mby5pZGVudGlmaWVyKCkpKTsKKyAgICBhdXRvIG9iamVjdFN0b3JlID0gTWVtb3J5
T2JqZWN0U3RvcmU6OmNyZWF0ZShpbmZvKTsKKworICAgIG1fZGF0YWJhc2VJbmZvLT5hZGRFeGlz
dGluZ09iamVjdFN0b3JlKGluZm8pOworCisgICAgYXV0byByYXdUcmFuc2FjdGlvbiA9IG1fdHJh
bnNhY3Rpb25zLmdldCh0cmFuc2FjdGlvbklkZW50aWZpZXIpOworICAgIEFTU0VSVChyYXdUcmFu
c2FjdGlvbik7CisgICAgQVNTRVJUKHJhd1RyYW5zYWN0aW9uLT5pc1ZlcnNpb25DaGFuZ2UoKSk7
CisKKyAgICByYXdUcmFuc2FjdGlvbi0+YWRkTmV3T2JqZWN0U3RvcmUoKm9iamVjdFN0b3JlKTsK
KyAgICBtX29iamVjdFN0b3Jlcy5zZXQoaW5mby5pZGVudGlmaWVyKCksIFdURjo6bW92ZShvYmpl
Y3RTdG9yZSkpOworCisgICAgcmV0dXJuIElEQkVycm9yKCk7Cit9CisKK3ZvaWQgTWVtb3J5SURC
QmFja2luZ1N0b3JlOjpyZW1vdmVPYmplY3RTdG9yZUZvclZlcnNpb25DaGFuZ2VBYm9ydChNZW1v
cnlPYmplY3RTdG9yZSYgb2JqZWN0U3RvcmUpCit7CisgICAgTE9HKEluZGV4ZWREQiwgIk1lbW9y
eUlEQkJhY2tpbmdTdG9yZTo6cmVtb3ZlT2JqZWN0U3RvcmVGb3JWZXJzaW9uQ2hhbmdlQWJvcnQi
KTsKKworICAgIEFTU0VSVChtX29iamVjdFN0b3Jlcy5jb250YWlucyhvYmplY3RTdG9yZS5pbmZv
KCkuaWRlbnRpZmllcigpKSk7CisgICAgQVNTRVJUKG1fb2JqZWN0U3RvcmVzLmdldChvYmplY3RT
dG9yZS5pbmZvKCkuaWRlbnRpZmllcigpKSA9PSAmb2JqZWN0U3RvcmUpOworCisgICAgbV9vYmpl
Y3RTdG9yZXMucmVtb3ZlKG9iamVjdFN0b3JlLmluZm8oKS5pZGVudGlmaWVyKCkpOworfQorCiB9
IC8vIG5hbWVzcGFjZSBJREJTZXJ2ZXIKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJh
Y2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01l
bW9yeUlEQkJhY2tpbmdTdG9yZS5oCmluZGV4IDI1NDk5ZjQuLjI2OTU4ZmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5n
U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVt
b3J5SURCQmFja2luZ1N0b3JlLmgKQEAgLTM3LDYgKzM3LDggQEAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIG5hbWVzcGFjZSBJREJTZXJ2ZXIgewogCitjbGFzcyBNZW1vcnlPYmplY3RTdG9yZTsKKwog
Y2xhc3MgTWVtb3J5SURCQmFja2luZ1N0b3JlIDogcHVibGljIElEQkJhY2tpbmdTdG9yZSB7CiAg
ICAgZnJpZW5kIHN0ZDo6dW5pcXVlX3B0cjxNZW1vcnlJREJCYWNraW5nU3RvcmU+IHN0ZDo6bWFr
ZV91bmlxdWU8TWVtb3J5SURCQmFja2luZ1N0b3JlPihjb25zdCBXZWJDb3JlOjpJREJEYXRhYmFz
ZUlkZW50aWZpZXImKTsKIHB1YmxpYzoKQEAgLTUwLDYgKzUyLDkgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgSURCRXJyb3IgYmVnaW5UcmFuc2FjdGlvbihjb25zdCBJREJUcmFuc2FjdGlvbkluZm8m
KSBvdmVycmlkZSBmaW5hbDsKICAgICB2aXJ0dWFsIElEQkVycm9yIGFib3J0VHJhbnNhY3Rpb24o
Y29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIpIG92ZXJy
aWRlIGZpbmFsOwogICAgIHZpcnR1YWwgSURCRXJyb3IgY29tbWl0VHJhbnNhY3Rpb24oY29uc3Qg
SURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIpIG92ZXJyaWRlIGZp
bmFsOworICAgIHZpcnR1YWwgSURCRXJyb3IgY3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgSURCUmVz
b3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQk9iamVjdFN0
b3JlSW5mbyYpIG92ZXJyaWRlIGZpbmFsOworCisgICAgdm9pZCByZW1vdmVPYmplY3RTdG9yZUZv
clZlcnNpb25DaGFuZ2VBYm9ydChNZW1vcnlPYmplY3RTdG9yZSYpOwogCiBwcml2YXRlOgogICAg
IE1lbW9yeUlEQkJhY2tpbmdTdG9yZShjb25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXImKTsKQEAg
LTU4LDcgKzYzLDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SURCRGF0YWJhc2VJ
bmZvPiBtX2RhdGFiYXNlSW5mbzsKIAogICAgIEhhc2hNYXA8SURCUmVzb3VyY2VJZGVudGlmaWVy
LCBzdGQ6OnVuaXF1ZV9wdHI8TWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24+PiBtX3RyYW5z
YWN0aW9uczsKLQorICAgIEhhc2hNYXA8dWludDY0X3QsIHN0ZDo6dW5pcXVlX3B0cjxNZW1vcnlP
YmplY3RTdG9yZT4+IG1fb2JqZWN0U3RvcmVzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSURCU2Vy
dmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
TWVtb3J5T2JqZWN0U3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL01lbW9yeU9iamVjdFN0b3JlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi5mODM0ZDJkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3JlLmNwcApAQCAtMCwwICsxLDcwIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIk1lbW9yeU9iamVjdFN0b3JlLmgiCisKKyNpZiBFTkFCTEUo
SU5ERVhFRF9EQVRBQkFTRSkKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworbmFtZXNwYWNlIElEQlNlcnZlciB7CisKK3N0ZDo6dW5pcXVlX3B0cjxNZW1vcnlP
YmplY3RTdG9yZT4gTWVtb3J5T2JqZWN0U3RvcmU6OmNyZWF0ZShjb25zdCBJREJPYmplY3RTdG9y
ZUluZm8mIGluZm8pCit7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TWVtb3J5T2JqZWN0
U3RvcmU+KGluZm8pOworfQorCitNZW1vcnlPYmplY3RTdG9yZTo6TWVtb3J5T2JqZWN0U3RvcmUo
Y29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJiBpbmZvKQorICAgIDogbV9pbmZvKGluZm8pCit7Cit9
CisKK01lbW9yeU9iamVjdFN0b3JlOjp+TWVtb3J5T2JqZWN0U3RvcmUoKQoreworICAgIEFTU0VS
VCghbV93cml0ZVRyYW5zYWN0aW9uKTsKK30KKwordm9pZCBNZW1vcnlPYmplY3RTdG9yZTo6d3Jp
dGVUcmFuc2FjdGlvblN0YXJ0ZWQoTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24mIHRyYW5z
YWN0aW9uKQoreworICAgIExPRyhJbmRleGVkREIsICJNZW1vcnlPYmplY3RTdG9yZTo6d3JpdGVU
cmFuc2FjdGlvblN0YXJ0ZWQiKTsKKworICAgIEFTU0VSVCghbV93cml0ZVRyYW5zYWN0aW9uKTsK
KyAgICBtX3dyaXRlVHJhbnNhY3Rpb24gPSAmdHJhbnNhY3Rpb247Cit9CisKK3ZvaWQgTWVtb3J5
T2JqZWN0U3RvcmU6OndyaXRlVHJhbnNhY3Rpb25GaW5pc2hlZChNZW1vcnlCYWNraW5nU3RvcmVU
cmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24pCit7CisgICAgTE9HKEluZGV4ZWREQiwgIk1lbW9yeU9i
amVjdFN0b3JlOjp3cml0ZVRyYW5zYWN0aW9uRmluaXNoZWQiKTsKKworICAgIEFTU0VSVChtX3dy
aXRlVHJhbnNhY3Rpb24gPT0gJnRyYW5zYWN0aW9uKTsKKyAgICBtX3dyaXRlVHJhbnNhY3Rpb24g
PSBudWxscHRyOworfQorCit9IC8vIG5hbWVzcGFjZSBJREJTZXJ2ZXIKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0
b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2Jq
ZWN0U3RvcmUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mM2YzNDY3Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L01lbW9yeU9iamVjdFN0b3JlLmgKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTWVtb3J5T2JqZWN0U3RvcmVfaAor
I2RlZmluZSBNZW1vcnlPYmplY3RTdG9yZV9oCisKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFT
RSkKKworI2luY2x1ZGUgIklEQk9iamVjdFN0b3JlSW5mby5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CituYW1lc3BhY2UgSURCU2VydmVyIHsKKworY2xhc3MgTWVtb3J5QmFja2luZ1N0b3JlVHJh
bnNhY3Rpb247CisKK2NsYXNzIE1lbW9yeU9iamVjdFN0b3JlIHsKKyAgICBmcmllbmQgc3RkOjp1
bmlxdWVfcHRyPE1lbW9yeU9iamVjdFN0b3JlPiBzdGQ6Om1ha2VfdW5pcXVlPE1lbW9yeU9iamVj
dFN0b3JlPihjb25zdCBJREJPYmplY3RTdG9yZUluZm8mKTsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
c3RkOjp1bmlxdWVfcHRyPE1lbW9yeU9iamVjdFN0b3JlPiBjcmVhdGUoY29uc3QgSURCT2JqZWN0
U3RvcmVJbmZvJik7CisKKyAgICB+TWVtb3J5T2JqZWN0U3RvcmUoKTsKKworICAgIHZvaWQgd3Jp
dGVUcmFuc2FjdGlvblN0YXJ0ZWQoTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24mKTsKKyAg
ICB2b2lkIHdyaXRlVHJhbnNhY3Rpb25GaW5pc2hlZChNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2Fj
dGlvbiYpOworCisgICAgY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJiBpbmZvKCkgY29uc3QgeyBy
ZXR1cm4gbV9pbmZvOyB9CisKK3ByaXZhdGU6CisgICAgTWVtb3J5T2JqZWN0U3RvcmUoY29uc3Qg
SURCT2JqZWN0U3RvcmVJbmZvJik7CisKKyAgICBJREJPYmplY3RTdG9yZUluZm8gbV9pbmZvOwor
CisgICAgTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24qIG1fd3JpdGVUcmFuc2FjdGlvbiB7
IG51bGxwdHIgfTsKK307CisKK30gLy8gbmFtZXNwYWNlIElEQlNlcnZlcgorfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisjZW5kaWYg
Ly8gTWVtb3J5T2JqZWN0U3RvcmVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5jcHAKaW5kZXggM2Ji
NmE4MS4uMDU0YTc4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwCkBAIC0yMjIsNiArMjIy
LDggQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Y3JlYXRlT2JqZWN0U3RvcmUoVW5pcXVlSURC
RGF0YWJhc2VUcmFuc2FjdGlvbiYgdHJhbnNhY3QKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OwogICAgIExPRyhJbmRleGVkREIsICIobWFpbikgVW5pcXVlSURCRGF0YWJhc2U6OmNyZWF0ZU9i
amVjdFN0b3JlIik7CiAKKyAgICBtX2JhY2tpbmdTdG9yZS0+Y3JlYXRlT2JqZWN0U3RvcmUodHJh
bnNhY3Rpb24uaW5mbygpLmlkZW50aWZpZXIoKSwgaW5mbyk7CisKICAgICB1aW50NjRfdCBjYWxs
YmFja0lEID0gc3RvcmVDYWxsYmFjayhjYWxsYmFjayk7CiAgICAgbV9zZXJ2ZXIucG9zdERhdGFi
YXNlVGFzayhjcmVhdGVDcm9zc1RocmVhZFRhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6
cGVyZm9ybUNyZWF0ZU9iamVjdFN0b3JlLCBjYWxsYmFja0lELCB0cmFuc2FjdGlvbi5pbmZvKCku
aWRlbnRpZmllcigpLCBpbmZvKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCRXJyb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2hhcmVkL0lEQkVycm9yLmNwcAppbmRleCA4YTg3NWE3Li4yMjg4Y2U4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCRXJy
b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJF
cnJvci5jcHAKQEAgLTM5LDYgKzM5LDEwIEBAIHN0YXRpYyBjb25zdCBTdHJpbmcmIGlkYkVycm9y
TmFtZShJREJFeGNlcHRpb25Db2RlIGNvZGUpCiAgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxTdHJpbmc+IGVudHJ5ID0gQVNDSUlMaXRlcmFsKCJVbmtub3duRXJyb3IiKTsKICAgICAgICAg
cmV0dXJuIGVudHJ5OwogICAgIH0KKyAgICBjYXNlIElEQkV4Y2VwdGlvbkNvZGU6OkNvbnN0cmFp
bnRFcnJvcjogeworICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBlbnRyeSA9
IEFTQ0lJTGl0ZXJhbCgiQ29uc3RyYWludEVycm9yIik7CisgICAgICAgIHJldHVybiBlbnRyeTsK
KyAgICB9CiAgICAgY2FzZSBJREJFeGNlcHRpb25Db2RlOjpWZXJzaW9uRXJyb3I6IHsKICAgICAg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gZW50cnkgPSBBU0NJSUxpdGVyYWwoIlZl
cnNpb25FcnJvciIpOwogICAgICAgICByZXR1cm4gZW50cnk7CkBAIC02MSw2ICs2NSwxMCBAQCBz
dGF0aWMgY29uc3QgU3RyaW5nJiBpZGJFcnJvckRlc2NyaXB0aW9uKElEQkV4Y2VwdGlvbkNvZGUg
Y29kZSkKICAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gZW50cnkgPSBBU0NJ
SUxpdGVyYWwoIk9wZXJhdGlvbiBmYWlsZWQgZm9yIHJlYXNvbnMgdW5yZWxhdGVkIHRvIHRoZSBk
YXRhYmFzZSBpdHNlbGYgYW5kIG5vdCBjb3ZlcmVkIGJ5IGFueSBvdGhlciBlcnJvcnMuIik7CiAg
ICAgICAgIHJldHVybiBlbnRyeS5nZXQoKTsKICAgICB9CisgICAgY2FzZSBJREJFeGNlcHRpb25D
b2RlOjpDb25zdHJhaW50RXJyb3I6IHsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0
cmluZz4gZW50cnkgPSBBU0NJSUxpdGVyYWwoIk11dGF0aW9uIG9wZXJhdGlvbiBpbiB0aGUgdHJh
bnNhY3Rpb24gZmFpbGVkIGJlY2F1c2UgYSBjb25zdHJhaW50IHdhcyBub3Qgc2F0aXNmaWVkLiIp
OworICAgICAgICByZXR1cm4gZW50cnkuZ2V0KCk7CisgICAgfQogICAgIGNhc2UgSURCRXhjZXB0
aW9uQ29kZTo6VmVyc2lvbkVycm9yOiB7CiAgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxT
dHJpbmc+IGVudHJ5ID0gQVNDSUlMaXRlcmFsKCJBbiBhdHRlbXB0IHdhcyBtYWRlIHRvIG9wZW4g
YSBkYXRhYmFzZSB1c2luZyBhIGxvd2VyIHZlcnNpb24gdGhhbiB0aGUgZXhpc3RpbmcgdmVyc2lv
bi4iKTsKICAgICAgICAgcmV0dXJuIGVudHJ5LmdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkVycm9yLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCRXJyb3IuaAppbmRleCA2ZTc3NWY4Li5iOTE5
NjM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQv
SURCRXJyb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQv
SURCRXJyb3IuaApAQCAtMzUsNiArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBlbnVtIGNs
YXNzIElEQkV4Y2VwdGlvbkNvZGUgewogICAgIE5vbmUgPSAwLAogICAgIFVua25vd24sCisgICAg
Q29uc3RyYWludEVycm9yLAogICAgIFZlcnNpb25FcnJvciwKIAogICAgIC8vIEluZGV4ZWQgREIg
ZXhpc3RpbmcgZXhjZXB0aW9uIGNvZGVzIHdpdGggSURCLXNwZWNpZmljIGVycm9yIG1lc3NhZ2Vz
OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IDg5MzJmOTcuLjkwMGIxNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIwNTEsNiArMjA1MSw4IEBACiAJCTUxNzQx
RDExMEIwNzI1OUEwMEVENDQyQyAvKiBIaXN0b3J5SXRlbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3NDFEMEQwQjA3MjU5QTAwRUQ0NDJDIC8qIEhp
c3RvcnlJdGVtLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNTE3NDFEMTIwQjA3MjU5QTAwRUQ0NDJDIC8qIEhpc3RvcnlJdGVtLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNzQxRDBFMEIwNzI1OUEw
MEVENDQyQyAvKiBIaXN0b3J5SXRlbS5jcHAgKi87IH07CiAJCTUxNzRFMjBBMTBBMUY0NEYwMEY5
NUU2RiAvKiBQb3BTdGF0ZUV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MTc0RTIwODEwQTFGNDRGMDBGOTVFNkYgLyogUG9wU3RhdGVFdmVudC5o
ICovOyB9OworCQk1MTc3MURGRTFCREI0ODUwMDBDQUU4RTQgLyogTWVtb3J5T2JqZWN0U3RvcmUu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3NzFE
RkMxQkRCNDc1NjAwQ0FFOEU0IC8qIE1lbW9yeU9iamVjdFN0b3JlLmNwcCAqLzsgfTsKKwkJNTE3
NzFERkYxQkRCNDg1MDAwQ0FFOEU0IC8qIE1lbW9yeU9iamVjdFN0b3JlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTc3MURGRDFCREI0NzU2MDBDQUU4
RTQgLyogTWVtb3J5T2JqZWN0U3RvcmUuaCAqLzsgfTsKIAkJNTE3OUNFMjQxOTVDODE0MjAwMTlD
MTk4IC8qIEdhbWVwYWRQcm92aWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTE3OUNFMjMxOTVDODE0MjAwMTlDMTk4IC8qIEdhbWVwYWRQcm92aWRl
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUx
NzlDRTI2MTk1QzgyMUQwMDE5QzE5OCAvKiBHYW1lcGFkUHJvdmlkZXIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3OUNFMjUxOTVDODIxRDAwMTlD
MTk4IC8qIEdhbWVwYWRQcm92aWRlci5jcHAgKi87IH07CiAJCTUxNzlDRTJBMTk1QzkxODYwMDE5
QzE5OCAvKiBHYW1lcGFkUHJvdmlkZXJDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNzlDRTI5MTk1QzkxODYwMDE5QzE5OCAvKiBHYW1lcGFk
UHJvdmlkZXJDbGllbnQuaCAqLzsgfTsKQEAgLTk0NzIsNiArOTQ3NCw4IEBACiAJCTUxNzQxRDBF
MEIwNzI1OUEwMEVENDQyQyAvKiBIaXN0b3J5SXRlbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSGlzdG9yeUl0ZW0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1MTc0RTIwODEwQTFGNDRGMDBGOTVFNkYgLyogUG9wU3RhdGVFdmVudC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQb3BTdGF0ZUV2ZW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTUxNzRFMjBCMTBBMUY0OUEwMEY5NUU2RiAvKiBQb3BTdGF0ZUV2
ZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBQb3BTdGF0ZUV2ZW50LmlkbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE3NzFERkMxQkRCNDc1NjAwQ0FFOEU0IC8qIE1lbW9y
eU9iamVjdFN0b3JlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1l
bW9yeU9iamVjdFN0b3JlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE3NzFE
RkQxQkRCNDc1NjAwQ0FFOEU0IC8qIE1lbW9yeU9iamVjdFN0b3JlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE1lbW9yeU9iamVjdFN0b3JlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTUxNzlDRTIzMTk1QzgxNDIwMDE5QzE5OCAvKiBHYW1lcGFkUHJvdmlkZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2FtZXBhZFByb3ZpZGVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNzlDRTI1MTk1QzgyMUQwMDE5QzE5OCAvKiBH
YW1lcGFkUHJvdmlkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
R2FtZXBhZFByb3ZpZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE3OUNF
MjkxOTVDOTE4NjAwMTlDMTk4IC8qIEdhbWVwYWRQcm92aWRlckNsaWVudC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBHYW1lcGFkUHJvdmlkZXJDbGllbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE2ODQ0LDYgKzE2ODQ4LDggQEAKIAkJCQk1MUUxQkFDMTFC
RDgwNjQ3MDA1NUQ4MUYgLyogTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24uaCAqLywKIAkJ
CQk1MUJBNEFDODFCQkM1QjlFMDBERjNENkQgLyogTWVtb3J5SURCQmFja2luZ1N0b3JlLmNwcCAq
LywKIAkJCQk1MUJBNEFDOTFCQkM1QjlFMDBERjNENkQgLyogTWVtb3J5SURCQmFja2luZ1N0b3Jl
LmggKi8sCisJCQkJNTE3NzFERkMxQkRCNDc1NjAwQ0FFOEU0IC8qIE1lbW9yeU9iamVjdFN0b3Jl
LmNwcCAqLywKKwkJCQk1MTc3MURGRDFCREI0NzU2MDBDQUU4RTQgLyogTWVtb3J5T2JqZWN0U3Rv
cmUuaCAqLywKIAkJCQk1MTg4NjRERTFCQkFGMzBGMDBFNTQwQzkgLyogVW5pcXVlSURCRGF0YWJh
c2UuY3BwICovLAogCQkJCTUxODg2NERGMUJCQUYzMEYwMEU1NDBDOSAvKiBVbmlxdWVJREJEYXRh
YmFzZS5oICovLAogCQkJCTUxOThGN0EyMUJCREFBMjkwMEUyQ0M1RiAvKiBVbmlxdWVJREJEYXRh
YmFzZUNvbm5lY3Rpb24uY3BwICovLApAQCAtMjQ4OTksNiArMjQ5MDUsNyBAQAogCQkJCTg1MDMx
QjNFMEE0NEVGQzcwMEY5OTJFMCAvKiBEYXRhVHJhbnNmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTRCOEFGNEFBMEIxQ0UwMkIwMDY4NzY5MCAvKiBEYXRhVHJhbnNmZXJBY2Nlc3NQb2xpY3kuaCBp
biBIZWFkZXJzICovLAogCQkJCTgxQUM1OTk5MTMxNjM2RTYwMDA5QTdFMCAvKiBEYXRhVHJhbnNm
ZXJJdGVtLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTc3MURGRjFCREI0ODUwMDBDQUU4RTQgLyog
TWVtb3J5T2JqZWN0U3RvcmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTgxQUM1OTlBMTMxNjM2RTYw
MDA5QTdFMCAvKiBEYXRhVHJhbnNmZXJJdGVtTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTRB
MDA3ODMxQjgyMEVDODAwMkM1QTZFIC8qIERhdGFVUkxEZWNvZGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQlFNEEwMDc4MzFCODIwRUM4MDAyQzVBNkUgLyogRGF0YVVSTERlY29kZXIuaCBpbiBIZWFk
ZXJzICovLApAQCAtMjg1MzksNiArMjg1NDYsNyBAQAogCQkJCUJDQzA2NTdEMEYzQ0UxQjcwMENE
MkQ4NyAvKiBDbGllbnRSZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDQzA2NTgwMEYzQ0Ux
QjcwMENEMkQ4NyAvKiBDbGllbnRSZWN0TGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NTAz
MUIzRjBBNDRFRkM3MDBGOTkyRTAgLyogQ2xpcGJvYXJkRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJNTE3NzFERkUxQkRCNDg1MDAwQ0FFOEU0IC8qIE1lbW9yeU9iamVjdFN0b3JlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTU4MDM3MTYxMUE2NkYwMEEwMEJBRjUxOSAvKiBDbGlwUmVjdC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlDREVBNzYzNTE0NjBCNzFBMDA4QjMxRjEgLyogQ2xvY2su
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RFQTc2MzQxNDYwQjU2RjAwOEIzMUYxIC8qIENsb2Nr
R2VuZXJpYy5jcHAgaW4gU291cmNlcyAqLywK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264015</attachid>
            <date>2015-10-25 11:10:37 -0700</date>
            <delta_ts>2015-10-25 11:27:00 -0700</delta_ts>
            <desc>Patch v3</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>23417</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggOThmM2VhNC4uZGM4Mzg3ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTkwMiw2ICs5MDIsNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlck9wZXJhdGlvbi5jcHAKICAgICBNb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24uY3BwCiAgICAgTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5jcHAKKyAgICBNb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuY3BwCiAgICAgTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcAogICAgIE1vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24uY3BwCiAgICAgTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
aW5kZXggOWMzOWNiOC4uZDYwZjMzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDE1
LTEwLTI1ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBNb2Rl
cm4gSURCOiBCYWNraW5nIHN0b3JlIG9iamVjdFN0b3JlcyAocGx1bWJpbmcgZm9yIGIvMTUwNDY4
KS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDU0
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5l
dyB0ZXN0cyAoTm8gY2hhbmdlIGluIGJlaGF2aW9yLCBwbHVtYmluZyBmb3IgZnV0dXJlIHRlc3Rh
YmlsaXR5KQorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL0lEQkJhY2tpbmdTdG9yZS5oOgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL01lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6TWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb246OmFkZE5ld09iamVj
dFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5QmFja2luZ1N0b3Jl
VHJhbnNhY3Rpb246OmFib3J0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5
QmFja2luZ1N0b3JlVHJhbnNhY3Rpb246OmNvbW1pdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJT
ZXJ2ZXI6Ok1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uOjpmaW5pc2gpOgorICAgICAgICAq
IE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbi5o
OgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2Fj
dGlvbjo6aXNXcml0aW5nKToKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9N
ZW1vcnlJREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpN
ZW1vcnlJREJCYWNraW5nU3RvcmU6OmNyZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6TWVtb3J5SURCQmFja2luZ1N0b3JlOjpyZW1vdmVPYmplY3RTdG9yZUZv
clZlcnNpb25DaGFuZ2VBYm9ydCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L01lbW9yeUlEQkJhY2tpbmdTdG9yZS5oOgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL01lbW9yeU9iamVjdFN0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZl
cjo6TWVtb3J5T2JqZWN0U3RvcmU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2
ZXI6Ok1lbW9yeU9iamVjdFN0b3JlOjpNZW1vcnlPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJD
b3JlOjpJREJTZXJ2ZXI6Ok1lbW9yeU9iamVjdFN0b3JlOjp+TWVtb3J5T2JqZWN0U3RvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlPYmplY3RTdG9yZTo6d3JpdGVUcmFu
c2FjdGlvblN0YXJ0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlPYmpl
Y3RTdG9yZTo6d3JpdGVUcmFuc2FjdGlvbkZpbmlzaGVkKToKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuaDoKKyAgICAgICAgKFdlYkNvcmU6OklE
QlNlcnZlcjo6TWVtb3J5T2JqZWN0U3RvcmU6OmluZm8pOgorCisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmNyZWF0ZU9iamVjdFN0b3JlKToKKworICAg
ICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJFcnJvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjppZGJFcnJvck5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6aWRiRXJyb3JEZXNjcmlw
dGlvbik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkVycm9yLmg6CisK
IDIwMTUtMTAtMjQgIEd3YW5nIFlvb24gSHdhbmcgIDx5b29uQGlnYWxpYS5jb20+CiAKICAgICAg
ICAgW1RleE1hcF0gQ2xlYW4gdXAgQml0bWFwVGV4dHVyZSBhbmQgQml0bWFwVGV4dHVyZUdMLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkJh
Y2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lE
QkJhY2tpbmdTdG9yZS5oCmluZGV4IDZmZjFlYzEuLjdlM2U1YzAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJCYWNraW5nU3RvcmUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCQmFja2luZ1N0b3Jl
LmgKQEAgLTMzLDYgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBJREJP
YmplY3RTdG9yZUluZm87CiBjbGFzcyBJREJSZXNvdXJjZUlkZW50aWZpZXI7CiBjbGFzcyBJREJU
cmFuc2FjdGlvbkluZm87CiAKQEAgLTQ3LDYgKzQ4LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwg
SURCRXJyb3IgYmVnaW5UcmFuc2FjdGlvbihjb25zdCBJREJUcmFuc2FjdGlvbkluZm8mKSA9IDA7
CiAgICAgdmlydHVhbCBJREJFcnJvciBhYm9ydFRyYW5zYWN0aW9uKGNvbnN0IElEQlJlc291cmNl
SWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyKSA9IDA7CiAgICAgdmlydHVhbCBJREJF
cnJvciBjb21taXRUcmFuc2FjdGlvbihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5z
YWN0aW9uSWRlbnRpZmllcikgPSAwOworCisgICAgdmlydHVhbCBJREJFcnJvciBjcmVhdGVPYmpl
Y3RTdG9yZShjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmll
ciwgY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJikgPSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
SURCU2VydmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uLmNw
cAppbmRleCBlYzJhM2U4Li41YzQ0NzdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlCYWNraW5n
U3RvcmVUcmFuc2FjdGlvbi5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJJbmRleGVk
REIuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTWVtb3J5SURCQmFja2luZ1N0
b3JlLmgiCisjaW5jbHVkZSAiTWVtb3J5T2JqZWN0U3RvcmUuaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogbmFtZXNwYWNlIElEQlNlcnZlciB7CkBAIC01Myw2ICs1NCwxOSBAQCBNZW1vcnlCYWNr
aW5nU3RvcmVUcmFuc2FjdGlvbjo6fk1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCkKICAg
ICBBU1NFUlQoIW1faW5Qcm9ncmVzcyk7CiB9CiAKK3ZvaWQgTWVtb3J5QmFja2luZ1N0b3JlVHJh
bnNhY3Rpb246OmFkZE5ld09iamVjdFN0b3JlKE1lbW9yeU9iamVjdFN0b3JlJiBvYmplY3RTdG9y
ZSkKK3sKKyAgICBMT0coSW5kZXhlZERCLCAiTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb246
OmFkZE5ld09iamVjdFN0b3JlKCkiKTsKKworICAgIEFTU0VSVChpc1ZlcnNpb25DaGFuZ2UoKSk7
CisKKyAgICBBU1NFUlQoIW1fb2JqZWN0U3RvcmVzLmNvbnRhaW5zKCZvYmplY3RTdG9yZSkpOwor
ICAgIG1fb2JqZWN0U3RvcmVzLmFkZCgmb2JqZWN0U3RvcmUpOworICAgIG1fdmVyc2lvbkNoYW5n
ZUFkZGVkT2JqZWN0U3RvcmVzLmFkZCgmb2JqZWN0U3RvcmUpOworCisgICAgb2JqZWN0U3RvcmUu
d3JpdGVUcmFuc2FjdGlvblN0YXJ0ZWQoKnRoaXMpOworfQorCiB2b2lkIE1lbW9yeUJhY2tpbmdT
dG9yZVRyYW5zYWN0aW9uOjphYm9ydCgpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIk1lbW9yeUJh
Y2tpbmdTdG9yZVRyYW5zYWN0aW9uOjphYm9ydCgpIik7CkBAIC02MiwxNCArNzYsMjggQEAgdm9p
ZCBNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbjo6YWJvcnQoKQogICAgICAgICBtX2JhY2tp
bmdTdG9yZS5zZXREYXRhYmFzZUluZm8oKm1fb3JpZ2luYWxEYXRhYmFzZUluZm8pOwogICAgIH0K
IAotICAgIG1faW5Qcm9ncmVzcyA9IGZhbHNlOworICAgIGZpbmlzaCgpOworCisgICAgZm9yIChh
dXRvIG9iamVjdFN0b3JlIDogbV92ZXJzaW9uQ2hhbmdlQWRkZWRPYmplY3RTdG9yZXMpCisgICAg
ICAgIG1fYmFja2luZ1N0b3JlLnJlbW92ZU9iamVjdFN0b3JlRm9yVmVyc2lvbkNoYW5nZUFib3J0
KCpvYmplY3RTdG9yZSk7CiB9CiAKIHZvaWQgTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb246
OmNvbW1pdCgpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIk1lbW9yeUJhY2tpbmdTdG9yZVRyYW5z
YWN0aW9uOjpjb21taXQoKSIpOwogCisgICAgZmluaXNoKCk7Cit9CisKK3ZvaWQgTWVtb3J5QmFj
a2luZ1N0b3JlVHJhbnNhY3Rpb246OmZpbmlzaCgpCit7CiAgICAgbV9pblByb2dyZXNzID0gZmFs
c2U7CisKKyAgICBpZiAoIWlzV3JpdGluZygpKQorICAgICAgICByZXR1cm47CisKKyAgICBmb3Ig
KGF1dG8gb2JqZWN0U3RvcmUgOiBtX29iamVjdFN0b3JlcykKKyAgICAgICAgb2JqZWN0U3RvcmUt
PndyaXRlVHJhbnNhY3Rpb25GaW5pc2hlZCgqdGhpcyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIElE
QlNlcnZlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL01lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24uaAppbmRl
eCBmNTM5MTYxLi5hYThhYTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5QmFja2luZ1N0b3JlVHJh
bnNhY3Rpb24uaApAQCAtMzAsMTEgKzMwLDEzIEBACiAKICNpbmNsdWRlICJJREJEYXRhYmFzZUlu
Zm8uaCIKICNpbmNsdWRlICJJREJUcmFuc2FjdGlvbkluZm8uaCIKKyNpbmNsdWRlIDx3dGYvSGFz
aFNldC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgSURCU2VydmVyIHsKIAog
Y2xhc3MgTWVtb3J5SURCQmFja2luZ1N0b3JlOworY2xhc3MgTWVtb3J5T2JqZWN0U3RvcmU7CiAK
IGNsYXNzIE1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uIHsKICAgICBmcmllbmQgc3RkOjp1
bmlxdWVfcHRyPE1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uPiBzdGQ6Om1ha2VfdW5pcXVl
PE1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uPihXZWJDb3JlOjpJREJTZXJ2ZXI6Ok1lbW9y
eUlEQkJhY2tpbmdTdG9yZSYsIGNvbnN0IFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uSW5mbyYpOwpA
QCAtNDQsMjEgKzQ2LDMwIEBAIHB1YmxpYzoKICAgICB+TWVtb3J5QmFja2luZ1N0b3JlVHJhbnNh
Y3Rpb24oKTsKIAogICAgIGJvb2wgaXNWZXJzaW9uQ2hhbmdlKCkgY29uc3QgeyByZXR1cm4gbV9p
bmZvLm1vZGUoKSA9PSBJbmRleGVkREI6OlRyYW5zYWN0aW9uTW9kZTo6VmVyc2lvbkNoYW5nZTsg
fQorICAgIGJvb2wgaXNXcml0aW5nKCkgY29uc3QgeyByZXR1cm4gbV9pbmZvLm1vZGUoKSAhPSBJ
bmRleGVkREI6OlRyYW5zYWN0aW9uTW9kZTo6UmVhZE9ubHk7IH0KIAogICAgIGNvbnN0IElEQkRh
dGFiYXNlSW5mbyYgb3JpZ2luYWxEYXRhYmFzZUluZm8oKSBjb25zdDsKIAorICAgIHZvaWQgYWRk
TmV3T2JqZWN0U3RvcmUoTWVtb3J5T2JqZWN0U3RvcmUmKTsKKwogICAgIHZvaWQgYWJvcnQoKTsK
ICAgICB2b2lkIGNvbW1pdCgpOwogCiBwcml2YXRlOgogICAgIE1lbW9yeUJhY2tpbmdTdG9yZVRy
YW5zYWN0aW9uKE1lbW9yeUlEQkJhY2tpbmdTdG9yZSYsIGNvbnN0IElEQlRyYW5zYWN0aW9uSW5m
byYpOwogCisgICAgdm9pZCBmaW5pc2goKTsKKwogICAgIE1lbW9yeUlEQkJhY2tpbmdTdG9yZSYg
bV9iYWNraW5nU3RvcmU7CiAgICAgSURCVHJhbnNhY3Rpb25JbmZvIG1faW5mbzsKIAogICAgIHN0
ZDo6dW5pcXVlX3B0cjxJREJEYXRhYmFzZUluZm8+IG1fb3JpZ2luYWxEYXRhYmFzZUluZm87CiAK
ICAgICBib29sIG1faW5Qcm9ncmVzcyB7IHRydWUgfTsKKworICAgIEhhc2hTZXQ8TWVtb3J5T2Jq
ZWN0U3RvcmUqPiBtX29iamVjdFN0b3JlczsKKyAgICBIYXNoU2V0PE1lbW9yeU9iamVjdFN0b3Jl
Kj4gbV92ZXJzaW9uQ2hhbmdlQWRkZWRPYmplY3RTdG9yZXM7CisKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIElEQlNlcnZlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmNwcAppbmRleCBhYWUw
NjdhLi5hOTA4YmEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmNwcApAQCAtMjks
NiArMjksNyBAQAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogCiAjaW5jbHVkZSAiTG9n
Z2luZy5oIgorI2luY2x1ZGUgIk1lbW9yeU9iamVjdFN0b3JlLmgiCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIG5hbWVzcGFjZSBJREJTZXJ2ZXIgewpAQCAtMTAyLDYgKzEwMywzOCBAQCBJREJFcnJv
ciBNZW1vcnlJREJCYWNraW5nU3RvcmU6OmNvbW1pdFRyYW5zYWN0aW9uKGNvbnN0IElEQlJlc291
cmNlSWRlbnRpZmllciYgdAogICAgIHJldHVybiBJREJFcnJvcigpOwogfQogCitJREJFcnJvciBN
ZW1vcnlJREJCYWNraW5nU3RvcmU6OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlc291cmNl
SWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJPYmplY3RTdG9yZUlu
Zm8mIGluZm8pCit7CisgICAgTE9HKEluZGV4ZWREQiwgIk1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6
Y3JlYXRlT2JqZWN0U3RvcmUiKTsKKworICAgIGlmIChtX2RhdGFiYXNlSW5mby0+aGFzT2JqZWN0
U3RvcmUoaW5mby5uYW1lKCkpKQorICAgICAgICByZXR1cm4gSURCRXJyb3IoSURCRXhjZXB0aW9u
Q29kZTo6Q29uc3RyYWludEVycm9yKTsKKworICAgIEFTU0VSVCghbV9vYmplY3RTdG9yZXMuY29u
dGFpbnMoaW5mby5pZGVudGlmaWVyKCkpKTsKKyAgICBhdXRvIG9iamVjdFN0b3JlID0gTWVtb3J5
T2JqZWN0U3RvcmU6OmNyZWF0ZShpbmZvKTsKKworICAgIG1fZGF0YWJhc2VJbmZvLT5hZGRFeGlz
dGluZ09iamVjdFN0b3JlKGluZm8pOworCisgICAgYXV0byByYXdUcmFuc2FjdGlvbiA9IG1fdHJh
bnNhY3Rpb25zLmdldCh0cmFuc2FjdGlvbklkZW50aWZpZXIpOworICAgIEFTU0VSVChyYXdUcmFu
c2FjdGlvbik7CisgICAgQVNTRVJUKHJhd1RyYW5zYWN0aW9uLT5pc1ZlcnNpb25DaGFuZ2UoKSk7
CisKKyAgICByYXdUcmFuc2FjdGlvbi0+YWRkTmV3T2JqZWN0U3RvcmUoKm9iamVjdFN0b3JlKTsK
KyAgICBtX29iamVjdFN0b3Jlcy5zZXQoaW5mby5pZGVudGlmaWVyKCksIFdURjo6bW92ZShvYmpl
Y3RTdG9yZSkpOworCisgICAgcmV0dXJuIElEQkVycm9yKCk7Cit9CisKK3ZvaWQgTWVtb3J5SURC
QmFja2luZ1N0b3JlOjpyZW1vdmVPYmplY3RTdG9yZUZvclZlcnNpb25DaGFuZ2VBYm9ydChNZW1v
cnlPYmplY3RTdG9yZSYgb2JqZWN0U3RvcmUpCit7CisgICAgTE9HKEluZGV4ZWREQiwgIk1lbW9y
eUlEQkJhY2tpbmdTdG9yZTo6cmVtb3ZlT2JqZWN0U3RvcmVGb3JWZXJzaW9uQ2hhbmdlQWJvcnQi
KTsKKworICAgIEFTU0VSVChtX29iamVjdFN0b3Jlcy5jb250YWlucyhvYmplY3RTdG9yZS5pbmZv
KCkuaWRlbnRpZmllcigpKSk7CisgICAgQVNTRVJUKG1fb2JqZWN0U3RvcmVzLmdldChvYmplY3RT
dG9yZS5pbmZvKCkuaWRlbnRpZmllcigpKSA9PSAmb2JqZWN0U3RvcmUpOworCisgICAgbV9vYmpl
Y3RTdG9yZXMucmVtb3ZlKG9iamVjdFN0b3JlLmluZm8oKS5pZGVudGlmaWVyKCkpOworfQorCiB9
IC8vIG5hbWVzcGFjZSBJREJTZXJ2ZXIKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJh
Y2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01l
bW9yeUlEQkJhY2tpbmdTdG9yZS5oCmluZGV4IDI1NDk5ZjQuLjI2OTU4ZmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5n
U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVt
b3J5SURCQmFja2luZ1N0b3JlLmgKQEAgLTM3LDYgKzM3LDggQEAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIG5hbWVzcGFjZSBJREJTZXJ2ZXIgewogCitjbGFzcyBNZW1vcnlPYmplY3RTdG9yZTsKKwog
Y2xhc3MgTWVtb3J5SURCQmFja2luZ1N0b3JlIDogcHVibGljIElEQkJhY2tpbmdTdG9yZSB7CiAg
ICAgZnJpZW5kIHN0ZDo6dW5pcXVlX3B0cjxNZW1vcnlJREJCYWNraW5nU3RvcmU+IHN0ZDo6bWFr
ZV91bmlxdWU8TWVtb3J5SURCQmFja2luZ1N0b3JlPihjb25zdCBXZWJDb3JlOjpJREJEYXRhYmFz
ZUlkZW50aWZpZXImKTsKIHB1YmxpYzoKQEAgLTUwLDYgKzUyLDkgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgSURCRXJyb3IgYmVnaW5UcmFuc2FjdGlvbihjb25zdCBJREJUcmFuc2FjdGlvbkluZm8m
KSBvdmVycmlkZSBmaW5hbDsKICAgICB2aXJ0dWFsIElEQkVycm9yIGFib3J0VHJhbnNhY3Rpb24o
Y29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIpIG92ZXJy
aWRlIGZpbmFsOwogICAgIHZpcnR1YWwgSURCRXJyb3IgY29tbWl0VHJhbnNhY3Rpb24oY29uc3Qg
SURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIpIG92ZXJyaWRlIGZp
bmFsOworICAgIHZpcnR1YWwgSURCRXJyb3IgY3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgSURCUmVz
b3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQk9iamVjdFN0
b3JlSW5mbyYpIG92ZXJyaWRlIGZpbmFsOworCisgICAgdm9pZCByZW1vdmVPYmplY3RTdG9yZUZv
clZlcnNpb25DaGFuZ2VBYm9ydChNZW1vcnlPYmplY3RTdG9yZSYpOwogCiBwcml2YXRlOgogICAg
IE1lbW9yeUlEQkJhY2tpbmdTdG9yZShjb25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXImKTsKQEAg
LTU4LDcgKzYzLDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SURCRGF0YWJhc2VJ
bmZvPiBtX2RhdGFiYXNlSW5mbzsKIAogICAgIEhhc2hNYXA8SURCUmVzb3VyY2VJZGVudGlmaWVy
LCBzdGQ6OnVuaXF1ZV9wdHI8TWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24+PiBtX3RyYW5z
YWN0aW9uczsKLQorICAgIEhhc2hNYXA8dWludDY0X3QsIHN0ZDo6dW5pcXVlX3B0cjxNZW1vcnlP
YmplY3RTdG9yZT4+IG1fb2JqZWN0U3RvcmVzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSURCU2Vy
dmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
TWVtb3J5T2JqZWN0U3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL01lbW9yeU9iamVjdFN0b3JlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi5kZmFjNzgwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3JlLmNwcApAQCAtMCwwICsxLDcwIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIk1lbW9yeU9iamVjdFN0b3JlLmgiCisKKyNpZiBFTkFCTEUo
SU5ERVhFRF9EQVRBQkFTRSkKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworbmFtZXNwYWNlIElEQlNlcnZlciB7CisKK3N0ZDo6dW5pcXVlX3B0cjxNZW1vcnlP
YmplY3RTdG9yZT4gTWVtb3J5T2JqZWN0U3RvcmU6OmNyZWF0ZShjb25zdCBJREJPYmplY3RTdG9y
ZUluZm8mIGluZm8pCit7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TWVtb3J5T2JqZWN0
U3RvcmU+KGluZm8pOworfQorCitNZW1vcnlPYmplY3RTdG9yZTo6TWVtb3J5T2JqZWN0U3RvcmUo
Y29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJiBpbmZvKQorICAgIDogbV9pbmZvKGluZm8pCit7Cit9
CisKK01lbW9yeU9iamVjdFN0b3JlOjp+TWVtb3J5T2JqZWN0U3RvcmUoKQoreworICAgIEFTU0VS
VCghbV93cml0ZVRyYW5zYWN0aW9uKTsKK30KKwordm9pZCBNZW1vcnlPYmplY3RTdG9yZTo6d3Jp
dGVUcmFuc2FjdGlvblN0YXJ0ZWQoTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24mIHRyYW5z
YWN0aW9uKQoreworICAgIExPRyhJbmRleGVkREIsICJNZW1vcnlPYmplY3RTdG9yZTo6d3JpdGVU
cmFuc2FjdGlvblN0YXJ0ZWQiKTsKKworICAgIEFTU0VSVCghbV93cml0ZVRyYW5zYWN0aW9uKTsK
KyAgICBtX3dyaXRlVHJhbnNhY3Rpb24gPSAmdHJhbnNhY3Rpb247Cit9CisKK3ZvaWQgTWVtb3J5
T2JqZWN0U3RvcmU6OndyaXRlVHJhbnNhY3Rpb25GaW5pc2hlZChNZW1vcnlCYWNraW5nU3RvcmVU
cmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24pCit7CisgICAgTE9HKEluZGV4ZWREQiwgIk1lbW9yeU9i
amVjdFN0b3JlOjp3cml0ZVRyYW5zYWN0aW9uRmluaXNoZWQiKTsKKworICAgIEFTU0VSVF9VTlVT
RUQodHJhbnNhY3Rpb24sIG1fd3JpdGVUcmFuc2FjdGlvbiA9PSAmdHJhbnNhY3Rpb24pOworICAg
IG1fd3JpdGVUcmFuc2FjdGlvbiA9IG51bGxwdHI7Cit9CisKK30gLy8gbmFtZXNwYWNlIElEQlNl
cnZlcgorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKElOREVYRURf
REFUQUJBU0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9NZW1vcnlPYmplY3RTdG9yZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLmYzZjM0NjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuaApAQCAtMCwwICsxLDYyIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBN
ZW1vcnlPYmplY3RTdG9yZV9oCisjZGVmaW5lIE1lbW9yeU9iamVjdFN0b3JlX2gKKworI2lmIEVO
QUJMRShJTkRFWEVEX0RBVEFCQVNFKQorCisjaW5jbHVkZSAiSURCT2JqZWN0U3RvcmVJbmZvLmgi
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBJREJTZXJ2ZXIgeworCitjbGFzcyBN
ZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbjsKKworY2xhc3MgTWVtb3J5T2JqZWN0U3RvcmUg
eworICAgIGZyaWVuZCBzdGQ6OnVuaXF1ZV9wdHI8TWVtb3J5T2JqZWN0U3RvcmU+IHN0ZDo6bWFr
ZV91bmlxdWU8TWVtb3J5T2JqZWN0U3RvcmU+KGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYpOwor
cHVibGljOgorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TWVtb3J5T2JqZWN0U3RvcmU+IGNy
ZWF0ZShjb25zdCBJREJPYmplY3RTdG9yZUluZm8mKTsKKworICAgIH5NZW1vcnlPYmplY3RTdG9y
ZSgpOworCisgICAgdm9pZCB3cml0ZVRyYW5zYWN0aW9uU3RhcnRlZChNZW1vcnlCYWNraW5nU3Rv
cmVUcmFuc2FjdGlvbiYpOworICAgIHZvaWQgd3JpdGVUcmFuc2FjdGlvbkZpbmlzaGVkKE1lbW9y
eUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uJik7CisKKyAgICBjb25zdCBJREJPYmplY3RTdG9yZUlu
Zm8mIGluZm8oKSBjb25zdCB7IHJldHVybiBtX2luZm87IH0KKworcHJpdmF0ZToKKyAgICBNZW1v
cnlPYmplY3RTdG9yZShjb25zdCBJREJPYmplY3RTdG9yZUluZm8mKTsKKworICAgIElEQk9iamVj
dFN0b3JlSW5mbyBtX2luZm87CisKKyAgICBNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbiog
bV93cml0ZVRyYW5zYWN0aW9uIHsgbnVsbHB0ciB9OworfTsKKworfSAvLyBuYW1lc3BhY2UgSURC
U2VydmVyCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5ERVhF
RF9EQVRBQkFTRSkKKyNlbmRpZiAvLyBNZW1vcnlPYmplY3RTdG9yZV9oCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRh
dGFiYXNlLmNwcAppbmRleCAzYmI2YTgxLi4wNTRhNzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFz
ZS5jcHAKQEAgLTIyMiw2ICsyMjIsOCBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjcmVhdGVP
YmplY3RTdG9yZShVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2FjdAogICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgTE9HKEluZGV4ZWREQiwgIihtYWluKSBVbmlxdWVJ
REJEYXRhYmFzZTo6Y3JlYXRlT2JqZWN0U3RvcmUiKTsKIAorICAgIG1fYmFja2luZ1N0b3JlLT5j
cmVhdGVPYmplY3RTdG9yZSh0cmFuc2FjdGlvbi5pbmZvKCkuaWRlbnRpZmllcigpLCBpbmZvKTsK
KwogICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBzdG9yZUNhbGxiYWNrKGNhbGxiYWNrKTsKICAg
ICBtX3NlcnZlci5wb3N0RGF0YWJhc2VUYXNrKGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygqdGhpcywg
JlVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3JtQ3JlYXRlT2JqZWN0U3RvcmUsIGNhbGxiYWNrSUQs
IHRyYW5zYWN0aW9uLmluZm8oKS5pZGVudGlmaWVyKCksIGluZm8pKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJFcnJvci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCRXJyb3IuY3BwCmluZGV4
IDhhODc1YTcuLjIyODhjZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NoYXJlZC9JREJFcnJvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2hhcmVkL0lEQkVycm9yLmNwcApAQCAtMzksNiArMzksMTAgQEAgc3RhdGljIGNv
bnN0IFN0cmluZyYgaWRiRXJyb3JOYW1lKElEQkV4Y2VwdGlvbkNvZGUgY29kZSkKICAgICAgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gZW50cnkgPSBBU0NJSUxpdGVyYWwoIlVua25v
d25FcnJvciIpOwogICAgICAgICByZXR1cm4gZW50cnk7CiAgICAgfQorICAgIGNhc2UgSURCRXhj
ZXB0aW9uQ29kZTo6Q29uc3RyYWludEVycm9yOiB7CisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxTdHJpbmc+IGVudHJ5ID0gQVNDSUlMaXRlcmFsKCJDb25zdHJhaW50RXJyb3IiKTsKKyAg
ICAgICAgcmV0dXJuIGVudHJ5OworICAgIH0KICAgICBjYXNlIElEQkV4Y2VwdGlvbkNvZGU6OlZl
cnNpb25FcnJvcjogewogICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBlbnRy
eSA9IEFTQ0lJTGl0ZXJhbCgiVmVyc2lvbkVycm9yIik7CiAgICAgICAgIHJldHVybiBlbnRyeTsK
QEAgLTYxLDYgKzY1LDEwIEBAIHN0YXRpYyBjb25zdCBTdHJpbmcmIGlkYkVycm9yRGVzY3JpcHRp
b24oSURCRXhjZXB0aW9uQ29kZSBjb2RlKQogICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
U3RyaW5nPiBlbnRyeSA9IEFTQ0lJTGl0ZXJhbCgiT3BlcmF0aW9uIGZhaWxlZCBmb3IgcmVhc29u
cyB1bnJlbGF0ZWQgdG8gdGhlIGRhdGFiYXNlIGl0c2VsZiBhbmQgbm90IGNvdmVyZWQgYnkgYW55
IG90aGVyIGVycm9ycy4iKTsKICAgICAgICAgcmV0dXJuIGVudHJ5LmdldCgpOwogICAgIH0KKyAg
ICBjYXNlIElEQkV4Y2VwdGlvbkNvZGU6OkNvbnN0cmFpbnRFcnJvcjogeworICAgICAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBlbnRyeSA9IEFTQ0lJTGl0ZXJhbCgiTXV0YXRpb24g
b3BlcmF0aW9uIGluIHRoZSB0cmFuc2FjdGlvbiBmYWlsZWQgYmVjYXVzZSBhIGNvbnN0cmFpbnQg
d2FzIG5vdCBzYXRpc2ZpZWQuIik7CisgICAgICAgIHJldHVybiBlbnRyeS5nZXQoKTsKKyAgICB9
CiAgICAgY2FzZSBJREJFeGNlcHRpb25Db2RlOjpWZXJzaW9uRXJyb3I6IHsKICAgICAgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gZW50cnkgPSBBU0NJSUxpdGVyYWwoIkFuIGF0dGVt
cHQgd2FzIG1hZGUgdG8gb3BlbiBhIGRhdGFiYXNlIHVzaW5nIGEgbG93ZXIgdmVyc2lvbiB0aGFu
IHRoZSBleGlzdGluZyB2ZXJzaW9uLiIpOwogICAgICAgICByZXR1cm4gZW50cnkuZ2V0KCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCRXJy
b3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJFcnJvci5o
CmluZGV4IDZlNzc1ZjguLmI5MTk2MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJFcnJvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJFcnJvci5oCkBAIC0zNSw2ICszNSw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIGVudW0gY2xhc3MgSURCRXhjZXB0aW9uQ29kZSB7CiAgICAgTm9uZSA9IDAs
CiAgICAgVW5rbm93biwKKyAgICBDb25zdHJhaW50RXJyb3IsCiAgICAgVmVyc2lvbkVycm9yLAog
CiAgICAgLy8gSW5kZXhlZCBEQiBleGlzdGluZyBleGNlcHRpb24gY29kZXMgd2l0aCBJREItc3Bl
Y2lmaWMgZXJyb3IgbWVzc2FnZXM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggODkzMmY5Ny4uOTAwYjE1NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjA1MSw2
ICsyMDUxLDggQEAKIAkJNTE3NDFEMTEwQjA3MjU5QTAwRUQ0NDJDIC8qIEhpc3RvcnlJdGVtLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTc0MUQwRDBC
MDcyNTlBMDBFRDQ0MkMgLyogSGlzdG9yeUl0ZW0uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTc0MUQxMjBCMDcyNTlBMDBFRDQ0MkMgLyogSGlz
dG9yeUl0ZW0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTE3NDFEMEUwQjA3MjU5QTAwRUQ0NDJDIC8qIEhpc3RvcnlJdGVtLmNwcCAqLzsgfTsKIAkJ
NTE3NEUyMEExMEExRjQ0RjAwRjk1RTZGIC8qIFBvcFN0YXRlRXZlbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNzRFMjA4MTBBMUY0NEYwMEY5NUU2
RiAvKiBQb3BTdGF0ZUV2ZW50LmggKi87IH07CisJCTUxNzcxREZFMUJEQjQ4NTAwMENBRThFNCAv
KiBNZW1vcnlPYmplY3RTdG9yZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MTc3MURGQzFCREI0NzU2MDBDQUU4RTQgLyogTWVtb3J5T2JqZWN0U3Rv
cmUuY3BwICovOyB9OworCQk1MTc3MURGRjFCREI0ODUwMDBDQUU4RTQgLyogTWVtb3J5T2JqZWN0
U3RvcmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
NzcxREZEMUJEQjQ3NTYwMENBRThFNCAvKiBNZW1vcnlPYmplY3RTdG9yZS5oICovOyB9OwogCQk1
MTc5Q0UyNDE5NUM4MTQyMDAxOUMxOTggLyogR2FtZXBhZFByb3ZpZGVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTc5Q0UyMzE5NUM4MTQyMDAxOUMx
OTggLyogR2FtZXBhZFByb3ZpZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJNTE3OUNFMjYxOTVDODIxRDAwMTlDMTk4IC8qIEdhbWVwYWRQcm92
aWRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MTc5Q0UyNTE5NUM4MjFEMDAxOUMxOTggLyogR2FtZXBhZFByb3ZpZGVyLmNwcCAqLzsgfTsKIAkJ
NTE3OUNFMkExOTVDOTE4NjAwMTlDMTk4IC8qIEdhbWVwYWRQcm92aWRlckNsaWVudC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3OUNFMjkxOTVDOTE4
NjAwMTlDMTk4IC8qIEdhbWVwYWRQcm92aWRlckNsaWVudC5oICovOyB9OwpAQCAtOTQ3Miw2ICs5
NDc0LDggQEAKIAkJNTE3NDFEMEUwQjA3MjU5QTAwRUQ0NDJDIC8qIEhpc3RvcnlJdGVtLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIaXN0b3J5SXRlbS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNzRFMjA4MTBBMUY0NEYwMEY5NUU2RiAvKiBQ
b3BTdGF0ZUV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBvcFN0YXRl
RXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE3NEUyMEIxMEExRjQ5QTAw
Rjk1RTZGIC8qIFBvcFN0YXRlRXZlbnQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFBvcFN0
YXRlRXZlbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTc3MURGQzFCREI0
NzU2MDBDQUU4RTQgLyogTWVtb3J5T2JqZWN0U3RvcmUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gTWVtb3J5T2JqZWN0U3RvcmUuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk1MTc3MURGRDFCREI0NzU2MDBDQUU4RTQgLyogTWVtb3J5T2JqZWN0U3Rv
cmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVtb3J5T2JqZWN0U3RvcmUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE3OUNFMjMxOTVDODE0MjAwMTlDMTk4
IC8qIEdhbWVwYWRQcm92aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBH
YW1lcGFkUHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE3OUNFMjUx
OTVDODIxRDAwMTlDMTk4IC8qIEdhbWVwYWRQcm92aWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBHYW1lcGFkUHJvdmlkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1MTc5Q0UyOTE5NUM5MTg2MDAxOUMxOTggLyogR2FtZXBhZFByb3ZpZGVy
Q2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdhbWVwYWRQcm92aWRl
ckNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTY4NDQsNiArMTY4NDgs
OCBAQAogCQkJCTUxRTFCQUMxMUJEODA2NDcwMDU1RDgxRiAvKiBNZW1vcnlCYWNraW5nU3RvcmVU
cmFuc2FjdGlvbi5oICovLAogCQkJCTUxQkE0QUM4MUJCQzVCOUUwMERGM0Q2RCAvKiBNZW1vcnlJ
REJCYWNraW5nU3RvcmUuY3BwICovLAogCQkJCTUxQkE0QUM5MUJCQzVCOUUwMERGM0Q2RCAvKiBN
ZW1vcnlJREJCYWNraW5nU3RvcmUuaCAqLywKKwkJCQk1MTc3MURGQzFCREI0NzU2MDBDQUU4RTQg
LyogTWVtb3J5T2JqZWN0U3RvcmUuY3BwICovLAorCQkJCTUxNzcxREZEMUJEQjQ3NTYwMENBRThF
NCAvKiBNZW1vcnlPYmplY3RTdG9yZS5oICovLAogCQkJCTUxODg2NERFMUJCQUYzMEYwMEU1NDBD
OSAvKiBVbmlxdWVJREJEYXRhYmFzZS5jcHAgKi8sCiAJCQkJNTE4ODY0REYxQkJBRjMwRjAwRTU0
MEM5IC8qIFVuaXF1ZUlEQkRhdGFiYXNlLmggKi8sCiAJCQkJNTE5OEY3QTIxQkJEQUEyOTAwRTJD
QzVGIC8qIFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbi5jcHAgKi8sCkBAIC0yNDg5OSw2ICsy
NDkwNSw3IEBACiAJCQkJODUwMzFCM0UwQTQ0RUZDNzAwRjk5MkUwIC8qIERhdGFUcmFuc2Zlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNEI4QUY0QUEwQjFDRTAyQjAwNjg3NjkwIC8qIERhdGFUcmFu
c2ZlckFjY2Vzc1BvbGljeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODFBQzU5OTkxMzE2MzZFNjAw
MDlBN0UwIC8qIERhdGFUcmFuc2Zlckl0ZW0uaCBpbiBIZWFkZXJzICovLAorCQkJCTUxNzcxREZG
MUJEQjQ4NTAwMENBRThFNCAvKiBNZW1vcnlPYmplY3RTdG9yZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJODFBQzU5OUExMzE2MzZFNjAwMDlBN0UwIC8qIERhdGFUcmFuc2Zlckl0ZW1MaXN0LmggaW4g
SGVhZGVycyAqLywKIAkJCQlFNEEwMDc4MzFCODIwRUM4MDAyQzVBNkUgLyogRGF0YVVSTERlY29k
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0QTAwNzgzMUI4MjBFQzgwMDJDNUE2RSAvKiBEYXRh
VVJMRGVjb2Rlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yODUzOSw2ICsyODU0Niw3IEBACiAJCQkJ
QkNDMDY1N0QwRjNDRTFCNzAwQ0QyRDg3IC8qIENsaWVudFJlY3QuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQkNDMDY1ODAwRjNDRTFCNzAwQ0QyRDg3IC8qIENsaWVudFJlY3RMaXN0LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTg1MDMxQjNGMEE0NEVGQzcwMEY5OTJFMCAvKiBDbGlwYm9hcmRFdmVu
dC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MTc3MURGRTFCREI0ODUwMDBDQUU4RTQgLyogTWVt
b3J5T2JqZWN0U3RvcmUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTgwMzcxNjExQTY2RjAwQTAw
QkFGNTE5IC8qIENsaXBSZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNERUE3NjM1MTQ2MEI3
MUEwMDhCMzFGMSAvKiBDbG9jay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDREVBNzYzNDE0NjBC
NTZGMDA4QjMxRjEgLyogQ2xvY2tHZW5lcmljLmNwcCBpbiBTb3VyY2VzICovLAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264016</attachid>
            <date>2015-10-25 11:27:00 -0700</date>
            <delta_ts>2015-10-26 10:18:11 -0700</delta_ts>
            <desc>Patch v4 - Attempt to placate busted gcc</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>23426</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggOThmM2VhNC4uZGM4Mzg3ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTkwMiw2ICs5MDIsNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlck9wZXJhdGlvbi5jcHAKICAgICBNb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24uY3BwCiAgICAgTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5jcHAKKyAgICBNb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuY3BwCiAgICAgTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcAogICAgIE1vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24uY3BwCiAgICAgTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
aW5kZXggOWMzOWNiOC4uZDYwZjMzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDE1
LTEwLTI1ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBNb2Rl
cm4gSURCOiBCYWNraW5nIHN0b3JlIG9iamVjdFN0b3JlcyAocGx1bWJpbmcgZm9yIGIvMTUwNDY4
KS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDU0
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5l
dyB0ZXN0cyAoTm8gY2hhbmdlIGluIGJlaGF2aW9yLCBwbHVtYmluZyBmb3IgZnV0dXJlIHRlc3Rh
YmlsaXR5KQorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL0lEQkJhY2tpbmdTdG9yZS5oOgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL01lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6TWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb246OmFkZE5ld09iamVj
dFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5QmFja2luZ1N0b3Jl
VHJhbnNhY3Rpb246OmFib3J0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5
QmFja2luZ1N0b3JlVHJhbnNhY3Rpb246OmNvbW1pdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJT
ZXJ2ZXI6Ok1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uOjpmaW5pc2gpOgorICAgICAgICAq
IE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbi5o
OgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2Fj
dGlvbjo6aXNXcml0aW5nKToKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9N
ZW1vcnlJREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpN
ZW1vcnlJREJCYWNraW5nU3RvcmU6OmNyZWF0ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQlNlcnZlcjo6TWVtb3J5SURCQmFja2luZ1N0b3JlOjpyZW1vdmVPYmplY3RTdG9yZUZv
clZlcnNpb25DaGFuZ2VBYm9ydCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L01lbW9yeUlEQkJhY2tpbmdTdG9yZS5oOgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL01lbW9yeU9iamVjdFN0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZl
cjo6TWVtb3J5T2JqZWN0U3RvcmU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2
ZXI6Ok1lbW9yeU9iamVjdFN0b3JlOjpNZW1vcnlPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJD
b3JlOjpJREJTZXJ2ZXI6Ok1lbW9yeU9iamVjdFN0b3JlOjp+TWVtb3J5T2JqZWN0U3RvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlPYmplY3RTdG9yZTo6d3JpdGVUcmFu
c2FjdGlvblN0YXJ0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlPYmpl
Y3RTdG9yZTo6d3JpdGVUcmFuc2FjdGlvbkZpbmlzaGVkKToKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuaDoKKyAgICAgICAgKFdlYkNvcmU6OklE
QlNlcnZlcjo6TWVtb3J5T2JqZWN0U3RvcmU6OmluZm8pOgorCisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OmNyZWF0ZU9iamVjdFN0b3JlKToKKworICAg
ICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJFcnJvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjppZGJFcnJvck5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6aWRiRXJyb3JEZXNjcmlw
dGlvbik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkVycm9yLmg6CisK
IDIwMTUtMTAtMjQgIEd3YW5nIFlvb24gSHdhbmcgIDx5b29uQGlnYWxpYS5jb20+CiAKICAgICAg
ICAgW1RleE1hcF0gQ2xlYW4gdXAgQml0bWFwVGV4dHVyZSBhbmQgQml0bWFwVGV4dHVyZUdMLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkJh
Y2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lE
QkJhY2tpbmdTdG9yZS5oCmluZGV4IDZmZjFlYzEuLjdlM2U1YzAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJCYWNraW5nU3RvcmUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCQmFja2luZ1N0b3Jl
LmgKQEAgLTMzLDYgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBJREJP
YmplY3RTdG9yZUluZm87CiBjbGFzcyBJREJSZXNvdXJjZUlkZW50aWZpZXI7CiBjbGFzcyBJREJU
cmFuc2FjdGlvbkluZm87CiAKQEAgLTQ3LDYgKzQ4LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwg
SURCRXJyb3IgYmVnaW5UcmFuc2FjdGlvbihjb25zdCBJREJUcmFuc2FjdGlvbkluZm8mKSA9IDA7
CiAgICAgdmlydHVhbCBJREJFcnJvciBhYm9ydFRyYW5zYWN0aW9uKGNvbnN0IElEQlJlc291cmNl
SWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyKSA9IDA7CiAgICAgdmlydHVhbCBJREJF
cnJvciBjb21taXRUcmFuc2FjdGlvbihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5z
YWN0aW9uSWRlbnRpZmllcikgPSAwOworCisgICAgdmlydHVhbCBJREJFcnJvciBjcmVhdGVPYmpl
Y3RTdG9yZShjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmll
ciwgY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJikgPSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
SURCU2VydmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uLmNw
cAppbmRleCBlYzJhM2U4Li41YzQ0NzdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlCYWNraW5n
U3RvcmVUcmFuc2FjdGlvbi5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJJbmRleGVk
REIuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTWVtb3J5SURCQmFja2luZ1N0
b3JlLmgiCisjaW5jbHVkZSAiTWVtb3J5T2JqZWN0U3RvcmUuaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogbmFtZXNwYWNlIElEQlNlcnZlciB7CkBAIC01Myw2ICs1NCwxOSBAQCBNZW1vcnlCYWNr
aW5nU3RvcmVUcmFuc2FjdGlvbjo6fk1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCkKICAg
ICBBU1NFUlQoIW1faW5Qcm9ncmVzcyk7CiB9CiAKK3ZvaWQgTWVtb3J5QmFja2luZ1N0b3JlVHJh
bnNhY3Rpb246OmFkZE5ld09iamVjdFN0b3JlKE1lbW9yeU9iamVjdFN0b3JlJiBvYmplY3RTdG9y
ZSkKK3sKKyAgICBMT0coSW5kZXhlZERCLCAiTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb246
OmFkZE5ld09iamVjdFN0b3JlKCkiKTsKKworICAgIEFTU0VSVChpc1ZlcnNpb25DaGFuZ2UoKSk7
CisKKyAgICBBU1NFUlQoIW1fb2JqZWN0U3RvcmVzLmNvbnRhaW5zKCZvYmplY3RTdG9yZSkpOwor
ICAgIG1fb2JqZWN0U3RvcmVzLmFkZCgmb2JqZWN0U3RvcmUpOworICAgIG1fdmVyc2lvbkNoYW5n
ZUFkZGVkT2JqZWN0U3RvcmVzLmFkZCgmb2JqZWN0U3RvcmUpOworCisgICAgb2JqZWN0U3RvcmUu
d3JpdGVUcmFuc2FjdGlvblN0YXJ0ZWQoKnRoaXMpOworfQorCiB2b2lkIE1lbW9yeUJhY2tpbmdT
dG9yZVRyYW5zYWN0aW9uOjphYm9ydCgpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIk1lbW9yeUJh
Y2tpbmdTdG9yZVRyYW5zYWN0aW9uOjphYm9ydCgpIik7CkBAIC02MiwxNCArNzYsMjggQEAgdm9p
ZCBNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbjo6YWJvcnQoKQogICAgICAgICBtX2JhY2tp
bmdTdG9yZS5zZXREYXRhYmFzZUluZm8oKm1fb3JpZ2luYWxEYXRhYmFzZUluZm8pOwogICAgIH0K
IAotICAgIG1faW5Qcm9ncmVzcyA9IGZhbHNlOworICAgIGZpbmlzaCgpOworCisgICAgZm9yIChh
dXRvIG9iamVjdFN0b3JlIDogbV92ZXJzaW9uQ2hhbmdlQWRkZWRPYmplY3RTdG9yZXMpCisgICAg
ICAgIG1fYmFja2luZ1N0b3JlLnJlbW92ZU9iamVjdFN0b3JlRm9yVmVyc2lvbkNoYW5nZUFib3J0
KCpvYmplY3RTdG9yZSk7CiB9CiAKIHZvaWQgTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb246
OmNvbW1pdCgpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIk1lbW9yeUJhY2tpbmdTdG9yZVRyYW5z
YWN0aW9uOjpjb21taXQoKSIpOwogCisgICAgZmluaXNoKCk7Cit9CisKK3ZvaWQgTWVtb3J5QmFj
a2luZ1N0b3JlVHJhbnNhY3Rpb246OmZpbmlzaCgpCit7CiAgICAgbV9pblByb2dyZXNzID0gZmFs
c2U7CisKKyAgICBpZiAoIWlzV3JpdGluZygpKQorICAgICAgICByZXR1cm47CisKKyAgICBmb3Ig
KGF1dG8gb2JqZWN0U3RvcmUgOiBtX29iamVjdFN0b3JlcykKKyAgICAgICAgb2JqZWN0U3RvcmUt
PndyaXRlVHJhbnNhY3Rpb25GaW5pc2hlZCgqdGhpcyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIElE
QlNlcnZlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL01lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24uaAppbmRl
eCBmNTM5MTYxLi5hYThhYTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5QmFja2luZ1N0b3JlVHJh
bnNhY3Rpb24uaApAQCAtMzAsMTEgKzMwLDEzIEBACiAKICNpbmNsdWRlICJJREJEYXRhYmFzZUlu
Zm8uaCIKICNpbmNsdWRlICJJREJUcmFuc2FjdGlvbkluZm8uaCIKKyNpbmNsdWRlIDx3dGYvSGFz
aFNldC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgSURCU2VydmVyIHsKIAog
Y2xhc3MgTWVtb3J5SURCQmFja2luZ1N0b3JlOworY2xhc3MgTWVtb3J5T2JqZWN0U3RvcmU7CiAK
IGNsYXNzIE1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uIHsKICAgICBmcmllbmQgc3RkOjp1
bmlxdWVfcHRyPE1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uPiBzdGQ6Om1ha2VfdW5pcXVl
PE1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uPihXZWJDb3JlOjpJREJTZXJ2ZXI6Ok1lbW9y
eUlEQkJhY2tpbmdTdG9yZSYsIGNvbnN0IFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uSW5mbyYpOwpA
QCAtNDQsMjEgKzQ2LDMwIEBAIHB1YmxpYzoKICAgICB+TWVtb3J5QmFja2luZ1N0b3JlVHJhbnNh
Y3Rpb24oKTsKIAogICAgIGJvb2wgaXNWZXJzaW9uQ2hhbmdlKCkgY29uc3QgeyByZXR1cm4gbV9p
bmZvLm1vZGUoKSA9PSBJbmRleGVkREI6OlRyYW5zYWN0aW9uTW9kZTo6VmVyc2lvbkNoYW5nZTsg
fQorICAgIGJvb2wgaXNXcml0aW5nKCkgY29uc3QgeyByZXR1cm4gbV9pbmZvLm1vZGUoKSAhPSBJ
bmRleGVkREI6OlRyYW5zYWN0aW9uTW9kZTo6UmVhZE9ubHk7IH0KIAogICAgIGNvbnN0IElEQkRh
dGFiYXNlSW5mbyYgb3JpZ2luYWxEYXRhYmFzZUluZm8oKSBjb25zdDsKIAorICAgIHZvaWQgYWRk
TmV3T2JqZWN0U3RvcmUoTWVtb3J5T2JqZWN0U3RvcmUmKTsKKwogICAgIHZvaWQgYWJvcnQoKTsK
ICAgICB2b2lkIGNvbW1pdCgpOwogCiBwcml2YXRlOgogICAgIE1lbW9yeUJhY2tpbmdTdG9yZVRy
YW5zYWN0aW9uKE1lbW9yeUlEQkJhY2tpbmdTdG9yZSYsIGNvbnN0IElEQlRyYW5zYWN0aW9uSW5m
byYpOwogCisgICAgdm9pZCBmaW5pc2goKTsKKwogICAgIE1lbW9yeUlEQkJhY2tpbmdTdG9yZSYg
bV9iYWNraW5nU3RvcmU7CiAgICAgSURCVHJhbnNhY3Rpb25JbmZvIG1faW5mbzsKIAogICAgIHN0
ZDo6dW5pcXVlX3B0cjxJREJEYXRhYmFzZUluZm8+IG1fb3JpZ2luYWxEYXRhYmFzZUluZm87CiAK
ICAgICBib29sIG1faW5Qcm9ncmVzcyB7IHRydWUgfTsKKworICAgIEhhc2hTZXQ8TWVtb3J5T2Jq
ZWN0U3RvcmUqPiBtX29iamVjdFN0b3JlczsKKyAgICBIYXNoU2V0PE1lbW9yeU9iamVjdFN0b3Jl
Kj4gbV92ZXJzaW9uQ2hhbmdlQWRkZWRPYmplY3RTdG9yZXM7CisKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIElEQlNlcnZlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmNwcAppbmRleCBhYWUw
NjdhLi5hOTA4YmEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmNwcApAQCAtMjks
NiArMjksNyBAQAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogCiAjaW5jbHVkZSAiTG9n
Z2luZy5oIgorI2luY2x1ZGUgIk1lbW9yeU9iamVjdFN0b3JlLmgiCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIG5hbWVzcGFjZSBJREJTZXJ2ZXIgewpAQCAtMTAyLDYgKzEwMywzOCBAQCBJREJFcnJv
ciBNZW1vcnlJREJCYWNraW5nU3RvcmU6OmNvbW1pdFRyYW5zYWN0aW9uKGNvbnN0IElEQlJlc291
cmNlSWRlbnRpZmllciYgdAogICAgIHJldHVybiBJREJFcnJvcigpOwogfQogCitJREJFcnJvciBN
ZW1vcnlJREJCYWNraW5nU3RvcmU6OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlc291cmNl
SWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJPYmplY3RTdG9yZUlu
Zm8mIGluZm8pCit7CisgICAgTE9HKEluZGV4ZWREQiwgIk1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6
Y3JlYXRlT2JqZWN0U3RvcmUiKTsKKworICAgIGlmIChtX2RhdGFiYXNlSW5mby0+aGFzT2JqZWN0
U3RvcmUoaW5mby5uYW1lKCkpKQorICAgICAgICByZXR1cm4gSURCRXJyb3IoSURCRXhjZXB0aW9u
Q29kZTo6Q29uc3RyYWludEVycm9yKTsKKworICAgIEFTU0VSVCghbV9vYmplY3RTdG9yZXMuY29u
dGFpbnMoaW5mby5pZGVudGlmaWVyKCkpKTsKKyAgICBhdXRvIG9iamVjdFN0b3JlID0gTWVtb3J5
T2JqZWN0U3RvcmU6OmNyZWF0ZShpbmZvKTsKKworICAgIG1fZGF0YWJhc2VJbmZvLT5hZGRFeGlz
dGluZ09iamVjdFN0b3JlKGluZm8pOworCisgICAgYXV0byByYXdUcmFuc2FjdGlvbiA9IG1fdHJh
bnNhY3Rpb25zLmdldCh0cmFuc2FjdGlvbklkZW50aWZpZXIpOworICAgIEFTU0VSVChyYXdUcmFu
c2FjdGlvbik7CisgICAgQVNTRVJUKHJhd1RyYW5zYWN0aW9uLT5pc1ZlcnNpb25DaGFuZ2UoKSk7
CisKKyAgICByYXdUcmFuc2FjdGlvbi0+YWRkTmV3T2JqZWN0U3RvcmUoKm9iamVjdFN0b3JlKTsK
KyAgICBtX29iamVjdFN0b3Jlcy5zZXQoaW5mby5pZGVudGlmaWVyKCksIFdURjo6bW92ZShvYmpl
Y3RTdG9yZSkpOworCisgICAgcmV0dXJuIElEQkVycm9yKCk7Cit9CisKK3ZvaWQgTWVtb3J5SURC
QmFja2luZ1N0b3JlOjpyZW1vdmVPYmplY3RTdG9yZUZvclZlcnNpb25DaGFuZ2VBYm9ydChNZW1v
cnlPYmplY3RTdG9yZSYgb2JqZWN0U3RvcmUpCit7CisgICAgTE9HKEluZGV4ZWREQiwgIk1lbW9y
eUlEQkJhY2tpbmdTdG9yZTo6cmVtb3ZlT2JqZWN0U3RvcmVGb3JWZXJzaW9uQ2hhbmdlQWJvcnQi
KTsKKworICAgIEFTU0VSVChtX29iamVjdFN0b3Jlcy5jb250YWlucyhvYmplY3RTdG9yZS5pbmZv
KCkuaWRlbnRpZmllcigpKSk7CisgICAgQVNTRVJUKG1fb2JqZWN0U3RvcmVzLmdldChvYmplY3RT
dG9yZS5pbmZvKCkuaWRlbnRpZmllcigpKSA9PSAmb2JqZWN0U3RvcmUpOworCisgICAgbV9vYmpl
Y3RTdG9yZXMucmVtb3ZlKG9iamVjdFN0b3JlLmluZm8oKS5pZGVudGlmaWVyKCkpOworfQorCiB9
IC8vIG5hbWVzcGFjZSBJREJTZXJ2ZXIKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJh
Y2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01l
bW9yeUlEQkJhY2tpbmdTdG9yZS5oCmluZGV4IDI1NDk5ZjQuLjI2OTU4ZmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5n
U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVt
b3J5SURCQmFja2luZ1N0b3JlLmgKQEAgLTM3LDYgKzM3LDggQEAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIG5hbWVzcGFjZSBJREJTZXJ2ZXIgewogCitjbGFzcyBNZW1vcnlPYmplY3RTdG9yZTsKKwog
Y2xhc3MgTWVtb3J5SURCQmFja2luZ1N0b3JlIDogcHVibGljIElEQkJhY2tpbmdTdG9yZSB7CiAg
ICAgZnJpZW5kIHN0ZDo6dW5pcXVlX3B0cjxNZW1vcnlJREJCYWNraW5nU3RvcmU+IHN0ZDo6bWFr
ZV91bmlxdWU8TWVtb3J5SURCQmFja2luZ1N0b3JlPihjb25zdCBXZWJDb3JlOjpJREJEYXRhYmFz
ZUlkZW50aWZpZXImKTsKIHB1YmxpYzoKQEAgLTUwLDYgKzUyLDkgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgSURCRXJyb3IgYmVnaW5UcmFuc2FjdGlvbihjb25zdCBJREJUcmFuc2FjdGlvbkluZm8m
KSBvdmVycmlkZSBmaW5hbDsKICAgICB2aXJ0dWFsIElEQkVycm9yIGFib3J0VHJhbnNhY3Rpb24o
Y29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIpIG92ZXJy
aWRlIGZpbmFsOwogICAgIHZpcnR1YWwgSURCRXJyb3IgY29tbWl0VHJhbnNhY3Rpb24oY29uc3Qg
SURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIpIG92ZXJyaWRlIGZp
bmFsOworICAgIHZpcnR1YWwgSURCRXJyb3IgY3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgSURCUmVz
b3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQk9iamVjdFN0
b3JlSW5mbyYpIG92ZXJyaWRlIGZpbmFsOworCisgICAgdm9pZCByZW1vdmVPYmplY3RTdG9yZUZv
clZlcnNpb25DaGFuZ2VBYm9ydChNZW1vcnlPYmplY3RTdG9yZSYpOwogCiBwcml2YXRlOgogICAg
IE1lbW9yeUlEQkJhY2tpbmdTdG9yZShjb25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXImKTsKQEAg
LTU4LDcgKzYzLDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SURCRGF0YWJhc2VJ
bmZvPiBtX2RhdGFiYXNlSW5mbzsKIAogICAgIEhhc2hNYXA8SURCUmVzb3VyY2VJZGVudGlmaWVy
LCBzdGQ6OnVuaXF1ZV9wdHI8TWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24+PiBtX3RyYW5z
YWN0aW9uczsKLQorICAgIEhhc2hNYXA8dWludDY0X3QsIHN0ZDo6dW5pcXVlX3B0cjxNZW1vcnlP
YmplY3RTdG9yZT4+IG1fb2JqZWN0U3RvcmVzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSURCU2Vy
dmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
TWVtb3J5T2JqZWN0U3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL01lbW9yeU9iamVjdFN0b3JlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi5kZmFjNzgwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3JlLmNwcApAQCAtMCwwICsxLDcwIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIk1lbW9yeU9iamVjdFN0b3JlLmgiCisKKyNpZiBFTkFCTEUo
SU5ERVhFRF9EQVRBQkFTRSkKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworbmFtZXNwYWNlIElEQlNlcnZlciB7CisKK3N0ZDo6dW5pcXVlX3B0cjxNZW1vcnlP
YmplY3RTdG9yZT4gTWVtb3J5T2JqZWN0U3RvcmU6OmNyZWF0ZShjb25zdCBJREJPYmplY3RTdG9y
ZUluZm8mIGluZm8pCit7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8TWVtb3J5T2JqZWN0
U3RvcmU+KGluZm8pOworfQorCitNZW1vcnlPYmplY3RTdG9yZTo6TWVtb3J5T2JqZWN0U3RvcmUo
Y29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJiBpbmZvKQorICAgIDogbV9pbmZvKGluZm8pCit7Cit9
CisKK01lbW9yeU9iamVjdFN0b3JlOjp+TWVtb3J5T2JqZWN0U3RvcmUoKQoreworICAgIEFTU0VS
VCghbV93cml0ZVRyYW5zYWN0aW9uKTsKK30KKwordm9pZCBNZW1vcnlPYmplY3RTdG9yZTo6d3Jp
dGVUcmFuc2FjdGlvblN0YXJ0ZWQoTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24mIHRyYW5z
YWN0aW9uKQoreworICAgIExPRyhJbmRleGVkREIsICJNZW1vcnlPYmplY3RTdG9yZTo6d3JpdGVU
cmFuc2FjdGlvblN0YXJ0ZWQiKTsKKworICAgIEFTU0VSVCghbV93cml0ZVRyYW5zYWN0aW9uKTsK
KyAgICBtX3dyaXRlVHJhbnNhY3Rpb24gPSAmdHJhbnNhY3Rpb247Cit9CisKK3ZvaWQgTWVtb3J5
T2JqZWN0U3RvcmU6OndyaXRlVHJhbnNhY3Rpb25GaW5pc2hlZChNZW1vcnlCYWNraW5nU3RvcmVU
cmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24pCit7CisgICAgTE9HKEluZGV4ZWREQiwgIk1lbW9yeU9i
amVjdFN0b3JlOjp3cml0ZVRyYW5zYWN0aW9uRmluaXNoZWQiKTsKKworICAgIEFTU0VSVF9VTlVT
RUQodHJhbnNhY3Rpb24sIG1fd3JpdGVUcmFuc2FjdGlvbiA9PSAmdHJhbnNhY3Rpb24pOworICAg
IG1fd3JpdGVUcmFuc2FjdGlvbiA9IG51bGxwdHI7Cit9CisKK30gLy8gbmFtZXNwYWNlIElEQlNl
cnZlcgorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKElOREVYRURf
REFUQUJBU0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9NZW1vcnlPYmplY3RTdG9yZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjMxZTJlNGQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuaApAQCAtMCwwICsxLDYyIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBN
ZW1vcnlPYmplY3RTdG9yZV9oCisjZGVmaW5lIE1lbW9yeU9iamVjdFN0b3JlX2gKKworI2lmIEVO
QUJMRShJTkRFWEVEX0RBVEFCQVNFKQorCisjaW5jbHVkZSAiSURCT2JqZWN0U3RvcmVJbmZvLmgi
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBJREJTZXJ2ZXIgeworCitjbGFzcyBN
ZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbjsKKworY2xhc3MgTWVtb3J5T2JqZWN0U3RvcmUg
eworICAgIGZyaWVuZCBzdGQ6OnVuaXF1ZV9wdHI8TWVtb3J5T2JqZWN0U3RvcmU+IHN0ZDo6bWFr
ZV91bmlxdWU8TWVtb3J5T2JqZWN0U3RvcmU+KGNvbnN0IFdlYkNvcmU6OklEQk9iamVjdFN0b3Jl
SW5mbyYpOworcHVibGljOgorICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TWVtb3J5T2JqZWN0
U3RvcmU+IGNyZWF0ZShjb25zdCBJREJPYmplY3RTdG9yZUluZm8mKTsKKworICAgIH5NZW1vcnlP
YmplY3RTdG9yZSgpOworCisgICAgdm9pZCB3cml0ZVRyYW5zYWN0aW9uU3RhcnRlZChNZW1vcnlC
YWNraW5nU3RvcmVUcmFuc2FjdGlvbiYpOworICAgIHZvaWQgd3JpdGVUcmFuc2FjdGlvbkZpbmlz
aGVkKE1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uJik7CisKKyAgICBjb25zdCBJREJPYmpl
Y3RTdG9yZUluZm8mIGluZm8oKSBjb25zdCB7IHJldHVybiBtX2luZm87IH0KKworcHJpdmF0ZToK
KyAgICBNZW1vcnlPYmplY3RTdG9yZShjb25zdCBJREJPYmplY3RTdG9yZUluZm8mKTsKKworICAg
IElEQk9iamVjdFN0b3JlSW5mbyBtX2luZm87CisKKyAgICBNZW1vcnlCYWNraW5nU3RvcmVUcmFu
c2FjdGlvbiogbV93cml0ZVRyYW5zYWN0aW9uIHsgbnVsbHB0ciB9OworfTsKKworfSAvLyBuYW1l
c3BhY2UgSURCU2VydmVyCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFC
TEUoSU5ERVhFRF9EQVRBQkFTRSkKKyNlbmRpZiAvLyBNZW1vcnlPYmplY3RTdG9yZV9oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURC
RGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1Vu
aXF1ZUlEQkRhdGFiYXNlLmNwcAppbmRleCAzYmI2YTgxLi4wNTRhNzhjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJ
REJEYXRhYmFzZS5jcHAKQEAgLTIyMiw2ICsyMjIsOCBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNl
OjpjcmVhdGVPYmplY3RTdG9yZShVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uJiB0cmFuc2Fj
dAogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgTE9HKEluZGV4ZWREQiwgIihtYWlu
KSBVbmlxdWVJREJEYXRhYmFzZTo6Y3JlYXRlT2JqZWN0U3RvcmUiKTsKIAorICAgIG1fYmFja2lu
Z1N0b3JlLT5jcmVhdGVPYmplY3RTdG9yZSh0cmFuc2FjdGlvbi5pbmZvKCkuaWRlbnRpZmllcigp
LCBpbmZvKTsKKwogICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBzdG9yZUNhbGxiYWNrKGNhbGxi
YWNrKTsKICAgICBtX3NlcnZlci5wb3N0RGF0YWJhc2VUYXNrKGNyZWF0ZUNyb3NzVGhyZWFkVGFz
aygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpwZXJmb3JtQ3JlYXRlT2JqZWN0U3RvcmUsIGNh
bGxiYWNrSUQsIHRyYW5zYWN0aW9uLmluZm8oKS5pZGVudGlmaWVyKCksIGluZm8pKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJFcnJv
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCRXJyb3Iu
Y3BwCmluZGV4IDhhODc1YTcuLjIyODhjZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJFcnJvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkVycm9yLmNwcApAQCAtMzksNiArMzksMTAgQEAg
c3RhdGljIGNvbnN0IFN0cmluZyYgaWRiRXJyb3JOYW1lKElEQkV4Y2VwdGlvbkNvZGUgY29kZSkK
ICAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gZW50cnkgPSBBU0NJSUxpdGVy
YWwoIlVua25vd25FcnJvciIpOwogICAgICAgICByZXR1cm4gZW50cnk7CiAgICAgfQorICAgIGNh
c2UgSURCRXhjZXB0aW9uQ29kZTo6Q29uc3RyYWludEVycm9yOiB7CisgICAgICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxTdHJpbmc+IGVudHJ5ID0gQVNDSUlMaXRlcmFsKCJDb25zdHJhaW50RXJy
b3IiKTsKKyAgICAgICAgcmV0dXJuIGVudHJ5OworICAgIH0KICAgICBjYXNlIElEQkV4Y2VwdGlv
bkNvZGU6OlZlcnNpb25FcnJvcjogewogICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3Ry
aW5nPiBlbnRyeSA9IEFTQ0lJTGl0ZXJhbCgiVmVyc2lvbkVycm9yIik7CiAgICAgICAgIHJldHVy
biBlbnRyeTsKQEAgLTYxLDYgKzY1LDEwIEBAIHN0YXRpYyBjb25zdCBTdHJpbmcmIGlkYkVycm9y
RGVzY3JpcHRpb24oSURCRXhjZXB0aW9uQ29kZSBjb2RlKQogICAgICAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8U3RyaW5nPiBlbnRyeSA9IEFTQ0lJTGl0ZXJhbCgiT3BlcmF0aW9uIGZhaWxlZCBm
b3IgcmVhc29ucyB1bnJlbGF0ZWQgdG8gdGhlIGRhdGFiYXNlIGl0c2VsZiBhbmQgbm90IGNvdmVy
ZWQgYnkgYW55IG90aGVyIGVycm9ycy4iKTsKICAgICAgICAgcmV0dXJuIGVudHJ5LmdldCgpOwog
ICAgIH0KKyAgICBjYXNlIElEQkV4Y2VwdGlvbkNvZGU6OkNvbnN0cmFpbnRFcnJvcjogeworICAg
ICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBlbnRyeSA9IEFTQ0lJTGl0ZXJhbCgi
TXV0YXRpb24gb3BlcmF0aW9uIGluIHRoZSB0cmFuc2FjdGlvbiBmYWlsZWQgYmVjYXVzZSBhIGNv
bnN0cmFpbnQgd2FzIG5vdCBzYXRpc2ZpZWQuIik7CisgICAgICAgIHJldHVybiBlbnRyeS5nZXQo
KTsKKyAgICB9CiAgICAgY2FzZSBJREJFeGNlcHRpb25Db2RlOjpWZXJzaW9uRXJyb3I6IHsKICAg
ICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gZW50cnkgPSBBU0NJSUxpdGVyYWwo
IkFuIGF0dGVtcHQgd2FzIG1hZGUgdG8gb3BlbiBhIGRhdGFiYXNlIHVzaW5nIGEgbG93ZXIgdmVy
c2lvbiB0aGFuIHRoZSBleGlzdGluZyB2ZXJzaW9uLiIpOwogICAgICAgICByZXR1cm4gZW50cnku
Z2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFy
ZWQvSURCRXJyb3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9J
REJFcnJvci5oCmluZGV4IDZlNzc1ZjguLmI5MTk2MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJFcnJvci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJFcnJvci5oCkBAIC0zNSw2ICszNSw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIGVudW0gY2xhc3MgSURCRXhjZXB0aW9uQ29kZSB7CiAgICAg
Tm9uZSA9IDAsCiAgICAgVW5rbm93biwKKyAgICBDb25zdHJhaW50RXJyb3IsCiAgICAgVmVyc2lv
bkVycm9yLAogCiAgICAgLy8gSW5kZXhlZCBEQiBleGlzdGluZyBleGNlcHRpb24gY29kZXMgd2l0
aCBJREItc3BlY2lmaWMgZXJyb3IgbWVzc2FnZXM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggODkzMmY5Ny4uOTAwYjE1NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtMjA1MSw2ICsyMDUxLDggQEAKIAkJNTE3NDFEMTEwQjA3MjU5QTAwRUQ0NDJDIC8qIEhpc3Rv
cnlJdGVtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MTc0MUQwRDBCMDcyNTlBMDBFRDQ0MkMgLyogSGlzdG9yeUl0ZW0uaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTc0MUQxMjBCMDcyNTlBMDBFRDQ0
MkMgLyogSGlzdG9yeUl0ZW0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTE3NDFEMEUwQjA3MjU5QTAwRUQ0NDJDIC8qIEhpc3RvcnlJdGVtLmNwcCAq
LzsgfTsKIAkJNTE3NEUyMEExMEExRjQ0RjAwRjk1RTZGIC8qIFBvcFN0YXRlRXZlbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNzRFMjA4MTBBMUY0
NEYwMEY5NUU2RiAvKiBQb3BTdGF0ZUV2ZW50LmggKi87IH07CisJCTUxNzcxREZFMUJEQjQ4NTAw
MENBRThFNCAvKiBNZW1vcnlPYmplY3RTdG9yZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTc3MURGQzFCREI0NzU2MDBDQUU4RTQgLyogTWVtb3J5
T2JqZWN0U3RvcmUuY3BwICovOyB9OworCQk1MTc3MURGRjFCREI0ODUwMDBDQUU4RTQgLyogTWVt
b3J5T2JqZWN0U3RvcmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxNzcxREZEMUJEQjQ3NTYwMENBRThFNCAvKiBNZW1vcnlPYmplY3RTdG9yZS5oICov
OyB9OwogCQk1MTc5Q0UyNDE5NUM4MTQyMDAxOUMxOTggLyogR2FtZXBhZFByb3ZpZGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTc5Q0UyMzE5NUM4
MTQyMDAxOUMxOTggLyogR2FtZXBhZFByb3ZpZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTE3OUNFMjYxOTVDODIxRDAwMTlDMTk4IC8qIEdh
bWVwYWRQcm92aWRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MTc5Q0UyNTE5NUM4MjFEMDAxOUMxOTggLyogR2FtZXBhZFByb3ZpZGVyLmNwcCAq
LzsgfTsKIAkJNTE3OUNFMkExOTVDOTE4NjAwMTlDMTk4IC8qIEdhbWVwYWRQcm92aWRlckNsaWVu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3OUNF
MjkxOTVDOTE4NjAwMTlDMTk4IC8qIEdhbWVwYWRQcm92aWRlckNsaWVudC5oICovOyB9OwpAQCAt
OTQ3Miw2ICs5NDc0LDggQEAKIAkJNTE3NDFEMEUwQjA3MjU5QTAwRUQ0NDJDIC8qIEhpc3RvcnlJ
dGVtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIaXN0b3J5SXRl
bS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNzRFMjA4MTBBMUY0NEYwMEY5
NUU2RiAvKiBQb3BTdGF0ZUV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFBvcFN0YXRlRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE3NEUyMEIx
MEExRjQ5QTAwRjk1RTZGIC8qIFBvcFN0YXRlRXZlbnQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IFBvcFN0YXRlRXZlbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTc3
MURGQzFCREI0NzU2MDBDQUU4RTQgLyogTWVtb3J5T2JqZWN0U3RvcmUuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVtb3J5T2JqZWN0U3RvcmUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk1MTc3MURGRDFCREI0NzU2MDBDQUU4RTQgLyogTWVtb3J5
T2JqZWN0U3RvcmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVtb3J5T2Jq
ZWN0U3RvcmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE3OUNFMjMxOTVDODE0
MjAwMTlDMTk4IC8qIEdhbWVwYWRQcm92aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBHYW1lcGFkUHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTE3OUNFMjUxOTVDODIxRDAwMTlDMTk4IC8qIEdhbWVwYWRQcm92aWRlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHYW1lcGFkUHJvdmlkZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1MTc5Q0UyOTE5NUM5MTg2MDAxOUMxOTggLyogR2FtZXBh
ZFByb3ZpZGVyQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdhbWVw
YWRQcm92aWRlckNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTY4NDQs
NiArMTY4NDgsOCBAQAogCQkJCTUxRTFCQUMxMUJEODA2NDcwMDU1RDgxRiAvKiBNZW1vcnlCYWNr
aW5nU3RvcmVUcmFuc2FjdGlvbi5oICovLAogCQkJCTUxQkE0QUM4MUJCQzVCOUUwMERGM0Q2RCAv
KiBNZW1vcnlJREJCYWNraW5nU3RvcmUuY3BwICovLAogCQkJCTUxQkE0QUM5MUJCQzVCOUUwMERG
M0Q2RCAvKiBNZW1vcnlJREJCYWNraW5nU3RvcmUuaCAqLywKKwkJCQk1MTc3MURGQzFCREI0NzU2
MDBDQUU4RTQgLyogTWVtb3J5T2JqZWN0U3RvcmUuY3BwICovLAorCQkJCTUxNzcxREZEMUJEQjQ3
NTYwMENBRThFNCAvKiBNZW1vcnlPYmplY3RTdG9yZS5oICovLAogCQkJCTUxODg2NERFMUJCQUYz
MEYwMEU1NDBDOSAvKiBVbmlxdWVJREJEYXRhYmFzZS5jcHAgKi8sCiAJCQkJNTE4ODY0REYxQkJB
RjMwRjAwRTU0MEM5IC8qIFVuaXF1ZUlEQkRhdGFiYXNlLmggKi8sCiAJCQkJNTE5OEY3QTIxQkJE
QUEyOTAwRTJDQzVGIC8qIFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbi5jcHAgKi8sCkBAIC0y
NDg5OSw2ICsyNDkwNSw3IEBACiAJCQkJODUwMzFCM0UwQTQ0RUZDNzAwRjk5MkUwIC8qIERhdGFU
cmFuc2Zlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEI4QUY0QUEwQjFDRTAyQjAwNjg3NjkwIC8q
IERhdGFUcmFuc2ZlckFjY2Vzc1BvbGljeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODFBQzU5OTkx
MzE2MzZFNjAwMDlBN0UwIC8qIERhdGFUcmFuc2Zlckl0ZW0uaCBpbiBIZWFkZXJzICovLAorCQkJ
CTUxNzcxREZGMUJEQjQ4NTAwMENBRThFNCAvKiBNZW1vcnlPYmplY3RTdG9yZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJODFBQzU5OUExMzE2MzZFNjAwMDlBN0UwIC8qIERhdGFUcmFuc2Zlckl0ZW1M
aXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlFNEEwMDc4MzFCODIwRUM4MDAyQzVBNkUgLyogRGF0
YVVSTERlY29kZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0QTAwNzgzMUI4MjBFQzgwMDJDNUE2
RSAvKiBEYXRhVVJMRGVjb2Rlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yODUzOSw2ICsyODU0Niw3
IEBACiAJCQkJQkNDMDY1N0QwRjNDRTFCNzAwQ0QyRDg3IC8qIENsaWVudFJlY3QuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQkNDMDY1ODAwRjNDRTFCNzAwQ0QyRDg3IC8qIENsaWVudFJlY3RMaXN0
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg1MDMxQjNGMEE0NEVGQzcwMEY5OTJFMCAvKiBDbGlw
Ym9hcmRFdmVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MTc3MURGRTFCREI0ODUwMDBDQUU4
RTQgLyogTWVtb3J5T2JqZWN0U3RvcmUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTgwMzcxNjEx
QTY2RjAwQTAwQkFGNTE5IC8qIENsaXBSZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNERUE3
NjM1MTQ2MEI3MUEwMDhCMzFGMSAvKiBDbG9jay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDREVB
NzYzNDE0NjBCNTZGMDA4QjMxRjEgLyogQ2xvY2tHZW5lcmljLmNwcCBpbiBTb3VyY2VzICovLAo=
</data>
<flag name="review"
          id="289148"
          type_id="1"
          status="+"
          setter="achristensen"
    />
          </attachment>
      

    </bug>

</bugzilla>