<?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>113283</bug_id>
          
          <creation_ts>2013-03-26 01:59:31 -0700</creation_ts>
          <short_desc>Code duplication between HTTPParsers and HTTPValidation</short_desc>
          <delta_ts>2013-03-26 11:02:27 -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>WebGL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>eric</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hausmann</cc>
    
    <cc>laszlo.gombos</cc>
    
    <cc>mkwst</cc>
    
    <cc>rakuco</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>863471</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-03-26 01:59:31 -0700</bug_when>
    <thetext>isRFC2616Token() from HTTPParsers and isValidHTTPToken() from HTTPValidation are doing exactly the same thing. We should refactor to avoid code duplication.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>863485</commentid>
    <comment_count>1</comment_count>
      <attachid>195038</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-03-26 02:22:58 -0700</bug_when>
    <thetext>Created attachment 195038
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>863742</commentid>
    <comment_count>2</comment_count>
      <attachid>195038</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-03-26 09:48:48 -0700</bug_when>
    <thetext>Comment on attachment 195038
Patch

OK. We can consider splitting parsing and validation again if this file grows unwieldy.

As far as naming goes, &quot;isRFC2616Token&quot; seems a little less descriptive to me than &quot;isValidHTTPToken&quot;. The reason why I like the remaining name less is that one could wonder whether being an RFC2616 token is a built-in property of a String, like being atomic or being static. The other name reads a little more like a validity check that it is. But the difference is very small, and maybe it&apos;s just me thinking so.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>863770</commentid>
    <comment_count>3</comment_count>
      <attachid>195105</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-03-26 10:12:53 -0700</bug_when>
    <thetext>Created attachment 195105
Patch for landing

- Renamed to isValidHTTPToken().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>863843</commentid>
    <comment_count>4</comment_count>
      <attachid>195105</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-26 11:02:21 -0700</bug_when>
    <thetext>Comment on attachment 195105
Patch for landing

Clearing flags on attachment: 195105

Committed r146908: &lt;http://trac.webkit.org/changeset/146908&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>863844</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-26 11:02:27 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>195038</attachid>
            <date>2013-03-26 02:22:58 -0700</date>
            <delta_ts>2013-03-26 10:12:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>113283_httpToken_duplication.patch</filename>
            <type>text/plain</type>
            <size>22460</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggMWJkNGVkZi4uMzliMDAzOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTIwNzQsNyArMjA3NCw2IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0
