!
!Version ArubaOS-CX DL.10.13.1050
!export-password: default
hostname RSVDC-FB1-LF1-2
user admin group administrators password ciphertext AQBapX+SVcWu1VzgXLvEl9Om9uN4ffgdHIJC/g1j8JRcl9tJYgAAAOeOVVu6J3NcawCQ9je1i3vt8FmHPD8V81EHQsyjriiTD5Xd+M/hBmNCIBJ8sYd4/aqsVMnRQEqhGkorl4Ssv7G5XoUN1dIB29vCusPvLXoS9hwAKfI2KMVjHhn+e58hxuR1
user afc_admin group administrators password ciphertext AQBapVc7Giz76HiLnxy8KVN6e67nA0SxG4MekJ0CKk5ajL3SYgAAAHMBAT1ot4pUShjbF01Am6W0G+d+DTfD+D1+QTkIm+5B0xCeTwEmuU77NBzWKZMk6KfGmo6Ks6Evx/9iMDhaGAZMaTTcOnOBe+rN8xcUKE2y8cE60UFZkKft0g006HhAM+/P
clock timezone america/los_angeles
bfd
no ip icmp redirect
profile leaf
vrf DEV-DC-VRF
rd 10.250.2.2:4
route-target export 65001:100002 evpn
route-target import 65001:100002 evpn
vrf PROD-DC-VRF
rd 10.250.2.2:3
route-target export 65001:100001 evpn
route-target import 65001:100001 evpn
ntp server 10.2.120.98
ntp server 10.2.120.99
ntp enable
ntp vrf mgmt
cli-session
timeout 0
!
!
!
!
!
!
ssh server vrf mgmt
vlan 1
vlan 2021
description AFC-created VLAN
vlan 2022
description AFC-created VLAN
vlan 3001
description AFC-created VLAN
vlan 3002
description AFC-created VLAN
vlan 3999
virtual-mac 02:00:01:00:00:ff
evpn
arp-suppression
interface mgmt
no shutdown
ip dhcp
system interface-group 3 speed 10g
!interface group 3 contains ports 1/1/9-1/1/12
system interface-group 4 speed 10g
!interface group 4 contains ports 1/1/13-1/1/16
interface lag 251 multi-chassis
description MC-LAG from border leaf switches to FW1 in firewall cluster
no shutdown
no routing
vlan trunk native 1
vlan trunk allowed 1,2021-2022
lacp mode active
lacp fallback
interface lag 252 multi-chassis
description MC-LAG from border leaf switches to FW2 in firewall cluster
no shutdown
no routing
vlan trunk native 1
vlan trunk allowed 1,2021-2022
lacp mode active
lacp fallback
interface lag 256
description ISL
no shutdown
no routing
vlan trunk native 1
vlan trunk allowed all
lacp mode active
interface 1/1/1
no shutdown
mtu 9198
interface 1/1/2
no shutdown
mtu 9198
ip mtu 9198
interface 1/1/3
no shutdown
mtu 9198
ip mtu 9198
interface 1/1/4
no shutdown
mtu 9198
ip mtu 9198
interface 1/1/5
no shutdown
mtu 9198
ip mtu 9198
interface 1/1/6
no shutdown
mtu 9198
ip mtu 9198
interface 1/1/7
no shutdown
mtu 9198
ip mtu 9198
interface 1/1/8
no shutdown
mtu 9198
ip mtu 9198
interface 1/1/9
no shutdown
mtu 9198
ip mtu 9198
interface 1/1/10
no shutdown
mtu 9198
ip mtu 9198
interface 1/1/11
no shutdown
mtu 9198
lag 251
interface 1/1/12
no shutdown
mtu 9198
lag 252
interface 1/1/13
no shutdown
mtu 9198
ip mtu 9198
interface 1/1/14
no shutdown
mtu 9198
ip mtu 9198
interface 1/1/15
no shutdown
mtu 9198
ip mtu 9198
interface 1/1/16
no shutdown
mtu 9198
ip mtu 9198
interface 1/1/17
no shutdown
mtu 9198
ip mtu 9198
interface 1/1/18
no shutdown
mtu 9198
ip mtu 9198
interface 1/1/19
no shutdown
mtu 9198
ip mtu 9198
interface 1/1/20
no shutdown
mtu 9198
ip mtu 9198
interface 1/1/21
no shutdown
mtu 9198
ip mtu 9198
interface 1/1/22
no shutdown
mtu 9198
ip mtu 9198
interface 1/1/23
no shutdown
mtu 9198
ip mtu 9198
interface 1/1/24
no shutdown
mtu 9198
ip mtu 9198
interface 1/1/25
no shutdown
mtu 9198
ip mtu 9198
interface 1/1/26
no shutdown
mtu 9198
ip mtu 9198
interface 1/1/27
no shutdown
mtu 9198
ip mtu 9198
interface 1/1/28
no shutdown
mtu 9198
ip mtu 9198
interface 1/1/29
no shutdown
mtu 9198
ip mtu 9198
interface 1/1/30
no shutdown
mtu 9198
ip mtu 9198
interface 1/1/31
no shutdown
mtu 9198
ip mtu 9198
interface 1/1/32
no shutdown
mtu 9198
ip mtu 9198
interface 1/1/33
no shutdown
mtu 9198
ip mtu 9198
interface 1/1/34
no shutdown
mtu 9198
ip mtu 9198
interface 1/1/35
no shutdown
mtu 9198
ip mtu 9198
interface 1/1/36
no shutdown
mtu 9198
ip mtu 9198
interface 1/1/37
no shutdown
mtu 9198
ip mtu 9198
interface 1/1/38
no shutdown
mtu 9198
ip mtu 9198
interface 1/1/39
no shutdown
mtu 9198
ip mtu 9198
interface 1/1/40
no shutdown
mtu 9198
ip mtu 9198
interface 1/1/41
no shutdown
mtu 9198
ip mtu 9198
interface 1/1/42
no shutdown
mtu 9198
ip mtu 9198
interface 1/1/43
no shutdown
mtu 9198
ip mtu 9198
interface 1/1/44
no shutdown
mtu 9198
ip mtu 9198
interface 1/1/45
no shutdown
mtu 9198
ip mtu 9198
interface 1/1/46
no shutdown
mtu 9198
ip mtu 9198
interface 1/1/47
no shutdown
mtu 9198
ip mtu 9198
interface 1/1/48
description Keep alive Interface RSVDC-FB1-LF1-2
no shutdown
mtu 9198
ip mtu 9198
ip address 10.250.0.5/31
interface 1/1/49
no shutdown
mtu 9198
lag 256
interface 1/1/50
no shutdown
mtu 9198
lag 256
interface 1/1/51
no shutdown
mtu 9198
ip mtu 9198
interface 1/1/52
no shutdown
mtu 9198
ip mtu 9198
interface 1/1/53
description Leaf Spine RPI to RSVDC-FB1-SP1
no shutdown
persona uplink
mtu 9198
ip mtu 9198
ip address 10.255.0.5/31
ip ospf 1 area 0.0.0.0
no ip ospf passive
ip ospf network point-to-point
interface 1/1/54
description Leaf Spine RPI to RSVDC-FB1-SP2
no shutdown
persona uplink
mtu 9198
ip mtu 9198
ip address 10.255.0.23/31
ip ospf 1 area 0.0.0.0
no ip ospf passive
ip ospf network point-to-point
interface loopback 0
description BGP/OSPF underlay
ip address 10.250.0.13/32
interface loopback 1
description BGP VXLAN overlay
ip address 10.250.2.2/32
interface loopback 11
description Unique overlay loopback IP address in the PROD VRF for LF1-2
vrf attach PROD-DC-VRF
ip address 10.250.4.0/32
interface loopback 12
description Unique overlay loopback IP address in the PROD DEV for LF1-2
vrf attach DEV-DC-VRF
ip address 10.250.5.0/32
interface vlan 2021
description Border leaf PROD-DC-VRF uplink to external FW cluster
vrf attach PROD-DC-VRF
ip mtu 9198
vsx active-forwarding
ip address 10.255.2.1/29
ip pim-sparse enable
ip pim-sparse vsx-virtual-neighbor
interface vlan 2022
description Border leaf DEV-DC-VRF uplink to external FW cluster
vrf attach DEV-DC-VRF
ip mtu 9198
ip address 10.255.2.9/29
ip pim-sparse enable
ip pim-sparse vsx-virtual-neighbor
interface vlan 3001
description Overlay transit VLAN for PROD VRF on LF1 VSX pair
vrf attach PROD-DC-VRF
ip mtu 9198
ip address 10.255.4.0/31
ip pim-sparse enable
ip pim-sparse vsx-virtual-neighbor
interface vlan 3002
description Overlay transit VLAN for DEV VRF on LF1 VSX pair
vrf attach DEV-DC-VRF
ip mtu 9198
ip address 10.255.5.0/31
ip pim-sparse enable
ip pim-sparse vsx-virtual-neighbor
interface vlan 3999
description Transit VLAN
ip mtu 9198
ip address 10.250.0.19/31
ip ospf 1 area 0.0.0.0
no ip ospf passive
ip ospf cost 1
ip ospf network point-to-point
interface vxlan 1
source ip 10.250.2.2
no shutdown
vni 100001
vrf PROD-DC-VRF
routing
vni 100002
vrf DEV-DC-VRF
routing
vsx
system-mac 02:00:00:00:10:02
inter-switch-link lag 256
role primary
keepalive peer 10.250.0.4 source 10.250.0.5
linkup-delay-timer 600
vsx-sync vsx-global
ip route 10.250.5.0/24 nullroute vrf DEV-DC-VRF
ip route 10.250.5.1/32 10.255.5.1 vrf DEV-DC-VRF
ip route 10.250.4.0/24 nullroute vrf PROD-DC-VRF
ip route 10.250.4.1/32 10.255.4.1 vrf PROD-DC-VRF
ip dns domain-name example.local vrf mgmt
ip dns server-address 10.2.120.98 vrf mgmt
ip dns server-address 10.2.120.99 vrf mgmt
ip prefix-list PL-HOST-P2P description Match /31 and /32 routes
ip prefix-list PL-HOST-P2P seq 10 permit 0.0.0.0/0 ge 31
!
!
!
ip aspath-list ALLOWED-EXT-AS description External ASNs allowed to advertise into DC overlay
ip aspath-list ALLOWED-EXT-AS seq 10 permit ^65501 65000$
ip aspath-list ALLOWED-EXT-AS seq 20 permit ^65501$
!
route-map RM-EXT-OUT deny seq 10
description filter host and P2P prefixes
match ip address prefix-list PL-HOST-P2P
route-map RM-EXT-OUT permit seq 20
route-map RM-PERMIT-CAMPUS permit seq 10
description allow campus and firewall ASNs
match aspath-list ALLOWED-EXT-AS
route-map RM-PERMIT-CAMPUS deny seq 20
!
router ospf 1
router-id 10.250.0.13
passive-interface default
maximum-paths 8
redistribute local loopback
area 0.0.0.0
router bgp 65001
bgp router-id 10.250.0.13
maximum-paths 8
bgp log-neighbor-changes
bgp deterministic-med
bgp always-compare-med
bgp bestpath as-path multipath-relax
neighbor RSVDC-FB1-RR peer-group
neighbor RSVDC-FB1-RR remote-as 65001
neighbor RSVDC-FB1-RR description Spine and RR peer-group
neighbor RSVDC-FB1-RR fall-over
neighbor RSVDC-FB1-RR update-source loopback 0
neighbor 10.250.0.9 peer-group RSVDC-FB1-RR
neighbor 10.250.0.10 peer-group RSVDC-FB1-RR
address-family ipv4 unicast
redistribute connected
exit-address-family
address-family l2vpn evpn
neighbor RSVDC-FB1-RR send-community both
neighbor 10.250.0.9 activate
neighbor 10.250.0.10 activate
exit-address-family
!
vrf DEV-DC-VRF
bgp router-id 10.250.0.13
maximum-paths 8
bgp log-neighbor-changes
bgp deterministic-med
bgp always-compare-med
bgp bestpath as-path multipath-relax
neighbor 10.255.2.10 remote-as 65001
neighbor 10.255.2.10 description DEV VRF peering between border leaf switches
neighbor 10.255.2.11 remote-as 65501
neighbor 10.255.2.11 description BGP peering from LF1-2 DEV VRF to FW cluster
neighbor 10.255.2.11 fall-over bfd
address-family ipv4 unicast
neighbor 10.255.2.10 route-map RM-PERMIT-CAMPUS out
neighbor 10.255.2.10 activate
neighbor 10.255.2.11 route-map RM-PERMIT-CAMPUS in
neighbor 10.255.2.11 route-map RM-EXT-OUT out
neighbor 10.255.2.11 activate
redistribute connected
redistribute local loopback
redistribute static
exit-address-family
!
vrf PROD-DC-VRF
bgp router-id 10.250.0.13
maximum-paths 8
bgp log-neighbor-changes
bgp deterministic-med
bgp always-compare-med
bgp bestpath as-path multipath-relax
neighbor 10.255.2.2 remote-as 65001
neighbor 10.255.2.2 description PROD VRF peering between border leaf switches
neighbor 10.255.2.3 remote-as 65501
neighbor 10.255.2.3 description BGP peering from LF1-2 PROD VRF to FW cluster
address-family ipv4 unicast
neighbor 10.255.2.2 route-map RM-PERMIT-CAMPUS out
neighbor 10.255.2.2 activate
neighbor 10.255.2.3 route-map RM-PERMIT-CAMPUS in
neighbor 10.255.2.3 route-map RM-EXT-OUT out
neighbor 10.255.2.3 activate
redistribute connected
redistribute local loopback
redistribute static
exit-address-family
!
router pim vrf DEV-DC-VRF
enable
register-source loopback12
router pim vrf PROD-DC-VRF
enable
register-source loopback11
https-server vrf mgmt
nae-script fans_status_transition_monitor false IyAtKi0gY29kaW5nOiB1dGYtOCAtKi0KIwojIChjKSBDb3B5cmlnaHQgMjAxNy0yMDE4IEhld2xldHQgUGFja2FyZCBFbnRlcnByaXNlIERldmVsb3BtZW50IExQCiMKIyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKIyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiMgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiMKIyBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIwojIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKIyBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgojICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQojIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCiMgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucwojIHVuZGVyIHRoZSBMaWNlbnNlLgoKTWFuaWZlc3QgPSB7CiAgICAnTmFtZSc6ICdmYW5zX3N0YXR1c190cmFuc2l0aW9uX21vbml0b3InLAogICAgJ0Rlc2NyaXB0aW9uJzogJ0FnZW50IHRvIG1vbml0b3Igc3RhdHVzIG9mIGFsbCBmYW5zLCAnCiAgICAgICAgICAgICAgICAgICAnd2hlcmVpbiB0aGUgdHJhbnNpdGlvbiBiZXR3ZWVuIGRpZmZlcmVudCAnCiAgICAgICAgICAgICAgICAgICAnc3RhdHVzKHVuaW5pdGlhbGl6ZWQvb2svZmF1bHQpIGlzIG1vbml0b3JlZC4nCiAgICAgICAgICAgICAgICAgICAnVGhlIGFnZW50IHN0YXR1cyBpcyBzZXQgdG8gQ3JpdGljYWwgd2hlbiBhbnkgJwogICAgICAgICAgICAgICAgICAgJ29mIHRoZSBmYW4gc3RhdHVzIGhhcyB0cmFuc2l0aW9uIGZyb20gJwogICAgICAgICAgICAgICAgICAgJ3VuaW5pdGlhbGl6ZWQvb2sgdG8gZmF1bHQuIFRoZSBhZ2VudCBzdGF0dXMgJwogICAgICAgICAgICAgICAgICAgJ3JlbWFpbnMgaW4gQ3JpdGljYWwgc3RhdGUsIHdoZW4gb3RoZXIgZmFucyAnCiAgICAgICAgICAgICAgICAgICAnc3RhdHVzIHRyYW5zaXRzIHRvIGZhdWx0LCBhbmQgc3lzbG9nIGFuZCBjbGkgJwogICAgICAgICAgICAgICAgICAgJ2FyZSBkaXNwbGF5ZWQuIFRoZSBhZ2VudCBzdGF0dXMgaXMgc2V0IGJhY2sgJwogICAgICAgICAgICAgICAgICAgJ3RvIG5vcm1hbCB3aGVuIGFsbCB0aGUgZmFucyBhcmUgaW4gJwogICAgICAgICAgICAgICAgICAgJ3VuaW5pdGlhbGl6ZWQvb2sgc3RhdHVzLicsCiAgICAnVmVyc2lvbic6ICcxLjAnLAogICAgJ0F1dGhvcic6ICdBcnViYSBOZXR3b3JrcycKfQoKCmNsYXNzIEFnZW50KE5BRSk6CgogICAgZGVmIF9faW5pdF9fKHNlbGYpOgogICAgICAgIHNlbGYudmFyaWFibGVzWydmYW5zX2xpc3QnXSA9ICcnCgogICAgICAgIHVyaTEgPSAnL3Jlc3QvdjEvc3lzdGVtL3N1YnN5c3RlbXMvKi8qL2ZhbnMvKj9hdHRyaWJ1dGVzPXN0YXR1cycKICAgICAgICBzZWxmLm0xID0gTW9uaXRvcih1cmkxLCAnRmFuIFN0YXR1cycpCgogICAgICAgIHNlbGYucjEgPSBSdWxlKCdTdGF0dXMgLSBvayAtPiBmYXVsdCcpCiAgICAgICAgc2VsZi5yMS5jb25kaXRpb24oCiAgICAgICAgICAgICd0cmFuc2l0aW9uIHt9IGZyb20gIm9rIiB0byAiZmF1bHQiJywgW3NlbGYubTFdKQogICAgICAgIHNlbGYucjEuYWN0aW9uKHNlbGYuZmFuc19zdGF0dXNfYWN0aW9uX2ZhdWx0KQoKICAgICAgICBzZWxmLnIyID0gUnVsZSgnU3RhdHVzIC0gdW5pbml0aWFsaXplZCAtPiBmYXVsdCcpCiAgICAgICAgc2VsZi5yMi5jb25kaXRpb24oCiAgICAgICAgICAgICd0cmFuc2l0aW9uIHt9IGZyb20gInVuaW5pdGlhbGl6ZWQiIHRvICJmYXVsdCInLCBbc2VsZi5tMV0pCiAgICAgICAgc2VsZi5yMi5hY3Rpb24oc2VsZi5mYW5zX3N0YXR1c19hY3Rpb25fZmF1bHQpCgogICAgICAgIHNlbGYucjMgPSBSdWxlKCdTdGF0dXMgLSBlbXB0eSAtPiBmYXVsdCcpCiAgICAgICAgc2VsZi5yMy5jb25kaXRpb24oCiAgICAgICAgICAgICd0cmFuc2l0aW9uIHt9IGZyb20gImVtcHR5IiB0byAiZmF1bHQiJywgW3NlbGYubTFdKQogICAgICAgIHNlbGYucjMuYWN0aW9uKHNlbGYuZmFuc19zdGF0dXNfYWN0aW9uX2ZhdWx0KQoKICAgICAgICBzZWxmLnI0ID0gUnVsZSgnU3RhdHVzIC0gZmF1bHQgLT4gb2snKQogICAgICAgIHNlbGYucjQuY29uZGl0aW9uKAogICAgICAgICAgICAndHJhbnNpdGlvbiB7fSBmcm9tICJmYXVsdCIgdG8gIm9rIicsIFtzZWxmLm0xXSkKICAgICAgICBzZWxmLnI0LmFjdGlvbihzZWxmLmZhbnNfc3RhdHVzX2FjdGlvbl9ub3JtYWwpCgogICAgICAgIHNlbGYucjUgPSBSdWxlKCdTdGF0dXMgLSBmYXVsdCAtPiB1bmluaXRpYWxpemVkJykKICAgICAgICBzZWxmLnI1LmNvbmRpdGlvbigKICAgICAgICAgICAgJ3RyYW5zaXRpb24ge30gZnJvbSAiZmF1bHQiIHRvICJ1bmluaXRpYWxpemVkIicsIFtzZWxmLm0xXSkKICAgICAgICBzZWxmLnI1LmFjdGlvbihzZWxmLmZhbnNfc3RhdHVzX2FjdGlvbl9ub3JtYWwpCgogICAgICAgIHNlbGYucjYgPSBSdWxlKCdTdGF0dXMgLSBmYXVsdCAtPiBlbXB0eScpCiAgICAgICAgc2VsZi5yNi5jb25kaXRpb24oCiAgICAgICAgICAgICd0cmFuc2l0aW9uIHt9IGZyb20gImZhdWx0IiB0byAiZW1wdHkiJywgW3NlbGYubTFdKQogICAgICAgIHNlbGYucjYuYWN0aW9uKHNlbGYuZmFuc19zdGF0dXNfYWN0aW9uX25vcm1hbCkKCiAgICBkZWYgZmFuc19zdGF0dXNfYWN0aW9uX2ZhdWx0KHNlbGYsIGV2ZW50KToKICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiKioqKioqKipUUkFOU0lUSU9OIFRPIEZBVUxUKioqKioqKioiKQogICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCdMQUJFTCA9ICcgKyBldmVudFsnbGFiZWxzJ10pCiAgICAgICAgbGFiZWwgPSBldmVudFsnbGFiZWxzJ10KICAgICAgICBmYW5uYW1lID0gbGFiZWwuc3BsaXQoJywnKVswXS5zcGxpdCgnPScpWzFdCgogICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCdmYW5uYW1lPSAnICsgZmFubmFtZSkKICAgICAgICBpZiBzZWxmLnZhcmlhYmxlc1snZmFuc19saXN0J10gIT0gJyc6CiAgICAgICAgICAgIGZhbnNfbGlzdCA9IGZhbm5hbWUgKyBzZWxmLnZhcmlhYmxlc1snZmFuc19saXN0J10KICAgICAgICAgICAgc2VsZi52YXJpYWJsZXNbJ2ZhbnNfbGlzdCddID0gZmFuc19saXN0CiAgICAgICAgZWxzZToKICAgICAgICAgICAgc2VsZi52YXJpYWJsZXNbJ2ZhbnNfbGlzdCddID0gZmFubmFtZQogICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCdsaXN0IG9mIGZhbnMgPSAgJyArCiAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi52YXJpYWJsZXNbJ2ZhbnNfbGlzdCddKQogICAgICAgIHNlbGYuc2V0X2FjdGlvbnMoZmFubmFtZSkKCiAgICBkZWYgc2V0X2FjdGlvbnMoc2VsZiwgZmFubmFtZSk6CiAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIisrKyBDQUxMQkFDSzogRkFOIFNUQVRVUyAtIEZBVUxUISIpCiAgICAgICAgaWYgc2VsZi5nZXRfYWxlcnRfbGV2ZWwoKSAhPSBBbGVydExldmVsLkNSSVRJQ0FMOgogICAgICAgICAgICBzZWxmLnNldF9hbGVydF9sZXZlbChBbGVydExldmVsLkNSSVRJQ0FMKQogICAgICAgIEFjdGlvblN5c2xvZygnRmFuICcgKyBmYW5uYW1lICsgJyBpcyBGYXVsdHkgJykKICAgICAgICBBY3Rpb25DTEkoJ3Nob3cgZW52aXJvbm1lbnQgZmFuJykKCiAgICBkZWYgZmFuc19zdGF0dXNfYWN0aW9uX25vcm1hbChzZWxmLCBldmVudCk6CiAgICAgICAgaWYgc2VsZi5nZXRfYWxlcnRfbGV2ZWwoKSBpcyBub3QgTm9uZToKICAgICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIioqKioqKioqVFJBTlNJVElPTiBUTyBOT1JNQUwqKioqKioqKiIpCiAgICAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCdMQUJFTCA9ICcgKyBldmVudFsnbGFiZWxzJ10pCiAgICAgICAgICAgIGxhYmVsID0gZXZlbnRbJ2xhYmVscyddCiAgICAgICAgICAgIGZhbm5hbWUgPSBsYWJlbC5zcGxpdCgnLCcpWzBdLnNwbGl0KCc9JylbMV0KCiAgICAgICAgICAgICMgZGVsZXRlIGZhbm5hbWUgd2hpY2ggbW92ZWQgdG8gb2sgc3RhdGUKICAgICAgICAgICAgaW5kZXggPSAwCiAgICAgICAgICAgIGxlbmd0aCA9IGxlbihmYW5uYW1lKQogICAgICAgICAgICBmaW5kZmFuID0gc2VsZi52YXJpYWJsZXNbJ2ZhbnNfbGlzdCddCiAgICAgICAgICAgIGluZGV4ID0gZmluZGZhbi5maW5kKGZhbm5hbWUpCiAgICAgICAgICAgIGlmIGluZGV4ICE9IC0xOgogICAgICAgICAgICAgICAgIyBpbmRleCA9IHN0cmluZy5maW5kKHN0ciwgc3Vic3RyKQogICAgICAgICAgICAgICAgZmluZGZhbiA9IGZpbmRmYW5bMDppbmRleF0gKyBmaW5kZmFuW2luZGV4ICsgbGVuZ3RoOl0KICAgICAgICAgICAgICAgIHNlbGYudmFyaWFibGVzWydmYW5zX2xpc3QnXSA9IGZpbmRmYW4KICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCdGYW4gbmFtZSBkZWxldGVkICcgKyBmYW5uYW1lKQogICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoJ0N1cnJlbnQgZmFucyBsaXN0ICcgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi52YXJpYWJsZXNbJ2ZhbnNfbGlzdCddKQogICAgICAgICAgICAgICAgQWN0aW9uU3lzbG9nKCdGYW4gJyArIGZhbm5hbWUgKyAnIGJhY2sgdG8gb2snKQogICAgICAgICAgICAgICAgaWYgc2VsZi52YXJpYWJsZXNbJ2ZhbnNfbGlzdCddID09ICcnOgogICAgICAgICAgICAgICAgICAgIHNlbGYuc2V0X2FnZW50X3N0YXR1c19ub3JtYWwoKQoKICAgIGRlZiBzZXRfYWdlbnRfc3RhdHVzX25vcm1hbChzZWxmKToKICAgICAgICBzZWxmLnJlbW92ZV9hbGVydF9sZXZlbCgpCiAgICAgICAgQWN0aW9uU3lzbG9nKCdBbGwgZmFucyBzdGF0dXMgYXJlIG9rJykKCiAgICBkZWYgb25fYWdlbnRfcmVzdGFydChzZWxmLCBldmVudCk6CiAgICAgICAgc2VsZi5yZW1vdmVfYWxlcnRfbGV2ZWwoKQo=
nae-script temp_sensor_status_transition_monitor false IyAtKi0gY29kaW5nOiB1dGYtOCAtKi0KIwojIChjKSBDb3B5cmlnaHQgMjAxNy0yMDE4IEhld2xldHQgUGFja2FyZCBFbnRlcnByaXNlIERldmVsb3BtZW50IExQCiMKIyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKIyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiMgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiMKIyBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIwojIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKIyBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgojICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQojIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCiMgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucwojIHVuZGVyIHRoZSBMaWNlbnNlLgoKTWFuaWZlc3QgPSB7CiAgICAnTmFtZSc6ICd0ZW1wX3NlbnNvcl9zdGF0dXNfdHJhbnNpdGlvbl9tb25pdG9yJywKICAgICdEZXNjcmlwdGlvbic6ICdOZXR3b3JrIEFuYWx5dGljcyBBZ2VudCBTY3JpcHQgdG8gbW9uaXRvcicKICAgICAgICAgICAgICAgICAgICdzdGF0dXMgdHJhbnNpdGlvbnMgb2YgYWxsIHRlbXBlcmF0dXJlIHNlbnNvcnMnLAogICAgJ1ZlcnNpb24nOiAnMS4wJywKICAgICdBdXRob3InOiAnQXJ1YmEgTmV0d29ya3MnCn0KCgpjbGFzcyBBZ2VudChOQUUpOgoKICAgIGRlZiBfX2luaXRfXyhzZWxmKToKCiAgICAgICAgc2VsZi52YXJpYWJsZXNbJ3NlbnNvcnNfbGlzdCddID0gJycKCiAgICAgICAgdXJpMSA9ICcvcmVzdC92MS9zeXN0ZW0vc3Vic3lzdGVtcy8qLyovdGVtcF9zZW5zb3JzLyo/JyBcCiAgICAgICAgICAgICdhdHRyaWJ1dGVzPXN0YXR1cycKICAgICAgICBzZWxmLm0xID0gTW9uaXRvcih1cmkxLCAnU2Vuc29yIFN0YXR1cycpCgogICAgICAgICMgTU9OSVRPUiBOT1JNQUwgU1RBVEUgVFJBTlNJVElPTlMKCiAgICAgICAgIyBOb3JtYWwgLT4gTWluCiAgICAgICAgc2VsZi5yMSA9IFJ1bGUoJ1NlbnNvciBTdGF0dXMgLSBOb3JtYWwgLT4gTWluJykKICAgICAgICBzZWxmLnIxLmNvbmRpdGlvbigKICAgICAgICAgICAgJ3RyYW5zaXRpb24ge30gZnJvbSAibm9ybWFsIiB0byAibWluIicsIFtzZWxmLm0xXSkKICAgICAgICBzZWxmLnIxLmFjdGlvbihzZWxmLnNlbnNvcl9zdGF0dXNfYWN0aW9uX25vcm1hbCkKCiAgICAgICAgIyBOb3JtYWwgLT4gTWF4CiAgICAgICAgc2VsZi5yMiA9IFJ1bGUoJ1NlbnNvciBTdGF0dXMgLSBOb3JtYWwgLT4gTWF4JykKICAgICAgICBzZWxmLnIyLmNvbmRpdGlvbigKICAgICAgICAgICAgJ3RyYW5zaXRpb24ge30gZnJvbSAibm9ybWFsIiB0byAibWF4IicsIFtzZWxmLm0xXSkKICAgICAgICBzZWxmLnIyLmFjdGlvbihzZWxmLnNlbnNvcl9zdGF0dXNfYWN0aW9uX25vcm1hbCkKCiAgICAgICAgIyBMb3cgQ3JpdGljYWwgLT4gTWluCiAgICAgICAgc2VsZi5yMyA9IFJ1bGUoJ1NlbnNvciBTdGF0dXMgLSBMb3cgQ3JpdGljYWwgLT4gTWluJykKICAgICAgICBzZWxmLnIzLmNvbmRpdGlvbigKICAgICAgICAgICAgJ3RyYW5zaXRpb24ge30gZnJvbSAibG93X2NyaXRpY2FsIiB0byAibWluIicsIFtzZWxmLm0xXSkKICAgICAgICBzZWxmLnIzLmFjdGlvbihzZWxmLnNlbnNvcl9zdGF0dXNfYWN0aW9uX25vcm1hbCkKCiAgICAgICAgIyBDcml0aWNhbCAtPiBNYXgKICAgICAgICBzZWxmLnI0ID0gUnVsZSgnU2Vuc29yIFN0YXR1cyAtIENyaXRpY2FsIC0+IE1heCcpCiAgICAgICAgc2VsZi5yNC5jb25kaXRpb24oCiAgICAgICAgICAgICd0cmFuc2l0aW9uIHt9IGZyb20gImNyaXRpY2FsIiB0byAibWF4IicsIFtzZWxmLm0xXSkKICAgICAgICBzZWxmLnI0LmFjdGlvbihzZWxmLnNlbnNvcl9zdGF0dXNfYWN0aW9uX25vcm1hbCkKCiAgICAgICAgIyBGYXVsdCAtPiBVbmluaXRpYWxpemVkCiAgICAgICAgc2VsZi5yNSA9IFJ1bGUoJ1NlbnNvciBTdGF0dXMgLSBGYXVsdCAtPiBVbmluaXRpYWxpemVkJykKICAgICAgICBzZWxmLnI1LmNvbmRpdGlvbigKICAgICAgICAgICAgJ3RyYW5zaXRpb24ge30gZnJvbSAiZmF1bHQiIHRvICJ1bmluaXRpYWxpemVkIicsIFtzZWxmLm0xXSkKICAgICAgICBzZWxmLnI1LmFjdGlvbihzZWxmLnNlbnNvcl9zdGF0dXNfYWN0aW9uX25vcm1hbCkKCiAgICAgICAgIyBGYXVsdCAtPiBOb3JtYWwKICAgICAgICBzZWxmLnI2ID0gUnVsZSgnU2Vuc29yIFN0YXR1cyAtIEZhdWx0IC0+IE5vcm1hbCcpCiAgICAgICAgc2VsZi5yNi5jb25kaXRpb24oCiAgICAgICAgICAgICd0cmFuc2l0aW9uIHt9IGZyb20gImZhdWx0IiB0byAibm9ybWFsIicsIFtzZWxmLm0xXSkKICAgICAgICBzZWxmLnI2LmFjdGlvbihzZWxmLnNlbnNvcl9zdGF0dXNfYWN0aW9uX25vcm1hbCkKCiAgICAgICAgIyBGYXVsdCAtPiBNaW4KICAgICAgICBzZWxmLnI3ID0gUnVsZSgnU2Vuc29yIFN0YXR1cyAtIEZhdWx0IC0+IE1pbicpCiAgICAgICAgc2VsZi5yNy5jb25kaXRpb24oCiAgICAgICAgICAgICd0cmFuc2l0aW9uIHt9IGZyb20gImZhdWx0IiB0byAibWluIicsIFtzZWxmLm0xXSkKICAgICAgICBzZWxmLnI3LmFjdGlvbihzZWxmLnNlbnNvcl9zdGF0dXNfYWN0aW9uX25vcm1hbCkKCiAgICAgICAgIyBGYXVsdCAtPiBNYXgKICAgICAgICBzZWxmLnI4ID0gUnVsZSgnU2Vuc29yIFN0YXR1cyAtIEZhdWx0IC0+IE1heCcpCiAgICAgICAgc2VsZi5yOC5jb25kaXRpb24oCiAgICAgICAgICAgICd0cmFuc2l0aW9uIHt9IGZyb20gImZhdWx0IiB0byAibWF4IicsIFtzZWxmLm0xXSkKICAgICAgICBzZWxmLnI4LmFjdGlvbihzZWxmLnNlbnNvcl9zdGF0dXNfYWN0aW9uX25vcm1hbCkKCiAgICAgICAgIyBNT05JVE9SIENSSVRJQ0FMIFNUQVRFIFRSQU5TSVRJT05TCgogICAgICAgICMgTWluIC0+IExvdyBDcml0aWNhbAogICAgICAgIHNlbGYucjkgPSBSdWxlKCdTZW5zb3IgU3RhdHVzIC0gTWluIC0+IExvdyBDcml0aWNhbCcpCiAgICAgICAgc2VsZi5yOS5jb25kaXRpb24oCiAgICAgICAgICAgICd0cmFuc2l0aW9uIHt9IGZyb20gIm1pbiIgdG8gImxvd19jcml0aWNhbCInLCBbc2VsZi5tMV0pCiAgICAgICAgc2VsZi5yOS5hY3Rpb24oc2VsZi5zZW5zb3Jfc3RhdHVzX2FjdGlvbl9jcml0aWNhbCkKCiAgICAgICAgIyBNYXggLT4gQ3JpdGljYWwKICAgICAgICBzZWxmLnIxMCA9IFJ1bGUoJ1NlbnNvciBTdGF0dXMgLSBNYXggLT4gQ3JpdGljYWwnKQogICAgICAgIHNlbGYucjEwLmNvbmRpdGlvbigKICAgICAgICAgICAgJ3RyYW5zaXRpb24ge30gZnJvbSAibWF4IiB0byAiY3JpdGljYWwiJywgW3NlbGYubTFdKQogICAgICAgIHNlbGYucjEwLmFjdGlvbihzZWxmLnNlbnNvcl9zdGF0dXNfYWN0aW9uX2NyaXRpY2FsKQoKICAgICAgICAjIENyaXRpY2FsIC0+IEVtZXJnZW5jeQogICAgICAgIHNlbGYucjExID0gUnVsZSgKICAgICAgICAgICAgJ1NlbnNvciBTdGF0dXMgLSBDcml0aWNhbCAtPiBFbWVyZ2VuY3knKQogICAgICAgIHNlbGYucjExLmNvbmRpdGlvbigKICAgICAgICAgICAgJ3RyYW5zaXRpb24ge30gZnJvbSAiY3JpdGljYWwiIHRvICJlbWVyZ2VuY3kiJywKICAgICAgICAgICAgW3NlbGYubTFdKQogICAgICAgIHNlbGYucjExLmFjdGlvbihzZWxmLnNlbnNvcl9zdGF0dXNfYWN0aW9uX2NyaXRpY2FsKQoKICAgICAgICAjIEVtZXJnZW5jeSAtPiBDcml0aWNhbAogICAgICAgIHNlbGYucjEyID0gUnVsZSgnU2Vuc29yIFN0YXR1cyAtIEVtZXJnZW5jeSAtPiBDcml0aWNhbCcpCiAgICAgICAgc2VsZi5yMTIuY29uZGl0aW9uKAogICAgICAgICAgICAndHJhbnNpdGlvbiB7fSBmcm9tICJlbWVyZ2VuY3kiIHRvICJjcml0aWNhbCInLCBbc2VsZi5tMV0pCiAgICAgICAgc2VsZi5yMTIuYWN0aW9uKHNlbGYuc2Vuc29yX3N0YXR1c19hY3Rpb25fY3JpdGljYWwpCgogICAgICAgICMgVW5pbml0aWFsaXplZCAtPiBGYXVsdAogICAgICAgIHNlbGYucjEzID0gUnVsZSgnU2Vuc29yIFN0YXR1cyAtIFVuaW5pdGlhbGl6ZWQgLT4gRmF1bHQnKQogICAgICAgIHNlbGYucjEzLmNvbmRpdGlvbigKICAgICAgICAgICAgJ3RyYW5zaXRpb24ge30gZnJvbSAidW5pbml0aWFsaXplZCIgdG8gImZhdWx0IicsIFtzZWxmLm0xXSkKICAgICAgICBzZWxmLnIxMy5hY3Rpb24oc2VsZi5zZW5zb3Jfc3RhdHVzX2FjdGlvbl9jcml0aWNhbCkKCiAgICAgICAgIyBOb3JtYWwgLT4gRmF1bHQKICAgICAgICBzZWxmLnIxNCA9IFJ1bGUoJ1NlbnNvciBTdGF0dXMgLSBOb3JtYWwgLT4gRmF1bHQnKQogICAgICAgIHNlbGYucjE0LmNvbmRpdGlvbigKICAgICAgICAgICAgJ3RyYW5zaXRpb24ge30gZnJvbSAibm9ybWFsIiB0byAiZmF1bHQiJywgW3NlbGYubTFdKQogICAgICAgIHNlbGYucjE0LmFjdGlvbihzZWxmLnNlbnNvcl9zdGF0dXNfYWN0aW9uX2NyaXRpY2FsKQoKICAgICAgICAjIE1pbiAtPiBGYXVsdAogICAgICAgIHNlbGYucjE1ID0gUnVsZSgnU2Vuc29yIFN0YXR1cyAtIE1pbiAtPiBGYXVsdCcpCiAgICAgICAgc2VsZi5yMTUuY29uZGl0aW9uKAogICAgICAgICAgICAndHJhbnNpdGlvbiB7fSBmcm9tICJtaW4iIHRvICJmYXVsdCInLCBbc2VsZi5tMV0pCiAgICAgICAgc2VsZi5yMTUuYWN0aW9uKHNlbGYuc2Vuc29yX3N0YXR1c19hY3Rpb25fY3JpdGljYWwpCgogICAgICAgICMgTG93IENyaXRpY2FsIC0+IEZhdWx0CiAgICAgICAgc2VsZi5yMTYgPSBSdWxlKCdTZW5zb3IgU3RhdHVzIC0gTG93IENyaXRpY2FsIC0+IEZhdWx0JykKICAgICAgICBzZWxmLnIxNi5jb25kaXRpb24oCiAgICAgICAgICAgICd0cmFuc2l0aW9uIHt9IGZyb20gImxvd19jcml0aWNhbCIgdG8gImZhdWx0IicsIFtzZWxmLm0xXSkKICAgICAgICBzZWxmLnIxNi5hY3Rpb24oc2VsZi5zZW5zb3Jfc3RhdHVzX2FjdGlvbl9jcml0aWNhbCkKCiAgICAgICAgIyBNYXggLT4gRmF1bHQKICAgICAgICBzZWxmLnIxNyA9IFJ1bGUoJ1NlbnNvciBTdGF0dXMgLSBNYXggLT4gRmF1bHQnKQogICAgICAgIHNlbGYucjE3LmNvbmRpdGlvbigKICAgICAgICAgICAgJ3RyYW5zaXRpb24ge30gZnJvbSAibWF4IiB0byAiZmF1bHQiJywgW3NlbGYubTFdKQogICAgICAgIHNlbGYucjE3LmFjdGlvbihzZWxmLnNlbnNvcl9zdGF0dXNfYWN0aW9uX2NyaXRpY2FsKQoKICAgICAgICAjIENyaXRpY2FsIC0+IEZhdWx0CiAgICAgICAgc2VsZi5yMTggPSBSdWxlKCdTZW5zb3IgU3RhdHVzIC0gQ3JpdGljYWwgLT4gRmF1bHQnKQogICAgICAgIHNlbGYucjE4LmNvbmRpdGlvbigKICAgICAgICAgICAgJ3RyYW5zaXRpb24ge30gZnJvbSAiY3JpdGljYWwiIHRvICJmYXVsdCInLCBbc2VsZi5tMV0pCiAgICAgICAgc2VsZi5yMTguYWN0aW9uKHNlbGYuc2Vuc29yX3N0YXR1c19hY3Rpb25fY3JpdGljYWwpCgogICAgICAgICMgRW1lcmdlbmN5IC0+IEZhdWx0CiAgICAgICAgc2VsZi5yMTkgPSBSdWxlKCdTZW5zb3IgU3RhdHVzIC0gRW1lcmdlbmN5IC0+IEZhdWx0JykKICAgICAgICBzZWxmLnIxOS5jb25kaXRpb24oCiAgICAgICAgICAgICd0cmFuc2l0aW9uIHt9IGZyb20gImVtZXJnZW5jeSIgdG8gImZhdWx0IicsIFtzZWxmLm0xXSkKICAgICAgICBzZWxmLnIxOS5hY3Rpb24oc2VsZi5zZW5zb3Jfc3RhdHVzX2FjdGlvbl9jcml0aWNhbCkKCiAgICAgICAgIyBGYXVsdCAtPiBFbWVyZ2VuY3kKICAgICAgICBzZWxmLnIyMCA9IFJ1bGUoJ1NlbnNvciBTdGF0dXMgLSBGYXVsdCAtPiBFbWVyZ2VuY3knKQogICAgICAgIHNlbGYucjIwLmNvbmRpdGlvbigKICAgICAgICAgICAgJ3RyYW5zaXRpb24ge30gZnJvbSAiZmF1bHQiIHRvICJlbWVyZ2VuY3kiJywgW3NlbGYubTFdKQogICAgICAgIHNlbGYucjIwLmFjdGlvbihzZWxmLnNlbnNvcl9zdGF0dXNfYWN0aW9uX2NyaXRpY2FsKQoKICAgICAgICAjIEZhdWx0IC0+IENyaXRpY2FsCiAgICAgICAgc2VsZi5yMjEgPSBSdWxlKCdTZW5zb3IgU3RhdHVzIC0gRmF1bHQgLT4gQ3JpdGljYWwnKQogICAgICAgIHNlbGYucjIxLmNvbmRpdGlvbigKICAgICAgICAgICAgJ3RyYW5zaXRpb24ge30gZnJvbSAiZmF1bHQiIHRvICJjcml0aWNhbCInLCBbc2VsZi5tMV0pCiAgICAgICAgc2VsZi5yMjEuYWN0aW9uKHNlbGYuc2Vuc29yX3N0YXR1c19hY3Rpb25fY3JpdGljYWwpCgogICAgICAgICMgRmF1bHQgLT4gTG93IENyaXRpY2FsCiAgICAgICAgc2VsZi5yMjIgPSBSdWxlKCdTZW5zb3IgU3RhdHVzIC0gRmF1bHQgLT4gTG93IENyaXRpY2FsJykKICAgICAgICBzZWxmLnIyMi5jb25kaXRpb24oCiAgICAgICAgICAgICd0cmFuc2l0aW9uIHt9IGZyb20gImZhdWx0IiB0byAibG93X2NyaXRpY2FsIicsIFtzZWxmLm0xXSkKICAgICAgICBzZWxmLnIyMi5hY3Rpb24oc2VsZi5zZW5zb3Jfc3RhdHVzX2FjdGlvbl9jcml0aWNhbCkKCiAgICBkZWYgc2Vuc29yX3N0YXR1c19hY3Rpb25fY3JpdGljYWwoc2VsZiwgZXZlbnQpOgogICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCcqKioqKioqKkNSSVRJQ0FMKioqKioqKionKQogICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCdMQUJFTCA9ICcgKyBldmVudFsnbGFiZWxzJ10gKwogICAgICAgICAgICAgICAgICAgICAgICAgICdWQUxVRSA9ICcgKyBldmVudFsndmFsdWUnXSkKICAgICAgICBsYWJlbCA9IHN0cihldmVudFsnbGFiZWxzJ10pCiAgICAgICAgbGFiZWxzcGxpdCA9IGxhYmVsLnNwbGl0KCIsIikKICAgICAgICByZWFkc2Vuc29yID0gbGFiZWxzcGxpdFsxXQogICAgICAgIHJlYWRzZW5zb3JzcGxpdCA9IHJlYWRzZW5zb3Iuc3BsaXQoIj0iKQogICAgICAgIHNlbnNvcm5hbWUgPSBzdHIocmVhZHNlbnNvcnNwbGl0WzFdKQogICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCdTZW5zb3IgTmFtZT0gJyArIHNlbnNvcm5hbWUpCiAgICAgICAgaWYgc2VsZi52YXJpYWJsZXNbJ3NlbnNvcnNfbGlzdCddICE9ICcnOgogICAgICAgICAgICBmaW5kc2Vuc29yID0gc2VsZi52YXJpYWJsZXNbJ3NlbnNvcnNfbGlzdCddCiAgICAgICAgICAgIGlzdHJ1ZSA9IGZpbmRzZW5zb3IuZmluZChzZW5zb3JuYW1lKQogICAgICAgICAgICBpZiBpc3RydWUgPT0gLTE6CiAgICAgICAgICAgICAgICBzZW5zb3JzX2xpc3QgPSBzZW5zb3JuYW1lICsgc2VsZi52YXJpYWJsZXNbJ3NlbnNvcnNfbGlzdCddCiAgICAgICAgICAgICAgICBzZWxmLnZhcmlhYmxlc1snc2Vuc29yc19saXN0J10gPSBzZW5zb3JzX2xpc3QKICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCdsaXN0IG9mIHNlbnNvcnMgOiAnICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudmFyaWFibGVzWydzZW5zb3JzX2xpc3QnXSkKICAgICAgICAgICAgICAgIHNlbGYuc2V0YWN0aW9ucyhzZW5zb3JuYW1lKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgQWN0aW9uU3lzbG9nKCdTZW5zb3I6ICcgKyBzZW5zb3JuYW1lICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnIGlzIGluIENyaXRpY2FsIHN0YXRlJykKICAgICAgICAgICAgICAgIEFjdGlvbkNMSSgnc2hvdyBlbnZpcm9ubWVudCB0ZW1wZXJhdHVyZScpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgc2VsZi52YXJpYWJsZXNbJ3NlbnNvcnNfbGlzdCddID0gc2Vuc29ybmFtZQogICAgICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygnbGlzdCBvZiBzZW5zb3JzOicgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnZhcmlhYmxlc1snc2Vuc29yc19saXN0J10pCiAgICAgICAgICAgIHNlbGYuc2V0YWN0aW9ucyhzZW5zb3JuYW1lKQoKICAgIGRlZiBzZXRhY3Rpb25zKHNlbGYsIHNlbnNvcm5hbWUpOgogICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCcrKysgQ0FMTEJBQ0s6IFNFTlNPUiBTVEFUVVMgLSBDUklUSUNBTCEnKQogICAgICAgIHNlbGYuc2V0X2FsZXJ0X2xldmVsKEFsZXJ0TGV2ZWwuQ1JJVElDQUwpCiAgICAgICAgQWN0aW9uU3lzbG9nKCdTZW5zb3I6ICcgKyBzZW5zb3JuYW1lICsKICAgICAgICAgICAgICAgICAgICAgJyBpcyBpbiBDcml0aWNhbCBzdGF0ZScpCiAgICAgICAgQWN0aW9uQ0xJKCdzaG93IGVudmlyb25tZW50IHRlbXBlcmF0dXJlJykKCiAgICBkZWYgc2Vuc29yX3N0YXR1c19hY3Rpb25fbm9ybWFsKHNlbGYsIGV2ZW50KToKICAgICAgICBpZiBzZWxmLmdldF9hbGVydF9sZXZlbCgpIGlzIG5vdCBOb25lOgogICAgICAgICAgICBpZiBzZWxmLnZhcmlhYmxlc1snc2Vuc29yc19saXN0J10gPT0gJyc6CiAgICAgICAgICAgICAgICBzZWxmLnNldF9wb2xpY3lfc3RhdHVzX25vcm1hbCgpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBwcmludCgnKioqKioqKipOT1JNQUwqKioqKioqKicpCiAgICAgICAgICAgICAgICBsYWJlbCA9IHN0cihldmVudFsnbGFiZWxzJ10pCiAgICAgICAgICAgICAgICBsYWJlbHNwbGl0ID0gbGFiZWwuc3BsaXQoIiwiKQogICAgICAgICAgICAgICAgcmVhZHNlbnNvciA9IGxhYmVsc3BsaXRbMV0KICAgICAgICAgICAgICAgIHJlYWRzZW5zb3JzcGxpdCA9IHJlYWRzZW5zb3Iuc3BsaXQoIj0iKQogICAgICAgICAgICAgICAgc2Vuc29ybmFtZSA9IHN0cihyZWFkc2Vuc29yc3BsaXRbMV0pCgogICAgICAgICAgICAgICAgJycnCiAgICAgICAgICAgICAgICBkZWxldGUgYWxsIFNlbnNvciBOYW1lJ3Mgd2hpY2ggbW92ZWQgYmFjayB0bwogICAgICAgICAgICAgICAgTm9ybWFsIHN0YXRlIGZyb20gQ3JpdGljYWwgc3RhdGUKICAgICAgICAgICAgICAgICcnJwogICAgICAgICAgICAgICAgaW5kZXggPSAwCiAgICAgICAgICAgICAgICBsZW5ndGggPSBsZW4oc2Vuc29ybmFtZSkKICAgICAgICAgICAgICAgIGZpbmRzZW5zb3IgPSBzZWxmLnZhcmlhYmxlc1snc2Vuc29yc19saXN0J10KICAgICAgICAgICAgICAgIGluZGV4ID0gZmluZHNlbnNvci5maW5kKHNlbnNvcm5hbWUpCiAgICAgICAgICAgICAgICBpZiBpbmRleCAhPSAtMToKICAgICAgICAgICAgICAgICAgICAjIGluZGV4ID0gc3RyaW5nLmZpbmQoc3RyLCBzdWJzdHIpCiAgICAgICAgICAgICAgICAgICAgZmluZHNlbnNvciA9IGZpbmRzZW5zb3JbCiAgICAgICAgICAgICAgICAgICAgICAgIDA6aW5kZXhdICsgZmluZHNlbnNvclsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4ICsgbGVuZ3RoOl0KICAgICAgICAgICAgICAgICAgICBzZWxmLnZhcmlhYmxlc1snc2Vuc29yc19saXN0J10gPSBmaW5kc2Vuc29yCiAgICAgICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoJ1NlbnNvciBuYW1lIGRlbGV0ZWQ6ICcgKyBzZW5zb3JuYW1lKQogICAgICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCdDdXJyZW50IFNlbnNvcnMgbGlzdDogJyArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi52YXJpYWJsZXNbJ3NlbnNvcnNfbGlzdCddKQogICAgICAgICAgICAgICAgICAgIEFjdGlvblN5c2xvZygnU2Vuc29yICcgKyBzZW5zb3JuYW1lICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyBpcyBiYWNrIHRvIE5vcm1hbCcpCiAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi52YXJpYWJsZXNbJ3NlbnNvcnNfbGlzdCddID09ICcnOgogICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNldF9wb2xpY3lfc3RhdHVzX25vcm1hbCgpCgogICAgZGVmIHNldF9wb2xpY3lfc3RhdHVzX25vcm1hbChzZWxmKToKICAgICAgICBzZWxmLnJlbW92ZV9hbGVydF9sZXZlbCgpCiAgICAgICAgQWN0aW9uU3lzbG9nKCdBbGwgU2Vuc29ycyBhcmUgTm9ybWFsJykK
nae-agent fans_status_transition_monitor fans_status_transition_monitor.default false
nae-agent temp_sensor_status_transition_monitor temp_sensor_status_transition_monitor.default false