<?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>219139</bug_id>
          
          <creation_ts>2020-11-18 18:40:52 -0800</creation_ts>
          <short_desc>Support WEBGL_multi_draw extension</short_desc>
          <delta_ts>2021-01-20 17:42:56 -0800</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>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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>220753</blocked>
    
    <blocked>219140</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kenneth Russell">kbr</reporter>
          <assigned_to name="Kenneth Russell">kbr</assigned_to>
          <cc>annulen</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>graouts</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>jdarpinian</cc>
    
    <cc>kkinnunen</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>kpiddington</cc>
    
    <cc>msokalski</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1708935</commentid>
    <comment_count>0</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2020-11-18 18:40:52 -0800</bug_when>
    <thetext>https://www.khronos.org/registry/webgl/extensions/WEBGL_multi_draw/ has been moved to Community Approved status. It&apos;s shipping in Chromium and well supported by ANGLE.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1710103</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-11-25 21:34:21 -0800</bug_when>
    <thetext>&lt;rdar://problem/71742593&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1720772</commentid>
    <comment_count>2</comment_count>
      <attachid>417930</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2021-01-19 17:27:41 -0800</bug_when>
    <thetext>Created attachment 417930
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1720933</commentid>
    <comment_count>3</comment_count>
      <attachid>417930</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-01-20 11:08:41 -0800</bug_when>
    <thetext>Comment on attachment 417930
Patch

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

looks consistent

&gt; Source/WebCore/html/canvas/WebGLMultiDraw.cpp:136
&gt; +    GCGLsizei drawcount)

So maybe the line breaking loses its meaning when the below code is anyway relying on user handling long lines? (The arg list here and in the header seems a bit unorthodox?)

&gt; Source/WebCore/platform/graphics/ExtensionsGL.h:353
&gt; +    // GL_ANGLE_multi_draw

I&apos;ve been trying to move stuff out of the ExtensionsGL. If it fits your structure, these could also perhaps be of form GraphicsContextGL::multiDrawArrays(), etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1720958</commentid>
    <comment_count>4</comment_count>
      <attachid>417930</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2021-01-20 11:55:36 -0800</bug_when>
    <thetext>Comment on attachment 417930
Patch

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

&gt; Source/WebCore/html/canvas/WebGLMultiDraw.cpp:92
&gt; +void WebGLMultiDraw::multiDrawArraysInstancedWEBGL(
&gt; +    GCGLenum mode,
&gt; +    Int32List firstsList,
&gt; +    GCGLuint firstsOffset,
&gt; +    Int32List countsList,
&gt; +    GCGLuint countsOffset,
&gt; +    Int32List instanceCountsList,
&gt; +    GCGLuint instanceCountsOffset,
&gt; +    GCGLsizei drawcount)
&gt; +{

Nit: We do parameters on one line (same for elsewhere in the patch)

&gt; Source/WebCore/html/canvas/WebGLMultiDraw.h:39
&gt; +        using VariantType = Variant&lt;RefPtr&lt;TypedArray&gt;, Vector&lt;DataType&gt;&gt;;

Could we give this a better name?

&gt;&gt; Source/WebCore/platform/graphics/ExtensionsGL.h:353
&gt;&gt; +    // GL_ANGLE_multi_draw
&gt; 
&gt; I&apos;ve been trying to move stuff out of the ExtensionsGL. If it fits your structure, these could also perhaps be of form GraphicsContextGL::multiDrawArrays(), etc.

+1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1721004</commentid>
    <comment_count>5</comment_count>
      <attachid>417930</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2021-01-20 14:25:39 -0800</bug_when>
    <thetext>Comment on attachment 417930
Patch

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

&gt;&gt; Source/WebCore/html/canvas/WebGLMultiDraw.cpp:92
&gt;&gt; +{
&gt; 
&gt; Nit: We do parameters on one line (same for elsewhere in the patch)

Sure thing. (I thought this would be easier to read.) Fixed.

&gt;&gt; Source/WebCore/html/canvas/WebGLMultiDraw.cpp:136
&gt;&gt; +    GCGLsizei drawcount)
&gt; 
&gt; So maybe the line breaking loses its meaning when the below code is anyway relying on user handling long lines? (The arg list here and in the header seems a bit unorthodox?)

Changed to follow WebKit&apos;s conventions.

&gt;&gt; Source/WebCore/html/canvas/WebGLMultiDraw.h:39
&gt;&gt; +        using VariantType = Variant&lt;RefPtr&lt;TypedArray&gt;, Vector&lt;DataType&gt;&gt;;
&gt; 
&gt; Could we give this a better name?

This was basically copied from WebGLRenderingContextBase.h (I couldn&apos;t think of a good way to share it between the headers) but will call it ListTypeOptions.

&gt;&gt;&gt; Source/WebCore/platform/graphics/ExtensionsGL.h:353
&gt;&gt;&gt; +    // GL_ANGLE_multi_draw
&gt;&gt; 
&gt;&gt; I&apos;ve been trying to move stuff out of the ExtensionsGL. If it fits your structure, these could also perhaps be of form GraphicsContextGL::multiDrawArrays(), etc.
&gt; 
&gt; +1

Sure thing - done. Currently there still need to be calls to ExtensionsGL::supports and ExtensionsGL::ensureEnabled in WebGLMultiDraw.cpp. We could move those entry points over later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1721005</commentid>
    <comment_count>6</comment_count>
      <attachid>417997</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2021-01-20 14:34:11 -0800</bug_when>
    <thetext>Created attachment 417997
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1721051</commentid>
    <comment_count>7</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2021-01-20 17:24:46 -0800</bug_when>
    <thetext>EWS is green. CQ&apos;ing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1721055</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-01-20 17:42:52 -0800</bug_when>
    <thetext>Committed r271679: &lt;https://trac.webkit.org/changeset/271679&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 417997.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>417930</attachid>
            <date>2021-01-19 17:27:41 -0800</date>
            <delta_ts>2021-01-20 14:34:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219139-20210119172739.patch</filename>
            <type>text/plain</type>
            <size>90036</size>
            <attacher name="Kenneth Russell">kbr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxNjI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWQwNWRkNDI3ODUyNDNj
ZTUyZGE4ZjAzMDFlNWYyNGVkN2RkMTc4NC4uYTMzNGFkYWU4MmNhZjcxYTI3M2IwODdjOTQ4MDk2
OWQ3OThiMmJlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDIxLTAxLTE5ICBLZW5u
ZXRoIFJ1c3NlbGwgIDxrYnJAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFN1cHBvcnQgV0VCR0xf
bXVsdGlfZHJhdyBleHRlbnNpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxOTEzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFN1cHBvcnQgdGhlIFdFQkdMX211bHRpX2RyYXcgZXh0ZW5zaW9uIGluIFdl
YktpdCwgZGVsZWdhdGluZyB0bworICAgICAgICBBTkdMRSdzIHVuZGVybHlpbmcgaW1wbGVtZW50
YXRpb24uCisKKyAgICAgICAgVGhpcyBleHRlbnNpb24gc2lnbmlmaWNhbnRseSByZWR1Y2VzIGRy
YXctY2FsbCBvdmVyaGVhZCBpbiBjZXJ0YWluCisgICAgICAgIHNjZW5hcmlvcywgYW5kIGlzIHJl
cXVlc3RlZCBieSBDQUQvQ0FNIHdlYiBhcHBzIHVzaW5nIFdlYkdMLgorCisgICAgICAgIFRlc3Q6
IHdlYmdsL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvd2ViZ2wtbXVsdGktZHJhdy5odG1sCisKKyAg
ICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1pbnB1dC54
Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0Ogor
ICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogU291cmNlcy50eHQ6Cisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTRE9NQ29udmVydFdlYkdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZl
cnRUb0pTVmFsdWUpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRl
eHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0RXh0
ZW5zaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldFN1
cHBvcnRlZEV4dGVuc2lvbnMpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMRXh0ZW5zaW9u
Lmg6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xNdWx0aURyYXcuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6Om1ha2VTcGFuV2l0aE9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTE11bHRpRHJhdzo6V2ViR0xNdWx0aURyYXcpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xN
dWx0aURyYXc6OmdldE5hbWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xNdWx0aURy
YXc6OnN1cHBvcnRlZCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTE11bHRpRHJhdzo6bXVsdGlE
cmF3QXJyYXlzV0VCR0wpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xNdWx0aURyYXc6Om11bHRp
RHJhd0FycmF5c0luc3RhbmNlZFdFQkdMKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMTXVsdGlE
cmF3OjptdWx0aURyYXdFbGVtZW50c1dFQkdMKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMTXVs
dGlEcmF3OjptdWx0aURyYXdFbGVtZW50c0luc3RhbmNlZFdFQkdMKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMTXVsdGlEcmF3Ojp2YWxpZGF0ZURyYXdjb3VudCk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTE11bHRpRHJhdzo6dmFsaWRhdGVPZmZzZXQpOgorICAgICAgICAqIGh0bWwvY2FudmFz
L1dlYkdMTXVsdGlEcmF3Lmg6IEFkZGVkLgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMTXVs
dGlEcmF3LmlkbDogQWRkZWQuCisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdD
b250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0
RXh0ZW5zaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0
U3VwcG9ydGVkRXh0ZW5zaW9ucyk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjpleHRlbnNpb25Jc0VuYWJsZWQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9FeHRl
bnNpb25zR0wuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25z
R0xBTkdMRS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xBTkdMRTo6bXVsdGlE
cmF3QXJyYXlzQU5HTEUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMQU5HTEU6Om11
bHRpRHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lv
bnNHTEFOR0xFOjptdWx0aURyYXdFbGVtZW50c0FOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTEFOR0xFOjptdWx0aURyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjptdWx0aURyYXdB
cnJheXNBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246
Om11bHRpRHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVu
c2lvbnNHTE9wZW5HTENvbW1vbjo6bXVsdGlEcmF3RWxlbWVudHNBTkdMRSk6CisgICAgICAgIChX
ZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246Om11bHRpRHJhd0VsZW1lbnRzSW5zdGFu
Y2VkQU5HTEUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25z
R0xPcGVuR0xDb21tb24uaDoKKwogMjAyMS0wMS0xOSAgUGF0cmljayBBbmdsZSAgPHBhbmdsZUBh
cHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogRm9udCBEZXRhaWxzIHNpZGViYXIg
LSBGcmFjdGlvbmFsIHZhcmlhdGlvbiBheGlzIHJhbmdlcy9kZWZhdWx0IHZhbHVlcyBhcmUgcm91
bmRlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDQzNWU5ODdmZDY0NDA0ODgzYjkyZDNj
NGU5YTYxZGMyMTM5MDlkMzIuLjIyZDgyM2IxNzcyYTA1MTY1YjNmZTI0OWY0MTc4OGI5YjNhMDRk
ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIxLTAxLTE5
ICBLZW5uZXRoIFJ1c3NlbGwgIDxrYnJAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFN1cHBvcnQg
V0VCR0xfbXVsdGlfZHJhdyBleHRlbnNpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxOTEzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRlbGwgdGhlIEluc3BlY3RvciBhYm91dCB0aGUgbWV0aG9kIHNp
Z25hdHVyZXMgaW4gdGhlCisgICAgICAgIFdFQkdMX211bHRpX2RyYXcgZXh0ZW5zaW9uLgorCisg
ICAgICAgICogVXNlckludGVyZmFjZS9Nb2RlbHMvTmF0aXZlRnVuY3Rpb25QYXJhbWV0ZXJzLmpz
OgorCiAyMDIxLTAxLTE5ICBQYXRyaWNrIEFuZ2xlICA8cGFuZ2xlQGFwcGxlLmNvbT4KIAogICAg
ICAgICBXZWIgSW5zcGVjdG9yOiBGb250IERldGFpbHMgc2lkZWJhciAtIEZyYWN0aW9uYWwgdmFy
aWF0aW9uIGF4aXMgcmFuZ2VzL2RlZmF1bHQgdmFsdWVzIGFyZSByb3VuZGVkLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRl
eCBlMDg3OGI4NmM0OTZhZTMyNWViYjUxNmNlMmNjNjI3NTA3OGE0MjhhLi5iMjkyMmY1Y2QwYzVi
YTIxOGNkMWJmNDQ0YjIyMDI5OTM5MmIwMDdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisy
MDIxLTAxLTE5ICBLZW5uZXRoIFJ1c3NlbGwgIDxrYnJAY2hyb21pdW0ub3JnPgorCisgICAgICAg
IFN1cHBvcnQgV0VCR0xfbXVsdGlfZHJhdyBleHRlbnNpb24KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTEzOQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhdXRvbWF0aWNhbGx5LWdlbmVyYXRlZCBz
dHVicyBmb3Igc3VwcG9ydGluZyB0aGUgbXVsdGktZHJhdworICAgICAgICBleHRlbnNpb24gaW4g
dGhlIEdQVSBwcm9jZXNzLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmg6CisgICAgICAg
IChtdWx0aURyYXdBcnJheXNBTkdMRSk6CisgICAgICAgIChtdWx0aURyYXdBcnJheXNJbnN0YW5j
ZWRBTkdMRSk6CisgICAgICAgIChtdWx0aURyYXdFbGVtZW50c0FOR0xFKToKKyAgICAgICAgKG11
bHRpRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rpb25z
R2VuZXJhdGVkLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQ
cm94eTo6bXVsdGlEcmF3QXJyYXlzQU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5OjptdWx0aURyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Om11bHRpRHJhd0VsZW1l
bnRzQU5HTEUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjptdWx0aURyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKToKKwogMjAyMS0wMS0xOSAgQ2hyaXMg
RHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFtHUFVQcm9jZXNzXSBDbGFpbSBv
d25lcnNoaXAgb2YgQ2FudmFzIElPU3VyZmFjZSBiYWNraW5nIGluIHRoZSBXZWJQcm9jZXNzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3Jl
L0NNYWtlTGlzdHMudHh0CmluZGV4IDY0M2Q3ZDliZjc5NGQzNmNlYmNmNjYzNmI2MDZlNDg3ZDE5
MGU0ZWUuLjQzNGU0OWMxMGIwNzFmMmRhYWNiMzIwNDViMDI2N2Q1Mjg2YjIxOTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0CkBAIC0xNTQ2LDYgKzE1NDYsNyBAQCBpZiAoRU5BQkxFX1dFQkdMKQogICAg
ICAgICBodG1sL2NhbnZhcy9XZWJHTEV4dGVuc2lvbi5jcHAKICAgICAgICAgaHRtbC9jYW52YXMv
V2ViR0xGcmFtZWJ1ZmZlci5jcHAKICAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xMb3NlQ29udGV4
dC5jcHAKKyAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xNdWx0aURyYXcuY3BwCiAgICAgICAgIGh0
bWwvY2FudmFzL1dlYkdMT2JqZWN0LmNwcAogICAgICAgICBodG1sL2NhbnZhcy9XZWJHTFByb2dy
YW0uY3BwCiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMUXVlcnkuY3BwCkBAIC0xNjA1LDYgKzE2
MDYsNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX0lETF9GSUxFUwogICAgIGh0bWwvY2FudmFzL1dl
YkdMRHJhd0J1ZmZlcnMuaWRsCiAgICAgaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5pZGwK
ICAgICBodG1sL2NhbnZhcy9XZWJHTExvc2VDb250ZXh0LmlkbAorICAgIGh0bWwvY2FudmFzL1dl
YkdMTXVsdGlEcmF3LmlkbAogICAgIGh0bWwvY2FudmFzL1dlYkdMUHJvZ3JhbS5pZGwKICAgICBo
dG1sL2NhbnZhcy9XZWJHTFF1ZXJ5LmlkbAogICAgIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyYnVm
ZmVyLmlkbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQu
eGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxp
c3QKaW5kZXggODMxN2Q1NWRiYWE4ZDc1ZTNkMTk1MmZlNWQ5MGI2MjZlZGY3Njg1My4uNzIxNTNj
YjQ5Mjk3NGVlMWI4MzM1M2UwYWFlMDc3MTdmOGM5NjJhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CkBAIC0xMDE4LDYgKzEwMTgsNyBAQCAk
KFBST0pFQ1RfRElSKS9odG1sL2NhbnZhcy9XZWJHTERlcHRoVGV4dHVyZS5pZGwKICQoUFJPSkVD
VF9ESVIpL2h0bWwvY2FudmFzL1dlYkdMRHJhd0J1ZmZlcnMuaWRsCiAkKFBST0pFQ1RfRElSKS9o
dG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVyLmlkbAogJChQUk9KRUNUX0RJUikvaHRtbC9jYW52
YXMvV2ViR0xMb3NlQ29udGV4dC5pZGwKKyQoUFJPSkVDVF9ESVIpL2h0bWwvY2FudmFzL1dlYkdM
TXVsdGlEcmF3LmlkbAogJChQUk9KRUNUX0RJUikvaHRtbC9jYW52YXMvV2ViR0xQcm9ncmFtLmlk
bAogJChQUk9KRUNUX0RJUikvaHRtbC9jYW52YXMvV2ViR0xRdWVyeS5pZGwKICQoUFJPSkVDVF9E
SVIpL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyYnVmZmVyLmlkbApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViQ29y
ZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAppbmRleCAzMmUwYTI5MWY4MTc2MjRh
YWE1ZjFhMGNkZjE3YzU0ODg3NTBiYTc5Li4zNzA5NDk4OTk4NTM2Yzc2NDY3NDU1NGQ3YTBkMDA3
YmZhNWMzYjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRw
dXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQu
eGNmaWxlbGlzdApAQCAtMjM1MSw2ICsyMzUxLDggQEAgJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHTEZyYW1lYnVmZmVyLmNwcAogJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHTEZyYW1lYnVmZmVyLmgKICQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR0xMb3NlQ29u
dGV4dC5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
V2ViR0xMb3NlQ29udGV4dC5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU1dlYkdMTXVsdGlEcmF3LmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHTE11bHRpRHJhdy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJ
UikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdMUHJvZ3JhbS5jcHAKICQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR0xQcm9ncmFtLmgKICQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR0xRdWVyeS5jcHAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2Uv
V2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDk1MWFiNmIwZmM0NGJjZmFkY2ExMGUz
ZDhjY2I3OWI3N2M2MTBmMjcuLmM3M2YwNjAyYWMyNzA2NDI1YzI3ZWVmYjJhN2ZiNmNkMDMzN2Ex
NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIv
U291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtOTYyLDYgKzk2Miw3IEBAIEpT
X0JJTkRJTkdfSURMUyA6PSBcCiAgICAgJChXZWJDb3JlKS9odG1sL2NhbnZhcy9XZWJHTERyYXdC
dWZmZXJzLmlkbCBcCiAgICAgJChXZWJDb3JlKS9odG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVy
LmlkbCBcCiAgICAgJChXZWJDb3JlKS9odG1sL2NhbnZhcy9XZWJHTExvc2VDb250ZXh0LmlkbCBc
CisgICAgJChXZWJDb3JlKS9odG1sL2NhbnZhcy9XZWJHTE11bHRpRHJhdy5pZGwgXAogICAgICQo
V2ViQ29yZSkvaHRtbC9jYW52YXMvV2ViR0xQcm9ncmFtLmlkbCBcCiAgICAgJChXZWJDb3JlKS9o
dG1sL2NhbnZhcy9XZWJHTFF1ZXJ5LmlkbCBcCiAgICAgJChXZWJDb3JlKS9odG1sL2NhbnZhcy9X
ZWJHTFJlbmRlcmJ1ZmZlci5pZGwgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCAxYjlmMGQ4Mzc4MjliZGYz
ZGE1ODVlN2ZkMjNlMzEyMzY2YTdhNWZmLi43YWE1NWJiNDM0NjhkNzNjNzRkOGViY2RjNDcyMGJh
YmEyOGU1MmY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMTM0NSw2ICsxMzQ1LDcgQEAgaHRtbC9jYW52
YXMvV2ViR0xEcmF3QnVmZmVycy5jcHAKIGh0bWwvY2FudmFzL1dlYkdMRXh0ZW5zaW9uLmNwcAog
aHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5jcHAKIGh0bWwvY2FudmFzL1dlYkdMTG9zZUNv
bnRleHQuY3BwCitodG1sL2NhbnZhcy9XZWJHTE11bHRpRHJhdy5jcHAKIGh0bWwvY2FudmFzL1dl
YkdMT2JqZWN0LmNwcAogaHRtbC9jYW52YXMvV2ViR0xQcm9ncmFtLmNwcAogaHRtbC9jYW52YXMv
V2ViR0xRdWVyeS5jcHAKQEAgLTM2NTgsNiArMzY1OSw3IEBAIEpTV2ViR0xEZXB0aFRleHR1cmUu
Y3BwCiBKU1dlYkdMRHJhd0J1ZmZlcnMuY3BwCiBKU1dlYkdMRnJhbWVidWZmZXIuY3BwCiBKU1dl
YkdMTG9zZUNvbnRleHQuY3BwCitKU1dlYkdMTXVsdGlEcmF3LmNwcAogSlNXZWJHTFByb2dyYW0u
Y3BwCiBKU1dlYkdMUXVlcnkuY3BwCiBKU1dlYkdMUmVuZGVyYnVmZmVyLmNwcApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDE5MzUw
NGRjNDNiNmU0N2QzNTk2NDNmMGExY2YwYjJjMGM1NWZkODIuLjFmZTEyZjRmM2Q4YjYwZjMyMmY2
MDZjYzU2ODY5ODU3N2JiYmZjZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIwNzEsNiArMjA3MSw3IEBACiAJCTZFQkYwRTU1
MTJBODkyOTgwMERCMTcwOSAvKiBXZWJHTEV4dGVuc2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkVCRjBFNTMxMkE4OTI5ODAwREIxNzA5IC8qIFdl
YkdMRXh0ZW5zaW9uLmggKi87IH07CiAJCTZFQkYwRTc3MTJBOTg2ODgwMERCMTcwOSAvKiBKU09F
U1RleHR1cmVGbG9hdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNkVCRjBFNzUxMkE5ODY4ODAwREIxNzA5IC8qIEpTT0VTVGV4dHVyZUZsb2F0LmggKi87
IH07CiAJCTZFQkYwRTc3MTJBOTg2ODgwMERCMTcwQSAvKiBKU1dlYkdMRHJhd0J1ZmZlcnMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFQkYwRTc1MTJB
OTg2ODgwMERCMTcwQSAvKiBKU1dlYkdMRHJhd0J1ZmZlcnMuaCAqLzsgfTsKKwkJNkVDMzYyRDky
NUI0QzU0NTAwOTM3Rjg1IC8qIFdlYkdMTXVsdGlEcmF3LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RUMzNjJENzI1QjRDNTNFMDA5MzdGODUgLyogV2Vi
R0xNdWx0aURyYXcuaCAqLzsgfTsKIAkJNkVDNDgwQTIxNkVBNjM4QTAwQTQ4RENCIC8qIEZsb2F0
UG9seWdvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NkVDNDgwQTAxNkVBNjM4QTAwQTQ4RENCIC8qIEZsb2F0UG9seWdvbi5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTZFRDg3OEM1MTQ3NDkzRjQwMDRD
MzU5NyAvKiBSZW5kZXJUYWJsZUNhcHRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDZFRDg3OEMzMTQ3NDkzRjQwMDRDMzU5NyAvKiBSZW5kZXJUYWJs
ZUNhcHRpb24uaCAqLzsgfTsKIAkJNkVEOEMzN0ExODNCRkY4QzAwOUU1M0JEIC8qIEJveFNoYXBl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RUQ4QzM3
ODE4M0JGRjhDMDA5RTUzQkQgLyogQm94U2hhcGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtOTc1NCw2ICs5NzU1LDggQEAKIAkJNkU1Mzg4RTEy
NDU4QUUxRDAwNzZBRTAzIC8qIFdlYkdMQ29sb3JCdWZmZXJGbG9hdC5pZGwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR0xD
b2xvckJ1ZmZlckZsb2F0LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkU1NzZC
QzMyNEVCNTA5QzAwOTRENEFBIC8qIEpTSFRNTENhbnZhc0VsZW1lbnRDdXN0b20uY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNIVE1MQ2FudmFzRWxlbWVudEN1c3Rv
bS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZFNjdEMkE4MTI4MEU4QkQwMDg3
NThGNyAvKiBFeHRlbnNpb25zR0wuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RXh0ZW5zaW9uc0dMLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZFN0NBMzBBMjVC
NEQyOEEwMDRBOTEzRSAvKiBKU1dlYkdMTXVsdGlEcmF3LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEpTV2Vi
R0xNdWx0aURyYXcuaDsgcGF0aCA9IEpTV2ViR0xNdWx0aURyYXcuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNkU3Q0EzMEIyNUI0RDMyODAwNEE5MTNFIC8qIEpTV2ViR0xNdWx0aURy
YXcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gSlNXZWJHTE11bHRpRHJhdy5jcHA7IHBhdGggPSBK
U1dlYkdMTXVsdGlEcmF3LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkU4NEU5
REUxNzY2OEJBRDAwODE1QjY4IC8qIFJhc3RlclNoYXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFJhc3RlclNoYXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNkU4NEU5REYxNzY2OEJBRDAwODE1QjY4IC8qIFJhc3RlclNoYXBlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJhc3RlclNoYXBlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTZFOEFDREU5MjMzNDVDQUYwMDI0QUFGNSAvKiBXZWJHTENvbXByZXNz
ZWRUZXh0dXJlRVRDLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdMQ29tcHJlc3NlZFRleHR1
cmVFVEMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTc2OCw2ICs5NzcxLDkg
QEAKIAkJNkVCRjBFNzQxMkE5ODY4ODAwREIxNzBBIC8qIEpTV2ViR0xEcmF3QnVmZmVycy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1dlYkdMRHJhd0J1ZmZlcnMu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RUJGMEU3NTEyQTk4Njg4MDBEQjE3
MDkgLyogSlNPRVNUZXh0dXJlRmxvYXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSlNPRVNUZXh0dXJlRmxvYXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkVC
RjBFNzUxMkE5ODY4ODAwREIxNzBBIC8qIEpTV2ViR0xEcmF3QnVmZmVycy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU1dlYkdMRHJhd0J1ZmZlcnMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNkVDMzYyRDUyNUI0QzUzRDAwOTM3Rjg1IC8qIFdlYkdMTXVsdGlE
cmF3LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdMTXVsdGlE
cmF3LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkVDMzYyRDcyNUI0QzUzRTAw
OTM3Rjg1IC8qIFdlYkdMTXVsdGlEcmF3LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdlYkdMTXVsdGlEcmF3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZFQzM2
MkQ4MjVCNEM1M0UwMDkzN0Y4NSAvKiBXZWJHTE11bHRpRHJhdy5pZGwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gV2ViR0xNdWx0aURyYXcuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk2RUM0ODA5RjE2RUE2MzhBMDBBNDhEQ0IgLyogRmxvYXRQb2x5Z29uLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZsb2F0UG9seWdvbi5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTZFQzQ4MEEwMTZFQTYzOEEwMEE0OERDQiAvKiBGbG9hdFBvbHln
b24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmxvYXRQb2x5Z29uLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZFRDg3OEMyMTQ3NDkzRjQwMDRDMzU5NyAvKiBS
ZW5kZXJUYWJsZUNhcHRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUmVuZGVyVGFibGVDYXB0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTE5OTg3LDYgKzE5OTkzLDkgQEAKIAkJCQk5M0YxRDVCNzEyRDUzMkM0MDA4MzJCRUMgLyogV2Vi
R0xMb3NlQ29udGV4dC5jcHAgKi8sCiAJCQkJOTNGMUQ1QjgxMkQ1MzJDNDAwODMyQkVDIC8qIFdl
YkdMTG9zZUNvbnRleHQuaCAqLywKIAkJCQk5M0YxRDVCOTEyRDUzMkM0MDA4MzJCRUMgLyogV2Vi
R0xMb3NlQ29udGV4dC5pZGwgKi8sCisJCQkJNkVDMzYyRDUyNUI0QzUzRDAwOTM3Rjg1IC8qIFdl
YkdMTXVsdGlEcmF3LmNwcCAqLywKKwkJCQk2RUMzNjJENzI1QjRDNTNFMDA5MzdGODUgLyogV2Vi
R0xNdWx0aURyYXcuaCAqLywKKwkJCQk2RUMzNjJEODI1QjRDNTNFMDA5MzdGODUgLyogV2ViR0xN
dWx0aURyYXcuaWRsICovLAogCQkJCTQ5QzdCOUI0MTA0MkQzMkYwMDA5RDQ0NyAvKiBXZWJHTE9i
amVjdC5jcHAgKi8sCiAJCQkJNDlDN0I5QjUxMDQyRDMyRjAwMDlENDQ3IC8qIFdlYkdMT2JqZWN0
LmggKi8sCiAJCQkJNDlDN0I5QjYxMDQyRDMyRjAwMDlENDQ3IC8qIFdlYkdMUHJvZ3JhbS5jcHAg
Ki8sCkBAIC0yNDk4NSw2ICsyNDk5NCw4IEBACiAJCQkJNDlDN0I5ODUxMDQyRDJEMzAwMDlENDQ3
IC8qIEpTV2ViR0xGcmFtZWJ1ZmZlci5oICovLAogCQkJCTkzRjFENUJFMTJENTMzNTYwMDgzMkJF
QyAvKiBKU1dlYkdMTG9zZUNvbnRleHQuY3BwICovLAogCQkJCTkzRjFENUJGMTJENTMzNTYwMDgz
MkJFQyAvKiBKU1dlYkdMTG9zZUNvbnRleHQuaCAqLywKKwkJCQk2RTdDQTMwQjI1QjREMzI4MDA0
QTkxM0UgLyogSlNXZWJHTE11bHRpRHJhdy5jcHAgKi8sCisJCQkJNkU3Q0EzMEEyNUI0RDI4QTAw
NEE5MTNFIC8qIEpTV2ViR0xNdWx0aURyYXcuaCAqLywKIAkJCQk0OUM3Qjk4ODEwNDJEMkQzMDAw
OUQ0NDcgLyogSlNXZWJHTFByb2dyYW0uY3BwICovLAogCQkJCTQ5QzdCOTg5MTA0MkQyRDMwMDA5
RDQ0NyAvKiBKU1dlYkdMUHJvZ3JhbS5oICovLAogCQkJCTZGOTk1QTI3MUE3MDgzMzcwMEE3MzVG
NCAvKiBKU1dlYkdMUXVlcnkuY3BwICovLApAQCAtMzUyOTAsNiArMzUzMDEsNyBAQAogCQkJCTQ5
QzdCOUNGMTA0MkQzMkYwMDA5RDQ0NyAvKiBXZWJHTEZyYW1lYnVmZmVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQk0OUZGQkYzRjExQzkzRUUzMDA2QTcxMTggLyogV2ViR0xMYXllci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJOTNGMUQ1QkIxMkQ1MzJDNDAwODMyQkVDIC8qIFdlYkdMTG9zZUNvbnRleHQu
aCBpbiBIZWFkZXJzICovLAorCQkJCTZFQzM2MkQ5MjVCNEM1NDUwMDkzN0Y4NSAvKiBXZWJHTE11
bHRpRHJhdy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlDN0I5RDUxMDQyRDMyRjAwMDlENDQ3IC8q
IFdlYkdMT2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUM3QjlENzEwNDJEMzJGMDAwOUQ0
NDcgLyogV2ViR0xQcm9ncmFtLmggaW4gSGVhZGVycyAqLywKIAkJCQk2Rjk5NUEyMDFBNzA3OEIx
MDBBNzM1RjQgLyogV2ViR0xRdWVyeS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRXZWJHTC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRXZWJHTC5jcHAKaW5kZXggZjNlYjM2ZGFjYjg5
ZDkxNTZhNTk2ZWI4ZTEzYjRkNjUxNTM3ZjhlZC4uZGQyOTY4OGMyYmM2Yzg4MDA1NGUxODdmMWQz
MDlhYTg5MDYyZTg4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01Db252ZXJ0V2ViR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
Q29udmVydFdlYkdMLmNwcApAQCAtNjMsNiArNjMsNyBAQAogI2luY2x1ZGUgIkpTV2ViR0xEcmF3
QnVmZmVycy5oIgogI2luY2x1ZGUgIkpTV2ViR0xGcmFtZWJ1ZmZlci5oIgogI2luY2x1ZGUgIkpT
V2ViR0xMb3NlQ29udGV4dC5oIgorI2luY2x1ZGUgIkpTV2ViR0xNdWx0aURyYXcuaCIKICNpbmNs
dWRlICJKU1dlYkdMUHJvZ3JhbS5oIgogI2luY2x1ZGUgIkpTV2ViR0xSZW5kZXJidWZmZXIuaCIK
ICNpbmNsdWRlICJKU1dlYkdMU2FtcGxlci5oIgpAQCAtMjMzLDYgKzIzNCw4IEBAIEpTVmFsdWUg
Y29udmVydFRvSlNWYWx1ZShKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNE
T01HbG9iYWxPYmplY3QmCiAgICAgICAgIHJldHVybiB0b0pTKCZsZXhpY2FsR2xvYmFsT2JqZWN0
LCAmZ2xvYmFsT2JqZWN0LCBzdGF0aWNfY2FzdDxXZWJHTENvbG9yQnVmZmVyRmxvYXQmPihleHRl
bnNpb24pKTsKICAgICBjYXNlIFdlYkdMRXh0ZW5zaW9uOjpFWFRDb2xvckJ1ZmZlckZsb2F0TmFt
ZToKICAgICAgICAgcmV0dXJuIHRvSlMoJmxleGljYWxHbG9iYWxPYmplY3QsICZnbG9iYWxPYmpl
Y3QsIHN0YXRpY19jYXN0PEVYVENvbG9yQnVmZmVyRmxvYXQmPihleHRlbnNpb24pKTsKKyAgICBj
YXNlIFdlYkdMRXh0ZW5zaW9uOjpXZWJHTE11bHRpRHJhd05hbWU6CisgICAgICAgIHJldHVybiB0
b0pTKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCAmZ2xvYmFsT2JqZWN0LCBzdGF0aWNfY2FzdDxXZWJH
TE11bHRpRHJhdyY+KGV4dGVuc2lvbikpOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICByZXR1cm4ganNOdWxsKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IGIyNjc4NWM3YTM2YjU4ODQy
M2E0NzMzMTFmYzYwM2ZiNTIxNTQ5MGIuLmE1ZTg5YzI5NmQxNmVjMTAwOTRjZTI2OTBmZThlOGMz
OWFlMzljZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJl
bmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
MlJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC01OCw2ICs1OCw3IEBACiAjaW5jbHVkZSAiV2ViR0xE
ZWJ1Z1JlbmRlcmVySW5mby5oIgogI2luY2x1ZGUgIldlYkdMRGVidWdTaGFkZXJzLmgiCiAjaW5j
bHVkZSAiV2ViR0xMb3NlQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkdMTXVsdGlEcmF3LmgiCiAj
aW5jbHVkZSAiV2ViR0xRdWVyeS5oIgogI2luY2x1ZGUgIldlYkdMU2FtcGxlci5oIgogI2luY2x1
ZGUgIldlYkdMU3luYy5oIgpAQCAtMjY5OCw2ICsyNjk5LDcgQEAgV2ViR0xFeHRlbnNpb24qIFdl
YkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAg
ICAgRU5BQkxFX0lGX1JFUVVFU1RFRChFWFRDb2xvckJ1ZmZlckhhbGZGbG9hdCwgbV9leHRDb2xv
ckJ1ZmZlckhhbGZGbG9hdCwgIkVYVF9jb2xvcl9idWZmZXJfaGFsZl9mbG9hdCIsIEVYVENvbG9y
QnVmZmVySGFsZkZsb2F0OjpzdXBwb3J0ZWQoKnRoaXMpKTsKICAgICBFTkFCTEVfSUZfUkVRVUVT
VEVEKEVYVEZsb2F0QmxlbmQsIG1fZXh0RmxvYXRCbGVuZCwgIkVYVF9mbG9hdF9ibGVuZCIsIEVY
VEZsb2F0QmxlbmQ6OnN1cHBvcnRlZCgqdGhpcykpOwogICAgIEVOQUJMRV9JRl9SRVFVRVNURUQo
S0hSUGFyYWxsZWxTaGFkZXJDb21waWxlLCBtX2toclBhcmFsbGVsU2hhZGVyQ29tcGlsZSwgIktI
Ul9wYXJhbGxlbF9zaGFkZXJfY29tcGlsZSIsIEtIUlBhcmFsbGVsU2hhZGVyQ29tcGlsZTo6c3Vw
cG9ydGVkKCp0aGlzKSk7CisgICAgRU5BQkxFX0lGX1JFUVVFU1RFRChXZWJHTE11bHRpRHJhdywg
bV93ZWJnbE11bHRpRHJhdywgIldFQkdMX211bHRpX2RyYXciLCB0cnVlKTsKICAgICByZXR1cm4g
bnVsbHB0cjsKIH0KIApAQCAtMjc0Niw2ICsyNzQ4LDggQEAgT3B0aW9uYWw8VmVjdG9yPFN0cmlu
Zz4+IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldFN1cHBvcnRlZEV4dGVuc2lvbnMoKQogICAg
ICAgICByZXN1bHQuYXBwZW5kKCJFWFRfZmxvYXRfYmxlbmQiX3MpOwogICAgIGlmIChLSFJQYXJh
bGxlbFNoYWRlckNvbXBpbGU6OnN1cHBvcnRlZCgqdGhpcykpCiAgICAgICAgIHJlc3VsdC5hcHBl
bmQoIktIUl9wYXJhbGxlbF9zaGFkZXJfY29tcGlsZSJfcyk7CisgICAgaWYgKFdlYkdMTXVsdGlE
cmF3OjpzdXBwb3J0ZWQoKnRoaXMpKQorICAgICAgICByZXN1bHQuYXBwZW5kKCJXRUJHTF9tdWx0
aV9kcmF3Il9zKTsKIAogICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEV4dGVuc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xFeHRlbnNpb24uaAppbmRleCA1ODAwYTcxMzEzYmNmOGEwNGRmNTZhZjE3
MmIwOGZmNTkwYzkxNzE3Li4yMjM5YWNiYWU5YTE2NGMwM2ZkZmRkNmUzNDRhNWQ1ODczNmI3ZWFl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEV4dGVuc2lvbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRXh0ZW5zaW9uLmgKQEAgLTY5
LDYgKzY5LDcgQEAgcHVibGljOgogICAgICAgICBFWFRGbG9hdEJsZW5kTmFtZSwKICAgICAgICAg
V2ViR0xDb2xvckJ1ZmZlckZsb2F0TmFtZSwKICAgICAgICAgRVhUQ29sb3JCdWZmZXJGbG9hdE5h
bWUsCisgICAgICAgIFdlYkdMTXVsdGlEcmF3TmFtZSwKICAgICB9OwogCiAgICAgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZSogY29udGV4dCgpIHsgcmV0dXJuIG1fY29udGV4dDsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xNdWx0aURyYXcuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xNdWx0aURyYXcuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY4
ZDZmYmY5ZmQxYjI0YzM1ODI2ZmM0OGMwYmZiNzc2ZDAyYzI2ZTAKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTE11bHRpRHJhdy5jcHAKQEAgLTAsMCAr
MSwxODMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQor
ICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICog
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoV0VCR0wp
CisjaW5jbHVkZSAiV2ViR0xNdWx0aURyYXcuaCIKKworI2luY2x1ZGUgIkV4dGVuc2lvbnNHTC5o
IgorI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYkdMTXVsdGlEcmF3KTsKKworc3Rh
dGljIEdDR0xTcGFuPGNvbnN0IGludD4gbWFrZVNwYW5XaXRoT2Zmc2V0KFdlYkdMTXVsdGlEcmF3
OjpJbnQzMkxpc3QmIGxpc3QsIEdDR0x1aW50IG9mZnNldCkKK3sKKyAgICByZXR1cm4gbWFrZUdD
R0xTcGFuKGxpc3QuZGF0YSgpICsgb2Zmc2V0LCBsaXN0Lmxlbmd0aCgpIC0gb2Zmc2V0KTsKK30K
KworV2ViR0xNdWx0aURyYXc6OldlYkdMTXVsdGlEcmF3KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UmIGNvbnRleHQpCisgICAgOiBXZWJHTEV4dGVuc2lvbihjb250ZXh0KQoreworICAgIGNvbnRl
eHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdM
X0FOR0xFX211bHRpX2RyYXciX3MpOworICAgIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+
Z2V0RXh0ZW5zaW9ucygpLmVuc3VyZUVuYWJsZWQoIkdMX0FOR0xFX2luc3RhbmNlZF9hcnJheXMi
X3MpOworfQorCitXZWJHTE11bHRpRHJhdzo6fldlYkdMTXVsdGlEcmF3KCkgPSBkZWZhdWx0Owor
CitXZWJHTEV4dGVuc2lvbjo6RXh0ZW5zaW9uTmFtZSBXZWJHTE11bHRpRHJhdzo6Z2V0TmFtZSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIFdlYkdMTXVsdGlEcmF3TmFtZTsKK30KKworYm9vbCBXZWJH
TE11bHRpRHJhdzo6c3VwcG9ydGVkKGNvbnN0IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNv
bnRleHQpCit7CisgICAgcmV0dXJuIGNvbnRleHQuZ3JhcGhpY3NDb250ZXh0R0woKS0+Z2V0RXh0
ZW5zaW9ucygpLnN1cHBvcnRzKCJHTF9BTkdMRV9tdWx0aV9kcmF3Il9zKQorICAgICAgICAmJiBj
b250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xf
QU5HTEVfaW5zdGFuY2VkX2FycmF5cyJfcyk7Cit9CisKK3ZvaWQgV2ViR0xNdWx0aURyYXc6Om11
bHRpRHJhd0FycmF5c1dFQkdMKAorICAgIEdDR0xlbnVtIG1vZGUsCisgICAgSW50MzJMaXN0IGZp
cnN0c0xpc3QsCisgICAgR0NHTHVpbnQgZmlyc3RzT2Zmc2V0LAorICAgIEludDMyTGlzdCBjb3Vu
dHNMaXN0LAorICAgIEdDR0x1aW50IGNvdW50c09mZnNldCwKKyAgICBHQ0dMc2l6ZWkgZHJhd2Nv
dW50KQoreworICAgIGlmICghbV9jb250ZXh0IHx8IG1fY29udGV4dC0+aXNDb250ZXh0TG9zdCgp
KQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIXZhbGlkYXRlRHJhd2NvdW50KCJtdWx0aURy
YXdBcnJheXNXRUJHTCIsIGRyYXdjb3VudCkKKyAgICAgICAgfHwgIXZhbGlkYXRlT2Zmc2V0KCJt
dWx0aURyYXdBcnJheXNXRUJHTCIsICJmaXJzdHNPZmZzZXQgb3V0IG9mIGJvdW5kcyIsIGZpcnN0
c0xpc3QubGVuZ3RoKCksIGZpcnN0c09mZnNldCwgZHJhd2NvdW50KQorICAgICAgICB8fCAhdmFs
aWRhdGVPZmZzZXQoIm11bHRpRHJhd0FycmF5c1dFQkdMIiwgImNvdW50c09mZnNldCBvdXQgb2Yg
Ym91bmRzIiwgY291bnRzTGlzdC5sZW5ndGgoKSwgY291bnRzT2Zmc2V0LCBkcmF3Y291bnQpKSB7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2NvbnRleHQtPmdyYXBoaWNzQ29udGV4
dEdMKCktPmdldEV4dGVuc2lvbnMoKS5tdWx0aURyYXdBcnJheXNBTkdMRShtb2RlLCBtYWtlU3Bh
bldpdGhPZmZzZXQoZmlyc3RzTGlzdCwgZmlyc3RzT2Zmc2V0KSwgbWFrZVNwYW5XaXRoT2Zmc2V0
KGNvdW50c0xpc3QsIGNvdW50c09mZnNldCksIGRyYXdjb3VudCk7Cit9CisKK3ZvaWQgV2ViR0xN
dWx0aURyYXc6Om11bHRpRHJhd0FycmF5c0luc3RhbmNlZFdFQkdMKAorICAgIEdDR0xlbnVtIG1v
ZGUsCisgICAgSW50MzJMaXN0IGZpcnN0c0xpc3QsCisgICAgR0NHTHVpbnQgZmlyc3RzT2Zmc2V0
LAorICAgIEludDMyTGlzdCBjb3VudHNMaXN0LAorICAgIEdDR0x1aW50IGNvdW50c09mZnNldCwK
KyAgICBJbnQzMkxpc3QgaW5zdGFuY2VDb3VudHNMaXN0LAorICAgIEdDR0x1aW50IGluc3RhbmNl
Q291bnRzT2Zmc2V0LAorICAgIEdDR0xzaXplaSBkcmF3Y291bnQpCit7CisgICAgaWYgKCFtX2Nv
bnRleHQgfHwgbV9jb250ZXh0LT5pc0NvbnRleHRMb3N0KCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGlmICghdmFsaWRhdGVEcmF3Y291bnQoIm11bHRpRHJhd0FycmF5c0luc3RhbmNlZFdFQkdM
IiwgZHJhd2NvdW50KQorICAgICAgICB8fCAhdmFsaWRhdGVPZmZzZXQoIm11bHRpRHJhd0FycmF5
c0luc3RhbmNlZFdFQkdMIiwgImZpcnN0c09mZnNldCBvdXQgb2YgYm91bmRzIiwgZmlyc3RzTGlz
dC5sZW5ndGgoKSwgZmlyc3RzT2Zmc2V0LCBkcmF3Y291bnQpCisgICAgICAgIHx8ICF2YWxpZGF0
ZU9mZnNldCgibXVsdGlEcmF3QXJyYXlzSW5zdGFuY2VkV0VCR0wiLCAiY291bnRzT2Zmc2V0IG91
dCBvZiBib3VuZHMiLCBjb3VudHNMaXN0Lmxlbmd0aCgpLCBjb3VudHNPZmZzZXQsIGRyYXdjb3Vu
dCkKKyAgICAgICAgfHwgIXZhbGlkYXRlT2Zmc2V0KCJtdWx0aURyYXdBcnJheXNJbnN0YW5jZWRX
RUJHTCIsICJpbnN0YW5jZUNvdW50c09mZnNldCBvdXQgb2YgYm91bmRzIiwgaW5zdGFuY2VDb3Vu
dHNMaXN0Lmxlbmd0aCgpLCBpbnN0YW5jZUNvdW50c09mZnNldCwgZHJhd2NvdW50KSkgeworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9jb250ZXh0LT5ncmFwaGljc0NvbnRleHRHTCgp
LT5nZXRFeHRlbnNpb25zKCkubXVsdGlEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUobW9kZSwgbWFr
ZVNwYW5XaXRoT2Zmc2V0KGZpcnN0c0xpc3QsIGZpcnN0c09mZnNldCksIG1ha2VTcGFuV2l0aE9m
ZnNldChjb3VudHNMaXN0LCBjb3VudHNPZmZzZXQpLCBtYWtlU3BhbldpdGhPZmZzZXQoaW5zdGFu
Y2VDb3VudHNMaXN0LCBpbnN0YW5jZUNvdW50c09mZnNldCksIGRyYXdjb3VudCk7Cit9CisKK3Zv
aWQgV2ViR0xNdWx0aURyYXc6Om11bHRpRHJhd0VsZW1lbnRzV0VCR0woCisgICAgR0NHTGVudW0g
bW9kZSwKKyAgICBJbnQzMkxpc3QgY291bnRzTGlzdCwKKyAgICBHQ0dMdWludCBjb3VudHNPZmZz
ZXQsCisgICAgR0NHTGVudW0gdHlwZSwKKyAgICBJbnQzMkxpc3Qgb2Zmc2V0c0xpc3QsCisgICAg
R0NHTHVpbnQgb2Zmc2V0c09mZnNldCwKKyAgICBHQ0dMc2l6ZWkgZHJhd2NvdW50KQoreworICAg
IGlmICghbV9jb250ZXh0IHx8IG1fY29udGV4dC0+aXNDb250ZXh0TG9zdCgpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBpZiAoIXZhbGlkYXRlRHJhd2NvdW50KCJtdWx0aURyYXdFbGVtZW50c1dF
QkdMIiwgZHJhd2NvdW50KQorICAgICAgICB8fCAhdmFsaWRhdGVPZmZzZXQoIm11bHRpRHJhd0Vs
ZW1lbnRzV0VCR0wiLCAiY291bnRzT2Zmc2V0IG91dCBvZiBib3VuZHMiLCBjb3VudHNMaXN0Lmxl
bmd0aCgpLCBjb3VudHNPZmZzZXQsIGRyYXdjb3VudCkKKyAgICAgICAgfHwgIXZhbGlkYXRlT2Zm
c2V0KCJtdWx0aURyYXdFbGVtZW50c1dFQkdMIiwgIm9mZnNldHNPZmZzZXQgb3V0IG9mIGJvdW5k
cyIsIG9mZnNldHNMaXN0Lmxlbmd0aCgpLCBvZmZzZXRzT2Zmc2V0LCBkcmF3Y291bnQpKSB7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2NvbnRleHQtPmdyYXBoaWNzQ29udGV4dEdM
KCktPmdldEV4dGVuc2lvbnMoKS5tdWx0aURyYXdFbGVtZW50c0FOR0xFKG1vZGUsIG1ha2VTcGFu
V2l0aE9mZnNldChjb3VudHNMaXN0LCBjb3VudHNPZmZzZXQpLCB0eXBlLCBtYWtlU3BhbldpdGhP
ZmZzZXQob2Zmc2V0c0xpc3QsIG9mZnNldHNPZmZzZXQpLCBkcmF3Y291bnQpOworfQorCit2b2lk
IFdlYkdMTXVsdGlEcmF3OjptdWx0aURyYXdFbGVtZW50c0luc3RhbmNlZFdFQkdMKAorICAgIEdD
R0xlbnVtIG1vZGUsCisgICAgSW50MzJMaXN0IGNvdW50c0xpc3QsCisgICAgR0NHTHVpbnQgY291
bnRzT2Zmc2V0LAorICAgIEdDR0xlbnVtIHR5cGUsCisgICAgSW50MzJMaXN0IG9mZnNldHNMaXN0
LAorICAgIEdDR0x1aW50IG9mZnNldHNPZmZzZXQsCisgICAgSW50MzJMaXN0IGluc3RhbmNlQ291
bnRzTGlzdCwKKyAgICBHQ0dMdWludCBpbnN0YW5jZUNvdW50c09mZnNldCwKKyAgICBHQ0dMc2l6
ZWkgZHJhd2NvdW50KQoreworICAgIGlmICghbV9jb250ZXh0IHx8IG1fY29udGV4dC0+aXNDb250
ZXh0TG9zdCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIXZhbGlkYXRlRHJhd2NvdW50
KCJtdWx0aURyYXdFbGVtZW50c1dFQkdMIiwgZHJhd2NvdW50KQorICAgICAgICB8fCAhdmFsaWRh
dGVPZmZzZXQoIm11bHRpRHJhd0VsZW1lbnRzV0VCR0wiLCAiY291bnRzT2Zmc2V0IG91dCBvZiBi
b3VuZHMiLCBjb3VudHNMaXN0Lmxlbmd0aCgpLCBjb3VudHNPZmZzZXQsIGRyYXdjb3VudCkKKyAg
ICAgICAgfHwgIXZhbGlkYXRlT2Zmc2V0KCJtdWx0aURyYXdFbGVtZW50c1dFQkdMIiwgIm9mZnNl
dHNPZmZzZXQgb3V0IG9mIGJvdW5kcyIsIG9mZnNldHNMaXN0Lmxlbmd0aCgpLCBvZmZzZXRzT2Zm
c2V0LCBkcmF3Y291bnQpCisgICAgICAgIHx8ICF2YWxpZGF0ZU9mZnNldCgibXVsdGlEcmF3RWxl
bWVudHNXRUJHTCIsICJjb3VudHNPZmZzZXQgb3V0IG9mIGJvdW5kcyIsIGluc3RhbmNlQ291bnRz
TGlzdC5sZW5ndGgoKSwgaW5zdGFuY2VDb3VudHNPZmZzZXQsIGRyYXdjb3VudCkpIHsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIG1fY29udGV4dC0+Z3JhcGhpY3NDb250ZXh0R0woKS0+
Z2V0RXh0ZW5zaW9ucygpLm11bHRpRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUobW9kZSwgbWFr
ZVNwYW5XaXRoT2Zmc2V0KGNvdW50c0xpc3QsIGNvdW50c09mZnNldCksIHR5cGUsIG1ha2VTcGFu
V2l0aE9mZnNldChvZmZzZXRzTGlzdCwgb2Zmc2V0c09mZnNldCksIG1ha2VTcGFuV2l0aE9mZnNl
dChpbnN0YW5jZUNvdW50c0xpc3QsIGluc3RhbmNlQ291bnRzT2Zmc2V0KSwgZHJhd2NvdW50KTsK
K30KKworYm9vbCBXZWJHTE11bHRpRHJhdzo6dmFsaWRhdGVEcmF3Y291bnQoY29uc3QgY2hhciog
ZnVuY3Rpb25OYW1lLCBHQ0dMc2l6ZWkgZHJhd2NvdW50KQoreworICAgIGlmIChkcmF3Y291bnQg
PCAwKSB7CisgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250
ZXh0R0w6OklOVkFMSURfVkFMVUUsIGZ1bmN0aW9uTmFtZSwgIm5lZ2F0aXZlIGRyYXdjb3VudCIp
OworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisK
K2Jvb2wgV2ViR0xNdWx0aURyYXc6OnZhbGlkYXRlT2Zmc2V0KAorICAgIGNvbnN0IGNoYXIqIGZ1
bmN0aW9uTmFtZSwKKyAgICBjb25zdCBjaGFyKiBvdXRPZkJvdW5kc0Rlc2NyaXB0aW9uLAorICAg
IEdDR0xzaXplaSBzaXplLAorICAgIEdDR0x1aW50IG9mZnNldCwKKyAgICBHQ0dMc2l6ZWkgZHJh
d2NvdW50KQoreworICAgIGlmIChkcmF3Y291bnQgPiBzaXplKSB7CisgICAgICAgIG1fY29udGV4
dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfT1BFUkFUSU9O
LCBmdW5jdGlvbk5hbWUsICJkcmF3Y291bnQgb3V0IG9mIGJvdW5kcyIpOworICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKG9mZnNldCA+PSBzdGF0aWNfY2FzdDxHQ0dMdWlu
dD4oc2l6ZSkpIHsKKyAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGlj
c0NvbnRleHRHTDo6SU5WQUxJRF9PUEVSQVRJT04sIGZ1bmN0aW9uTmFtZSwgb3V0T2ZCb3VuZHNE
ZXNjcmlwdGlvbik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdF
QkdMKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xNdWx0aURy
YXcuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMTXVsdGlEcmF3LmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZDhkMjUxMjFkYmViMTY5YTFlYjU2ZGQ3YzNhYTgwNjQ3ZTIwMDRjMwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMTXVsdGlEcmF3LmgKQEAg
LTAsMCArMSwxMjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIldlYkdMRXh0
ZW5zaW9uLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgV2ViR0xNdWx0aURyYXcg
ZmluYWwgOiBwdWJsaWMgV2ViR0xFeHRlbnNpb24geworICAgIFdURl9NQUtFX0lTT19BTExPQ0FU
RUQoV2ViR0xNdWx0aURyYXcpOworCitwcml2YXRlOgorICAgIHRlbXBsYXRlIDxjbGFzcyBUeXBl
ZEFycmF5LCBjbGFzcyBEYXRhVHlwZT4KKyAgICBjbGFzcyBUeXBlZExpc3QgeworICAgIHB1Ymxp
YzoKKyAgICAgICAgdXNpbmcgVmFyaWFudFR5cGUgPSBWYXJpYW50PFJlZlB0cjxUeXBlZEFycmF5
PiwgVmVjdG9yPERhdGFUeXBlPj47CisKKyAgICAgICAgVHlwZWRMaXN0KFZhcmlhbnRUeXBlJiYg
dmFyaWFudCkKKyAgICAgICAgICAgIDogbV92YXJpYW50KFdURk1vdmUodmFyaWFudCkpCisgICAg
ICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIGNvbnN0IERhdGFUeXBlKiBkYXRhKCkgY29uc3QK
KyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV92YXJpYW50LAor
ICAgICAgICAgICAgICAgIFtdIChjb25zdCBSZWZQdHI8VHlwZWRBcnJheT4mIHR5cGVkQXJyYXkp
IC0+IGNvbnN0IERhdGFUeXBlKiB7IHJldHVybiB0eXBlZEFycmF5LT5kYXRhKCk7IH0sCisgICAg
ICAgICAgICAgICAgW10gKGNvbnN0IFZlY3RvcjxEYXRhVHlwZT4mIHZlY3RvcikgLT4gY29uc3Qg
RGF0YVR5cGUqIHsgcmV0dXJuIHZlY3Rvci5kYXRhKCk7IH0KKyAgICAgICAgICAgICk7CisgICAg
ICAgIH0KKworICAgICAgICBHQ0dMc2l6ZWkgbGVuZ3RoKCkgY29uc3QKKyAgICAgICAgeworICAg
ICAgICAgICAgcmV0dXJuIFdURjo6c3dpdGNoT24obV92YXJpYW50LAorICAgICAgICAgICAgICAg
IFtdIChjb25zdCBSZWZQdHI8VHlwZWRBcnJheT4mIHR5cGVkQXJyYXkpIC0+IEdDR0xzaXplaSB7
IHJldHVybiB0eXBlZEFycmF5LT5sZW5ndGgoKTsgfSwKKyAgICAgICAgICAgICAgICBbXSAoY29u
c3QgVmVjdG9yPERhdGFUeXBlPiYgdmVjdG9yKSAtPiBHQ0dMc2l6ZWkgeyByZXR1cm4gdmVjdG9y
LnNpemUoKTsgfQorICAgICAgICAgICAgKTsKKyAgICAgICAgfQorCisgICAgcHJpdmF0ZToKKyAg
ICAgICAgVmFyaWFudFR5cGUgbV92YXJpYW50OworICAgIH07CisKK3B1YmxpYzoKKyAgICB1c2lu
ZyBJbnQzMkxpc3QgPSBUeXBlZExpc3Q8SW50MzJBcnJheSwgaW50MzJfdD47CisKKyAgICBleHBs
aWNpdCBXZWJHTE11bHRpRHJhdyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJik7CisgICAgdmly
dHVhbCB+V2ViR0xNdWx0aURyYXcoKTsKKworICAgIEV4dGVuc2lvbk5hbWUgZ2V0TmFtZSgpIGNv
bnN0IG92ZXJyaWRlOworCisgICAgc3RhdGljIGJvb2wgc3VwcG9ydGVkKGNvbnN0IFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UmKTsKKworICAgIHZvaWQgbXVsdGlEcmF3QXJyYXlzV0VCR0woCisg
ICAgICAgIEdDR0xlbnVtIG1vZGUsCisgICAgICAgIEludDMyTGlzdCBmaXJzdHNMaXN0LAorICAg
ICAgICBHQ0dMdWludCBmaXJzdHNPZmZzZXQsCisgICAgICAgIEludDMyTGlzdCBjb3VudHNMaXN0
LAorICAgICAgICBHQ0dMdWludCBjb3VudHNPZmZzZXQsCisgICAgICAgIEdDR0xzaXplaSBkcmF3
Y291bnQpOworCisgICAgdm9pZCBtdWx0aURyYXdFbGVtZW50c1dFQkdMKAorICAgICAgICBHQ0dM
ZW51bSBtb2RlLAorICAgICAgICBJbnQzMkxpc3QgY291bnRzTGlzdCwKKyAgICAgICAgR0NHTHVp
bnQgY291bnRzT2Zmc2V0LAorICAgICAgICBHQ0dMZW51bSB0eXBlLAorICAgICAgICBJbnQzMkxp
c3Qgb2Zmc2V0c0xpc3QsCisgICAgICAgIEdDR0x1aW50IG9mZnNldHNPZmZzZXQsCisgICAgICAg
IEdDR0xzaXplaSBkcmF3Y291bnQpOworCisgICAgdm9pZCBtdWx0aURyYXdBcnJheXNJbnN0YW5j
ZWRXRUJHTCgKKyAgICAgICAgR0NHTGVudW0gbW9kZSwKKyAgICAgICAgSW50MzJMaXN0IGZpcnN0
c0xpc3QsCisgICAgICAgIEdDR0x1aW50IGZpcnN0c09mZnNldCwKKyAgICAgICAgSW50MzJMaXN0
IGNvdW50c0xpc3QsCisgICAgICAgIEdDR0x1aW50IGNvdW50c09mZnNldCwKKyAgICAgICAgSW50
MzJMaXN0IGluc3RhbmNlQ291bnRzTGlzdCwKKyAgICAgICAgR0NHTHVpbnQgaW5zdGFuY2VDb3Vu
dHNPZmZzZXQsCisgICAgICAgIEdDR0xzaXplaSBkcmF3Y291bnQpOworCisgICAgdm9pZCBtdWx0
aURyYXdFbGVtZW50c0luc3RhbmNlZFdFQkdMKAorICAgICAgICBHQ0dMZW51bSBtb2RlLAorICAg
ICAgICBJbnQzMkxpc3QgY291bnRzTGlzdCwKKyAgICAgICAgR0NHTHVpbnQgY291bnRzT2Zmc2V0
LAorICAgICAgICBHQ0dMZW51bSB0eXBlLAorICAgICAgICBJbnQzMkxpc3Qgb2Zmc2V0c0xpc3Qs
CisgICAgICAgIEdDR0x1aW50IG9mZnNldHNPZmZzZXQsCisgICAgICAgIEludDMyTGlzdCBpbnN0
YW5jZUNvdW50c0xpc3QsCisgICAgICAgIEdDR0x1aW50IGluc3RhbmNlQ291bnRzT2Zmc2V0LAor
ICAgICAgICBHQ0dMc2l6ZWkgZHJhd2NvdW50KTsKKworcHJpdmF0ZToKKyAgICBib29sIHZhbGlk
YXRlRHJhd2NvdW50KGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgR0NHTHNpemVpIGRyYXdjb3Vu
dCk7CisgICAgYm9vbCB2YWxpZGF0ZU9mZnNldCgKKyAgICAgICAgY29uc3QgY2hhciogZnVuY3Rp
b25OYW1lLAorICAgICAgICBjb25zdCBjaGFyKiBvdXRPZkJvdW5kc0Rlc2NyaXB0aW9uLAorICAg
ICAgICBHQ0dMc2l6ZWksCisgICAgICAgIEdDR0x1aW50IG9mZnNldCwKKyAgICAgICAgR0NHTHNp
emVpIGRyYXdjb3VudCk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTE11bHRpRHJhdy5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTE11bHRpRHJhdy5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGE5YzE5
NDQxZDllMzMzOTIwZDM0NTNjN2FhODlhNmRiMzEwYzJmOQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMTXVsdGlEcmF3LmlkbApAQCAtMCwwICsxLDc0
IEBACisvKgorKiBDb3B5cmlnaHQgKEMpIDIwMjEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyoKKyogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKiBhcmUgbWV0OgorKgorKiAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisqICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorKgorKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFO
RCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisq
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKKyogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorKiBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwor
KiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7CisqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorKiBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisKK3R5cGVkZWYgdW5z
aWduZWQgbG9uZyBHTGVudW07Cit0eXBlZGVmIGxvbmcgR0xpbnQ7Cit0eXBlZGVmIGxvbmcgR0xz
aXplaTsKK3R5cGVkZWYgdW5zaWduZWQgbG9uZyBHTHVpbnQ7Cit0eXBlZGVmIChJbnQzMkFycmF5
IG9yIHNlcXVlbmNlPEdMaW50PikgSW50MzJMaXN0OworCitbCisgICAgTGVnYWN5Tm9JbnRlcmZh
Y2VPYmplY3QsCisgICAgQ29uZGl0aW9uYWw9V0VCR0wsCisgICAgR2VuZXJhdGVJc1JlYWNoYWJs
ZT1JbXBsV2ViR0xSZW5kZXJpbmdDb250ZXh0CitdIGludGVyZmFjZSBXZWJHTE11bHRpRHJhdyB7
CisgICAgdW5kZWZpbmVkIG11bHRpRHJhd0FycmF5c1dFQkdMKAorICAgICAgICBHTGVudW0gbW9k
ZSwKKyAgICAgICAgSW50MzJMaXN0IGZpcnN0c0xpc3QsCisgICAgICAgIEdMdWludCBmaXJzdHNP
ZmZzZXQsCisgICAgICAgIEludDMyTGlzdCBjb3VudHNMaXN0LAorICAgICAgICBHTHVpbnQgY291
bnRzT2Zmc2V0LAorICAgICAgICBHTHNpemVpIGRyYXdjb3VudCk7CisKKyAgICB1bmRlZmluZWQg
bXVsdGlEcmF3QXJyYXlzSW5zdGFuY2VkV0VCR0woCisgICAgICAgIEdMZW51bSBtb2RlLAorICAg
ICAgICBJbnQzMkxpc3QgZmlyc3RzTGlzdCwKKyAgICAgICAgR0x1aW50IGZpcnN0c09mZnNldCwK
KyAgICAgICAgSW50MzJMaXN0IGNvdW50c0xpc3QsCisgICAgICAgIEdMdWludCBjb3VudHNPZmZz
ZXQsCisgICAgICAgIEludDMyTGlzdCBpbnN0YW5jZUNvdW50c0xpc3QsCisgICAgICAgIEdMdWlu
dCBpbnN0YW5jZUNvdW50c09mZnNldCwKKyAgICAgICAgR0xzaXplaSBkcmF3Y291bnQpOworCisg
ICAgdW5kZWZpbmVkIG11bHRpRHJhd0VsZW1lbnRzV0VCR0woCisgICAgICAgIEdMZW51bSBtb2Rl
LAorICAgICAgICBJbnQzMkxpc3QgY291bnRzTGlzdCwKKyAgICAgICAgR0x1aW50IGNvdW50c09m
ZnNldCwKKyAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgIEludDMyTGlzdCBvZmZzZXRzTGlz
dCwKKyAgICAgICAgR0x1aW50IG9mZnNldHNPZmZzZXQsCisgICAgICAgIEdMc2l6ZWkgZHJhd2Nv
dW50KTsKKworICAgIHVuZGVmaW5lZCBtdWx0aURyYXdFbGVtZW50c0luc3RhbmNlZFdFQkdMKAor
ICAgICAgICBHTGVudW0gbW9kZSwKKyAgICAgICAgSW50MzJMaXN0IGNvdW50c0xpc3QsCisgICAg
ICAgIEdMdWludCBjb3VudHNPZmZzZXQsCisgICAgICAgIEdMZW51bSB0eXBlLAorICAgICAgICBJ
bnQzMkxpc3Qgb2Zmc2V0c0xpc3QsCisgICAgICAgIEdMdWludCBvZmZzZXRzT2Zmc2V0LAorICAg
ICAgICBJbnQzMkxpc3QgaW5zdGFuY2VDb3VudHNMaXN0LAorICAgICAgICBHTHVpbnQgaW5zdGFu
Y2VDb3VudHNPZmZzZXQsCisgICAgICAgIEdMc2l6ZWkgZHJhd2NvdW50KTsKK307CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcApp
bmRleCAwN2RmY2EzZTFkOThhOWIxMDc4MDMyMTkyYjY0ODg4NDRkNzZjZGFiLi5kNGEyM2RiODA4
ZjA4NDllMjY5NzZiMTEzODg1NTE3N2M5ZTJiYTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTY4LDYgKzY4LDcg
QEAKICNpbmNsdWRlICJXZWJHTERlcHRoVGV4dHVyZS5oIgogI2luY2x1ZGUgIldlYkdMRHJhd0J1
ZmZlcnMuaCIKICNpbmNsdWRlICJXZWJHTExvc2VDb250ZXh0LmgiCisjaW5jbHVkZSAiV2ViR0xN
dWx0aURyYXcuaCIKICNpbmNsdWRlICJXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmgiCiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oPgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBJbmxpbmVzLmg+CkBAIC0yMDQsNiArMjA1LDcgQEAg
V2ViR0xFeHRlbnNpb24qIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RXh0ZW5zaW9uKGNvbnN0
IFN0cmluZyYgbmFtZSkKICAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKEVYVENvbG9yQnVmZmVySGFs
ZkZsb2F0LCBtX2V4dENvbG9yQnVmZmVySGFsZkZsb2F0LCAiRVhUX2NvbG9yX2J1ZmZlcl9oYWxm
X2Zsb2F0IiwgRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQ6OnN1cHBvcnRlZCgqdGhpcykpOwogICAg
IEVOQUJMRV9JRl9SRVFVRVNURUQoRVhURmxvYXRCbGVuZCwgbV9leHRGbG9hdEJsZW5kLCAiRVhU
X2Zsb2F0X2JsZW5kIiwgRVhURmxvYXRCbGVuZDo6c3VwcG9ydGVkKCp0aGlzKSk7CiAgICAgRU5B
QkxFX0lGX1JFUVVFU1RFRChXZWJHTENvbG9yQnVmZmVyRmxvYXQsIG1fd2ViZ2xDb2xvckJ1ZmZl
ckZsb2F0LCAiV0VCR0xfY29sb3JfYnVmZmVyX2Zsb2F0IiwgV2ViR0xDb2xvckJ1ZmZlckZsb2F0
OjpzdXBwb3J0ZWQoKnRoaXMpKTsKKyAgICBFTkFCTEVfSUZfUkVRVUVTVEVEKFdlYkdMTXVsdGlE
cmF3LCBtX3dlYmdsTXVsdGlEcmF3LCAiV0VCR0xfbXVsdGlfZHJhdyIsIFdlYkdMTXVsdGlEcmF3
OjpzdXBwb3J0ZWQoKnRoaXMpKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApAQCAtMjc5LDYg
KzI4MSw4IEBAIE9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6
OmdldFN1cHBvcnRlZEV4dGVuc2lvbnMoKQogICAgICAgICByZXN1bHQuYXBwZW5kKCJXRUJHTF9j
b2xvcl9idWZmZXJfZmxvYXQiX3MpOwogICAgIGlmIChLSFJQYXJhbGxlbFNoYWRlckNvbXBpbGU6
OnN1cHBvcnRlZCgqdGhpcykpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIktIUl9wYXJhbGxlbF9z
aGFkZXJfY29tcGlsZSIpOworICAgIGlmIChXZWJHTE11bHRpRHJhdzo6c3VwcG9ydGVkKCp0aGlz
KSkKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgiV0VCR0xfbXVsdGlfZHJhdyJfcyk7CiAKICAgICBy
ZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAppbmRleCA5NDM5NjA2MDg2MTMwOTM5MDk1
Y2YyMjdmNzE5ZGYwMTk2N2IwNzNmLi41NzhlMDIxODBjNDZmM2RiYzRmZmZkMGFmMGMzNTNmMzk0
ODIwZGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcApAQCAtMzc3OSw2ICszNzc5LDcgQEAgYm9vbCBXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjpleHRlbnNpb25Jc0VuYWJsZWQoY29uc3QgU3RyaW5nJiBu
YW1lKQogICAgIENIRUNLX0VYVEVOU0lPTihtX2V4dEZsb2F0QmxlbmQsICJFWFRfZmxvYXRfYmxl
bmQiKTsKICAgICBDSEVDS19FWFRFTlNJT04obV93ZWJnbENvbG9yQnVmZmVyRmxvYXQsICJXRUJH
TF9jb2xvcl9idWZmZXJfZmxvYXQiKTsKICAgICBDSEVDS19FWFRFTlNJT04obV9leHRDb2xvckJ1
ZmZlckZsb2F0LCAiRVhUX2NvbG9yX2J1ZmZlcl9mbG9hdCIpOworICAgIENIRUNLX0VYVEVOU0lP
TihtX3dlYmdsTXVsdGlEcmF3LCAiV0VCR0xfbXVsdGlfZHJhdyIpOwogICAgIHJldHVybiBmYWxz
ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZS5oCmluZGV4IDI2YzUxMThlNGQxZWJlMDg1NWMzMmMyMTAzOGIxNGZh
OTgzM2JlODQuLjI1NTViYmZiZmQwODllNmE5MzQyZTZjNzljZGFlOWY2MDI3NGQyM2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlLmgKQEAgLTEwOSw2ICsxMDksNyBAQCBjbGFzcyBXZWJHTERlcHRoVGV4dHVyZTsKIGNs
YXNzIFdlYkdMRHJhd0J1ZmZlcnM7CiBjbGFzcyBXZWJHTEV4dGVuc2lvbjsKIGNsYXNzIFdlYkdM
TG9zZUNvbnRleHQ7CitjbGFzcyBXZWJHTE11bHRpRHJhdzsKIGNsYXNzIFdlYkdMT2JqZWN0Owog
Y2xhc3MgV2ViR0xTaGFkZXI7CiBjbGFzcyBXZWJHTFNoYXJlZE9iamVjdDsKQEAgLTQ0NCw2ICs0
NDUsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgZnJpZW5kIGNsYXNzIFdlYkdMQ29tcHJlc3NlZFRleHR1
cmVQVlJUQzsKICAgICBmcmllbmQgY2xhc3MgV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVEM7CiAg
ICAgZnJpZW5kIGNsYXNzIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDc1JHQjsKKyAgICBmcmll
bmQgY2xhc3MgV2ViR0xNdWx0aURyYXc7CiAgICAgZnJpZW5kIGNsYXNzIFdlYkdMUmVuZGVyaW5n
Q29udGV4dEVycm9yTWVzc2FnZUNhbGxiYWNrOwogICAgIGZyaWVuZCBjbGFzcyBXZWJHTFZlcnRl
eEFycmF5T2JqZWN0T0VTOwogICAgIGZyaWVuZCBjbGFzcyBXZWJHTFZlcnRleEFycmF5T2JqZWN0
OwpAQCAtNzEyLDYgKzcxNCw3IEBAIHByb3RlY3RlZDoKICAgICBSZWZQdHI8RVhURmxvYXRCbGVu
ZD4gbV9leHRGbG9hdEJsZW5kOwogICAgIFJlZlB0cjxXZWJHTENvbG9yQnVmZmVyRmxvYXQ+IG1f
d2ViZ2xDb2xvckJ1ZmZlckZsb2F0OwogICAgIFJlZlB0cjxFWFRDb2xvckJ1ZmZlckZsb2F0PiBt
X2V4dENvbG9yQnVmZmVyRmxvYXQ7CisgICAgUmVmUHRyPFdlYkdMTXVsdGlEcmF3PiBtX3dlYmds
TXVsdGlEcmF3OwogCiAgICAgYm9vbCBtX2FyZVdlYkdMMlRleEltYWdlU291cmNlRm9ybWF0c0Fu
ZFR5cGVzQWRkZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9hcmVPRVNUZXh0dXJlRmxvYXRGb3Jt
YXRzQW5kVHlwZXNBZGRlZCB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5oCmluZGV4IGQ1MDIxZGQzMzRlZGY5MWEzNDIzMGJlMDE2
ODkyMDc0MjQ5ZWIwZTguLjZjYmJhZjM2ODg5MDMxMjg5NzQ0MjYxOWIzODFhNGM5OTEwMTg3ZjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNH
TC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnNHTC5o
CkBAIC0zNTAsNiArMzUwLDEyIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZ2V0UXVlcnlP
YmplY3RpNjR2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6
ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQ2NCogcGFyYW1zKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGdldFF1ZXJ5T2JqZWN0dWk2NHZSb2J1c3RBTkdMRShHQ0dMdWludCBp
ZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwg
R0NHTHVpbnQ2NCogcGFyYW1zKSA9IDA7CiAKKyAgICAvLyBHTF9BTkdMRV9tdWx0aV9kcmF3Cisg
ICAgdmlydHVhbCB2b2lkIG11bHRpRHJhd0FycmF5c0FOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xT
cGFuPGNvbnN0IEdDR0xpbnQ+IGZpcnN0cywgR0NHTFNwYW48Y29uc3QgR0NHTHNpemVpPiBjb3Vu
dHMsIEdDR0xzaXplaSBkcmF3Y291bnQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgbXVsdGlEcmF3
QXJyYXlzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTFNwYW48Y29uc3QgR0NHTGlu
dD4gZmlyc3RzLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMc2l6ZWk+IGNvdW50cywgR0NHTFNwYW48Y29u
c3QgR0NHTHNpemVpPiBpbnN0YW5jZUNvdW50cywgR0NHTHNpemVpIGRyYXdjb3VudCkgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBtdWx0aURyYXdFbGVtZW50c0FOR0xFKEdDR0xlbnVtIG1vZGUsIEdD
R0xTcGFuPGNvbnN0IEdDR0xzaXplaT4gY291bnRzLCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxj
b25zdCBHQ0dMaW50PiBvZmZzZXRzLCBHQ0dMc2l6ZWkgZHJhd2NvdW50KSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIG11bHRpRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwg
R0NHTFNwYW48Y29uc3QgR0NHTHNpemVpPiBjb3VudHMsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFu
PGNvbnN0IEdDR0xpbnQ+IG9mZnNldHMsIEdDR0xTcGFuPGNvbnN0IEdDR0xzaXplaT4gaW5zdGFu
Y2VDb3VudHMsIEdDR0xzaXplaSBkcmF3Y291bnQpID0gMDsKKwogICAgIC8vIE90aGVyIGZ1bmN0
aW9ucy4KICNpZiAhVVNFKEFOR0xFKQogICAgIC8vIEVYVCBSb2J1c3RuZXNzIC0gdXNlcyBnZXRH
cmFwaGljc1Jlc2V0U3RhdHVzQVJCCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5jcHAKaW5kZXggOTIwZDky
ZjM1Y2FkZDhiYjA4NTIzZDE3NjU3NTQxMjA5N2Y2Yzk2Zi4uMGM1MDVkM2NkMDU1ZjQxODk4ZDky
NTIwNTNlNjAzMjc0MzkwYjg1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmNwcApAQCAtMzAsNiAr
MzAsNyBAQAogCiAjaW5jbHVkZSAiQU5HTEVIZWFkZXJzLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0wuaCIKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApAQCAtNTMyLDYgKzUzMyw0NyBAQCB2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpn
ZXRRdWVyeU9iamVjdHVpNjR2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYQog
ICAgIGdsOjpHZXRRdWVyeU9iamVjdHVpNjR2Um9idXN0QU5HTEUoaWQsIHBuYW1lLCBidWZTaXpl
LCBsZW5ndGgsIHJlaW50ZXJwcmV0X2Nhc3Q8R0x1aW50NjQqPihwYXJhbXMpKTsKIH0KIAordm9p
ZCBFeHRlbnNpb25zR0xBTkdMRTo6bXVsdGlEcmF3QXJyYXlzQU5HTEUoR0NHTGVudW0gbW9kZSwg
R0NHTFNwYW48Y29uc3QgR0NHTGludD4gZmlyc3RzLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMc2l6ZWk+
IGNvdW50cywgR0NHTHNpemVpIGRyYXdjb3VudCkKK3sKKyAgICBpZiAoIW1fY29udGV4dC0+bWFr
ZUNvbnRleHRDdXJyZW50KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGdsOjpNdWx0aURyYXdB
cnJheXNBTkdMRShtb2RlLCBmaXJzdHMuZGF0YSwgY291bnRzLmRhdGEsIGRyYXdjb3VudCk7Cit9
CisKK3ZvaWQgRXh0ZW5zaW9uc0dMQU5HTEU6Om11bHRpRHJhd0FycmF5c0luc3RhbmNlZEFOR0xF
KEdDR0xlbnVtIG1vZGUsIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IGZpcnN0cywgR0NHTFNwYW48
Y29uc3QgR0NHTHNpemVpPiBjb3VudHMsIEdDR0xTcGFuPGNvbnN0IEdDR0xzaXplaT4gaW5zdGFu
Y2VDb3VudHMsIEdDR0xzaXplaSBkcmF3Y291bnQpCit7CisgICAgaWYgKCFtX2NvbnRleHQtPm1h
a2VDb250ZXh0Q3VycmVudCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBnbDo6TXVsdGlEcmF3
QXJyYXlzSW5zdGFuY2VkQU5HTEUobW9kZSwgZmlyc3RzLmRhdGEsIGNvdW50cy5kYXRhLCBpbnN0
YW5jZUNvdW50cy5kYXRhLCBkcmF3Y291bnQpOworfQorCit2b2lkIEV4dGVuc2lvbnNHTEFOR0xF
OjptdWx0aURyYXdFbGVtZW50c0FOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xTcGFuPGNvbnN0IEdD
R0xzaXplaT4gY291bnRzLCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiBv
ZmZzZXRzLCBHQ0dMc2l6ZWkgZHJhd2NvdW50KQoreworICAgIGlmICghbV9jb250ZXh0LT5tYWtl
Q29udGV4dEN1cnJlbnQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gTXVzdCBwZXJmb3Jt
IGNvbnZlcnNpb24gZnJvbSBpbnRlZ2VyIG9mZnNldHMgdG8gdm9pZCogcG9pbnRlcnMgYmVmb3Jl
IHBhc3NpbmcgZG93biB0byBBTkdMRS4KKyAgICBWZWN0b3I8dm9pZCo+IHBvaW50ZXJzOworICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb2Zmc2V0cy5idWZTaXplOyArK2kpCisgICAgICAgIHBv
aW50ZXJzLmFwcGVuZChyZWludGVycHJldF9jYXN0PHZvaWQqPihvZmZzZXRzW2ldKSk7CisKKyAg
ICBnbDo6TXVsdGlEcmF3RWxlbWVudHNBTkdMRShtb2RlLCBjb3VudHMuZGF0YSwgdHlwZSwgcG9p
bnRlcnMuZGF0YSgpLCBkcmF3Y291bnQpOworfQorCit2b2lkIEV4dGVuc2lvbnNHTEFOR0xFOjpt
dWx0aURyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xTcGFuPGNv
bnN0IEdDR0xzaXplaT4gY291bnRzLCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dM
aW50PiBvZmZzZXRzLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMc2l6ZWk+IGluc3RhbmNlQ291bnRzLCBH
Q0dMc2l6ZWkgZHJhd2NvdW50KQoreworICAgIGlmICghbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1
cnJlbnQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gTXVzdCBwZXJmb3JtIGNvbnZlcnNp
b24gZnJvbSBpbnRlZ2VyIG9mZnNldHMgdG8gdm9pZCogcG9pbnRlcnMgYmVmb3JlIHBhc3Npbmcg
ZG93biB0byBBTkdMRS4KKyAgICBWZWN0b3I8dm9pZCo+IHBvaW50ZXJzOworICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgb2Zmc2V0cy5idWZTaXplOyArK2kpCisgICAgICAgIHBvaW50ZXJzLmFw
cGVuZChyZWludGVycHJldF9jYXN0PHZvaWQqPihvZmZzZXRzW2ldKSk7CisKKyAgICBnbDo6TXVs
dGlEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShtb2RlLCBjb3VudHMuZGF0YSwgdHlwZSwgcG9p
bnRlcnMuZGF0YSgpLCBpbnN0YW5jZUNvdW50cy5kYXRhLCBkcmF3Y291bnQpOworfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hbmdsZS9FeHRlbnNpb25zR0xBTkdMRS5oCmluZGV4IGIyZDI3N2I5YWM5
ZDI3ODYwZjU1YWJhYmY4Y2ZlNTVlODRiNWY1N2UuLjMzMWE0YThiZTVhNzkwMWUwMWQyOWQ0Y2U1
OGUxYmFkOGZlNzk5MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2FuZ2xlL0V4dGVuc2lvbnNHTEFOR0xFLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYW5nbGUvRXh0ZW5zaW9uc0dMQU5HTEUuaApAQCAtMTAzLDYgKzEwMywxMSBA
QCBwdWJsaWM6CiAgICAgdm9pZCBnZXRRdWVyeU9iamVjdGk2NHZSb2J1c3RBTkdMRShHQ0dMdWlu
dCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0
aCwgR0NHTGludDY0ICpwYXJhbXMpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0UXVlcnlPYmplY3R1
aTY0dlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSAqbGVuZ3RoLCBHQ0dMdWludDY0ICpwYXJhbXMpIG92ZXJyaWRlOwog
CisgICAgdm9pZCBtdWx0aURyYXdBcnJheXNBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMU3Bhbjxj
b25zdCBHQ0dMaW50PiBmaXJzdHMsIEdDR0xTcGFuPGNvbnN0IEdDR0xzaXplaT4gY291bnRzLCBH
Q0dMc2l6ZWkgZHJhd2NvdW50KSBvdmVycmlkZTsKKyAgICB2b2lkIG11bHRpRHJhd0FycmF5c0lu
c3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IGZpcnN0
cywgR0NHTFNwYW48Y29uc3QgR0NHTHNpemVpPiBjb3VudHMsIEdDR0xTcGFuPGNvbnN0IEdDR0xz
aXplaT4gaW5zdGFuY2VDb3VudHMsIEdDR0xzaXplaSBkcmF3Y291bnQpIG92ZXJyaWRlOworICAg
IHZvaWQgbXVsdGlEcmF3RWxlbWVudHNBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMU3Bhbjxjb25z
dCBHQ0dMc2l6ZWk+IGNvdW50cywgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTGlu
dD4gb2Zmc2V0cywgR0NHTHNpemVpIGRyYXdjb3VudCkgb3ZlcnJpZGU7CisgICAgdm9pZCBtdWx0
aURyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xTcGFuPGNvbnN0
IEdDR0xzaXplaT4gY291bnRzLCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50
PiBvZmZzZXRzLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMc2l6ZWk+IGluc3RhbmNlQ291bnRzLCBHQ0dM
c2l6ZWkgZHJhd2NvdW50KSBvdmVycmlkZTsKKwogICAgIC8vIE9ubHkgZm9yIG5vbi1XZWJHTCAy
LjAgY29udGV4dHMuCiAgICAgR0NHTGVudW0gYWRqdXN0V2ViR0wxVGV4dHVyZUludGVybmFsRm9y
bWF0KEdDR0xlbnVtIGludGVybmFsZm9ybWF0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5
cGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwCmluZGV4IGMzNDM4
ZDU5MWMwN2EzNmNmMWUwNDI2YzFiOWZkN2IzZTkxNzc5ZDUuLjBmNmU3MTRjMDU3ODViYTdkMDJk
YmY3NDVmZjJmZGYwOWNhNDc5MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21t
b24uY3BwCkBAIC00MzIsNiArNDMyLDI1IEBAIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9u
OjpnZXRRdWVyeU9iamVjdHVpNjR2Um9idXN0QU5HTEUoR0NHTHVpbnQsIEdDR0xlbnVtCiAgICAg
bV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CiB9CiAK
K3ZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjptdWx0aURyYXdBcnJheXNBTkdMRShHQ0dM
ZW51bSwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4sIEdDR0xTcGFuPGNvbnN0IEdDR0xzaXplaT4s
IEdDR0xzaXplaSkKK3sKKyAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFM
SURfT1BFUkFUSU9OKTsKK30KKwordm9pZCBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246Om11bHRp
RHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50
PiwgR0NHTFNwYW48Y29uc3QgR0NHTHNpemVpPiwgR0NHTFNwYW48Y29uc3QgR0NHTHNpemVpPiwg
R0NHTHNpemVpKQoreworICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJ
RF9PUEVSQVRJT04pOworfQorCit2b2lkIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6bXVsdGlE
cmF3RWxlbWVudHNBTkdMRShHQ0dMZW51bSwgR0NHTFNwYW48Y29uc3QgR0NHTHNpemVpPiwgR0NH
TGVudW0sIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+LCBHQ0dMc2l6ZWkpCit7CisgICAgbV9jb250
ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Cit9CisKK3ZvaWQg
RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjptdWx0aURyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xF
KEdDR0xlbnVtLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMc2l6ZWk+LCBHQ0dMZW51bSwgR0NHTFNwYW48
Y29uc3QgR0NHTGludD4sIEdDR0xTcGFuPGNvbnN0IEdDR0xzaXplaT4sIEdDR0xzaXplaSkKK3sK
KyAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsK
K30KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdM
Q29tbW9uLmgKaW5kZXggM2YxMDQwMTYyZmZhMDdhMmRjMTMwYWJiMjJmYjFiMWZmYzNmZGYyMC4u
NzRjNDYwZmU0MmU1MjM0NTBhNjc3OGUwYmJjMGQ5NGQ2NjRlZjE0YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENv
bW1vbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRl
bnNpb25zR0xPcGVuR0xDb21tb24uaApAQCAtMTA4LDYgKzEwOCwxMSBAQCBwdWJsaWM6CiAgICAg
dm9pZCBnZXRRdWVyeU9iamVjdGk2NHZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0g
cG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkgKmxlbmd0aCwgR0NHTGludDY0ICpw
YXJhbXMpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0UXVlcnlPYmplY3R1aTY0dlJvYnVzdEFOR0xF
KEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSAqbGVuZ3RoLCBHQ0dMdWludDY0ICpwYXJhbXMpIG92ZXJyaWRlOwogCisgICAgdm9pZCBtdWx0
aURyYXdBcnJheXNBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiBm
aXJzdHMsIEdDR0xTcGFuPGNvbnN0IEdDR0xzaXplaT4gY291bnRzLCBHQ0dMc2l6ZWkgZHJhd2Nv
dW50KSBvdmVycmlkZTsKKyAgICB2b2lkIG11bHRpRHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKEdD
R0xlbnVtIG1vZGUsIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IGZpcnN0cywgR0NHTFNwYW48Y29u
c3QgR0NHTHNpemVpPiBjb3VudHMsIEdDR0xTcGFuPGNvbnN0IEdDR0xzaXplaT4gaW5zdGFuY2VD
b3VudHMsIEdDR0xzaXplaSBkcmF3Y291bnQpIG92ZXJyaWRlOworICAgIHZvaWQgbXVsdGlEcmF3
RWxlbWVudHNBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMc2l6ZWk+IGNv
dW50cywgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gb2Zmc2V0cywgR0NH
THNpemVpIGRyYXdjb3VudCkgb3ZlcnJpZGU7CisgICAgdm9pZCBtdWx0aURyYXdFbGVtZW50c0lu
c3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xTcGFuPGNvbnN0IEdDR0xzaXplaT4gY291
bnRzLCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiBvZmZzZXRzLCBHQ0dM
U3Bhbjxjb25zdCBHQ0dMc2l6ZWk+IGluc3RhbmNlQ291bnRzLCBHQ0dMc2l6ZWkgZHJhd2NvdW50
KSBvdmVycmlkZTsKKwogcHJvdGVjdGVkOgogICAgIGZyaWVuZCBjbGFzcyBFeHRlbnNpb25zR0xP
cGVuR0xFUzsKICAgICBFeHRlbnNpb25zR0xPcGVuR0xDb21tb24oR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0wqLCBib29sIHVzZUluZGV4ZWRHZXRTdHJpbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL05hdGl2ZUZ1bmN0aW9uUGFyYW1ldGVy
cy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9OYXRpdmVG
dW5jdGlvblBhcmFtZXRlcnMuanMKaW5kZXggMWVlMzY0OWY2YTljZGZhN2NlZjJjZTdlNmIyNTVj
MDQwNmM1NzMyMC4uOWI2MWEwMGUxODg2ZDI4OWY1NmU5YWJlNTI4ZmI5ZTEwMmExOWMyMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL05hdGl2
ZUZ1bmN0aW9uUGFyYW1ldGVycy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Nb2RlbHMvTmF0aXZlRnVuY3Rpb25QYXJhbWV0ZXJzLmpzCkBAIC0xODc1LDYgKzE4
NzUsMTQgQEAgV0kuTmF0aXZlUHJvdG90eXBlRnVuY3Rpb25QYXJhbWV0ZXJzID0gewogICAgICAg
ICBfX3Byb3RvX186IG51bGwsCiAgICAgfSwKIAorICAgIFdlYkdMTXVsdGlEcmF3OiB7CisgICAg
ICAgIG11bHRpRHJhd0FycmF5c1dlYkdMOiAibW9kZSwgZmlyc3RzTGlzdCwgZmlyc3RzT2Zmc2V0
LCBjb3VudHNMaXN0LCBjb3VudHNPZmZzZXQsIGRyYXdjb3VudCIsCisgICAgICAgIG11bHRpRHJh
d0FycmF5c0luc3RhbmNlZFdlYkdMOiAibW9kZSwgZmlyc3RzTGlzdCwgZmlyc3RzT2Zmc2V0LCBj
b3VudHNMaXN0LCBjb3VudHNPZmZzZXQsIGluc3RhbmNlQ291bnRzTGlzdCwgaW5zdGFuY2VDb3Vu
dHNPZmZzZXQsIGRyYXdjb3VudCIsCisgICAgICAgIG11bHRpRHJhd0VsZW1lbnRzV2ViR0w6ICJt
b2RlLCBjb3VudHNMaXN0LCBjb3VudHNPZmZzZXQsIHR5cGUsIG9mZnNldHNMaXN0LCBvZmZzZXRz
T2Zmc2V0LCBkcmF3Y291bnQiLAorICAgICAgICBtdWx0aURyYXdFbGVtZW50c0luc3RhbmNlZFdl
YkdMOiAibW9kZSwgY291bnRzTGlzdCwgY291bnRzT2Zmc2V0LCB0eXBlLCBvZmZzZXRzTGlzdCwg
b2Zmc2V0c09mZnNldCwgaW5zdGFuY2VDb3VudHNMaXN0LCBpbnN0YW5jZUNvdW50c09mZnNldCwg
ZHJhd2NvdW50IiwKKyAgICAgICAgX19wcm90b19fOiBudWxsLAorICAgIH0sCisKICAgICBXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOiB7CiAgICAgICAgIGFjdGl2ZVRleHR1cmU6ICJ0ZXh0dXJl
IiwKICAgICAgICAgYXR0YWNoU2hhZGVyOiAicHJvZ3JhbSwgc2hhZGVyIiwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRH
TC5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbgppbmRleCBhYTAzNDcyNWY5YWE0MmY0MmJkM2M4
YTAwYjBhYTE4MDkwYTU5YjlhLi4xOTE1MWJkMGNhMTM5YjU3OTgwYTYzMDZmM2E3NGU2MTgzZDEx
OTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
R3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3NhZ2VzLmluCkBAIC0yODks
NiArMjg5LDEwIEBAIG1lc3NhZ2VzIC0+IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMIE5vdFJlZkNv
dW50ZWQgewogICAgIHZvaWQgRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUodWludDMyX3QgbW9k
ZSwgaW50MzJfdCBjb3VudCwgdWludDMyX3QgdHlwZSwgdWludDY0X3Qgb2Zmc2V0LCBpbnQzMl90
IHByaW1jb3VudCkKICAgICB2b2lkIFZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSh1aW50MzJfdCBp
bmRleCwgdWludDMyX3QgZGl2aXNvcikKICAgICB2b2lkIEdldEludGVybmFsZm9ybWF0aXYodWlu
dDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBpbnRlcm5hbGZvcm1hdCwgdWludDMyX3QgcG5hbWUsIHVp
bnQ2NF90IHBhcmFtc1NpemUpIC0+IChJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+IHBhcmFt
cykgU3luY2hyb25vdXMKKyAgICB2b2lkIE11bHRpRHJhd0FycmF5c0FOR0xFKHVpbnQzMl90IG1v
ZGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4gZmlyc3RzLCBJUEM6OkFycmF5UmVmZXJl
bmNlPGludDMyX3Q+IGNvdW50cywgaW50MzJfdCBkcmF3Y291bnQpCisgICAgdm9pZCBNdWx0aURy
YXdBcnJheXNJbnN0YW5jZWRBTkdMRSh1aW50MzJfdCBtb2RlLCBJUEM6OkFycmF5UmVmZXJlbmNl
PGludDMyX3Q+IGZpcnN0cywgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiBjb3VudHMsIElQ
Qzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4gaW5zdGFuY2VDb3VudHMsIGludDMyX3QgZHJhd2Nv
dW50KQorICAgIHZvaWQgTXVsdGlEcmF3RWxlbWVudHNBTkdMRSh1aW50MzJfdCBtb2RlLCBJUEM6
OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+IGNvdW50cywgdWludDMyX3QgdHlwZSwgSVBDOjpBcnJh
eVJlZmVyZW5jZTxpbnQzMl90PiBvZmZzZXRzLCBpbnQzMl90IGRyYXdjb3VudCkKKyAgICB2b2lk
IE11bHRpRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUodWludDMyX3QgbW9kZSwgSVBDOjpBcnJh
eVJlZmVyZW5jZTxpbnQzMl90PiBjb3VudHMsIHVpbnQzMl90IHR5cGUsIElQQzo6QXJyYXlSZWZl
cmVuY2U8aW50MzJfdD4gb2Zmc2V0cywgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiBpbnN0
YW5jZUNvdW50cywgaW50MzJfdCBkcmF3Y291bnQpCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdM
RnVuY3Rpb25zR2VuZXJhdGVkLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaAppbmRleCBhZjAxNjAy
YWY0OTNlYjY3ZGUzZTYyY2YwZTUwYWMwYTJiOTkyNWYxLi45NWUzN2MwNDY3YzY0ZGNiN2NmYTQ1
ZWNhZTJiOWU2MTA5YjI3NzdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaApAQCAtMTE4Niw0ICsxMTg2LDIwIEBACiAgICAgICAgIG1f
Y29udGV4dC0+Z2V0SW50ZXJuYWxmb3JtYXRpdih0YXJnZXQsIGludGVybmFsZm9ybWF0LCBwbmFt
ZSwgcGFyYW1zKTsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoSVBDOjpBcnJheVJlZmVyZW5j
ZTxpbnQzMl90PihyZWludGVycHJldF9jYXN0PGludDMyX3QqPihwYXJhbXMuZGF0YSgpKSwgcGFy
YW1zLnNpemUoKSkpOwogICAgIH0KKyAgICB2b2lkIG11bHRpRHJhd0FycmF5c0FOR0xFKHVpbnQz
Ml90IG1vZGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4mJiBmaXJzdHMsIElQQzo6QXJy
YXlSZWZlcmVuY2U8aW50MzJfdD4mJiBjb3VudHMsIGludDMyX3QgZHJhd2NvdW50KQorICAgIHsK
KyAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkubXVsdGlEcmF3QXJyYXlzQU5HTEUo
bW9kZSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGludCo+KGZpcnN0
cy5kYXRhKCkpLCBmaXJzdHMuc2l6ZSgpKSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgR0NHTHNpemVpKj4oY291bnRzLmRhdGEoKSksIGNvdW50cy5zaXplKCkpLCBkcmF3Y291
bnQpOworICAgIH0KKyAgICB2b2lkIG11bHRpRHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKHVpbnQz
Ml90IG1vZGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4mJiBmaXJzdHMsIElQQzo6QXJy
YXlSZWZlcmVuY2U8aW50MzJfdD4mJiBjb3VudHMsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJf
dD4mJiBpbnN0YW5jZUNvdW50cywgaW50MzJfdCBkcmF3Y291bnQpCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5tdWx0aURyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSht
b2RlLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMaW50Kj4oZmlyc3Rz
LmRhdGEoKSksIGZpcnN0cy5zaXplKCkpLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxj
b25zdCBHQ0dMc2l6ZWkqPihjb3VudHMuZGF0YSgpKSwgY291bnRzLnNpemUoKSksIG1ha2VHQ0dM
U3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xzaXplaSo+KGluc3RhbmNlQ291bnRzLmRh
dGEoKSksIGluc3RhbmNlQ291bnRzLnNpemUoKSksIGRyYXdjb3VudCk7CisgICAgfQorICAgIHZv
aWQgbXVsdGlEcmF3RWxlbWVudHNBTkdMRSh1aW50MzJfdCBtb2RlLCBJUEM6OkFycmF5UmVmZXJl
bmNlPGludDMyX3Q+JiYgY291bnRzLCB1aW50MzJfdCB0eXBlLCBJUEM6OkFycmF5UmVmZXJlbmNl
PGludDMyX3Q+JiYgb2Zmc2V0cywgaW50MzJfdCBkcmF3Y291bnQpCisgICAgeworICAgICAgICBt
X2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5tdWx0aURyYXdFbGVtZW50c0FOR0xFKG1vZGUsIG1h
a2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xzaXplaSo+KGNvdW50cy5kYXRh
KCkpLCBjb3VudHMuc2l6ZSgpKSwgdHlwZSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgR0NHTGludCo+KG9mZnNldHMuZGF0YSgpKSwgb2Zmc2V0cy5zaXplKCkpLCBkcmF3Y291
bnQpOworICAgIH0KKyAgICB2b2lkIG11bHRpRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUodWlu
dDMyX3QgbW9kZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiYmIGNvdW50cywgdWludDMy
X3QgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiYmIG9mZnNldHMsIElQQzo6QXJy
YXlSZWZlcmVuY2U8aW50MzJfdD4mJiBpbnN0YW5jZUNvdW50cywgaW50MzJfdCBkcmF3Y291bnQp
CisgICAgeworICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5tdWx0aURyYXdFbGVt
ZW50c0luc3RhbmNlZEFOR0xFKG1vZGUsIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNv
bnN0IEdDR0xzaXplaSo+KGNvdW50cy5kYXRhKCkpLCBjb3VudHMuc2l6ZSgpKSwgdHlwZSwgbWFr
ZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTGludCo+KG9mZnNldHMuZGF0YSgp
KSwgb2Zmc2V0cy5zaXplKCkpLCBtYWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBH
Q0dMc2l6ZWkqPihpbnN0YW5jZUNvdW50cy5kYXRhKCkpLCBpbnN0YW5jZUNvdW50cy5zaXplKCkp
LCBkcmF3Y291bnQpOworICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHkuaAppbmRleCBhMTQzOTM0N2Q4OWUwYWRiZjA4YTQyYTQyNTkxYmJiM2RiZWIyMWU3Li5hNWE2
ZjdmZWMyMDA1OWM3Mzg1NGMwNmFiNTk1NGU4YmY1YTdjOThhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHkuaApAQCAtMzYzLDYgKzM2MywxMCBAQCBwdWJsaWM6CiAgICAg
dm9pZCBnZXRRdWVyeU9iamVjdGl2Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBu
YW1lLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFt
cykgZmluYWw7CiAgICAgdm9pZCBnZXRRdWVyeU9iamVjdGk2NHZSb2J1c3RBTkdMRShHQ0dMdWlu
dCBpZCwgR0NHTGVudW0gcG5hbWUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0
aCwgR0NHTGludDY0KiBwYXJhbXMpIGZpbmFsOwogICAgIHZvaWQgZ2V0UXVlcnlPYmplY3R1aTY0
dlJvYnVzdEFOR0xFKEdDR0x1aW50IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMdWludDY0KiBwYXJhbXMpIGZpbmFsOworICAgIHZv
aWQgbXVsdGlEcmF3QXJyYXlzQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTFNwYW48Y29uc3QgR0NH
TGludD4gZmlyc3RzLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMc2l6ZWk+IGNvdW50cywgR0NHTHNpemVp
IGRyYXdjb3VudCkgZmluYWw7CisgICAgdm9pZCBtdWx0aURyYXdBcnJheXNJbnN0YW5jZWRBTkdM
RShHQ0dMZW51bSBtb2RlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiBmaXJzdHMsIEdDR0xTcGFu
PGNvbnN0IEdDR0xzaXplaT4gY291bnRzLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMc2l6ZWk+IGluc3Rh
bmNlQ291bnRzLCBHQ0dMc2l6ZWkgZHJhd2NvdW50KSBmaW5hbDsKKyAgICB2b2lkIG11bHRpRHJh
d0VsZW1lbnRzQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTFNwYW48Y29uc3QgR0NHTHNpemVpPiBj
b3VudHMsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IG9mZnNldHMsIEdD
R0xzaXplaSBkcmF3Y291bnQpIGZpbmFsOworICAgIHZvaWQgbXVsdGlEcmF3RWxlbWVudHNJbnN0
YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMc2l6ZWk+IGNvdW50
cywgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gb2Zmc2V0cywgR0NHTFNw
YW48Y29uc3QgR0NHTHNpemVpPiBpbnN0YW5jZUNvdW50cywgR0NHTHNpemVpIGRyYXdjb3VudCkg
ZmluYWw7CiAgICAgLy8gRW5kIG9mIGxpc3QgdXNlZCBieSBnZW5lcmF0ZS1ncHVwLXdlYmdsIHNj
cmlwdC4KIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJh
dGVkLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRlZC5jcHAKaW5kZXggZjdlY2Y4NjU1
NmEwMDczYWY4ZjU1NGNmY2ZjMGVmMzM5ZjYxZTg5YS4uODcxNWI0NDc1NDQzODE4ZjI2YWZlNmZi
ZmI1NDc2ODJlOTk3OTJiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVk
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdy
YXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwCkBAIC0xNDY1LDYgKzE0
NjUsMjYgQEAgdm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRJbnRlcm5hbGZv
cm1hdGl2KEdDR0xlbnVtIHRhcmdldCwgR0NHTGVudW0KICAgICAKIH0KIAordm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjptdWx0aURyYXdBcnJheXNBTkdMRShHQ0dMZW51bSBtb2Rl
LCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiBmaXJzdHMsIEdDR0xTcGFuPGNvbnN0IEdDR0xzaXpl
aT4gY291bnRzLCBHQ0dMc2l6ZWkgZHJhd2NvdW50KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMOjpNdWx0aURyYXdBcnJheXNBTkdMRShtb2RlLCBJUEM6OkFy
cmF5UmVmZXJlbmNlPGludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgaW50MzJfdCo+KGZp
cnN0cy5kYXRhKSwgZmlyc3RzLmJ1ZlNpemUpLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgaW50MzJfdCo+KGNvdW50cy5kYXRhKSwgY291bnRzLmJ1
ZlNpemUpLCBkcmF3Y291bnQpLCBtX2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisK
K3ZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eTo6bXVsdGlEcmF3QXJyYXlzSW5zdGFu
Y2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gZmlyc3RzLCBH
Q0dMU3Bhbjxjb25zdCBHQ0dMc2l6ZWk+IGNvdW50cywgR0NHTFNwYW48Y29uc3QgR0NHTHNpemVp
PiBpbnN0YW5jZUNvdW50cywgR0NHTHNpemVpIGRyYXdjb3VudCkKK3sKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6TXVsdGlEcmF3QXJyYXlzSW5zdGFuY2VkQU5H
TEUobW9kZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNv
bnN0IGludDMyX3QqPihmaXJzdHMuZGF0YSksIGZpcnN0cy5idWZTaXplKSwgSVBDOjpBcnJheVJl
ZmVyZW5jZTxpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IGludDMyX3QqPihjb3VudHMu
ZGF0YSksIGNvdW50cy5idWZTaXplKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PihyZWlu
dGVycHJldF9jYXN0PGNvbnN0IGludDMyX3QqPihpbnN0YW5jZUNvdW50cy5kYXRhKSwgaW5zdGFu
Y2VDb3VudHMuYnVmU2l6ZSksIGRyYXdjb3VudCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlm
aWVyKTsKK30KKwordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjptdWx0aURyYXdF
bGVtZW50c0FOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xTcGFuPGNvbnN0IEdDR0xzaXplaT4gY291
bnRzLCBHQ0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiBvZmZzZXRzLCBHQ0dM
c2l6ZWkgZHJhd2NvdW50KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMOjpNdWx0aURyYXdFbGVtZW50c0FOR0xFKG1vZGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8
aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBpbnQzMl90Kj4oY291bnRzLmRhdGEpLCBj
b3VudHMuYnVmU2l6ZSksIHR5cGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4ocmVpbnRl
cnByZXRfY2FzdDxjb25zdCBpbnQzMl90Kj4ob2Zmc2V0cy5kYXRhKSwgb2Zmc2V0cy5idWZTaXpl
KSwgZHJhd2NvdW50KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lk
IFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Om11bHRpRHJhd0VsZW1lbnRzSW5zdGFuY2Vk
QU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTFNwYW48Y29uc3QgR0NHTHNpemVpPiBjb3VudHMsIEdD
R0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IG9mZnNldHMsIEdDR0xTcGFuPGNv
bnN0IEdDR0xzaXplaT4gaW5zdGFuY2VDb3VudHMsIEdDR0xzaXplaSBkcmF3Y291bnQpCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6Ok11bHRpRHJhd0VsZW1l
bnRzSW5zdGFuY2VkQU5HTEUobW9kZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PihyZWlu
dGVycHJldF9jYXN0PGNvbnN0IGludDMyX3QqPihjb3VudHMuZGF0YSksIGNvdW50cy5idWZTaXpl
KSwgdHlwZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNv
bnN0IGludDMyX3QqPihvZmZzZXRzLmRhdGEpLCBvZmZzZXRzLmJ1ZlNpemUpLCBJUEM6OkFycmF5
UmVmZXJlbmNlPGludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgaW50MzJfdCo+KGluc3Rh
bmNlQ291bnRzLmRhdGEpLCBpbnN0YW5jZUNvdW50cy5idWZTaXplKSwgZHJhd2NvdW50KSwgbV9n
cmFwaGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29u
dGV4dEdMUHJveHk6OnJlYWRQaXhlbHNSb2J1c3RBTkdMRShHQ0dMaW50IHgsIEdDR0xpbnQgeSwg
R0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xl
bnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHNpemVp
KiBjb2x1bW5zLCBHQ0dMc2l6ZWkqIHJvd3MsIEdDR0x2b2lkKiBwaXhlbHMpCiB7CiAgICAgbm90
SW1wbGVtZW50ZWQoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwppbmRleCA5ZTBkMWM0ZTEzY2ZkNGM1N2IwNWViOWRmNTA0MGM2MTBm
OTFkNDMwLi5mODcyZDJlMmEzZTJiYmI4ZmU0MjBmZTNjNzk4MGVjZWEwYmJlOWNiIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjAgQEAKKzIwMjEtMDEtMTkgIEtlbm5ldGggUnVzc2VsbCAgPGtickBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgU3VwcG9ydCBXRUJHTF9tdWx0aV9kcmF3IGV4dGVuc2lvbgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE5MTM5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGNvbmZvcm1h
bmNlIHRlc3QgZm9yIHRoZSBtdWx0aS1kcmF3IGV4dGVuc2lvbiwgd2hpY2ggaXMKKyAgICAgICAg
ZXhwZWN0ZWQgdG8gcGFzcy4gVGVtcG9yYXJpbHkgc3VwcHJlc3MgdGhlIHRlc3QgZHVlIHRvIGZh
aWx1cmVzIG9uCisgICAgICAgIEludGVsIEdQVXMgb24gbWFjT1MgY2F1c2VkIGJ5IHJlY2VudGx5
LWRpc2NvdmVyZWQgT3BlbkdMIGRyaXZlcgorICAgICAgICBidWdzLCB3aGljaCBhcmUgY3VycmVu
dGx5IGJlaW5nIGludmVzdGlnYXRlZC4KKworICAgICAgICAqIFRlc3RFeHBlY3RhdGlvbnM6Cisg
ICAgICAgICogd2ViZ2wvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy93ZWJnbC1tdWx0aS1kcmF3LWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogd2ViZ2wvY29uZm9ybWFuY2UvZXh0ZW5zaW9u
cy93ZWJnbC1tdWx0aS1kcmF3Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdlYmdsL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvd2ViZ2wtbXVsdGktZHJh
dy5odG1sOiBBZGRlZC4KKwogMjAyMS0wMS0xOSAgU2VyZ2lvIFZpbGxhciBTZW5pbiAgPHN2aWxs
YXJAaWdhbGlhLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OKHIyNjY2OTUpIFJhbmdlIGNvbnRy
b2wgd2l0aCBjdXN0b20gdHJhY2sgd2lkdGggc2l6ZWQgaW5jb3JyZWN0bHkKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRp
b25zCmluZGV4IDhjYmIyMjgxZDFkMzhhY2MwNTA5Yzc4ZTM3MDQ5MWYyY2UyZTgyNzQuLjc5YjFk
NjQwODcwOWM5OGM0NjdjYTRiN2VjYzVlOTI1ZDkwYjM1ZTQgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwpA
QCAtMzQ0OCw2ICszNDQ4LDkgQEAgd2ViZ2wvMi4wLjAvY29uZm9ybWFuY2UvdGV4dHVyZXMvbWlz
Yy90ZXh0dXJlLXNpemUtbGltaXQuaHRtbCBbIFNsb3cgXQogd2ViZ2wvMi4wLjAvY29uZm9ybWFu
Y2UvdGV4dHVyZXMvbWlzYy90ZXh0dXJlLW5wb3QtdmlkZW8uaHRtbCBbIFNraXAgXQogd2ViZ2wv
Mi4wLjAvY29uZm9ybWFuY2UyL21pc2MvdW5pbml0aWFsaXplZC10ZXN0LTIuaHRtbCBbIFNraXAg
XQogCisjIEZhaWxpbmcgb24gY2VydGFpbiBoYXJkd2FyZSBjb25maWd1cmF0aW9uczogbWFjT1Mg
d2l0aCBJbnRlbCBHUFVzLiBBbHNvIHNsb3cuCit3ZWJraXQub3JnL2IvMjIwNzUzIHdlYmdsL2Nv
bmZvcm1hbmNlL2V4dGVuc2lvbnMvd2ViZ2wtbXVsdGktZHJhdy5odG1sIFsgUGFzcyBGYWlsdXJl
IFNsb3cgXQorCiAjIHByZS13cmFwIHByb2dyZXNzaW9uLiBPdGhlciByZW5kZXJpbmcgZW5naW5l
cyBhZ3JlZSB3aXRoIHRoZSByZXN1bHQuCiB3ZWJraXQub3JnL2IvMjA2MTY4IFsgRGVidWcgXSBm
YXN0L2RvbS9pbnNlcnQtc3Bhbi1pbnRvLWxvbmctdGV4dC1idWctMjgyNDUuaHRtbCBbIFNraXAg
XQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJnbC9jb25mb3JtYW5jZS9leHRlbnNpb25z
L3dlYmdsLW11bHRpLWRyYXctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViZ2wvY29uZm9y
bWFuY2UvZXh0ZW5zaW9ucy93ZWJnbC1tdWx0aS1kcmF3LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4xZDY4NjZlODBlNWEwMDdjNTYwZGU5MjNkY2IwMzMwM2MwYTZhZGZhCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy93ZWJnbC1tdWx0
aS1kcmF3LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKK1RoaXMgdGVzdCBydW5zIHRoZSBX
ZWJHTCBUZXN0IGxpc3RlZCBiZWxvdyBpbiBhbiBpZnJhbWUgYW5kIHJlcG9ydHMgUEFTUyBvciBG
QUlMLgorCitUZXN0OiAuLi8uLi9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9leHRlbnNpb25zL3dlYmdsLW11bHRpLWRyYXcuaHRtbAorUEFTUwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViZ2wvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy93ZWJnbC1tdWx0aS1kcmF3Lmh0
bWwgYi9MYXlvdXRUZXN0cy93ZWJnbC9jb25mb3JtYW5jZS9leHRlbnNpb25zL3dlYmdsLW11bHRp
LWRyYXcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZjVlMTAzOTAxNjcyMzQ1N2RiYzVkNjJhOTcwNjhhYTlm
ZjM5YzU4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViZ2wvY29uZm9ybWFuY2Uv
ZXh0ZW5zaW9ucy93ZWJnbC1tdWx0aS1kcmF3Lmh0bWwKQEAgLTAsMCArMSwxOCBAQAorPCEtLSBU
aGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtd2ViZ2wtdGVzdHMucHkuIERP
IE5PVCBFRElUIC0tPgorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hh
cnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIENvbmZvcm1hbmNlIFRlc3QgV3JhcHBlciBmb3Ig
d2ViZ2wtbXVsdGktZHJhdy5odG1sPC90aXRsZT4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2Ny
aXB0IiBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIuLi8uLi9yZXNvdXJjZXMvd2Via2l0
LXdlYmdsLXRlc3QtaGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRo
aXMgdGVzdCBydW5zIHRoZSBXZWJHTCBUZXN0IGxpc3RlZCBiZWxvdyBpbiBhbiBpZnJhbWUgYW5k
IHJlcG9ydHMgUEFTUyBvciBGQUlMLjwvcD4KK1Rlc3Q6IDxhIGhyZWY9Ii4uLy4uL3Jlc291cmNl
cy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvd2ViZ2wtbXVsdGktZHJh
dy5odG1sIj4uLi8uLi9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9leHRl
bnNpb25zL3dlYmdsLW11bHRpLWRyYXcuaHRtbDwvYT4KKzxkaXYgaWQ9ImlmcmFtZSI+Cis8aWZy
YW1lIHNyYz0iLi4vLi4vcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZXh0
ZW5zaW9ucy93ZWJnbC1tdWx0aS1kcmF3Lmh0bWwiIHdpZHRoPSI4MDAiIGhlaWdodD0iNjAwIj48
L2lmcmFtZT4KKzwvZGl2PgorPGRpdiBpZD0icmVzdWx0Ij48L2Rpdj4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2Zp
bGVzL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvd2ViZ2wtbXVsdGktZHJhdy5odG1sIGIvTGF5b3V0
VGVzdHMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZXh0ZW5z
aW9ucy93ZWJnbC1tdWx0aS1kcmF3Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWRlYWIzMTJlNWQwMTc4Mzlh
MDQ4NzcyMzc3NmFmMjY0YTQwZGZmYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dl
YmdsL3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvd2Vi
Z2wtbXVsdGktZHJhdy5odG1sCkBAIC0wLDAgKzEsODQwIEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+V2ViR0wgQU5HTEVf
bXVsdGlfZHJhdyBDb25mb3JtYW5jZSBUZXN0czwvdGl0bGU+Cis8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBz
cmM9Ii4uLy4uL2pzL2Rlc2t0b3AtZ2wtY29uc3RhbnRzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9qcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vanMvd2ViZ2wtdGVzdC11dGlscy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxz
Y3JpcHQgaWQ9InZzaGFkZXJJbGxlZ2FsRHJhd0lEIiB0eXBlPSJ4LXNoYWRlci94LXZlcnRleCI+
CithdHRyaWJ1dGUgdmVjMiB2UG9zaXRpb247Cit2YXJ5aW5nIHZlYzQgY29sb3I7Cit2b2lkIG1h
aW4oKQoreworICBjb2xvciA9IHZlYzQoMS4wLCAwLjAsIDAuMCwgMS4wKTsKKyAgZ2xfUG9zaXRp
b24gPSB2ZWM0KHZQb3NpdGlvbiAqIDIuMCAtIDEuMCwgZ2xfRHJhd0lELCAxKTsKK30KKzwvc2Ny
aXB0PgorPHNjcmlwdCBpZD0idnNoYWRlckRyYXdJRFplcm8iIHR5cGU9Ingtc2hhZGVyL3gtdmVy
dGV4Ij4KKyNleHRlbnNpb24gR0xfQU5HTEVfbXVsdGlfZHJhdyA6IHJlcXVpcmUKK2F0dHJpYnV0
ZSB2ZWMyIHZQb3NpdGlvbjsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKK3ZvaWQgbWFpbigpCit7Cisg
IGlmIChnbF9EcmF3SUQgPT0gMCkgeworICAgIGNvbG9yID0gdmVjNCgwLCAxLCAwLCAxKTsKKyAg
fSBlbHNlIHsKKyAgICBjb2xvciA9IHZlYzQoMSwgMCwgMCwgMSk7CisgIH0KKyAgZ2xfUG9zaXRp
b24gPSB2ZWM0KHZQb3NpdGlvbiAqIDIuMCAtIDEuMCwgMCwgMSk7Cit9Cis8L3NjcmlwdD4KKzwh
LS0gVGhlIGJlaGF2aW9yIG9mIHRoZSBzaGFkZXJzIGJlbG93IGlzIGRlc2NyaWJlZCBpbiBydW5Q
aXhlbFRlc3RzKCkgLS0+Cis8c2NyaXB0IGlkPSJ2c2hhZGVyV2l0aERyYXdJRCIgdHlwZT0ieC1z
aGFkZXIveC12ZXJ0ZXgiPgorI2V4dGVuc2lvbiBHTF9BTkdMRV9tdWx0aV9kcmF3IDogcmVxdWly
ZQorYXR0cmlidXRlIHZlYzIgdlBvc2l0aW9uOworYXR0cmlidXRlIGZsb2F0IHZJbnN0YW5jZTsK
K3ZhcnlpbmcgdmVjNCBjb2xvcjsKK3ZvaWQgbWFpbigpCit7CisgIC8vIGNvbG9yX2lkID0gKGds
X0RyYXdJRCAvIDIpICUgMworICBmbG9hdCBxdWFkX2lkID0gZmxvYXQoZ2xfRHJhd0lEIC8gMik7
CisgIGZsb2F0IGNvbG9yX2lkID0gcXVhZF9pZCAtICgzLjAgKiBmbG9vcihxdWFkX2lkIC8gMy4w
KSk7CisgIGlmIChjb2xvcl9pZCA8IDAuNSkgeworICAgIGNvbG9yID0gdmVjNCgxLCAwLCAwLCAx
KTsKKyAgfSBlbHNlIGlmIChjb2xvcl9pZCA8IDEuNSkgeworICAgIGNvbG9yID0gdmVjNCgwLCAx
LCAwLCAxKTsKKyAgfSBlbHNlIHsKKyAgICBjb2xvciA9IHZlYzQoMCwgMCwgMSwgMSk7CisgIH0K
KyAgbWF0MyB0cmFuc2Zvcm0gPSBtYXQzKDEuMCk7CisgIC8vIHZJbnN0YW5jZSBzdGFydHMgYXQg
MS4wIG9uIGluc3RhbmNlZCBjYWxscworICBpZiAodkluc3RhbmNlID49IDEuMCkgeworICAgIHRy
YW5zZm9ybVswXVswXSA9IDAuNTsKKyAgICB0cmFuc2Zvcm1bMV1bMV0gPSAwLjU7CisgIH0KKyAg
aWYgKHZJbnN0YW5jZSA9PSAxLjApIHsKKyAgfSBlbHNlIGlmICh2SW5zdGFuY2UgPT0gMi4wKSB7
CisgICAgICB0cmFuc2Zvcm1bMl1bMF0gPSAwLjU7CisgIH0gZWxzZSBpZiAodkluc3RhbmNlID09
IDMuMCkgeworICAgICAgdHJhbnNmb3JtWzJdWzFdID0gMC41OworICB9IGVsc2UgaWYgKHZJbnN0
YW5jZSA9PSA0LjApIHsKKyAgICAgIHRyYW5zZm9ybVsyXVswXSA9IDAuNTsKKyAgICAgIHRyYW5z
Zm9ybVsyXVsxXSA9IDAuNTsKKyAgfQorICBnbF9Qb3NpdGlvbiA9IHZlYzQodHJhbnNmb3JtICog
dmVjMyh2UG9zaXRpb24sIDEuMCkgKiAyLjAgLSAxLjAsIDEpOworfQorPC9zY3JpcHQ+Cis8c2Ny
aXB0IGlkPSJ2c2hhZGVyRW11bGF0ZWREcmF3SUQiIHR5cGU9Ingtc2hhZGVyL3gtdmVydGV4Ij4K
K3VuaWZvcm0gaW50IGRyYXdJRDsKK2F0dHJpYnV0ZSB2ZWMyIHZQb3NpdGlvbjsKK2F0dHJpYnV0
ZSBmbG9hdCB2SW5zdGFuY2U7Cit2YXJ5aW5nIHZlYzQgY29sb3I7Cit2b2lkIG1haW4oKQorewor
ICBmbG9hdCBxdWFkX2lkID0gZmxvYXQoZHJhd0lEIC8gMik7CisgIGZsb2F0IGNvbG9yX2lkID0g
cXVhZF9pZCAtICgzLjAgKiBmbG9vcihxdWFkX2lkIC8gMy4wKSk7CisgIGlmIChjb2xvcl9pZCA9
PSAwLjApIHsKKyAgICBjb2xvciA9IHZlYzQoMSwgMCwgMCwgMSk7CisgIH0gZWxzZSBpZiAoY29s
b3JfaWQgPT0gMS4wKSB7CisgICAgY29sb3IgPSB2ZWM0KDAsIDEsIDAsIDEpOworICB9IGVsc2Ug
eworICAgIGNvbG9yID0gdmVjNCgwLCAwLCAxLCAxKTsKKyAgfQorICBtYXQzIHRyYW5zZm9ybSA9
IG1hdDMoMS4wKTsKKyAgLy8gdkluc3RhbmNlIHN0YXJ0cyBhdCAxLjAgb24gaW5zdGFuY2VkIGNh
bGxzCisgIGlmICh2SW5zdGFuY2UgPj0gMS4wKSB7CisgICAgdHJhbnNmb3JtWzBdWzBdID0gMC41
OworICAgIHRyYW5zZm9ybVsxXVsxXSA9IDAuNTsKKyAgfQorICBpZiAodkluc3RhbmNlID09IDEu
MCkgeworICB9IGVsc2UgaWYgKHZJbnN0YW5jZSA9PSAyLjApIHsKKyAgICAgIHRyYW5zZm9ybVsy
XVswXSA9IDAuNTsKKyAgfSBlbHNlIGlmICh2SW5zdGFuY2UgPT0gMy4wKSB7CisgICAgICB0cmFu
c2Zvcm1bMl1bMV0gPSAwLjU7CisgIH0gZWxzZSBpZiAodkluc3RhbmNlID09IDQuMCkgeworICAg
ICAgdHJhbnNmb3JtWzJdWzBdID0gMC41OworICAgICAgdHJhbnNmb3JtWzJdWzFdID0gMC41Owor
ICB9CisgIGdsX1Bvc2l0aW9uID0gdmVjNCh0cmFuc2Zvcm0gKiB2ZWMzKHZQb3NpdGlvbiwgMS4w
KSAqIDIuMCAtIDEuMCwgMSk7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9InZzaGFkZXJOb0Ry
YXdJRCIgdHlwZT0ieC1zaGFkZXIveC12ZXJ0ZXgiPgorYXR0cmlidXRlIHZlYzIgdlBvc2l0aW9u
OworYXR0cmlidXRlIGZsb2F0IHZJbnN0YW5jZTsKK3ZhcnlpbmcgdmVjNCBjb2xvcjsKK3ZvaWQg
bWFpbigpCit7CisgIGNvbG9yID0gdmVjNCgxLjAsIDAuMCwgMC4wLCAxLjApOworICBtYXQzIHRy
YW5zZm9ybSA9IG1hdDMoMS4wKTsKKyAgLy8gdkluc3RhbmNlIHN0YXJ0cyBhdCAxLjAgb24gaW5z
dGFuY2VkIGNhbGxzCisgIGlmICh2SW5zdGFuY2UgPj0gMS4wKSB7CisgICAgdHJhbnNmb3JtWzBd
WzBdID0gMC41OworICAgIHRyYW5zZm9ybVsxXVsxXSA9IDAuNTsKKyAgfQorICBpZiAodkluc3Rh
bmNlID09IDEuMCkgeworICB9IGVsc2UgaWYgKHZJbnN0YW5jZSA9PSAyLjApIHsKKyAgICAgIHRy
YW5zZm9ybVsyXVswXSA9IDAuNTsKKyAgfSBlbHNlIGlmICh2SW5zdGFuY2UgPT0gMy4wKSB7Cisg
ICAgICB0cmFuc2Zvcm1bMl1bMV0gPSAwLjU7CisgIH0gZWxzZSBpZiAodkluc3RhbmNlID09IDQu
MCkgeworICAgICAgdHJhbnNmb3JtWzJdWzBdID0gMC41OworICAgICAgdHJhbnNmb3JtWzJdWzFd
ID0gMC41OworICB9CisgIGdsX1Bvc2l0aW9uID0gdmVjNCh0cmFuc2Zvcm0gKiB2ZWMzKHZQb3Np
dGlvbiwgMS4wKSAqIDIuMCAtIDEuMCwgMSk7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQgaWQ9ImZz
aGFkZXIiIHR5cGU9Ingtc2hhZGVyL3gtZnJhZ21lbnQiPgorcHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7Cit2YXJ5aW5nIHZlYzQgY29sb3I7Cit2b2lkIG1haW4oKSB7CisgIGdsX0ZyYWdDb2xvciA9
IGNvbG9yOworfQorPC9zY3JpcHQ+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8Y2Fu
dmFzIGlkPSJjYW52YXMiIHdpZHRoPSIxMjgiIGhlaWdodD0iMTI4Ij4gPC9jYW52YXM+Cis8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK2Rlc2NyaXB0
aW9uKCJUaGlzIHRlc3QgdmVyaWZpZXMgdGhlIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIEFOR0xFX211
bHRpX2RyYXcgZXh0ZW5zaW9uLCBpZiBpdCBpcyBhdmFpbGFibGUuIik7CisKK2NvbnN0IHd0dSA9
IFdlYkdMVGVzdFV0aWxzOworY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ImNhbnZhcyIpOworY29uc3QgZ2wgPSB3dHUuY3JlYXRlM0RDb250ZXh0KGNhbnZhcyk7Citjb25z
dCBpbnN0YW5jZWRFeHQgPSBnbCAmJiBnbC5nZXRFeHRlbnNpb24oJ0FOR0xFX2luc3RhbmNlZF9h
cnJheXMnKTsKK2NvbnN0IGJ1ZmZlclVzYWdlU2V0ID0gWyBnbC5TVEFUSUNfRFJBVywgZ2wuRFlO
QU1JQ19EUkFXIF07CisKKy8vIENoZWNrIGlmIHRoZSBleHRlbnNpb24gaXMgZWl0aGVyIGJvdGgg
ZW5hYmxlZCBhbmQgc3VwcG9ydGVkIG9yCisvLyBub3QgZW5hYmxlZCBhbmQgbm90IHN1cHBvcnRl
ZC4KK2Z1bmN0aW9uIHJ1blN1cHBvcnRlZFRlc3QoZXh0ZW5zaW9uTmFtZSwgZXh0ZW5zaW9uRW5h
YmxlZCkgeworICBjb25zdCBzdXBwb3J0ZWQgPSBnbC5nZXRTdXBwb3J0ZWRFeHRlbnNpb25zKCk7
CisgIGlmIChzdXBwb3J0ZWQuaW5kZXhPZihleHRlbnNpb25OYW1lKSA+PSAwKSB7CisgICAgaWYg
KGV4dGVuc2lvbkVuYWJsZWQpIHsKKyAgICAgIHRlc3RQYXNzZWQoZXh0ZW5zaW9uTmFtZSArICcg
bGlzdGVkIGFzIHN1cHBvcnRlZCBhbmQgZ2V0RXh0ZW5zaW9uIHN1Y2NlZWRlZCcpOworICAgICAg
cmV0dXJuIHRydWU7CisgICAgfSBlbHNlIHsKKyAgICAgIHRlc3RGYWlsZWQoZXh0ZW5zaW9uTmFt
ZSArICcgbGlzdGVkIGFzIHN1cHBvcnRlZCBidXQgZ2V0RXh0ZW5zaW9uIGZhaWxlZCcpOworICAg
IH0KKyAgfSBlbHNlIHsKKyAgICBpZiAoZXh0ZW5zaW9uRW5hYmxlZCkgeworICAgICAgdGVzdEZh
aWxlZChleHRlbnNpb25OYW1lICsgJyBub3QgbGlzdGVkIGFzIHN1cHBvcnRlZCBidXQgZ2V0RXh0
ZW5zaW9uIHN1Y2NlZWRlZCcpOworICAgIH0gZWxzZSB7CisgICAgICB0ZXN0UGFzc2VkKGV4dGVu
c2lvbk5hbWUgKyAnIG5vdCBsaXN0ZWQgYXMgc3VwcG9ydGVkIGFuZCBnZXRFeHRlbnNpb24gZmFp
bGVkIC0tIHRoaXMgaXMgbGVnYWwnKTsKKyAgICB9CisgIH0KKyAgcmV0dXJuIGZhbHNlOworfQor
CitmdW5jdGlvbiBydW5UZXN0KCkgeworICBpZiAoIWdsKSB7CisgICAgcmV0dXJuIGZ1bmN0aW9u
KCkgeworICAgICAgdGVzdEZhaWxlZCgnV2ViR0wgY29udGV4dCBkb2VzIG5vdCBleGlzdCcpOwor
ICAgIH0KKyAgfQorCisgIGNvbnN0IGV4dGVuc2lvbk5hbWUgPSAnV0VCR0xfbXVsdGlfZHJhdyc7
CisgIGNvbnN0IGV4dCA9IGdsLmdldEV4dGVuc2lvbihleHRlbnNpb25OYW1lKTsKKyAgaWYgKCFy
dW5TdXBwb3J0ZWRUZXN0KGV4dGVuc2lvbk5hbWUsIGV4dCkpIHsKKyAgICByZXR1cm47CisgIH0K
KworICBkb1Rlc3QoZXh0LCBmYWxzZSk7CisgIGRvVGVzdChleHQsIHRydWUpOworfQorCitmdW5j
dGlvbiBkb1Rlc3QoZXh0LCBpbnN0YW5jZWQpIHsKKworICBmdW5jdGlvbiBydW5WYWxpZGF0aW9u
VGVzdHMoYnVmZmVyVXNhZ2UpIHsKKyAgICBjb25zdCB2ZXJ0ZXhCdWZmZXIgPSBnbC5jcmVhdGVC
dWZmZXIoKTsKKyAgICBnbC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgdmVydGV4QnVmZmVy
KTsKKyAgICBnbC5idWZmZXJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgbmV3IEZsb2F0MzJBcnJheShb
IDAuMiwwLjIsIDAuOCwwLjIsIDAuNSwwLjggXSksIGJ1ZmZlclVzYWdlKTsKKworICAgIGNvbnN0
IGluZGV4QnVmZmVyID0gZ2wuY3JlYXRlQnVmZmVyKCk7CisgICAgZ2wuYmluZEJ1ZmZlcihnbC5F
TEVNRU5UX0FSUkFZX0JVRkZFUiwgaW5kZXhCdWZmZXIpOworICAgIGdsLmJ1ZmZlckRhdGEoZ2wu
RUxFTUVOVF9BUlJBWV9CVUZGRVIsIG5ldyBVaW50OEFycmF5KFsgMCwgMSwgMiwgMF0pLCBidWZm
ZXJVc2FnZSk7CisKKyAgICBjb25zdCBpbnN0YW5jZUJ1ZmZlciA9IGdsLmNyZWF0ZUJ1ZmZlcigp
OworICAgIGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCBpbnN0YW5jZUJ1ZmZlcik7Cisg
ICAgZ2wuYnVmZmVyRGF0YShnbC5BUlJBWV9CVUZGRVIsIG5ldyBGbG9hdDMyQXJyYXkoWyAwLCAx
LCAyLCAzIF0pLCBidWZmZXJVc2FnZSk7CisKKyAgICBjb25zdCBwcm9ncmFtID0gd3R1LnNldHVw
UHJvZ3JhbShnbCwgWyJ2c2hhZGVyTm9EcmF3SUQiLCAiZnNoYWRlciJdLCBbInZQb3NpdGlvbiIs
ICJ2SW5zdGFuY2UiXSwgWzAsIDFdKTsKKyAgICBleHBlY3RUcnVlKHByb2dyYW0gIT0gbnVsbCwg
ImNhbiBjb21waWxlIHNpbXBsZSBwcm9ncmFtIik7CisKKyAgICBmdW5jdGlvbiBzZXR1cERyYXdB
cnJheXMoKSB7CisgICAgICBnbC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgdmVydGV4QnVm
ZmVyKTsKKyAgICAgIGdsLmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KDApOworICAgICAgZ2wudmVy
dGV4QXR0cmliUG9pbnRlcigwLCAyLCBnbC5GTE9BVCwgZmFsc2UsIDAsIDApOworICAgIH0KKwor
ICAgIGZ1bmN0aW9uIHNldHVwRHJhd0VsZW1lbnRzKCkgeworICAgICAgZ2wuYmluZEJ1ZmZlcihn
bC5FTEVNRU5UX0FSUkFZX0JVRkZFUiwgaW5kZXhCdWZmZXIpOworICAgICAgZ2wuYmluZEJ1ZmZl
cihnbC5BUlJBWV9CVUZGRVIsIHZlcnRleEJ1ZmZlcik7CisgICAgICBnbC5lbmFibGVWZXJ0ZXhB
dHRyaWJBcnJheSgwKTsKKyAgICAgIGdsLnZlcnRleEF0dHJpYlBvaW50ZXIoMCwgMiwgZ2wuRkxP
QVQsIGZhbHNlLCAwLCAwKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBzZXR1cEluc3RhbmNlZCgp
IHsKKyAgICAgIGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCBpbnN0YW5jZUJ1ZmZlcik7
CisgICAgICBnbC5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSgxKTsKKyAgICAgIGdsLnZlcnRleEF0
dHJpYlBvaW50ZXIoMSwgMSwgZ2wuRkxPQVQsIGZhbHNlLCAwLCAwKTsKKyAgICAgIGlmICh3dHUu
Z2V0RGVmYXVsdDNEQ29udGV4dFZlcnNpb24oKSA8IDIpIHsKKyAgICAgICAgaW5zdGFuY2VkRXh0
LnZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSgxLCAxKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IGdsLnZlcnRleEF0dHJpYkRpdmlzb3IoMSwgMSk7CisgICAgICB9CisgICAgfQorCisgICAgZnVu
Y3Rpb24gc2V0dXBEcmF3QXJyYXlzSW5zdGFuY2VkKCkgeworICAgICAgc2V0dXBEcmF3QXJyYXlz
KCk7CisgICAgICBzZXR1cEluc3RhbmNlZCgpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHNldHVw
RHJhd0VsZW1lbnRzSW5zdGFuY2VkKCkgeworICAgICAgc2V0dXBEcmF3RWxlbWVudHMoKTsKKyAg
ICAgIHNldHVwSW5zdGFuY2VkKCk7CisgICAgfQorCisgICAgLy8gV3JhcCBhIGRyYXcgY2FsbCBp
biBhIGZ1bmN0aW9uIHRvIHNldHVwIHRoZSBkcmF3IGNhbGwsIGV4ZWN1dGUsCisgICAgLy8gYW5k
IGNoZWNrIGVycm9ycy4KKyAgICAvLyBUaGUgYGRyYXdGdW5jYCBpcyBvbmUgb2YgdGhlIGV4dGVu
c2lvbiBlbnRyeXBvaW50cyBiZWluZyB0ZXN0ZWQuIEl0IG1heQorICAgIC8vIGJlIHVuZGVmaW5l
ZCBpZiB0aGF0IGVudHJ5cG9pbnQgaXMgbm90IHN1cHBvcnRlZCBvbiB0aGUgY29udGV4dAorICAg
IGZ1bmN0aW9uIG1ha2VEcmF3Q2hlY2soZHJhd0Z1bmMsIHNldHVwKSB7CisgICAgICBpZiAoIWRy
YXdGdW5jKSB7CisgICAgICAgIHJldHVybiBmdW5jdGlvbigpIHt9OworICAgICAgfQorICAgICAg
cmV0dXJuIGZ1bmN0aW9uKGZfYXJncywgZXhwZWN0LCBtc2cpIHsKKyAgICAgICAgc2V0dXAoKTsK
KyAgICAgICAgZHJhd0Z1bmMuYXBwbHkoZXh0LCBmX2FyZ3MpOworICAgICAgICB3dHUuZ2xFcnJv
clNob3VsZEJlKGdsLCBleHBlY3QsIGRyYXdGdW5jLm5hbWUgKyAiICIgKyBtc2cpOworICAgICAg
ICBnbC5kaXNhYmxlVmVydGV4QXR0cmliQXJyYXkoMCk7CisgICAgICAgIGdsLmRpc2FibGVWZXJ0
ZXhBdHRyaWJBcnJheSgxKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICBjb25zdCBjaGVja011bHRp
RHJhd0FycmF5cyA9IG1ha2VEcmF3Q2hlY2soCisgICAgICAgIGV4dC5tdWx0aURyYXdBcnJheXNX
RUJHTCwgc2V0dXBEcmF3QXJyYXlzKTsKKyAgICBjb25zdCBjaGVja011bHRpRHJhd0VsZW1lbnRz
ID0gbWFrZURyYXdDaGVjaygKKyAgICAgICAgZXh0Lm11bHRpRHJhd0VsZW1lbnRzV0VCR0wsIHNl
dHVwRHJhd0VsZW1lbnRzKTsKKyAgICBjb25zdCBjaGVja011bHRpRHJhd0FycmF5c0luc3RhbmNl
ZCA9IG1ha2VEcmF3Q2hlY2soCisgICAgICAgIGV4dC5tdWx0aURyYXdBcnJheXNJbnN0YW5jZWRX
RUJHTCwgc2V0dXBEcmF3QXJyYXlzSW5zdGFuY2VkKTsKKyAgICBjb25zdCBjaGVja011bHRpRHJh
d0VsZW1lbnRzSW5zdGFuY2VkID0gbWFrZURyYXdDaGVjaygKKyAgICAgICAgZXh0Lm11bHRpRHJh
d0VsZW1lbnRzSW5zdGFuY2VkV0VCR0wsIHNldHVwRHJhd0VsZW1lbnRzSW5zdGFuY2VkKTsKKwor
ICAgIGdsLnVzZVByb2dyYW0ocHJvZ3JhbSk7CisKKyAgICAvLyBDaGVjayB0aGF0IGRyYXdpbmcg
YSBzaW5nbGUgdHJpYW5nbGUgd29ya3MKKyAgICBpZiAoIWluc3RhbmNlZCkgeworICAgICAgY2hl
Y2tNdWx0aURyYXdBcnJheXMoCisgICAgICAgIFtnbC5UUklBTkdMRVMsIFswXSwgMCwgWzNdLCAw
LCAxXSwKKyAgICAgICAgZ2wuTk9fRVJST1IsICJ3aXRoIGdsLlRSSUFOR0xFUyIpOworICAgICAg
Y2hlY2tNdWx0aURyYXdFbGVtZW50cygKKyAgICAgICAgW2dsLlRSSUFOR0xFUywgWzNdLCAwLCBn
bC5VTlNJR05FRF9CWVRFLCBbMF0sIDAsIDFdLAorICAgICAgICBnbC5OT19FUlJPUiwgIndpdGgg
Z2wuVFJJQU5HTEVTIik7CisgICAgfSBlbHNlIHsKKyAgICAgIGNoZWNrTXVsdGlEcmF3RWxlbWVu
dHNJbnN0YW5jZWQoCisgICAgICAgIFtnbC5UUklBTkdMRVMsIFszXSwgMCwgZ2wuVU5TSUdORURf
QllURSwgWzBdLCAwLCBbMV0sIDAsIDFdLAorICAgICAgICBnbC5OT19FUlJPUiwgIndpdGggZ2wu
VFJJQU5HTEVTIik7CisgICAgICBjaGVja011bHRpRHJhd0FycmF5c0luc3RhbmNlZCgKKyAgICAg
ICAgW2dsLlRSSUFOR0xFUywgWzBdLCAwLCBbM10sIDAsIFsxXSwgMCwgMV0sCisgICAgICAgIGds
Lk5PX0VSUk9SLCAid2l0aCBnbC5UUklBTkdMRVMiKTsKKyAgICB9CisKKyAgICAvLyBaZXJvIGRy
YXdjb3VudCBwZXJtaXR0ZWQKKyAgICBpZiAoIWluc3RhbmNlZCkgeworICAgICAgY2hlY2tNdWx0
aURyYXdBcnJheXMoCisgICAgICAgIFtnbC5UUklBTkdMRVMsIFswXSwgMCwgWzNdLCAwLCAwXSwK
KyAgICAgICAgZ2wuTk9fRVJST1IsICJ3aXRoIGRyYXdjb3VudCA9PSAwIik7CisgICAgICBjaGVj
a011bHRpRHJhd0VsZW1lbnRzKAorICAgICAgICBbZ2wuVFJJQU5HTEVTLCBbM10sIDAsIGdsLlVO
U0lHTkVEX0JZVEUsIFswXSwgMCwgMF0sCisgICAgICAgIGdsLk5PX0VSUk9SLCAid2l0aCBkcmF3
Y291bnQgPT0gMCIpOworICAgIH0gZWxzZSB7CisgICAgICBjaGVja011bHRpRHJhd0VsZW1lbnRz
SW5zdGFuY2VkKAorICAgICAgICBbZ2wuVFJJQU5HTEVTLCBbM10sIDAsIGdsLlVOU0lHTkVEX0JZ
VEUsIFswXSwgMCwgWzFdLCAwLCAwXSwKKyAgICAgICAgZ2wuTk9fRVJST1IsICJ3aXRoIGRyYXdj
b3VudCA9PSAwIik7CisgICAgICBjaGVja011bHRpRHJhd0FycmF5c0luc3RhbmNlZCgKKyAgICAg
ICAgW2dsLlRSSUFOR0xFUywgWzBdLCAwLCBbM10sIDAsIFsxXSwgMCwgMF0sCisgICAgICAgIGds
Lk5PX0VSUk9SLCAid2l0aCBkcmF3Y291bnQgPT0gMCIpOworICAgIH0KKworICAgIC8vIENoZWNr
IG5lZ2F0aXZlIGRyYXdjb3VudAorICAgIGlmICghaW5zdGFuY2VkKSB7CisgICAgICBjaGVja011
bHRpRHJhd0FycmF5cygKKyAgICAgICAgW2dsLlRSSUFOR0xFUywgWzBdLCAwLCBbM10sIDAsIC0x
XSwKKyAgICAgICAgZ2wuSU5WQUxJRF9WQUxVRSwgIndpdGggZHJhd2NvdW50IDwgMCIpOworICAg
ICAgY2hlY2tNdWx0aURyYXdFbGVtZW50cygKKyAgICAgICAgW2dsLlRSSUFOR0xFUywgWzNdLCAw
LCBnbC5VTlNJR05FRF9CWVRFLCBbMF0sIDAsIC0xXSwKKyAgICAgICAgZ2wuSU5WQUxJRF9WQUxV
RSwgIndpdGggZHJhd2NvdW50IDwgMCIpOworICAgIH0gZWxzZSB7CisgICAgICBjaGVja011bHRp
RHJhd0VsZW1lbnRzSW5zdGFuY2VkKAorICAgICAgICBbZ2wuVFJJQU5HTEVTLCBbM10sIDAsIGds
LlVOU0lHTkVEX0JZVEUsIFswXSwgMCwgWzFdLCAwLCAtMV0sCisgICAgICAgIGdsLklOVkFMSURf
VkFMVUUsICJ3aXRoIGRyYXdjb3VudCA8IDAiKTsKKyAgICAgIGNoZWNrTXVsdGlEcmF3QXJyYXlz
SW5zdGFuY2VkKAorICAgICAgICBbZ2wuVFJJQU5HTEVTLCBbMF0sIDAsIFszXSwgMCwgWzFdLCAw
LCAtMV0sCisgICAgICAgIGdsLklOVkFMSURfVkFMVUUsICJ3aXRoIGRyYXdjb3VudCA8IDAiKTsK
KyAgICB9CisKKyAgICAvLyBDaGVjayBvZmZzZXRzIGdyZWF0ZXIgdGhhbiBhcnJheSBsZW5ndGgK
KyAgICBpZiAoIWluc3RhbmNlZCkgeworICAgICAgY2hlY2tNdWx0aURyYXdBcnJheXMoCisgICAg
ICAgIFtnbC5UUklBTkdMRVMsIFswXSwgMSwgWzNdLCAwLCAxXSwKKyAgICAgICAgZ2wuSU5WQUxJ
RF9PUEVSQVRJT04sICJ3aXRoIGZpcnN0c1N0YXJ0ID49IGZpcnN0c0xpc3QubGVuZ3RoIik7Cisg
ICAgICBjaGVja011bHRpRHJhd0FycmF5cygKKyAgICAgICAgW2dsLlRSSUFOR0xFUywgWzBdLCAw
LCBbM10sIDEsIDFdLAorICAgICAgICBnbC5JTlZBTElEX09QRVJBVElPTiwgIndpdGggY291bnRz
U3RhcnQgPj0gY291bnRzTGlzdC5sZW5ndGgiKTsKKworICAgICAgY2hlY2tNdWx0aURyYXdFbGVt
ZW50cygKKyAgICAgICAgW2dsLlRSSUFOR0xFUywgWzNdLCAxLCBnbC5VTlNJR05FRF9CWVRFLCBb
MF0sIDAsIDFdLAorICAgICAgICBnbC5JTlZBTElEX09QRVJBVElPTiwgIndpdGggY291bnRzU3Rh
cnQgPj0gY291bnRzTGlzdC5sZW5ndGgiKTsKKyAgICAgIGNoZWNrTXVsdGlEcmF3RWxlbWVudHMo
CisgICAgICAgIFtnbC5UUklBTkdMRVMsIFszXSwgMCwgZ2wuVU5TSUdORURfQllURSwgWzBdLCAx
LCAxXSwKKyAgICAgICAgZ2wuSU5WQUxJRF9PUEVSQVRJT04sICJ3aXRoIG9mZnNldHNTdGFydCA+
PSBvZmZzZXRzTGlzdC5sZW5ndGgiKTsKKyAgICB9IGVsc2UgeworICAgICAgY2hlY2tNdWx0aURy
YXdBcnJheXNJbnN0YW5jZWQoCisgICAgICAgIFtnbC5UUklBTkdMRVMsIFswXSwgMSwgWzNdLCAw
LCBbMV0sIDAsIDFdLAorICAgICAgICBnbC5JTlZBTElEX09QRVJBVElPTiwgIndpdGggZmlyc3Rz
U3RhcnQgPj0gZmlyc3RzTGlzdC5sZW5ndGgiKTsKKyAgICAgIGNoZWNrTXVsdGlEcmF3QXJyYXlz
SW5zdGFuY2VkKAorICAgICAgICBbZ2wuVFJJQU5HTEVTLCBbMF0sIDAsIFszXSwgMSwgWzFdLCAw
LCAxXSwKKyAgICAgICAgZ2wuSU5WQUxJRF9PUEVSQVRJT04sICJ3aXRoIGNvdW50c1N0YXJ0ID49
IGNvdW50c0xpc3QubGVuZ3RoIik7CisgICAgICBjaGVja011bHRpRHJhd0FycmF5c0luc3RhbmNl
ZCgKKyAgICAgICAgW2dsLlRSSUFOR0xFUywgWzBdLCAwLCBbM10sIDAsIFsxXSwgMSwgMV0sCisg
ICAgICAgIGdsLklOVkFMSURfT1BFUkFUSU9OLCAid2l0aCBpbnN0YW5jZUNvdW50c1N0YXJ0ID49
IGluc3RhbmNlQ291bnRzTGlzdC5sZW5ndGgiKTsKKworICAgICAgY2hlY2tNdWx0aURyYXdFbGVt
ZW50c0luc3RhbmNlZCgKKyAgICAgICAgW2dsLlRSSUFOR0xFUywgWzNdLCAxLCBnbC5VTlNJR05F
RF9CWVRFLCBbMF0sIDAsIFsxXSwgMCwgMV0sCisgICAgICAgIGdsLklOVkFMSURfT1BFUkFUSU9O
LCAid2l0aCBjb3VudHNTdGFydCA+PSBjb3VudHNMaXN0Lmxlbmd0aCIpOworICAgICAgY2hlY2tN
dWx0aURyYXdFbGVtZW50c0luc3RhbmNlZCgKKyAgICAgICAgW2dsLlRSSUFOR0xFUywgWzNdLCAw
LCBnbC5VTlNJR05FRF9CWVRFLCBbMF0sIDEsIFsxXSwgMCwgMV0sCisgICAgICAgIGdsLklOVkFM
SURfT1BFUkFUSU9OLCAid2l0aCBvZmZzZXRzU3RhcnQgPj0gb2Zmc2V0c0xpc3QubGVuZ3RoIik7
CisgICAgICBjaGVja011bHRpRHJhd0VsZW1lbnRzSW5zdGFuY2VkKAorICAgICAgICBbZ2wuVFJJ
QU5HTEVTLCBbM10sIDAsIGdsLlVOU0lHTkVEX0JZVEUsIFswXSwgMCwgWzFdLCAxLCAxXSwKKyAg
ICAgICAgZ2wuSU5WQUxJRF9PUEVSQVRJT04sICJ3aXRoIGluc3RhbmNlQ291bnRzU3RhcnQgPj0g
aW5zdGFuY2VDb3VudHNMaXN0Lmxlbmd0aCIpOworICAgIH0KKyAgfQorCisgIGZ1bmN0aW9uIHJ1
blNoYWRlclRlc3RzKGJ1ZmZlclVzYWdlKSB7CisgICAgY29uc3QgaWxsZWdhbFByb2dyYW0gPSB3
dHUuc2V0dXBQcm9ncmFtKGdsLCBbInZzaGFkZXJJbGxlZ2FsRHJhd0lEIiwgImZzaGFkZXIiXSwg
WyJ2UG9zaXRpb24iXSwgWzBdKTsKKyAgICBleHBlY3RUcnVlKGlsbGVnYWxQcm9ncmFtID09IG51
bGwsICJjYW5ub3QgY29tcGlsZSBwcm9ncmFtIHdpdGggZ2xfRHJhd0lEIGJ1dCBubyBleHRlbnNp
b24gZGlyZWN0aXZlIik7CisKKyAgICBjb25zdCBkcmF3SURQcm9ncmFtID0gd3R1LnNldHVwUHJv
Z3JhbShnbCwgWyJ2c2hhZGVyRHJhd0lEWmVybyIsICJmc2hhZGVyIl0sIFsidlBvc2l0aW9uIl0s
IFswXSk7CisgICAgd3R1LnNldHVwUHJvZ3JhbShnbCwgWyJ2c2hhZGVyRHJhd0lEWmVybyIsICJm
c2hhZGVyIl0sIFsidlBvc2l0aW9uIl0sIFswXSk7CisgICAgZXhwZWN0VHJ1ZShkcmF3SURQcm9n
cmFtICE9PSBudWxsLCAiY2FuIGNvbXBpbGUgcHJvZ3JhbSB3aXRoIGdsX0RyYXdJRCIpOworICAg
IGdsLnVzZVByb2dyYW0oZHJhd0lEUHJvZ3JhbSk7CisgICAgZ2wuYmluZEJ1ZmZlcihnbC5BUlJB
WV9CVUZGRVIsIGdsLmNyZWF0ZUJ1ZmZlcigpKTsKKyAgICBnbC5idWZmZXJEYXRhKGdsLkFSUkFZ
X0JVRkZFUiwgbmV3IEZsb2F0MzJBcnJheShbIDAsMCwgMSwwLCAwLDEsIDAsMSwgMSwwLCAxLDEg
XSksIGJ1ZmZlclVzYWdlKTsKKyAgICBnbC5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSgwKTsKKyAg
ICBnbC52ZXJ0ZXhBdHRyaWJQb2ludGVyKDAsIDIsIGdsLkZMT0FULCBmYWxzZSwgMCwgMCk7Cisg
ICAgZ2wuZHJhd0FycmF5cyhnbC5UUklBTkdMRVMsIDAsIDYpOworICAgIHd0dS5jaGVja0NhbnZh
cyhnbCwgWzAsIDI1NSwgMCwgMjU1XSwgImdsX0RyYXdJRCBpcyAwIGZvciBub24tTXVsdGkqIGRy
YXcgY2FsbHMiLCAwKTsKKyAgfQorCisgIGZ1bmN0aW9uIHJ1blBpeGVsVGVzdHMoYnVmZmVyVXNh
Z2UpIHsKKyAgICAvLyBBbiBhcnJheSBvZiBxdWFkcyBpcyB0aWxlZCBhY3Jvc3MgdGhlIHNjcmVl
bi4KKyAgICAvLyBnbF9EcmF3SUQgaXMgY2hlY2tlZCBieSB1c2luZyBpdCB0byBzZWxlY3QgdGhl
IGNvbG9yIG9mIHRoZSBkcmF3LgorICAgIC8vIEluc3RhbmNlZCBlbnRyeXBvaW50cyBhcmUgdGVz
dGVkIGhlcmUgc2NhbGluZyBhbmQgdGhlbiBpbnN0YW5jaW5nIHRoZQorICAgIC8vIGFycmF5IG9m
IHF1YWRzIG92ZXIgZm91ciBxdWFkcmFudHMgb24gdGhlIHNjcmVlbi4KKworICAgIC8vIFRoZXNl
IHRlc3RzIGFsc28gaW5jbHVkZSAibWFueURyYXciIHRlc3RzIHdoaWNoIGVtdWxhdGUgYSBtdWx0
aURyYXcgd2l0aAorICAgIC8vIGEgSmF2YXNjcmlwdCBmb3ItbG9vcCBhbmQgZ2xfRHJhd0lEIHdp
dGggYSB1bmlmb3JtIGNvbnN0aWFibGUuIFRoZXkgYXJlCisgICAgLy8gaW5jbHVkZWQgdG8gZW5z
dXJlIHRoZSB0ZXN0IGlzIHdyaXR0ZW4gY29ycmVjdGx5LgorCisgICAgY29uc3Qgd2lkdGggPSBn
bC5jYW52YXMud2lkdGg7CisgICAgY29uc3QgaGVpZ2h0ID0gZ2wuY2FudmFzLmhlaWdodDsKKyAg
ICBjb25zdCB4X2NvdW50ID0gODsKKyAgICBjb25zdCB5X2NvdW50ID0gODsKKyAgICBjb25zdCBx
dWFkX2NvdW50ID0geF9jb3VudCAqIHlfY291bnQ7CisgICAgY29uc3QgdHJpX2NvdW50ID0gcXVh
ZF9jb3VudCAqIDI7CisgICAgY29uc3QgdGlsZVNpemUgPSBbIDEveF9jb3VudCwgMS95X2NvdW50
IF07CisgICAgY29uc3QgdGlsZVBpeGVsU2l6ZSA9IFsgTWF0aC5mbG9vcih3aWR0aCAvIHhfY291
bnQpLCBNYXRoLmZsb29yKGhlaWdodCAvIHlfY291bnQpIF07CisgICAgY29uc3QgcXVhZFJhZGl1
cyA9IFsgMC4yNSAqIHRpbGVTaXplWzBdLCAwLjI1ICogdGlsZVNpemVbMV0gXTsKKyAgICBjb25z
dCBwaXhlbENoZWNrU2l6ZSA9IFsgTWF0aC5mbG9vcihxdWFkUmFkaXVzWzBdICogd2lkdGgpLCBN
YXRoLmZsb29yKHF1YWRSYWRpdXNbMV0gKiBoZWlnaHQpIF07CisKKyAgICBmdW5jdGlvbiBnZXRU
aWxlQ2VudGVyKHgsIHkpIHsKKyAgICAgIHJldHVybiBbIHRpbGVTaXplWzBdICogKDAuNSArIHgp
LCB0aWxlU2l6ZVsxXSAqICgwLjUgKyB5KSBdOworICAgIH0KKworICAgIGZ1bmN0aW9uIGdldFF1
YWRWZXJ0aWNlcyh4LCB5KSB7CisgICAgICBjb25zdCBjZW50ZXIgPSBnZXRUaWxlQ2VudGVyKHgs
IHkpOworICAgICAgcmV0dXJuIFsKKyAgICAgICAgW2NlbnRlclswXSAtIHF1YWRSYWRpdXNbMF0s
IGNlbnRlclsxXSAtIHF1YWRSYWRpdXNbMV0sIDBdLAorICAgICAgICBbY2VudGVyWzBdICsgcXVh
ZFJhZGl1c1swXSwgY2VudGVyWzFdIC0gcXVhZFJhZGl1c1sxXSwgMF0sCisgICAgICAgIFtjZW50
ZXJbMF0gKyBxdWFkUmFkaXVzWzBdLCBjZW50ZXJbMV0gKyBxdWFkUmFkaXVzWzFdLCAwXSwKKyAg
ICAgICAgW2NlbnRlclswXSAtIHF1YWRSYWRpdXNbMF0sIGNlbnRlclsxXSArIHF1YWRSYWRpdXNb
MV0sIDBdLAorICAgICAgXQorICAgIH0KKworICAgIGNvbnN0IGluZGljZXNEYXRhID0gW107Cisg
ICAgY29uc3QgdmVydGljZXNEYXRhID0gW107CisgICAgY29uc3Qgbm9uSW5kZXhlZFZlcnRpY2Vz
RGF0YSA9IFtdOworICAgIHsKKyAgICAgIGNvbnN0IGlzID0gbmV3IFVpbnQxNkFycmF5KFswLCAx
LCAyLCAwLCAyLCAzXSk7CisgICAgICBmb3IgKGxldCB5ID0gMDsgeSA8IHlfY291bnQ7ICsreSkg
eworICAgICAgICBmb3IgKGxldCB4ID0gMDsgeCA8IHhfY291bnQ7ICsreCkgeworICAgICAgICAg
IGNvbnN0IHF1YWRJbmRleCA9IHkgKiB4X2NvdW50ICsgeDsKKyAgICAgICAgICBjb25zdCBzdGFy
dGluZ19pbmRleCA9IDQgKiBxdWFkSW5kZXg7CisgICAgICAgICAgY29uc3QgdnMgPSBnZXRRdWFk
VmVydGljZXMoeCwgeSk7CisgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpcy5sZW5ndGg7
ICsraSkgeworICAgICAgICAgICAgaW5kaWNlc0RhdGEucHVzaChzdGFydGluZ19pbmRleCArIGlz
W2ldKTsKKyAgICAgICAgICB9CisgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2cy5sZW5n
dGg7ICsraSkgeworICAgICAgICAgICAgZm9yIChsZXQgdiA9IDA7IHYgPCB2c1tpXS5sZW5ndGg7
ICsrdikgdmVydGljZXNEYXRhLnB1c2godnNbaV1bdl0pOworICAgICAgICAgIH0KKyAgICAgICAg
ICBmb3IgKGxldCBpID0gMDsgaSA8IGlzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICBmb3Ig
KGxldCB2ID0gMDsgdiA8IHZzW2lzW2ldXS5sZW5ndGg7ICsrdikgbm9uSW5kZXhlZFZlcnRpY2Vz
RGF0YS5wdXNoKHZzW2lzW2ldXVt2XSk7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9
CisgICAgfQorCisgICAgY29uc3QgaW5kaWNlcyA9IG5ldyBVaW50MTZBcnJheShpbmRpY2VzRGF0
YSk7CisgICAgY29uc3QgdmVydGljZXMgPSBuZXcgRmxvYXQzMkFycmF5KHZlcnRpY2VzRGF0YSk7
CisgICAgY29uc3Qgbm9uSW5kZXhlZFZlcnRpY2VzID0gbmV3IEZsb2F0MzJBcnJheShub25JbmRl
eGVkVmVydGljZXNEYXRhKTsKKworICAgIGNvbnN0IGluZGV4QnVmZmVyID0gZ2wuY3JlYXRlQnVm
ZmVyKCk7CisgICAgY29uc3QgdmVydGV4QnVmZmVyID0gZ2wuY3JlYXRlQnVmZmVyKCk7CisgICAg
Y29uc3Qgbm9uSW5kZXhlZFZlcnRleEJ1ZmZlciA9IGdsLmNyZWF0ZUJ1ZmZlcigpOworICAgIGNv
bnN0IGluc3RhbmNlQnVmZmVyID0gZ2wuY3JlYXRlQnVmZmVyKCk7CisKKyAgICBnbC5iaW5kQnVm
ZmVyKGdsLkFSUkFZX0JVRkZFUiwgbm9uSW5kZXhlZFZlcnRleEJ1ZmZlcik7CisgICAgZ2wuYnVm
ZmVyRGF0YShnbC5BUlJBWV9CVUZGRVIsIG5vbkluZGV4ZWRWZXJ0aWNlcywgYnVmZmVyVXNhZ2Up
OworCisgICAgZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIHZlcnRleEJ1ZmZlcik7Cisg
ICAgZ2wuYnVmZmVyRGF0YShnbC5BUlJBWV9CVUZGRVIsIHZlcnRpY2VzLCBidWZmZXJVc2FnZSk7
CisKKyAgICBnbC5iaW5kQnVmZmVyKGdsLkVMRU1FTlRfQVJSQVlfQlVGRkVSLCBpbmRleEJ1ZmZl
cik7CisgICAgZ2wuYnVmZmVyRGF0YShnbC5FTEVNRU5UX0FSUkFZX0JVRkZFUiwgaW5kaWNlcywg
YnVmZmVyVXNhZ2UpOworCisgICAgZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIGluc3Rh
bmNlQnVmZmVyKTsKKyAgICBnbC5idWZmZXJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgbmV3IEZsb2F0
MzJBcnJheShbMSwgMiwgMywgNF0pLCBidWZmZXJVc2FnZSk7CisKKyAgICBmdW5jdGlvbiBjaGVj
a1Jlc3VsdChjb25maWcsIG1zZykgeworICAgICAgY29uc3QgcmVjdHMgPSBbXTsKKyAgICAgIGNv
bnN0IGV4cGVjdGVkID0gWworICAgICAgICBbMjU1LCAwLCAwLCAyNTVdLAorICAgICAgICBbMCwg
MjU1LCAwLCAyNTVdLAorICAgICAgICBbMCwgMCwgMjU1LCAyNTVdLAorICAgICAgXTsKKyAgICAg
IGZvciAobGV0IHkgPSAwOyB5IDwgeV9jb3VudDsgKyt5KSB7CisgICAgICAgIGZvciAobGV0IHgg
PSAwOyB4IDwgeF9jb3VudDsgKyt4KSB7CisgICAgICAgICAgY29uc3QgY2VudGVyX3ggPSB4ICog
dGlsZVBpeGVsU2l6ZVswXSArIE1hdGguZmxvb3IodGlsZVBpeGVsU2l6ZVswXSAvIDIpOworICAg
ICAgICAgIGNvbnN0IGNlbnRlcl95ID0geSAqIHRpbGVQaXhlbFNpemVbMV0gKyBNYXRoLmZsb29y
KHRpbGVQaXhlbFNpemVbMV0gLyAyKTsKKyAgICAgICAgICBjb25zdCBxdWFkSUQgPSB5ICogeF9j
b3VudCArIHg7CisgICAgICAgICAgY29uc3QgY29sb3JJRCA9IGNvbmZpZy5kcmF3SUQgPyBxdWFk
SUQgJSAzIDogMDsKKyAgICAgICAgICBpZiAoY29uZmlnLmluc3RhbmNlZCkgeworICAgICAgICAg
ICAgcmVjdHMucHVzaCh3dHUubWFrZUNoZWNrUmVjdCgKKyAgICAgICAgICAgICAgICBjZW50ZXJf
eCAvIDIgLSBNYXRoLmZsb29yKHBpeGVsQ2hlY2tTaXplWzBdIC8gNCksCisgICAgICAgICAgICAg
ICAgY2VudGVyX3kgLyAyIC0gTWF0aC5mbG9vcihwaXhlbENoZWNrU2l6ZVsxXSAvIDQpLAorICAg
ICAgICAgICAgICAgIHBpeGVsQ2hlY2tTaXplWzBdIC8gMiwKKyAgICAgICAgICAgICAgICBwaXhl
bENoZWNrU2l6ZVsxXSAvIDIsCisgICAgICAgICAgICAgICAgZXhwZWN0ZWRbY29sb3JJRF0sCisg
ICAgICAgICAgICAgICAgbXNnICsgIiAoIiArIHggKyAiLCIgKyB5ICsgIikiLCAwKSk7CisgICAg
ICAgICAgICByZWN0cy5wdXNoKHd0dS5tYWtlQ2hlY2tSZWN0KAorICAgICAgICAgICAgICAgIGNl
bnRlcl94IC8gMiAtIE1hdGguZmxvb3IocGl4ZWxDaGVja1NpemVbMF0gLyA0KSArIHdpZHRoIC8g
MiwKKyAgICAgICAgICAgICAgICBjZW50ZXJfeSAvIDIgLSBNYXRoLmZsb29yKHBpeGVsQ2hlY2tT
aXplWzFdIC8gNCksCisgICAgICAgICAgICAgICAgcGl4ZWxDaGVja1NpemVbMF0gLyAyLAorICAg
ICAgICAgICAgICAgIHBpeGVsQ2hlY2tTaXplWzFdIC8gMiwKKyAgICAgICAgICAgICAgICBleHBl
Y3RlZFtjb2xvcklEXSwKKyAgICAgICAgICAgICAgICBtc2cgKyAiICgiICsgeCArICIsIiArIHkg
KyAiKSIsIDApKTsKKyAgICAgICAgICAgIHJlY3RzLnB1c2god3R1Lm1ha2VDaGVja1JlY3QoCisg
ICAgICAgICAgICAgICAgY2VudGVyX3ggLyAyIC0gTWF0aC5mbG9vcihwaXhlbENoZWNrU2l6ZVsw
XSAvIDQpLAorICAgICAgICAgICAgICAgIGNlbnRlcl95IC8gMiAtIE1hdGguZmxvb3IocGl4ZWxD
aGVja1NpemVbMV0gLyA0KSArIGhlaWdodCAvIDIsCisgICAgICAgICAgICAgICAgcGl4ZWxDaGVj
a1NpemVbMF0gLyAyLAorICAgICAgICAgICAgICAgIHBpeGVsQ2hlY2tTaXplWzFdIC8gMiwKKyAg
ICAgICAgICAgICAgICBleHBlY3RlZFtjb2xvcklEXSwKKyAgICAgICAgICAgICAgICBtc2cgKyAi
ICgiICsgeCArICIsIiArIHkgKyAiKSIsIDApKTsKKyAgICAgICAgICAgIHJlY3RzLnB1c2god3R1
Lm1ha2VDaGVja1JlY3QoCisgICAgICAgICAgICAgICAgY2VudGVyX3ggLyAyIC0gTWF0aC5mbG9v
cihwaXhlbENoZWNrU2l6ZVswXSAvIDQpICsgd2lkdGggLyAyLAorICAgICAgICAgICAgICAgIGNl
bnRlcl95IC8gMiAtIE1hdGguZmxvb3IocGl4ZWxDaGVja1NpemVbMV0gLyA0KSArIGhlaWdodCAv
IDIsCisgICAgICAgICAgICAgICAgcGl4ZWxDaGVja1NpemVbMF0gLyAyLAorICAgICAgICAgICAg
ICAgIHBpeGVsQ2hlY2tTaXplWzFdIC8gMiwKKyAgICAgICAgICAgICAgICBleHBlY3RlZFtjb2xv
cklEXSwKKyAgICAgICAgICAgICAgICBtc2cgKyAiICgiICsgeCArICIsIiArIHkgKyAiKSIsIDAp
KTsKKyAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmVjdHMucHVzaCh3dHUubWFrZUNo
ZWNrUmVjdCgKKyAgICAgICAgICAgICAgICBjZW50ZXJfeCAtIE1hdGguZmxvb3IocGl4ZWxDaGVj
a1NpemVbMF0gLyAyKSwKKyAgICAgICAgICAgICAgICBjZW50ZXJfeSAtIE1hdGguZmxvb3IocGl4
ZWxDaGVja1NpemVbMV0gLyAyKSwKKyAgICAgICAgICAgICAgICBwaXhlbENoZWNrU2l6ZVswXSwK
KyAgICAgICAgICAgICAgICBwaXhlbENoZWNrU2l6ZVsxXSwKKyAgICAgICAgICAgICAgICBleHBl
Y3RlZFtjb2xvcklEXSwKKyAgICAgICAgICAgICAgICBtc2cgKyAiICgiICsgeCArICIsIiArIHkg
KyAiKSIsIDApKTsKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIHd0dS5j
aGVja0NhbnZhc1JlY3RzKGdsLCByZWN0cyk7CisgICAgfQorCisgICAgY29uc3QgZmlyc3RzID0g
bmV3IFVpbnQzMkFycmF5KHRyaV9jb3VudCk7CisgICAgY29uc3QgY291bnRzID0gbmV3IFVpbnQz
MkFycmF5KHRyaV9jb3VudCk7CisgICAgY29uc3Qgb2Zmc2V0cyA9IG5ldyBVaW50MzJBcnJheSh0
cmlfY291bnQpOworICAgIGNvbnN0IGluc3RhbmNlcyA9IG5ldyBVaW50MzJBcnJheSh0cmlfY291
bnQpOworCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBmaXJzdHMubGVuZ3RoOyArK2kpIGZpcnN0
c1tpXSA9IGkgKiAzOworICAgIGNvdW50cy5maWxsKDMpOworICAgIGZvciAobGV0IGkgPSAwOyBp
IDwgb2Zmc2V0cy5sZW5ndGg7ICsraSkgb2Zmc2V0c1tpXSA9IGkgKiAzICogMjsKKyAgICBpbnN0
YW5jZXMuZmlsbCg0KTsKKworICAgIGNvbnN0IGZpcnN0c09mZnNldCA9IDQ3OworICAgIGNvbnN0
IGNvdW50c09mZnNldCA9IGZpcnN0c09mZnNldCArIGZpcnN0cy5sZW5ndGg7CisgICAgY29uc3Qg
b2Zmc2V0c09mZnNldCA9IGNvdW50c09mZnNldCArIGNvdW50cy5sZW5ndGg7CisgICAgY29uc3Qg
aW5zdGFuY2VzT2Zmc2V0ID0gb2Zmc2V0c09mZnNldCArIGluc3RhbmNlcy5sZW5ndGg7CisKKyAg
ICBjb25zdCBidWZmZXIgPSBuZXcgVWludDMyQXJyYXkoZmlyc3RzT2Zmc2V0ICsgZmlyc3RzLmxl
bmd0aCArIGNvdW50cy5sZW5ndGggKyBvZmZzZXRzLmxlbmd0aCArIGluc3RhbmNlcy5sZW5ndGgp
OworICAgIGJ1ZmZlci5zZXQoZmlyc3RzLCBmaXJzdHNPZmZzZXQpOworICAgIGJ1ZmZlci5zZXQo
Y291bnRzLCBjb3VudHNPZmZzZXQpOworICAgIGJ1ZmZlci5zZXQob2Zmc2V0cywgb2Zmc2V0c09m
ZnNldCk7CisgICAgYnVmZmVyLnNldChpbnN0YW5jZXMsIGluc3RhbmNlc09mZnNldCk7CisKKyAg
ICBsZXQgZHJhd0lETG9jYXRpb247CisKKyAgICBjb25zdCBtdWx0aURyYXdBcnJheXMgPSBmdW5j
dGlvbigpIHsKKyAgICAgIGV4dC5tdWx0aURyYXdBcnJheXNXRUJHTChnbC5UUklBTkdMRVMsIGZp
cnN0cywgMCwgY291bnRzLCAwLCB0cmlfY291bnQpOworICAgIH0KKworICAgIGNvbnN0IG11bHRp
RHJhd0FycmF5c1dpdGhOb256ZXJvT2Zmc2V0cyA9IGZ1bmN0aW9uKCkgeworICAgICAgZXh0Lm11
bHRpRHJhd0FycmF5c1dFQkdMKGdsLlRSSUFOR0xFUywgYnVmZmVyLCBmaXJzdHNPZmZzZXQsIGJ1
ZmZlciwgY291bnRzT2Zmc2V0LCB0cmlfY291bnQpOworICAgIH0KKworICAgIGNvbnN0IG11bHRp
RHJhd0VsZW1lbnRzID0gZnVuY3Rpb24oKSB7CisgICAgICBleHQubXVsdGlEcmF3RWxlbWVudHNX
RUJHTChnbC5UUklBTkdMRVMsIGNvdW50cywgMCwgZ2wuVU5TSUdORURfU0hPUlQsIG9mZnNldHMs
IDAsIHRyaV9jb3VudCk7CisgICAgfQorCisgICAgY29uc3QgbXVsdGlEcmF3RWxlbWVudHNXaXRo
Tm9uemVyb09mZnNldHMgPSBmdW5jdGlvbigpIHsKKyAgICAgIGV4dC5tdWx0aURyYXdFbGVtZW50
c1dFQkdMKGdsLlRSSUFOR0xFUywgYnVmZmVyLCBjb3VudHNPZmZzZXQsIGdsLlVOU0lHTkVEX1NI
T1JULCBidWZmZXIsIG9mZnNldHNPZmZzZXQsIHRyaV9jb3VudCk7CisgICAgfQorCisgICAgY29u
c3QgbXVsdGlEcmF3QXJyYXlzSW5zdGFuY2VkID0gZnVuY3Rpb24oKSB7CisgICAgICBleHQubXVs
dGlEcmF3QXJyYXlzSW5zdGFuY2VkV0VCR0woZ2wuVFJJQU5HTEVTLCBmaXJzdHMsIDAsIGNvdW50
cywgMCwgaW5zdGFuY2VzLCAwLCB0cmlfY291bnQpOworICAgIH0KKworICAgIGNvbnN0IG11bHRp
RHJhd0FycmF5c0luc3RhbmNlZFdpdGhOb256ZXJvT2Zmc2V0cyA9IGZ1bmN0aW9uKCkgeworICAg
ICAgZXh0Lm11bHRpRHJhd0FycmF5c0luc3RhbmNlZFdFQkdMKGdsLlRSSUFOR0xFUywgYnVmZmVy
LCBmaXJzdHNPZmZzZXQsIGJ1ZmZlciwgY291bnRzT2Zmc2V0LCBidWZmZXIsIGluc3RhbmNlc09m
ZnNldCwgdHJpX2NvdW50KTsKKyAgICB9CisKKyAgICBjb25zdCBtdWx0aURyYXdFbGVtZW50c0lu
c3RhbmNlZCA9IGZ1bmN0aW9uKCkgeworICAgICAgZXh0Lm11bHRpRHJhd0VsZW1lbnRzSW5zdGFu
Y2VkV0VCR0woZ2wuVFJJQU5HTEVTLCBjb3VudHMsIDAsIGdsLlVOU0lHTkVEX1NIT1JULCBvZmZz
ZXRzLCAwLCBpbnN0YW5jZXMsIDAsIHRyaV9jb3VudCk7CisgICAgfQorCisgICAgY29uc3QgbXVs
dGlEcmF3RWxlbWVudHNJbnN0YW5jZWRXaXRoTm9uemVyb09mZnNldHMgPSBmdW5jdGlvbigpIHsK
KyAgICAgIGV4dC5tdWx0aURyYXdFbGVtZW50c0luc3RhbmNlZFdFQkdMKGdsLlRSSUFOR0xFUywg
YnVmZmVyLCBjb3VudHNPZmZzZXQsIGdsLlVOU0lHTkVEX1NIT1JULCBidWZmZXIsIG9mZnNldHNP
ZmZzZXQsIGJ1ZmZlciwgaW5zdGFuY2VzT2Zmc2V0LCB0cmlfY291bnQpOworICAgIH0KKworICAg
IGNvbnN0IG1hbnlEcmF3QXJyYXlzID0gZnVuY3Rpb24oKSB7CisgICAgICBmb3IgKGxldCBpID0g
MDsgaSA8IHRyaV9jb3VudDsgKytpKSB7CisgICAgICAgIGdsLmRyYXdBcnJheXMoZ2wuVFJJQU5H
TEVTLCBmaXJzdHNbaV0sIGNvdW50c1tpXSk7CisgICAgICB9CisgICAgfQorCisgICAgY29uc3Qg
bWFueURyYXdFbGVtZW50cyA9IGZ1bmN0aW9uKCkgeworICAgICAgZm9yIChsZXQgaSA9IDA7IGkg
PCB0cmlfY291bnQ7ICsraSkgeworICAgICAgICBnbC5kcmF3RWxlbWVudHMoZ2wuVFJJQU5HTEVT
LCBjb3VudHNbaV0sIGdsLlVOU0lHTkVEX1NIT1JULCBvZmZzZXRzW2ldKTsKKyAgICAgIH0KKyAg
ICB9CisKKyAgICBjb25zdCBtYW55RHJhd0FycmF5c0VtdWxhdGVEcmF3SUQgPSBmdW5jdGlvbigp
IHsKKyAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdHJpX2NvdW50OyArK2kpIHsKKyAgICAgICAg
Z2wudW5pZm9ybTFpKGRyYXdJRExvY2F0aW9uLCBpKTsKKyAgICAgICAgZ2wuZHJhd0FycmF5cyhn
bC5UUklBTkdMRVMsIGZpcnN0c1tpXSwgY291bnRzW2ldKTsKKyAgICAgIH0KKyAgICB9CisKKyAg
ICBjb25zdCBtYW55RHJhd0VsZW1lbnRzRW11bGF0ZURyYXdJRCA9IGZ1bmN0aW9uKCkgeworICAg
ICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0cmlfY291bnQ7ICsraSkgeworICAgICAgICBnbC51bmlm
b3JtMWkoZHJhd0lETG9jYXRpb24sIGkpOworICAgICAgICBnbC5kcmF3RWxlbWVudHMoZ2wuVFJJ
QU5HTEVTLCBjb3VudHNbaV0sIGdsLlVOU0lHTkVEX1NIT1JULCBvZmZzZXRzW2ldKTsKKyAgICAg
IH0KKyAgICB9CisKKyAgICBmdW5jdGlvbiBkcmF3QXJyYXlzSW5zdGFuY2VkKCkgeworICAgICAg
aWYgKHd0dS5nZXREZWZhdWx0M0RDb250ZXh0VmVyc2lvbigpIDwgMikgeworICAgICAgICBpbnN0
YW5jZWRFeHQuZHJhd0FycmF5c0luc3RhbmNlZEFOR0xFLmFwcGx5KGluc3RhbmNlZEV4dCwgYXJn
dW1lbnRzKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIGdsLmRyYXdBcnJheXNJbnN0YW5jZWQu
YXBwbHkoZ2wsIGFyZ3VtZW50cyk7CisgICAgICB9CisgICAgfQorCisgICAgZnVuY3Rpb24gZHJh
d0VsZW1lbnRzSW5zdGFuY2VkKCkgeworICAgICAgaWYgKHd0dS5nZXREZWZhdWx0M0RDb250ZXh0
VmVyc2lvbigpIDwgMikgeworICAgICAgICBpbnN0YW5jZWRFeHQuZHJhd0VsZW1lbnRzSW5zdGFu
Y2VkQU5HTEUuYXBwbHkoaW5zdGFuY2VkRXh0LCBhcmd1bWVudHMpOworICAgICAgfSBlbHNlIHsK
KyAgICAgICAgZ2wuZHJhd0VsZW1lbnRzSW5zdGFuY2VkLmFwcGx5KGdsLCBhcmd1bWVudHMpOwor
ICAgICAgfQorICAgIH0KKworICAgIGZ1bmN0aW9uIHZlcnRleEF0dHJpYkRpdmlzb3IoYXR0cmli
LCBkaXZpc29yKSB7CisgICAgICBpZiAod3R1LmdldERlZmF1bHQzRENvbnRleHRWZXJzaW9uKCkg
PCAyKSB7CisgICAgICAgIGluc3RhbmNlZEV4dC52ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUoYXR0
cmliLCBkaXZpc29yKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIGdsLnZlcnRleEF0dHJpYkRp
dmlzb3IoYXR0cmliLCBkaXZpc29yKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICBjb25zdCBtYW55
RHJhd0FycmF5c0luc3RhbmNlZCA9IGZ1bmN0aW9uKCkgeworICAgICAgZm9yIChsZXQgaSA9IDA7
IGkgPCB0cmlfY291bnQ7ICsraSkgeworICAgICAgICBkcmF3QXJyYXlzSW5zdGFuY2VkKGdsLlRS
SUFOR0xFUywgZmlyc3RzW2ldLCBjb3VudHNbaV0sIDQpOworICAgICAgfQorICAgIH0KKworICAg
IGNvbnN0IG1hbnlEcmF3RWxlbWVudHNJbnN0YW5jZWQgPSBmdW5jdGlvbigpIHsKKyAgICAgIGZv
ciAobGV0IGkgPSAwOyBpIDwgdHJpX2NvdW50OyArK2kpIHsKKyAgICAgICAgZHJhd0VsZW1lbnRz
SW5zdGFuY2VkKGdsLlRSSUFOR0xFUywgY291bnRzW2ldLCBnbC5VTlNJR05FRF9TSE9SVCwgb2Zm
c2V0c1tpXSwgNCk7CisgICAgICB9CisgICAgfQorCisgICAgY29uc3QgbWFueURyYXdBcnJheXNJ
bnN0YW5jZWRFbXVsYXRlRHJhd0lEID0gZnVuY3Rpb24oKSB7CisgICAgICBmb3IgKGxldCBpID0g
MDsgaSA8IHRyaV9jb3VudDsgKytpKSB7CisgICAgICAgIGdsLnVuaWZvcm0xaShkcmF3SURMb2Nh
dGlvbiwgaSk7CisgICAgICAgIGRyYXdBcnJheXNJbnN0YW5jZWQoZ2wuVFJJQU5HTEVTLCBmaXJz
dHNbaV0sIGNvdW50c1tpXSwgNCk7CisgICAgICB9CisgICAgfQorCisgICAgY29uc3QgbWFueURy
YXdFbGVtZW50c0luc3RhbmNlZEVtdWxhdGVEcmF3SUQgPSBmdW5jdGlvbigpIHsKKyAgICAgIGZv
ciAobGV0IGkgPSAwOyBpIDwgdHJpX2NvdW50OyArK2kpIHsKKyAgICAgICAgZ2wudW5pZm9ybTFp
KGRyYXdJRExvY2F0aW9uLCBpKTsKKyAgICAgICAgZHJhd0VsZW1lbnRzSW5zdGFuY2VkKGdsLlRS
SUFOR0xFUywgY291bnRzW2ldLCBnbC5VTlNJR05FRF9TSE9SVCwgb2Zmc2V0c1tpXSwgNCk7Cisg
ICAgICB9CisgICAgfQorCisgICAgZnVuY3Rpb24gY2hlY2tEcmF3KGNvbmZpZykgeworICAgICAg
Z2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCB8IGdsLkRFUFRIX0JVRkZFUl9CSVQpOworCisg
ICAgICBpZiAoY29uZmlnLmluZGV4ZWQpIHsKKyAgICAgICAgZ2wuYmluZEJ1ZmZlcihnbC5FTEVN
RU5UX0FSUkFZX0JVRkZFUiwgaW5kZXhCdWZmZXIpOworICAgICAgICBnbC5iaW5kQnVmZmVyKGds
LkFSUkFZX0JVRkZFUiwgdmVydGV4QnVmZmVyKTsKKyAgICAgICAgZ2wuZW5hYmxlVmVydGV4QXR0
cmliQXJyYXkoMCk7CisgICAgICAgIGdsLnZlcnRleEF0dHJpYlBvaW50ZXIoMCwgMywgZ2wuRkxP
QVQsIGZhbHNlLCAwLCAwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIGdsLmJpbmRCdWZmZXIo
Z2wuQVJSQVlfQlVGRkVSLCBub25JbmRleGVkVmVydGV4QnVmZmVyKTsKKyAgICAgICAgZ2wuZW5h
YmxlVmVydGV4QXR0cmliQXJyYXkoMCk7CisgICAgICAgIGdsLnZlcnRleEF0dHJpYlBvaW50ZXIo
MCwgMywgZ2wuRkxPQVQsIGZhbHNlLCAwLCAwKTsKKyAgICAgIH0KKworICAgICAgaWYgKGNvbmZp
Zy5pbnN0YW5jZWQpIHsKKyAgICAgICAgZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIGlu
c3RhbmNlQnVmZmVyKTsKKyAgICAgICAgZ2wuZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoMSk7Cisg
ICAgICAgIGdsLnZlcnRleEF0dHJpYlBvaW50ZXIoMSwgMSwgZ2wuRkxPQVQsIGZhbHNlLCAwLCAw
KTsKKyAgICAgICAgdmVydGV4QXR0cmliRGl2aXNvcigxLCAxKTsKKyAgICAgIH0KKworICAgICAg
Y29uZmlnLmRyYXdGdW5jKCk7CisgICAgICB3dHUuZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19F
UlJPUiwgInRoZXJlIHNob3VsZCBiZSBubyBlcnJvcnMiKTsKKyAgICAgIGNoZWNrUmVzdWx0KGNv
bmZpZywgY29uZmlnLmRyYXdGdW5jLm5hbWUgKyAoCisgICAgICAgIGNvbmZpZy5pbnN0YW5jZWQg
PyAnIGluc3RhbmNlZCcgOiAnJworICAgICAgKSArICgKKyAgICAgICAgY29uZmlnLmRyYXdJRCA/
ICcgd2l0aCBnbF9EcmF3SUQnIDogJycKKyAgICAgICkpOworCisgICAgICBnbC5kaXNhYmxlVmVy
dGV4QXR0cmliQXJyYXkoMCk7CisgICAgICBnbC5kaXNhYmxlVmVydGV4QXR0cmliQXJyYXkoMSk7
CisgICAgfQorCisgICAgY29uc3Qgbm9EcmF3SURQcm9ncmFtID0gd3R1LnNldHVwUHJvZ3JhbShn
bCwgWyJ2c2hhZGVyTm9EcmF3SUQiLCAiZnNoYWRlciJdLCBbInZQb3NpdGlvbiIsICJ2SW5zdGFu
Y2UiXSwgWzAsIDFdKTsKKyAgICBleHBlY3RUcnVlKG5vRHJhd0lEUHJvZ3JhbSAhPSBudWxsLCAi
Y2FuIGNvbXBpbGUgc2ltcGxlIHByb2dyYW0iKTsKKyAgICBpZiAobm9EcmF3SURQcm9ncmFtKSB7
CisgICAgICBnbC51c2VQcm9ncmFtKG5vRHJhd0lEUHJvZ3JhbSk7CisKKyAgICAgIGlmICghaW5z
dGFuY2VkKSB7CisgICAgICAgIGNoZWNrRHJhdyh7CisgICAgICAgICAgZHJhd0Z1bmM6IG11bHRp
RHJhd0FycmF5cywKKyAgICAgICAgICBkcmF3SUQ6IGZhbHNlLAorICAgICAgICB9KTsKKyAgICAg
ICAgY2hlY2tEcmF3KHsKKyAgICAgICAgICBkcmF3RnVuYzogbXVsdGlEcmF3QXJyYXlzV2l0aE5v
bnplcm9PZmZzZXRzLAorICAgICAgICAgIGRyYXdJRDogZmFsc2UsCisgICAgICAgIH0pOworICAg
ICAgICBjaGVja0RyYXcoeworICAgICAgICAgIGRyYXdGdW5jOiBtdWx0aURyYXdFbGVtZW50cywK
KyAgICAgICAgICBpbmRleGVkOiB0cnVlLAorICAgICAgICAgIGRyYXdJRDogZmFsc2UsCisgICAg
ICAgIH0pOworICAgICAgICBjaGVja0RyYXcoeworICAgICAgICAgIGRyYXdGdW5jOiBtdWx0aURy
YXdFbGVtZW50c1dpdGhOb256ZXJvT2Zmc2V0cywKKyAgICAgICAgICBpbmRleGVkOiB0cnVlLAor
ICAgICAgICAgIGRyYXdJRDogZmFsc2UsCisgICAgICAgIH0pOworICAgICAgICBjaGVja0RyYXco
eworICAgICAgICAgIGRyYXdGdW5jOiBtYW55RHJhd0FycmF5cywKKyAgICAgICAgICBkcmF3SUQ6
IGZhbHNlLAorICAgICAgICB9KTsKKyAgICAgICAgY2hlY2tEcmF3KHsKKyAgICAgICAgICBkcmF3
RnVuYzogbWFueURyYXdFbGVtZW50cywKKyAgICAgICAgICBpbmRleGVkOiB0cnVlLAorICAgICAg
ICAgIGRyYXdJRDogZmFsc2UsCisgICAgICAgIH0pOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
Y2hlY2tEcmF3KHsKKyAgICAgICAgICBkcmF3RnVuYzogbXVsdGlEcmF3QXJyYXlzSW5zdGFuY2Vk
LAorICAgICAgICAgIGRyYXdJRDogZmFsc2UsCisgICAgICAgICAgaW5zdGFuY2VkOiB0cnVlLAor
ICAgICAgICB9KTsKKyAgICAgICAgY2hlY2tEcmF3KHsKKyAgICAgICAgICBkcmF3RnVuYzogbXVs
dGlEcmF3QXJyYXlzSW5zdGFuY2VkV2l0aE5vbnplcm9PZmZzZXRzLAorICAgICAgICAgIGRyYXdJ
RDogZmFsc2UsCisgICAgICAgICAgaW5zdGFuY2VkOiB0cnVlLAorICAgICAgICB9KTsKKyAgICAg
ICAgY2hlY2tEcmF3KHsKKyAgICAgICAgICBkcmF3RnVuYzogbXVsdGlEcmF3RWxlbWVudHNJbnN0
YW5jZWQsCisgICAgICAgICAgaW5kZXhlZDogdHJ1ZSwKKyAgICAgICAgICBkcmF3SUQ6IGZhbHNl
LAorICAgICAgICAgIGluc3RhbmNlZDogdHJ1ZSwKKyAgICAgICAgfSk7CisgICAgICAgIGNoZWNr
RHJhdyh7CisgICAgICAgICAgZHJhd0Z1bmM6IG11bHRpRHJhd0VsZW1lbnRzSW5zdGFuY2VkV2l0
aE5vbnplcm9PZmZzZXRzLAorICAgICAgICAgIGluZGV4ZWQ6IHRydWUsCisgICAgICAgICAgZHJh
d0lEOiBmYWxzZSwKKyAgICAgICAgICBpbnN0YW5jZWQ6IHRydWUsCisgICAgICAgIH0pOworICAg
ICAgICBjaGVja0RyYXcoeworICAgICAgICAgIGRyYXdGdW5jOiBtYW55RHJhd0FycmF5c0luc3Rh
bmNlZCwKKyAgICAgICAgICBkcmF3SUQ6IGZhbHNlLAorICAgICAgICAgIGluc3RhbmNlZDogdHJ1
ZSwKKyAgICAgICAgfSk7CisgICAgICAgIGNoZWNrRHJhdyh7CisgICAgICAgICAgZHJhd0Z1bmM6
IG1hbnlEcmF3RWxlbWVudHNJbnN0YW5jZWQsCisgICAgICAgICAgaW5kZXhlZDogdHJ1ZSwKKyAg
ICAgICAgICBkcmF3SUQ6IGZhbHNlLAorICAgICAgICAgIGluc3RhbmNlZDogdHJ1ZSwKKyAgICAg
ICAgfSk7CisgICAgICB9CisgICAgfQorCisgICAgY29uc3Qgd2l0aERyYXdJRFByb2dyYW0gPSB3
dHUuc2V0dXBQcm9ncmFtKGdsLCBbInZzaGFkZXJXaXRoRHJhd0lEIiwgImZzaGFkZXIiXSwgWyJ2
UG9zaXRpb24iLCAidkluc3RhbmNlIl0sIFswLCAxXSk7CisgICAgZXhwZWN0VHJ1ZSh3aXRoRHJh
d0lEUHJvZ3JhbSAhPSBudWxsLCAiY2FuIGNvbXBpbGUgcHJvZ3JhbSB3aXRoIEFOR0xFX211bHRp
X2RyYXciKTsKKyAgICBpZiAod2l0aERyYXdJRFByb2dyYW0pIHsKKyAgICAgIGdsLnVzZVByb2dy
YW0od2l0aERyYXdJRFByb2dyYW0pOworCisgICAgICBpZiAoIWluc3RhbmNlZCkgeworICAgICAg
ICBjaGVja0RyYXcoeworICAgICAgICAgIGRyYXdGdW5jOiBtdWx0aURyYXdBcnJheXMsCisgICAg
ICAgICAgZHJhd0lEOiB0cnVlLAorICAgICAgICB9KTsKKyAgICAgICAgY2hlY2tEcmF3KHsKKyAg
ICAgICAgICBkcmF3RnVuYzogbXVsdGlEcmF3QXJyYXlzV2l0aE5vbnplcm9PZmZzZXRzLAorICAg
ICAgICAgIGRyYXdJRDogdHJ1ZSwKKyAgICAgICAgfSk7CisgICAgICAgIGNoZWNrRHJhdyh7Cisg
ICAgICAgICAgZHJhd0Z1bmM6IG11bHRpRHJhd0VsZW1lbnRzLAorICAgICAgICAgIGluZGV4ZWQ6
IHRydWUsCisgICAgICAgICAgZHJhd0lEOiB0cnVlLAorICAgICAgICB9KTsKKyAgICAgICAgY2hl
Y2tEcmF3KHsKKyAgICAgICAgICBkcmF3RnVuYzogbXVsdGlEcmF3RWxlbWVudHNXaXRoTm9uemVy
b09mZnNldHMsCisgICAgICAgICAgaW5kZXhlZDogdHJ1ZSwKKyAgICAgICAgICBkcmF3SUQ6IHRy
dWUsCisgICAgICAgIH0pOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgY2hlY2tEcmF3KHsKKyAg
ICAgICAgICBkcmF3RnVuYzogbXVsdGlEcmF3QXJyYXlzSW5zdGFuY2VkLAorICAgICAgICAgIGRy
YXdJRDogdHJ1ZSwKKyAgICAgICAgICBpbnN0YW5jZWQ6IHRydWUsCisgICAgICAgIH0pOworICAg
ICAgICBjaGVja0RyYXcoeworICAgICAgICAgIGRyYXdGdW5jOiBtdWx0aURyYXdBcnJheXNJbnN0
YW5jZWRXaXRoTm9uemVyb09mZnNldHMsCisgICAgICAgICAgZHJhd0lEOiB0cnVlLAorICAgICAg
ICAgIGluc3RhbmNlZDogdHJ1ZSwKKyAgICAgICAgfSk7CisgICAgICAgIGNoZWNrRHJhdyh7Cisg
ICAgICAgICAgZHJhd0Z1bmM6IG11bHRpRHJhd0VsZW1lbnRzSW5zdGFuY2VkLAorICAgICAgICAg
IGluZGV4ZWQ6IHRydWUsCisgICAgICAgICAgZHJhd0lEOiB0cnVlLAorICAgICAgICAgIGluc3Rh
bmNlZDogdHJ1ZSwKKyAgICAgICAgfSk7CisgICAgICAgIGNoZWNrRHJhdyh7CisgICAgICAgICAg
ZHJhd0Z1bmM6IG11bHRpRHJhd0VsZW1lbnRzSW5zdGFuY2VkV2l0aE5vbnplcm9PZmZzZXRzLAor
ICAgICAgICAgIGluZGV4ZWQ6IHRydWUsCisgICAgICAgICAgZHJhd0lEOiB0cnVlLAorICAgICAg
ICAgIGluc3RhbmNlZDogdHJ1ZSwKKyAgICAgICAgfSk7CisgICAgICB9CisgICAgfQorCisgICAg
Y29uc3QgZW11bGF0ZWREcmF3SURQcm9ncmFtID0gd3R1LnNldHVwUHJvZ3JhbShnbCwgWyJ2c2hh
ZGVyRW11bGF0ZWREcmF3SUQiLCAiZnNoYWRlciJdLCBbInZQb3NpdGlvbiIsICJ2SW5zdGFuY2Ui
XSwgWzAsIDFdKTsKKyAgICBleHBlY3RUcnVlKGVtdWxhdGVkRHJhd0lEUHJvZ3JhbSAhPSBudWxs
LCAiY2FuIGNvbXBpbGUgcHJvZ3JhbSB0byBlbXVsYXRlIGdsX0RyYXdJRCIpOworICAgIGRyYXdJ
RExvY2F0aW9uID0gZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKGVtdWxhdGVkRHJhd0lEUHJvZ3JhbSwg
ImRyYXdJRCIpOworICAgIGlmIChlbXVsYXRlZERyYXdJRFByb2dyYW0pIHsKKyAgICAgIGdsLnVz
ZVByb2dyYW0oZW11bGF0ZWREcmF3SURQcm9ncmFtKTsKKworICAgICAgaWYgKCFpbnN0YW5jZWQp
IHsKKyAgICAgICAgY2hlY2tEcmF3KHsKKyAgICAgICAgICBkcmF3RnVuYzogbWFueURyYXdBcnJh
eXNFbXVsYXRlRHJhd0lELAorICAgICAgICAgIGRyYXdJRDogdHJ1ZSwKKyAgICAgICAgfSk7Cisg
ICAgICAgIGNoZWNrRHJhdyh7CisgICAgICAgICAgZHJhd0Z1bmM6IG1hbnlEcmF3RWxlbWVudHNF
bXVsYXRlRHJhd0lELAorICAgICAgICAgIGluZGV4ZWQ6IHRydWUsCisgICAgICAgICAgZHJhd0lE
OiB0cnVlLAorICAgICAgICB9KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIGNoZWNrRHJhdyh7
CisgICAgICAgICAgZHJhd0Z1bmM6IG1hbnlEcmF3QXJyYXlzSW5zdGFuY2VkRW11bGF0ZURyYXdJ
RCwKKyAgICAgICAgICBkcmF3SUQ6IHRydWUsCisgICAgICAgICAgaW5zdGFuY2VkOiB0cnVlLAor
ICAgICAgICB9KTsKKyAgICAgICAgY2hlY2tEcmF3KHsKKyAgICAgICAgICBkcmF3RnVuYzogbWFu
eURyYXdFbGVtZW50c0luc3RhbmNlZEVtdWxhdGVEcmF3SUQsCisgICAgICAgICAgaW5kZXhlZDog
dHJ1ZSwKKyAgICAgICAgICBkcmF3SUQ6IHRydWUsCisgICAgICAgICAgaW5zdGFuY2VkOiB0cnVl
LAorICAgICAgICB9KTsKKyAgICAgIH0KKyAgICB9CisgIH0KKworICBmb3IgKGxldCBpID0gMDsg
aSA8IGJ1ZmZlclVzYWdlU2V0Lmxlbmd0aDsgaSsrKSB7CisgICAgbGV0IGJ1ZmZlclVzYWdlID0g
YnVmZmVyVXNhZ2VTZXRbaV07CisgICAgZGVidWcoIlRlc3Rpbmcgd2l0aCBCdWZmZXJVc2FnZSA9
ICIgKyBidWZmZXJVc2FnZSk7CisgICAgcnVuVmFsaWRhdGlvblRlc3RzKGJ1ZmZlclVzYWdlKTsK
KyAgICBydW5TaGFkZXJUZXN0cyhidWZmZXJVc2FnZSk7CisgICAgcnVuUGl4ZWxUZXN0cyhidWZm
ZXJVc2FnZSk7CisgIH0KK30KKworcnVuVGVzdCgpOworCitjb25zdCBzdWNjZXNzZnVsbHlQYXJz
ZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvanMtdGVzdC1wb3N0
LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>417997</attachid>
            <date>2021-01-20 14:34:11 -0800</date>
            <delta_ts>2021-01-20 17:42:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219139-20210120143410.patch</filename>
            <type>text/plain</type>
            <size>88198</size>
            <attacher name="Kenneth Russell">kbr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxNjczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTVlMTk3NzBlMWJiNGQz
YTEwYjA0YTM0OGQ1ZmI5YjIxMzI4ZDRlMS4uOTcwNDFiYjMwOTQ0NDZlYjc3N2JiZGZkNTkxNGRj
NjlkOWU5ZDBlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDIxLTAxLTIwICBLZW5u
ZXRoIFJ1c3NlbGwgIDxrYnJAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFN1cHBvcnQgV0VCR0xf
bXVsdGlfZHJhdyBleHRlbnNpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxOTEzOQorCisgICAgICAgIFJldmlld2VkIGJ5IERlYW4gSmFja3Nvbi4K
KworICAgICAgICBTdXBwb3J0IHRoZSBXRUJHTF9tdWx0aV9kcmF3IGV4dGVuc2lvbiBpbiBXZWJL
aXQsIGRlbGVnYXRpbmcgdG8KKyAgICAgICAgQU5HTEUncyB1bmRlcmx5aW5nIGltcGxlbWVudGF0
aW9uLgorCisgICAgICAgIFRoaXMgZXh0ZW5zaW9uIHNpZ25pZmljYW50bHkgcmVkdWNlcyBkcmF3
LWNhbGwgb3ZlcmhlYWQgaW4gY2VydGFpbgorICAgICAgICBzY2VuYXJpb3MsIGFuZCBpcyByZXF1
ZXN0ZWQgYnkgQ0FEL0NBTSB3ZWIgYXBwcyB1c2luZyBXZWJHTC4KKworICAgICAgICBUZXN0OiB3
ZWJnbC9jb25mb3JtYW5jZS9leHRlbnNpb25zL3dlYmdsLW11bHRpLWRyYXcuaHRtbAorCisgICAg
ICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNm
aWxlbGlzdDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdDoKKyAg
ICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0RPTUNvbnZlcnRXZWJHTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0
VG9KU1ZhbHVlKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEV4dGVu
c2lvbik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRTdXBw
b3J0ZWRFeHRlbnNpb25zKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTEV4dGVuc2lvbi5o
OgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMTXVsdGlEcmF3LmNwcDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjptYWtlU3BhbldpdGhPZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0xNdWx0aURyYXc6OldlYkdMTXVsdGlEcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMTXVs
dGlEcmF3OjpnZXROYW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMTXVsdGlEcmF3
OjpzdXBwb3J0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xNdWx0aURyYXc6Om11bHRpRHJh
d0FycmF5c1dFQkdMKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMTXVsdGlEcmF3OjptdWx0aURy
YXdBcnJheXNJbnN0YW5jZWRXRUJHTCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTE11bHRpRHJh
dzo6bXVsdGlEcmF3RWxlbWVudHNXRUJHTCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTE11bHRp
RHJhdzo6bXVsdGlEcmF3RWxlbWVudHNJbnN0YW5jZWRXRUJHTCk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJHTE11bHRpRHJhdzo6dmFsaWRhdGVEcmF3Y291bnQpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViR0xNdWx0aURyYXc6OnZhbGlkYXRlT2Zmc2V0KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9X
ZWJHTE11bHRpRHJhdy5oOiBBZGRlZC4KKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTE11bHRp
RHJhdy5pZGw6IEFkZGVkLgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEV4
dGVuc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFN1
cHBvcnRlZEV4dGVuc2lvbnMpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6ZXh0ZW5zaW9uSXNFbmFibGVkKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0R0wuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGlj
c0NvbnRleHRHTEFOR0xFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjptdWx0aURyYXdBcnJheXNBTkdMRSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6bXVsdGlEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Om11bHRpRHJhd0VsZW1lbnRzQU5H
TEUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Om11bHRpRHJh
d0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvbW1vbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6bXVsdGlEcmF3QXJyYXlzQU5HTEUpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Om11bHRpRHJhd0FycmF5
c0luc3RhbmNlZEFOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjptdWx0aURyYXdFbGVtZW50c0FOR0xFKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjptdWx0aURyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKToKKwogMjAy
MS0wMS0yMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFtHUFVQ
cm9jZXNzXSBNYXJrIElPU3VyZmFjZSBiYWNraW5nIGZvciBSZW1vdGVHcmFwaGljc0NvbnRleHRH
TCdzIGRpc3BsYXlCdWZmZXIgYXMgb3duZWQgYnkgdGhlIFdlYlByb2Nlc3MKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
Q2hhbmdlTG9nCmluZGV4IDQzNWU5ODdmZDY0NDA0ODgzYjkyZDNjNGU5YTYxZGMyMTM5MDlkMzIu
LjM2Y2RkNGRiOWZlOTc0MjEyMWRkMTg1ZTIwZTNmMjUwMzkwYjkyYjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIxLTAxLTIwICBLZW5uZXRoIFJ1c3NlbGwg
IDxrYnJAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFN1cHBvcnQgV0VCR0xfbXVsdGlfZHJhdyBl
eHRlbnNpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIxOTEzOQorCisgICAgICAgIFJldmlld2VkIGJ5IERlYW4gSmFja3Nvbi4KKworICAgICAgICBU
ZWxsIHRoZSBJbnNwZWN0b3IgYWJvdXQgdGhlIG1ldGhvZCBzaWduYXR1cmVzIGluIHRoZQorICAg
ICAgICBXRUJHTF9tdWx0aV9kcmF3IGV4dGVuc2lvbi4KKworICAgICAgICAqIFVzZXJJbnRlcmZh
Y2UvTW9kZWxzL05hdGl2ZUZ1bmN0aW9uUGFyYW1ldGVycy5qczoKKwogMjAyMS0wMS0xOSAgUGF0
cmljayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3Rvcjog
Rm9udCBEZXRhaWxzIHNpZGViYXIgLSBGcmFjdGlvbmFsIHZhcmlhdGlvbiBheGlzIHJhbmdlcy9k
ZWZhdWx0IHZhbHVlcyBhcmUgcm91bmRlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggODU4OWI0MzBjZGMzMDA5ZGQx
OThkNDJlYTRkOTVjYWJhNzBiYjFlMS4uYjBmNDdmY2E4OTc1NTdhZjlkYzc0ZjE3ZDkxZmMwZTI3
YTY0YzlhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAyMS0wMS0yMCAgS2VubmV0aCBS
dXNzZWxsICA8a2JyQGNocm9taXVtLm9yZz4KKworICAgICAgICBTdXBwb3J0IFdFQkdMX211bHRp
X2RyYXcgZXh0ZW5zaW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMTkxMzkKKworICAgICAgICBSZXZpZXdlZCBieSBEZWFuIEphY2tzb24uCisKKyAg
ICAgICAgQWRkIGF1dG9tYXRpY2FsbHktZ2VuZXJhdGVkIHN0dWJzIGZvciBzdXBwb3J0aW5nIHRo
ZSBtdWx0aS1kcmF3CisgICAgICAgIGV4dGVuc2lvbiBpbiB0aGUgR1BVIHByb2Nlc3MuCisKKyAg
ICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLm1lc3Nh
Z2VzLmluOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250
ZXh0R0xGdW5jdGlvbnNHZW5lcmF0ZWQuaDoKKyAgICAgICAgKG11bHRpRHJhd0FycmF5c0FOR0xF
KToKKyAgICAgICAgKG11bHRpRHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKToKKyAgICAgICAgKG11
bHRpRHJhd0VsZW1lbnRzQU5HTEUpOgorICAgICAgICAobXVsdGlEcmF3RWxlbWVudHNJbnN0YW5j
ZWRBTkdMRSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhp
Y3NDb250ZXh0R0xQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1Jl
bW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjptdWx0aURyYXdBcnJheXNB
TkdMRSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Om11
bHRpRHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3Jh
cGhpY3NDb250ZXh0R0xQcm94eTo6bXVsdGlEcmF3RWxlbWVudHNBTkdMRSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6Om11bHRpRHJhd0VsZW1lbnRzSW5z
dGFuY2VkQU5HTEUpOgorCiAyMDIxLTAxLTIwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CiAKICAgICAgICAgW0dQVVByb2Nlc3NdIE1hcmsgSU9TdXJmYWNlIGJhY2tpbmcgZm9yIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMJ3MgZGlzcGxheUJ1ZmZlciBhcyBvd25lZCBieSB0aGUgV2Vi
UHJvY2VzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA2NDNkN2Q5YmY3OTRkMzZjZWJjZjY2MzZi
NjA2ZTQ4N2QxOTBlNGVlLi40MzRlNDljMTBiMDcxZjJkYWFjYjMyMDQ1YjAyNjdkNTI4NmIyMTk4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTU0Niw2ICsxNTQ2LDcgQEAgaWYgKEVOQUJMRV9X
RUJHTCkKICAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xFeHRlbnNpb24uY3BwCiAgICAgICAgIGh0
bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuY3BwCiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdM
TG9zZUNvbnRleHQuY3BwCisgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMTXVsdGlEcmF3LmNwcAog
ICAgICAgICBodG1sL2NhbnZhcy9XZWJHTE9iamVjdC5jcHAKICAgICAgICAgaHRtbC9jYW52YXMv
V2ViR0xQcm9ncmFtLmNwcAogICAgICAgICBodG1sL2NhbnZhcy9XZWJHTFF1ZXJ5LmNwcApAQCAt
MTYwNSw2ICsxNjA2LDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9JRExfRklMRVMKICAgICBodG1s
L2NhbnZhcy9XZWJHTERyYXdCdWZmZXJzLmlkbAogICAgIGh0bWwvY2FudmFzL1dlYkdMRnJhbWVi
dWZmZXIuaWRsCiAgICAgaHRtbC9jYW52YXMvV2ViR0xMb3NlQ29udGV4dC5pZGwKKyAgICBodG1s
L2NhbnZhcy9XZWJHTE11bHRpRHJhdy5pZGwKICAgICBodG1sL2NhbnZhcy9XZWJHTFByb2dyYW0u
aWRsCiAgICAgaHRtbC9jYW52YXMvV2ViR0xRdWVyeS5pZGwKICAgICBodG1sL2NhbnZhcy9XZWJH
TFJlbmRlcmJ1ZmZlci5pZGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLWlucHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1pbnB1
dC54Y2ZpbGVsaXN0CmluZGV4IDgzMTdkNTVkYmFhOGQ3NWUzZDE5NTJmZTVkOTBiNjI2ZWRmNzY4
NTMuLjcyMTUzY2I0OTI5NzRlZTFiODMzNTNlMGFhZTA3NzE3ZjhjOTYyYTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKKysrIGIvU291
cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdApAQCAtMTAxOCw2ICsx
MDE4LDcgQEAgJChQUk9KRUNUX0RJUikvaHRtbC9jYW52YXMvV2ViR0xEZXB0aFRleHR1cmUuaWRs
CiAkKFBST0pFQ1RfRElSKS9odG1sL2NhbnZhcy9XZWJHTERyYXdCdWZmZXJzLmlkbAogJChQUk9K
RUNUX0RJUikvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5pZGwKICQoUFJPSkVDVF9ESVIp
L2h0bWwvY2FudmFzL1dlYkdMTG9zZUNvbnRleHQuaWRsCiskKFBST0pFQ1RfRElSKS9odG1sL2Nh
bnZhcy9XZWJHTE11bHRpRHJhdy5pZGwKICQoUFJPSkVDVF9ESVIpL2h0bWwvY2FudmFzL1dlYkdM
UHJvZ3JhbS5pZGwKICQoUFJPSkVDVF9ESVIpL2h0bWwvY2FudmFzL1dlYkdMUXVlcnkuaWRsCiAk
KFBST0pFQ1RfRElSKS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmJ1ZmZlci5pZGwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0IGIvU291
cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKaW5kZXggMzJlMGEy
OTFmODE3NjI0YWFhNWYxYTBjZGYxN2M1NDg4NzUwYmE3OS4uMzcwOTQ5ODk5ODUzNmM3NjQ2NzQ1
NTRkN2EwZDAwN2JmYTVjM2I4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNv
dXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJj
ZXMtb3V0cHV0LnhjZmlsZWxpc3QKQEAgLTIzNTEsNiArMjM1MSw4IEBAICQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR0xGcmFtZWJ1ZmZlci5jcHAKICQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR0xGcmFtZWJ1
ZmZlci5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dl
YkdMTG9zZUNvbnRleHQuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU1dlYkdMTG9zZUNvbnRleHQuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHTE11bHRpRHJhdy5jcHAKKyQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2ViR0xNdWx0aURyYXcuaAogJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNXZWJHTFByb2dyYW0uY3BwCiAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdMUHJvZ3Jh
bS5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYkdM
UXVlcnkuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtl
IGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCA5NTFhYjZiMGZjNDRi
Y2ZhZGNhMTBlM2Q4Y2NiNzliNzdjNjEwZjI3Li5jNzNmMDYwMmFjMjcwNjQyNWMyN2VlZmIyYTdm
YjZjZDAzMzdhMTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5t
YWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTk2Miw2ICs5
NjIsNyBAQCBKU19CSU5ESU5HX0lETFMgOj0gXAogICAgICQoV2ViQ29yZSkvaHRtbC9jYW52YXMv
V2ViR0xEcmF3QnVmZmVycy5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC9jYW52YXMvV2ViR0xG
cmFtZWJ1ZmZlci5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRtbC9jYW52YXMvV2ViR0xMb3NlQ29u
dGV4dC5pZGwgXAorICAgICQoV2ViQ29yZSkvaHRtbC9jYW52YXMvV2ViR0xNdWx0aURyYXcuaWRs
IFwKICAgICAkKFdlYkNvcmUpL2h0bWwvY2FudmFzL1dlYkdMUHJvZ3JhbS5pZGwgXAogICAgICQo
V2ViQ29yZSkvaHRtbC9jYW52YXMvV2ViR0xRdWVyeS5pZGwgXAogICAgICQoV2ViQ29yZSkvaHRt
bC9jYW52YXMvV2ViR0xSZW5kZXJidWZmZXIuaWRsIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggMWI5ZjBk
ODM3ODI5YmRmM2RhNTg1ZTdmZDIzZTMxMjM2NmE3YTVmZi4uN2FhNTViYjQzNDY4ZDczYzc0ZDhl
YmNkYzQ3MjBiYWJhMjhlNTJmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50
eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTEzNDUsNiArMTM0NSw3IEBA
IGh0bWwvY2FudmFzL1dlYkdMRHJhd0J1ZmZlcnMuY3BwCiBodG1sL2NhbnZhcy9XZWJHTEV4dGVu
c2lvbi5jcHAKIGh0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuY3BwCiBodG1sL2NhbnZhcy9X
ZWJHTExvc2VDb250ZXh0LmNwcAoraHRtbC9jYW52YXMvV2ViR0xNdWx0aURyYXcuY3BwCiBodG1s
L2NhbnZhcy9XZWJHTE9iamVjdC5jcHAKIGh0bWwvY2FudmFzL1dlYkdMUHJvZ3JhbS5jcHAKIGh0
bWwvY2FudmFzL1dlYkdMUXVlcnkuY3BwCkBAIC0zNjU4LDYgKzM2NTksNyBAQCBKU1dlYkdMRGVw
dGhUZXh0dXJlLmNwcAogSlNXZWJHTERyYXdCdWZmZXJzLmNwcAogSlNXZWJHTEZyYW1lYnVmZmVy
LmNwcAogSlNXZWJHTExvc2VDb250ZXh0LmNwcAorSlNXZWJHTE11bHRpRHJhdy5jcHAKIEpTV2Vi
R0xQcm9ncmFtLmNwcAogSlNXZWJHTFF1ZXJ5LmNwcAogSlNXZWJHTFJlbmRlcmJ1ZmZlci5jcHAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCAwNzhiMjZiMDY3OGI1MWI1OTQ1NDkyZDk5Y2Y5MTNkZDZiMDJiYTU2Li5jODM4MGUxYjU2
YTg4NTkyZjM5NGI3ZjYzOGUzOGFlM2NmNTg5NDdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMDcyLDYgKzIwNzIsNyBAQAog
CQk2RUJGMEU1NTEyQTg5Mjk4MDBEQjE3MDkgLyogV2ViR0xFeHRlbnNpb24uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFQkYwRTUzMTJBODkyOTgwMERC
MTcwOSAvKiBXZWJHTEV4dGVuc2lvbi5oICovOyB9OwogCQk2RUJGMEU3NzEyQTk4Njg4MDBEQjE3
MDkgLyogSlNPRVNUZXh0dXJlRmxvYXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDZFQkYwRTc1MTJBOTg2ODgwMERCMTcwOSAvKiBKU09FU1RleHR1cmVG
bG9hdC5oICovOyB9OwogCQk2RUJGMEU3NzEyQTk4Njg4MDBEQjE3MEEgLyogSlNXZWJHTERyYXdC
dWZmZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2
RUJGMEU3NTEyQTk4Njg4MDBEQjE3MEEgLyogSlNXZWJHTERyYXdCdWZmZXJzLmggKi87IH07CisJ
CTZFQzM2MkQ5MjVCNEM1NDUwMDkzN0Y4NSAvKiBXZWJHTE11bHRpRHJhdy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkVDMzYyRDcyNUI0QzUzRTAwOTM3
Rjg1IC8qIFdlYkdMTXVsdGlEcmF3LmggKi87IH07CiAJCTZFQzQ4MEEyMTZFQTYzOEEwMEE0OERD
QiAvKiBGbG9hdFBvbHlnb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDZFQzQ4MEEwMTZFQTYzOEEwMEE0OERDQiAvKiBGbG9hdFBvbHlnb24uaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2RUQ4NzhDNTE0
NzQ5M0Y0MDA0QzM1OTcgLyogUmVuZGVyVGFibGVDYXB0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RUQ4NzhDMzE0NzQ5M0Y0MDA0QzM1OTcgLyog
UmVuZGVyVGFibGVDYXB0aW9uLmggKi87IH07CiAJCTZFRDhDMzdBMTgzQkZGOEMwMDlFNTNCRCAv
KiBCb3hTaGFwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNkVEOEMzNzgxODNCRkY4QzAwOUU1M0JEIC8qIEJveFNoYXBlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTk3NTYsNiArOTc1Nyw4IEBACiAJ
CTZFNTM4OEUxMjQ1OEFFMUQwMDc2QUUwMyAvKiBXZWJHTENvbG9yQnVmZmVyRmxvYXQuaWRsICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IFdlYkdMQ29sb3JCdWZmZXJGbG9hdC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTZFNTc2QkMzMjRFQjUwOUMwMDk0RDRBQSAvKiBKU0hUTUxDYW52YXNFbGVtZW50Q3VzdG9t
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSFRNTENhbnZhc0Vs
ZW1lbnRDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RTY3RDJBODEy
ODBFOEJEMDA4NzU4RjcgLyogRXh0ZW5zaW9uc0dMLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEV4dGVuc2lvbnNHTC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2
RTdDQTMwQTI1QjREMjhBMDA0QTkxM0UgLyogSlNXZWJHTE11bHRpRHJhdy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBKU1dlYkdMTXVsdGlEcmF3Lmg7IHBhdGggPSBKU1dlYkdMTXVsdGlEcmF3Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZFN0NBMzBCMjVCNEQzMjgwMDRBOTEzRSAvKiBKU1dl
YkdMTXVsdGlEcmF3LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEpTV2ViR0xNdWx0aURyYXcuY3Bw
OyBwYXRoID0gSlNXZWJHTE11bHRpRHJhdy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTZFODRFOURFMTc2NjhCQUQwMDgxNUI2OCAvKiBSYXN0ZXJTaGFwZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSYXN0ZXJTaGFwZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTZFODRFOURGMTc2NjhCQUQwMDgxNUI2OCAvKiBSYXN0ZXJTaGFw
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSYXN0ZXJTaGFwZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RThBQ0RFOTIzMzQ1Q0FGMDAyNEFBRjUgLyogV2Vi
R0xDb21wcmVzc2VkVGV4dHVyZUVUQy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHTENvbXBy
ZXNzZWRUZXh0dXJlRVRDLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTk3NzAs
NiArOTc3Myw5IEBACiAJCTZFQkYwRTc0MTJBOTg2ODgwMERCMTcwQSAvKiBKU1dlYkdMRHJhd0J1
ZmZlcnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXZWJHTERy
YXdCdWZmZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkVCRjBFNzUxMkE5
ODY4ODAwREIxNzA5IC8qIEpTT0VTVGV4dHVyZUZsb2F0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEpTT0VTVGV4dHVyZUZsb2F0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTZFQkYwRTc1MTJBOTg2ODgwMERCMTcwQSAvKiBKU1dlYkdMRHJhd0J1ZmZlcnMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNXZWJHTERyYXdCdWZmZXJzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZFQzM2MkQ1MjVCNEM1M0QwMDkzN0Y4NSAvKiBX
ZWJHTE11bHRpRHJhdy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBX
ZWJHTE11bHRpRHJhdy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZFQzM2MkQ3
MjVCNEM1M0UwMDkzN0Y4NSAvKiBXZWJHTE11bHRpRHJhdy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXZWJHTE11bHRpRHJhdy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk2RUMzNjJEODI1QjRDNTNFMDA5MzdGODUgLyogV2ViR0xNdWx0aURyYXcuaWRsICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dDsgcGF0aCA9IFdlYkdMTXVsdGlEcmF3LmlkbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNkVDNDgwOUYxNkVBNjM4QTAwQTQ4RENCIC8qIEZsb2F0UG9seWdvbi5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGbG9hdFBvbHlnb24uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RUM0ODBBMDE2RUE2MzhBMDBBNDhEQ0IgLyog
RmxvYXRQb2x5Z29uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZsb2F0UG9s
eWdvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RUQ4NzhDMjE0NzQ5M0Y0MDA0
QzM1OTcgLyogUmVuZGVyVGFibGVDYXB0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFJlbmRlclRhYmxlQ2FwdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0xOTk4OSw2ICsxOTk5NSw5IEBACiAJCQkJOTNGMUQ1QjcxMkQ1MzJDNDAwODMy
QkVDIC8qIFdlYkdMTG9zZUNvbnRleHQuY3BwICovLAogCQkJCTkzRjFENUI4MTJENTMyQzQwMDgz
MkJFQyAvKiBXZWJHTExvc2VDb250ZXh0LmggKi8sCiAJCQkJOTNGMUQ1QjkxMkQ1MzJDNDAwODMy
QkVDIC8qIFdlYkdMTG9zZUNvbnRleHQuaWRsICovLAorCQkJCTZFQzM2MkQ1MjVCNEM1M0QwMDkz
N0Y4NSAvKiBXZWJHTE11bHRpRHJhdy5jcHAgKi8sCisJCQkJNkVDMzYyRDcyNUI0QzUzRTAwOTM3
Rjg1IC8qIFdlYkdMTXVsdGlEcmF3LmggKi8sCisJCQkJNkVDMzYyRDgyNUI0QzUzRTAwOTM3Rjg1
IC8qIFdlYkdMTXVsdGlEcmF3LmlkbCAqLywKIAkJCQk0OUM3QjlCNDEwNDJEMzJGMDAwOUQ0NDcg
LyogV2ViR0xPYmplY3QuY3BwICovLAogCQkJCTQ5QzdCOUI1MTA0MkQzMkYwMDA5RDQ0NyAvKiBX
ZWJHTE9iamVjdC5oICovLAogCQkJCTQ5QzdCOUI2MTA0MkQzMkYwMDA5RDQ0NyAvKiBXZWJHTFBy
b2dyYW0uY3BwICovLApAQCAtMjQ5ODcsNiArMjQ5OTYsOCBAQAogCQkJCTQ5QzdCOTg1MTA0MkQy
RDMwMDA5RDQ0NyAvKiBKU1dlYkdMRnJhbWVidWZmZXIuaCAqLywKIAkJCQk5M0YxRDVCRTEyRDUz
MzU2MDA4MzJCRUMgLyogSlNXZWJHTExvc2VDb250ZXh0LmNwcCAqLywKIAkJCQk5M0YxRDVCRjEy
RDUzMzU2MDA4MzJCRUMgLyogSlNXZWJHTExvc2VDb250ZXh0LmggKi8sCisJCQkJNkU3Q0EzMEIy
NUI0RDMyODAwNEE5MTNFIC8qIEpTV2ViR0xNdWx0aURyYXcuY3BwICovLAorCQkJCTZFN0NBMzBB
MjVCNEQyOEEwMDRBOTEzRSAvKiBKU1dlYkdMTXVsdGlEcmF3LmggKi8sCiAJCQkJNDlDN0I5ODgx
MDQyRDJEMzAwMDlENDQ3IC8qIEpTV2ViR0xQcm9ncmFtLmNwcCAqLywKIAkJCQk0OUM3Qjk4OTEw
NDJEMkQzMDAwOUQ0NDcgLyogSlNXZWJHTFByb2dyYW0uaCAqLywKIAkJCQk2Rjk5NUEyNzFBNzA4
MzM3MDBBNzM1RjQgLyogSlNXZWJHTFF1ZXJ5LmNwcCAqLywKQEAgLTM1Mjk0LDYgKzM1MzA1LDcg
QEAKIAkJCQk0OUM3QjlDRjEwNDJEMzJGMDAwOUQ0NDcgLyogV2ViR0xGcmFtZWJ1ZmZlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNDlGRkJGM0YxMUM5M0VFMzAwNkE3MTE4IC8qIFdlYkdMTGF5ZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTkzRjFENUJCMTJENTMyQzQwMDgzMkJFQyAvKiBXZWJHTExv
c2VDb250ZXh0LmggaW4gSGVhZGVycyAqLywKKwkJCQk2RUMzNjJEOTI1QjRDNTQ1MDA5MzdGODUg
LyogV2ViR0xNdWx0aURyYXcuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5QzdCOUQ1MTA0MkQzMkYw
MDA5RDQ0NyAvKiBXZWJHTE9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlDN0I5RDcxMDQy
RDMyRjAwMDlENDQ3IC8qIFdlYkdMUHJvZ3JhbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkY5OTVB
MjAxQTcwNzhCMTAwQTczNUY0IC8qIFdlYkdMUXVlcnkuaCBpbiBIZWFkZXJzICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0V2ViR0wuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0V2ViR0wuY3BwCmluZGV4IGYz
ZWIzNmRhY2I4OWQ5MTU2YTU5NmViOGUxM2I0ZDY1MTUzN2Y4ZWQuLmRkMjk2ODhjMmJjNmM4ODAw
NTRlMTg3ZjFkMzA5YWE4OTA2MmU4ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NQ29udmVydFdlYkdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUNvbnZlcnRXZWJHTC5jcHAKQEAgLTYzLDYgKzYzLDcgQEAKICNpbmNsdWRlICJK
U1dlYkdMRHJhd0J1ZmZlcnMuaCIKICNpbmNsdWRlICJKU1dlYkdMRnJhbWVidWZmZXIuaCIKICNp
bmNsdWRlICJKU1dlYkdMTG9zZUNvbnRleHQuaCIKKyNpbmNsdWRlICJKU1dlYkdMTXVsdGlEcmF3
LmgiCiAjaW5jbHVkZSAiSlNXZWJHTFByb2dyYW0uaCIKICNpbmNsdWRlICJKU1dlYkdMUmVuZGVy
YnVmZmVyLmgiCiAjaW5jbHVkZSAiSlNXZWJHTFNhbXBsZXIuaCIKQEAgLTIzMyw2ICsyMzQsOCBA
QCBKU1ZhbHVlIGNvbnZlcnRUb0pTVmFsdWUoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTRE9NR2xvYmFsT2JqZWN0JgogICAgICAgICByZXR1cm4gdG9KUygmbGV4aWNhbEds
b2JhbE9iamVjdCwgJmdsb2JhbE9iamVjdCwgc3RhdGljX2Nhc3Q8V2ViR0xDb2xvckJ1ZmZlckZs
b2F0Jj4oZXh0ZW5zaW9uKSk7CiAgICAgY2FzZSBXZWJHTEV4dGVuc2lvbjo6RVhUQ29sb3JCdWZm
ZXJGbG9hdE5hbWU6CiAgICAgICAgIHJldHVybiB0b0pTKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCAm
Z2xvYmFsT2JqZWN0LCBzdGF0aWNfY2FzdDxFWFRDb2xvckJ1ZmZlckZsb2F0Jj4oZXh0ZW5zaW9u
KSk7CisgICAgY2FzZSBXZWJHTEV4dGVuc2lvbjo6V2ViR0xNdWx0aURyYXdOYW1lOgorICAgICAg
ICByZXR1cm4gdG9KUygmbGV4aWNhbEdsb2JhbE9iamVjdCwgJmdsb2JhbE9iamVjdCwgc3RhdGlj
X2Nhc3Q8V2ViR0xNdWx0aURyYXcmPihleHRlbnNpb24pKTsKICAgICB9CiAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIGpzTnVsbCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCBiMjY3ODVj
N2EzNmI1ODg0MjNhNDczMzExZmM2MDNmYjUyMTU0OTBiLi5hNWU4OWMyOTZkMTZlYzEwMDk0Y2Uy
NjkwZmU4ZThjMzlhZTM5Y2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtNTgsNiArNTgsNyBAQAogI2luY2x1
ZGUgIldlYkdMRGVidWdSZW5kZXJlckluZm8uaCIKICNpbmNsdWRlICJXZWJHTERlYnVnU2hhZGVy
cy5oIgogI2luY2x1ZGUgIldlYkdMTG9zZUNvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJHTE11bHRp
RHJhdy5oIgogI2luY2x1ZGUgIldlYkdMUXVlcnkuaCIKICNpbmNsdWRlICJXZWJHTFNhbXBsZXIu
aCIKICNpbmNsdWRlICJXZWJHTFN5bmMuaCIKQEAgLTI2OTgsNiArMjY5OSw3IEBAIFdlYkdMRXh0
ZW5zaW9uKiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRFeHRlbnNpb24oY29uc3QgU3RyaW5n
JiBuYW1lKQogICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoRVhUQ29sb3JCdWZmZXJIYWxmRmxvYXQs
IG1fZXh0Q29sb3JCdWZmZXJIYWxmRmxvYXQsICJFWFRfY29sb3JfYnVmZmVyX2hhbGZfZmxvYXQi
LCBFWFRDb2xvckJ1ZmZlckhhbGZGbG9hdDo6c3VwcG9ydGVkKCp0aGlzKSk7CiAgICAgRU5BQkxF
X0lGX1JFUVVFU1RFRChFWFRGbG9hdEJsZW5kLCBtX2V4dEZsb2F0QmxlbmQsICJFWFRfZmxvYXRf
YmxlbmQiLCBFWFRGbG9hdEJsZW5kOjpzdXBwb3J0ZWQoKnRoaXMpKTsKICAgICBFTkFCTEVfSUZf
UkVRVUVTVEVEKEtIUlBhcmFsbGVsU2hhZGVyQ29tcGlsZSwgbV9raHJQYXJhbGxlbFNoYWRlckNv
bXBpbGUsICJLSFJfcGFyYWxsZWxfc2hhZGVyX2NvbXBpbGUiLCBLSFJQYXJhbGxlbFNoYWRlckNv
bXBpbGU6OnN1cHBvcnRlZCgqdGhpcykpOworICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoV2ViR0xN
dWx0aURyYXcsIG1fd2ViZ2xNdWx0aURyYXcsICJXRUJHTF9tdWx0aV9kcmF3IiwgdHJ1ZSk7CiAg
ICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKQEAgLTI3NDYsNiArMjc0OCw4IEBAIE9wdGlvbmFsPFZl
Y3RvcjxTdHJpbmc+PiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpnZXRTdXBwb3J0ZWRFeHRlbnNp
b25zKCkKICAgICAgICAgcmVzdWx0LmFwcGVuZCgiRVhUX2Zsb2F0X2JsZW5kIl9zKTsKICAgICBp
ZiAoS0hSUGFyYWxsZWxTaGFkZXJDb21waWxlOjpzdXBwb3J0ZWQoKnRoaXMpKQogICAgICAgICBy
ZXN1bHQuYXBwZW5kKCJLSFJfcGFyYWxsZWxfc2hhZGVyX2NvbXBpbGUiX3MpOworICAgIGlmIChX
ZWJHTE11bHRpRHJhdzo6c3VwcG9ydGVkKCp0aGlzKSkKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgi
V0VCR0xfbXVsdGlfZHJhdyJfcyk7CiAKICAgICByZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xFeHRlbnNpb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRXh0ZW5zaW9uLmgKaW5kZXggNTgwMGE3MTMxM2JjZjhh
MDRkZjU2YWYxNzJiMDhmZjU5MGM5MTcxNy4uMjIzOWFjYmFlOWExNjRjMDNmZGZkZDZlMzQ0YTVk
NTg3MzZiN2VhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xF
eHRlbnNpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEV4dGVuc2lv
bi5oCkBAIC02OSw2ICs2OSw3IEBAIHB1YmxpYzoKICAgICAgICAgRVhURmxvYXRCbGVuZE5hbWUs
CiAgICAgICAgIFdlYkdMQ29sb3JCdWZmZXJGbG9hdE5hbWUsCiAgICAgICAgIEVYVENvbG9yQnVm
ZmVyRmxvYXROYW1lLAorICAgICAgICBXZWJHTE11bHRpRHJhd05hbWUsCiAgICAgfTsKIAogICAg
IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqIGNvbnRleHQoKSB7IHJldHVybiBtX2NvbnRleHQ7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMTXVsdGlEcmF3
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMTXVsdGlEcmF3LmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi45ZGRkOTczMzQwZjU1ZTZmYjY2Mzk3NzgzMGNlNGFmNmYzZWFkNDJiCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xNdWx0aURyYXcuY3Bw
CkBAIC0wLDAgKzEsMTQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Cisg
KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5B
QkxFKFdFQkdMKQorI2luY2x1ZGUgIldlYkdMTXVsdGlEcmF3LmgiCisKKyNpbmNsdWRlICJFeHRl
bnNpb25zR0wuaCIKKyNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK1dURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChXZWJHTE11bHRpRHJh
dyk7CisKK3N0YXRpYyBHQ0dMU3Bhbjxjb25zdCBpbnQ+IG1ha2VTcGFuV2l0aE9mZnNldChXZWJH
TE11bHRpRHJhdzo6SW50MzJMaXN0JiBsaXN0LCBHQ0dMdWludCBvZmZzZXQpCit7CisgICAgcmV0
dXJuIG1ha2VHQ0dMU3BhbihsaXN0LmRhdGEoKSArIG9mZnNldCwgbGlzdC5sZW5ndGgoKSAtIG9m
ZnNldCk7Cit9CisKK1dlYkdMTXVsdGlEcmF3OjpXZWJHTE11bHRpRHJhdyhXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlJiBjb250ZXh0KQorICAgIDogV2ViR0xFeHRlbnNpb24oY29udGV4dCkKK3sK
KyAgICBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVF
bmFibGVkKCJHTF9BTkdMRV9tdWx0aV9kcmF3Il9zKTsKKyAgICBjb250ZXh0LmdyYXBoaWNzQ29u
dGV4dEdMKCktPmdldEV4dGVuc2lvbnMoKS5lbnN1cmVFbmFibGVkKCJHTF9BTkdMRV9pbnN0YW5j
ZWRfYXJyYXlzIl9zKTsKK30KKworV2ViR0xNdWx0aURyYXc6On5XZWJHTE11bHRpRHJhdygpID0g
ZGVmYXVsdDsKKworV2ViR0xFeHRlbnNpb246OkV4dGVuc2lvbk5hbWUgV2ViR0xNdWx0aURyYXc6
OmdldE5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBXZWJHTE11bHRpRHJhd05hbWU7Cit9CisK
K2Jvb2wgV2ViR0xNdWx0aURyYXc6OnN1cHBvcnRlZChjb25zdCBXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlJiBjb250ZXh0KQoreworICAgIHJldHVybiBjb250ZXh0LmdyYXBoaWNzQ29udGV4dEdM
KCktPmdldEV4dGVuc2lvbnMoKS5zdXBwb3J0cygiR0xfQU5HTEVfbXVsdGlfZHJhdyJfcykKKyAg
ICAgICAgJiYgY29udGV4dC5ncmFwaGljc0NvbnRleHRHTCgpLT5nZXRFeHRlbnNpb25zKCkuc3Vw
cG9ydHMoIkdMX0FOR0xFX2luc3RhbmNlZF9hcnJheXMiX3MpOworfQorCit2b2lkIFdlYkdMTXVs
dGlEcmF3OjptdWx0aURyYXdBcnJheXNXRUJHTChHQ0dMZW51bSBtb2RlLCBJbnQzMkxpc3QgZmly
c3RzTGlzdCwgR0NHTHVpbnQgZmlyc3RzT2Zmc2V0LCBJbnQzMkxpc3QgY291bnRzTGlzdCwgR0NH
THVpbnQgY291bnRzT2Zmc2V0LCBHQ0dMc2l6ZWkgZHJhd2NvdW50KQoreworICAgIGlmICghbV9j
b250ZXh0IHx8IG1fY29udGV4dC0+aXNDb250ZXh0TG9zdCgpKQorICAgICAgICByZXR1cm47CisK
KyAgICBpZiAoIXZhbGlkYXRlRHJhd2NvdW50KCJtdWx0aURyYXdBcnJheXNXRUJHTCIsIGRyYXdj
b3VudCkKKyAgICAgICAgfHwgIXZhbGlkYXRlT2Zmc2V0KCJtdWx0aURyYXdBcnJheXNXRUJHTCIs
ICJmaXJzdHNPZmZzZXQgb3V0IG9mIGJvdW5kcyIsIGZpcnN0c0xpc3QubGVuZ3RoKCksIGZpcnN0
c09mZnNldCwgZHJhd2NvdW50KQorICAgICAgICB8fCAhdmFsaWRhdGVPZmZzZXQoIm11bHRpRHJh
d0FycmF5c1dFQkdMIiwgImNvdW50c09mZnNldCBvdXQgb2YgYm91bmRzIiwgY291bnRzTGlzdC5s
ZW5ndGgoKSwgY291bnRzT2Zmc2V0LCBkcmF3Y291bnQpKSB7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBtX2NvbnRleHQtPmdyYXBoaWNzQ29udGV4dEdMKCktPm11bHRpRHJhd0FycmF5
c0FOR0xFKG1vZGUsIG1ha2VTcGFuV2l0aE9mZnNldChmaXJzdHNMaXN0LCBmaXJzdHNPZmZzZXQp
LCBtYWtlU3BhbldpdGhPZmZzZXQoY291bnRzTGlzdCwgY291bnRzT2Zmc2V0KSwgZHJhd2NvdW50
KTsKK30KKwordm9pZCBXZWJHTE11bHRpRHJhdzo6bXVsdGlEcmF3QXJyYXlzSW5zdGFuY2VkV0VC
R0woR0NHTGVudW0gbW9kZSwgSW50MzJMaXN0IGZpcnN0c0xpc3QsIEdDR0x1aW50IGZpcnN0c09m
ZnNldCwgSW50MzJMaXN0IGNvdW50c0xpc3QsIEdDR0x1aW50IGNvdW50c09mZnNldCwgSW50MzJM
aXN0IGluc3RhbmNlQ291bnRzTGlzdCwgR0NHTHVpbnQgaW5zdGFuY2VDb3VudHNPZmZzZXQsIEdD
R0xzaXplaSBkcmF3Y291bnQpCit7CisgICAgaWYgKCFtX2NvbnRleHQgfHwgbV9jb250ZXh0LT5p
c0NvbnRleHRMb3N0KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghdmFsaWRhdGVEcmF3
Y291bnQoIm11bHRpRHJhd0FycmF5c0luc3RhbmNlZFdFQkdMIiwgZHJhd2NvdW50KQorICAgICAg
ICB8fCAhdmFsaWRhdGVPZmZzZXQoIm11bHRpRHJhd0FycmF5c0luc3RhbmNlZFdFQkdMIiwgImZp
cnN0c09mZnNldCBvdXQgb2YgYm91bmRzIiwgZmlyc3RzTGlzdC5sZW5ndGgoKSwgZmlyc3RzT2Zm
c2V0LCBkcmF3Y291bnQpCisgICAgICAgIHx8ICF2YWxpZGF0ZU9mZnNldCgibXVsdGlEcmF3QXJy
YXlzSW5zdGFuY2VkV0VCR0wiLCAiY291bnRzT2Zmc2V0IG91dCBvZiBib3VuZHMiLCBjb3VudHNM
aXN0Lmxlbmd0aCgpLCBjb3VudHNPZmZzZXQsIGRyYXdjb3VudCkKKyAgICAgICAgfHwgIXZhbGlk
YXRlT2Zmc2V0KCJtdWx0aURyYXdBcnJheXNJbnN0YW5jZWRXRUJHTCIsICJpbnN0YW5jZUNvdW50
c09mZnNldCBvdXQgb2YgYm91bmRzIiwgaW5zdGFuY2VDb3VudHNMaXN0Lmxlbmd0aCgpLCBpbnN0
YW5jZUNvdW50c09mZnNldCwgZHJhd2NvdW50KSkgeworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgbV9jb250ZXh0LT5ncmFwaGljc0NvbnRleHRHTCgpLT5tdWx0aURyYXdBcnJheXNJbnN0
YW5jZWRBTkdMRShtb2RlLCBtYWtlU3BhbldpdGhPZmZzZXQoZmlyc3RzTGlzdCwgZmlyc3RzT2Zm
c2V0KSwgbWFrZVNwYW5XaXRoT2Zmc2V0KGNvdW50c0xpc3QsIGNvdW50c09mZnNldCksIG1ha2VT
cGFuV2l0aE9mZnNldChpbnN0YW5jZUNvdW50c0xpc3QsIGluc3RhbmNlQ291bnRzT2Zmc2V0KSwg
ZHJhd2NvdW50KTsKK30KKwordm9pZCBXZWJHTE11bHRpRHJhdzo6bXVsdGlEcmF3RWxlbWVudHNX
RUJHTChHQ0dMZW51bSBtb2RlLCBJbnQzMkxpc3QgY291bnRzTGlzdCwgR0NHTHVpbnQgY291bnRz
T2Zmc2V0LCBHQ0dMZW51bSB0eXBlLCBJbnQzMkxpc3Qgb2Zmc2V0c0xpc3QsIEdDR0x1aW50IG9m
ZnNldHNPZmZzZXQsIEdDR0xzaXplaSBkcmF3Y291bnQpCit7CisgICAgaWYgKCFtX2NvbnRleHQg
fHwgbV9jb250ZXh0LT5pc0NvbnRleHRMb3N0KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlm
ICghdmFsaWRhdGVEcmF3Y291bnQoIm11bHRpRHJhd0VsZW1lbnRzV0VCR0wiLCBkcmF3Y291bnQp
CisgICAgICAgIHx8ICF2YWxpZGF0ZU9mZnNldCgibXVsdGlEcmF3RWxlbWVudHNXRUJHTCIsICJj
b3VudHNPZmZzZXQgb3V0IG9mIGJvdW5kcyIsIGNvdW50c0xpc3QubGVuZ3RoKCksIGNvdW50c09m
ZnNldCwgZHJhd2NvdW50KQorICAgICAgICB8fCAhdmFsaWRhdGVPZmZzZXQoIm11bHRpRHJhd0Vs
ZW1lbnRzV0VCR0wiLCAib2Zmc2V0c09mZnNldCBvdXQgb2YgYm91bmRzIiwgb2Zmc2V0c0xpc3Qu
bGVuZ3RoKCksIG9mZnNldHNPZmZzZXQsIGRyYXdjb3VudCkpIHsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIG1fY29udGV4dC0+Z3JhcGhpY3NDb250ZXh0R0woKS0+bXVsdGlEcmF3RWxl
bWVudHNBTkdMRShtb2RlLCBtYWtlU3BhbldpdGhPZmZzZXQoY291bnRzTGlzdCwgY291bnRzT2Zm
c2V0KSwgdHlwZSwgbWFrZVNwYW5XaXRoT2Zmc2V0KG9mZnNldHNMaXN0LCBvZmZzZXRzT2Zmc2V0
KSwgZHJhd2NvdW50KTsKK30KKwordm9pZCBXZWJHTE11bHRpRHJhdzo6bXVsdGlEcmF3RWxlbWVu
dHNJbnN0YW5jZWRXRUJHTChHQ0dMZW51bSBtb2RlLCBJbnQzMkxpc3QgY291bnRzTGlzdCwgR0NH
THVpbnQgY291bnRzT2Zmc2V0LCBHQ0dMZW51bSB0eXBlLCBJbnQzMkxpc3Qgb2Zmc2V0c0xpc3Qs
IEdDR0x1aW50IG9mZnNldHNPZmZzZXQsIEludDMyTGlzdCBpbnN0YW5jZUNvdW50c0xpc3QsIEdD
R0x1aW50IGluc3RhbmNlQ291bnRzT2Zmc2V0LCBHQ0dMc2l6ZWkgZHJhd2NvdW50KQoreworICAg
IGlmICghbV9jb250ZXh0IHx8IG1fY29udGV4dC0+aXNDb250ZXh0TG9zdCgpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBpZiAoIXZhbGlkYXRlRHJhd2NvdW50KCJtdWx0aURyYXdFbGVtZW50c1dF
QkdMIiwgZHJhd2NvdW50KQorICAgICAgICB8fCAhdmFsaWRhdGVPZmZzZXQoIm11bHRpRHJhd0Vs
ZW1lbnRzV0VCR0wiLCAiY291bnRzT2Zmc2V0IG91dCBvZiBib3VuZHMiLCBjb3VudHNMaXN0Lmxl
bmd0aCgpLCBjb3VudHNPZmZzZXQsIGRyYXdjb3VudCkKKyAgICAgICAgfHwgIXZhbGlkYXRlT2Zm
c2V0KCJtdWx0aURyYXdFbGVtZW50c1dFQkdMIiwgIm9mZnNldHNPZmZzZXQgb3V0IG9mIGJvdW5k
cyIsIG9mZnNldHNMaXN0Lmxlbmd0aCgpLCBvZmZzZXRzT2Zmc2V0LCBkcmF3Y291bnQpCisgICAg
ICAgIHx8ICF2YWxpZGF0ZU9mZnNldCgibXVsdGlEcmF3RWxlbWVudHNXRUJHTCIsICJjb3VudHNP
ZmZzZXQgb3V0IG9mIGJvdW5kcyIsIGluc3RhbmNlQ291bnRzTGlzdC5sZW5ndGgoKSwgaW5zdGFu
Y2VDb3VudHNPZmZzZXQsIGRyYXdjb3VudCkpIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIG1fY29udGV4dC0+Z3JhcGhpY3NDb250ZXh0R0woKS0+bXVsdGlEcmF3RWxlbWVudHNJbnN0
YW5jZWRBTkdMRShtb2RlLCBtYWtlU3BhbldpdGhPZmZzZXQoY291bnRzTGlzdCwgY291bnRzT2Zm
c2V0KSwgdHlwZSwgbWFrZVNwYW5XaXRoT2Zmc2V0KG9mZnNldHNMaXN0LCBvZmZzZXRzT2Zmc2V0
KSwgbWFrZVNwYW5XaXRoT2Zmc2V0KGluc3RhbmNlQ291bnRzTGlzdCwgaW5zdGFuY2VDb3VudHNP
ZmZzZXQpLCBkcmF3Y291bnQpOworfQorCitib29sIFdlYkdMTXVsdGlEcmF3Ojp2YWxpZGF0ZURy
YXdjb3VudChjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIEdDR0xzaXplaSBkcmF3Y291bnQpCit7
CisgICAgaWYgKGRyYXdjb3VudCA8IDApIHsKKyAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXpl
R0xFcnJvcihHcmFwaGljc0NvbnRleHRHTDo6SU5WQUxJRF9WQUxVRSwgZnVuY3Rpb25OYW1lLCAi
bmVnYXRpdmUgZHJhd2NvdW50Iik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBXZWJHTE11bHRpRHJhdzo6dmFsaWRhdGVPZmZzZXQo
Y29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBjb25zdCBjaGFyKiBvdXRPZkJvdW5kc0Rlc2NyaXB0
aW9uLCBHQ0dMc2l6ZWkgc2l6ZSwgR0NHTHVpbnQgb2Zmc2V0LCBHQ0dMc2l6ZWkgZHJhd2NvdW50
KQoreworICAgIGlmIChkcmF3Y291bnQgPiBzaXplKSB7CisgICAgICAgIG1fY29udGV4dC0+c3lu
dGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0R0w6OklOVkFMSURfT1BFUkFUSU9OLCBmdW5j
dGlvbk5hbWUsICJkcmF3Y291bnQgb3V0IG9mIGJvdW5kcyIpOworICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorCisgICAgaWYgKG9mZnNldCA+PSBzdGF0aWNfY2FzdDxHQ0dMdWludD4oc2l6
ZSkpIHsKKyAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHcmFwaGljc0NvbnRl
eHRHTDo6SU5WQUxJRF9PUEVSQVRJT04sIGZ1bmN0aW9uTmFtZSwgb3V0T2ZCb3VuZHNEZXNjcmlw
dGlvbik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xNdWx0aURyYXcuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMTXVsdGlEcmF3LmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YWIxNGFmMjVjMWI1ZjU1NDc1MDc1YWNiOTc2YTQ0OGVjMjFlNThjYgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMTXVsdGlEcmF3LmgKQEAgLTAsMCAr
MSw4OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisg
KiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiV2ViR0xFeHRlbnNpb24u
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBXZWJHTE11bHRpRHJhdyBmaW5hbCA6
IHB1YmxpYyBXZWJHTEV4dGVuc2lvbiB7CisgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChXZWJH
TE11bHRpRHJhdyk7CisKK3ByaXZhdGU6CisgICAgdGVtcGxhdGUgPGNsYXNzIFR5cGVkQXJyYXks
IGNsYXNzIERhdGFUeXBlPgorICAgIGNsYXNzIFR5cGVkTGlzdCB7CisgICAgcHVibGljOgorICAg
ICAgICB1c2luZyBMaXN0VHlwZU9wdGlvbnMgPSBWYXJpYW50PFJlZlB0cjxUeXBlZEFycmF5Piwg
VmVjdG9yPERhdGFUeXBlPj47CisKKyAgICAgICAgVHlwZWRMaXN0KExpc3RUeXBlT3B0aW9ucyYm
IHZhcmlhbnQpCisgICAgICAgICAgICA6IG1fdmFyaWFudChXVEZNb3ZlKHZhcmlhbnQpKQorICAg
ICAgICB7CisgICAgICAgIH0KKworICAgICAgICBjb25zdCBEYXRhVHlwZSogZGF0YSgpIGNvbnN0
CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fdmFyaWFudCwK
KyAgICAgICAgICAgICAgICBbXSAoY29uc3QgUmVmUHRyPFR5cGVkQXJyYXk+JiB0eXBlZEFycmF5
KSAtPiBjb25zdCBEYXRhVHlwZSogeyByZXR1cm4gdHlwZWRBcnJheS0+ZGF0YSgpOyB9LAorICAg
ICAgICAgICAgICAgIFtdIChjb25zdCBWZWN0b3I8RGF0YVR5cGU+JiB2ZWN0b3IpIC0+IGNvbnN0
IERhdGFUeXBlKiB7IHJldHVybiB2ZWN0b3IuZGF0YSgpOyB9CisgICAgICAgICAgICApOworICAg
ICAgICB9CisKKyAgICAgICAgR0NHTHNpemVpIGxlbmd0aCgpIGNvbnN0CisgICAgICAgIHsKKyAg
ICAgICAgICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fdmFyaWFudCwKKyAgICAgICAgICAgICAg
ICBbXSAoY29uc3QgUmVmUHRyPFR5cGVkQXJyYXk+JiB0eXBlZEFycmF5KSAtPiBHQ0dMc2l6ZWkg
eyByZXR1cm4gdHlwZWRBcnJheS0+bGVuZ3RoKCk7IH0sCisgICAgICAgICAgICAgICAgW10gKGNv
bnN0IFZlY3RvcjxEYXRhVHlwZT4mIHZlY3RvcikgLT4gR0NHTHNpemVpIHsgcmV0dXJuIHZlY3Rv
ci5zaXplKCk7IH0KKyAgICAgICAgICAgICk7CisgICAgICAgIH0KKworICAgIHByaXZhdGU6Cisg
ICAgICAgIExpc3RUeXBlT3B0aW9ucyBtX3ZhcmlhbnQ7CisgICAgfTsKKworcHVibGljOgorICAg
IHVzaW5nIEludDMyTGlzdCA9IFR5cGVkTGlzdDxJbnQzMkFycmF5LCBpbnQzMl90PjsKKworICAg
IGV4cGxpY2l0IFdlYkdMTXVsdGlEcmF3KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmKTsKKyAg
ICB2aXJ0dWFsIH5XZWJHTE11bHRpRHJhdygpOworCisgICAgRXh0ZW5zaW9uTmFtZSBnZXROYW1l
KCkgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0ZWQoY29uc3QgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZSYpOworCisgICAgdm9pZCBtdWx0aURyYXdBcnJheXNXRUJH
TChHQ0dMZW51bSBtb2RlLCBJbnQzMkxpc3QgZmlyc3RzTGlzdCwgR0NHTHVpbnQgZmlyc3RzT2Zm
c2V0LCBJbnQzMkxpc3QgY291bnRzTGlzdCwgR0NHTHVpbnQgY291bnRzT2Zmc2V0LCBHQ0dMc2l6
ZWkgZHJhd2NvdW50KTsKKworICAgIHZvaWQgbXVsdGlEcmF3RWxlbWVudHNXRUJHTChHQ0dMZW51
bSBtb2RlLCBJbnQzMkxpc3QgY291bnRzTGlzdCwgR0NHTHVpbnQgY291bnRzT2Zmc2V0LCBHQ0dM
ZW51bSB0eXBlLCBJbnQzMkxpc3Qgb2Zmc2V0c0xpc3QsIEdDR0x1aW50IG9mZnNldHNPZmZzZXQs
IEdDR0xzaXplaSBkcmF3Y291bnQpOworCisgICAgdm9pZCBtdWx0aURyYXdBcnJheXNJbnN0YW5j
ZWRXRUJHTChHQ0dMZW51bSBtb2RlLCBJbnQzMkxpc3QgZmlyc3RzTGlzdCwgR0NHTHVpbnQgZmly
c3RzT2Zmc2V0LCBJbnQzMkxpc3QgY291bnRzTGlzdCwgR0NHTHVpbnQgY291bnRzT2Zmc2V0LCBJ
bnQzMkxpc3QgaW5zdGFuY2VDb3VudHNMaXN0LCBHQ0dMdWludCBpbnN0YW5jZUNvdW50c09mZnNl
dCwgR0NHTHNpemVpIGRyYXdjb3VudCk7CisKKyAgICB2b2lkIG11bHRpRHJhd0VsZW1lbnRzSW5z
dGFuY2VkV0VCR0woR0NHTGVudW0gbW9kZSwgSW50MzJMaXN0IGNvdW50c0xpc3QsIEdDR0x1aW50
IGNvdW50c09mZnNldCwgR0NHTGVudW0gdHlwZSwgSW50MzJMaXN0IG9mZnNldHNMaXN0LCBHQ0dM
dWludCBvZmZzZXRzT2Zmc2V0LCBJbnQzMkxpc3QgaW5zdGFuY2VDb3VudHNMaXN0LCBHQ0dMdWlu
dCBpbnN0YW5jZUNvdW50c09mZnNldCwgR0NHTHNpemVpIGRyYXdjb3VudCk7CisKK3ByaXZhdGU6
CisgICAgYm9vbCB2YWxpZGF0ZURyYXdjb3VudChjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIEdD
R0xzaXplaSBkcmF3Y291bnQpOworICAgIGJvb2wgdmFsaWRhdGVPZmZzZXQoY29uc3QgY2hhciog
ZnVuY3Rpb25OYW1lLCBjb25zdCBjaGFyKiBvdXRPZkJvdW5kc0Rlc2NyaXB0aW9uLCBHQ0dMc2l6
ZWksIEdDR0x1aW50IG9mZnNldCwgR0NHTHNpemVpIGRyYXdjb3VudCk7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTE11bHRpRHJhdy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTE11bHRp
RHJhdy5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uOGE5YzE5NDQxZDllMzMzOTIwZDM0NTNjN2FhODlhNmRiMzEw
YzJmOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
TXVsdGlEcmF3LmlkbApAQCAtMCwwICsxLDc0IEBACisvKgorKiBDb3B5cmlnaHQgKEMpIDIwMjEg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyoKKyogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworKiBhcmUgbWV0OgorKgorKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyogMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorKgorKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5E
IEFOWQorKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWQorKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisqIExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORAorKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyog
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyovCisKK3R5cGVkZWYgdW5zaWduZWQgbG9uZyBHTGVudW07Cit0eXBlZGVmIGxv
bmcgR0xpbnQ7Cit0eXBlZGVmIGxvbmcgR0xzaXplaTsKK3R5cGVkZWYgdW5zaWduZWQgbG9uZyBH
THVpbnQ7Cit0eXBlZGVmIChJbnQzMkFycmF5IG9yIHNlcXVlbmNlPEdMaW50PikgSW50MzJMaXN0
OworCitbCisgICAgTGVnYWN5Tm9JbnRlcmZhY2VPYmplY3QsCisgICAgQ29uZGl0aW9uYWw9V0VC
R0wsCisgICAgR2VuZXJhdGVJc1JlYWNoYWJsZT1JbXBsV2ViR0xSZW5kZXJpbmdDb250ZXh0Citd
IGludGVyZmFjZSBXZWJHTE11bHRpRHJhdyB7CisgICAgdW5kZWZpbmVkIG11bHRpRHJhd0FycmF5
c1dFQkdMKAorICAgICAgICBHTGVudW0gbW9kZSwKKyAgICAgICAgSW50MzJMaXN0IGZpcnN0c0xp
c3QsCisgICAgICAgIEdMdWludCBmaXJzdHNPZmZzZXQsCisgICAgICAgIEludDMyTGlzdCBjb3Vu
dHNMaXN0LAorICAgICAgICBHTHVpbnQgY291bnRzT2Zmc2V0LAorICAgICAgICBHTHNpemVpIGRy
YXdjb3VudCk7CisKKyAgICB1bmRlZmluZWQgbXVsdGlEcmF3QXJyYXlzSW5zdGFuY2VkV0VCR0wo
CisgICAgICAgIEdMZW51bSBtb2RlLAorICAgICAgICBJbnQzMkxpc3QgZmlyc3RzTGlzdCwKKyAg
ICAgICAgR0x1aW50IGZpcnN0c09mZnNldCwKKyAgICAgICAgSW50MzJMaXN0IGNvdW50c0xpc3Qs
CisgICAgICAgIEdMdWludCBjb3VudHNPZmZzZXQsCisgICAgICAgIEludDMyTGlzdCBpbnN0YW5j
ZUNvdW50c0xpc3QsCisgICAgICAgIEdMdWludCBpbnN0YW5jZUNvdW50c09mZnNldCwKKyAgICAg
ICAgR0xzaXplaSBkcmF3Y291bnQpOworCisgICAgdW5kZWZpbmVkIG11bHRpRHJhd0VsZW1lbnRz
V0VCR0woCisgICAgICAgIEdMZW51bSBtb2RlLAorICAgICAgICBJbnQzMkxpc3QgY291bnRzTGlz
dCwKKyAgICAgICAgR0x1aW50IGNvdW50c09mZnNldCwKKyAgICAgICAgR0xlbnVtIHR5cGUsCisg
ICAgICAgIEludDMyTGlzdCBvZmZzZXRzTGlzdCwKKyAgICAgICAgR0x1aW50IG9mZnNldHNPZmZz
ZXQsCisgICAgICAgIEdMc2l6ZWkgZHJhd2NvdW50KTsKKworICAgIHVuZGVmaW5lZCBtdWx0aURy
YXdFbGVtZW50c0luc3RhbmNlZFdFQkdMKAorICAgICAgICBHTGVudW0gbW9kZSwKKyAgICAgICAg
SW50MzJMaXN0IGNvdW50c0xpc3QsCisgICAgICAgIEdMdWludCBjb3VudHNPZmZzZXQsCisgICAg
ICAgIEdMZW51bSB0eXBlLAorICAgICAgICBJbnQzMkxpc3Qgb2Zmc2V0c0xpc3QsCisgICAgICAg
IEdMdWludCBvZmZzZXRzT2Zmc2V0LAorICAgICAgICBJbnQzMkxpc3QgaW5zdGFuY2VDb3VudHNM
aXN0LAorICAgICAgICBHTHVpbnQgaW5zdGFuY2VDb3VudHNPZmZzZXQsCisgICAgICAgIEdMc2l6
ZWkgZHJhd2NvdW50KTsKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCAwN2RmY2EzZTFkOThhOWIxMDc4MDMyMTky
YjY0ODg4NDRkNzZjZGFiLi5kNGEyM2RiODA4ZjA4NDllMjY5NzZiMTEzODg1NTE3N2M5ZTJiYTcw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0Nv
bnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5n
Q29udGV4dC5jcHAKQEAgLTY4LDYgKzY4LDcgQEAKICNpbmNsdWRlICJXZWJHTERlcHRoVGV4dHVy
ZS5oIgogI2luY2x1ZGUgIldlYkdMRHJhd0J1ZmZlcnMuaCIKICNpbmNsdWRlICJXZWJHTExvc2VD
b250ZXh0LmgiCisjaW5jbHVkZSAiV2ViR0xNdWx0aURyYXcuaCIKICNpbmNsdWRlICJXZWJHTFZl
cnRleEFycmF5T2JqZWN0T0VTLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvR2VuZXJpY1R5
cGVkQXJyYXlWaWV3SW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBJbmxp
bmVzLmg+CkBAIC0yMDQsNiArMjA1LDcgQEAgV2ViR0xFeHRlbnNpb24qIFdlYkdMUmVuZGVyaW5n
Q29udGV4dDo6Z2V0RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICBFTkFCTEVfSUZf
UkVRVUVTVEVEKEVYVENvbG9yQnVmZmVySGFsZkZsb2F0LCBtX2V4dENvbG9yQnVmZmVySGFsZkZs
b2F0LCAiRVhUX2NvbG9yX2J1ZmZlcl9oYWxmX2Zsb2F0IiwgRVhUQ29sb3JCdWZmZXJIYWxmRmxv
YXQ6OnN1cHBvcnRlZCgqdGhpcykpOwogICAgIEVOQUJMRV9JRl9SRVFVRVNURUQoRVhURmxvYXRC
bGVuZCwgbV9leHRGbG9hdEJsZW5kLCAiRVhUX2Zsb2F0X2JsZW5kIiwgRVhURmxvYXRCbGVuZDo6
c3VwcG9ydGVkKCp0aGlzKSk7CiAgICAgRU5BQkxFX0lGX1JFUVVFU1RFRChXZWJHTENvbG9yQnVm
ZmVyRmxvYXQsIG1fd2ViZ2xDb2xvckJ1ZmZlckZsb2F0LCAiV0VCR0xfY29sb3JfYnVmZmVyX2Zs
b2F0IiwgV2ViR0xDb2xvckJ1ZmZlckZsb2F0OjpzdXBwb3J0ZWQoKnRoaXMpKTsKKyAgICBFTkFC
TEVfSUZfUkVRVUVTVEVEKFdlYkdMTXVsdGlEcmF3LCBtX3dlYmdsTXVsdGlEcmF3LCAiV0VCR0xf
bXVsdGlfZHJhdyIsIFdlYkdMTXVsdGlEcmF3OjpzdXBwb3J0ZWQoKnRoaXMpKTsKICAgICByZXR1
cm4gbnVsbHB0cjsKIH0KIApAQCAtMjc5LDYgKzI4MSw4IEBAIE9wdGlvbmFsPFZlY3RvcjxTdHJp
bmc+PiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFN1cHBvcnRlZEV4dGVuc2lvbnMoKQogICAg
ICAgICByZXN1bHQuYXBwZW5kKCJXRUJHTF9jb2xvcl9idWZmZXJfZmxvYXQiX3MpOwogICAgIGlm
IChLSFJQYXJhbGxlbFNoYWRlckNvbXBpbGU6OnN1cHBvcnRlZCgqdGhpcykpCiAgICAgICAgIHJl
c3VsdC5hcHBlbmQoIktIUl9wYXJhbGxlbF9zaGFkZXJfY29tcGlsZSIpOworICAgIGlmIChXZWJH
TE11bHRpRHJhdzo6c3VwcG9ydGVkKCp0aGlzKSkKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgiV0VC
R0xfbXVsdGlfZHJhdyJfcyk7CiAKICAgICByZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNw
cAppbmRleCA5NDM5NjA2MDg2MTMwOTM5MDk1Y2YyMjdmNzE5ZGYwMTk2N2IwNzNmLi41NzhlMDIx
ODBjNDZmM2RiYzRmZmZkMGFmMGMzNTNmMzk0ODIwZGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcApAQCAt
Mzc3OSw2ICszNzc5LDcgQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpleHRlbnNp
b25Jc0VuYWJsZWQoY29uc3QgU3RyaW5nJiBuYW1lKQogICAgIENIRUNLX0VYVEVOU0lPTihtX2V4
dEZsb2F0QmxlbmQsICJFWFRfZmxvYXRfYmxlbmQiKTsKICAgICBDSEVDS19FWFRFTlNJT04obV93
ZWJnbENvbG9yQnVmZmVyRmxvYXQsICJXRUJHTF9jb2xvcl9idWZmZXJfZmxvYXQiKTsKICAgICBD
SEVDS19FWFRFTlNJT04obV9leHRDb2xvckJ1ZmZlckZsb2F0LCAiRVhUX2NvbG9yX2J1ZmZlcl9m
bG9hdCIpOworICAgIENIRUNLX0VYVEVOU0lPTihtX3dlYmdsTXVsdGlEcmF3LCAiV0VCR0xfbXVs
dGlfZHJhdyIpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCmluZGV4IDI2YzUx
MThlNGQxZWJlMDg1NWMzMmMyMTAzOGIxNGZhOTgzM2JlODQuLjI1NTViYmZiZmQwODllNmE5MzQy
ZTZjNzljZGFlOWY2MDI3NGQyM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKQEAgLTEwOSw2ICsxMDksNyBAQCBj
bGFzcyBXZWJHTERlcHRoVGV4dHVyZTsKIGNsYXNzIFdlYkdMRHJhd0J1ZmZlcnM7CiBjbGFzcyBX
ZWJHTEV4dGVuc2lvbjsKIGNsYXNzIFdlYkdMTG9zZUNvbnRleHQ7CitjbGFzcyBXZWJHTE11bHRp
RHJhdzsKIGNsYXNzIFdlYkdMT2JqZWN0OwogY2xhc3MgV2ViR0xTaGFkZXI7CiBjbGFzcyBXZWJH
TFNoYXJlZE9iamVjdDsKQEAgLTQ0NCw2ICs0NDUsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgZnJpZW5k
IGNsYXNzIFdlYkdMQ29tcHJlc3NlZFRleHR1cmVQVlJUQzsKICAgICBmcmllbmQgY2xhc3MgV2Vi
R0xDb21wcmVzc2VkVGV4dHVyZVMzVEM7CiAgICAgZnJpZW5kIGNsYXNzIFdlYkdMQ29tcHJlc3Nl
ZFRleHR1cmVTM1RDc1JHQjsKKyAgICBmcmllbmQgY2xhc3MgV2ViR0xNdWx0aURyYXc7CiAgICAg
ZnJpZW5kIGNsYXNzIFdlYkdMUmVuZGVyaW5nQ29udGV4dEVycm9yTWVzc2FnZUNhbGxiYWNrOwog
ICAgIGZyaWVuZCBjbGFzcyBXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTOwogICAgIGZyaWVuZCBj
bGFzcyBXZWJHTFZlcnRleEFycmF5T2JqZWN0OwpAQCAtNzEyLDYgKzcxNCw3IEBAIHByb3RlY3Rl
ZDoKICAgICBSZWZQdHI8RVhURmxvYXRCbGVuZD4gbV9leHRGbG9hdEJsZW5kOwogICAgIFJlZlB0
cjxXZWJHTENvbG9yQnVmZmVyRmxvYXQ+IG1fd2ViZ2xDb2xvckJ1ZmZlckZsb2F0OwogICAgIFJl
ZlB0cjxFWFRDb2xvckJ1ZmZlckZsb2F0PiBtX2V4dENvbG9yQnVmZmVyRmxvYXQ7CisgICAgUmVm
UHRyPFdlYkdMTXVsdGlEcmF3PiBtX3dlYmdsTXVsdGlEcmF3OwogCiAgICAgYm9vbCBtX2FyZVdl
YkdMMlRleEltYWdlU291cmNlRm9ybWF0c0FuZFR5cGVzQWRkZWQgeyBmYWxzZSB9OwogICAgIGJv
b2wgbV9hcmVPRVNUZXh0dXJlRmxvYXRGb3JtYXRzQW5kVHlwZXNBZGRlZCB7IGZhbHNlIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHRHTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
R0wuaAppbmRleCBhYThmZjIzNjhkZmZkODljZWFiNmE0NDMzMzBkYjQ1MTZhMThmOWY1Li5hMzBj
ZWU1ZmFiNjQ3OTJhY2I4YzQ1ZTFlZTUwZTAwY2QyMmMyZGY0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRHTC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEdMLmgKQEAgLTkyMSw3
ICs5MjEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRDbGllbnQoQ2xpZW50JiBjbGllbnQpIHsg
bV9jbGllbnRzLmFkZCgmY2xpZW50KTsgfQogICAgIHZvaWQgcmVtb3ZlQ2xpZW50KENsaWVudCYg
Y2xpZW50KSB7IG1fY2xpZW50cy5yZW1vdmUoJmNsaWVudCk7IH0KIAotICAgIC8vIFdlYkdMIGZ1
bmN0aW9ucy4KKyAgICAvLyA9PT09PT09PT09IFdlYkdMIDEgZW50cnkgcG9pbnRzLgogICAgIHZp
cnR1YWwgdm9pZCBhY3RpdmVUZXh0dXJlKEdDR0xlbnVtIHRleHR1cmUpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgYXR0YWNoU2hhZGVyKFBsYXRmb3JtR0xPYmplY3QgcHJvZ3JhbSwgUGxhdGZvcm1H
TE9iamVjdCBzaGFkZXIpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgYmluZEF0dHJpYkxvY2F0aW9u
KFBsYXRmb3JtR0xPYmplY3QsIEdDR0x1aW50IGluZGV4LCBjb25zdCBTdHJpbmcmIG5hbWUpID0g
MDsKQEAgLTEyMjksNyArMTIyOSwxNSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZ2V0
QWN0aXZlVW5pZm9ybUJsb2NraXYoR0NHTHVpbnQgcHJvZ3JhbSwgR0NHTHVpbnQgdW5pZm9ybUJs
b2NrSW5kZXgsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMU3BhbjxHQ0dMaW50PiBwYXJhbXMpID0gMDsK
IAotICAgIC8vIE90aGVyIGZ1bmN0aW9ucy4KKyAgICAvLyA9PT09PT09PT09IEV4dGVuc2lvbiBy
ZWxhdGVkIGVudHJ5IHBvaW50cy4KKworICAgIC8vIEdMX0FOR0xFX211bHRpX2RyYXcKKyAgICB2
aXJ0dWFsIHZvaWQgbXVsdGlEcmF3QXJyYXlzQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTFNwYW48
Y29uc3QgR0NHTGludD4gZmlyc3RzLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMc2l6ZWk+IGNvdW50cywg
R0NHTHNpemVpIGRyYXdjb3VudCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBtdWx0aURyYXdBcnJh
eXNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiBm
aXJzdHMsIEdDR0xTcGFuPGNvbnN0IEdDR0xzaXplaT4gY291bnRzLCBHQ0dMU3Bhbjxjb25zdCBH
Q0dMc2l6ZWk+IGluc3RhbmNlQ291bnRzLCBHQ0dMc2l6ZWkgZHJhd2NvdW50KSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIG11bHRpRHJhd0VsZW1lbnRzQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTFNw
YW48Y29uc3QgR0NHTHNpemVpPiBjb3VudHMsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0
IEdDR0xpbnQ+IG9mZnNldHMsIEdDR0xzaXplaSBkcmF3Y291bnQpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgbXVsdGlEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dM
U3Bhbjxjb25zdCBHQ0dMc2l6ZWk+IGNvdW50cywgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29u
c3QgR0NHTGludD4gb2Zmc2V0cywgR0NHTFNwYW48Y29uc3QgR0NHTHNpemVpPiBpbnN0YW5jZUNv
dW50cywgR0NHTHNpemVpIGRyYXdjb3VudCkgPSAwOworCisgICAgLy8gPT09PT09PT09PSBPdGhl
ciBmdW5jdGlvbnMuCiAgICAgR0NHTGZsb2F0IGdldEZsb2F0KEdDR0xlbnVtIHBuYW1lKTsKICAg
ICBHQ0dMYm9vbGVhbiBnZXRCb29sZWFuKEdDR0xlbnVtIHBuYW1lKTsKICAgICBHQ0dMaW50IGdl
dEludGVnZXIoR0NHTGVudW0gcG5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNw
cAppbmRleCBlMGI0ODFlN2M2ODQ5MjdmYTYwYTQ0ZDdmNjI0Y2M1M2U3NTgxNzNmLi5lYmM0YWY5
YTg3MWQwNDEwM2Y2YTY1MDUyOTQ2NTRmYjY4ZGRjMmZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRl
eHRHTEFOR0xFLmNwcApAQCAtMjc4Myw2ICsyNzgzLDQ3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KEdDR0x1aW50IHByb2dyYW0sIEdDR0x1
aW50CiAgICAgZ2w6OkdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2Um9idXN0QU5HTEUocHJvZ3JhbSwg
dW5pZm9ybUJsb2NrSW5kZXgsIHBuYW1lLCBwYXJhbXMuYnVmU2l6ZSwgbnVsbHB0ciwgcGFyYW1z
LmRhdGEpOwogfQogCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjptdWx0aURyYXdBcnJh
eXNBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiBmaXJzdHMsIEdD
R0xTcGFuPGNvbnN0IEdDR0xzaXplaT4gY291bnRzLCBHQ0dMc2l6ZWkgZHJhd2NvdW50KQorewor
ICAgIGlmICghbWFrZUNvbnRleHRDdXJyZW50KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGds
OjpNdWx0aURyYXdBcnJheXNBTkdMRShtb2RlLCBmaXJzdHMuZGF0YSwgY291bnRzLmRhdGEsIGRy
YXdjb3VudCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Om11bHRpRHJhd0Fy
cmF5c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+
IGZpcnN0cywgR0NHTFNwYW48Y29uc3QgR0NHTHNpemVpPiBjb3VudHMsIEdDR0xTcGFuPGNvbnN0
IEdDR0xzaXplaT4gaW5zdGFuY2VDb3VudHMsIEdDR0xzaXplaSBkcmF3Y291bnQpCit7CisgICAg
aWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZ2w6Ok11
bHRpRHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKG1vZGUsIGZpcnN0cy5kYXRhLCBjb3VudHMuZGF0
YSwgaW5zdGFuY2VDb3VudHMuZGF0YSwgZHJhd2NvdW50KTsKK30KKwordm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6bXVsdGlEcmF3RWxlbWVudHNBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dM
U3Bhbjxjb25zdCBHQ0dMc2l6ZWk+IGNvdW50cywgR0NHTGVudW0gdHlwZSwgR0NHTFNwYW48Y29u
c3QgR0NHTGludD4gb2Zmc2V0cywgR0NHTHNpemVpIGRyYXdjb3VudCkKK3sKKyAgICBpZiAoIW1h
a2VDb250ZXh0Q3VycmVudCgpKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBNdXN0IHBlcmZv
cm0gY29udmVyc2lvbiBmcm9tIGludGVnZXIgb2Zmc2V0cyB0byB2b2lkKiBwb2ludGVycyBiZWZv
cmUgcGFzc2luZyBkb3duIHRvIEFOR0xFLgorICAgIFZlY3Rvcjx2b2lkKj4gcG9pbnRlcnM7Cisg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBvZmZzZXRzLmJ1ZlNpemU7ICsraSkKKyAgICAgICAg
cG9pbnRlcnMuYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KG9mZnNldHNbaV0pKTsKKwor
ICAgIGdsOjpNdWx0aURyYXdFbGVtZW50c0FOR0xFKG1vZGUsIGNvdW50cy5kYXRhLCB0eXBlLCBw
b2ludGVycy5kYXRhKCksIGRyYXdjb3VudCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6Om11bHRpRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwgR0NH
TFNwYW48Y29uc3QgR0NHTHNpemVpPiBjb3VudHMsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNv
bnN0IEdDR0xpbnQ+IG9mZnNldHMsIEdDR0xTcGFuPGNvbnN0IEdDR0xzaXplaT4gaW5zdGFuY2VD
b3VudHMsIEdDR0xzaXplaSBkcmF3Y291bnQpCit7CisgICAgaWYgKCFtYWtlQ29udGV4dEN1cnJl
bnQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gTXVzdCBwZXJmb3JtIGNvbnZlcnNpb24g
ZnJvbSBpbnRlZ2VyIG9mZnNldHMgdG8gdm9pZCogcG9pbnRlcnMgYmVmb3JlIHBhc3NpbmcgZG93
biB0byBBTkdMRS4KKyAgICBWZWN0b3I8dm9pZCo+IHBvaW50ZXJzOworICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgb2Zmc2V0cy5idWZTaXplOyArK2kpCisgICAgICAgIHBvaW50ZXJzLmFwcGVu
ZChyZWludGVycHJldF9jYXN0PHZvaWQqPihvZmZzZXRzW2ldKSk7CisKKyAgICBnbDo6TXVsdGlE
cmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShtb2RlLCBjb3VudHMuZGF0YSwgdHlwZSwgcG9pbnRl
cnMuZGF0YSgpLCBpbnN0YW5jZUNvdW50cy5kYXRhLCBkcmF3Y291bnQpOworfQogCiAjaWYgRU5B
QkxFKFZJREVPKSAmJiBVU0UoQVZGT1VOREFUSU9OKQogR3JhcGhpY3NDb250ZXh0R0xDViogR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmFzQ1YoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0wuaAppbmRleCAyYjMxMDM1MDc2MzlkOTk1Zjg5NjQ1ZDZmOTM0MTc0MDM5MGNhMGMwLi5mNTJi
ZGQ2NmZkMGM2N2IxMjVkOGI1MTFlMjljZjkyZmMyZmNmNWUwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0wuaApAQCAtNDI5LDYgKzQyOSwxMiBAQCBwdWJsaWM6CiAKICAgICB2b2lk
IGdldEFjdGl2ZVVuaWZvcm1CbG9ja2l2KEdDR0x1aW50IHByb2dyYW0sIEdDR0x1aW50IHVuaWZv
cm1CbG9ja0luZGV4LCBHQ0dMZW51bSBwbmFtZSwgR0NHTFNwYW48R0NHTGludD4gcGFyYW1zKSBm
aW5hbDsKIAorICAgIC8vIEdMX0FOR0xFX211bHRpX2RyYXcKKyAgICB2b2lkIG11bHRpRHJhd0Fy
cmF5c0FOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IGZpcnN0cywg
R0NHTFNwYW48Y29uc3QgR0NHTHNpemVpPiBjb3VudHMsIEdDR0xzaXplaSBkcmF3Y291bnQpIG92
ZXJyaWRlOworICAgIHZvaWQgbXVsdGlEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0g
bW9kZSwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gZmlyc3RzLCBHQ0dMU3Bhbjxjb25zdCBHQ0dM
c2l6ZWk+IGNvdW50cywgR0NHTFNwYW48Y29uc3QgR0NHTHNpemVpPiBpbnN0YW5jZUNvdW50cywg
R0NHTHNpemVpIGRyYXdjb3VudCkgb3ZlcnJpZGU7CisgICAgdm9pZCBtdWx0aURyYXdFbGVtZW50
c0FOR0xFKEdDR0xlbnVtIG1vZGUsIEdDR0xTcGFuPGNvbnN0IEdDR0xzaXplaT4gY291bnRzLCBH
Q0dMZW51bSB0eXBlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiBvZmZzZXRzLCBHQ0dMc2l6ZWkg
ZHJhd2NvdW50KSBvdmVycmlkZTsKKyAgICB2b2lkIG11bHRpRHJhd0VsZW1lbnRzSW5zdGFuY2Vk
QU5HTEUoR0NHTGVudW0gbW9kZSwgR0NHTFNwYW48Y29uc3QgR0NHTHNpemVpPiBjb3VudHMsIEdD
R0xlbnVtIHR5cGUsIEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IG9mZnNldHMsIEdDR0xTcGFuPGNv
bnN0IEdDR0xzaXplaT4gaW5zdGFuY2VDb3VudHMsIEdDR0xzaXplaSBkcmF3Y291bnQpIG92ZXJy
aWRlOworCiAgICAgLy8gSGVscGVyIG1ldGhvZHMuCiAgICAgdm9pZCBtYXJrQ29udGV4dENoYW5n
ZWQoKSBmaW5hbDsKICAgICB2b2lkIG1hcmtMYXllckNvbXBvc2l0ZWQoKSBmaW5hbDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0Nv
bnRleHRHTE9wZW5HTENvbW1vbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xDb21tb24uY3BwCmluZGV4IGZjZGI3MTFh
NmY4Y2IwNTllMDBiNzRjZDBjY2I3YzlhY2U5MGRhNjAuLjg4ZjliMjYzNWIxMjQwNjBiZjk0ZjNk
YTU0YWM0MGYwNTdkNDIwYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTENvbW1vbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMQ29tbW9uLmNwcApAQCAtMjg4NSw2ICsyODg1LDI2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTNEKEdDR0xlbnVtLCBHQ0dMaW50LCBHQ0dM
aW50CiB7CiB9CiAKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Om11bHRpRHJhd0FycmF5
c0FOR0xFKEdDR0xlbnVtLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiwgR0NHTFNwYW48Y29uc3Qg
R0NHTHNpemVpPiwgR0NHTHNpemVpKQoreworICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNz
Q29udGV4dEdMOjpJTlZBTElEX09QRVJBVElPTik7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6Om11bHRpRHJhd0FycmF5c0luc3RhbmNlZEFOR0xFKEdDR0xlbnVtLCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMaW50PiwgR0NHTFNwYW48Y29uc3QgR0NHTHNpemVpPiwgR0NHTFNwYW48Y29u
c3QgR0NHTHNpemVpPiwgR0NHTHNpemVpKQoreworICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBo
aWNzQ29udGV4dEdMOjpJTlZBTElEX09QRVJBVElPTik7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6Om11bHRpRHJhd0VsZW1lbnRzQU5HTEUoR0NHTGVudW0sIEdDR0xTcGFuPGNv
bnN0IEdDR0xzaXplaT4sIEdDR0xlbnVtLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiwgR0NHTHNp
emVpKQoreworICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dEdMOjpJTlZBTElE
X09QRVJBVElPTik7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6Om11bHRpRHJh
d0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0sIEdDR0xTcGFuPGNvbnN0IEdDR0xzaXpl
aT4sIEdDR0xlbnVtLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMaW50PiwgR0NHTFNwYW48Y29uc3QgR0NH
THNpemVpPiwgR0NHTHNpemVpKQoreworICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29u
dGV4dEdMOjpJTlZBTElEX09QRVJBVElPTik7Cit9CisKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShX
RUJHTCkgJiYgIVVTRShBTkdMRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL01vZGVscy9OYXRpdmVGdW5jdGlvblBhcmFtZXRlcnMuanMgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvTmF0aXZlRnVuY3Rpb25QYXJhbWV0
ZXJzLmpzCmluZGV4IDFlZTM2NDlmNmE5Y2RmYTdjZWYyY2U3ZTZiMjU1YzA0MDZjNTczMjAuLjli
NjFhMDBlMTg4NmQyODlmNTZlOWFiZTUyOGZiOWUxMDJhMTljMjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9OYXRpdmVGdW5jdGlvblBhcmFt
ZXRlcnMuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxz
L05hdGl2ZUZ1bmN0aW9uUGFyYW1ldGVycy5qcwpAQCAtMTg3NSw2ICsxODc1LDE0IEBAIFdJLk5h
dGl2ZVByb3RvdHlwZUZ1bmN0aW9uUGFyYW1ldGVycyA9IHsKICAgICAgICAgX19wcm90b19fOiBu
dWxsLAogICAgIH0sCiAKKyAgICBXZWJHTE11bHRpRHJhdzogeworICAgICAgICBtdWx0aURyYXdB
cnJheXNXZWJHTDogIm1vZGUsIGZpcnN0c0xpc3QsIGZpcnN0c09mZnNldCwgY291bnRzTGlzdCwg
Y291bnRzT2Zmc2V0LCBkcmF3Y291bnQiLAorICAgICAgICBtdWx0aURyYXdBcnJheXNJbnN0YW5j
ZWRXZWJHTDogIm1vZGUsIGZpcnN0c0xpc3QsIGZpcnN0c09mZnNldCwgY291bnRzTGlzdCwgY291
bnRzT2Zmc2V0LCBpbnN0YW5jZUNvdW50c0xpc3QsIGluc3RhbmNlQ291bnRzT2Zmc2V0LCBkcmF3
Y291bnQiLAorICAgICAgICBtdWx0aURyYXdFbGVtZW50c1dlYkdMOiAibW9kZSwgY291bnRzTGlz
dCwgY291bnRzT2Zmc2V0LCB0eXBlLCBvZmZzZXRzTGlzdCwgb2Zmc2V0c09mZnNldCwgZHJhd2Nv
dW50IiwKKyAgICAgICAgbXVsdGlEcmF3RWxlbWVudHNJbnN0YW5jZWRXZWJHTDogIm1vZGUsIGNv
dW50c0xpc3QsIGNvdW50c09mZnNldCwgdHlwZSwgb2Zmc2V0c0xpc3QsIG9mZnNldHNPZmZzZXQs
IGluc3RhbmNlQ291bnRzTGlzdCwgaW5zdGFuY2VDb3VudHNPZmZzZXQsIGRyYXdjb3VudCIsCisg
ICAgICAgIF9fcHJvdG9fXzogbnVsbCwKKyAgICB9LAorCiAgICAgV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTogewogICAgICAgICBhY3RpdmVUZXh0dXJlOiAidGV4dHVyZSIsCiAgICAgICAgIGF0
dGFjaFNoYWRlcjogInByb2dyYW0sIHNoYWRlciIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0wubWVzc2FnZXMuaW4KaW5kZXggYWEwMzQ3MjVmOWFhNDJmNDJiZDNjOGEwMGIwYWExODA5MGE1
OWI5YS4uMTkxNTFiZDBjYTEzOWI1Nzk4MGE2MzA2ZjNhNzRlNjE4M2QxMTk3YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4
dEdMLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9S
ZW1vdGVHcmFwaGljc0NvbnRleHRHTC5tZXNzYWdlcy5pbgpAQCAtMjg5LDYgKzI4OSwxMCBAQCBt
ZXNzYWdlcyAtPiBSZW1vdGVHcmFwaGljc0NvbnRleHRHTCBOb3RSZWZDb3VudGVkIHsKICAgICB2
b2lkIERyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKHVpbnQzMl90IG1vZGUsIGludDMyX3QgY291
bnQsIHVpbnQzMl90IHR5cGUsIHVpbnQ2NF90IG9mZnNldCwgaW50MzJfdCBwcmltY291bnQpCiAg
ICAgdm9pZCBWZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUodWludDMyX3QgaW5kZXgsIHVpbnQzMl90
IGRpdmlzb3IpCiAgICAgdm9pZCBHZXRJbnRlcm5hbGZvcm1hdGl2KHVpbnQzMl90IHRhcmdldCwg
dWludDMyX3QgaW50ZXJuYWxmb3JtYXQsIHVpbnQzMl90IHBuYW1lLCB1aW50NjRfdCBwYXJhbXNT
aXplKSAtPiAoSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiBwYXJhbXMpIFN5bmNocm9ub3Vz
CisgICAgdm9pZCBNdWx0aURyYXdBcnJheXNBTkdMRSh1aW50MzJfdCBtb2RlLCBJUEM6OkFycmF5
UmVmZXJlbmNlPGludDMyX3Q+IGZpcnN0cywgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiBj
b3VudHMsIGludDMyX3QgZHJhd2NvdW50KQorICAgIHZvaWQgTXVsdGlEcmF3QXJyYXlzSW5zdGFu
Y2VkQU5HTEUodWludDMyX3QgbW9kZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PiBmaXJz
dHMsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4gY291bnRzLCBJUEM6OkFycmF5UmVmZXJl
bmNlPGludDMyX3Q+IGluc3RhbmNlQ291bnRzLCBpbnQzMl90IGRyYXdjb3VudCkKKyAgICB2b2lk
IE11bHRpRHJhd0VsZW1lbnRzQU5HTEUodWludDMyX3QgbW9kZSwgSVBDOjpBcnJheVJlZmVyZW5j
ZTxpbnQzMl90PiBjb3VudHMsIHVpbnQzMl90IHR5cGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50
MzJfdD4gb2Zmc2V0cywgaW50MzJfdCBkcmF3Y291bnQpCisgICAgdm9pZCBNdWx0aURyYXdFbGVt
ZW50c0luc3RhbmNlZEFOR0xFKHVpbnQzMl90IG1vZGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50
MzJfdD4gY291bnRzLCB1aW50MzJfdCB0eXBlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+
IG9mZnNldHMsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4gaW5zdGFuY2VDb3VudHMsIGlu
dDMyX3QgZHJhd2NvdW50KQogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTEZ1bmN0aW9uc0dlbmVy
YXRlZC5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNz
Q29udGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmgKaW5kZXggYWYwMTYwMmFmNDkzZWI2N2RlM2U2
MmNmMGU1MGFjMGEyYjk5MjVmMS4uMmVkMGY1ODdjZTA2YzczZTY1ZjgwZDRmNmY1NjcwNjU3YjFm
M2Q2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rpb25zR2VuZXJhdGVkLmgKKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMRnVuY3Rpb25zR2Vu
ZXJhdGVkLmgKQEAgLTExODYsNCArMTE4NiwyMCBAQAogICAgICAgICBtX2NvbnRleHQtPmdldElu
dGVybmFsZm9ybWF0aXYodGFyZ2V0LCBpbnRlcm5hbGZvcm1hdCwgcG5hbWUsIHBhcmFtcyk7CiAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4ocmVp
bnRlcnByZXRfY2FzdDxpbnQzMl90Kj4ocGFyYW1zLmRhdGEoKSksIHBhcmFtcy5zaXplKCkpKTsK
ICAgICB9CisgICAgdm9pZCBtdWx0aURyYXdBcnJheXNBTkdMRSh1aW50MzJfdCBtb2RlLCBJUEM6
OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+JiYgZmlyc3RzLCBJUEM6OkFycmF5UmVmZXJlbmNlPGlu
dDMyX3Q+JiYgY291bnRzLCBpbnQzMl90IGRyYXdjb3VudCkKKyAgICB7CisgICAgICAgIG1fY29u
dGV4dC0+bXVsdGlEcmF3QXJyYXlzQU5HTEUobW9kZSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgR0NHTGludCo+KGZpcnN0cy5kYXRhKCkpLCBmaXJzdHMuc2l6ZSgpKSwgbWFr
ZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHNpemVpKj4oY291bnRzLmRhdGEo
KSksIGNvdW50cy5zaXplKCkpLCBkcmF3Y291bnQpOworICAgIH0KKyAgICB2b2lkIG11bHRpRHJh
d0FycmF5c0luc3RhbmNlZEFOR0xFKHVpbnQzMl90IG1vZGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8
aW50MzJfdD4mJiBmaXJzdHMsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4mJiBjb3VudHMs
IElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4mJiBpbnN0YW5jZUNvdW50cywgaW50MzJfdCBk
cmF3Y291bnQpCisgICAgeworICAgICAgICBtX2NvbnRleHQtPm11bHRpRHJhd0FycmF5c0luc3Rh
bmNlZEFOR0xFKG1vZGUsIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xp
bnQqPihmaXJzdHMuZGF0YSgpKSwgZmlyc3RzLnNpemUoKSksIG1ha2VHQ0dMU3BhbihyZWludGVy
cHJldF9jYXN0PGNvbnN0IEdDR0xzaXplaSo+KGNvdW50cy5kYXRhKCkpLCBjb3VudHMuc2l6ZSgp
KSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0NHTHNpemVpKj4oaW5zdGFu
Y2VDb3VudHMuZGF0YSgpKSwgaW5zdGFuY2VDb3VudHMuc2l6ZSgpKSwgZHJhd2NvdW50KTsKKyAg
ICB9CisgICAgdm9pZCBtdWx0aURyYXdFbGVtZW50c0FOR0xFKHVpbnQzMl90IG1vZGUsIElQQzo6
QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4mJiBjb3VudHMsIHVpbnQzMl90IHR5cGUsIElQQzo6QXJy
YXlSZWZlcmVuY2U8aW50MzJfdD4mJiBvZmZzZXRzLCBpbnQzMl90IGRyYXdjb3VudCkKKyAgICB7
CisgICAgICAgIG1fY29udGV4dC0+bXVsdGlEcmF3RWxlbWVudHNBTkdMRShtb2RlLCBtYWtlR0NH
TFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMc2l6ZWkqPihjb3VudHMuZGF0YSgpKSwg
Y291bnRzLnNpemUoKSksIHR5cGUsIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0
IEdDR0xpbnQqPihvZmZzZXRzLmRhdGEoKSksIG9mZnNldHMuc2l6ZSgpKSwgZHJhd2NvdW50KTsK
KyAgICB9CisgICAgdm9pZCBtdWx0aURyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKHVpbnQzMl90
IG1vZGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4mJiBjb3VudHMsIHVpbnQzMl90IHR5
cGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4mJiBvZmZzZXRzLCBJUEM6OkFycmF5UmVm
ZXJlbmNlPGludDMyX3Q+JiYgaW5zdGFuY2VDb3VudHMsIGludDMyX3QgZHJhd2NvdW50KQorICAg
IHsKKyAgICAgICAgbV9jb250ZXh0LT5tdWx0aURyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKG1v
ZGUsIG1ha2VHQ0dMU3BhbihyZWludGVycHJldF9jYXN0PGNvbnN0IEdDR0xzaXplaSo+KGNvdW50
cy5kYXRhKCkpLCBjb3VudHMuc2l6ZSgpKSwgdHlwZSwgbWFrZUdDR0xTcGFuKHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgR0NHTGludCo+KG9mZnNldHMuZGF0YSgpKSwgb2Zmc2V0cy5zaXplKCkpLCBt
YWtlR0NHTFNwYW4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBHQ0dMc2l6ZWkqPihpbnN0YW5jZUNv
dW50cy5kYXRhKCkpLCBpbnN0YW5jZUNvdW50cy5zaXplKCkpLCBkcmF3Y291bnQpOworICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaAppbmRleCBhMTQzOTM0N2Q4
OWUwYWRiZjA4YTQyYTQyNTkxYmJiM2RiZWIyMWU3Li5hNWE2ZjdmZWMyMDA1OWM3Mzg1NGMwNmFi
NTk1NGU4YmY1YTdjOThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHku
aApAQCAtMzYzLDYgKzM2MywxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZXRRdWVyeU9iamVjdGl2
Um9idXN0QU5HTEUoR0NHTHVpbnQgaWQsIEdDR0xlbnVtIHBuYW1lLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xpbnQqIHBhcmFtcykgZmluYWw7CiAgICAgdm9pZCBn
ZXRRdWVyeU9iamVjdGk2NHZSb2J1c3RBTkdMRShHQ0dMdWludCBpZCwgR0NHTGVudW0gcG5hbWUs
IEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTGludDY0KiBwYXJhbXMp
IGZpbmFsOwogICAgIHZvaWQgZ2V0UXVlcnlPYmplY3R1aTY0dlJvYnVzdEFOR0xFKEdDR0x1aW50
IGlkLCBHQ0dMZW51bSBwbmFtZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3Ro
LCBHQ0dMdWludDY0KiBwYXJhbXMpIGZpbmFsOworICAgIHZvaWQgbXVsdGlEcmF3QXJyYXlzQU5H
TEUoR0NHTGVudW0gbW9kZSwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gZmlyc3RzLCBHQ0dMU3Bh
bjxjb25zdCBHQ0dMc2l6ZWk+IGNvdW50cywgR0NHTHNpemVpIGRyYXdjb3VudCkgZmluYWw7Cisg
ICAgdm9pZCBtdWx0aURyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dM
U3Bhbjxjb25zdCBHQ0dMaW50PiBmaXJzdHMsIEdDR0xTcGFuPGNvbnN0IEdDR0xzaXplaT4gY291
bnRzLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMc2l6ZWk+IGluc3RhbmNlQ291bnRzLCBHQ0dMc2l6ZWkg
ZHJhd2NvdW50KSBmaW5hbDsKKyAgICB2b2lkIG11bHRpRHJhd0VsZW1lbnRzQU5HTEUoR0NHTGVu
dW0gbW9kZSwgR0NHTFNwYW48Y29uc3QgR0NHTHNpemVpPiBjb3VudHMsIEdDR0xlbnVtIHR5cGUs
IEdDR0xTcGFuPGNvbnN0IEdDR0xpbnQ+IG9mZnNldHMsIEdDR0xzaXplaSBkcmF3Y291bnQpIGZp
bmFsOworICAgIHZvaWQgbXVsdGlEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShHQ0dMZW51bSBt
b2RlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMc2l6ZWk+IGNvdW50cywgR0NHTGVudW0gdHlwZSwgR0NH
TFNwYW48Y29uc3QgR0NHTGludD4gb2Zmc2V0cywgR0NHTFNwYW48Y29uc3QgR0NHTHNpemVpPiBp
bnN0YW5jZUNvdW50cywgR0NHTHNpemVpIGRyYXdjb3VudCkgZmluYWw7CiAgICAgLy8gRW5kIG9m
IGxpc3QgdXNlZCBieSBnZW5lcmF0ZS1ncHVwLXdlYmdsIHNjcmlwdC4KIAogcHJvdGVjdGVkOgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVkLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUZ1
bmN0aW9uc0dlbmVyYXRlZC5jcHAKaW5kZXggZjdlY2Y4NjU1NmEwMDczYWY4ZjU1NGNmY2ZjMGVm
MzM5ZjYxZTg5YS4uODcxNWI0NDc1NDQzODE4ZjI2YWZlNmZiZmI1NDc2ODJlOTk3OTJiYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFw
aGljc0NvbnRleHRHTFByb3h5RnVuY3Rpb25zR2VuZXJhdGVkLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlG
dW5jdGlvbnNHZW5lcmF0ZWQuY3BwCkBAIC0xNDY1LDYgKzE0NjUsMjYgQEAgdm9pZCBSZW1vdGVH
cmFwaGljc0NvbnRleHRHTFByb3h5OjpnZXRJbnRlcm5hbGZvcm1hdGl2KEdDR0xlbnVtIHRhcmdl
dCwgR0NHTGVudW0KICAgICAKIH0KIAordm9pZCBSZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5
OjptdWx0aURyYXdBcnJheXNBTkdMRShHQ0dMZW51bSBtb2RlLCBHQ0dMU3Bhbjxjb25zdCBHQ0dM
aW50PiBmaXJzdHMsIEdDR0xTcGFuPGNvbnN0IEdDR0xzaXplaT4gY291bnRzLCBHQ0dMc2l6ZWkg
ZHJhd2NvdW50KQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdM
OjpNdWx0aURyYXdBcnJheXNBTkdMRShtb2RlLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgaW50MzJfdCo+KGZpcnN0cy5kYXRhKSwgZmlyc3RzLmJ1
ZlNpemUpLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgaW50MzJfdCo+KGNvdW50cy5kYXRhKSwgY291bnRzLmJ1ZlNpemUpLCBkcmF3Y291bnQpLCBt
X2dyYXBoaWNzQ29udGV4dEdMSWRlbnRpZmllcik7Cit9CisKK3ZvaWQgUmVtb3RlR3JhcGhpY3ND
b250ZXh0R0xQcm94eTo6bXVsdGlEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9k
ZSwgR0NHTFNwYW48Y29uc3QgR0NHTGludD4gZmlyc3RzLCBHQ0dMU3Bhbjxjb25zdCBHQ0dMc2l6
ZWk+IGNvdW50cywgR0NHTFNwYW48Y29uc3QgR0NHTHNpemVpPiBpbnN0YW5jZUNvdW50cywgR0NH
THNpemVpIGRyYXdjb3VudCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0Nv
bnRleHRHTDo6TXVsdGlEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUobW9kZSwgSVBDOjpBcnJheVJl
ZmVyZW5jZTxpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IGludDMyX3QqPihmaXJzdHMu
ZGF0YSksIGZpcnN0cy5idWZTaXplKSwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PihyZWlu
dGVycHJldF9jYXN0PGNvbnN0IGludDMyX3QqPihjb3VudHMuZGF0YSksIGNvdW50cy5idWZTaXpl
KSwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IGlu
dDMyX3QqPihpbnN0YW5jZUNvdW50cy5kYXRhKSwgaW5zdGFuY2VDb3VudHMuYnVmU2l6ZSksIGRy
YXdjb3VudCksIG1fZ3JhcGhpY3NDb250ZXh0R0xJZGVudGlmaWVyKTsKK30KKwordm9pZCBSZW1v
dGVHcmFwaGljc0NvbnRleHRHTFByb3h5OjptdWx0aURyYXdFbGVtZW50c0FOR0xFKEdDR0xlbnVt
IG1vZGUsIEdDR0xTcGFuPGNvbnN0IEdDR0xzaXplaT4gY291bnRzLCBHQ0dMZW51bSB0eXBlLCBH
Q0dMU3Bhbjxjb25zdCBHQ0dMaW50PiBvZmZzZXRzLCBHQ0dMc2l6ZWkgZHJhd2NvdW50KQorewor
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpNdWx0aURyYXdFbGVt
ZW50c0FOR0xFKG1vZGUsIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4ocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBpbnQzMl90Kj4oY291bnRzLmRhdGEpLCBjb3VudHMuYnVmU2l6ZSksIHR5cGUs
IElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdD4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBpbnQz
Ml90Kj4ob2Zmc2V0cy5kYXRhKSwgb2Zmc2V0cy5idWZTaXplKSwgZHJhd2NvdW50KSwgbV9ncmFw
aGljc0NvbnRleHRHTElkZW50aWZpZXIpOworfQorCit2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4
dEdMUHJveHk6Om11bHRpRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUoR0NHTGVudW0gbW9kZSwg
R0NHTFNwYW48Y29uc3QgR0NHTHNpemVpPiBjb3VudHMsIEdDR0xlbnVtIHR5cGUsIEdDR0xTcGFu
PGNvbnN0IEdDR0xpbnQ+IG9mZnNldHMsIEdDR0xTcGFuPGNvbnN0IEdDR0xzaXplaT4gaW5zdGFu
Y2VDb3VudHMsIEdDR0xzaXplaSBkcmF3Y291bnQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVt
b3RlR3JhcGhpY3NDb250ZXh0R0w6Ok11bHRpRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUobW9k
ZSwgSVBDOjpBcnJheVJlZmVyZW5jZTxpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IGlu
dDMyX3QqPihjb3VudHMuZGF0YSksIGNvdW50cy5idWZTaXplKSwgdHlwZSwgSVBDOjpBcnJheVJl
ZmVyZW5jZTxpbnQzMl90PihyZWludGVycHJldF9jYXN0PGNvbnN0IGludDMyX3QqPihvZmZzZXRz
LmRhdGEpLCBvZmZzZXRzLmJ1ZlNpemUpLCBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3Q+KHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgaW50MzJfdCo+KGluc3RhbmNlQ291bnRzLmRhdGEpLCBpbnN0
YW5jZUNvdW50cy5idWZTaXplKSwgZHJhd2NvdW50KSwgbV9ncmFwaGljc0NvbnRleHRHTElkZW50
aWZpZXIpOworfQorCiB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OnJlYWRQaXhl
bHNSb2J1c3RBTkdMRShHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHNpemVpKiBjb2x1bW5zLCBHQ0dMc2l6ZWkq
IHJvd3MsIEdDR0x2b2lkKiBwaXhlbHMpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRl
eCAzMzJmNGZkMmNmNTQwMWNiZGM2NDZiYjQwNmZlZGU1MWZmYzc2NzUzLi4zZDlmYjY0NGQ1M2Vh
NzM1MzJlZmMzMjZiMzJjNmRmMzZlNjYwYmE2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMjEt
MDEtMjAgIEtlbm5ldGggUnVzc2VsbCAgPGtickBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU3Vw
cG9ydCBXRUJHTF9tdWx0aV9kcmF3IGV4dGVuc2lvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE5MTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGVh
biBKYWNrc29uLgorCisgICAgICAgIEFkZCBjb25mb3JtYW5jZSB0ZXN0IGZvciB0aGUgbXVsdGkt
ZHJhdyBleHRlbnNpb24sIHdoaWNoIGlzCisgICAgICAgIGV4cGVjdGVkIHRvIHBhc3MuIFRlbXBv
cmFyaWx5IHN1cHByZXNzIHRoZSB0ZXN0IGR1ZSB0byBmYWlsdXJlcyBvbgorICAgICAgICBJbnRl
bCBHUFVzIG9uIG1hY09TIGNhdXNlZCBieSByZWNlbnRseS1kaXNjb3ZlcmVkIE9wZW5HTCBkcml2
ZXIKKyAgICAgICAgYnVncywgd2hpY2ggYXJlIGN1cnJlbnRseSBiZWluZyBpbnZlc3RpZ2F0ZWQu
CisKKyAgICAgICAgKiBUZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAqIHdlYmdsL2NvbmZvcm1h
bmNlL2V4dGVuc2lvbnMvd2ViZ2wtbXVsdGktZHJhdy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIHdlYmdsL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvd2ViZ2wtbXVsdGktZHJhdy5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiB3ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25m
b3JtYW5jZS9leHRlbnNpb25zL3dlYmdsLW11bHRpLWRyYXcuaHRtbDogQWRkZWQuCisKIDIwMjEt
MDEtMjAgIE1hbnVlbCBSZWdvIENhc2Fzbm92YXMgIDxyZWdvQGlnYWxpYS5jb20+CiAKICAgICAg
ICAgW1dQRV0gZm9jdXMtdmlzaWJsZS0wMDMuaHRtbCBhbmQgZm9jdXMtdmlzaWJsZS0wMDQuaHRt
bCBhcmUgdGltaW5nIG91dCBpbiBpbnB1dCB0YWdzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9U
ZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA4Y2Ji
MjI4MWQxZDM4YWNjMDUwOWM3OGUzNzA0OTFmMmNlMmU4Mjc0Li43OWIxZDY0MDg3MDljOThjNDY3
Y2E0YjdlY2M1ZTkyNWQ5MGIzNWU0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0
YXRpb25zCisrKyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTM0NDgsNiArMzQ0
OCw5IEBAIHdlYmdsLzIuMC4wL2NvbmZvcm1hbmNlL3RleHR1cmVzL21pc2MvdGV4dHVyZS1zaXpl
LWxpbWl0Lmh0bWwgWyBTbG93IF0KIHdlYmdsLzIuMC4wL2NvbmZvcm1hbmNlL3RleHR1cmVzL21p
c2MvdGV4dHVyZS1ucG90LXZpZGVvLmh0bWwgWyBTa2lwIF0KIHdlYmdsLzIuMC4wL2NvbmZvcm1h
bmNlMi9taXNjL3VuaW5pdGlhbGl6ZWQtdGVzdC0yLmh0bWwgWyBTa2lwIF0KIAorIyBGYWlsaW5n
IG9uIGNlcnRhaW4gaGFyZHdhcmUgY29uZmlndXJhdGlvbnM6IG1hY09TIHdpdGggSW50ZWwgR1BV
cy4gQWxzbyBzbG93Lgord2Via2l0Lm9yZy9iLzIyMDc1MyB3ZWJnbC9jb25mb3JtYW5jZS9leHRl
bnNpb25zL3dlYmdsLW11bHRpLWRyYXcuaHRtbCBbIFBhc3MgRmFpbHVyZSBTbG93IF0KKwogIyBw
cmUtd3JhcCBwcm9ncmVzc2lvbi4gT3RoZXIgcmVuZGVyaW5nIGVuZ2luZXMgYWdyZWUgd2l0aCB0
aGUgcmVzdWx0Lgogd2Via2l0Lm9yZy9iLzIwNjE2OCBbIERlYnVnIF0gZmFzdC9kb20vaW5zZXJ0
LXNwYW4taW50by1sb25nLXRleHQtYnVnLTI4MjQ1Lmh0bWwgWyBTa2lwIF0KIApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2ViZ2wvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy93ZWJnbC1tdWx0aS1k
cmF3LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmdsL2NvbmZvcm1hbmNlL2V4dGVuc2lv
bnMvd2ViZ2wtbXVsdGktZHJhdy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWQ2ODY2ZTgwZTVh
MDA3YzU2MGRlOTIzZGNiMDMzMDNjMGE2YWRmYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3dlYmdsL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvd2ViZ2wtbXVsdGktZHJhdy1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSw0IEBACitUaGlzIHRlc3QgcnVucyB0aGUgV2ViR0wgVGVzdCBsaXN0
ZWQgYmVsb3cgaW4gYW4gaWZyYW1lIGFuZCByZXBvcnRzIFBBU1Mgb3IgRkFJTC4KKworVGVzdDog
Li4vLi4vcmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy93
ZWJnbC1tdWx0aS1kcmF3Lmh0bWwKK1BBU1MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmds
L2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvd2ViZ2wtbXVsdGktZHJhdy5odG1sIGIvTGF5b3V0VGVz
dHMvd2ViZ2wvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy93ZWJnbC1tdWx0aS1kcmF3Lmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZGY1ZTEwMzkwMTY3MjM0NTdkYmM1ZDYyYTk3MDY4YWE5ZmYzOWM1OAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmdsL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvd2Vi
Z2wtbXVsdGktZHJhdy5odG1sCkBAIC0wLDAgKzEsMTggQEAKKzwhLS0gVGhpcyBmaWxlIGlzIGF1
dG8tZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLXdlYmdsLXRlc3RzLnB5LiBETyBOT1QgRURJVCAtLT4K
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4K
Kzx0aXRsZT5XZWJHTCBDb25mb3JtYW5jZSBUZXN0IFdyYXBwZXIgZm9yIHdlYmdsLW11bHRpLWRy
YXcuaHRtbDwvdGl0bGU+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIuLi8u
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCB0eXBlPSJ0
ZXh0L2phdmFzY3JpcHQiIHNyYz0iLi4vLi4vcmVzb3VyY2VzL3dlYmtpdC13ZWJnbC10ZXN0LWhh
cm5lc3MuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cD5UaGlzIHRlc3QgcnVucyB0
aGUgV2ViR0wgVGVzdCBsaXN0ZWQgYmVsb3cgaW4gYW4gaWZyYW1lIGFuZCByZXBvcnRzIFBBU1Mg
b3IgRkFJTC48L3A+CitUZXN0OiA8YSBocmVmPSIuLi8uLi9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9m
aWxlcy9jb25mb3JtYW5jZS9leHRlbnNpb25zL3dlYmdsLW11bHRpLWRyYXcuaHRtbCI+Li4vLi4v
cmVzb3VyY2VzL3dlYmdsX3Rlc3RfZmlsZXMvY29uZm9ybWFuY2UvZXh0ZW5zaW9ucy93ZWJnbC1t
dWx0aS1kcmF3Lmh0bWw8L2E+Cis8ZGl2IGlkPSJpZnJhbWUiPgorPGlmcmFtZSBzcmM9Ii4uLy4u
L3Jlc291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvd2ViZ2wt
bXVsdGktZHJhdy5odG1sIiB3aWR0aD0iODAwIiBoZWlnaHQ9IjYwMCI+PC9pZnJhbWU+Cis8L2Rp
dj4KKzxkaXYgaWQ9InJlc3VsdCI+PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMvd2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5j
ZS9leHRlbnNpb25zL3dlYmdsLW11bHRpLWRyYXcuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdsL3Jl
c291cmNlcy93ZWJnbF90ZXN0X2ZpbGVzL2NvbmZvcm1hbmNlL2V4dGVuc2lvbnMvd2ViZ2wtbXVs
dGktZHJhdy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFkZWFiMzEyZTVkMDE3ODM5YTA0ODc3MjM3NzZhZjI2
NGE0MGRmZmEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2xfdGVzdF9maWxlcy9jb25mb3JtYW5jZS9leHRlbnNpb25zL3dlYmdsLW11bHRpLWRyYXcu
aHRtbApAQCAtMCwwICsxLDg0MCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgor
PG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHRpdGxlPldlYkdMIEFOR0xFX211bHRpX2RyYXcgQ29u
Zm9ybWFuY2UgVGVzdHM8L3RpdGxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9k
ZXNrdG9wLWdsLWNvbnN0YW50cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3dlYmdsLXRl
c3QtdXRpbHMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IGlkPSJ2c2hh
ZGVySWxsZWdhbERyYXdJRCIgdHlwZT0ieC1zaGFkZXIveC12ZXJ0ZXgiPgorYXR0cmlidXRlIHZl
YzIgdlBvc2l0aW9uOwordmFyeWluZyB2ZWM0IGNvbG9yOwordm9pZCBtYWluKCkKK3sKKyAgY29s
b3IgPSB2ZWM0KDEuMCwgMC4wLCAwLjAsIDEuMCk7CisgIGdsX1Bvc2l0aW9uID0gdmVjNCh2UG9z
aXRpb24gKiAyLjAgLSAxLjAsIGdsX0RyYXdJRCwgMSk7Cit9Cis8L3NjcmlwdD4KKzxzY3JpcHQg
aWQ9InZzaGFkZXJEcmF3SURaZXJvIiB0eXBlPSJ4LXNoYWRlci94LXZlcnRleCI+CisjZXh0ZW5z
aW9uIEdMX0FOR0xFX211bHRpX2RyYXcgOiByZXF1aXJlCithdHRyaWJ1dGUgdmVjMiB2UG9zaXRp
b247Cit2YXJ5aW5nIHZlYzQgY29sb3I7Cit2b2lkIG1haW4oKQoreworICBpZiAoZ2xfRHJhd0lE
ID09IDApIHsKKyAgICBjb2xvciA9IHZlYzQoMCwgMSwgMCwgMSk7CisgIH0gZWxzZSB7CisgICAg
Y29sb3IgPSB2ZWM0KDEsIDAsIDAsIDEpOworICB9CisgIGdsX1Bvc2l0aW9uID0gdmVjNCh2UG9z
aXRpb24gKiAyLjAgLSAxLjAsIDAsIDEpOworfQorPC9zY3JpcHQ+Cis8IS0tIFRoZSBiZWhhdmlv
ciBvZiB0aGUgc2hhZGVycyBiZWxvdyBpcyBkZXNjcmliZWQgaW4gcnVuUGl4ZWxUZXN0cygpIC0t
PgorPHNjcmlwdCBpZD0idnNoYWRlcldpdGhEcmF3SUQiIHR5cGU9Ingtc2hhZGVyL3gtdmVydGV4
Ij4KKyNleHRlbnNpb24gR0xfQU5HTEVfbXVsdGlfZHJhdyA6IHJlcXVpcmUKK2F0dHJpYnV0ZSB2
ZWMyIHZQb3NpdGlvbjsKK2F0dHJpYnV0ZSBmbG9hdCB2SW5zdGFuY2U7Cit2YXJ5aW5nIHZlYzQg
Y29sb3I7Cit2b2lkIG1haW4oKQoreworICAvLyBjb2xvcl9pZCA9IChnbF9EcmF3SUQgLyAyKSAl
IDMKKyAgZmxvYXQgcXVhZF9pZCA9IGZsb2F0KGdsX0RyYXdJRCAvIDIpOworICBmbG9hdCBjb2xv
cl9pZCA9IHF1YWRfaWQgLSAoMy4wICogZmxvb3IocXVhZF9pZCAvIDMuMCkpOworICBpZiAoY29s
b3JfaWQgPCAwLjUpIHsKKyAgICBjb2xvciA9IHZlYzQoMSwgMCwgMCwgMSk7CisgIH0gZWxzZSBp
ZiAoY29sb3JfaWQgPCAxLjUpIHsKKyAgICBjb2xvciA9IHZlYzQoMCwgMSwgMCwgMSk7CisgIH0g
ZWxzZSB7CisgICAgY29sb3IgPSB2ZWM0KDAsIDAsIDEsIDEpOworICB9CisgIG1hdDMgdHJhbnNm
b3JtID0gbWF0MygxLjApOworICAvLyB2SW5zdGFuY2Ugc3RhcnRzIGF0IDEuMCBvbiBpbnN0YW5j
ZWQgY2FsbHMKKyAgaWYgKHZJbnN0YW5jZSA+PSAxLjApIHsKKyAgICB0cmFuc2Zvcm1bMF1bMF0g
PSAwLjU7CisgICAgdHJhbnNmb3JtWzFdWzFdID0gMC41OworICB9CisgIGlmICh2SW5zdGFuY2Ug
PT0gMS4wKSB7CisgIH0gZWxzZSBpZiAodkluc3RhbmNlID09IDIuMCkgeworICAgICAgdHJhbnNm
b3JtWzJdWzBdID0gMC41OworICB9IGVsc2UgaWYgKHZJbnN0YW5jZSA9PSAzLjApIHsKKyAgICAg
IHRyYW5zZm9ybVsyXVsxXSA9IDAuNTsKKyAgfSBlbHNlIGlmICh2SW5zdGFuY2UgPT0gNC4wKSB7
CisgICAgICB0cmFuc2Zvcm1bMl1bMF0gPSAwLjU7CisgICAgICB0cmFuc2Zvcm1bMl1bMV0gPSAw
LjU7CisgIH0KKyAgZ2xfUG9zaXRpb24gPSB2ZWM0KHRyYW5zZm9ybSAqIHZlYzModlBvc2l0aW9u
LCAxLjApICogMi4wIC0gMS4wLCAxKTsKK30KKzwvc2NyaXB0PgorPHNjcmlwdCBpZD0idnNoYWRl
ckVtdWxhdGVkRHJhd0lEIiB0eXBlPSJ4LXNoYWRlci94LXZlcnRleCI+Cit1bmlmb3JtIGludCBk
cmF3SUQ7CithdHRyaWJ1dGUgdmVjMiB2UG9zaXRpb247CithdHRyaWJ1dGUgZmxvYXQgdkluc3Rh
bmNlOwordmFyeWluZyB2ZWM0IGNvbG9yOwordm9pZCBtYWluKCkKK3sKKyAgZmxvYXQgcXVhZF9p
ZCA9IGZsb2F0KGRyYXdJRCAvIDIpOworICBmbG9hdCBjb2xvcl9pZCA9IHF1YWRfaWQgLSAoMy4w
ICogZmxvb3IocXVhZF9pZCAvIDMuMCkpOworICBpZiAoY29sb3JfaWQgPT0gMC4wKSB7CisgICAg
Y29sb3IgPSB2ZWM0KDEsIDAsIDAsIDEpOworICB9IGVsc2UgaWYgKGNvbG9yX2lkID09IDEuMCkg
eworICAgIGNvbG9yID0gdmVjNCgwLCAxLCAwLCAxKTsKKyAgfSBlbHNlIHsKKyAgICBjb2xvciA9
IHZlYzQoMCwgMCwgMSwgMSk7CisgIH0KKyAgbWF0MyB0cmFuc2Zvcm0gPSBtYXQzKDEuMCk7Cisg
IC8vIHZJbnN0YW5jZSBzdGFydHMgYXQgMS4wIG9uIGluc3RhbmNlZCBjYWxscworICBpZiAodklu
c3RhbmNlID49IDEuMCkgeworICAgIHRyYW5zZm9ybVswXVswXSA9IDAuNTsKKyAgICB0cmFuc2Zv
cm1bMV1bMV0gPSAwLjU7CisgIH0KKyAgaWYgKHZJbnN0YW5jZSA9PSAxLjApIHsKKyAgfSBlbHNl
IGlmICh2SW5zdGFuY2UgPT0gMi4wKSB7CisgICAgICB0cmFuc2Zvcm1bMl1bMF0gPSAwLjU7Cisg
IH0gZWxzZSBpZiAodkluc3RhbmNlID09IDMuMCkgeworICAgICAgdHJhbnNmb3JtWzJdWzFdID0g
MC41OworICB9IGVsc2UgaWYgKHZJbnN0YW5jZSA9PSA0LjApIHsKKyAgICAgIHRyYW5zZm9ybVsy
XVswXSA9IDAuNTsKKyAgICAgIHRyYW5zZm9ybVsyXVsxXSA9IDAuNTsKKyAgfQorICBnbF9Qb3Np
dGlvbiA9IHZlYzQodHJhbnNmb3JtICogdmVjMyh2UG9zaXRpb24sIDEuMCkgKiAyLjAgLSAxLjAs
IDEpOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJ2c2hhZGVyTm9EcmF3SUQiIHR5cGU9Ingt
c2hhZGVyL3gtdmVydGV4Ij4KK2F0dHJpYnV0ZSB2ZWMyIHZQb3NpdGlvbjsKK2F0dHJpYnV0ZSBm
bG9hdCB2SW5zdGFuY2U7Cit2YXJ5aW5nIHZlYzQgY29sb3I7Cit2b2lkIG1haW4oKQoreworICBj
b2xvciA9IHZlYzQoMS4wLCAwLjAsIDAuMCwgMS4wKTsKKyAgbWF0MyB0cmFuc2Zvcm0gPSBtYXQz
KDEuMCk7CisgIC8vIHZJbnN0YW5jZSBzdGFydHMgYXQgMS4wIG9uIGluc3RhbmNlZCBjYWxscwor
ICBpZiAodkluc3RhbmNlID49IDEuMCkgeworICAgIHRyYW5zZm9ybVswXVswXSA9IDAuNTsKKyAg
ICB0cmFuc2Zvcm1bMV1bMV0gPSAwLjU7CisgIH0KKyAgaWYgKHZJbnN0YW5jZSA9PSAxLjApIHsK
KyAgfSBlbHNlIGlmICh2SW5zdGFuY2UgPT0gMi4wKSB7CisgICAgICB0cmFuc2Zvcm1bMl1bMF0g
PSAwLjU7CisgIH0gZWxzZSBpZiAodkluc3RhbmNlID09IDMuMCkgeworICAgICAgdHJhbnNmb3Jt
WzJdWzFdID0gMC41OworICB9IGVsc2UgaWYgKHZJbnN0YW5jZSA9PSA0LjApIHsKKyAgICAgIHRy
YW5zZm9ybVsyXVswXSA9IDAuNTsKKyAgICAgIHRyYW5zZm9ybVsyXVsxXSA9IDAuNTsKKyAgfQor
ICBnbF9Qb3NpdGlvbiA9IHZlYzQodHJhbnNmb3JtICogdmVjMyh2UG9zaXRpb24sIDEuMCkgKiAy
LjAgLSAxLjAsIDEpOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IGlkPSJmc2hhZGVyIiB0eXBlPSJ4
LXNoYWRlci94LWZyYWdtZW50Ij4KK3ByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwordmFyeWluZyB2
ZWM0IGNvbG9yOwordm9pZCBtYWluKCkgeworICBnbF9GcmFnQ29sb3IgPSBjb2xvcjsKK30KKzwv
c2NyaXB0PgorPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGNhbnZhcyBpZD0iY2FudmFz
IiB3aWR0aD0iMTI4IiBoZWlnaHQ9IjEyOCI+IDwvY2FudmFzPgorPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+CisKKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7CitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0
IHZlcmlmaWVzIHRoZSBmdW5jdGlvbmFsaXR5IG9mIHRoZSBBTkdMRV9tdWx0aV9kcmF3IGV4dGVu
c2lvbiwgaWYgaXQgaXMgYXZhaWxhYmxlLiIpOworCitjb25zdCB3dHUgPSBXZWJHTFRlc3RVdGls
czsKK2NvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKK2Nv
bnN0IGdsID0gd3R1LmNyZWF0ZTNEQ29udGV4dChjYW52YXMpOworY29uc3QgaW5zdGFuY2VkRXh0
ID0gZ2wgJiYgZ2wuZ2V0RXh0ZW5zaW9uKCdBTkdMRV9pbnN0YW5jZWRfYXJyYXlzJyk7Citjb25z
dCBidWZmZXJVc2FnZVNldCA9IFsgZ2wuU1RBVElDX0RSQVcsIGdsLkRZTkFNSUNfRFJBVyBdOwor
CisvLyBDaGVjayBpZiB0aGUgZXh0ZW5zaW9uIGlzIGVpdGhlciBib3RoIGVuYWJsZWQgYW5kIHN1
cHBvcnRlZCBvcgorLy8gbm90IGVuYWJsZWQgYW5kIG5vdCBzdXBwb3J0ZWQuCitmdW5jdGlvbiBy
dW5TdXBwb3J0ZWRUZXN0KGV4dGVuc2lvbk5hbWUsIGV4dGVuc2lvbkVuYWJsZWQpIHsKKyAgY29u
c3Qgc3VwcG9ydGVkID0gZ2wuZ2V0U3VwcG9ydGVkRXh0ZW5zaW9ucygpOworICBpZiAoc3VwcG9y
dGVkLmluZGV4T2YoZXh0ZW5zaW9uTmFtZSkgPj0gMCkgeworICAgIGlmIChleHRlbnNpb25FbmFi
bGVkKSB7CisgICAgICB0ZXN0UGFzc2VkKGV4dGVuc2lvbk5hbWUgKyAnIGxpc3RlZCBhcyBzdXBw
b3J0ZWQgYW5kIGdldEV4dGVuc2lvbiBzdWNjZWVkZWQnKTsKKyAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0gZWxzZSB7CisgICAgICB0ZXN0RmFpbGVkKGV4dGVuc2lvbk5hbWUgKyAnIGxpc3RlZCBh
cyBzdXBwb3J0ZWQgYnV0IGdldEV4dGVuc2lvbiBmYWlsZWQnKTsKKyAgICB9CisgIH0gZWxzZSB7
CisgICAgaWYgKGV4dGVuc2lvbkVuYWJsZWQpIHsKKyAgICAgIHRlc3RGYWlsZWQoZXh0ZW5zaW9u
TmFtZSArICcgbm90IGxpc3RlZCBhcyBzdXBwb3J0ZWQgYnV0IGdldEV4dGVuc2lvbiBzdWNjZWVk
ZWQnKTsKKyAgICB9IGVsc2UgeworICAgICAgdGVzdFBhc3NlZChleHRlbnNpb25OYW1lICsgJyBu
b3QgbGlzdGVkIGFzIHN1cHBvcnRlZCBhbmQgZ2V0RXh0ZW5zaW9uIGZhaWxlZCAtLSB0aGlzIGlz
IGxlZ2FsJyk7CisgICAgfQorICB9CisgIHJldHVybiBmYWxzZTsKK30KKworZnVuY3Rpb24gcnVu
VGVzdCgpIHsKKyAgaWYgKCFnbCkgeworICAgIHJldHVybiBmdW5jdGlvbigpIHsKKyAgICAgIHRl
c3RGYWlsZWQoJ1dlYkdMIGNvbnRleHQgZG9lcyBub3QgZXhpc3QnKTsKKyAgICB9CisgIH0KKwor
ICBjb25zdCBleHRlbnNpb25OYW1lID0gJ1dFQkdMX211bHRpX2RyYXcnOworICBjb25zdCBleHQg
PSBnbC5nZXRFeHRlbnNpb24oZXh0ZW5zaW9uTmFtZSk7CisgIGlmICghcnVuU3VwcG9ydGVkVGVz
dChleHRlbnNpb25OYW1lLCBleHQpKSB7CisgICAgcmV0dXJuOworICB9CisKKyAgZG9UZXN0KGV4
dCwgZmFsc2UpOworICBkb1Rlc3QoZXh0LCB0cnVlKTsKK30KKworZnVuY3Rpb24gZG9UZXN0KGV4
dCwgaW5zdGFuY2VkKSB7CisKKyAgZnVuY3Rpb24gcnVuVmFsaWRhdGlvblRlc3RzKGJ1ZmZlclVz
YWdlKSB7CisgICAgY29uc3QgdmVydGV4QnVmZmVyID0gZ2wuY3JlYXRlQnVmZmVyKCk7CisgICAg
Z2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIHZlcnRleEJ1ZmZlcik7CisgICAgZ2wuYnVm
ZmVyRGF0YShnbC5BUlJBWV9CVUZGRVIsIG5ldyBGbG9hdDMyQXJyYXkoWyAwLjIsMC4yLCAwLjgs
MC4yLCAwLjUsMC44IF0pLCBidWZmZXJVc2FnZSk7CisKKyAgICBjb25zdCBpbmRleEJ1ZmZlciA9
IGdsLmNyZWF0ZUJ1ZmZlcigpOworICAgIGdsLmJpbmRCdWZmZXIoZ2wuRUxFTUVOVF9BUlJBWV9C
VUZGRVIsIGluZGV4QnVmZmVyKTsKKyAgICBnbC5idWZmZXJEYXRhKGdsLkVMRU1FTlRfQVJSQVlf
QlVGRkVSLCBuZXcgVWludDhBcnJheShbIDAsIDEsIDIsIDBdKSwgYnVmZmVyVXNhZ2UpOworCisg
ICAgY29uc3QgaW5zdGFuY2VCdWZmZXIgPSBnbC5jcmVhdGVCdWZmZXIoKTsKKyAgICBnbC5iaW5k
QnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgaW5zdGFuY2VCdWZmZXIpOworICAgIGdsLmJ1ZmZlckRh
dGEoZ2wuQVJSQVlfQlVGRkVSLCBuZXcgRmxvYXQzMkFycmF5KFsgMCwgMSwgMiwgMyBdKSwgYnVm
ZmVyVXNhZ2UpOworCisgICAgY29uc3QgcHJvZ3JhbSA9IHd0dS5zZXR1cFByb2dyYW0oZ2wsIFsi
dnNoYWRlck5vRHJhd0lEIiwgImZzaGFkZXIiXSwgWyJ2UG9zaXRpb24iLCAidkluc3RhbmNlIl0s
IFswLCAxXSk7CisgICAgZXhwZWN0VHJ1ZShwcm9ncmFtICE9IG51bGwsICJjYW4gY29tcGlsZSBz
aW1wbGUgcHJvZ3JhbSIpOworCisgICAgZnVuY3Rpb24gc2V0dXBEcmF3QXJyYXlzKCkgeworICAg
ICAgZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIsIHZlcnRleEJ1ZmZlcik7CisgICAgICBn
bC5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSgwKTsKKyAgICAgIGdsLnZlcnRleEF0dHJpYlBvaW50
ZXIoMCwgMiwgZ2wuRkxPQVQsIGZhbHNlLCAwLCAwKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBz
ZXR1cERyYXdFbGVtZW50cygpIHsKKyAgICAgIGdsLmJpbmRCdWZmZXIoZ2wuRUxFTUVOVF9BUlJB
WV9CVUZGRVIsIGluZGV4QnVmZmVyKTsKKyAgICAgIGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVG
RkVSLCB2ZXJ0ZXhCdWZmZXIpOworICAgICAgZ2wuZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoMCk7
CisgICAgICBnbC52ZXJ0ZXhBdHRyaWJQb2ludGVyKDAsIDIsIGdsLkZMT0FULCBmYWxzZSwgMCwg
MCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gc2V0dXBJbnN0YW5jZWQoKSB7CisgICAgICBnbC5i
aW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgaW5zdGFuY2VCdWZmZXIpOworICAgICAgZ2wuZW5h
YmxlVmVydGV4QXR0cmliQXJyYXkoMSk7CisgICAgICBnbC52ZXJ0ZXhBdHRyaWJQb2ludGVyKDEs
IDEsIGdsLkZMT0FULCBmYWxzZSwgMCwgMCk7CisgICAgICBpZiAod3R1LmdldERlZmF1bHQzRENv
bnRleHRWZXJzaW9uKCkgPCAyKSB7CisgICAgICAgIGluc3RhbmNlZEV4dC52ZXJ0ZXhBdHRyaWJE
aXZpc29yQU5HTEUoMSwgMSk7CisgICAgICB9IGVsc2UgeworICAgICAgICBnbC52ZXJ0ZXhBdHRy
aWJEaXZpc29yKDEsIDEpOworICAgICAgfQorICAgIH0KKworICAgIGZ1bmN0aW9uIHNldHVwRHJh
d0FycmF5c0luc3RhbmNlZCgpIHsKKyAgICAgIHNldHVwRHJhd0FycmF5cygpOworICAgICAgc2V0
dXBJbnN0YW5jZWQoKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBzZXR1cERyYXdFbGVtZW50c0lu
c3RhbmNlZCgpIHsKKyAgICAgIHNldHVwRHJhd0VsZW1lbnRzKCk7CisgICAgICBzZXR1cEluc3Rh
bmNlZCgpOworICAgIH0KKworICAgIC8vIFdyYXAgYSBkcmF3IGNhbGwgaW4gYSBmdW5jdGlvbiB0
byBzZXR1cCB0aGUgZHJhdyBjYWxsLCBleGVjdXRlLAorICAgIC8vIGFuZCBjaGVjayBlcnJvcnMu
CisgICAgLy8gVGhlIGBkcmF3RnVuY2AgaXMgb25lIG9mIHRoZSBleHRlbnNpb24gZW50cnlwb2lu
dHMgYmVpbmcgdGVzdGVkLiBJdCBtYXkKKyAgICAvLyBiZSB1bmRlZmluZWQgaWYgdGhhdCBlbnRy
eXBvaW50IGlzIG5vdCBzdXBwb3J0ZWQgb24gdGhlIGNvbnRleHQKKyAgICBmdW5jdGlvbiBtYWtl
RHJhd0NoZWNrKGRyYXdGdW5jLCBzZXR1cCkgeworICAgICAgaWYgKCFkcmF3RnVuYykgeworICAg
ICAgICByZXR1cm4gZnVuY3Rpb24oKSB7fTsKKyAgICAgIH0KKyAgICAgIHJldHVybiBmdW5jdGlv
bihmX2FyZ3MsIGV4cGVjdCwgbXNnKSB7CisgICAgICAgIHNldHVwKCk7CisgICAgICAgIGRyYXdG
dW5jLmFwcGx5KGV4dCwgZl9hcmdzKTsKKyAgICAgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwg
ZXhwZWN0LCBkcmF3RnVuYy5uYW1lICsgIiAiICsgbXNnKTsKKyAgICAgICAgZ2wuZGlzYWJsZVZl
cnRleEF0dHJpYkFycmF5KDApOworICAgICAgICBnbC5kaXNhYmxlVmVydGV4QXR0cmliQXJyYXko
MSk7CisgICAgICB9CisgICAgfQorCisgICAgY29uc3QgY2hlY2tNdWx0aURyYXdBcnJheXMgPSBt
YWtlRHJhd0NoZWNrKAorICAgICAgICBleHQubXVsdGlEcmF3QXJyYXlzV0VCR0wsIHNldHVwRHJh
d0FycmF5cyk7CisgICAgY29uc3QgY2hlY2tNdWx0aURyYXdFbGVtZW50cyA9IG1ha2VEcmF3Q2hl
Y2soCisgICAgICAgIGV4dC5tdWx0aURyYXdFbGVtZW50c1dFQkdMLCBzZXR1cERyYXdFbGVtZW50
cyk7CisgICAgY29uc3QgY2hlY2tNdWx0aURyYXdBcnJheXNJbnN0YW5jZWQgPSBtYWtlRHJhd0No
ZWNrKAorICAgICAgICBleHQubXVsdGlEcmF3QXJyYXlzSW5zdGFuY2VkV0VCR0wsIHNldHVwRHJh
d0FycmF5c0luc3RhbmNlZCk7CisgICAgY29uc3QgY2hlY2tNdWx0aURyYXdFbGVtZW50c0luc3Rh
bmNlZCA9IG1ha2VEcmF3Q2hlY2soCisgICAgICAgIGV4dC5tdWx0aURyYXdFbGVtZW50c0luc3Rh
bmNlZFdFQkdMLCBzZXR1cERyYXdFbGVtZW50c0luc3RhbmNlZCk7CisKKyAgICBnbC51c2VQcm9n
cmFtKHByb2dyYW0pOworCisgICAgLy8gQ2hlY2sgdGhhdCBkcmF3aW5nIGEgc2luZ2xlIHRyaWFu
Z2xlIHdvcmtzCisgICAgaWYgKCFpbnN0YW5jZWQpIHsKKyAgICAgIGNoZWNrTXVsdGlEcmF3QXJy
YXlzKAorICAgICAgICBbZ2wuVFJJQU5HTEVTLCBbMF0sIDAsIFszXSwgMCwgMV0sCisgICAgICAg
IGdsLk5PX0VSUk9SLCAid2l0aCBnbC5UUklBTkdMRVMiKTsKKyAgICAgIGNoZWNrTXVsdGlEcmF3
RWxlbWVudHMoCisgICAgICAgIFtnbC5UUklBTkdMRVMsIFszXSwgMCwgZ2wuVU5TSUdORURfQllU
RSwgWzBdLCAwLCAxXSwKKyAgICAgICAgZ2wuTk9fRVJST1IsICJ3aXRoIGdsLlRSSUFOR0xFUyIp
OworICAgIH0gZWxzZSB7CisgICAgICBjaGVja011bHRpRHJhd0VsZW1lbnRzSW5zdGFuY2VkKAor
ICAgICAgICBbZ2wuVFJJQU5HTEVTLCBbM10sIDAsIGdsLlVOU0lHTkVEX0JZVEUsIFswXSwgMCwg
WzFdLCAwLCAxXSwKKyAgICAgICAgZ2wuTk9fRVJST1IsICJ3aXRoIGdsLlRSSUFOR0xFUyIpOwor
ICAgICAgY2hlY2tNdWx0aURyYXdBcnJheXNJbnN0YW5jZWQoCisgICAgICAgIFtnbC5UUklBTkdM
RVMsIFswXSwgMCwgWzNdLCAwLCBbMV0sIDAsIDFdLAorICAgICAgICBnbC5OT19FUlJPUiwgIndp
dGggZ2wuVFJJQU5HTEVTIik7CisgICAgfQorCisgICAgLy8gWmVybyBkcmF3Y291bnQgcGVybWl0
dGVkCisgICAgaWYgKCFpbnN0YW5jZWQpIHsKKyAgICAgIGNoZWNrTXVsdGlEcmF3QXJyYXlzKAor
ICAgICAgICBbZ2wuVFJJQU5HTEVTLCBbMF0sIDAsIFszXSwgMCwgMF0sCisgICAgICAgIGdsLk5P
X0VSUk9SLCAid2l0aCBkcmF3Y291bnQgPT0gMCIpOworICAgICAgY2hlY2tNdWx0aURyYXdFbGVt
ZW50cygKKyAgICAgICAgW2dsLlRSSUFOR0xFUywgWzNdLCAwLCBnbC5VTlNJR05FRF9CWVRFLCBb
MF0sIDAsIDBdLAorICAgICAgICBnbC5OT19FUlJPUiwgIndpdGggZHJhd2NvdW50ID09IDAiKTsK
KyAgICB9IGVsc2UgeworICAgICAgY2hlY2tNdWx0aURyYXdFbGVtZW50c0luc3RhbmNlZCgKKyAg
ICAgICAgW2dsLlRSSUFOR0xFUywgWzNdLCAwLCBnbC5VTlNJR05FRF9CWVRFLCBbMF0sIDAsIFsx
XSwgMCwgMF0sCisgICAgICAgIGdsLk5PX0VSUk9SLCAid2l0aCBkcmF3Y291bnQgPT0gMCIpOwor
ICAgICAgY2hlY2tNdWx0aURyYXdBcnJheXNJbnN0YW5jZWQoCisgICAgICAgIFtnbC5UUklBTkdM
RVMsIFswXSwgMCwgWzNdLCAwLCBbMV0sIDAsIDBdLAorICAgICAgICBnbC5OT19FUlJPUiwgIndp
dGggZHJhd2NvdW50ID09IDAiKTsKKyAgICB9CisKKyAgICAvLyBDaGVjayBuZWdhdGl2ZSBkcmF3
Y291bnQKKyAgICBpZiAoIWluc3RhbmNlZCkgeworICAgICAgY2hlY2tNdWx0aURyYXdBcnJheXMo
CisgICAgICAgIFtnbC5UUklBTkdMRVMsIFswXSwgMCwgWzNdLCAwLCAtMV0sCisgICAgICAgIGds
LklOVkFMSURfVkFMVUUsICJ3aXRoIGRyYXdjb3VudCA8IDAiKTsKKyAgICAgIGNoZWNrTXVsdGlE
cmF3RWxlbWVudHMoCisgICAgICAgIFtnbC5UUklBTkdMRVMsIFszXSwgMCwgZ2wuVU5TSUdORURf
QllURSwgWzBdLCAwLCAtMV0sCisgICAgICAgIGdsLklOVkFMSURfVkFMVUUsICJ3aXRoIGRyYXdj
b3VudCA8IDAiKTsKKyAgICB9IGVsc2UgeworICAgICAgY2hlY2tNdWx0aURyYXdFbGVtZW50c0lu
c3RhbmNlZCgKKyAgICAgICAgW2dsLlRSSUFOR0xFUywgWzNdLCAwLCBnbC5VTlNJR05FRF9CWVRF
LCBbMF0sIDAsIFsxXSwgMCwgLTFdLAorICAgICAgICBnbC5JTlZBTElEX1ZBTFVFLCAid2l0aCBk
cmF3Y291bnQgPCAwIik7CisgICAgICBjaGVja011bHRpRHJhd0FycmF5c0luc3RhbmNlZCgKKyAg
ICAgICAgW2dsLlRSSUFOR0xFUywgWzBdLCAwLCBbM10sIDAsIFsxXSwgMCwgLTFdLAorICAgICAg
ICBnbC5JTlZBTElEX1ZBTFVFLCAid2l0aCBkcmF3Y291bnQgPCAwIik7CisgICAgfQorCisgICAg
Ly8gQ2hlY2sgb2Zmc2V0cyBncmVhdGVyIHRoYW4gYXJyYXkgbGVuZ3RoCisgICAgaWYgKCFpbnN0
YW5jZWQpIHsKKyAgICAgIGNoZWNrTXVsdGlEcmF3QXJyYXlzKAorICAgICAgICBbZ2wuVFJJQU5H
TEVTLCBbMF0sIDEsIFszXSwgMCwgMV0sCisgICAgICAgIGdsLklOVkFMSURfT1BFUkFUSU9OLCAi
d2l0aCBmaXJzdHNTdGFydCA+PSBmaXJzdHNMaXN0Lmxlbmd0aCIpOworICAgICAgY2hlY2tNdWx0
aURyYXdBcnJheXMoCisgICAgICAgIFtnbC5UUklBTkdMRVMsIFswXSwgMCwgWzNdLCAxLCAxXSwK
KyAgICAgICAgZ2wuSU5WQUxJRF9PUEVSQVRJT04sICJ3aXRoIGNvdW50c1N0YXJ0ID49IGNvdW50
c0xpc3QubGVuZ3RoIik7CisKKyAgICAgIGNoZWNrTXVsdGlEcmF3RWxlbWVudHMoCisgICAgICAg
IFtnbC5UUklBTkdMRVMsIFszXSwgMSwgZ2wuVU5TSUdORURfQllURSwgWzBdLCAwLCAxXSwKKyAg
ICAgICAgZ2wuSU5WQUxJRF9PUEVSQVRJT04sICJ3aXRoIGNvdW50c1N0YXJ0ID49IGNvdW50c0xp
c3QubGVuZ3RoIik7CisgICAgICBjaGVja011bHRpRHJhd0VsZW1lbnRzKAorICAgICAgICBbZ2wu
VFJJQU5HTEVTLCBbM10sIDAsIGdsLlVOU0lHTkVEX0JZVEUsIFswXSwgMSwgMV0sCisgICAgICAg
IGdsLklOVkFMSURfT1BFUkFUSU9OLCAid2l0aCBvZmZzZXRzU3RhcnQgPj0gb2Zmc2V0c0xpc3Qu
bGVuZ3RoIik7CisgICAgfSBlbHNlIHsKKyAgICAgIGNoZWNrTXVsdGlEcmF3QXJyYXlzSW5zdGFu
Y2VkKAorICAgICAgICBbZ2wuVFJJQU5HTEVTLCBbMF0sIDEsIFszXSwgMCwgWzFdLCAwLCAxXSwK
KyAgICAgICAgZ2wuSU5WQUxJRF9PUEVSQVRJT04sICJ3aXRoIGZpcnN0c1N0YXJ0ID49IGZpcnN0
c0xpc3QubGVuZ3RoIik7CisgICAgICBjaGVja011bHRpRHJhd0FycmF5c0luc3RhbmNlZCgKKyAg
ICAgICAgW2dsLlRSSUFOR0xFUywgWzBdLCAwLCBbM10sIDEsIFsxXSwgMCwgMV0sCisgICAgICAg
IGdsLklOVkFMSURfT1BFUkFUSU9OLCAid2l0aCBjb3VudHNTdGFydCA+PSBjb3VudHNMaXN0Lmxl
bmd0aCIpOworICAgICAgY2hlY2tNdWx0aURyYXdBcnJheXNJbnN0YW5jZWQoCisgICAgICAgIFtn
bC5UUklBTkdMRVMsIFswXSwgMCwgWzNdLCAwLCBbMV0sIDEsIDFdLAorICAgICAgICBnbC5JTlZB
TElEX09QRVJBVElPTiwgIndpdGggaW5zdGFuY2VDb3VudHNTdGFydCA+PSBpbnN0YW5jZUNvdW50
c0xpc3QubGVuZ3RoIik7CisKKyAgICAgIGNoZWNrTXVsdGlEcmF3RWxlbWVudHNJbnN0YW5jZWQo
CisgICAgICAgIFtnbC5UUklBTkdMRVMsIFszXSwgMSwgZ2wuVU5TSUdORURfQllURSwgWzBdLCAw
LCBbMV0sIDAsIDFdLAorICAgICAgICBnbC5JTlZBTElEX09QRVJBVElPTiwgIndpdGggY291bnRz
U3RhcnQgPj0gY291bnRzTGlzdC5sZW5ndGgiKTsKKyAgICAgIGNoZWNrTXVsdGlEcmF3RWxlbWVu
dHNJbnN0YW5jZWQoCisgICAgICAgIFtnbC5UUklBTkdMRVMsIFszXSwgMCwgZ2wuVU5TSUdORURf
QllURSwgWzBdLCAxLCBbMV0sIDAsIDFdLAorICAgICAgICBnbC5JTlZBTElEX09QRVJBVElPTiwg
IndpdGggb2Zmc2V0c1N0YXJ0ID49IG9mZnNldHNMaXN0Lmxlbmd0aCIpOworICAgICAgY2hlY2tN
dWx0aURyYXdFbGVtZW50c0luc3RhbmNlZCgKKyAgICAgICAgW2dsLlRSSUFOR0xFUywgWzNdLCAw
LCBnbC5VTlNJR05FRF9CWVRFLCBbMF0sIDAsIFsxXSwgMSwgMV0sCisgICAgICAgIGdsLklOVkFM
SURfT1BFUkFUSU9OLCAid2l0aCBpbnN0YW5jZUNvdW50c1N0YXJ0ID49IGluc3RhbmNlQ291bnRz
TGlzdC5sZW5ndGgiKTsKKyAgICB9CisgIH0KKworICBmdW5jdGlvbiBydW5TaGFkZXJUZXN0cyhi
dWZmZXJVc2FnZSkgeworICAgIGNvbnN0IGlsbGVnYWxQcm9ncmFtID0gd3R1LnNldHVwUHJvZ3Jh
bShnbCwgWyJ2c2hhZGVySWxsZWdhbERyYXdJRCIsICJmc2hhZGVyIl0sIFsidlBvc2l0aW9uIl0s
IFswXSk7CisgICAgZXhwZWN0VHJ1ZShpbGxlZ2FsUHJvZ3JhbSA9PSBudWxsLCAiY2Fubm90IGNv
bXBpbGUgcHJvZ3JhbSB3aXRoIGdsX0RyYXdJRCBidXQgbm8gZXh0ZW5zaW9uIGRpcmVjdGl2ZSIp
OworCisgICAgY29uc3QgZHJhd0lEUHJvZ3JhbSA9IHd0dS5zZXR1cFByb2dyYW0oZ2wsIFsidnNo
YWRlckRyYXdJRFplcm8iLCAiZnNoYWRlciJdLCBbInZQb3NpdGlvbiJdLCBbMF0pOworICAgIHd0
dS5zZXR1cFByb2dyYW0oZ2wsIFsidnNoYWRlckRyYXdJRFplcm8iLCAiZnNoYWRlciJdLCBbInZQ
b3NpdGlvbiJdLCBbMF0pOworICAgIGV4cGVjdFRydWUoZHJhd0lEUHJvZ3JhbSAhPT0gbnVsbCwg
ImNhbiBjb21waWxlIHByb2dyYW0gd2l0aCBnbF9EcmF3SUQiKTsKKyAgICBnbC51c2VQcm9ncmFt
KGRyYXdJRFByb2dyYW0pOworICAgIGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCBnbC5j
cmVhdGVCdWZmZXIoKSk7CisgICAgZ2wuYnVmZmVyRGF0YShnbC5BUlJBWV9CVUZGRVIsIG5ldyBG
bG9hdDMyQXJyYXkoWyAwLDAsIDEsMCwgMCwxLCAwLDEsIDEsMCwgMSwxIF0pLCBidWZmZXJVc2Fn
ZSk7CisgICAgZ2wuZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoMCk7CisgICAgZ2wudmVydGV4QXR0
cmliUG9pbnRlcigwLCAyLCBnbC5GTE9BVCwgZmFsc2UsIDAsIDApOworICAgIGdsLmRyYXdBcnJh
eXMoZ2wuVFJJQU5HTEVTLCAwLCA2KTsKKyAgICB3dHUuY2hlY2tDYW52YXMoZ2wsIFswLCAyNTUs
IDAsIDI1NV0sICJnbF9EcmF3SUQgaXMgMCBmb3Igbm9uLU11bHRpKiBkcmF3IGNhbGxzIiwgMCk7
CisgIH0KKworICBmdW5jdGlvbiBydW5QaXhlbFRlc3RzKGJ1ZmZlclVzYWdlKSB7CisgICAgLy8g
QW4gYXJyYXkgb2YgcXVhZHMgaXMgdGlsZWQgYWNyb3NzIHRoZSBzY3JlZW4uCisgICAgLy8gZ2xf
RHJhd0lEIGlzIGNoZWNrZWQgYnkgdXNpbmcgaXQgdG8gc2VsZWN0IHRoZSBjb2xvciBvZiB0aGUg
ZHJhdy4KKyAgICAvLyBJbnN0YW5jZWQgZW50cnlwb2ludHMgYXJlIHRlc3RlZCBoZXJlIHNjYWxp
bmcgYW5kIHRoZW4gaW5zdGFuY2luZyB0aGUKKyAgICAvLyBhcnJheSBvZiBxdWFkcyBvdmVyIGZv
dXIgcXVhZHJhbnRzIG9uIHRoZSBzY3JlZW4uCisKKyAgICAvLyBUaGVzZSB0ZXN0cyBhbHNvIGlu
Y2x1ZGUgIm1hbnlEcmF3IiB0ZXN0cyB3aGljaCBlbXVsYXRlIGEgbXVsdGlEcmF3IHdpdGgKKyAg
ICAvLyBhIEphdmFzY3JpcHQgZm9yLWxvb3AgYW5kIGdsX0RyYXdJRCB3aXRoIGEgdW5pZm9ybSBj
b25zdGlhYmxlLiBUaGV5IGFyZQorICAgIC8vIGluY2x1ZGVkIHRvIGVuc3VyZSB0aGUgdGVzdCBp
cyB3cml0dGVuIGNvcnJlY3RseS4KKworICAgIGNvbnN0IHdpZHRoID0gZ2wuY2FudmFzLndpZHRo
OworICAgIGNvbnN0IGhlaWdodCA9IGdsLmNhbnZhcy5oZWlnaHQ7CisgICAgY29uc3QgeF9jb3Vu
dCA9IDg7CisgICAgY29uc3QgeV9jb3VudCA9IDg7CisgICAgY29uc3QgcXVhZF9jb3VudCA9IHhf
Y291bnQgKiB5X2NvdW50OworICAgIGNvbnN0IHRyaV9jb3VudCA9IHF1YWRfY291bnQgKiAyOwor
ICAgIGNvbnN0IHRpbGVTaXplID0gWyAxL3hfY291bnQsIDEveV9jb3VudCBdOworICAgIGNvbnN0
IHRpbGVQaXhlbFNpemUgPSBbIE1hdGguZmxvb3Iod2lkdGggLyB4X2NvdW50KSwgTWF0aC5mbG9v
cihoZWlnaHQgLyB5X2NvdW50KSBdOworICAgIGNvbnN0IHF1YWRSYWRpdXMgPSBbIDAuMjUgKiB0
aWxlU2l6ZVswXSwgMC4yNSAqIHRpbGVTaXplWzFdIF07CisgICAgY29uc3QgcGl4ZWxDaGVja1Np
emUgPSBbIE1hdGguZmxvb3IocXVhZFJhZGl1c1swXSAqIHdpZHRoKSwgTWF0aC5mbG9vcihxdWFk
UmFkaXVzWzFdICogaGVpZ2h0KSBdOworCisgICAgZnVuY3Rpb24gZ2V0VGlsZUNlbnRlcih4LCB5
KSB7CisgICAgICByZXR1cm4gWyB0aWxlU2l6ZVswXSAqICgwLjUgKyB4KSwgdGlsZVNpemVbMV0g
KiAoMC41ICsgeSkgXTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBnZXRRdWFkVmVydGljZXMoeCwg
eSkgeworICAgICAgY29uc3QgY2VudGVyID0gZ2V0VGlsZUNlbnRlcih4LCB5KTsKKyAgICAgIHJl
dHVybiBbCisgICAgICAgIFtjZW50ZXJbMF0gLSBxdWFkUmFkaXVzWzBdLCBjZW50ZXJbMV0gLSBx
dWFkUmFkaXVzWzFdLCAwXSwKKyAgICAgICAgW2NlbnRlclswXSArIHF1YWRSYWRpdXNbMF0sIGNl
bnRlclsxXSAtIHF1YWRSYWRpdXNbMV0sIDBdLAorICAgICAgICBbY2VudGVyWzBdICsgcXVhZFJh
ZGl1c1swXSwgY2VudGVyWzFdICsgcXVhZFJhZGl1c1sxXSwgMF0sCisgICAgICAgIFtjZW50ZXJb
MF0gLSBxdWFkUmFkaXVzWzBdLCBjZW50ZXJbMV0gKyBxdWFkUmFkaXVzWzFdLCAwXSwKKyAgICAg
IF0KKyAgICB9CisKKyAgICBjb25zdCBpbmRpY2VzRGF0YSA9IFtdOworICAgIGNvbnN0IHZlcnRp
Y2VzRGF0YSA9IFtdOworICAgIGNvbnN0IG5vbkluZGV4ZWRWZXJ0aWNlc0RhdGEgPSBbXTsKKyAg
ICB7CisgICAgICBjb25zdCBpcyA9IG5ldyBVaW50MTZBcnJheShbMCwgMSwgMiwgMCwgMiwgM10p
OworICAgICAgZm9yIChsZXQgeSA9IDA7IHkgPCB5X2NvdW50OyArK3kpIHsKKyAgICAgICAgZm9y
IChsZXQgeCA9IDA7IHggPCB4X2NvdW50OyArK3gpIHsKKyAgICAgICAgICBjb25zdCBxdWFkSW5k
ZXggPSB5ICogeF9jb3VudCArIHg7CisgICAgICAgICAgY29uc3Qgc3RhcnRpbmdfaW5kZXggPSA0
ICogcXVhZEluZGV4OworICAgICAgICAgIGNvbnN0IHZzID0gZ2V0UXVhZFZlcnRpY2VzKHgsIHkp
OworICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaXMubGVuZ3RoOyArK2kpIHsKKyAgICAg
ICAgICAgIGluZGljZXNEYXRhLnB1c2goc3RhcnRpbmdfaW5kZXggKyBpc1tpXSk7CisgICAgICAg
ICAgfQorICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdnMubGVuZ3RoOyArK2kpIHsKKyAg
ICAgICAgICAgIGZvciAobGV0IHYgPSAwOyB2IDwgdnNbaV0ubGVuZ3RoOyArK3YpIHZlcnRpY2Vz
RGF0YS5wdXNoKHZzW2ldW3ZdKTsKKyAgICAgICAgICB9CisgICAgICAgICAgZm9yIChsZXQgaSA9
IDA7IGkgPCBpcy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgZm9yIChsZXQgdiA9IDA7IHYg
PCB2c1tpc1tpXV0ubGVuZ3RoOyArK3YpIG5vbkluZGV4ZWRWZXJ0aWNlc0RhdGEucHVzaCh2c1tp
c1tpXV1bdl0pOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKworICAg
IGNvbnN0IGluZGljZXMgPSBuZXcgVWludDE2QXJyYXkoaW5kaWNlc0RhdGEpOworICAgIGNvbnN0
IHZlcnRpY2VzID0gbmV3IEZsb2F0MzJBcnJheSh2ZXJ0aWNlc0RhdGEpOworICAgIGNvbnN0IG5v
bkluZGV4ZWRWZXJ0aWNlcyA9IG5ldyBGbG9hdDMyQXJyYXkobm9uSW5kZXhlZFZlcnRpY2VzRGF0
YSk7CisKKyAgICBjb25zdCBpbmRleEJ1ZmZlciA9IGdsLmNyZWF0ZUJ1ZmZlcigpOworICAgIGNv
bnN0IHZlcnRleEJ1ZmZlciA9IGdsLmNyZWF0ZUJ1ZmZlcigpOworICAgIGNvbnN0IG5vbkluZGV4
ZWRWZXJ0ZXhCdWZmZXIgPSBnbC5jcmVhdGVCdWZmZXIoKTsKKyAgICBjb25zdCBpbnN0YW5jZUJ1
ZmZlciA9IGdsLmNyZWF0ZUJ1ZmZlcigpOworCisgICAgZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9C
VUZGRVIsIG5vbkluZGV4ZWRWZXJ0ZXhCdWZmZXIpOworICAgIGdsLmJ1ZmZlckRhdGEoZ2wuQVJS
QVlfQlVGRkVSLCBub25JbmRleGVkVmVydGljZXMsIGJ1ZmZlclVzYWdlKTsKKworICAgIGdsLmJp
bmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCB2ZXJ0ZXhCdWZmZXIpOworICAgIGdsLmJ1ZmZlckRh
dGEoZ2wuQVJSQVlfQlVGRkVSLCB2ZXJ0aWNlcywgYnVmZmVyVXNhZ2UpOworCisgICAgZ2wuYmlu
ZEJ1ZmZlcihnbC5FTEVNRU5UX0FSUkFZX0JVRkZFUiwgaW5kZXhCdWZmZXIpOworICAgIGdsLmJ1
ZmZlckRhdGEoZ2wuRUxFTUVOVF9BUlJBWV9CVUZGRVIsIGluZGljZXMsIGJ1ZmZlclVzYWdlKTsK
KworICAgIGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCBpbnN0YW5jZUJ1ZmZlcik7Cisg
ICAgZ2wuYnVmZmVyRGF0YShnbC5BUlJBWV9CVUZGRVIsIG5ldyBGbG9hdDMyQXJyYXkoWzEsIDIs
IDMsIDRdKSwgYnVmZmVyVXNhZ2UpOworCisgICAgZnVuY3Rpb24gY2hlY2tSZXN1bHQoY29uZmln
LCBtc2cpIHsKKyAgICAgIGNvbnN0IHJlY3RzID0gW107CisgICAgICBjb25zdCBleHBlY3RlZCA9
IFsKKyAgICAgICAgWzI1NSwgMCwgMCwgMjU1XSwKKyAgICAgICAgWzAsIDI1NSwgMCwgMjU1XSwK
KyAgICAgICAgWzAsIDAsIDI1NSwgMjU1XSwKKyAgICAgIF07CisgICAgICBmb3IgKGxldCB5ID0g
MDsgeSA8IHlfY291bnQ7ICsreSkgeworICAgICAgICBmb3IgKGxldCB4ID0gMDsgeCA8IHhfY291
bnQ7ICsreCkgeworICAgICAgICAgIGNvbnN0IGNlbnRlcl94ID0geCAqIHRpbGVQaXhlbFNpemVb
MF0gKyBNYXRoLmZsb29yKHRpbGVQaXhlbFNpemVbMF0gLyAyKTsKKyAgICAgICAgICBjb25zdCBj
ZW50ZXJfeSA9IHkgKiB0aWxlUGl4ZWxTaXplWzFdICsgTWF0aC5mbG9vcih0aWxlUGl4ZWxTaXpl
WzFdIC8gMik7CisgICAgICAgICAgY29uc3QgcXVhZElEID0geSAqIHhfY291bnQgKyB4OworICAg
ICAgICAgIGNvbnN0IGNvbG9ySUQgPSBjb25maWcuZHJhd0lEID8gcXVhZElEICUgMyA6IDA7Cisg
ICAgICAgICAgaWYgKGNvbmZpZy5pbnN0YW5jZWQpIHsKKyAgICAgICAgICAgIHJlY3RzLnB1c2go
d3R1Lm1ha2VDaGVja1JlY3QoCisgICAgICAgICAgICAgICAgY2VudGVyX3ggLyAyIC0gTWF0aC5m
bG9vcihwaXhlbENoZWNrU2l6ZVswXSAvIDQpLAorICAgICAgICAgICAgICAgIGNlbnRlcl95IC8g
MiAtIE1hdGguZmxvb3IocGl4ZWxDaGVja1NpemVbMV0gLyA0KSwKKyAgICAgICAgICAgICAgICBw
aXhlbENoZWNrU2l6ZVswXSAvIDIsCisgICAgICAgICAgICAgICAgcGl4ZWxDaGVja1NpemVbMV0g
LyAyLAorICAgICAgICAgICAgICAgIGV4cGVjdGVkW2NvbG9ySURdLAorICAgICAgICAgICAgICAg
IG1zZyArICIgKCIgKyB4ICsgIiwiICsgeSArICIpIiwgMCkpOworICAgICAgICAgICAgcmVjdHMu
cHVzaCh3dHUubWFrZUNoZWNrUmVjdCgKKyAgICAgICAgICAgICAgICBjZW50ZXJfeCAvIDIgLSBN
YXRoLmZsb29yKHBpeGVsQ2hlY2tTaXplWzBdIC8gNCkgKyB3aWR0aCAvIDIsCisgICAgICAgICAg
ICAgICAgY2VudGVyX3kgLyAyIC0gTWF0aC5mbG9vcihwaXhlbENoZWNrU2l6ZVsxXSAvIDQpLAor
ICAgICAgICAgICAgICAgIHBpeGVsQ2hlY2tTaXplWzBdIC8gMiwKKyAgICAgICAgICAgICAgICBw
aXhlbENoZWNrU2l6ZVsxXSAvIDIsCisgICAgICAgICAgICAgICAgZXhwZWN0ZWRbY29sb3JJRF0s
CisgICAgICAgICAgICAgICAgbXNnICsgIiAoIiArIHggKyAiLCIgKyB5ICsgIikiLCAwKSk7Cisg
ICAgICAgICAgICByZWN0cy5wdXNoKHd0dS5tYWtlQ2hlY2tSZWN0KAorICAgICAgICAgICAgICAg
IGNlbnRlcl94IC8gMiAtIE1hdGguZmxvb3IocGl4ZWxDaGVja1NpemVbMF0gLyA0KSwKKyAgICAg
ICAgICAgICAgICBjZW50ZXJfeSAvIDIgLSBNYXRoLmZsb29yKHBpeGVsQ2hlY2tTaXplWzFdIC8g
NCkgKyBoZWlnaHQgLyAyLAorICAgICAgICAgICAgICAgIHBpeGVsQ2hlY2tTaXplWzBdIC8gMiwK
KyAgICAgICAgICAgICAgICBwaXhlbENoZWNrU2l6ZVsxXSAvIDIsCisgICAgICAgICAgICAgICAg
ZXhwZWN0ZWRbY29sb3JJRF0sCisgICAgICAgICAgICAgICAgbXNnICsgIiAoIiArIHggKyAiLCIg
KyB5ICsgIikiLCAwKSk7CisgICAgICAgICAgICByZWN0cy5wdXNoKHd0dS5tYWtlQ2hlY2tSZWN0
KAorICAgICAgICAgICAgICAgIGNlbnRlcl94IC8gMiAtIE1hdGguZmxvb3IocGl4ZWxDaGVja1Np
emVbMF0gLyA0KSArIHdpZHRoIC8gMiwKKyAgICAgICAgICAgICAgICBjZW50ZXJfeSAvIDIgLSBN
YXRoLmZsb29yKHBpeGVsQ2hlY2tTaXplWzFdIC8gNCkgKyBoZWlnaHQgLyAyLAorICAgICAgICAg
ICAgICAgIHBpeGVsQ2hlY2tTaXplWzBdIC8gMiwKKyAgICAgICAgICAgICAgICBwaXhlbENoZWNr
U2l6ZVsxXSAvIDIsCisgICAgICAgICAgICAgICAgZXhwZWN0ZWRbY29sb3JJRF0sCisgICAgICAg
ICAgICAgICAgbXNnICsgIiAoIiArIHggKyAiLCIgKyB5ICsgIikiLCAwKSk7CisgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgIHJlY3RzLnB1c2god3R1Lm1ha2VDaGVja1JlY3QoCisgICAg
ICAgICAgICAgICAgY2VudGVyX3ggLSBNYXRoLmZsb29yKHBpeGVsQ2hlY2tTaXplWzBdIC8gMiks
CisgICAgICAgICAgICAgICAgY2VudGVyX3kgLSBNYXRoLmZsb29yKHBpeGVsQ2hlY2tTaXplWzFd
IC8gMiksCisgICAgICAgICAgICAgICAgcGl4ZWxDaGVja1NpemVbMF0sCisgICAgICAgICAgICAg
ICAgcGl4ZWxDaGVja1NpemVbMV0sCisgICAgICAgICAgICAgICAgZXhwZWN0ZWRbY29sb3JJRF0s
CisgICAgICAgICAgICAgICAgbXNnICsgIiAoIiArIHggKyAiLCIgKyB5ICsgIikiLCAwKSk7Cisg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgICB3dHUuY2hlY2tDYW52YXNSZWN0
cyhnbCwgcmVjdHMpOworICAgIH0KKworICAgIGNvbnN0IGZpcnN0cyA9IG5ldyBVaW50MzJBcnJh
eSh0cmlfY291bnQpOworICAgIGNvbnN0IGNvdW50cyA9IG5ldyBVaW50MzJBcnJheSh0cmlfY291
bnQpOworICAgIGNvbnN0IG9mZnNldHMgPSBuZXcgVWludDMyQXJyYXkodHJpX2NvdW50KTsKKyAg
ICBjb25zdCBpbnN0YW5jZXMgPSBuZXcgVWludDMyQXJyYXkodHJpX2NvdW50KTsKKworICAgIGZv
ciAobGV0IGkgPSAwOyBpIDwgZmlyc3RzLmxlbmd0aDsgKytpKSBmaXJzdHNbaV0gPSBpICogMzsK
KyAgICBjb3VudHMuZmlsbCgzKTsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IG9mZnNldHMubGVu
Z3RoOyArK2kpIG9mZnNldHNbaV0gPSBpICogMyAqIDI7CisgICAgaW5zdGFuY2VzLmZpbGwoNCk7
CisKKyAgICBjb25zdCBmaXJzdHNPZmZzZXQgPSA0NzsKKyAgICBjb25zdCBjb3VudHNPZmZzZXQg
PSBmaXJzdHNPZmZzZXQgKyBmaXJzdHMubGVuZ3RoOworICAgIGNvbnN0IG9mZnNldHNPZmZzZXQg
PSBjb3VudHNPZmZzZXQgKyBjb3VudHMubGVuZ3RoOworICAgIGNvbnN0IGluc3RhbmNlc09mZnNl
dCA9IG9mZnNldHNPZmZzZXQgKyBpbnN0YW5jZXMubGVuZ3RoOworCisgICAgY29uc3QgYnVmZmVy
ID0gbmV3IFVpbnQzMkFycmF5KGZpcnN0c09mZnNldCArIGZpcnN0cy5sZW5ndGggKyBjb3VudHMu
bGVuZ3RoICsgb2Zmc2V0cy5sZW5ndGggKyBpbnN0YW5jZXMubGVuZ3RoKTsKKyAgICBidWZmZXIu
c2V0KGZpcnN0cywgZmlyc3RzT2Zmc2V0KTsKKyAgICBidWZmZXIuc2V0KGNvdW50cywgY291bnRz
T2Zmc2V0KTsKKyAgICBidWZmZXIuc2V0KG9mZnNldHMsIG9mZnNldHNPZmZzZXQpOworICAgIGJ1
ZmZlci5zZXQoaW5zdGFuY2VzLCBpbnN0YW5jZXNPZmZzZXQpOworCisgICAgbGV0IGRyYXdJRExv
Y2F0aW9uOworCisgICAgY29uc3QgbXVsdGlEcmF3QXJyYXlzID0gZnVuY3Rpb24oKSB7CisgICAg
ICBleHQubXVsdGlEcmF3QXJyYXlzV0VCR0woZ2wuVFJJQU5HTEVTLCBmaXJzdHMsIDAsIGNvdW50
cywgMCwgdHJpX2NvdW50KTsKKyAgICB9CisKKyAgICBjb25zdCBtdWx0aURyYXdBcnJheXNXaXRo
Tm9uemVyb09mZnNldHMgPSBmdW5jdGlvbigpIHsKKyAgICAgIGV4dC5tdWx0aURyYXdBcnJheXNX
RUJHTChnbC5UUklBTkdMRVMsIGJ1ZmZlciwgZmlyc3RzT2Zmc2V0LCBidWZmZXIsIGNvdW50c09m
ZnNldCwgdHJpX2NvdW50KTsKKyAgICB9CisKKyAgICBjb25zdCBtdWx0aURyYXdFbGVtZW50cyA9
IGZ1bmN0aW9uKCkgeworICAgICAgZXh0Lm11bHRpRHJhd0VsZW1lbnRzV0VCR0woZ2wuVFJJQU5H
TEVTLCBjb3VudHMsIDAsIGdsLlVOU0lHTkVEX1NIT1JULCBvZmZzZXRzLCAwLCB0cmlfY291bnQp
OworICAgIH0KKworICAgIGNvbnN0IG11bHRpRHJhd0VsZW1lbnRzV2l0aE5vbnplcm9PZmZzZXRz
ID0gZnVuY3Rpb24oKSB7CisgICAgICBleHQubXVsdGlEcmF3RWxlbWVudHNXRUJHTChnbC5UUklB
TkdMRVMsIGJ1ZmZlciwgY291bnRzT2Zmc2V0LCBnbC5VTlNJR05FRF9TSE9SVCwgYnVmZmVyLCBv
ZmZzZXRzT2Zmc2V0LCB0cmlfY291bnQpOworICAgIH0KKworICAgIGNvbnN0IG11bHRpRHJhd0Fy
cmF5c0luc3RhbmNlZCA9IGZ1bmN0aW9uKCkgeworICAgICAgZXh0Lm11bHRpRHJhd0FycmF5c0lu
c3RhbmNlZFdFQkdMKGdsLlRSSUFOR0xFUywgZmlyc3RzLCAwLCBjb3VudHMsIDAsIGluc3RhbmNl
cywgMCwgdHJpX2NvdW50KTsKKyAgICB9CisKKyAgICBjb25zdCBtdWx0aURyYXdBcnJheXNJbnN0
YW5jZWRXaXRoTm9uemVyb09mZnNldHMgPSBmdW5jdGlvbigpIHsKKyAgICAgIGV4dC5tdWx0aURy
YXdBcnJheXNJbnN0YW5jZWRXRUJHTChnbC5UUklBTkdMRVMsIGJ1ZmZlciwgZmlyc3RzT2Zmc2V0
LCBidWZmZXIsIGNvdW50c09mZnNldCwgYnVmZmVyLCBpbnN0YW5jZXNPZmZzZXQsIHRyaV9jb3Vu
dCk7CisgICAgfQorCisgICAgY29uc3QgbXVsdGlEcmF3RWxlbWVudHNJbnN0YW5jZWQgPSBmdW5j
dGlvbigpIHsKKyAgICAgIGV4dC5tdWx0aURyYXdFbGVtZW50c0luc3RhbmNlZFdFQkdMKGdsLlRS
SUFOR0xFUywgY291bnRzLCAwLCBnbC5VTlNJR05FRF9TSE9SVCwgb2Zmc2V0cywgMCwgaW5zdGFu
Y2VzLCAwLCB0cmlfY291bnQpOworICAgIH0KKworICAgIGNvbnN0IG11bHRpRHJhd0VsZW1lbnRz
SW5zdGFuY2VkV2l0aE5vbnplcm9PZmZzZXRzID0gZnVuY3Rpb24oKSB7CisgICAgICBleHQubXVs
dGlEcmF3RWxlbWVudHNJbnN0YW5jZWRXRUJHTChnbC5UUklBTkdMRVMsIGJ1ZmZlciwgY291bnRz
T2Zmc2V0LCBnbC5VTlNJR05FRF9TSE9SVCwgYnVmZmVyLCBvZmZzZXRzT2Zmc2V0LCBidWZmZXIs
IGluc3RhbmNlc09mZnNldCwgdHJpX2NvdW50KTsKKyAgICB9CisKKyAgICBjb25zdCBtYW55RHJh
d0FycmF5cyA9IGZ1bmN0aW9uKCkgeworICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0cmlfY291
bnQ7ICsraSkgeworICAgICAgICBnbC5kcmF3QXJyYXlzKGdsLlRSSUFOR0xFUywgZmlyc3RzW2ld
LCBjb3VudHNbaV0pOworICAgICAgfQorICAgIH0KKworICAgIGNvbnN0IG1hbnlEcmF3RWxlbWVu
dHMgPSBmdW5jdGlvbigpIHsKKyAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdHJpX2NvdW50OyAr
K2kpIHsKKyAgICAgICAgZ2wuZHJhd0VsZW1lbnRzKGdsLlRSSUFOR0xFUywgY291bnRzW2ldLCBn
bC5VTlNJR05FRF9TSE9SVCwgb2Zmc2V0c1tpXSk7CisgICAgICB9CisgICAgfQorCisgICAgY29u
c3QgbWFueURyYXdBcnJheXNFbXVsYXRlRHJhd0lEID0gZnVuY3Rpb24oKSB7CisgICAgICBmb3Ig
KGxldCBpID0gMDsgaSA8IHRyaV9jb3VudDsgKytpKSB7CisgICAgICAgIGdsLnVuaWZvcm0xaShk
cmF3SURMb2NhdGlvbiwgaSk7CisgICAgICAgIGdsLmRyYXdBcnJheXMoZ2wuVFJJQU5HTEVTLCBm
aXJzdHNbaV0sIGNvdW50c1tpXSk7CisgICAgICB9CisgICAgfQorCisgICAgY29uc3QgbWFueURy
YXdFbGVtZW50c0VtdWxhdGVEcmF3SUQgPSBmdW5jdGlvbigpIHsKKyAgICAgIGZvciAobGV0IGkg
PSAwOyBpIDwgdHJpX2NvdW50OyArK2kpIHsKKyAgICAgICAgZ2wudW5pZm9ybTFpKGRyYXdJRExv
Y2F0aW9uLCBpKTsKKyAgICAgICAgZ2wuZHJhd0VsZW1lbnRzKGdsLlRSSUFOR0xFUywgY291bnRz
W2ldLCBnbC5VTlNJR05FRF9TSE9SVCwgb2Zmc2V0c1tpXSk7CisgICAgICB9CisgICAgfQorCisg
ICAgZnVuY3Rpb24gZHJhd0FycmF5c0luc3RhbmNlZCgpIHsKKyAgICAgIGlmICh3dHUuZ2V0RGVm
YXVsdDNEQ29udGV4dFZlcnNpb24oKSA8IDIpIHsKKyAgICAgICAgaW5zdGFuY2VkRXh0LmRyYXdB
cnJheXNJbnN0YW5jZWRBTkdMRS5hcHBseShpbnN0YW5jZWRFeHQsIGFyZ3VtZW50cyk7CisgICAg
ICB9IGVsc2UgeworICAgICAgICBnbC5kcmF3QXJyYXlzSW5zdGFuY2VkLmFwcGx5KGdsLCBhcmd1
bWVudHMpOworICAgICAgfQorICAgIH0KKworICAgIGZ1bmN0aW9uIGRyYXdFbGVtZW50c0luc3Rh
bmNlZCgpIHsKKyAgICAgIGlmICh3dHUuZ2V0RGVmYXVsdDNEQ29udGV4dFZlcnNpb24oKSA8IDIp
IHsKKyAgICAgICAgaW5zdGFuY2VkRXh0LmRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFLmFwcGx5
KGluc3RhbmNlZEV4dCwgYXJndW1lbnRzKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIGdsLmRy
YXdFbGVtZW50c0luc3RhbmNlZC5hcHBseShnbCwgYXJndW1lbnRzKTsKKyAgICAgIH0KKyAgICB9
CisKKyAgICBmdW5jdGlvbiB2ZXJ0ZXhBdHRyaWJEaXZpc29yKGF0dHJpYiwgZGl2aXNvcikgewor
ICAgICAgaWYgKHd0dS5nZXREZWZhdWx0M0RDb250ZXh0VmVyc2lvbigpIDwgMikgeworICAgICAg
ICBpbnN0YW5jZWRFeHQudmVydGV4QXR0cmliRGl2aXNvckFOR0xFKGF0dHJpYiwgZGl2aXNvcik7
CisgICAgICB9IGVsc2UgeworICAgICAgICBnbC52ZXJ0ZXhBdHRyaWJEaXZpc29yKGF0dHJpYiwg
ZGl2aXNvcik7CisgICAgICB9CisgICAgfQorCisgICAgY29uc3QgbWFueURyYXdBcnJheXNJbnN0
YW5jZWQgPSBmdW5jdGlvbigpIHsKKyAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdHJpX2NvdW50
OyArK2kpIHsKKyAgICAgICAgZHJhd0FycmF5c0luc3RhbmNlZChnbC5UUklBTkdMRVMsIGZpcnN0
c1tpXSwgY291bnRzW2ldLCA0KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICBjb25zdCBtYW55RHJh
d0VsZW1lbnRzSW5zdGFuY2VkID0gZnVuY3Rpb24oKSB7CisgICAgICBmb3IgKGxldCBpID0gMDsg
aSA8IHRyaV9jb3VudDsgKytpKSB7CisgICAgICAgIGRyYXdFbGVtZW50c0luc3RhbmNlZChnbC5U
UklBTkdMRVMsIGNvdW50c1tpXSwgZ2wuVU5TSUdORURfU0hPUlQsIG9mZnNldHNbaV0sIDQpOwor
ICAgICAgfQorICAgIH0KKworICAgIGNvbnN0IG1hbnlEcmF3QXJyYXlzSW5zdGFuY2VkRW11bGF0
ZURyYXdJRCA9IGZ1bmN0aW9uKCkgeworICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0cmlfY291
bnQ7ICsraSkgeworICAgICAgICBnbC51bmlmb3JtMWkoZHJhd0lETG9jYXRpb24sIGkpOworICAg
ICAgICBkcmF3QXJyYXlzSW5zdGFuY2VkKGdsLlRSSUFOR0xFUywgZmlyc3RzW2ldLCBjb3VudHNb
aV0sIDQpOworICAgICAgfQorICAgIH0KKworICAgIGNvbnN0IG1hbnlEcmF3RWxlbWVudHNJbnN0
YW5jZWRFbXVsYXRlRHJhd0lEID0gZnVuY3Rpb24oKSB7CisgICAgICBmb3IgKGxldCBpID0gMDsg
aSA8IHRyaV9jb3VudDsgKytpKSB7CisgICAgICAgIGdsLnVuaWZvcm0xaShkcmF3SURMb2NhdGlv
biwgaSk7CisgICAgICAgIGRyYXdFbGVtZW50c0luc3RhbmNlZChnbC5UUklBTkdMRVMsIGNvdW50
c1tpXSwgZ2wuVU5TSUdORURfU0hPUlQsIG9mZnNldHNbaV0sIDQpOworICAgICAgfQorICAgIH0K
KworICAgIGZ1bmN0aW9uIGNoZWNrRHJhdyhjb25maWcpIHsKKyAgICAgIGdsLmNsZWFyKGdsLkNP
TE9SX0JVRkZFUl9CSVQgfCBnbC5ERVBUSF9CVUZGRVJfQklUKTsKKworICAgICAgaWYgKGNvbmZp
Zy5pbmRleGVkKSB7CisgICAgICAgIGdsLmJpbmRCdWZmZXIoZ2wuRUxFTUVOVF9BUlJBWV9CVUZG
RVIsIGluZGV4QnVmZmVyKTsKKyAgICAgICAgZ2wuYmluZEJ1ZmZlcihnbC5BUlJBWV9CVUZGRVIs
IHZlcnRleEJ1ZmZlcik7CisgICAgICAgIGdsLmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KDApOwor
ICAgICAgICBnbC52ZXJ0ZXhBdHRyaWJQb2ludGVyKDAsIDMsIGdsLkZMT0FULCBmYWxzZSwgMCwg
MCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBnbC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZF
Uiwgbm9uSW5kZXhlZFZlcnRleEJ1ZmZlcik7CisgICAgICAgIGdsLmVuYWJsZVZlcnRleEF0dHJp
YkFycmF5KDApOworICAgICAgICBnbC52ZXJ0ZXhBdHRyaWJQb2ludGVyKDAsIDMsIGdsLkZMT0FU
LCBmYWxzZSwgMCwgMCk7CisgICAgICB9CisKKyAgICAgIGlmIChjb25maWcuaW5zdGFuY2VkKSB7
CisgICAgICAgIGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCBpbnN0YW5jZUJ1ZmZlcik7
CisgICAgICAgIGdsLmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KDEpOworICAgICAgICBnbC52ZXJ0
ZXhBdHRyaWJQb2ludGVyKDEsIDEsIGdsLkZMT0FULCBmYWxzZSwgMCwgMCk7CisgICAgICAgIHZl
cnRleEF0dHJpYkRpdmlzb3IoMSwgMSk7CisgICAgICB9CisKKyAgICAgIGNvbmZpZy5kcmF3RnVu
YygpOworICAgICAgd3R1LmdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IsICJ0aGVyZSBz
aG91bGQgYmUgbm8gZXJyb3JzIik7CisgICAgICBjaGVja1Jlc3VsdChjb25maWcsIGNvbmZpZy5k
cmF3RnVuYy5uYW1lICsgKAorICAgICAgICBjb25maWcuaW5zdGFuY2VkID8gJyBpbnN0YW5jZWQn
IDogJycKKyAgICAgICkgKyAoCisgICAgICAgIGNvbmZpZy5kcmF3SUQgPyAnIHdpdGggZ2xfRHJh
d0lEJyA6ICcnCisgICAgICApKTsKKworICAgICAgZ2wuZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5
KDApOworICAgICAgZ2wuZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KDEpOworICAgIH0KKworICAg
IGNvbnN0IG5vRHJhd0lEUHJvZ3JhbSA9IHd0dS5zZXR1cFByb2dyYW0oZ2wsIFsidnNoYWRlck5v
RHJhd0lEIiwgImZzaGFkZXIiXSwgWyJ2UG9zaXRpb24iLCAidkluc3RhbmNlIl0sIFswLCAxXSk7
CisgICAgZXhwZWN0VHJ1ZShub0RyYXdJRFByb2dyYW0gIT0gbnVsbCwgImNhbiBjb21waWxlIHNp
bXBsZSBwcm9ncmFtIik7CisgICAgaWYgKG5vRHJhd0lEUHJvZ3JhbSkgeworICAgICAgZ2wudXNl
UHJvZ3JhbShub0RyYXdJRFByb2dyYW0pOworCisgICAgICBpZiAoIWluc3RhbmNlZCkgeworICAg
ICAgICBjaGVja0RyYXcoeworICAgICAgICAgIGRyYXdGdW5jOiBtdWx0aURyYXdBcnJheXMsCisg
ICAgICAgICAgZHJhd0lEOiBmYWxzZSwKKyAgICAgICAgfSk7CisgICAgICAgIGNoZWNrRHJhdyh7
CisgICAgICAgICAgZHJhd0Z1bmM6IG11bHRpRHJhd0FycmF5c1dpdGhOb256ZXJvT2Zmc2V0cywK
KyAgICAgICAgICBkcmF3SUQ6IGZhbHNlLAorICAgICAgICB9KTsKKyAgICAgICAgY2hlY2tEcmF3
KHsKKyAgICAgICAgICBkcmF3RnVuYzogbXVsdGlEcmF3RWxlbWVudHMsCisgICAgICAgICAgaW5k
ZXhlZDogdHJ1ZSwKKyAgICAgICAgICBkcmF3SUQ6IGZhbHNlLAorICAgICAgICB9KTsKKyAgICAg
ICAgY2hlY2tEcmF3KHsKKyAgICAgICAgICBkcmF3RnVuYzogbXVsdGlEcmF3RWxlbWVudHNXaXRo
Tm9uemVyb09mZnNldHMsCisgICAgICAgICAgaW5kZXhlZDogdHJ1ZSwKKyAgICAgICAgICBkcmF3
SUQ6IGZhbHNlLAorICAgICAgICB9KTsKKyAgICAgICAgY2hlY2tEcmF3KHsKKyAgICAgICAgICBk
cmF3RnVuYzogbWFueURyYXdBcnJheXMsCisgICAgICAgICAgZHJhd0lEOiBmYWxzZSwKKyAgICAg
ICAgfSk7CisgICAgICAgIGNoZWNrRHJhdyh7CisgICAgICAgICAgZHJhd0Z1bmM6IG1hbnlEcmF3
RWxlbWVudHMsCisgICAgICAgICAgaW5kZXhlZDogdHJ1ZSwKKyAgICAgICAgICBkcmF3SUQ6IGZh
bHNlLAorICAgICAgICB9KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIGNoZWNrRHJhdyh7Cisg
ICAgICAgICAgZHJhd0Z1bmM6IG11bHRpRHJhd0FycmF5c0luc3RhbmNlZCwKKyAgICAgICAgICBk
cmF3SUQ6IGZhbHNlLAorICAgICAgICAgIGluc3RhbmNlZDogdHJ1ZSwKKyAgICAgICAgfSk7Cisg
ICAgICAgIGNoZWNrRHJhdyh7CisgICAgICAgICAgZHJhd0Z1bmM6IG11bHRpRHJhd0FycmF5c0lu
c3RhbmNlZFdpdGhOb256ZXJvT2Zmc2V0cywKKyAgICAgICAgICBkcmF3SUQ6IGZhbHNlLAorICAg
ICAgICAgIGluc3RhbmNlZDogdHJ1ZSwKKyAgICAgICAgfSk7CisgICAgICAgIGNoZWNrRHJhdyh7
CisgICAgICAgICAgZHJhd0Z1bmM6IG11bHRpRHJhd0VsZW1lbnRzSW5zdGFuY2VkLAorICAgICAg
ICAgIGluZGV4ZWQ6IHRydWUsCisgICAgICAgICAgZHJhd0lEOiBmYWxzZSwKKyAgICAgICAgICBp
bnN0YW5jZWQ6IHRydWUsCisgICAgICAgIH0pOworICAgICAgICBjaGVja0RyYXcoeworICAgICAg
ICAgIGRyYXdGdW5jOiBtdWx0aURyYXdFbGVtZW50c0luc3RhbmNlZFdpdGhOb256ZXJvT2Zmc2V0
cywKKyAgICAgICAgICBpbmRleGVkOiB0cnVlLAorICAgICAgICAgIGRyYXdJRDogZmFsc2UsCisg
ICAgICAgICAgaW5zdGFuY2VkOiB0cnVlLAorICAgICAgICB9KTsKKyAgICAgICAgY2hlY2tEcmF3
KHsKKyAgICAgICAgICBkcmF3RnVuYzogbWFueURyYXdBcnJheXNJbnN0YW5jZWQsCisgICAgICAg
ICAgZHJhd0lEOiBmYWxzZSwKKyAgICAgICAgICBpbnN0YW5jZWQ6IHRydWUsCisgICAgICAgIH0p
OworICAgICAgICBjaGVja0RyYXcoeworICAgICAgICAgIGRyYXdGdW5jOiBtYW55RHJhd0VsZW1l
bnRzSW5zdGFuY2VkLAorICAgICAgICAgIGluZGV4ZWQ6IHRydWUsCisgICAgICAgICAgZHJhd0lE
OiBmYWxzZSwKKyAgICAgICAgICBpbnN0YW5jZWQ6IHRydWUsCisgICAgICAgIH0pOworICAgICAg
fQorICAgIH0KKworICAgIGNvbnN0IHdpdGhEcmF3SURQcm9ncmFtID0gd3R1LnNldHVwUHJvZ3Jh
bShnbCwgWyJ2c2hhZGVyV2l0aERyYXdJRCIsICJmc2hhZGVyIl0sIFsidlBvc2l0aW9uIiwgInZJ
bnN0YW5jZSJdLCBbMCwgMV0pOworICAgIGV4cGVjdFRydWUod2l0aERyYXdJRFByb2dyYW0gIT0g
bnVsbCwgImNhbiBjb21waWxlIHByb2dyYW0gd2l0aCBBTkdMRV9tdWx0aV9kcmF3Iik7CisgICAg
aWYgKHdpdGhEcmF3SURQcm9ncmFtKSB7CisgICAgICBnbC51c2VQcm9ncmFtKHdpdGhEcmF3SURQ
cm9ncmFtKTsKKworICAgICAgaWYgKCFpbnN0YW5jZWQpIHsKKyAgICAgICAgY2hlY2tEcmF3KHsK
KyAgICAgICAgICBkcmF3RnVuYzogbXVsdGlEcmF3QXJyYXlzLAorICAgICAgICAgIGRyYXdJRDog
dHJ1ZSwKKyAgICAgICAgfSk7CisgICAgICAgIGNoZWNrRHJhdyh7CisgICAgICAgICAgZHJhd0Z1
bmM6IG11bHRpRHJhd0FycmF5c1dpdGhOb256ZXJvT2Zmc2V0cywKKyAgICAgICAgICBkcmF3SUQ6
IHRydWUsCisgICAgICAgIH0pOworICAgICAgICBjaGVja0RyYXcoeworICAgICAgICAgIGRyYXdG
dW5jOiBtdWx0aURyYXdFbGVtZW50cywKKyAgICAgICAgICBpbmRleGVkOiB0cnVlLAorICAgICAg
ICAgIGRyYXdJRDogdHJ1ZSwKKyAgICAgICAgfSk7CisgICAgICAgIGNoZWNrRHJhdyh7CisgICAg
ICAgICAgZHJhd0Z1bmM6IG11bHRpRHJhd0VsZW1lbnRzV2l0aE5vbnplcm9PZmZzZXRzLAorICAg
ICAgICAgIGluZGV4ZWQ6IHRydWUsCisgICAgICAgICAgZHJhd0lEOiB0cnVlLAorICAgICAgICB9
KTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIGNoZWNrRHJhdyh7CisgICAgICAgICAgZHJhd0Z1
bmM6IG11bHRpRHJhd0FycmF5c0luc3RhbmNlZCwKKyAgICAgICAgICBkcmF3SUQ6IHRydWUsCisg
ICAgICAgICAgaW5zdGFuY2VkOiB0cnVlLAorICAgICAgICB9KTsKKyAgICAgICAgY2hlY2tEcmF3
KHsKKyAgICAgICAgICBkcmF3RnVuYzogbXVsdGlEcmF3QXJyYXlzSW5zdGFuY2VkV2l0aE5vbnpl
cm9PZmZzZXRzLAorICAgICAgICAgIGRyYXdJRDogdHJ1ZSwKKyAgICAgICAgICBpbnN0YW5jZWQ6
IHRydWUsCisgICAgICAgIH0pOworICAgICAgICBjaGVja0RyYXcoeworICAgICAgICAgIGRyYXdG
dW5jOiBtdWx0aURyYXdFbGVtZW50c0luc3RhbmNlZCwKKyAgICAgICAgICBpbmRleGVkOiB0cnVl
LAorICAgICAgICAgIGRyYXdJRDogdHJ1ZSwKKyAgICAgICAgICBpbnN0YW5jZWQ6IHRydWUsCisg
ICAgICAgIH0pOworICAgICAgICBjaGVja0RyYXcoeworICAgICAgICAgIGRyYXdGdW5jOiBtdWx0
aURyYXdFbGVtZW50c0luc3RhbmNlZFdpdGhOb256ZXJvT2Zmc2V0cywKKyAgICAgICAgICBpbmRl
eGVkOiB0cnVlLAorICAgICAgICAgIGRyYXdJRDogdHJ1ZSwKKyAgICAgICAgICBpbnN0YW5jZWQ6
IHRydWUsCisgICAgICAgIH0pOworICAgICAgfQorICAgIH0KKworICAgIGNvbnN0IGVtdWxhdGVk
RHJhd0lEUHJvZ3JhbSA9IHd0dS5zZXR1cFByb2dyYW0oZ2wsIFsidnNoYWRlckVtdWxhdGVkRHJh
d0lEIiwgImZzaGFkZXIiXSwgWyJ2UG9zaXRpb24iLCAidkluc3RhbmNlIl0sIFswLCAxXSk7Cisg
ICAgZXhwZWN0VHJ1ZShlbXVsYXRlZERyYXdJRFByb2dyYW0gIT0gbnVsbCwgImNhbiBjb21waWxl
IHByb2dyYW0gdG8gZW11bGF0ZSBnbF9EcmF3SUQiKTsKKyAgICBkcmF3SURMb2NhdGlvbiA9IGds
LmdldFVuaWZvcm1Mb2NhdGlvbihlbXVsYXRlZERyYXdJRFByb2dyYW0sICJkcmF3SUQiKTsKKyAg
ICBpZiAoZW11bGF0ZWREcmF3SURQcm9ncmFtKSB7CisgICAgICBnbC51c2VQcm9ncmFtKGVtdWxh
dGVkRHJhd0lEUHJvZ3JhbSk7CisKKyAgICAgIGlmICghaW5zdGFuY2VkKSB7CisgICAgICAgIGNo
ZWNrRHJhdyh7CisgICAgICAgICAgZHJhd0Z1bmM6IG1hbnlEcmF3QXJyYXlzRW11bGF0ZURyYXdJ
RCwKKyAgICAgICAgICBkcmF3SUQ6IHRydWUsCisgICAgICAgIH0pOworICAgICAgICBjaGVja0Ry
YXcoeworICAgICAgICAgIGRyYXdGdW5jOiBtYW55RHJhd0VsZW1lbnRzRW11bGF0ZURyYXdJRCwK
KyAgICAgICAgICBpbmRleGVkOiB0cnVlLAorICAgICAgICAgIGRyYXdJRDogdHJ1ZSwKKyAgICAg
ICAgfSk7CisgICAgICB9IGVsc2UgeworICAgICAgICBjaGVja0RyYXcoeworICAgICAgICAgIGRy
YXdGdW5jOiBtYW55RHJhd0FycmF5c0luc3RhbmNlZEVtdWxhdGVEcmF3SUQsCisgICAgICAgICAg
ZHJhd0lEOiB0cnVlLAorICAgICAgICAgIGluc3RhbmNlZDogdHJ1ZSwKKyAgICAgICAgfSk7Cisg
ICAgICAgIGNoZWNrRHJhdyh7CisgICAgICAgICAgZHJhd0Z1bmM6IG1hbnlEcmF3RWxlbWVudHNJ
bnN0YW5jZWRFbXVsYXRlRHJhd0lELAorICAgICAgICAgIGluZGV4ZWQ6IHRydWUsCisgICAgICAg
ICAgZHJhd0lEOiB0cnVlLAorICAgICAgICAgIGluc3RhbmNlZDogdHJ1ZSwKKyAgICAgICAgfSk7
CisgICAgICB9CisgICAgfQorICB9CisKKyAgZm9yIChsZXQgaSA9IDA7IGkgPCBidWZmZXJVc2Fn
ZVNldC5sZW5ndGg7IGkrKykgeworICAgIGxldCBidWZmZXJVc2FnZSA9IGJ1ZmZlclVzYWdlU2V0
W2ldOworICAgIGRlYnVnKCJUZXN0aW5nIHdpdGggQnVmZmVyVXNhZ2UgPSAiICsgYnVmZmVyVXNh
Z2UpOworICAgIHJ1blZhbGlkYXRpb25UZXN0cyhidWZmZXJVc2FnZSk7CisgICAgcnVuU2hhZGVy
VGVzdHMoYnVmZmVyVXNhZ2UpOworICAgIHJ1blBpeGVsVGVzdHMoYnVmZmVyVXNhZ2UpOworICB9
Cit9CisKK3J1blRlc3QoKTsKKworY29uc3Qgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>