Zm9ybS9uZXR3b3JrL0hUVFBIZWFkZXJNYXAuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9IVFRQ
UGFyc2Vycy5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL0hUVFBSZXF1ZXN0LmNwcAotICAgIHBs
YXRmb3JtL25ldHdvcmsvSFRUUFZhbGlkYXRpb24uY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9N
SU1FSGVhZGVyLmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0YXRlTm90aWZpZXIu
Y3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9QYXJzZWRDb250ZW50VHlwZS5jcHAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpp
bmRleCBiZDM2ZjAyLi4yNTdmNDZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDMgQEAKKzIwMTMt
MDMtMjYgIENocmlzdG9waGUgRHVtZXogIDxjaC5kdW1lekBzaXNhLnNhbXN1bmcuY29tPgorCisg
ICAgICAgIENvZGUgZHVwbGljYXRpb24gYmV0d2VlbiBIVFRQUGFyc2VycyBhbmQgSFRUUFZhbGlk
YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEx
MzI4MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1l
cmdlZCBpc1ZhbGlkSFRUUFRva2VuKCkgZnJvbSBIVFRQVmFsaWRhdGlvbi5oIGFuZCBpc1JGQzI2
MTZUb2tlbigpIGZyb20KKyAgICAgICAgSFRUUFBhcnNlcnMuaC4gVGhleSB3ZXJlIGRvaW5nIGV4
YWN0bHkgdGhlIHNhbWUgdGhpbmcgYW5kIHRoZWlyCisgICAgICAgIGltcGxlbWVudGF0aW9uIHdh
cyBhbG1vc3QgdGhlIHNhbWUuCisKKyAgICAgICAgUmVtb3ZlZCBIVFRQVmFsaWRhdGlvbi4qIGFu
ZCBtb3ZlZCByZW1haW5pbmcgY29kZSB0byBIVFRQUGFyc2Vycy4qIGFzIHRoaXMKKyAgICAgICAg
c2VlbXMgbGlrZSB0aGUgcHJvcGVyIHBsYWNlIGFuZCBpdCBzZWVtcyBvZGQgdG8ga2VlcCBIVFRQ
VmFsaWRhdGlvbiBmb3IKKyAgICAgICAganVzdCBvbmUgZnVuY3Rpb24uCisKKyAgICAgICAgTm8g
bmV3IHRlc3RzLCBubyBiZWhhdmlvciBjaGFuZ2UgZm9yIGxheW91dCB0ZXN0cy4KKworICAgICAg
ICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAg
ICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2Vi
Q29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS52Y3hwcm9qL1dl
YkNvcmUudmN4cHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9q
LmZpbHRlcnM6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6aXNWYWxpZEhUVFBIZWFkZXJWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6OmlzUkZDMjYxNlRva2VuKTogSW1wbGVtZW50YXRpb24gaXMgc2xpZ2h0bHkg
c2ltcGxpZmllZCBiYXNlZCBvbgorICAgICAgICBpc1ZhbGlkSFRUUFRva2VuKCkgZnJvbSBIVFRQ
VmFsaWRhdGlvbi5oLiAoYyA+PSAweDgwIHx8IGMgPT0gMHg3RikgaXMKKyAgICAgICAgcmVwbGFj
ZWQgYnkgKGMgPj0gMHg3RikuIChjIDw9IDB4MUYgfHwgIGMgPT0gJyAnIHx8IGMgPT0gJ1x0Jykg
aXMgcmVwbGFjZWQKKyAgICAgICAgYnkgKGMgPD0gMHgyMCkuIFRob3NlIGV4cHJlc3Npb25zIGFy
ZSBzaG9ydGVyIGJ1dCBlcXVpdmFsZW50LgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvSFRU
UFBhcnNlcnMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0hUVFBWYWxpZGF0aW9uLmNw
cDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0hUVFBWYWxpZGF0aW9uLmg6
IFJlbW92ZWQuCisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0LmNwcDogQ2FsbCBpc1JGQzI2
MTZUb2tlbigpIGZyb20gSFRUUFBhcnNlcnMuaCBpbnN0ZWFkCisgICAgICAgIG9mIGlzVmFsaWRI
VFRQVG9rZW4oKSBmcm9tIEhUVFBWYWxpZGF0aW9uLmguCisgICAgICAgIChXZWJDb3JlOjpYTUxI
dHRwUmVxdWVzdDo6b3Blbik6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6c2V0
UmVxdWVzdEhlYWRlcik6CisKIDIwMTMtMDMtMjYgIERvbWluaWsgUsO2dHRzY2hlcyAgPGRvbWlu
aWsucm90dHNjaGVzQGludGVsLmNvbT4KIAogICAgICAgICBSZW1vdmUgSGFyZkJ1enpTaGFwZXJC
YXNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291
cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCBmMjcwMzY5Li5jODZkMDAwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTU5MTMsOCArNTkxMyw2IEBAIHdlYmNv
cmVfcGxhdGZvcm1fc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9IVFRQUGFyc2Vycy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBS
ZXF1ZXN0LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUmVxdWVz
dC5oIFwKLQlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBWYWxpZGF0aW9uLmNw
cCBcCi0JU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQVmFsaWRhdGlvbi5oIFwK
IAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL01JTUVIZWFkZXIuY3BwIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL01JTUVIZWFkZXIuaCBcCiAJU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JraW5nQ29udGV4dC5oIFwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmluZGV4
IGFiY2ZiMDguLjhiYjczNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkK
KysrIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAtMTEwMSw3ICsxMTAxLDYgQEAgU09V
UkNFUyArPSBcCiAgICAgcGxhdGZvcm0vbmV0d29yay9IVFRQSGVhZGVyTWFwLmNwcCBcCiAgICAg
cGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAgXAogICAgIHBsYXRmb3JtL25ldHdvcmsv
SFRUUFJlcXVlc3QuY3BwIFwKLSAgICBwbGF0Zm9ybS9uZXR3b3JrL0hUVFBWYWxpZGF0aW9uLmNw
cCBcCiAgICAgcGxhdGZvcm0vbmV0d29yay9NSU1FSGVhZGVyLmNwcCBcCiAgICAgcGxhdGZvcm0v
bmV0d29yay9OZXR3b3JrU3RhdGVOb3RpZmllci5jcHAgXAogICAgIHBsYXRmb3JtL25ldHdvcmsv
TmV0d29ya1N0b3JhZ2VTZXNzaW9uU3R1Yi5jcHAgXApAQCAtMjM2Myw3ICsyMzYyLDYgQEAgSEVB
REVSUyArPSBcCiAgICAgcGxhdGZvcm0vbmV0d29yay9IVFRQSGVhZGVyTWFwLmggXAogICAgIHBs
YXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuaCBcCiAgICAgcGxhdGZvcm0vbmV0d29yay9IVFRQ
UmVxdWVzdC5oIFwKLSAgICBwbGF0Zm9ybS9uZXR3b3JrL0hUVFBWYWxpZGF0aW9uLmggXAogICAg
IHBsYXRmb3JtL25ldHdvcmsvSFRUUFN0YXR1c0NvZGVzLmggXAogICAgIHBsYXRmb3JtL25ldHdv
cmsvTUlNRVNuaWZmaW5nLmggXAogICAgIHBsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDQ5MGFkYjAuLjVjNjBjYjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmd5cGkKQEAgLTQ1OTQsOCArNDU5NCw2IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vbmV0
d29yay9IVFRQUGFyc2Vycy5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL0hUVFBS
ZXF1ZXN0LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vbmV0d29yay9IVFRQUmVxdWVzdC5o
JywKLSAgICAgICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL0hUVFBWYWxpZGF0aW9uLmNwcCcsCi0g
ICAgICAgICAgICAncGxhdGZvcm0vbmV0d29yay9IVFRQVmFsaWRhdGlvbi5oJywKICAgICAgICAg
ICAgICdwbGF0Zm9ybS9uZXR3b3JrL01JTUVIZWFkZXIuY3BwJywKICAgICAgICAgICAgICdwbGF0
Zm9ybS9uZXR3b3JrL05ldHdvcmtTdGF0ZU5vdGlmaWVyLmNwcCcsCiAgICAgICAgICAgICAncGxh
dGZvcm0vbmV0d29yay9OZXR3b3JrU3RhdGVOb3RpZmllci5oJywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggNzY2MWUxMy4uNmY2NTVmZSAxMDA3
NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTMzMTAy
LDE0ICszMzEwMiw2IEBACiAJCQkJCT4KIAkJCQk8L0ZpbGU+CiAJCQkJPEZpbGUKLQkJCQkJUmVs
YXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXEhUVFBWYWxpZGF0aW9uLmNwcCIKLQkJCQkJ
PgotCQkJCTwvRmlsZT4KLQkJCQk8RmlsZQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3Jt
XG5ldHdvcmtcSFRUUFZhbGlkYXRpb24uaCIKLQkJCQkJPgotCQkJCTwvRmlsZT4KLQkJCQk8Rmls
ZQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXG5ldHdvcmtcTUlNRUhlYWRlci5jcHAi
CiAJCQkJCT4KIAkJCQk8L0ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9q
L1dlYkNvcmUudmN4cHJvagppbmRleCA3NjU2NjhmLi42N2JmMTdmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKQEAgLTQ2MzAsNyArNDYzMCw2
IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXEhUVFBIZWFk
ZXJNYXAuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cbmV0d29y
a1xIVFRQUGFyc2Vycy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9y
bVxuZXR3b3JrXEhUVFBSZXF1ZXN0LmNwcCIgLz4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XHBsYXRmb3JtXG5ldHdvcmtcSFRUUFZhbGlkYXRpb24uY3BwIiAvPgogICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5ccGxhdGZvcm1cbmV0d29ya1xNSU1FSGVhZGVyLmNwcCIgLz4KICAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXG5ldHdvcmtcTmV0d29ya1N0YXRlTm90aWZpZXIu
Y3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cbmV0d29ya1xOZXR3
b3JrU3RvcmFnZVNlc3Npb25TdHViLmNwcCI+CkBAIC0xMTkxMCw3ICsxMTkwOSw2IEBACiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXEhUVFBIZWFkZXJNYXAuaCIg
Lz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXG5ldHdvcmtcSFRUUFBhcnNl
cnMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXG5ldHdvcmtcSFRU
UFJlcXVlc3QuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXG5ldHdv
cmtcSFRUUFZhbGlkYXRpb24uaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRm
b3JtXG5ldHdvcmtcTUlNRUhlYWRlci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cGxhdGZvcm1cbmV0d29ya1xOZXR3b3JraW5nQ29udGV4dC5oIiAvPgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5ccGxhdGZvcm1cbmV0d29ya1xOZXR3b3JrU3RhdGVOb3RpZmllci5oIiAvPgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJv
ai5maWx0ZXJzIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJv
ai5maWx0ZXJzCmluZGV4IGViOTdjZmYuLmRlYTM4ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKQEAgLTMyNzYs
OSArMzI3Niw2IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxuZXR3b3Jr
XEhUVFBSZXF1ZXN0LmNwcCI+CiAgICAgICA8RmlsdGVyPnBsYXRmb3JtXG5ldHdvcms8L0ZpbHRl
cj4KICAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3Jt
XG5ldHdvcmtcSFRUUFZhbGlkYXRpb24uY3BwIj4KLSAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cbmV0
d29yazwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5ccGxhdGZvcm1cbmV0d29ya1xNSU1FSGVhZGVyLmNwcCI+CiAgICAgICA8RmlsdGVyPnBsYXRm
b3JtXG5ldHdvcms8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTEwMDgzLDkgKzEwMDgw
LDYgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXG5ldHdvcmtcSFRUUFJl
cXVlc3QuaCI+CiAgICAgICA8RmlsdGVyPnBsYXRmb3JtXG5ldHdvcms8L0ZpbHRlcj4KICAgICA8
L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXG5ldHdvcmtc
SFRUUFZhbGlkYXRpb24uaCI+Ci0gICAgICA8RmlsdGVyPnBsYXRmb3JtXG5ldHdvcms8L0ZpbHRl
cj4KLSAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3Jt
XG5ldHdvcmtcTUlNRUhlYWRlci5oIj4KICAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cbmV0d29yazwv
RmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDk4NjY4MDMuLmE5ZWEzNzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTM4
MDgsOCArMzgwOCw2IEBACiAJCTlBMUI2Rjk3MTU4ODY5QzgwMDExQThDNCAvKiBKU0RPTVN0cmlu
Z0xpc3RDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOUExQjZGOTYxNTg4NjlDODAwMTFBOEM0IC8qIEpTRE9NU3RyaW5nTGlzdEN1c3RvbS5j
cHAgKi87IH07CiAJCTlBOUNFRjhEMTYzQjNFQTEwMERFN0VGRSAvKiBFeGNsdXNpb25TaGFwZU91
dHNpZGVJbmZvLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDlBOUNFRjhCMTYzQjNFQTEwMERFN0VGRSAvKiBFeGNsdXNpb25TaGFwZU91dHNpZGVJbmZv
LmNwcCAqLzsgfTsKIAkJOUE5Q0VGOEUxNjNCM0VBMTAwREU3RUZFIC8qIEV4Y2x1c2lvblNoYXBl
T3V0c2lkZUluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDlBOUNFRjhDMTYzQjNFQTEwMERFN0VGRSAvKiBFeGNsdXNpb25TaGFwZU91dHNpZGVJbmZv
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJOUIw
RkIxOTExNDBEQjU3OTAwMjI1ODhGIC8qIEhUVFBWYWxpZGF0aW9uLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMEZCMThGMTQwREI1NzkwMDIyNTg4
RiAvKiBIVFRQVmFsaWRhdGlvbi5jcHAgKi87IH07Ci0JCTlCMEZCMTkyMTQwREI1NzkwMDIyNTg4
RiAvKiBIVFRQVmFsaWRhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOUIwRkIxOTAxNDBEQjU3OTAwMjI1ODhGIC8qIEhUVFBWYWxpZGF0aW9uLmgg
Ki87IH07CiAJCTlCMUFCMDdDMTY0OEM3QzQwMDUxRjNGMiAvKiBKU0hUTUxGb3JtQ29udHJvbHND
b2xsZWN0aW9uQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDlCMUFCMDdCMTY0OEM3QzQwMDUxRjNGMiAvKiBKU0hUTUxGb3JtQ29udHJvbHND
b2xsZWN0aW9uQ3VzdG9tLmNwcCAqLzsgfTsKIAkJOUIyNERFOEUxNTE5NEI5NTAwQzU5QzI3IC8q
IEhUTUxCRElFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5QjI0REU4QzE1MTk0Qjk1MDBDNTlDMjcgLyogSFRNTEJESUVsZW1lbnQuaCAqLzsg
fTsKIAkJOUIyQjdBQzExNTA5ODUwQTAwODkzMkNDIC8qIE1pY3JvRGF0YUl0ZW1WYWx1ZS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjJGN0NGNzE0
NTYyMTIwMDA3RjhCNTAgLyogTWljcm9EYXRhSXRlbVZhbHVlLmNwcCAqLzsgfTsKQEAgLTExMzY0
LDggKzExMzYyLDYgQEAKIAkJOUExQjZGOTYxNTg4NjlDODAwMTFBOEM0IC8qIEpTRE9NU3RyaW5n
TGlzdEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0RP
TVN0cmluZ0xpc3RDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QTlD
RUY4QjE2M0IzRUExMDBERTdFRkUgLyogRXhjbHVzaW9uU2hhcGVPdXRzaWRlSW5mby5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFeGNsdXNpb25TaGFwZU91dHNpZGVJ
bmZvLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUE5Q0VGOEMxNjNCM0VBMTAw
REU3RUZFIC8qIEV4Y2x1c2lvblNoYXBlT3V0c2lkZUluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gRXhjbHVzaW9uU2hhcGVPdXRzaWRlSW5mby5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQk5QjBGQjE4RjE0MERCNTc5MDAyMjU4OEYgLyogSFRUUFZhbGlkYXRp
b24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSFRUUFZhbGlkYXRp
b24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk5QjBGQjE5MDE0MERCNTc5MDAy
MjU4OEYgLyogSFRUUFZhbGlkYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSFRUUFZhbGlkYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUIxQUIw
NzkxNjQ4QzY5RDAwNTFGM0YyIC8qIEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTlCMUFCMDdCMTY0OEM3QzQwMDUxRjNGMiAvKiBKU0hUTUxGb3JtQ29udHJvbHNDb2xs
ZWN0aW9uQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb25DdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5QjI0REU4QzE1MTk0Qjk1MDBDNTlDMjcgLyogSFRNTEJESUVsZW1lbnQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSFRNTEJESUVsZW1lbnQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE2Mjk2LDggKzE2MjkyLDYgQEAKIAkJCQk1MTRDNzY1
RTBDRTkyM0ExMDA3RUYzQ0QgLyogSFRUUFBhcnNlcnMuaCAqLywKIAkJCQlBNUQyMTRBRTEyRTkw
NTUxMDA5MEYzNzAgLyogSFRUUFJlcXVlc3QuY3BwICovLAogCQkJCUE1RDIxNEFGMTJFOTA1NTEw
MDkwRjM3MCAvKiBIVFRQUmVxdWVzdC5oICovLAotCQkJCTlCMEZCMThGMTQwREI1NzkwMDIyNTg4
RiAvKiBIVFRQVmFsaWRhdGlvbi5jcHAgKi8sCi0JCQkJOUIwRkIxOTAxNDBEQjU3OTAwMjI1ODhG
IC8qIEhUVFBWYWxpZGF0aW9uLmggKi8sCiAJCQkJMzdERENEOTIxMzg0NEZENTAwMDhCNzkzIC8q
IE1JTUVIZWFkZXIuY3BwICovLAogCQkJCTM3RERDRDkzMTM4NDRGRDUwMDA4Qjc5MyAvKiBNSU1F
SGVhZGVyLmggKi8sCiAJCQkJNjI4RDIxNEIxMjEzMUVEMTAwNTVEQ0ZDIC8qIE5ldHdvcmtpbmdD
b250ZXh0LmggKi8sCkBAIC0yNDgyNSw3ICsyNDgxOSw2IEBACiAJCQkJNTE0Qzc2NzEwQ0U5MjNB
MTAwN0VGM0NEIC8qIEhUVFBIZWFkZXJNYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxNEM3Njcz
MENFOTIzQTEwMDdFRjNDRCAvKiBIVFRQUGFyc2Vycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTVE
MjE0QjIxMkU5MDU1MTAwOTBGMzcwIC8qIEhUVFBSZXF1ZXN0LmggaW4gSGVhZGVycyAqLywKLQkJ
CQk5QjBGQjE5MjE0MERCNTc5MDAyMjU4OEYgLyogSFRUUFZhbGlkYXRpb24uaCBpbiBIZWFkZXJz
ICovLAogCQkJCTM3NUNEMjMyMTE5RDQzQzgwMEEyQTg1OSAvKiBIeXBoZW5hdGlvbi5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQjI3NTM1NkUwQjA1MzgxNDAwMkNFNjRGIC8qIEljb24uaCBpbiBIZWFk
ZXJzICovLAogCQkJCTk3RTQwMjkwMTNBNjk2RUQwMDkxM0Q2NyAvKiBJY29uQ29udHJvbGxlci5o
IGluIEhlYWRlcnMgKi8sCkBAIC0yODE1OSw3ICsyODE1Miw2IEBACiAJCQkJMEI4QzU2RDQwRjI4
NjI3RjAwMDUwMkUxIC8qIEhUVFBIZWFkZXJNYXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE0
Qzc2NzIwQ0U5MjNBMTAwN0VGM0NEIC8qIEhUVFBQYXJzZXJzLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUE1RDIxNEIxMTJFOTA1NTEwMDkwRjM3MCAvKiBIVFRQUmVxdWVzdC5jcHAgaW4gU291cmNl
cyAqLywKLQkJCQk5QjBGQjE5MTE0MERCNTc5MDAyMjU4OEYgLyogSFRUUFZhbGlkYXRpb24uY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMzcxQTY3Q0IxMUM2QzdEQjAwMDQ3QjhCIC8qIEh5cGhlbmF0
aW9uQ0YuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzc1Q0QyM0IxMTlENDRFQTAwQTJBODU5IC8q
IEh5cGhlbmF0aW9uTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJOTdFNDAyOEYxM0E2OTZFRDAw
OTEzRDY3IC8qIEljb25Db250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcAppbmRleCAyOTI1ODFiLi4w
NTcyM2MwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQ
YXJzZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJz
ZXJzLmNwcApAQCAtMTAyLDYgKzEwMiwxNCBAQCBzdGF0aWMgaW5saW5lIGJvb2wgc2tpcFZhbHVl
KGNvbnN0IFN0cmluZyYgc3RyLCB1bnNpZ25lZCYgcG9zKQogICAgIHJldHVybiBwb3MgIT0gc3Rh
cnQ7CiB9CiAKK2Jvb2wgaXNWYWxpZEhUVFBIZWFkZXJWYWx1ZShjb25zdCBTdHJpbmcmIG5hbWUp
Cit7CisgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHJlYWxseSBtYXRjaCBuYW1lIGFnYWluc3QK
KyAgICAvLyBmaWVsZC12YWx1ZSBpbiBzZWN0aW9uIDQuMiBvZiBSRkMgMjYxNi4KKworICAgIHJl
dHVybiAhbmFtZS5jb250YWlucygnXHInKSAmJiAhbmFtZS5jb250YWlucygnXG4nKTsKK30KKwog
Ly8gU2VlIFJGQyAyNjE2LCBTZWN0aW9uIDIuMi4KIGJvb2wgaXNSRkMyNjE2VG9rZW4oY29uc3Qg
U3RyaW5nJiBjaGFyYWN0ZXJzKQogewpAQCAtMTA5LDExICsxMTcsMTEgQEAgYm9vbCBpc1JGQzI2
MTZUb2tlbihjb25zdCBTdHJpbmcmIGNoYXJhY3RlcnMpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY2hhcmFjdGVycy5sZW5ndGgoKTsgKytpKSB7
CiAgICAgICAgIFVDaGFyIGMgPSBjaGFyYWN0ZXJzW2ldOwotICAgICAgICBpZiAoYyA+PSAweDgw
IHx8IGMgPD0gMHgxRiB8fCBjID09IDB4N0YKKyAgICAgICAgaWYgKGMgPD0gMHgyMCB8fCBjID49
IDB4N0YKICAgICAgICAgICAgIHx8IGMgPT0gJygnIHx8IGMgPT0gJyknIHx8IGMgPT0gJzwnIHx8
IGMgPT0gJz4nIHx8IGMgPT0gJ0AnCiAgICAgICAgICAgICB8fCBjID09ICcsJyB8fCBjID09ICc7
JyB8fCBjID09ICc6JyB8fCBjID09ICdcXCcgfHwgYyA9PSAnIicKICAgICAgICAgICAgIHx8IGMg
PT0gJy8nIHx8IGMgPT0gJ1snIHx8IGMgPT0gJ10nIHx8IGMgPT0gJz8nIHx8IGMgPT0gJz0nCi0g
ICAgICAgICAgICB8fCBjID09ICd7JyB8fCBjID09ICd9JyB8fCBjID09ICcgJyB8fCBjID09ICdc
dCcpCisgICAgICAgICAgICB8fCBjID09ICd7JyB8fCBjID09ICd9JykKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuaAppbmRleCA4ZTkzNzYzLi5kYTE0OWVmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5oCkBAIC01NSw2ICs1
NSw3IEBAIGVudW0gQ29udGVudFR5cGVPcHRpb25zRGlzcG9zaXRpb24gewogI2VuZGlmCiAKIENv
bnRlbnREaXNwb3NpdGlvblR5cGUgY29udGVudERpc3Bvc2l0aW9uVHlwZShjb25zdCBTdHJpbmcm
KTsKK2Jvb2wgaXNWYWxpZEhUVFBIZWFkZXJWYWx1ZShjb25zdCBTdHJpbmcmKTsKIGJvb2wgaXNS
RkMyNjE2VG9rZW4oY29uc3QgU3RyaW5nJik7CiBib29sIHBhcnNlSFRUUFJlZnJlc2goY29uc3Qg
U3RyaW5nJiByZWZyZXNoLCBib29sIGZyb21IdHRwRXF1aXZNZXRhLCBkb3VibGUmIGRlbGF5LCBT
dHJpbmcmIHVybCk7CiBkb3VibGUgcGFyc2VEYXRlKGNvbnN0IFN0cmluZyYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQVmFsaWRhdGlvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBWYWxpZGF0aW9uLmNwcApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTY0ODA1Yy4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBWYWxpZGF0aW9uLmNwcAorKysgL2Rldi9udWxsCkBA
IC0xLDY3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQWxleGV5IFByb3NrdXJ5
YWtvdiAoYXBAd2Via2l0Lm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCi0gKiAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCi0gKiAzLiAgTmVpdGhlciB0
aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBv
ZgotICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIAotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
Ci0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJIVFRQ
VmFsaWRhdGlvbi5oIgotCi0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgotI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLS8vIERldGVy
bWluZXMgaWYgYSBzdHJpbmcgaXMgYSB2YWxpZCB0b2tlbiwgYXMgZGVmaW5lZCBieQotLy8gInRv
a2VuIiBpbiBzZWN0aW9uIDIuMiBvZiBSRkMgMjYxNi4KLWJvb2wgaXNWYWxpZEhUVFBUb2tlbihj
b25zdCBTdHJpbmcmIG5hbWUpCi17Ci0gICAgdW5zaWduZWQgbGVuZ3RoID0gbmFtZS5sZW5ndGgo
KTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKLSAgICAgICAg
VUNoYXIgYyA9IG5hbWVbaV07Ci0KLSAgICAgICAgaWYgKGMgPj0gMTI3IHx8IGMgPD0gMzIpCi0g
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgaWYgKGMgPT0gJygnIHx8IGMgPT0g
JyknIHx8IGMgPT0gJzwnIHx8IGMgPT0gJz4nIHx8IGMgPT0gJ0AnCi0gICAgICAgICAgICB8fCBj
ID09ICcsJyB8fCBjID09ICc7JyB8fCBjID09ICc6JyB8fCBjID09ICdcXCcgfHwgYyA9PSAnXCIn
Ci0gICAgICAgICAgICB8fCBjID09ICcvJyB8fCBjID09ICdbJyB8fCBjID09ICddJyB8fCBjID09
ICc/JyB8fCBjID09ICc9JwotICAgICAgICAgICAgfHwgYyA9PSAneycgfHwgYyA9PSAnfScpCi0g
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgcmV0dXJuIGxlbmd0aCA+IDA7
Ci19Ci0KLWJvb2wgaXNWYWxpZEhUVFBIZWFkZXJWYWx1ZShjb25zdCBTdHJpbmcmIG5hbWUpCi17
Ci0gICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHJlYWxseSBtYXRjaCBuYW1lIGFnYWluc3QKLSAg
ICAvLyBmaWVsZC12YWx1ZSBpbiBzZWN0aW9uIDQuMiBvZiBSRkMgMjYxNi4KLQotICAgIHJldHVy
biAhbmFtZS5jb250YWlucygnXHInKSAmJiAhbmFtZS5jb250YWlucygnXG4nKTsKLX0KLQotfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQVmFsaWRhdGlv
bi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQVmFsaWRhdGlvbi5oCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MTM5MGQwLi4wMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFZhbGlkYXRpb24uaAorKysgL2Rldi9udWxs
CkBAIC0xLDQyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQWxleGV5IFByb3Nr
dXJ5YWtvdiAoYXBAd2Via2l0Lm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCi0gKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCi0gKiAzLiAgTmVpdGhl
ciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1l
cyBvZgotICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIAotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICog
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgSFRUUFZhbGlkYXRpb25faAotI2RlZmlu
ZSBIVFRQVmFsaWRhdGlvbl9oCi0KLSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLWJvb2wgaXNWYWxpZEhUVFBUb2tlbihjb25zdCBTdHJpbmcmKTsKLWJv
b2wgaXNWYWxpZEhUVFBIZWFkZXJWYWx1ZShjb25zdCBTdHJpbmcmKTsKLQotfQotCi0jZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCmluZGV4IDY1MTAyNTguLmE3NWMxZTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcApAQCAtMzgsNyArMzgsNiBAQAog
I2luY2x1ZGUgIkZpbGUuaCIKICNpbmNsdWRlICJIVE1MRG9jdW1lbnQuaCIKICNpbmNsdWRlICJI
VFRQUGFyc2Vycy5oIgotI2luY2x1ZGUgIkhUVFBWYWxpZGF0aW9uLmgiCiAjaW5jbHVkZSAiSGlz
dG9ncmFtU3VwcG9ydC5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgog
I2luY2x1ZGUgIk1lbW9yeUNhY2hlLmgiCkBAIC00ODgsNyArNDg3LDcgQEAgdm9pZCBYTUxIdHRw
UmVxdWVzdDo6b3Blbihjb25zdCBTdHJpbmcmIG1ldGhvZCwgY29uc3QgS1VSTCYgdXJsLCBib29s
IGFzeW5jLCBFeGMKIAogICAgIEFTU0VSVChtX3N0YXRlID09IFVOU0VOVCk7CiAKLSAgICBpZiAo
IWlzVmFsaWRIVFRQVG9rZW4obWV0aG9kKSkgeworICAgIGlmICghaXNSRkMyNjE2VG9rZW4obWV0
aG9kKSkgewogICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CiAgICAgICAgIHJldHVybjsKICAgICB9
CkBAIC05NjksNyArOTY4LDcgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6c2V0UmVxdWVzdEhlYWRl
cihjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmEKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIGlmICghaXNWYWxpZEhUVFBUb2tlbihuYW1lKSB8fCAhaXNWYWxp
ZEhUVFBIZWFkZXJWYWx1ZSh2YWx1ZSkpIHsKKyAgICBpZiAoIWlzUkZDMjYxNlRva2VuKG5hbWUp
IHx8ICFpc1ZhbGlkSFRUUEhlYWRlclZhbHVlKHZhbHVlKSkgewogICAgICAgICBlYyA9IFNZTlRB
WF9FUlI7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmlu
ZGV4IGZjNTZkYTYuLmJiYzg1YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTcgQEAKKzIwMTMtMDMtMjYgIENocmlzdG9waGUgRHVtZXogIDxjaC5kdW1lekBzaXNhLnNh
bXN1bmcuY29tPgorCisgICAgICAgIENvZGUgZHVwbGljYXRpb24gYmV0d2VlbiBIVFRQUGFyc2Vy
cyBhbmQgSFRUUFZhbGlkYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTExMzI4MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIENhbGwgaXNSRkMyNjE2VG9rZW4oKSBmcm9tIEhUVFBQYXJzZXJzLmggaW5z
dGVhZCBvZiBpc1ZhbGlkSFRUUFRva2VuKCkKKyAgICAgICAgZnJvbSBIVFRQVmFsaWRhdGlvbi5o
IG5vdyB0aGF0IHRoZXkgd2VyZSBtZXJnZWQgdG8gYXZvaWQgY29kZQorICAgICAgICBkdXBsaWNh
dGlvbi4KKworICAgICAgICAqIHNyYy9Bc3NvY2lhdGVkVVJMTG9hZGVyLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6QXNzb2NpYXRlZFVSTExvYWRlcjo6bG9hZEFzeW5jaHJvbm91c2x5KToKKwogMjAx
My0wMy0yNSAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmVu
YW1lIEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9Bc3NvY2lhdGVkVVJMTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL0Fzc29jaWF0ZWRVUkxMb2FkZXIuY3BwCmluZGV4IDZiZTk3NjMuLmRmNjI4NDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Fzc29jaWF0ZWRVUkxMb2Fk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Fzc29jaWF0ZWRVUkxMb2Fk
ZXIuY3BwCkBAIC0zNCw3ICszNCw3IEBACiAjaW5jbHVkZSAiQ3Jvc3NPcmlnaW5BY2Nlc3NDb250
cm9sLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmgiCiAjaW5jbHVkZSAi
RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmgiCi0jaW5jbHVkZSAiSFRUUFZhbGlkYXRp
b24uaCIKKyNpbmNsdWRlICJIVFRQUGFyc2Vycy5oIgogI2luY2x1ZGUgIlJlc291cmNlRXJyb3Iu
aCIKICNpbmNsdWRlICJTdWJyZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCkBA
IC03NSw3ICs3NSw3IEBAIHR5cGVkZWYgSGFzaFNldDxTdHJpbmcsIENhc2VGb2xkaW5nSGFzaD4g
SFRUUEhlYWRlclNldDsKIAogdm9pZCBIVFRQUmVxdWVzdEhlYWRlclZhbGlkYXRvcjo6dmlzaXRI
ZWFkZXIoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJTdHJpbmcmIHZhbHVlKQogewot
ICAgIG1faXNTYWZlID0gbV9pc1NhZmUgJiYgaXNWYWxpZEhUVFBUb2tlbihuYW1lKSAmJiBYTUxI
dHRwUmVxdWVzdDo6aXNBbGxvd2VkSFRUUEhlYWRlcihuYW1lKSAmJiBpc1ZhbGlkSFRUUEhlYWRl
clZhbHVlKHZhbHVlKTsKKyAgICBtX2lzU2FmZSA9IG1faXNTYWZlICYmIGlzUkZDMjYxNlRva2Vu
KG5hbWUpICYmIFhNTEh0dHBSZXF1ZXN0Ojppc0FsbG93ZWRIVFRQSGVhZGVyKG5hbWUpICYmIGlz
VmFsaWRIVFRQSGVhZGVyVmFsdWUodmFsdWUpOwogfQogCiAvLyBGSVhNRTogUmVtb3ZlIHRoaXMg
YW5kIHVzZSBXZWJDb3JlIGNvZGUgdGhhdCBkb2VzIHRoZSBzYW1lIHRoaW5nLgpAQCAtMzI3LDcg
KzMyNyw3IEBAIHZvaWQgQXNzb2NpYXRlZFVSTExvYWRlcjo6bG9hZEFzeW5jaHJvbm91c2x5KGNv
bnN0IFdlYlVSTFJlcXVlc3QmIHJlcXVlc3QsIFdlYlVSCiAgICAgV2ViVVJMUmVxdWVzdCBuZXdS
ZXF1ZXN0KHJlcXVlc3QpOwogICAgIGlmIChtX29wdGlvbnMudW50cnVzdGVkSFRUUCkgewogICAg
ICAgICBXZWJTdHJpbmcgbWV0aG9kID0gbmV3UmVxdWVzdC5odHRwTWV0aG9kKCk7Ci0gICAgICAg
IGFsbG93TG9hZCA9IGlzVmFsaWRIVFRQVG9rZW4obWV0aG9kKSAmJiBYTUxIdHRwUmVxdWVzdDo6
aXNBbGxvd2VkSFRUUE1ldGhvZChtZXRob2QpOworICAgICAgICBhbGxvd0xvYWQgPSBpc1JGQzI2
MTZUb2tlbihtZXRob2QpICYmIFhNTEh0dHBSZXF1ZXN0Ojppc0FsbG93ZWRIVFRQTWV0aG9kKG1l
dGhvZCk7CiAgICAgICAgIGlmIChhbGxvd0xvYWQpIHsKICAgICAgICAgICAgIG5ld1JlcXVlc3Qu
c2V0SFRUUE1ldGhvZChYTUxIdHRwUmVxdWVzdDo6dXBwZXJjYXNlS25vd25IVFRQTWV0aG9kKG1l
dGhvZCkpOwogICAgICAgICAgICAgSFRUUFJlcXVlc3RIZWFkZXJWYWxpZGF0b3IgdmFsaWRhdG9y
Owo=
</data>
<flag name="review"
          id="216856"
          type_id="1"
          status="+"
          setter="ap"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>195105</attachid>
            <date>2013-03-26 10:12:53 -0700</date>
            <delta_ts>2013-03-26 11:02:21 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>113283_httpToken_duplication.patch</filename>
            <type>text/plain</type>
            <size>21127</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggMWJkNGVkZi4uMzliMDAzOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTIwNzQsNyArMjA3NCw2IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0
Zm9ybS9uZXR3b3JrL0hUVFBIZWFkZXJNYXAuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9IVFRQ
UGFyc2Vycy5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL0hUVFBSZXF1ZXN0LmNwcAotICAgIHBs
YXRmb3JtL25ldHdvcmsvSFRUUFZhbGlkYXRpb24uY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9N
SU1FSGVhZGVyLmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0YXRlTm90aWZpZXIu
Y3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9QYXJzZWRDb250ZW50VHlwZS5jcHAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpp
bmRleCAzN2MxYzVhLi4yOWNhZTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMTMt
MDMtMjYgIENocmlzdG9waGUgRHVtZXogIDxjaC5kdW1lekBzaXNhLnNhbXN1bmcuY29tPgorCisg
ICAgICAgIENvZGUgZHVwbGljYXRpb24gYmV0d2VlbiBIVFRQUGFyc2VycyBhbmQgSFRUUFZhbGlk
YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEx
MzI4MworCisgICAgICAgIFJldmlld2VkIGJ5IEFsZXhleSBQcm9za3VyeWFrb3YuCisKKyAgICAg
ICAgTWVyZ2VkIGlzVmFsaWRIVFRQVG9rZW4oKSBmcm9tIEhUVFBWYWxpZGF0aW9uLmggYW5kIGlz
UkZDMjYxNlRva2VuKCkgZnJvbQorICAgICAgICBIVFRQUGFyc2Vycy5oLiBUaGV5IHdlcmUgZG9p
bmcgZXhhY3RseSB0aGUgc2FtZSB0aGluZyBhbmQgdGhlaXIKKyAgICAgICAgaW1wbGVtZW50YXRp
b24gd2FzIGFsbW9zdCB0aGUgc2FtZS4KKworICAgICAgICBSZW1vdmVkIEhUVFBWYWxpZGF0aW9u
LiogYW5kIG1vdmVkIHJlbWFpbmluZyBjb2RlIHRvIEhUVFBQYXJzZXJzLiogYXMgdGhpcworICAg
ICAgICBzZWVtcyBsaWtlIHRoZSBwcm9wZXIgcGxhY2UgYW5kIGl0IHNlZW1zIG9kZCB0byBrZWVw
IEhUVFBWYWxpZGF0aW9uIGZvcgorICAgICAgICBqdXN0IG9uZSBmdW5jdGlvbi4KKworICAgICAg
ICBObyBuZXcgdGVzdHMsIG5vIGJlaGF2aW9yIGNoYW5nZSBmb3IgbGF5b3V0IHRlc3RzLgorCisg
ICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToK
KyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAg
KiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnZjeHBy
b2ovV2ViQ29yZS52Y3hwcm9qOgorICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZj
eHByb2ouZmlsdGVyczoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjppc1ZhbGlkSFRUUEhlYWRlclZhbHVlKToKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6aXNWYWxpZEhUVFBUb2tlbik6IEltcGxlbWVudGF0aW9uIGlzIHNs
aWdodGx5IHNpbXBsaWZpZWQgYmFzZWQgb24KKyAgICAgICAgaXNWYWxpZEhUVFBUb2tlbigpIGZy
b20gSFRUUFZhbGlkYXRpb24uY3BwLiAoYyA+PSAweDgwIHx8IGMgPT0gMHg3RikgaXMKKyAgICAg
ICAgcmVwbGFjZWQgYnkgKGMgPj0gMHg3RikuIChjIDw9IDB4MUYgfHwgIGMgPT0gJyAnIHx8IGMg
PT0gJ1x0JykgaXMgcmVwbGFjZWQKKyAgICAgICAgYnkgKGMgPD0gMHgyMCkuIFRob3NlIGV4cHJl
c3Npb25zIGFyZSBzaG9ydGVyIGJ1dCBlcXVpdmFsZW50LgorICAgICAgICAoV2ViQ29yZTo6Y29u
dGVudERpc3Bvc2l0aW9uVHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9IVFRQUGFy
c2Vycy5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvSFRUUFZhbGlkYXRpb24uY3BwOiBS
ZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvSFRUUFZhbGlkYXRpb24uaDogUmVt
b3ZlZC4KKyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuY3BwOiBTdG9wIGluY2x1ZGluZyBI
VFRQVmFsaWRhdGlvbi5oLgorCiAyMDEzLTAzLTI2ICBBbGV4YW5kZXIgUGF2bG92ICA8YXBhdmxv
dkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogW0VsZW1lbnRzXSBVbmFi
bGUgdG8gIkVkaXQgYXMgSFRNTCIgWEhUTUwvU1ZHIGRvY3VtZW50cy4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtCmluZGV4IGYyNzAzNjkuLmM4NmQwMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZp
bGUubGlzdC5hbQpAQCAtNTkxMyw4ICs1OTEzLDYgQEAgd2ViY29yZV9wbGF0Zm9ybV9zb3VyY2Vz
ICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmggXAog
CVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFJlcXVlc3QuY3BwIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBSZXF1ZXN0LmggXAotCVNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFZhbGlkYXRpb24uY3BwIFwKLQlTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBWYWxpZGF0aW9uLmggXAogCVNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvTUlNRUhlYWRlci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvTUlNRUhlYWRlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L05ldHdvcmtpbmdDb250ZXh0LmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0
LnByaSBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKaW5kZXggYWJjZmIwOC4uOGJiNzM2OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9UYXJnZXQucHJpCkBAIC0xMTAxLDcgKzExMDEsNiBAQCBTT1VSQ0VTICs9IFwKICAgICBwbGF0
Zm9ybS9uZXR3b3JrL0hUVFBIZWFkZXJNYXAuY3BwIFwKICAgICBwbGF0Zm9ybS9uZXR3b3JrL0hU
VFBQYXJzZXJzLmNwcCBcCiAgICAgcGxhdGZvcm0vbmV0d29yay9IVFRQUmVxdWVzdC5jcHAgXAot
ICAgIHBsYXRmb3JtL25ldHdvcmsvSFRUUFZhbGlkYXRpb24uY3BwIFwKICAgICBwbGF0Zm9ybS9u
ZXR3b3JrL01JTUVIZWFkZXIuY3BwIFwKICAgICBwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdGF0
ZU5vdGlmaWVyLmNwcCBcCiAgICAgcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Np
b25TdHViLmNwcCBcCkBAIC0yMzYzLDcgKzIzNjIsNiBAQCBIRUFERVJTICs9IFwKICAgICBwbGF0
Zm9ybS9uZXR3b3JrL0hUVFBIZWFkZXJNYXAuaCBcCiAgICAgcGxhdGZvcm0vbmV0d29yay9IVFRQ
UGFyc2Vycy5oIFwKICAgICBwbGF0Zm9ybS9uZXR3b3JrL0hUVFBSZXF1ZXN0LmggXAotICAgIHBs
YXRmb3JtL25ldHdvcmsvSFRUUFZhbGlkYXRpb24uaCBcCiAgICAgcGxhdGZvcm0vbmV0d29yay9I
VFRQU3RhdHVzQ29kZXMuaCBcCiAgICAgcGxhdGZvcm0vbmV0d29yay9NSU1FU25pZmZpbmcuaCBc
CiAgICAgcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaCBcCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKaW5kZXggZmQzNmFmMS4uMTRmMzliMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtNDM3MCw4
ICs0MzcwLDYgQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmgn
LAogICAgICAgICAgICAgJ3BsYXRmb3JtL25ldHdvcmsvSFRUUFJlcXVlc3QuY3BwJywKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL0hUVFBSZXF1ZXN0LmgnLAotICAgICAgICAgICAgJ3Bs
YXRmb3JtL25ldHdvcmsvSFRUUFZhbGlkYXRpb24uY3BwJywKLSAgICAgICAgICAgICdwbGF0Zm9y
bS9uZXR3b3JrL0hUVFBWYWxpZGF0aW9uLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL25ldHdv
cmsvTUlNRUhlYWRlci5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL25ldHdvcmsvTmV0d29y
a1N0YXRlTm90aWZpZXIuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL05ldHdv
cmtTdGF0ZU5vdGlmaWVyLmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52
Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvagppbmRleCA3NjYxZTEzLi42ZjY1NWZlIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtMzMxMDIsMTQgKzMzMTAyLDYgQEAKIAkJ
CQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRm
b3JtXG5ldHdvcmtcSFRUUFZhbGlkYXRpb24uY3BwIgotCQkJCQk+Ci0JCQkJPC9GaWxlPgotCQkJ
CTxGaWxlCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cbmV0d29ya1xIVFRQVmFsaWRh
dGlvbi5oIgotCQkJCQk+Ci0JCQkJPC9GaWxlPgotCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0
aD0iLi5ccGxhdGZvcm1cbmV0d29ya1xNSU1FSGVhZGVyLmNwcCIKIAkJCQkJPgogCQkJCTwvRmls
ZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZj
eHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCmlu
ZGV4IDc2NTY2OGYuLjY3YmYxN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
dmN4cHJvai9XZWJDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hw
cm9qL1dlYkNvcmUudmN4cHJvagpAQCAtNDYzMCw3ICs0NjMwLDYgQEAKICAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXHBsYXRmb3JtXG5ldHdvcmtcSFRUUEhlYWRlck1hcC5jcHAiIC8+CiAgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXEhUVFBQYXJzZXJzLmNwcCIg
Lz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXG5ldHdvcmtcSFRUUFJlcXVl
c3QuY3BwIiAvPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cbmV0d29ya1xI
VFRQVmFsaWRhdGlvbi5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9y
bVxuZXR3b3JrXE1JTUVIZWFkZXIuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
cGxhdGZvcm1cbmV0d29ya1xOZXR3b3JrU3RhdGVOb3RpZmllci5jcHAiIC8+CiAgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXE5ldHdvcmtTdG9yYWdlU2Vzc2lvblN0
dWIuY3BwIj4KQEAgLTExOTEwLDcgKzExOTA5LDYgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXHBsYXRmb3JtXG5ldHdvcmtcSFRUUEhlYWRlck1hcC5oIiAvPgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5ccGxhdGZvcm1cbmV0d29ya1xIVFRQUGFyc2Vycy5oIiAvPgogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cbmV0d29ya1xIVFRQUmVxdWVzdC5oIiAvPgotICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cbmV0d29ya1xIVFRQVmFsaWRhdGlvbi5o
IiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cbmV0d29ya1xNSU1FSGVh
ZGVyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXE5l
dHdvcmtpbmdDb250ZXh0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9y
bVxuZXR3b3JrXE5ldHdvcmtTdGF0ZU5vdGlmaWVyLmgiIC8+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKaW5kZXggZWI5
N2NmZi4uZGVhMzhkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9q
L1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4
cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycwpAQCAtMzI3Niw5ICszMjc2LDYgQEAKICAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXG5ldHdvcmtcSFRUUFJlcXVlc3QuY3BwIj4K
ICAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cbmV0d29yazwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxl
PgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cbmV0d29ya1xIVFRQVmFsaWRh
dGlvbi5jcHAiPgotICAgICAgPEZpbHRlcj5wbGF0Zm9ybVxuZXR3b3JrPC9GaWx0ZXI+Ci0gICAg
PC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxuZXR3b3Jr
XE1JTUVIZWFkZXIuY3BwIj4KICAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cbmV0d29yazwvRmlsdGVy
PgogICAgIDwvQ2xDb21waWxlPgpAQCAtMTAwODMsOSArMTAwODAsNiBAQAogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cbmV0d29ya1xIVFRQUmVxdWVzdC5oIj4KICAgICAgIDxG
aWx0ZXI+cGxhdGZvcm1cbmV0d29yazwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgotICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cbmV0d29ya1xIVFRQVmFsaWRhdGlvbi5oIj4K
LSAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cbmV0d29yazwvRmlsdGVyPgotICAgIDwvQ2xJbmNsdWRl
PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cbmV0d29ya1xNSU1FSGVhZGVy
LmgiPgogICAgICAgPEZpbHRlcj5wbGF0Zm9ybVxuZXR3b3JrPC9GaWx0ZXI+CiAgICAgPC9DbElu
Y2x1ZGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggOTg2NjgwMy4uYTllYTM3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzgwOCw4ICszODA4LDYgQEAKIAkJ
OUExQjZGOTcxNTg4NjlDODAwMTFBOEM0IC8qIEpTRE9NU3RyaW5nTGlzdEN1c3RvbS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QTFCNkY5NjE1ODg2
OUM4MDAxMUE4QzQgLyogSlNET01TdHJpbmdMaXN0Q3VzdG9tLmNwcCAqLzsgfTsKIAkJOUE5Q0VG
OEQxNjNCM0VBMTAwREU3RUZFIC8qIEV4Y2x1c2lvblNoYXBlT3V0c2lkZUluZm8uY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUE5Q0VGOEIxNjNCM0VB
MTAwREU3RUZFIC8qIEV4Y2x1c2lvblNoYXBlT3V0c2lkZUluZm8uY3BwICovOyB9OwogCQk5QTlD
RUY4RTE2M0IzRUExMDBERTdFRkUgLyogRXhjbHVzaW9uU2hhcGVPdXRzaWRlSW5mby5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUE5Q0VGOEMxNjNCM0VB
MTAwREU3RUZFIC8qIEV4Y2x1c2lvblNoYXBlT3V0c2lkZUluZm8uaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk5QjBGQjE5MTE0MERCNTc5MDAyMjU4
OEYgLyogSFRUUFZhbGlkYXRpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOUIwRkIxOEYxNDBEQjU3OTAwMjI1ODhGIC8qIEhUVFBWYWxpZGF0aW9u
LmNwcCAqLzsgfTsKLQkJOUIwRkIxOTIxNDBEQjU3OTAwMjI1ODhGIC8qIEhUVFBWYWxpZGF0aW9u
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjBGQjE5
MDE0MERCNTc5MDAyMjU4OEYgLyogSFRUUFZhbGlkYXRpb24uaCAqLzsgfTsKIAkJOUIxQUIwN0Mx
NjQ4QzdDNDAwNTFGM0YyIC8qIEpTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb25DdXN0b20uY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIxQUIwN0Ix
NjQ4QzdDNDAwNTFGM0YyIC8qIEpTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb25DdXN0b20uY3Bw
ICovOyB9OwogCQk5QjI0REU4RTE1MTk0Qjk1MDBDNTlDMjcgLyogSFRNTEJESUVsZW1lbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMjRERThDMTUx
OTRCOTUwMEM1OUMyNyAvKiBIVE1MQkRJRWxlbWVudC5oICovOyB9OwogCQk5QjJCN0FDMTE1MDk4
NTBBMDA4OTMyQ0MgLyogTWljcm9EYXRhSXRlbVZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMkY3Q0Y3MTQ1NjIxMjAwMDdGOEI1MCAvKiBN
aWNyb0RhdGFJdGVtVmFsdWUuY3BwICovOyB9OwpAQCAtMTEzNjQsOCArMTEzNjIsNiBAQAogCQk5
QTFCNkY5NjE1ODg2OUM4MDAxMUE4QzQgLyogSlNET01TdHJpbmdMaXN0Q3VzdG9tLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRE9NU3RyaW5nTGlzdEN1c3RvbS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlBOUNFRjhCMTYzQjNFQTEwMERFN0VG
RSAvKiBFeGNsdXNpb25TaGFwZU91dHNpZGVJbmZvLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEV4Y2x1c2lvblNoYXBlT3V0c2lkZUluZm8uY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk5QTlDRUY4QzE2M0IzRUExMDBERTdFRkUgLyogRXhjbHVzaW9u
U2hhcGVPdXRzaWRlSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFeGNs
dXNpb25TaGFwZU91dHNpZGVJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTlC
MEZCMThGMTQwREI1NzkwMDIyNTg4RiAvKiBIVFRQVmFsaWRhdGlvbi5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIVFRQVmFsaWRhdGlvbi5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTlCMEZCMTkwMTQwREI1NzkwMDIyNTg4RiAvKiBIVFRQVmFsaWRh
dGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIVFRQVmFsaWRhdGlvbi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QjFBQjA3OTE2NDhDNjlEMDA1MUYzRjIg
LyogSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEhUTUxGb3JtQ29udHJvbHND
b2xsZWN0aW9uLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUIxQUIwN0IxNjQ4
QzdDNDAwNTFGM0YyIC8qIEpTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb25DdXN0b20uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNIVE1MRm9ybUNvbnRyb2xzQ29s
bGVjdGlvbkN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCMjRERThD
MTUxOTRCOTUwMEM1OUMyNyAvKiBIVE1MQkRJRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBIVE1MQkRJRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMTYyOTYsOCArMTYyOTIsNiBAQAogCQkJCTUxNEM3NjVFMENFOTIzQTEwMDdFRjNDRCAv
KiBIVFRQUGFyc2Vycy5oICovLAogCQkJCUE1RDIxNEFFMTJFOTA1NTEwMDkwRjM3MCAvKiBIVFRQ
UmVxdWVzdC5jcHAgKi8sCiAJCQkJQTVEMjE0QUYxMkU5MDU1MTAwOTBGMzcwIC8qIEhUVFBSZXF1
ZXN0LmggKi8sCi0JCQkJOUIwRkIxOEYxNDBEQjU3OTAwMjI1ODhGIC8qIEhUVFBWYWxpZGF0aW9u
LmNwcCAqLywKLQkJCQk5QjBGQjE5MDE0MERCNTc5MDAyMjU4OEYgLyogSFRUUFZhbGlkYXRpb24u
aCAqLywKIAkJCQkzN0REQ0Q5MjEzODQ0RkQ1MDAwOEI3OTMgLyogTUlNRUhlYWRlci5jcHAgKi8s
CiAJCQkJMzdERENEOTMxMzg0NEZENTAwMDhCNzkzIC8qIE1JTUVIZWFkZXIuaCAqLywKIAkJCQk2
MjhEMjE0QjEyMTMxRUQxMDA1NURDRkMgLyogTmV0d29ya2luZ0NvbnRleHQuaCAqLywKQEAgLTI0
ODI1LDcgKzI0ODE5LDYgQEAKIAkJCQk1MTRDNzY3MTBDRTkyM0ExMDA3RUYzQ0QgLyogSFRUUEhl
YWRlck1hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE0Qzc2NzMwQ0U5MjNBMTAwN0VGM0NEIC8q
IEhUVFBQYXJzZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNUQyMTRCMjEyRTkwNTUxMDA5MEYz
NzAgLyogSFRUUFJlcXVlc3QuaCBpbiBIZWFkZXJzICovLAotCQkJCTlCMEZCMTkyMTQwREI1Nzkw
MDIyNTg4RiAvKiBIVFRQVmFsaWRhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzc1Q0QyMzIx
MTlENDNDODAwQTJBODU5IC8qIEh5cGhlbmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjc1
MzU2RTBCMDUzODE0MDAyQ0U2NEYgLyogSWNvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTdFNDAy
OTAxM0E2OTZFRDAwOTEzRDY3IC8qIEljb25Db250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKQEAg
LTI4MTU5LDcgKzI4MTUyLDYgQEAKIAkJCQkwQjhDNTZENDBGMjg2MjdGMDAwNTAyRTEgLyogSFRU
UEhlYWRlck1hcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTRDNzY3MjBDRTkyM0ExMDA3RUYz
Q0QgLyogSFRUUFBhcnNlcnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTVEMjE0QjExMkU5MDU1
MTAwOTBGMzcwIC8qIEhUVFBSZXF1ZXN0LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTlCMEZCMTkx
MTQwREI1NzkwMDIyNTg4RiAvKiBIVFRQVmFsaWRhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkzNzFBNjdDQjExQzZDN0RCMDAwNDdCOEIgLyogSHlwaGVuYXRpb25DRi5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkzNzVDRDIzQjExOUQ0NEVBMDBBMkE4NTkgLyogSHlwaGVuYXRpb25NYWMubW0g
aW4gU291cmNlcyAqLywKIAkJCQk5N0U0MDI4RjEzQTY5NkVEMDA5MTNENjcgLyogSWNvbkNvbnRy
b2xsZXIuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvSFRUUFBhcnNlcnMuY3BwCmluZGV4IDI5MjU4MWIuLjliZDIwNzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwCkBAIC0xMDIsMTgg
KzEwMiwyNiBAQCBzdGF0aWMgaW5saW5lIGJvb2wgc2tpcFZhbHVlKGNvbnN0IFN0cmluZyYgc3Ry
LCB1bnNpZ25lZCYgcG9zKQogICAgIHJldHVybiBwb3MgIT0gc3RhcnQ7CiB9CiAKK2Jvb2wgaXNW
YWxpZEhUVFBIZWFkZXJWYWx1ZShjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgLy8gRklYTUU6
IFRoaXMgc2hvdWxkIHJlYWxseSBtYXRjaCBuYW1lIGFnYWluc3QKKyAgICAvLyBmaWVsZC12YWx1
ZSBpbiBzZWN0aW9uIDQuMiBvZiBSRkMgMjYxNi4KKworICAgIHJldHVybiAhbmFtZS5jb250YWlu
cygnXHInKSAmJiAhbmFtZS5jb250YWlucygnXG4nKTsKK30KKwogLy8gU2VlIFJGQyAyNjE2LCBT
ZWN0aW9uIDIuMi4KLWJvb2wgaXNSRkMyNjE2VG9rZW4oY29uc3QgU3RyaW5nJiBjaGFyYWN0ZXJz
KQorYm9vbCBpc1ZhbGlkSFRUUFRva2VuKGNvbnN0IFN0cmluZyYgY2hhcmFjdGVycykKIHsKICAg
ICBpZiAoY2hhcmFjdGVycy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY2hhcmFjdGVycy5sZW5ndGgoKTsgKytpKSB7CiAgICAg
ICAgIFVDaGFyIGMgPSBjaGFyYWN0ZXJzW2ldOwotICAgICAgICBpZiAoYyA+PSAweDgwIHx8IGMg
PD0gMHgxRiB8fCBjID09IDB4N0YKKyAgICAgICAgaWYgKGMgPD0gMHgyMCB8fCBjID49IDB4N0YK
ICAgICAgICAgICAgIHx8IGMgPT0gJygnIHx8IGMgPT0gJyknIHx8IGMgPT0gJzwnIHx8IGMgPT0g
Jz4nIHx8IGMgPT0gJ0AnCiAgICAgICAgICAgICB8fCBjID09ICcsJyB8fCBjID09ICc7JyB8fCBj
ID09ICc6JyB8fCBjID09ICdcXCcgfHwgYyA9PSAnIicKICAgICAgICAgICAgIHx8IGMgPT0gJy8n
IHx8IGMgPT0gJ1snIHx8IGMgPT0gJ10nIHx8IGMgPT0gJz8nIHx8IGMgPT0gJz0nCi0gICAgICAg
ICAgICB8fCBjID09ICd7JyB8fCBjID09ICd9JyB8fCBjID09ICcgJyB8fCBjID09ICdcdCcpCisg
ICAgICAgICAgICB8fCBjID09ICd7JyB8fCBjID09ICd9JykKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE0OSw3ICsxNTcsNyBAQCBDb250ZW50RGlz
cG9zaXRpb25UeXBlIGNvbnRlbnREaXNwb3NpdGlvblR5cGUoY29uc3QgU3RyaW5nJiBjb250ZW50
RGlzcG9zaXRpb24pCiAgICAgLy8gICBDb250ZW50LURpc3Bvc2l0aW9uOiBuYW1lPSJmaWxlIgog
ICAgIC8vCiAgICAgLy8gd2l0aG91dCBhIGRpc3Bvc2l0aW9uIHRva2VuLi4uIHNjcmVlbiB0aG9z
ZSBvdXQuCi0gICAgaWYgKCFpc1JGQzI2MTZUb2tlbihkaXNwb3NpdGlvblR5cGUpKQorICAgIGlm
ICghaXNWYWxpZEhUVFBUb2tlbihkaXNwb3NpdGlvblR5cGUpKQogICAgICAgICByZXR1cm4gQ29u
dGVudERpc3Bvc2l0aW9uTm9uZTsKIAogICAgIC8vIFdlIGhhdmUgYSBjb250ZW50LWRpc3Bvc2l0
aW9uIG9mICJhdHRhY2htZW50IiBvciB1bmtub3duLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9IVFRQUGFyc2Vycy5oCmluZGV4IDhlOTM3NjMuLmE5NmUxZTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmgKQEAgLTU1LDcgKzU1
LDggQEAgZW51bSBDb250ZW50VHlwZU9wdGlvbnNEaXNwb3NpdGlvbiB7CiAjZW5kaWYKIAogQ29u
dGVudERpc3Bvc2l0aW9uVHlwZSBjb250ZW50RGlzcG9zaXRpb25UeXBlKGNvbnN0IFN0cmluZyYp
OwotYm9vbCBpc1JGQzI2MTZUb2tlbihjb25zdCBTdHJpbmcmKTsKK2Jvb2wgaXNWYWxpZEhUVFBI
ZWFkZXJWYWx1ZShjb25zdCBTdHJpbmcmKTsKK2Jvb2wgaXNWYWxpZEhUVFBUb2tlbihjb25zdCBT
dHJpbmcmKTsKIGJvb2wgcGFyc2VIVFRQUmVmcmVzaChjb25zdCBTdHJpbmcmIHJlZnJlc2gsIGJv
b2wgZnJvbUh0dHBFcXVpdk1ldGEsIGRvdWJsZSYgZGVsYXksIFN0cmluZyYgdXJsKTsKIGRvdWJs
ZSBwYXJzZURhdGUoY29uc3QgU3RyaW5nJik7CiBTdHJpbmcgZmlsZW5hbWVGcm9tSFRUUENvbnRl
bnREaXNwb3NpdGlvbihjb25zdCBTdHJpbmcmKTsgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBWYWxpZGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvSFRUUFZhbGlkYXRpb24uY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA5NjQ4MDVjLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvSFRUUFZhbGlkYXRpb24uY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNjcgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBbGV4ZXkgUHJvc2t1cnlha292IChhcEB3ZWJraXQu
b3JnKQotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxl
IENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4gCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElN
UExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQK
LSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkhUVFBWYWxpZGF0aW9uLmgiCi0K
LSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotLy8gRGV0ZXJtaW5lcyBpZiBhIHN0cmlu
ZyBpcyBhIHZhbGlkIHRva2VuLCBhcyBkZWZpbmVkIGJ5Ci0vLyAidG9rZW4iIGluIHNlY3Rpb24g
Mi4yIG9mIFJGQyAyNjE2LgotYm9vbCBpc1ZhbGlkSFRUUFRva2VuKGNvbnN0IFN0cmluZyYgbmFt
ZSkKLXsKLSAgICB1bnNpZ25lZCBsZW5ndGggPSBuYW1lLmxlbmd0aCgpOwotICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgewotICAgICAgICBVQ2hhciBjID0gbmFtZVtp
XTsKLQotICAgICAgICBpZiAoYyA+PSAxMjcgfHwgYyA8PSAzMikKLSAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgICAgICBpZiAoYyA9PSAnKCcgfHwgYyA9PSAnKScgfHwgYyA9PSAnPCcg
fHwgYyA9PSAnPicgfHwgYyA9PSAnQCcKLSAgICAgICAgICAgIHx8IGMgPT0gJywnIHx8IGMgPT0g
JzsnIHx8IGMgPT0gJzonIHx8IGMgPT0gJ1xcJyB8fCBjID09ICdcIicKLSAgICAgICAgICAgIHx8
IGMgPT0gJy8nIHx8IGMgPT0gJ1snIHx8IGMgPT0gJ10nIHx8IGMgPT0gJz8nIHx8IGMgPT0gJz0n
Ci0gICAgICAgICAgICB8fCBjID09ICd7JyB8fCBjID09ICd9JykKLSAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gbGVuZ3RoID4gMDsKLX0KLQotYm9vbCBpc1Zh
bGlkSFRUUEhlYWRlclZhbHVlKGNvbnN0IFN0cmluZyYgbmFtZSkKLXsKLSAgICAvLyBGSVhNRTog
VGhpcyBzaG91bGQgcmVhbGx5IG1hdGNoIG5hbWUgYWdhaW5zdAotICAgIC8vIGZpZWxkLXZhbHVl
IGluIHNlY3Rpb24gNC4yIG9mIFJGQyAyNjE2LgotCi0gICAgcmV0dXJuICFuYW1lLmNvbnRhaW5z
KCdccicpICYmICFuYW1lLmNvbnRhaW5zKCdcbicpOwotfQotCi19CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBWYWxpZGF0aW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBWYWxpZGF0aW9uLmgKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDUxMzkwZDAuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9IVFRQVmFsaWRhdGlvbi5oCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBbGV4ZXkgUHJvc2t1cnlha292IChhcEB3ZWJr
aXQub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgot
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFw
cGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRz
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4gCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2lmbmRlZiBIVFRQVmFsaWRhdGlvbl9oCi0jZGVmaW5lIEhUVFBWYWxpZGF0aW9u
X2gKLQotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
Ym9vbCBpc1ZhbGlkSFRUUFRva2VuKGNvbnN0IFN0cmluZyYpOwotYm9vbCBpc1ZhbGlkSFRUUEhl
YWRlclZhbHVlKGNvbnN0IFN0cmluZyYpOwotCi19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9Y
TUxIdHRwUmVxdWVzdC5jcHAKaW5kZXggNjUxMDI1OC4uZTY5YmZmZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94
bWwvWE1MSHR0cFJlcXVlc3QuY3BwCkBAIC0zOCw3ICszOCw2IEBACiAjaW5jbHVkZSAiRmlsZS5o
IgogI2luY2x1ZGUgIkhUTUxEb2N1bWVudC5oIgogI2luY2x1ZGUgIkhUVFBQYXJzZXJzLmgiCi0j
aW5jbHVkZSAiSFRUUFZhbGlkYXRpb24uaCIKICNpbmNsdWRlICJIaXN0b2dyYW1TdXBwb3J0Lmgi
CiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiTWVtb3J5
Q2FjaGUuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggYzhlNmE2ZC4uNTkwYTk1OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMy0wMy0yNiAg
Q2hyaXN0b3BoZSBEdW1leiAgPGNoLmR1bWV6QHNpc2Euc2Ftc3VuZy5jb20+CisKKyAgICAgICAg
Q29kZSBkdXBsaWNhdGlvbiBiZXR3ZWVuIEhUVFBQYXJzZXJzIGFuZCBIVFRQVmFsaWRhdGlvbgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEzMjgzCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleGV5IFByb3NrdXJ5YWtvdi4KKworICAgICAgICAqIHNy
Yy9Bc3NvY2lhdGVkVVJMTG9hZGVyLmNwcDogSW5jbHVkZSBIVFRQUGFyc2Vycy5oIGluc3RlYWQK
KyAgICAgICAgb2YgSFRUUFZhbGlkYXRpb24uaCB0byB1c2UgaXNWYWxpZEhUVFBUb2tlbigpLgor
CiAyMDEzLTAzLTI2ICBZdWZlbmcgU2hlbiAgPG1pbGV0dXNAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIENvbnZlcnQgV2ViSW5wdXRFdmVudDo6R2VzdHVyZURvdWJsZVRhcCB0byAgUGxhdGZvcm1F
dmVudDo6Tm9UeXBlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3Nv
Y2lhdGVkVVJMTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Fzc29jaWF0
ZWRVUkxMb2FkZXIuY3BwCmluZGV4IDZiZTk3NjMuLmIyODE3NTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Fzc29jaWF0ZWRVUkxMb2FkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Fzc29jaWF0ZWRVUkxMb2FkZXIuY3BwCkBAIC0zNCw3ICsz
NCw3IEBACiAjaW5jbHVkZSAiQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmgiCiAjaW5jbHVkZSAi
RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyQ2xpZW50LmgiCi0jaW5jbHVkZSAiSFRUUFZhbGlkYXRpb24uaCIKKyNpbmNsdWRlICJI
VFRQUGFyc2Vycy5oIgogI2luY2x1ZGUgIlJlc291cmNlRXJyb3IuaCIKICNpbmNsdWRlICJTdWJy
ZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>