ansible-test-2.18.3-150400.9.9.4<>,u8h5p9|@1yix=w>&׳jK1-artݺ-S/M غC:b1Zv;i{G3}2t{b}* Z0˾J}$pJ10=mVI4Y%|~@WTy!jMg}ۘ][mΑ<7]M^UCV&DW+Dux)}5[@ɕLy?m}s+U7isd?/e*z AT?Td # S 5Vg }%@% % % (h%  % 4%%% : d% ,   (B(L8T8948:8FG%H%I@%XhYl\%]%^mb#Kc#d${e$f$l$u$%v1,w1%x>0%yJ_zT@TPTTTZTCansible-test2.18.3150400.9.9.4Tool for testing ansible plugin and module codeThis package installs the ansible-test command for testing modules and plugins developed for ansible. Ansible is a radically simple model-driven configuration management, multi-node deployment, and remote task execution system. Ansible works over SSH and does not require any software or daemons to be installed on remote nodes. Extension modules can be written in any language and are transferred to managed machines automatically.h5h04-ch1a7*SUSE Linux Enterprise 15SUSE LLC GPL-3.0-or-laterhttps://www.suse.com/Unspecifiedhttps://ansible.com/linuxnoarchBdRL NUF3l %Fo qX1uoA T==1STJ_J.. ii44EEH$Hl//  LLy|+##OO44CCFF 1123:##YRYR8.8.WWkeke..- L:12I;;**'S^ PPFF~ 4 vvh h pp &".+.tKK!!^.S< f f[[  zz;; d d33||:    l^mM~w  =F i~Z=P<M(BB Q QHXHX7X7X##+%bX998HQ&Q&H@H@  !)!)" " k1?1?WW  ?vl6.'-"|"| eHeHYY o o 8aa,,&&44 @ @!^!^  ==''  $ $]jB7  </ q OЌ"?"?#-#-dd++ee,,UU**5(5(77 ?] 5 -  _  2-?m?mX77JJ+,/cYC$C+4jff.0LLc H] !qLPP.. ##g)) \;e*b8 $DR*   W W   558+8+BB<<R3`X]p/?@`cxw+AM4PHZMMHH''FXC B#er0$$,,O+\5x5x#tXX[[ s* / /r   NN Y Y O Ob=ss L!L!/5cc997!'Lo R7JA큤A큤A큤A큤A큤AA큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤AAAA큤A큤A큤AA큤A큤A큤AA큤AA큤A큤AA큤A큤A큤AA큤A큤AA큤A큤A큤AA큤AA큤AA큤AAA큤AAA큤AA큤AA큤AA큤A큤h5Ch5Ah5Ah5Ch5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ch5Ah5Ah5Ah5Ah5Bh5Bh5Ah5Ah5Bh5Bh5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Bh5Bh5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Bh5Bh5Bh5Bh5Bh5Bh5Ah5Ah5Bh5Bh5Ah5Ah5Bh5Bh5Bh5Bh5Ah5Ah5Bh5Bh5Bh5Bh5Bh5Bh5Bh5Bh5Ah5Ah5Ah5Ah5Ah5Ah5Bh5Bh5Ah5Ah5Bh5Bh5Bh5Bh5Bh5Bh5Ah5Ah5Ah5Ah5Bh5Bh5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ch5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ch5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Bh5Ah5Ch5Bh5Bh5Bh5Bh5Bh5Bh5Bh5Bh5Bh5Bh5Bh5Bh5Bh5Bh5Ah5Bh5Ah5Ch5Bh5Bh5Bh5Bh5Bh5Bh5Bh5Bh5Ah5Ah5Ah5Bh5Ah5Ch5Bh5Bh5Bh5Bh5Bh5Bh5Bh5Bh5Bh5Bh5Bh5Ah5Ch5Bh5Bh5Bh5Bh5Bh5Bh5Bh5Bh5Bh5Bh5Bh5Bh5Bh5Ah5Ch5Bh5Bh5Bh5Ah5Ch5Bh5Bh5Bh5Bh5Bh5Bh5Bh5Bh5Bh5Bh5Bh5Bh5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Bh5Ah5Ch5Bh5Bh5Bh5Bh5Bh5Bh5Bh5Bh5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Bh5Ah5Ch5Bh5Bh5Bh5Bh5Bh5Bh5Bh5Bh5Bh5Bh5Bh5Bh5Ah5Ah5Ah5Ah5Ah5Ch5Ah5Ch5Ah5Ah5Ah5Ah5Ch5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ch5Ah5Ah5Ah5Ah5Ch5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ch5Ah5Ah5Ah5Ah5Ch5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ch5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ch5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ch5Ah5Ah5Ah5Ah5Ch5Ah5Ah5Ah5Ah5Ch5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ch5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ch5Ah5Ah5Bh5Ah5Ch5Bh5Bh5Bh5Bh5Bh5Bh5Bh5Bh5Ah5Ah5Ah5Ah5Ah5Ch5Ah5Ah5Bh5Bh5Bh5Bh5Ah5Ah5Bh5Bh5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ch5Ah5Ch5Ah5Ah5Ah5Ah5Ch5Ch5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ch5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ch5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ch5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ch5Ah5Ah5Ah5Ah5Ah5Ch5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ch5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ch5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ch5Ah5Ah5Ah5Ch5Ah5Ah5Ah5Ah5Ch5Ah5Ah5Ah5Ah5Ch5Ah5Ah5Ah5Ah5Ah5Ah5Ch5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ch5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ch5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ch5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5Ah5A5007c367c1b71ffee7dbc2cf77cc1e80a96f507633e97ee5f5a211ebc8a75288db454f3a3d7573a52dd40bfd45abab83026f16132a9161b7bc0bdc09b79c34ac260253be73a07ffd83731a33de5e88f4b7b1c1338da2006ebb1423ab332771cb260253be73a07ffd83731a33de5e88f4b7b1c1338da2006ebb1423ab332771cbe3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855679a6f50ae17524255e6a056f10b813e4f01cee127bd815053b5bf50bc32706107154dd14c65564454acf8bd30102b40e7ba9d1f1ec5aa30d28080ce751d7ca4aa757d15c2872fd8444d5077895328497fcba39eb46cdffd32ba40328b6ec55e4faeef792ac5dada870b55ba0ddb2adcb081c0c081526a7d2e8641cb54255ceae3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b8553e040d573553b0d99f9eed2c4f64806225ad90c48ea697e6874a15980b1bed34c47722e50965c09ca616d8a0fa1b0e5e6f9676bc73d3adc91f5e1a232457872707f9dfc9424c0770646a7965b56e285c25676bb21e130f3a159d6adbc9119a1373c016c0fc81e5b2f85bfad76912496bbed45aead3ac95ad6c236ac89782f2b66cb4ec28e45af0a016ff16746e88bc7db335734b18679703cd7205734193b88ab08337fe604454d8bfc194961e5e09199d78ff584e45d0f83fe0d5e3318cc2fa609f753630394866f6085c18bf7b5b9fd14d2794a9561a9259c36cc60cab962817b9ade636aba2ecd2a2e65ee6daae6c0d7bf6fadce9a4867c9b2472caa0e3f44a78521f6e917788c4528664158c1e2b9e0e138ddf6ea02357243bc5ab002793f291af64a9e84661fa51b5e1074592b8c04023e2a5571adf18c6ca8cf64e673ab85b7153ba767c80edd2e1041968cce4bae9a2a1ef7e684056cfb395721c24197d54a011e25e36079502a94ac3b0cb4d9c152c0f7a594a83852ace0f52433e97ddfe43d0c03d97645a7c106b88b686d9e1f778f1cf2dbe3736937bc193c1feee581a55b087872f6b33bf9a05ce7336597622cc1818841ae2be9bd0962614293cdd6f5372538cf87713e959a5847ab2791223da1b332e22dea80f3b0f24f7932341c08e91b6af1116b21cf39fdb12b99ad93fe4ae70d31163dace0feb1bf1bdf1bcf4ee62edc3789a04deaf5b3e3e65de619e7fc9b4bd6cb256067c411b962768f4a44927e9f7ec8307a4b24bbff56614e85817c63756793a791ca1c152b30bc000989caf2cb9f25b3b70a18a922744d2949ca3a4f0b6a0e55e48e6c05943b2f8034f92e25adf1b1c1f9db04dc80f08676b2516b98707bd0c658548428ea88191f6b15235813aa96e6132bc6732c3b8bed4e6cd117e08aed27660aa4ab15fb21a74bdbbd7a47f568c626076715cd6bfa1f7db5fc60d1744c8e4afdc2d3088b5efec3d071b23ef086f03d4132e0583f620c27ffce8023fc4a8da1cc4553571bc384e770b197e95e443a8b80e48adf1b3cbfa0f4024902acd80b70c70ea90f23d67a501da41ff58ecac9ae35113174e161959b675d5ca13294c18e72dad2257321a34c916bd80d8af9f8e9eb0aa8dd0a47c76cff5d16a9dc613214acac00eb6f1d1001a6e1c7ff08d376e9f650ad048c9296dd7187d56344c34a3592ee530ea8eb7ac76c81225e6bec274d7a98570b55c17f77e74a80fdd575f381e8259b8af66e8a07ef2712cff442ae55f427bfd8d061e7f0fde0efaae591dc559aae23991c18e2680d450d2d7438c435d4079fd6d34abda3e819d685b5a1284ba7ef9fe4e10810aa83217fb382b7a38d5149ce8a65589c06586b6f8b70466f736e9f8707015e11e8374a2a8477c501614d45fd1d5405bd0f7d1d05de1e6ee3c918027e5b03e6943338207943154762e5c75d0be452c6b9330450ccf848f990c3f8cda1b63dfab653ac52b1a97e530a6c56bfe8d7073d52d11a4e39f2321a652c34d03d01d43d0395422f61d50bab745fb06b7f93901bb3b5722cf909f263683c898b4ea68d9cc891e6e553c7e46759a3c41f63511769f9fc5002a4b66623eef913bee141c2ed8aad776943274037f4d38ff0ea672d7f5175ffdd9fff3d8e1d970a39a6bd3807bc36588f2b2354d62a67b3e7f9b5062f14d2c23d26b7da845d2fdd7633c7d0392590f503dfac9ce5fc8828ff63ca20949a163841a610a47beb71446bf9c4ad3008f1f6fbc4f2d5f5fac0a8963e44d96b83b35b19be1baa5099ea06385e49b3f853afff83a1f81d3cc6de0f53feccfdf324986f57f609ec781a3bf31d2199767dfc7c330390cf083e53101d283fdc078aba984d116e86274109836ce95d8c3d367c7c330390cf083e53101d283fdc078aba984d116e86274109836ce95d8c3d367c0c1e142c85cc1984048b536bee53704dcfc2d6421a4ba860512a14ac36fa360c0c1e142c85cc1984048b536bee53704dcfc2d6421a4ba860512a14ac36fa360e0ed7ec526e858c64e5a8db71f03c34696fa5a99a1a2685e63411e854d21a99ce0ed7ec526e858c64e5a8db71f03c34696fa5a99a1a2685e63411e854d21a99ca894302d8b8463d42cef951bbf6b113e4100392fb4f0c4d0930fd756f63f728fa894302d8b8463d42cef951bbf6b113e4100392fb4f0c4d0930fd756f63f728f9b2cbeddd51ed80270a0694c1450e85f978f68f4527c2bf8c0fd3e058c3ca2c39b2cbeddd51ed80270a0694c1450e85f978f68f4527c2bf8c0fd3e058c3ca2c3d036f0ff7214cb04dfa2360f48bd22e34a8b0cb3bd67a9f29521dc91914de67a443cf7018dd5b26e3c6d18c67f13c7290906fb66e46d646a24c0b57cbfffb8890c64434c120355b2472883b1bbc8a0b925102f98d62db956a9ce7870906dda89a913e847354d8aac894d523784bec0edb5607d1926ade0f75abab7e1f87c7d955304b86bcbbb46266d2497cd6c716eaccc6c3bc51a4e9013997e0bbecc87b3568f5a8a7460fc37893a50a530e2a9782ae2d5348ce9b878ab87fd17aeda9bc6a8b865b888e83a80183fcc2377953e1c2732ae8759940b116d97de52d5262f3de0b865b888e83a80183fcc2377953e1c2732ae8759940b116d97de52d5262f3de05d135d3ec65d98b559dccfdb3f0e9cba5223114aeef311bf8cacdf2879744f835d135d3ec65d98b559dccfdb3f0e9cba5223114aeef311bf8cacdf2879744f83939aeabff9b8e94d70e451a16addaa19cfc7606c779f02d55e1919e54aad6c9d939aeabff9b8e94d70e451a16addaa19cfc7606c779f02d55e1919e54aad6c9d53354b17bf07114482dbc69b26948c18bf7e4a55246b58a48a360e709789e58053354b17bf07114482dbc69b26948c18bf7e4a55246b58a48a360e709789e5804d693472f7c5cc2f3436df2cd5beaa434201134040748aafb20bf81d439af8a74d693472f7c5cc2f3436df2cd5beaa434201134040748aafb20bf81d439af8a77fcd99f7cce00f7b00f1f0ce6744b5f559395e581f5215a763fef2540e073a917fcd99f7cce00f7b00f1f0ce6744b5f559395e581f5215a763fef2540e073a91d87b16ccbeded776f7aa1aa469d5e4f216bf490a7b1401e7134103c991303f91d87b16ccbeded776f7aa1aa469d5e4f216bf490a7b1401e7134103c991303f91218e3c582bb8a0d5662b6cce4f8c3700e44b84d30dc74fb06e2476785fef3aa67bcc2107c3213385a8a15727e52c8b10f9a3beb0ddd09c5347eabbd1391c2bd838d3571b56d76a9600f1e9a9ba6f71f819a5c599d9ffa9d958aec5b91d09d1e738d3571b56d76a9600f1e9a9ba6f71f819a5c599d9ffa9d958aec5b91d09d1e7b0f11b3b0491415eaa8bf0a366f8e7d468b4b0c6e317daac876f1268b242793bb0f11b3b0491415eaa8bf0a366f8e7d468b4b0c6e317daac876f1268b242793b36cb0205e74159774d8265615a072f40ce167a1356d1b74fc91cb8c90a413b2536cb0205e74159774d8265615a072f40ce167a1356d1b74fc91cb8c90a413b258a27a1282da0a8c5d9149271d9d873432d7e981be61438401f928ac83376cf568a27a1282da0a8c5d9149271d9d873432d7e981be61438401f928ac83376cf56475b2687420c635aa9935e968a08cac71eb6fadb27d8d26db848352a9de54938475b2687420c635aa9935e968a08cac71eb6fadb27d8d26db848352a9de54938d68c5b04c3f3752f3a2e550efdb86ca24c5a5243801684cae205ea93e23d16d6181f5cc22346d000f38de9dd84e3fca8e2903765ebb9e1b64a5cb895ec631c77ecd5b7e9373c3ad6239e1f15f67ec4e9d12cfd4a8d04aee80b9c006999606459ecd5b7e9373c3ad6239e1f15f67ec4e9d12cfd4a8d04aee80b9c006999606459a9ebc32e753ca0eab9d3a0bf121a203177f70ff9e2a541bd46c7b335a6232094a9ebc32e753ca0eab9d3a0bf121a203177f70ff9e2a541bd46c7b335a62320945cb054dc90576ccf0dcb6a4897bd14fdeabb57ecd19c4a57580c6c53dcd1a9685cb054dc90576ccf0dcb6a4897bd14fdeabb57ecd19c4a57580c6c53dcd1a968c824340d2da82e32d36e2f5906912de9046210c5122f148f5e40b33147298fd4c824340d2da82e32d36e2f5906912de9046210c5122f148f5e40b33147298fd4ed393cf07389feea2b51f509cc28291a574cbc97ae5c013bb9aab2641fb60640ed393cf07389feea2b51f509cc28291a574cbc97ae5c013bb9aab2641fb6064040d8a6b852e7b67fb04627b2472c8316faafdeaf40642b75c25e2a200e6af12240d8a6b852e7b67fb04627b2472c8316faafdeaf40642b75c25e2a200e6af122eb178ed5ea2f2b0e5882192447804a57fa6009de6a54112467af31829ee8576eeb178ed5ea2f2b0e5882192447804a57fa6009de6a54112467af31829ee8576e25539c78e973ed4805482fe7daa2831d46cd4c47613af185857fd2b59120881025539c78e973ed4805482fe7daa2831d46cd4c47613af185857fd2b5912088104007b44504955819f5345f81cac4bc11bcea92de654beb6b0b93d81549bbfcee4007b44504955819f5345f81cac4bc11bcea92de654beb6b0b93d81549bbfcee961a33476c9133fc9dcfaa53984972131043506c82f79300884e34cbfc8a12cd68155dde1932de7cf3c5c3c1c41253c0d76f8ad87a9493fbca0ac1a7a2c75cfb55f13c957ed58f7a688e195f8b0acd88d2060fd7da90dd624239899f926b804d55f13c957ed58f7a688e195f8b0acd88d2060fd7da90dd624239899f926b804d1bb9e1218726362bd1c708d1e430d14dbad050bee5313c1cb0f19010b3f19f121bb9e1218726362bd1c708d1e430d14dbad050bee5313c1cb0f19010b3f19f12d7fcf58d2709f3ea72431098fde6f0a9518c554ed94390bfede44881ee8b47d0d7fcf58d2709f3ea72431098fde6f0a9518c554ed94390bfede44881ee8b47d0c1446db35f03140c6b42b2ab899eb66b22774facb2020706a3d3a386d89fa943c1446db35f03140c6b42b2ab899eb66b22774facb2020706a3d3a386d89fa943c75ae2fafd284ac72ac78237a9105dda776e5c62d9a270f0c36fd8785006c29cc75ae2fafd284ac72ac78237a9105dda776e5c62d9a270f0c36fd8785006c29c26936128ee857a8c7b89ad37f867d5875839efc85a41f11983db2382a35ca9c126936128ee857a8c7b89ad37f867d5875839efc85a41f11983db2382a35ca9c1c7a563b0af2de4b3697853e7fcb92e41a2ad21839b7d81a8013cf610e6078f3dc7a563b0af2de4b3697853e7fcb92e41a2ad21839b7d81a8013cf610e6078f3dff538a859e567a92ad0b906890fcab68d392c1c6fc86e608113c9c3913750babff538a859e567a92ad0b906890fcab68d392c1c6fc86e608113c9c3913750baba2ef1038995e5e00e1abec30e73cc30107e8c19680423f5f20641a35cee15223a2ef1038995e5e00e1abec30e73cc30107e8c19680423f5f20641a35cee15223ac98acbc0eee8f04d9e5020aca10b85813117d0e7d5a1eff7c4caaf33297d852ac98acbc0eee8f04d9e5020aca10b85813117d0e7d5a1eff7c4caaf33297d852c91f3cda21c3b2b42641d0bc4aae64f855627d82017f6a5aae8639b42a943dfbcef3a5696280e0be82a7a5deefde45b13c3dc65594cb94394e270ec075e3cda2d046837afe761bc900ad8a4a92552fec53729355fc3e60069a402c2bd05346cfdd6ff5b39c5d5dd9bee8c860ae4d5b365aff35d7be078143374d0b3748556df90f068b4753fbb7f388fc739aceb34912c36a16b399df363af6ac687c566db43a40e682ffcff0533a8511bb050976009c4956a14a3a801e34097bcff5127e232a09f29170e4277104884d4af2765832a73ec5c38f01738a9f6f5777ce9779d708b0ec7f0f839ffe45a662196a5ab64f28741146159c0141a956d32a0689490f37f5f4622ff12da4c72302a0cec62125e4b871456442cc080efe00d78ba666e096f5f4622ff12da4c72302a0cec62125e4b871456442cc080efe00d78ba666e096e89b64dde45a3ea6c9a997d55570b051c689305a092526dc1f70c116f15575fde89b64dde45a3ea6c9a997d55570b051c689305a092526dc1f70c116f15575fd0f048bd5488fc267c760e04d32ce1ede237bb689cf9dea1dec3c350727277cd31389e77ab30a741a1511bb13f080649749d2757cb13b6813f1601ac72cc0d4462d5c80a63bcfb287d78dd0da1eb5e75a5ef567ad64e6314960ddd6ac179e143bbd3deec5f79e13954f46100afc7e552fad1a4702164310fe9e86d34e080e1eb0bd3deec5f79e13954f46100afc7e552fad1a4702164310fe9e86d34e080e1eb097f857fb733efa41a29eecd02d7d9396ccb724df0a97f98b6c962c8343066bb697f857fb733efa41a29eecd02d7d9396ccb724df0a97f98b6c962c8343066bb6e5eb80dd02a388a01388868f5bf688c656d154c5cc21006004ff91ac677a0586e5eb80dd02a388a01388868f5bf688c656d154c5cc21006004ff91ac677a058620466b1762f251a6a1646ad621ded361b781085162a5be8a8a0afbeae9b280d220466b1762f251a6a1646ad621ded361b781085162a5be8a8a0afbeae9b280d248edef76a783125d62dd8dfde453c3a10c86b533b49835b2c34e99335caf55a248edef76a783125d62dd8dfde453c3a10c86b533b49835b2c34e99335caf55a28dde552d17a070e5fe18d4d9a8dffb3c1cf0285e9a905418b0f125b5fca71ad5dd0a556636a64d31bb87cea87959bb77850c6f2a233db0402c756a0a9c52d6278bcb7c2f11bffb00cfa73d55967bea00fa511a0549b2e03fc6094cb42a626c27a65b4378c4040dbb63c86d79bc08b30afca053c307acf72a592a1b53acfff18691307b4df375da4fd524631712e39296ede1babb885136fc508164685c8caff21b4b22fdff04eaee5625de66f2c5cfa793153a08c6f08f8e6be110626d5517b81b4b22fdff04eaee5625de66f2c5cfa793153a08c6f08f8e6be110626d5517b8cb51fd3e2b64dba48ebd3b767ddf8749f2e95bad501b65dcb34a5dc9cbbe67fccb51fd3e2b64dba48ebd3b767ddf8749f2e95bad501b65dcb34a5dc9cbbe67fc5ed11617580c812e30cbd906486255bdb95f278896893b75257df7c0c99ebe5e5ed11617580c812e30cbd906486255bdb95f278896893b75257df7c0c99ebe5ed50e0da53c9df33eec319a66d628f3180c44de2d089f1ba5fb6b70df24323c77d50e0da53c9df33eec319a66d628f3180c44de2d089f1ba5fb6b70df24323c776176b926591600646b8bd4893d54921b63ffbabbe1b740c5afd2574dcd88c3fe6176b926591600646b8bd4893d54921b63ffbabbe1b740c5afd2574dcd88c3fe826d42a5eef56770c3b783d1f1e0f37d26ea64e3f333f84122a262db1a3e105d826d42a5eef56770c3b783d1f1e0f37d26ea64e3f333f84122a262db1a3e105d3c1a627a69152dad26ec62335a8b8131303982ce4389d4e92aa95763045fda623c1a627a69152dad26ec62335a8b8131303982ce4389d4e92aa95763045fda620f7cf615da490b5769411f55bb5ebadb05b6f3f8aa3e959e002deb8b3ce35400adabebd18bfbb4438116fdacd83b99b4497d04f010372f8a30a7093529387667d30be303842ccd70eb199d2d012321d86ebbf112c7021b6032285acaca2193dd53e2864055af21c3167b62a5e7d72259450d73d2fd2281047eee70980e0a670497032043608bcba7f38b40d6c56e1746d135ecd518161b3862415d90f21e900297032043608bcba7f38b40d6c56e1746d135ecd518161b3862415d90f21e9002eb65726f19b30cd1e81aa2b116a62edab946f87c4381a692b4f5ed97e91c0dd6eb65726f19b30cd1e81aa2b116a62edab946f87c4381a692b4f5ed97e91c0dd6bb34c2c0d39f8654464133ccfa3df72adf267c341a4ec069161bbe24fd76d4c4bb34c2c0d39f8654464133ccfa3df72adf267c341a4ec069161bbe24fd76d4c45699407f92bd1be9682662d73006706d16c8b2e149fb20eb46b3f8125e69e113cce66d6150e4a9621d6e6b804a4c89b8c50aac5878c37309cd84b63bd0e821008bb6c43d6cbbab699c82205bdec67410de704341b949eb4e3102ac38c4acc38377c14dbd56d2551d89967c835319d2fa5643210a9b74410f53472a240f7aeb74f558bb0e8c0b2a864004910ca1f993e23869def7db2f567d1585992c14401917f558bb0e8c0b2a864004910ca1f993e23869def7db2f567d1585992c14401917fdfac78407dc3546f0a530315d4d55fcc99499e286c23480ff29271ba6631cf9fdfac78407dc3546f0a530315d4d55fcc99499e286c23480ff29271ba6631cf97e971d9b336261e51fc1a61858cc9a81be76b494323fec8800cf8002ee148b9c7e971d9b336261e51fc1a61858cc9a81be76b494323fec8800cf8002ee148b9ca4359e1445806643d4c9f0f2acf896e404dbe01e938771483e3a33c97dba6065a4359e1445806643d4c9f0f2acf896e404dbe01e938771483e3a33c97dba6065d9ffa56bc69c06a72e7482965b110e50699e1132c4b08da8e88fa22a12d48603d9ffa56bc69c06a72e7482965b110e50699e1132c4b08da8e88fa22a12d486031810941b9a8d0d0162fa01b641d832f4bacf56ab6746cf32ec1e08af3ac0973dd4433d829fde35deef8ef165fc31f36fd5fe036f6572e77d3a695cd11d4a7526d4433d829fde35deef8ef165fc31f36fd5fe036f6572e77d3a695cd11d4a75266c0500b53ae410c569212a2192d77a137c376429dc8c4705bda274430536222b6c0500b53ae410c569212a2192d77a137c376429dc8c4705bda274430536222b148cd66a7fb903b182e92643dbbd970abdaf78fb871501bd3db81f79d4030fe8148cd66a7fb903b182e92643dbbd970abdaf78fb871501bd3db81f79d4030fe86a895c428a56093c07d5d916676ff43fd1773b1bb2385f7e18a98ad4fad739ec6a895c428a56093c07d5d916676ff43fd1773b1bb2385f7e18a98ad4fad739ec9030ccb6770a04c18c3724ba2a1df5c4009c81069ba12f4ce3f1030c02a3bc829030ccb6770a04c18c3724ba2a1df5c4009c81069ba12f4ce3f1030c02a3bc82f40df8ebeed16cf50474255af2efc94baf819f02fd49fd0cbca9110c66d9741df40df8ebeed16cf50474255af2efc94baf819f02fd49fd0cbca9110c66d9741d8c9aa38457b8b1142ba8896cacf09421bd6cb889fcb92c52d20c1974ceaabfc1bfb430e961790d0c1d7ab0bec252535a500b54eadecb83996320fb551bdaa2b2bfb430e961790d0c1d7ab0bec252535a500b54eadecb83996320fb551bdaa2b2d55f9fad0e83be81ca70ce585d3c842684e50adbea68e4ff661482f93dfd73e5917fffd2f63c3d84a58fa889c13580c8399778ae16b767d7fe3f2113dbe45f23917fffd2f63c3d84a58fa889c13580c8399778ae16b767d7fe3f2113dbe45f2350fdc46e7859e89083b4eb1fefd8a58435ffa38f485364af909a9bee9471075350fdc46e7859e89083b4eb1fefd8a58435ffa38f485364af909a9bee947107539c12fad121f40fb4075426d7daf47645a0317389c11c7c922519a64971cada4b9c12fad121f40fb4075426d7daf47645a0317389c11c7c922519a64971cada4b27908ba2eee0b9b4a78ea65d17e8b76abdd10447c6b1ee46d247249ae812d7cc27908ba2eee0b9b4a78ea65d17e8b76abdd10447c6b1ee46d247249ae812d7cc7e2ece3ec8fd70dc3aa99b4d960f7d214ea881eb6cf568ebda00382a68e24af37e2ece3ec8fd70dc3aa99b4d960f7d214ea881eb6cf568ebda00382a68e24af37933de08db80fb46fd336e3e2a0fe3b33bd2e3313799a171c814595418724fef7933de08db80fb46fd336e3e2a0fe3b33bd2e3313799a171c814595418724fef07f7537ea0ebaf4bea8bb7a145c86d1789ddf51ea58154bd4cb3231ef91f25f287dc17334640a22c41e8468b5b0e3336afabf9a08d56209a550baa120b154c14a2732acf511762d3a6dc3e9178a32cb8c1b7d7f2851a893c81f8c4de257212d9c9604a59f855c2a51ec0a6790dd8753b9ff3091d48d32b98aeea7dcf7d3f29141e2bb09bae9631dcfc8e5145c3532cf1b67775c31b009d5b518614a2725241ae510a92f70f491471c6e624ca9dd7c9a7b16b13367d0bc537914d8c6d9b7e233fc6ed108b2dbb67538ba3dec5e7c963abeb94eb92b8241a7e4f25c9522b43f8464e4f49cc0d957b5e64587d367353ef920990e1decd9cb7fa2f575b5747a652e9b6020cfdbe4ff4d3423f9ac45ddcac064b75b0b16308e5d9e9ce6f7d000c01216114ff24336d8d39614176662edf12522afaab765e43247725fea285ea6920916a973872d895b1f22347ef2597996b3ecbc1906badc3933d92ccd156900903063f5906eb422982322be55c77796df85d9a8f89d460ce23515dc411cfe9860b6247a9db99ae81da2218c357919d72a3f9fc2e2544aa5ce2a9631ada8a77bde5cf47a9db99ae81da2218c357919d72a3f9fc2e2544aa5ce2a9631ada8a77bde5cf1be8ca95f23af2e745b8cdf05a3679e16f923372efe974bcc18d9a3905cbdd671be8ca95f23af2e745b8cdf05a3679e16f923372efe974bcc18d9a3905cbdd67d88d7505f7cd8b69aa80f8deb3af3373759737b216fd221988fdc356a3e4dd18d88d7505f7cd8b69aa80f8deb3af3373759737b216fd221988fdc356a3e4dd18f69074324a240cf902b4fd9720923a2d5925a69a83783b74356a5bc202fc47a0f69074324a240cf902b4fd9720923a2d5925a69a83783b74356a5bc202fc47a0cd179d653e383a3f5838920cd184ffb53691656f86137087e3aea336dfe6e6c1a3cf162d41aec250690d5f66308e2775346cc97c39227fc30f93d697d702c24552797e2a877a373a14d512cd28b71791371bf96765d0f3058d71313c20b588b269714b01447e66682f942405c34d491a6212edb28d15b5f5b2ab4a0bb6ce5f410de614d8370d864263ec89ffd3818470c543dc4141443b5e81d41b458f65f6b6875e5bc62689fd5cb9e1d73ae8081ce14b170fe802b2cd2f83e6f44d1c8b4c6d53424689c25e281ede03446a5fd3ff3ff3fd099f3ad2efb51233ed18a5c26aa7b9dfe558fdc19f009529d7e7a1603e3e8cd04a251efc07ebed9dd491d771ad3505036b1fdddc5c34c6551d3b3d4ff442361d71a0db1f9fe508913499dc1d10438c5d2a55971fbd6f9c36d212116999f51a7c45042f84a04d478a0292342d79c7933098966a8371c3199d2095e7b8975084e8e99f4530c5086a08d62471c0d32636edb135f4a250937bab7f040cc62c06647510a111717cf7b5a3685a6bc3a6993b173e56321d465df796ef80ef2baf1edd3c76b13e77e76ca9d256ac815b01fd3b173e56321d465df796ef80ef2baf1edd3c76b13e77e76ca9d256ac815b01fdc2428d7580df432dc3790f1820a2dacd8558d2a661d0c9ca2ca4b0bfba2814cac2428d7580df432dc3790f1820a2dacd8558d2a661d0c9ca2ca4b0bfba2814cad669351dcc8e2c928d573edf53e1317b6616f8e0e19829a723835f05a79ba4f4d669351dcc8e2c928d573edf53e1317b6616f8e0e19829a723835f05a79ba4f430170fda0881a741e575c0feab367e820ab4aa717796c3255281e7e5e766417630170fda0881a741e575c0feab367e820ab4aa717796c3255281e7e5e76641766d6e043e91c0ba7fdde1f629d5a623192d6550c87cf51ed3184405661cc4180b6d6e043e91c0ba7fdde1f629d5a623192d6550c87cf51ed3184405661cc4180bc76b1265d5222a478f4d68dbe8c684a902b3a4cf641e9263705ce0cdd05e7f3cc76b1265d5222a478f4d68dbe8c684a902b3a4cf641e9263705ce0cdd05e7f3c11086cfbdb6db71dd951217e408c5570a6b5750c3332da6c977f2ef03891ff5a83098c603c824d840c76bc9a7d70abfb653aa8792648534121d6cb9b65a730ee09891305c88b611d4359a12520ad7c71a3983c5e8ed334e520c1df7a4c069a7b181a7238c0643eec9cc966232b978fc194c383375295f487858a4b2563eb9a4100ba138db983afc2065986c410f532d3cda71486fa91b7a40c90f9245429e017a1136453cae20d5b5416f20ec909718968a73960d450a6feb84682fc6684f8f499a33356bdd2e3699ef50f8d0cf747753354c69545d15a0e8eadd172db5692b499a33356bdd2e3699ef50f8d0cf747753354c69545d15a0e8eadd172db5692b492e205bca509a572c1d1807b69f3b8a4ffb54c6a67514b8af817f8717ef7962a2addf0b7d133d820c207ee787bf0992041a30d8036c33a90deffe74fd8fc5ddc2addf0b7d133d820c207ee787bf0992041a30d8036c33a90deffe74fd8fc5ddc1c22073346b5807275b14b553170239e0b0cf569fa96fb5c743f63b1a2cca8db1c22073346b5807275b14b553170239e0b0cf569fa96fb5c743f63b1a2cca8dbeb0b15e741ca809370bf0136807c7f57cef75ccfbde0d15699b6b50a8d4968daeb0b15e741ca809370bf0136807c7f57cef75ccfbde0d15699b6b50a8d4968da68f100ba7cee7c731b835dfea6b90fcfdd1402ebe0c8a5694a2b6e29e807de2c68f100ba7cee7c731b835dfea6b90fcfdd1402ebe0c8a5694a2b6e29e807de2c337dd983580c7d93706165af4d20e3a291eb8f38ba0950d1506fd2d7a8351606337dd983580c7d93706165af4d20e3a291eb8f38ba0950d1506fd2d7a835160625b37dd7bc07a0fc5bf4f46ac335372717d884f6e664b850912b13aeb907296e25b37dd7bc07a0fc5bf4f46ac335372717d884f6e664b850912b13aeb907296eda6ff8e78b66eb3ac402fe99d12d37949e10c7340a81fc3a3837112a5004eef40ff3e5e8ee464d7ea42b9707e8e6a5b681a17824e82ccd06f95d39c6ae7288b00ff3e5e8ee464d7ea42b9707e8e6a5b681a17824e82ccd06f95d39c6ae7288b08885136fe9ec25cec3e217435d55e23b7f4529304b141d351c65361e193fbee36b7f7b1247a8f9730a308b1225cff08c0703063c653788731f7c03e8d4ab05fe6b7f7b1247a8f9730a308b1225cff08c0703063c653788731f7c03e8d4ab05fe4751d3f204970c93ff55800c30e060fae95fe2d4911eb420980baa00abd789174751d3f204970c93ff55800c30e060fae95fe2d4911eb420980baa00abd789172c1a6bea82f2c47d7848c293e8be9e32ea3d9c810ef3d4973688e2065db262f82c1a6bea82f2c47d7848c293e8be9e32ea3d9c810ef3d4973688e2065db262f8d6b0432b796038cb7d40c4030f706c4abaedf1ad12c9b5c32f780ac950648f65d6b0432b796038cb7d40c4030f706c4abaedf1ad12c9b5c32f780ac950648f658d723998d7cdde5ef77d7f3755eb189a62c92794a0d10ab5e8a0a66fa8d00b8b8d723998d7cdde5ef77d7f3755eb189a62c92794a0d10ab5e8a0a66fa8d00b8bd39601f580b898e9cac1459a4dd949221b985ded4c24d5f330738e8dc3afc048d39601f580b898e9cac1459a4dd949221b985ded4c24d5f330738e8dc3afc048de9e0fcbbec6628b88be23ccdb1ce46021686eebd6b16aa0d27f3f54e795e55ffe58182e6bf4bbe771184246c3a4af1c7e96f5cc4b822d293ba79628efb0acc4691febd5ab3699ae15b9ca66f63f5f830299afa0a61a134beb0df7f035b59f30505cbf38dee45f2566ed71ff83dbe9a28b9d2839e903cb06665e5a6ff6f1d0638aa9ed3059359f0871c4a80006d1d318b1c93c960c78c11af34132e5dbc19027790b25669a360149781ce2982da2aa6ae292112ed7b164f18dec57f00567cc620892f504328e33e3940483702c9a039561f0ce41f7141e754ad3363f4319e7a4eba1fee13626aa951ee755c9110ed445f0de1c35030f9d8096d6bf520eed89fcb4cefb627099a119929fe39f11b49bf5525b51a5d0a73188eeda9f3813c50aa9e0453b53e807fdbb66363dbde0fa3cf1305f87138bef42e0377703b11d3ebf71649665535b9f3bff11eadb9fc905edb48d3bd982d0832d5597080df9c78eccfe1075636d57699effa7342d3d5156212f2a671e0da3dd55bfbd7dc2c12e1889631075636d57699effa7342d3d5156212f2a671e0da3dd55bfbd7dc2c12e188963081dafd2442a35f49a4ae5d7c0cf51abda0d7b0905889461e661192548ee829429df698aab27713101b56a2c68fa1c7d54dfcd987957e9d64b9f0920f960aa0e29df698aab27713101b56a2c68fa1c7d54dfcd987957e9d64b9f0920f960aa0e0b577bd151c1272f7472432db53134f1dc1c17576d2787ece496939140d4b45c0b577bd151c1272f7472432db53134f1dc1c17576d2787ece496939140d4b45c2381b4be75e64feff48cb88b7dda5dc17608df7e29dd29656089f16281ced57b2381b4be75e64feff48cb88b7dda5dc17608df7e29dd29656089f16281ced57b494538c57b943d96b539da8a6c02e59e9020879898630f92b7f0407e9026e274494538c57b943d96b539da8a6c02e59e9020879898630f92b7f0407e9026e274c37386f768c34458d461f3921098c48e0962607c1a4a4f6c919f8b10f2b4b5e1c37386f768c34458d461f3921098c48e0962607c1a4a4f6c919f8b10f2b4b5e19ad40fce18e276f52489fb77f986a77a9f1dad061d863cab7a2550afc952d7369ad40fce18e276f52489fb77f986a77a9f1dad061d863cab7a2550afc952d7366cd1e149f823851b199f515b269151db831727364d0bb36c25ef9d320b45eab7f5dcfdd2e17d4a337e8104e01039e640b38fcda89d84ea985e3cc9090b637a53f5dcfdd2e17d4a337e8104e01039e640b38fcda89d84ea985e3cc9090b637a53c8630b92b57be48a12d5debe5c4175188f1a476446e013be14851dc16abef1ddc8630b92b57be48a12d5debe5c4175188f1a476446e013be14851dc16abef1dde6fdd4bf4e4b07db96dbb817c446aa551c59f128218264a8826d6c7e586f2cd5e6fdd4bf4e4b07db96dbb817c446aa551c59f128218264a8826d6c7e586f2cd571f3eb0b578ac4057b513f1a6326bcfae2d39908c64b6b1711c27502972c627d71f3eb0b578ac4057b513f1a6326bcfae2d39908c64b6b1711c27502972c627db55c240e94ac90c711fecdf5e1d81f0007793308c9c2868d3dd30b9f27f7bc6ab55c240e94ac90c711fecdf5e1d81f0007793308c9c2868d3dd30b9f27f7bc6ab20bbc57005f26ea1627345387e442942b473d06177e715467d4efb67913a348b20bbc57005f26ea1627345387e442942b473d06177e715467d4efb67913a3485e96cebe92609211ace9235262288298010d4abc68c39c196edbf04852f3037a5e96cebe92609211ace9235262288298010d4abc68c39c196edbf04852f3037acd8e823a2bd4d27e2d59a98a2cbacc3cce2b9dac5ca0c2b09c4624483c16b289cd8e823a2bd4d27e2d59a98a2cbacc3cce2b9dac5ca0c2b09c4624483c16b289a84529501ac29ee86dd097254540179a36b52b8b8fea7cb2270db909000bbf14a84529501ac29ee86dd097254540179a36b52b8b8fea7cb2270db909000bbf140c61a78f14fdc9026f618556d48251a3d3871efe740c6a4022f137716ceb62400c61a78f14fdc9026f618556d48251a3d3871efe740c6a4022f137716ceb6240dafb65708b4e38793f7e8180c912965ec2ca46c19506648b515e3209d6799972dafb65708b4e38793f7e8180c912965ec2ca46c19506648b515e3209d6799972f9de6a25298c37e474f0b8a86bdf3e781cac06a92fb343a8faea26ceb134b6ebf9de6a25298c37e474f0b8a86bdf3e781cac06a92fb343a8faea26ceb134b6ebf532cbbdfc8a98260f5983652af53531ca3a693dac7791ee8a1c1f1605d5a779f532cbbdfc8a98260f5983652af53531ca3a693dac7791ee8a1c1f1605d5a779ae1aacd3a2ab9ab62d7d5abc25d0f68b92e2450a265ea4cc91894f067134b420ae1aacd3a2ab9ab62d7d5abc25d0f68b92e2450a265ea4cc91894f067134b420706645683cbedd808747997c1f24def4daecf7547fbe4ea705c027e975e1b7df706645683cbedd808747997c1f24def4daecf7547fbe4ea705c027e975e1b7dfa61989dcd79b3ac1164d6f831ef6b10c2a98465746296acdf61acec74b1f810fa61989dcd79b3ac1164d6f831ef6b10c2a98465746296acdf61acec74b1f810f928f2a263c216417c70dad4105484ff5b30d9ad62dd249b7a975b9dda2d5af8c928f2a263c216417c70dad4105484ff5b30d9ad62dd249b7a975b9dda2d5af8c5da9d25561d68dd9c5a5ec064febe91b64874814fa5164499682372558d659d52736592bc30cb485dfdf3a688e1e1add7175d45684d060bd093bd93f8514f1f37d8b2fe367a5ab257ecd812fb9e78e73c7c334a5dd281bd80c789404697e8eedc960a90040558ed6d5f8eba1aad974378d824e4ecfb882fa4e618285aa81ea99d90fed79ed01614104312661d7a4a2c8fb12d65f8455d93589662cfde9a21858badda331877dd533dd043b43f8915db98081690eeb35178282f0040c73dec6ce173717654a0ffe5e60658bf8470d4a4be2d0a2f9512d5770066438e38bb06073083f08478825931a1bf50126f0277bfe6ba1a61fe33586eee7c1fa2d60fd873adf2952220933bcdad518b5623d34a4651577cbb19405c0d088f88d2f98327da2f1291db126acdcb4dd31c57b4fa366dea42d63ba61adf4f38e17e7f790197ddfd4b7d5f59290a6a0d8985bf748ea30e7fecd11e274c91a652ec83ab451beb1727dbddfc1b42d8d46f99609c2a124fa72dc767c7eb784d60569d904e80794781540713094538f83bd97d8e36d490d019ce95ab36628c9c56c6add56653dc72a2a66849c64c5b9c4ffb4ad0ebc384dfe6b18c20ffa7adfc02a53407db6598f4de5ca705389072cdf464075b4a58ccc2d5bbed9a2747388845bac6cca96b214a8334c4e37b4a8807ab5db283f455c1ac157379635407ceeab51e6dc20ff30e270730407553063d33fe40acaceae79cc4458cec8a6bf93a556eb94fdefa4bc6354c73a7b419f19bd8273f9ef215a88de3d5ad934c00e0b2748ca058e1ee2f7347e4a4ef666709d491193f2b63e04a9bde7f7cceb85975c4d7f0f8c8b2113de10bfb47b2260d6da666955e5db0ca537480eaaa2c6177440d5865e288669420e7da4cd2fa215753ff697d1e9eaef9bf4f2fa095b37a48c612b86469a70adf03ed3b018593d2ba5e735402e34e0a6a85dd20871c1458280ee2dfd53f0e679e327c9f22264cba92767d86d1951bed7cd4f35e29fe8b942d76687b8ea3cd3f73e6bfd42f064cba92767d86d1951bed7cd4f35e29fe8b942d76687b8ea3cd3f73e6bfd42f039b17facd3501234d908318b1454e62fb5eff53ec3a5fb8aef126385d952a4e239b17facd3501234d908318b1454e62fb5eff53ec3a5fb8aef126385d952a4e2375528722eda20147ad29501ef6b127487c460d9a86fe50410d15502138012e0375528722eda20147ad29501ef6b127487c460d9a86fe50410d15502138012e07ac20079cf6ef6d8b02ea3be7d6b288cbb023b45fadde9d072f81c44b7c240f27ac20079cf6ef6d8b02ea3be7d6b288cbb023b45fadde9d072f81c44b7c240f2c86caa4223160b36102bfe60177309b05f5adb2f2877a0ee2b1617ef8512f53ac86caa4223160b36102bfe60177309b05f5adb2f2877a0ee2b1617ef8512f53a9260431aa711ab519f699689885ce18b591c1439fc87c12385ef7c6fb41b32849260431aa711ab519f699689885ce18b591c1439fc87c12385ef7c6fb41b32847cd5c90dda23c19e5a059163c2ad5a8299d15cc390d3b7b3e53f1eee49b408217cd5c90dda23c19e5a059163c2ad5a8299d15cc390d3b7b3e53f1eee49b408219127494d965e872267a88762c38113f7b43eb7257f4bc62aee2824503fb32f0c9127494d965e872267a88762c38113f7b43eb7257f4bc62aee2824503fb32f0c6920550ed8d223669eb13f4bbd5f6ab196708f6bf9f2b7e0f633b3fc6232305b6920550ed8d223669eb13f4bbd5f6ab196708f6bf9f2b7e0f633b3fc6232305b21540d6f242c6928e37008a268016d7db1248415cd893acd73271a850ba96d6421540d6f242c6928e37008a268016d7db1248415cd893acd73271a850ba96d64bbc0185a07485aeac563c5947773d214d6bef6f22c8dd4e82798da8fe3b08c20bbc0185a07485aeac563c5947773d214d6bef6f22c8dd4e82798da8fe3b08c202a65e9be491fc1b98e1a8991139c6af4f9facc411df89f173df75fe69d7b40802a65e9be491fc1b98e1a8991139c6af4f9facc411df89f173df75fe69d7b40807224834029db7f303f3bd6168576168f1318ada972c34810a7808ba42fc6ab6b7224834029db7f303f3bd6168576168f1318ada972c34810a7808ba42fc6ab6b90a8170b22de44ee6209e9de927a641026677f63711a811b6f9a7ef83cdf09f9b8389a30cde57fd28b9464e5193e77cd88e08fa168f86fbf7612601569cb4bea650c0707ce5aecdeaeb6bd37f242db0d9c0595718424c91223add8ca819c77e2f70a7373c791292e2701558e7928178eee63d6d0d73453cc4a5b24ad1f8fa21bfc75881de4ad9adf3804921208d782627753fcc8d1d3a9ba3ca9d4e09cba57b9b063790138d6dff5e7d26fe772ac71173f2d2d0d23aa971e1c369e219cec84c3492ba54c8963692bbf7b197ddd99252b2ba16ca4becdfd7c48abb6de4dd5261095580be91ac3a2546020e276351af4e24d8a57031d759cf533b23eea1e7bbc8217dcab647a6a5c3602052df6213fb38e34a49d12056d5f1d1369c093f1544f910991cd37fda23551378aa7f94880d21fd6f687017a697b49d07e8c3c21095f8bf8d151e716e9e033da0fe956f89030a48d1da464d0b8c1a7aa3b786f144446f5ac5fcbf905562df4391e239ffd0fba00c764ee8ace24dfc1bbc5f231fa1b450fef4ada84aa692f5822dc8db661664291528ef5417c32eaf2af44448a295be82d09853f2a44b235ca4048b51676d6e9977542fddf1e12031037af44bdf761a3b409853f2a44b235ca4048b51676d6e9977542fddf1e12031037af44bdf761a3b42691a509bbc4a99d209f34358aa028b76de1a12c10a099e1cc4e78677c69f893c374e0467be3a1105e4ba060e471ea9a6b05fe5cac2bf1e6d2f968959a6fbf37c374e0467be3a1105e4ba060e471ea9a6b05fe5cac2bf1e6d2f968959a6fbf37a1136453cae20d5b5416f20ec909718968a73960d450a6feb84682fc6684f8f4fe83067e817948e7ea0f418841f8ec6543946fe529120cc25863f48462da3ae5fe83067e817948e7ea0f418841f8ec6543946fe529120cc25863f48462da3ae5833f2c34fe507691ef39f157c9d36a4f708edd29d41fe2102f2a2bf1624b75cc833f2c34fe507691ef39f157c9d36a4f708edd29d41fe2102f2a2bf1624b75cc0dfbcbac65f7c465100c49e4d38e3483b79716d319b4de14f00cecb9f366065d0dfbcbac65f7c465100c49e4d38e3483b79716d319b4de14f00cecb9f366065dcfe4f0e9f662583a08e1b1f1d31b01c03dddb03ad6b14878aff00e1e53ed640facf253fa5133bbecd8de138fb57898e122ea19a0ae591fb41b7c952683daa7661bfe0c7f236821244110cdc076087ae8a0491f67b4995452f0871e764f68fdb5a6135829518d3892aecedd3358ea5edab2eba80365c307cd78f3f1dd5d995449fa02bd16abe6a6c8c435d60d92f5a0160a981c9492fc5d9792f4331f6fecf3a1670829f30b54ba07bff3130f834a4352de7c7c177d280ed810f4d0a8042ff1a74eb9072f89ed99bec7ae60f9e41cd276a177e6cee814abb4bc2cb0a567d1b7e940a47f5d50606113592fe5dac05da93761114d9ea54a6d40260f594110fa2071a728b0146fd3803490c37e2a5be3c6f13d95612e97c62174cce1161985d145e9fd23d1d2caa480fa06c366f3b914b982be173b2214f0c4386bd53c160c961e1a3850e945ae3bcaa06a40ed5a4af4d955042949c1ef047b2bf3ad79f3a31011420fc865b8341ffd83770ed546ffc1d6d22ba6441637823a7fccffab95cdd5358ec14ccaad503993cafa5b793d91a1a0f9cf24f386af3e5982e3dbb1e281d29eef0ec44bd5a5b343905fc63e4c07fd469f134cfeafeda431a59dad783e5a2428ef0ec44bd5a5b343905fc63e4c07fd469f134cfeafeda431a59dad783e5a2428ef7f499100b64b06f6f91b3c3670dd23f41cfc09c8d12559d648abeb24ea2ea10db83c2087dc2b84da12592064967fdd13f5220cea6fd5b29aeca8a12caaed77611d0c2a88ac27e0b119873721b06bb53c68060efe496f43f6897c120e9e6d2012a9fcd22fb06da16edb2cb833174fa6fbe8ed8550e95104abf5a070d5f08c207995a2beabaa9d29806e38ee6856981f0620ff5c9cc2a668050baf180180a20474e0601c56172cc14256efb5d20532d120fee597a913f49fb2201b55b055e2c368296e7223e7fe82212b434efb3138fbd3b7d3b4591ffcaafc215fcdaf7e8d36679e3b5c896ab60e5cd9d43024422d3c1d144ff93807d2681e199b1672c24672d2125028dadde44b26fb6d286a0443621c7d2811efbc026f095c6f7163997b1d8e636fcb3399c7fc9d186f40aaf425fc0f455233624725663a5ecf995055fea29510db883e705722ebe00d2c42fabe5e3b17c6cec73107a30e549cd3e0e41741207f664dec5f85ca332037bdd2520c706d5b56361909bfb048959faae002c7ca3373bf6cfb1735bafda70fbacf212bf424a90ab2963e5f6fa41e8a331764787b547bb71c8b1a0f2f996b00f2d4c79d2f3866297042d61e1b344776b94a1e9be61be68a7b72318aec4b743928dc000b9412a356340bf9668348d2b90bc761115f03b6345bc0a9a0310735cac221bcff3206115c340fb65026967d004382b445531573d4e15cf52581e29885a4d499f0924b820d44d435261376284395697de6d469d4fc34e4e107bcfdcb3109e82d7721f3adf573de183249569690e7d02bd0102c198240896f2c8fee88acac62410c4215567c5aee11f689294787a3e083344ffbe313c40dfe957492f80a635e093707d89a98c9af962599714fb3fd6dde9ae9f9e313c40dfe957492f80a635e093707d89a98c9af962599714fb3fd6dde9ae9f9c95ded4c40806fee623aabb029275497f02ab8e854ab5a4d5a7abcf7c63ea96715f8e9deabe8d5e4be04c4e30fa410124268fc337b152696f039d7b4414c062115f8e9deabe8d5e4be04c4e30fa410124268fc337b152696f039d7b4414c0621ba43da28f9da2dce90f9e27ccac033115f9a6e2f51ac764b5566bd931682b24dba43da28f9da2dce90f9e27ccac033115f9a6e2f51ac764b5566bd931682b24db952be3369137aeb7a4becb6d8d09deffccf077c5c36350aff5ad3ae779651ebb952be3369137aeb7a4becb6d8d09deffccf077c5c36350aff5ad3ae779651eb79ac89986c108905b90f88e27fb25158c4556e874e5b86802a861c5c7c8fd25b79ac89986c108905b90f88e27fb25158c4556e874e5b86802a861c5c7c8fd25b385c49705d5b54072e2f7844c7564518181f73a0affddd95bc0a54a31b3b13e8d1f4ebea32ce5e9e0db7e4ba5f7122c07670b9a309a82817fe6905fae47674725430fbb4d904400d150431c7b5408b5deb9fa1c3f29b1c4261340a08ee41928c1fb6e5c84c99fea11ea3dcf842fb870653381f68b7dc42bd10be9e897ea620745e76fd1e30a85595743a23eabf57d717556946313eb70508e26078cc43c6bd7d5e76fd1e30a85595743a23eabf57d717556946313eb70508e26078cc43c6bd7d1bd9df7fa17e60be5fa4211b39fa0934b4cdeaa5099065b800d8419cfeea7e8f1bd9df7fa17e60be5fa4211b39fa0934b4cdeaa5099065b800d8419cfeea7e8f9bc60b808a45984ae8365834927cea75cf45dd613157133b1f73a63e08a631279bc60b808a45984ae8365834927cea75cf45dd613157133b1f73a63e08a6312704f61f04f5c58df2e0e992bd050b8526fa97e65817564cd93684ee67d83274fb04f61f04f5c58df2e0e992bd050b8526fa97e65817564cd93684ee67d83274fb165572201f6ca68ecae5179905307b322d45e3fbea911dc1eb873b77f55c91fd165572201f6ca68ecae5179905307b322d45e3fbea911dc1eb873b77f55c91fdcadf61957d3376f565289240189cfd7a80c1c13af9b6c8c8a2496efdd3ee77761d61eab0fb0dd6bbcbcd9524a28df1895446d18baed52a8ecc18169325226d1e56e28a1d7a4ae285963128dcb8800a3b6aa86e011142e4f2a07873a88ceb083a18bc9dbd4e11fbc4ca4b197ec4e93a8c6dd83c9a9e337d0d765a11a41c5a97d4f59977c50aa58f1d0c1834e9e794382d93d643b01f8f92bcedc1ac5f33c64b9683615b661d5968b5a08ff99f806352ca7317efab381780d428c3986afb1622e0c7dbbff4005fbd1c7e69e43ea32a139a517bf26989e3cdf00468f14f93ee25f059e56f9f745e1e68e0e889b905d481465d58223d653a68bbd633bd4f97d392295a1b5bfe7d239f8cdb88c997ee37b98dec20cec45ccdf5d19bf9dd62d8d34934ce74261a32800aa0d4f13d0400fa9cbf6ab2cb427b336c383a6c988701cba93d590a19daada58e6124287443908ab0c56ede65b902283ac6dd865f71ac47cc7c5fc2f1a0c494f39970e0cb337c4963686e95ec07dfe01b6f7a0debf3d15edb95a3c79f346cee89e0f799fdc1ec0b21d6bdb974471e3c1ecbf873b0bb910f16dac12ca08d045696414da6a4273d24979f3ff70abd295ab3ef08ffba94c75fb80993b2fdfce729b1dc29e244052c5e7d05582eca67769ea27e6cb1c7d4d94c113d6417d42b66503c4848bddc4e0f06a23d8b7ca5f833ce52145426f518113995cf17a2d3addf4be1d0230a50006db76158828ee557daad6d59213622b103f0d5a817a2d3addf4be1d0230a50006db76158828ee557daad6d59213622b103f0d5a81d7aa90e40b87928e9a5dae185033ccaf4a809df0847f29899bd7d8463da20a01d7aa90e40b87928e9a5dae185033ccaf4a809df0847f29899bd7d8463da20a0b04493cc72a6620d9a492c00b5a45ffa5ab88529dafed3eb0c3497bfae148e02b04493cc72a6620d9a492c00b5a45ffa5ab88529dafed3eb0c3497bfae148e02e92582c62fa17a49a38991a300072eaa599ba8e0fb0aeb5bf9a43238026e7a8fe92582c62fa17a49a38991a300072eaa599ba8e0fb0aeb5bf9a43238026e7a8ff7167facf7d40c6c5a49389726ef021659d85d72c24e5ea4be3dcdf8c8840ccef7167facf7d40c6c5a49389726ef021659d85d72c24e5ea4be3dcdf8c8840cce61244930640683026d42755cc57875399684c8dcf70dc10d18fddb03d517c51b61244930640683026d42755cc57875399684c8dcf70dc10d18fddb03d517c51b48d091d128bc1cfa5bfdb47fb8c307dfeac855a0245c36035a05ddbdb5bbf0ca48d091d128bc1cfa5bfdb47fb8c307dfeac855a0245c36035a05ddbdb5bbf0ca48b0fedd45182dd6f2e2e417ade8b7ff08d94056439bac8385b2b391df6030f048b0fedd45182dd6f2e2e417ade8b7ff08d94056439bac8385b2b391df6030f07d4d706e767bf66e6865376c19df2adb05508d6e56ae35ebb697edbb5e3c378f7d4d706e767bf66e6865376c19df2adb05508d6e56ae35ebb697edbb5e3c378fa3123a9fb31da061a5a982c3370854856eed529d45547debd0e914c300829214a3123a9fb31da061a5a982c3370854856eed529d45547debd0e914c30082921465761876c24012f8f7760c90f383f4f4e8fe9c11a0e2850f10df78fb07bb548965761876c24012f8f7760c90f383f4f4e8fe9c11a0e2850f10df78fb07bb5489940ba500718eefd561297110fa75b146bec8e2212484455d8eff11c1d0761aae940ba500718eefd561297110fa75b146bec8e2212484455d8eff11c1d0761aae057a603e1ffd00211eac1ba328357514cb1922fd83ad1c9ba93a433efbbcc714057a603e1ffd00211eac1ba328357514cb1922fd83ad1c9ba93a433efbbcc714821261848c11b7bf3ab86fbf0f17b0fc548524d8703ff9368a8faa23de8793b8821261848c11b7bf3ab86fbf0f17b0fc548524d8703ff9368a8faa23de8793b8c50cd910eabde606cca51ba500ceeec97112c03568b6399600e4260d2ac3829bc50cd910eabde606cca51ba500ceeec97112c03568b6399600e4260d2ac3829b6106408a6dd4b61a3f312cfa3856ecdfc1aed77befdbf206de8317451bc7845b5ae329392c2c431b843f0e980f041e2e60fb68a9019c91eedf86eda854445e470869d4825cb33e3ed48c3bcb2df441f319a4b78efd3668f190ed37158f5a6eae72abb406c75d5fc76cc5670a96df1074bd229965eab030dc1b719a826e75131386ebd49c4e9648e9af8e5b8600fda08a8f37a1c0cc455a1cdbb4fdd0a54ea11786ebd49c4e9648e9af8e5b8600fda08a8f37a1c0cc455a1cdbb4fdd0a54ea1173376842bf5ee801b552637d465b7a855cd7487347297147135f12236ad4955646312c83a555839b269f19859b0161a1a5426e1feccdc8193a42cfc41a0cc2d06c9fe9b6f05420b39a0ca73815e4e08c29b1c2e55fffffb151bff1e8d1de1b78002d2d5587ea9270d4392914b63c55e6f4cf555f4aed946b349b6ffb195aa4da2c050395e5babde97c4711ceb87e9d16071fd2a9f86f22e897950fb28884988262ca8332bdd8c542f0b9b0239c5fbaef335fd10e3c180e954d0b6457443f5afbbd67e5e57bdeb833932f5f3db11ef353126f85f0fdf6a9703b55a9321763d8bc6c3dfbeb3d73ed85dbaa3b24125b4c98d518f9ef97018d7d2bbb28d0d298bf50c9e0e5a9b2f3d9326d8977effc7c2a1154aa81efd0836736cc9e4c40b4a494ce52646a5817e7668a1942aa8ca1b93feebc174b5799432095d3eb34092730dd859c8b7f76c6a44da3fa03849bf16cee54634f95dc3c870de483c0df98a3459d485f7eaa7cd6473ee21650de12c85a9f61e674aab91b5e6496123a57491f2c8b4a1e0b1658a6a13912526f995f5f28759e19b5f6e40e0f474fd1b12f5b86beeeaafc3dfbeb3d73ed85dbaa3b24125b4c98d518f9ef97018d7d2bbb28d0d298bf50c3d22c4b985b9481adc0bb608b7c8ddbc9ddaaf12cbed22bb3316ecbf3d547d771f6136fb4d585cb9525a3bcb253e55b63dc69f8cc1eb184f5ec0c98786bb107da33a1a01009364cfb41e797efa3494c1b652d2606bb3a14659b3fafdeb0e0f39defb4dce8a30339de08b62998bda5e20a54853bf6e950637144d2361c48fefb300a0ad8b7442819cb41960776d78229abfce86a7d53cea7f23bdf8e5437f0d5f2646a5817e7668a1942aa8ca1b93feebc174b5799432095d3eb34092730dd859d5c425f12314792f16a205d08aad0b7686975ed24a72a96b4bee1e711fef0674be52dc37c2e672e0d21700f778e4a6337332f74d0b983236044f2731f107e40c119c5ec046a7064a052ff527fb7bc756327558863d50e105be43eb2c5e9968692ca8332bdd8c542f0b9b0239c5fbaef335fd10e3c180e954d0b6457443f5afbb0a462898eb7173c88dce2d5dfc19ce03e2a412c849922941e707eb041b26ddcbb2fab85c5d6ec2b6781e1f692468a2b78b9c27404c4fb7f1cbe74cb084cba61eb2fab85c5d6ec2b6781e1f692468a2b78b9c27404c4fb7f1cbe74cb084cba61eab15c765ba11544a8849960e217aeeb6c020a1b13287a7e25226e4d77ddfce12f5549a14eb1dc4de3ff062558679a9979917a2cd933d4dccd3c782fcd448d8ab8747cb764c05ec98461a3029bea02c094f3b04acb413f522149fceecc011cfa54099ce1f7f474d59096cf861568dbda25990fdfb6fcd8a4d6bcb90f9f8a0830b0fea7d8238bf7c9411896888e07c66e71a0f6ede0bf5629ade88f42749da04f46b0365e71397efa860aaee01eeb219678ae421f54dec8dee96dc2c4699c7b51b89951535df61d0639071aaa9bda1c1ae345db0acd2808c2a66bc6c6a7a8f1726b3a2ece189f2317ccd38659c4e750cd59874de42fc120482fb0e728f2c39de6cc56e5eee8231235825d601f0ecd515d88dd5649f7dc78bfe207c5ad58a03e6a1d71ca525d0378a1824d6e84055cc3fe8bddd6f9d1cf8d60059f1ffe23e68ce42d71ca525d0378a1824d6e84055cc3fe8bddd6f9d1cf8d60059f1ffe23e68ce42d15e18a91f5f6a9cb260388e1a746ba8371256b7fd36dca306539fed736493b9d15e18a91f5f6a9cb260388e1a746ba8371256b7fd36dca306539fed736493b9713cdf910ca1f7db3ede88708503a09621cf281fcae98db84feccbf020eee86a713cdf910ca1f7db3ede88708503a09621cf281fcae98db84feccbf020eee86a6a43a5c8edcc28cbf0b522d75fa8fce1356173de9e4b43668075ef7594e73d666a43a5c8edcc28cbf0b522d75fa8fce1356173de9e4b43668075ef7594e73d66fadb7a1649c968cfd28cd281d055c1a1f62c3bc6c44932ddd4194cd7df5cb31316e6b4a0a5f738d3042f1e14ae658324ec7e2813fd664bee4aaf8482a1de76d18405fff4fd154799e08a544ac4de4d3a04b8bc99a87860a02c9da6308f089620f594bd0a24c046b88ab07c3cd3ba4ee16a7d146834d7142a5895f00fd31e889ff14dd94ded40d584425d407500800881c777dde8c18737a504f91574e267863f123c0e204dd45d726bbaad356ab33aef200d9c25939887f2376f6e645b08f1d3123c0e204dd45d726bbaad356ab33aef200d9c25939887f2376f6e645b08f1d38e934e840e6a2792dd956952389a09c93521f47d6d7a98dc49865778776125160915008fe93ecc9c9ee1100667c791f47bcfeb078ce95293c0698562923fd01c3731c04ec288b642dfebfa3ebaaa5bddb43b200ab2d4312b0c41b865aaef79e33731c04ec288b642dfebfa3ebaaa5bddb43b200ab2d4312b0c41b865aaef79e3f60984b67bf833c81a959ea6c958991c0c0dfe73201d5580b0c0363630311cc0f60984b67bf833c81a959ea6c958991c0c0dfe73201d5580b0c0363630311cc01c28a9abe93ff7e83a34b05d81d49a18797c5224244d281fe6ab49cd3c5b846c1c28a9abe93ff7e83a34b05d81d49a18797c5224244d281fe6ab49cd3c5b846c11e8848ddbae306ca36dd51b9afe0f636f9014e3a91918cb21b133fa7b88b7e311e8848ddbae306ca36dd51b9afe0f636f9014e3a91918cb21b133fa7b88b7e3d81c1a28a34d6debaceb93de72a39f3e707a16f8a1b7745d9de3f8480cd93c77d81c1a28a34d6debaceb93de72a39f3e707a16f8a1b7745d9de3f8480cd93c77cbeb12536bb8419a5410200d150f2275085698cd61fac85486fc11e7e393db1431a829dcdd7f5b40fd9f3ba084fbbba02db9fa041f927ea46faf2db0270fae8cc2d7888ae0fbf943841a48dd500acaa955560696bb03b154fd6c03b8cb51da66aa360f2dc83a52483c7b873137af37094b0ad59b5edbafa74cec8c23a62cdeb3ccb7e8a73b812cc8c88b97c6cd347b498ddd8c5090435c237597a7299544981862b331c64c87a3d15c709967cebf2379e7b0a5db5797bcc586d4b913ca24fccb62b331c64c87a3d15c709967cebf2379e7b0a5db5797bcc586d4b913ca24fccbd7d213a9dfd45ba3d5828c57d02fcdeb9c76ce9e0be73439c56274634a78048ebcc5af7c1dd53afb9c0a34e6678fda707df0a026131cfc38e24c2beb3c5734fa459e5dc8c2fe44b62916c4955dd38c5fd02edae29adede074f600a1eaa4fec83fe0c6cd25b7fe93c66181d9adafbe8136282ec615846c75000a50f0efe9ac107ee3b249a1bb25441003beb773ab0bcbb93f7764a969fe92004179aa3dc5777acee3b249a1bb25441003beb773ab0bcbb93f7764a969fe92004179aa3dc5777ac72b6a003282e5f8e422fb09e9bb2776de866daa740c63ef04edaa7873343ed6f72b6a003282e5f8e422fb09e9bb2776de866daa740c63ef04edaa7873343ed6fba0b5d35b73b552ff756a41b2b8bc0e121dc00d9222b62ce6edacc09f8d8947b590da1638bfb316b4c9fe479b948823fd7b58666fe760c95a3ab12d9c263009c202a278fcc899301c1b1fa8f843c5e22d8362080f1773080be6e72d33ec23e236417d42b66503c4848bddc4e0f06a23d8b7ca5f833ce52145426f518113995cf9b83c7145f4aac14599338485bee5f3be43a1ac2f538ce261031f04f07c909299b83c7145f4aac14599338485bee5f3be43a1ac2f538ce261031f04f07c9092996e5270213a6c07328a5a9280c5d007bb23e108c58a8d482f9a400055aa1f0cf96e5270213a6c07328a5a9280c5d007bb23e108c58a8d482f9a400055aa1f0cf4b71e102a2a07ff07d4df5c0a7f359e0f797581c4b38d3498e4994f35c90b0a9e6a554f103a99bdfe8b36a91e74148ee31c61fbd5fba5ec66edde0f9d6396f50e6a554f103a99bdfe8b36a91e74148ee31c61fbd5fba5ec66edde0f9d6396f501f1f764b5b954ff26a63de1c99b061379b0778fba5efee8e7ddbf1e4566ca981501ed9642022086c3f08fd0d17da7298674221487d8591ab936a896479b01542501ed9642022086c3f08fd0d17da7298674221487d8591ab936a896479b015420a75266a59af1bf593a28f758e487e711fcbf3a8295046bbce43736dde4b722a3a188f572921fea84f325704e2fa33045e41c8340ea848d132ec263b513dd1341438efb6c2f2878e6fb64f32f672648384968141cd345ad0344375768bf290341438efb6c2f2878e6fb64f32f672648384968141cd345ad0344375768bf29034e1ad93bcf6f15d0e8caa768056c074d910b61af3a9f5af194cc749c83922b4d3e1ad93bcf6f15d0e8caa768056c074d910b61af3a9f5af194cc749c83922b4d310a0f42e6655a7a1e8d4b4d67ec0c01b73149a29ba73414f2697b8ffb996bccd10a0f42e6655a7a1e8d4b4d67ec0c01b73149a29ba73414f2697b8ffb996bccd07ad8fb52c629886a642fc863309c14203fe8f405f82b0cb38c173eaa6d2b9d8be7f0ebe234702c1bd23126b7987bfb9cbb3ad0923e9a941c262c0b17bd8eb7403a1dac13eb443c073d1659a8cef004be1dc4e91ad9bf63130d012c1a62f547dd5620419f2c8dd795b273c2408672c7710a6410adf1585318dca51275f47717ed5620419f2c8dd795b273c2408672c7710a6410adf1585318dca51275f47717e8934608991cd3bc0f08d2a87070f203c16c5b569ebf996ddff26f299e6b376d0a901daa20a4d43ab594587c2c507fc68dd7fb4f8ee55e50c6a9bcd29ca927c57ca29053899b31d911d6944d4396f6480cd8e2baccfd3cbe76611ac858ac7301148622ee6e1f36f0eef4c8b57ddfcce1278a6e6982d335b73e94168672373a9cf0793d14b4dc1c570a8674cc801a2f7e88ca16b03b8037c35e2b505e4db84e1b10793d14b4dc1c570a8674cc801a2f7e88ca16b03b8037c35e2b505e4db84e1b1375556c8db4def9efb88b67243e3554952d957e84d38fb063861e83522a25f1f375556c8db4def9efb88b67243e3554952d957e84d38fb063861e83522a25f1f4d311fe8073f1eb0223eb6a3180bd89846d663f2a620e846e64abe63dc0f43034d311fe8073f1eb0223eb6a3180bd89846d663f2a620e846e64abe63dc0f430342325c34250144c781698c10b4ed547bc3a6efd00d33fbadcc032fa722694b5402ad13eb6c7f28bb6419a5b362a5a3be17214ea6057e5ad36d0113de1eb1ad3dc141ef8d6fc65e9732306c37d3cc36e93d3d70eb415b9114ee2f566a018343ba7776ef87d9365c8ff3f3ebdbdd9a08e25c0bf0b685930be3244ecfa40a4195cc3c788255c7616ab4a9d3329430ed4bfe8ec95a446df3bd67796697a77e60bb0ba4c56f0fc5116144cec6feacf7c6cc1aecdd108f191e0af50248f5dc6cebbca7a4c56f0fc5116144cec6feacf7c6cc1aecdd108f191e0af50248f5dc6cebbca7b529b168fd62da8f0bd31c4c5b81872230afd525c86fadf318686b5601cfb9d0b529b168fd62da8f0bd31c4c5b81872230afd525c86fadf318686b5601cfb9d01af4a24eee35cbd7b182b1b0fe97e0078e970a5c4b388bf94b7b4fed70d8e747de9517201c83e2529d1e62a00bcb0abcf5a20c685a9fd9628fa742c0fa05a8475d1cc1f691bd6914bf7f12cc70e71bc9bf4d7941e97136555ef71e225d86372f40184fab73cd5d8a5cc91de273d311c888903a4e7dd6e9e86e87d374418c7c07d964e1b13c9d16622a93f99627d81be9176c10d7a26abb3eeffc18ab429a5782c08c9174cb03fc30612ac3fb65c70e378351a77c93942409a6158e17cd7190092a5888f2ca7a40a54cdd67ebcdc45f85c82ef146ff857c193a4ec5b3c527937553fbe12276ecdabe8e4036420e4a0eb6189e1a08f5cc8e58d457ffc35391f2a1d8314ae6a7b4ad5864523f05a6c3b1e327971519685723c1c38bfd72ab6c0fc7cc4ee24ee49c769ef660f38a43bddecc50dbdeeab0f14c19199fbebcb68ee6d3c76ed254e0fbb1b9d2207ef0ef3e11fe5cbd9f581309f9ed0845f38b46f4786c3688c4f9cece8ee127436ff99c5fcb9b387c4d6a45058732480a8d3e3c152d7e5cb287937960ffc45e40c7567d9ce18413724dd8235a606c29cbcb4d48a85d14d73746b9c9c897a9c879c640ec848800dbea5e21d6aaae83b61b24ffa314c0d76c535293cccd40e699fedc1a7e5ad8d1767d98bc146d12ee353d01748170be7ed5053c5be1852e7604c3cc98f5b548bd4015bc960f337872a228dfebe33b4f4drootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootansible-core-2.18.3-150400.9.9.4.src.rpmansible-test@@     /usr/bin/python3.11ansible-corepython(abi)python311-virtualenvrpmlib(CompressedFileNames)rpmlib(FileDigests)rpmlib(PartialHardlinkSets)rpmlib(PayloadFilesHavePrefix)rpmlib(PayloadIsXz)2.18.33.113.0.4-14.6.0-14.0.4-14.0-15.2-1ansible-testansible-test2.182.184.14.3h4Wh+@ggggNgJ@g@r@g? g5@g @f@fJf`fffr@fO/fh@f @eee@e@e@exK@eoeJ&e%@c!@cb@b@bc@harshvardhan.sharma@suse.comharshvardhan.sharma@suse.comharshvardhan.sharma@suse.comopensuse_buildservice@ojkastl.deopensuse_buildservice@ojkastl.deopensuse_buildservice@ojkastl.deopensuse_buildservice@ojkastl.deopensuse_buildservice@ojkastl.deharshvardhan.sharma@suse.comopensuse_buildservice@ojkastl.deopensuse_buildservice@ojkastl.deopensuse_buildservice@ojkastl.deopensuse_buildservice@ojkastl.deopensuse_buildservice@ojkastl.deopensuse_buildservice@ojkastl.deopensuse_buildservice@ojkastl.deopensuse_buildservice@ojkastl.deopensuse_buildservice@ojkastl.deopensuse_buildservice@ojkastl.deopensuse_buildservice@ojkastl.deopensuse_buildservice@ojkastl.deopensuse_buildservice@ojkastl.deopensuse_buildservice@ojkastl.deopensuse_buildservice@ojkastl.deopensuse_buildservice@ojkastl.dekastl@b1-systems.dekastl@b1-systems.dekastl@b1-systems.dekastl@b1-systems.dekastl@b1-systems.dekastl@b1-systems.dekastl@b1-systems.dekastl@b1-systems.dekastl@b1-systems.dekastl@b1-systems.dekastl@b1-systems.dekastl@b1-systems.dekastl@b1-systems.dekastl@b1-systems.dekastl@b1-systems.dekastl@b1-systems.dekastl@b1-systems.dekastl@b1-systems.dekastl@b1-systems.dekastl@b1-systems.dekastl@b1-systems.dekastl@b1-systems.dekastl@b1-systems.dekastl@b1-systems.desteven.kowalik@suse.comkastl@b1-systems.dekastl@b1-systems.dekastl@b1-systems.dekastl@b1-systems.dekastl@b1-systems.dekastl@b1-systems.de- Add patch suse-distribution-fix.patch to fix distribution.py to identify the correct distribution for server-sap and micro (#PED-12643)- Add missing dependency on python311-rpm required by package_facts (#1243193)- Add patch unarchive-test-fix.patch for unarchive: Clamp zip timestamps on 32-bit time_t. (#84409)- update to 2.18.3: * Minor Changes - ansible-test - Automatically retry HTTP GET/PUT/DELETE requests on exceptions. - ansible-test - Use Python's urllib instead of curl for HTTP requests. * Bugfixes - include_vars - fixed erroneous warning if an unreserved variable name contains a single character that matches a reserved variable. (#84623) - linear strategy - fix executing end_role meta tasks for each host, instead of handling these as implicit run_once tasks (#84660).- update to 2.18.2: * Bugfixes - Ansible will now also warn when reserved keywords are set via a module (set_fact, include_vars, etc). - Ansible.Basic - Fix required_if check when the option value to check is unset or set to null. - Use consistent multiprocessing context for action write locks - ansible-test - Fix up coverage reporting to properly translate the temporary path of integration test modules to the expected static test module path. - ansible-vault will now correctly handle --prompt, previously it would issue an error about stdin if no 2nd argument was passed - copy action now prevents user from setting internal options. - gather_facts action now defaults to ansible.legacy.setup if smart was set, no network OS was found and no other alias for setup was present. - gather_facts action will now issues errors and warnings as appropriate if a network OS is detected but no facts modules are defined for it. - ssh - Improve the logic for parsing CLIXML data in stderr when working with Windows host. This fixes issues when the raw stderr contains invalid UTF-8 byte sequences and improves embedded CLIXML sequences. - ssh - connection options were incorrectly templated during reset_connection tasks (#84238).- update to 2.18.1: * Minor Changes - ansible-test - When detection of the current container network fails, a warning is now issued and execution continues. This simplifies usage in cases where the current container cannot be inspected, such as when running in GitHub Codespaces. * Security Fixes - Templating will not prefer AnsibleUnsafe when a variable is referenced via hostvars - CVE-2024-11079 * Bugfixes - Fix returning 'unreachable' for the overall task result. This prevents false positives when a looped task has unignored unreachable items (#84019). - ansible-test - Fix traceback that occurs after an interactive command fails. - dnf5 - fix installing a package using state=latest when a binary of the same name as the package is already installed (#84259) - dnf5 - matching on a binary can be achieved only by specifying a full path (#84334) - runas become - Fix up become logic to still get the SYSTEM token with the most privileges when running as SYSTEM.- update to 2.18.0: * Breaking Changes / Porting Guide - Stopped wrapping all commands sent over SSH on a Windows target with a powershell.exe executable. This results in one less process being started on each command for Windows to improve efficiency, simplify the code, and make raw an actual raw command run with the default shell configured on the Windows sshd settings. This should have no affect on most tasks except for raw which now is not guaranteed to always be running in a PowerShell shell and from having the console output codepage set to UTF-8. To avoid this issue either swap to using ansible.windows.win_command, ansible.windows.win_shell, ansible.windows.win_powershell or manually wrap the raw command with the shell commands needed to set the output console encoding. - persistent connection plugins - The ANSIBLE_CONNECTION_PATH config option no longer has any effect. * Deprecated Features - Deprecate ansible.module_utils.basic.AnsibleModule.safe_eval and ansible.module_utils.common.safe_eval as they are no longer used. - persistent connection plugins - The ANSIBLE_CONNECTION_PATH config option no longer has any effect, and will be removed in a future release. - yum_repository - deprecate async option as it has been removed in RHEL 8 and will be removed in ansible-core 2.22. - yum_repository - the following options are deprecated: deltarpm_metadata_percentage, gpgcakey, http_caching, keepalive, metadata_expire_filter, mirrorlist_expire, protect, ssl_check_cert_permissions, ui_repoid_vars as they have no effect for dnf as an underlying package manager. The options will be removed in ansible-core 2.22. * Removed Features (previously deprecated) - Play - removed deprecated ROLE_CACHE property in favor of role_cache. - Remove deprecated VariableManager._get_delegated_vars method (#82950) - Removed Python 3.10 as a supported version on the controller. Python 3.11 or newer is required. - Removed support for setting the vars keyword to lists of dictionaries. It is now required to be a single dictionary. - loader - remove deprecated non-inclusive words (#82947). - paramiko_ssh - removed deprecated ssh_args from the paramiko_ssh connection plugin (#82939). - paramiko_ssh - removed deprecated ssh_common_args from the paramiko_ssh connection plugin (#82940). - paramiko_ssh - removed deprecated ssh_extra_args from the paramiko_ssh connection plugin (#82941). - play_context - remove deprecated PlayContext.verbosity property (#82945). - utils/listify - remove deprecated 'loader' argument from listify_lookup_plugin_terms API (#82949). * Security Fixes - include_vars action - Ensure that result masking is correctly requested when vault-encrypted files are read. (CVE-2024-8775) - task result processing - Ensure that action-sourced result masking (_ansible_no_log=True) is preserved. (CVE-2024-8775) - user action won't allow ssh-keygen, chown and chmod to run on existing ssh public key file, avoiding traversal on existing symlinks (CVE-2024-9902). * Known Issues - ansible-test - When using ansible-test containers with Podman on a Ubuntu 24.04 host, ansible-test must be run as a non-root user to avoid permission issues caused by AppArmor. - ansible-test - When using the Fedora 40 container with Podman on a Ubuntu 24.04 host, the unix-chkpwd AppArmor profile must be disabled on the host to allow SSH connections to the container. * New Plugins - timedout - did the task time out - vaulted_file - Is this file an encrypted vault * New Modules - ansible.modules - mount_facts - Retrieve mount information. * Bugfixes Please see the full changelog: https://github.com/ansible/ansible/blob/v2.18.0/changelogs/CHANGELOG-v2.18.rst- Backport patch to relax resolvelib dependency: 771f7ad29ca4d259761eaa88673c2e32f6412bbe.patch- Added necessary test dependencies: pytest-xdist, pytest-mock, pytz, passlib, git-core, and openssh to ensure proper test execution. - Introduced the `ansible_python_version` variable and updated the test command.- update to 2.17.6: https://github.com/ansible/ansible/blob/v2.17.6/changelogs/CHANGELOG-v2.17.rst * Minor Changes - ansible-test - Improve container runtime probe error handling. When unexpected probe output is encountered, an error with more useful debugging information is provided. * Security Fixes - include_vars action - Ensure that result masking is correctly requested when vault-encrypted files are read. (CVE-2024-8775) - task result processing - Ensure that action-sourced result masking (_ansible_no_log=True) is preserved. (CVE-2024-8775) - user action won't allow ssh-keygen, chown and chmod to run on existing ssh public key file, avoiding traversal on existing symlinks (CVE-2024-9902). * Bugfixes - Fix disabling SSL verification when installing collections and roles from git repositories. If --ignore-certs isn't provided, the value for the GALAXY_IGNORE_CERTS configuration option will be used (#83326). - Improve performance on large inventories by reducing the number of implicit meta tasks. - Use the requested error message in the ansible.module_utils.facts.timeout timeout function instead of hardcoding one. - ansible-test - Enable the sys.unraisablehook work-around for the pylint sanity test on Python 3.11. Previously the work-around was only enabled for Python 3.12 and later. However, the same issue has been discovered on Python 3.11. - debconf - set empty password values (#83214). - facts - skip if distribution file path is directory, instead of raising error (#84006). - user action will now require O(force) to overwrite the public part of an ssh key when generating ssh keys, as was already the case for the private part. - user module now avoids changing ownership of files symlinked in provided home dir skeleton- update to 2.17.5: https://github.com/ansible/ansible/blob/v2.17.5/changelogs/CHANGELOG-v2.17.rst * Bugfixes - Add descriptions for ansible-galaxy install --help` and ``ansible-galaxy role|collection install --help. - Errors now preserve stacked error messages even when YAML is involved. - ansible-galaxy install --help - Fix the usage text and document that the requirements file passed to -r can include collections and roles. - copy - mtime/atime not updated. Fix now update mtime/atime(#83013) - delay keyword is now a float, matching the underlying 'time' API and user expectations. - dnf5 - re-introduce the state: installed alias to state: present (#83960) - module_utils atomic_move (used by most file based modules), now correctly handles permission copy and setting mtime correctly across all paths- update to 2.17.4: https://github.com/ansible/ansible/blob/v2.17.4/changelogs/CHANGELOG-v2.17.rst * Bugfixes - Fix SemanticVersion.parse() to store the version string so that __repr__ reports it instead of None (#83831). - Fix an issue where registered variable was not available for templating in loop_control.label on skipped looped tasks (#83619) - Fix for meta tasks breaking host/fork affinity with host_pinned strategy (#83294) - Fix using the current task's directory for looking up relative paths within roles (#82695). - atomic_move - fix using the setgid bit on the parent directory when creating files (#46742, #67177). - connection plugins using the 'extras' option feature would need variables to match the plugin's loaded name, sometimes requiring fqcn, which is not the same as the documented/declared/expected variables. Now we fall back to the 'basename' of the fqcn, but plugin authors can still set the expected value directly. - csvfile lookup - give an error when no search term is provided using modern config syntax (#83689). - include_tasks - Display location when attempting to load a task list where include_* did not specify any value - #83874 - powershell - Improve CLIXML decoding to decode all control characters and unicode characters that are encoded as surrogate pairs. - psrp - Fix bug when attempting to fetch a file path that contains special glob characters like [] - runtime-metadata sanity test - do not crash on deprecations if galaxy.yml contains an empty version field (#83831). - ssh - Fix bug when attempting to fetch a file path with characters that should be quoted when using the piped transfer method- update to 2.17.3: https://github.com/ansible/ansible/blob/v2.17.3/changelogs/CHANGELOG-v2.17.rst * Minor Changes - ansible-test - Improve the error message shown when an unknown --remote or --docker option is given. - ansible-test - Removed the vyos/1.1.8 network remote as it is no longer functional. * Bugfixes - Warning now includes filename and line number of variable when specifying a list of dictionaries for vars (#82528). - config, restored the ability to set module compression via a variable - debconf - fix normalization of value representation for boolean vtypes in new packages (#83594) - linear strategy: fix handlers included via include_tasks handler to be executed in lockstep (#83019)- update to 2.17.2: https://github.com/ansible/ansible/blob/v2.17.2/changelogs/CHANGELOG-v2.17.rst * Bugfixes - Fix a traceback when an environment variable contains certain special characters (#83498) - dnf - reverted incomplete fix from 2.17.2rc1 (#83504) - dnf, dnf5 - fix for installing a set of packages by specifying them using a wildcard character (#83373) - linear strategy now provides a properly templated task name to the v2_runner_on_started callback event. - package_facts - ignore warnings sent by apk on stderr (#83501). - replace - Updated before/after example (#83390). - templating hostvars under native jinja will not cause serialization errors anymore.- update to 2.17.1: https://github.com/ansible/ansible/blob/v2.17.1/changelogs/CHANGELOG-v2.17.rst * Minor Changes - ansible-test - Update pypi-test-container to version 3.1.0. * Bugfixes - Fix rapid memory usage growth when notifying handlers using the listen keyword (#83392) - Fix the task attribute resolved_action to show the FQCN instead of None when action or local_action is used in the playbook. - Fix using module_defaults with local_action/action (#81905). - fixed unit test test_borken_cowsay to address mock not been properly applied when existing unix system already have cowsay installed. - powershell - Implement more robust deletion mechanism for C# code compilation temporary files. This should avoid scenarios where the underlying temporary directory may be temporarily locked by antivirus tools or other IO problems. A failure to delete one of these temporary directories will result in a warning rather than an outright failure. - shell plugin - properly quote all needed components of shell commands (#82535)- update to 2.17.0: https://github.com/ansible/ansible/blob/v2.17.0/changelogs/CHANGELOG-v2.17.rst * Major Changes - urls.py - Removed support for Python 2 * Minor Changes - Add dump and passno mount information to facts component (#80478) - Added MIRACLE LINUX 9.2 in RedHat OS Family. - Interpreter Discovery - Remove hardcoded references to specific python interpreters to use for certain distro versions, and modify logic for python3 to become the default. - Use Python's built-in functools.update_wrapper instead an inline copy from Python 3.7. - User can now set ansible.log to record higher verbosity than what is specified for display via new configuration item LOG_VERBOSITY. - DEFAULT_PRIVATE_ROLE_VARS is now overridden by explicit setting of public for include_roles and import_roles. - ansible-galaxy role|collection init - accept --extra-vars to supplement/override the variables ansible-galaxy injects for templating .j2 files in the skeleton. - import_role action now also gets a public option that controls variable exports, default depending on DEFAULT_PRIVATE_ROLE_VARS (if using defaults equates to public=True). - added configuration item TARGET_LOG_INFO that allows the user/author to add an information string to the log output on targets. - ansible-doc - treat double newlines in documentation strings as paragraph breaks. This is useful to create multi-paragraph notes in module/plugin documentation (#82465). - ansible-doc output has been revamped to make it more visually pleasing when going to a terminal, also more concise, use -v to show extra information. - ansible-galaxy - Started normalizing build directory with a trailing separator when building collections, internally. (#81619). - ansible-galaxy dependency resolution messages have changed the unexplained 'virtual' collection for the specific type ('scm', 'dir', etc) that is more user friendly - ansible-test - Add Alpine 3.19 container. - ansible-test - Add Alpine 3.19 to remotes. - ansible-test - Add Fedora 39 container. - ansible-test - Add Fedora 39 remote. - ansible-test - Add a work-around for permission denied errors when using pytest >= 8 on multi-user systems with an installed version of ansible-test. - ansible-test - Add support for RHEL 9.3 remotes. - ansible-test - Added a macOS 14.3 remote VM. - ansible-test - Bump the nios-test-container from version 2.0.0 to version 3.0.0. - ansible-test - Containers and remotes managed by ansible-test will have their Python EXTERNALLY-MANAGED marker (PEP668) removed. This provides backwards compatibility for existing tests running in newer environments which mark their Python as externally managed. A future version of ansible-test may change this behavior, requiring tests to be adapted to such environments. - ansible-test - Make Python 3.12 the default version used in the base and default containers. - ansible-test - Remove Alpine 3(.18) container. - ansible-test - Remove Alpine 3.18 from remotes. - ansible-test - Remove Fedora 38 remote support. - ansible-test - Remove Fedora 38 test container. - ansible-test - Remove rhel/9.2 test remote - ansible-test - Remove the FreeBSD 13.2 remote. - ansible-test - Removed fallback to virtualenv when -m venv is non-functional. - ansible-test - Removed test remotes: macos/13.2 - ansible-test - Removed the no-basestring sanity test. The test is no longer necessary now that Python 3 is required. - ansible-test - Removed the no-dict-iteritems, no-dict-iterkeys and no-dict-itervalues sanity tests. The tests are no longer necessary since Python 3 is required. - ansible-test - Removed the no-main-display sanity test. The unwanted pattern is unlikely to occur, since the test has existed since Ansible 2.8. - ansible-test - Removed the no-unicode-literals sanity test. The test is unnecessary now that Python 3 is required and the unicode_literals feature has no effect. - ansible-test - Special handling for installation of cryptography has been removed, as it is no longer necessary. - ansible-test - The shellcheck sanity test no longer disables the SC2164 check. In most cases, seeing this error means the script is missing set -e. - ansible-test - The unidiomatic-typecheck rule has been enabled in the pylint sanity test. - ansible-test - The unidiomatic-typecheck rule has been removed from the validate-modules sanity test. - ansible-test - Update the base and default containers to use Ubuntu 22.04 for the base image. This also updates PowerShell to version 7.4.0 with .NET 8.0.0 and ShellCheck to version 0.8.0. - ansible-test - Updated the CloudStack test container to version 1.7.0. - ansible-test - Updated the distro test containers to version 6.3.0 to include coverage 7.3.2 for Python 3.8+. The alpine3 container is now based on 3.18 instead of 3.17 and includes Python 3.11 instead of Python 3.10. - ansible-test - Updated the distro test containers to version 7.1.0. - ansible-test - When ansible-test installs requirements, it now instructs pip to allow installs on externally managed environments as defined by PEP 668. This only occurs in ephemeral environments managed by ansible-test, such as containers, or when the --requirements option is used. - ansible-test - When invoking sleep in containers during container setup, the env command is used to avoid invoking the shell builtin, if present. - ansible-test - document block name now included in error message for YAML parsing errors (#82353). - ansible-test - sanity test allows EXAMPLES to be multi-document YAML (#82353). - ansible-test now has FreeBSD 13.3 and 14.0 support - ansible.builtin.user - Remove user not found warning (#80267) - apt_repository.py - use api.launchpad.net endpoint instead of launchpad.net/api - async tasks can now also support check mode at the same time. - async_status now supports check mode. - constructed inventory plugin - Adding a note that only group_vars of explicit groups are loaded (#82580). - csvfile - add a keycol parameter to specify in which column to search. - dnf - add the best option - dnf5 - add the best option - filter plugin - Add the count and mandatory_count parameters in the regex_replace filter - find - add a encoding parameter to specify which encoding of the files to be searched. - git module - gpg_allowlist name was added in 2.17 and we will eventually deprecate the gpg_whitelist alias. - import_role - allow subdirectories with `_from` options for parity with include_role (#82584). - module argument spec - Allow module authors to include arbitrary additional context in the argument spec, by making use of a new top level key called context. This key should be a dict type. This allows for users to customize what they place in the argument spec, without having to ignore sanity tests that validate the schema. - modules - Add the ability for an action plugin to call self._execute_module(*, ignore_unknown_opts=True) to execute a module with options that may not be supported for the version being called. This tells the module basic wrapper to ignore validating the options provided match the arg spec. - package action now has a configuration that overrides the detected package manager, it is still overridden itself by the use option. - py3compat - Remove ansible.utils.py3compat as it is no longer necessary - removed the unused argument create_new_password from CLI.build_vault_ids (#82066). - urls - Add support for TLS 1.3 post handshake certificate authentication - #81782 - urls - reduce complexity of Request.open - user - accept yescrypt hash as user password - validate-modules tests now correctly handles choices in dictionary format. * Breaking Changes / Porting Guide - assert - Nested templating may result in an inability for the conditional to be evaluated. See the porting guide for more information. * Deprecated Features - Old style vars plugins which use the entrypoints get_host_vars or get_group_vars are deprecated. The plugin should be updated to inherit from BaseVarsPlugin and define a get_vars method as the entrypoint. - The 'required' parameter in 'ansible.module_utils.common.process.get_bin_path' API is deprecated (#82464). - module_utils - importing the following convenience helpers from ansible.module_utils.basic has been deprecated: get_exception, literal_eval, _literal_eval, datetime, signal, types, chain, repeat, PY2, PY3, b, binary_type, integer_types, iteritems, string_types, test_type, map and shlex_quote. - ansible-doc - role entrypoint attributes are deprecated and eventually will no longer be shown in ansible-doc from ansible-core 2.20 on (#82639, #82678). - paramiko connection plugin, configuration items in the global scope are being deprecated and will be removed in favor or the existing same options in the plugin itself. Users should not need to change anything (how to configure them are the same) but plugin authors using the global constants should move to using the plugin's get_option(). * Removed Features (previously deprecated) - Remove deprecated APIs from ansible-docs (#81716). - Remove deprecated JINJA2_NATIVE_WARNING environment variable (#81714) - Remove deprecated scp_if_ssh from ssh connection plugin (#81715). - Remove deprecated crypt support from ansible.utils.encrypt (#81717) - Removed Python 2.7 and Python 3.6 as a supported remote version. Python 3.7+ is now required for target execution. - With the removal of Python 2 support, the yum module and yum action plugin are removed and redirected to dnf. * Security Fixes - ANSIBLE_NO_LOG - Address issue where ANSIBLE_NO_LOG was ignored (CVE-2024-0690) - ansible-galaxy - Prevent roles from using symlinks to overwrite files outside of the installation directory (CVE-2023-5115) - templating - Address issues where internal templating can cause unsafe variables to lose their unsafe designation (CVE-2023-5764) * Bugfixes - Add a version ceiling constraint for pypsrp to avoid potential breaking changes in the 1.0.0 release. - All core lookups now use set_option(s) even when doing their own custom parsing. This ensures that the options are always the proper type. - Allow for searching handler subdir for included task via include_role (#81722) - AnsibleModule.atomic_move - fix preserving extended ACLs of the destination when it exists (#72929). - Cache host_group_vars after instantiating it once and limit the amount of repetitive work it needs to do every time it runs. - Call PluginLoader.all() once for vars plugins, and load vars plugins that run automatically or are enabled specifically by name subsequently. - Consolidate systemd detection logic into one place (#80975). - Consolidated the list of internal static vars, centralized them as constant and completed from some missing entries. - Do not print undefined error message twice (#78703). - Enable file cache for vaulted files during vars lookup to fix a strong performance penalty in huge and complex playbboks. - Fix NEVRA parsing of package names that include digit(s) in them (#76463, #81018) - Fix force_handlers not working with any_errors_fatal (#36308) - Fix run_once being incorrectly interpreted on handlers (#81666) - Fix an issue when setting a plugin name from an unsafe source resulted in ValueError: unmarshallable object (#82708) - Fix check for missing _sub_plugin attribute in older connection plugins (#82954) - Fix condition for unquoting configuration strings from ini files (#82387). - Fix for when any_errors_fatal was ignored if error occurred in a block with always (#31543) - Fix handlers not being executed in lockstep using the linear strategy in some cases (#82307) - Fix handling missing urls in ansible.module_utils.urls.fetch_file for Python 3. - Fix issue where an include_tasks handler in a role was not able to locate a file in tasks/ when tasks_from was used as a role entry point and main.yml was not present (#82241) - Fix issues when tasks withing nested blocks wouldn't run when force_handlers is set (#81533) - Fix loading vars_plugins in roles (#82239). - Fix notifying role handlers by listen keyword topics with the "role_name : " prefix (#82849). - Fix setting proper locale for git executable when running on non english systems, ensuring git output can always be parsed. - Fix tasks in always section not being executed for nested blocks with any_errors_fatal (#73246) - Fixes permission for cache json file from 600 to 644 (#82683). - Give the tombstone error for include pre-fork like other tombstoned action/module plugins. - Harden python templates for respawn and ansiballz around str literal quoting - Include the task location when a module or action plugin is deprecated (#82450). - Interpreter discovery - Add Amzn to OS_FAMILY_MAP for correct family fallback for interpreter discovery (#80882). - Mirror the behavior of dnf on the command line when handling NEVRAs with omitted epoch (#71808) - Plugin loader does not dedupe nor cache filter/test plugins by file basename, but full path name. - Properly template tags in parent blocks (#81053) - Provide additional information about the alternative plugin in the deprecation message (#80561). - Remove the galaxy_info field platforms from the role templates (#82453). - Restoring the ability of filters/tests can have same file base name but different tests/filters defined inside. - Reword the error message when the module fails to parse parameters in JSON format (#81188). - Reword warning if the reserved keyword _ansible_ used as a module parameter (#82514). - Run all handlers with the same listen topic, even when notified from another handler (#82363). - Slight optimization to hostvars (instantiate template only once per host, vs per call to var). - Stopped misleadingly advertising async mode support in the reboot module (#71517). - ansible-galaxy role import - fix using the role_name in a standalone role's galaxy_info metadata by disabling automatic removal of the ansible-role- prefix. This matches the behavior of the Galaxy UI which also no longer implicitly removes the ansible-role- prefix. Use the --role-name option or add a role_name to the galaxy_info dictionary in the role's meta/main.yml to use an alternate role name. - ansible-test sanity --test runtime-metadata - add action_plugin as a valid field for modules in the schema (#82562). - ansible.module_utils.service - ensure binary data transmission in daemonize() - any_errors_fatal should fail all hosts and rescue all of them when a rescue section is specified (#80981) - include_role - properly execute v2_playbook_on_include and v2_runner_on_failed callbacks as well as increase ok and failed stats in the play recap, when appropriate (#77336) - allow_duplicates - fix evaluating if the current role allows duplicates instead of using the initial value from the duplicate's cached role. - ansible-config init will now dedupe ini entries from plugins. - ansible-config will now properly template defaults before dumping them. - ansible-doc - fixed "inicates" typo in output - ansible-doc - format top-level descriptions with multiple paragraphs as multiple paragraphs, instead of concatenating them (#83155). - ansible-galaxy - Deprecate use of the Galaxy v2 API (#81781) - ansible-galaxy - Provide a better error message when using a requirements file with an invalid format - #81901 - ansible-galaxy - Resolve issue with the dataclass used for galaxy.yml manifest caused by using future annotations - ansible-galaxy - ensure path to ansible collection when installing or downloading doesn't have a backslash (#79705). - ansible-galaxy - started allowing the use of pre-releases for collections that do not have any stable versions published. (#81606) - ansible-galaxy - started allowing the use of pre-releases for dependencies on any level of the dependency tree that specifically demand exact pre-release versions of collections and not version ranges. (#81606) - ansible-galaxy error on dependency resolution will not error itself due to 'virtual' collections not having a name/namespace. - ansible-galaxy info - fix reporting no role found when lookup_role_by_name returns None. - ansible-galaxy role import - exit with 1 when the import fails (#82175). - ansible-galaxy role install - fix installing roles from Galaxy that have version None (#81832). - ansible-galaxy role install - fix symlinks (#82702, #81965). - ansible-galaxy role install - normalize tarfile paths and symlinks using ansible.utils.path.unfrackpath and consider them valid as long as the realpath is in the tarfile's role directory (#81965). - ansible-inventory - index available_hosts for major performance boost when dumping large inventories - ansible-pull now will expand relative paths for the - d|--directory option is now expanded before use. - ansible-pull will now correctly handle become and connection password file options for ansible-playbook. - ansible-test - Add a pylint plugin to work around a known issue on Python 3.12. - ansible-test - Explicitly supply ControlPath=none when setting up port forwarding over SSH to address the scenario where the local ssh configuration uses ControlPath for all hosts, and would prevent ports to be forwarded after the initial connection to the host. - ansible-test - Fix parsing of cgroup entries which contain a : in the path (#81977). - ansible-test - Include missing pylint requirements for Python 3.10. - ansible-test - Properly detect docker host when using ssh:// protocol for connecting to the docker daemon. - ansible-test - The libexpat package is automatically upgraded during remote bootstrapping to maintain compatibility with newer Python packages. - ansible-test - The validate-modules sanity test no longer attempts to process files with unrecognized extensions as Python (resolves #82604). - ansible-test - Update pylint to version 3.0.1. - ansible-test ansible-doc sanity test - do not remove underscores from plugin names in collections before calling ansible-doc (#82574). - ansible-test validate-modules sanity test - do not treat leading underscores for plugin names in collections as an attempted deprecation (#82575). - ansible-test — Python 3.8–3.12 will use coverage v7.3.2. - ansible.builtin.apt - calling clean = true does not properly clean certain cache files such as /var/cache/apt/pkgcache.bin and /var/cache/apt/pkgcache.bin (#82611) - ansible.builtin.uri - the module was ignoring the force parameter and always requesting a cached copy (via the If-Modified-Since header) when downloading to an existing local file. Disable caching when force is true, as documented (#82166). - ansible_managed restored it's 'templatability' by ensuring the possible injection routes are cut off earlier in the process. - apt - honor install_recommends and dpkg_options while installing python3-apt library (#40608). - apt - install recommended packages when installing package via deb file (#29726). - apt_repository - do not modify repo files if the file is a symlink (#49809). - apt_repository - update PPA URL to point to https URL (#82463). - assemble - fixed missing parameter 'content' in `_get_diff_data` API (#82359). - async - Fix bug that stopped running async task in --check when check_mode: False was set as a task attribute - #82811 - blockinfile - when create=true is used with a filename without path, the module crashed (#81638). - check if there are attributes to set before attempting to set them (#76727) - copy action now also generates temprary files as hidden ('.' prefixed) to avoid accidental pickup by running services that glob by extension. - copy action now ensures that tempfiles use the same suffix as destination, to allow for validate to work with utilities that check extensions. - deb822_repository - handle idempotency if the order of parameters is changed (#82454). - debconf - allow user to specify a list for value when vtype is multiselect (#81345). - delegate_to when set to an empty or undefined variable will now give a proper error. - distribution.py - Recognize ALP-Dolomite as part of the SUSE OS family in Ansible, fixing its previous misidentification (#82496). - distro - bump bundled distro version from 1.6.0 to 1.8.0 (#81713). - dnf - fix an issue when cached RPMs were left in the cache directory even when the keepcache setting was unset (#81954) - dnf - fix an issue when installing a package by specifying a file it provides could result in installing a different package providing the same file than the package already installed resulting in resolution failure (#82461) - dnf - properly set gpg check options on enabled repositories according to the disable_gpg_check option (#80110) - dnf - properly skip unavailable packages when skip_broken is enabled (#80590) - dnf - the nobest option only overrides the distribution default when explicitly used, and is used for all supported operations (#82616) - dnf5 - replace removed API calls - dnf5 - respect allow_downgrade when installing packages directly from rpm files - dnf5 - the nobest option only overrides the distribution default when used - dwim functions for lookups should be better at detectging role context even in abscense of tasks/main. - ensure we have logger before we log when we have increased verbosity. - expect - fix argument spec error using timeout=null (#80982). - fact gathering on linux now handles thread count by using rounding vs dropping decimals, it should give slightly more accurate numbers. - facts - add a generic detection for VMware in product name. - facts - detect VMware ESXi 8.0 virtualization by product name VMware20,1 - fetch - Do not calculate the file size for Windows fetch targets to improve performance. - fetch - add error message when using dest with a trailing slash that becomes a local directory - #82878 - find - do not fail on Permission errors (#82027). - first_found lookup now always returns a full (absolute) and normalized path - first_found lookup now always takes into account k=v options - flush_handlers - properly handle a handler failure in a nested block when force_handlers is set (http://github.com/ansible/ansible/issues/81532) - galaxy - skip verification for unwanted Python compiled bytecode files (#81628). - handle exception raised while validating with elements='int' and value is not within choices (#82776). - include_tasks - include ansible_loop_var and ansible_index_var in a loop (#82655). - include_vars - fix calculating depth relative to the root and ensure all files are included (#80987). - interpreter_discovery - handle AnsibleError exception raised while interpreter discovery (#78264). - iptables - add option choices 'src,src' and 'dst,dst' in match_set_flags (#81281). - iptables - set jump to DSCP when set_dscp_mark or set_dscp_mark_class is set (#77077). - known_hosts - Fix issue with @cert-authority entries in known_hosts incorrectly being removed. - module no_log will no longer affect top level booleans, for example no_log_module_parameter='a' will no longer hide changed=False as a 'no log value' (matches 'a'). - moved assemble, raw, copy, fetch, reboot, script and wait_for_connection to query task instead of play_context ensuring they get the lastest and most correct data. - reboot action now handles connections with 'timeout' vs only 'connection_timeout' settings. - role params now have higher precedence than host facts again, matching documentation, this had unintentionally changed in 2.15. - roles, code cleanup and performance optimization of dependencies, now cached, and public setting is now determined once, at role instantiation. - roles, the static property is now correctly set, this will fix issues with public and DEFAULT_PRIVATE_ROLE_VARS controls on exporting vars. - set_option method for plugins to update config now properly passes through type casting and validation. - ssh - add tests for the SSH connection plugin. - support url-encoded credentials in URLs like http://x%40:%40@example.com (#82552) - syslog - Handle ValueError exception raised when sending Null Characters to syslog with Python 3.12. - systemd_services - update documentation regarding required_one_of and required_by parameters (#82914). - template - Fix error when templating an unsafe string which corresponds to an invalid type in Python (#82600). - template action will also inherit the behavior from copy (as it uses it internally). - templating - ensure syntax errors originating from a template being compiled into Python code object result in a failure (#82606) - unarchive - add support for 8 character permission strings for zip archives (#81705). - unarchive - force unarchive if symlink target changes (#30420). - unarchive modules now uses zipinfo options without relying on implementation defaults, making it more compatible with all OS/distributions. - unsafe data - Address an incompatibility when iterating or getting a single index from AnsibleUnsafeBytes - unsafe data - Address an incompatibility with AnsibleUnsafeText and AnsibleUnsafeBytes when pickling with protocol=0 - unsafe data - Enable directly using AnsibleUnsafeText with Python pathlib (#82414) - uri - update the documentation for follow_redirects. - uri action plugin now skipped during check mode (not supported) instead of even trying to execute the module, which already skipped, this does not really change the result, but returns much faster. - vars - handle exception while combining VarsWithSources and dict (#81659). - wait_for should not handle 'non mmapable files' again. - winrm - Better handle send input failures when communicating with hosts under load - winrm - Do not raise another exception during cleanup when a task is timed out - #81095 - winrm - does not hang when attempting to get process output when stdin write failed- update to 2.16.8: https://github.com/ansible/ansible/blob/v2.16.8/changelogs/CHANGELOG-v2.16.rst * Minor Changes - ansible-test - Update pypi-test-container to version 3.1.0. * Bugfixes - Fix the task attribute resolved_action to show the FQCN instead of None when action or local_action is used in the playbook. - Fix using module_defaults with local_action/action (#81905). - fixed unit test test_borken_cowsay to address mock not been properly applied when existing unix system already have cowsay installed. - powershell - Implement more robust deletion mechanism for C# code compilation temporary files. This should avoid scenarios where the underlying temporary directory may be temporarily locked by antivirus tools or other IO problems. A failure to delete one of these temporary directories will result in a warning rather than an outright failure.- update to 2.16.7: https://github.com/ansible/ansible/blob/v2.16.7/changelogs/CHANGELOG-v2.16.rst * Minor Changes - ansible.builtin.user - Remove user not found warning (#80267) * Bugfixes - Add a version ceiling constraint for pypsrp to avoid potential breaking changes in the 1.0.0 release. - Fix NEVRA parsing of package names that include digit(s) in them (#76463, #81018) - Fix handlers not being executed in lockstep using the linear strategy in some cases (#82307) - Give the tombstone error for include pre-fork like other tombstoned action/module plugins. - Include the task location when a module or action plugin is deprecated (#82450). - Mirror the behavior of dnf on the command line when handling NEVRAs with omitted epoch (#71808) - ansible-test - Automatically enable the PyPI proxy for the centos7 container to restore the ability to use pip in that container. - ansible_managed restored it's 'templatability' by ensuring the possible injection routes are cut off earlier in the process. - assemble - fixed missing parameter 'content' in `_get_diff_data` API (#82359). - dnf - fix an issue when installing a package by specifying a file it provides could result in installing a different package providing the same file than the package already installed resulting in resolution failure (#82461) - uri - update the documentation for follow_redirects.- adjust spec to new name for PyPI file name (underscore instead of hyphen: ansible_core-2.16.6.tar.gz) - update to 2.16.6: https://github.com/ansible/ansible/blob/v2.16.6/changelogs/CHANGELOG-v2.16.rst * Bugfixes - Consolidated the list of internal static vars, centralized them as constant and completed from some missing entries. - Fix check for missing `_sub_plugin` attribute in older connection plugins (#82954) - Fixes permission for cache json file from 600 to 644 (#82683). - Slight optimization to hostvars (instantiate template only once per host, vs per call to var). - allow_duplicates - fix evaluating if the current role allows duplicates instead of using the initial value from the duplicate's cached role. - ansible-config will now properly template defaults before dumping them. - ansible-test ansible-doc sanity test - do not remove underscores from plugin names in collections before calling ansible-doc (#82574). - async - Fix bug that stopped running async task in --check when check_mode: False was set as a task attribute - #82811 - blockinfile - when create=true is used with a filename without path, the module crashed (#81638). - dnf - fix an issue when cached RPMs were left in the cache directory even when the keepcache setting was unset (#81954) - dnf5 - replace removed API calls - facts - add a generic detection for VMware in product name. - fetch - add error message when using dest with a trailing slash that becomes a local directory - #82878 - find - do not fail on Permission errors (#82027). - unarchive modules now uses zipinfo options without relying on implementation defaults, making it more compatible with all OS/distributions. - winrm - Do not raise another exception during cleanup when a task is timed out - #81095- update to 2.16.5: https://github.com/ansible/ansible/blob/v2.16.5/changelogs/CHANGELOG-v2.16.rst * Minor Changes - ansible-test - Add a work-around for permission denied errors when using pytest >= 8 on multi-user systems with an installed version of ansible-test. * Bugfixes - Fix an issue when setting a plugin name from an unsafe source resulted in ValueError: unmarshallable object (#82708) - Harden python templates for respawn and ansiballz around str literal quoting - ansible-test - The libexpat package is automatically upgraded during remote bootstrapping to maintain compatibility with newer Python packages. - template - Fix error when templating an unsafe string which corresponds to an invalid type in Python (#82600). - winrm - does not hang when attempting to get process output when stdin write failed- update to 2.16.4: https://github.com/ansible/ansible/blob/v2.16.4/changelogs/CHANGELOG-v2.16.rst * Bugfixes - Fix loading vars_plugins in roles (#82239). - expect - fix argument spec error using timeout=null (#80982). - include_vars - fix calculating depth relative to the root and ensure all files are included (#80987). - templating - ensure syntax errors originating from a template being compiled into Python code object result in a failure (#82606)- update to 2.16.3: https://github.com/ansible/ansible/blob/v2.16.3/changelogs/CHANGELOG-v2.16.rst * Security Fixes - ANSIBLE_NO_LOG - Address issue where ANSIBLE_NO_LOG was ignored (CVE-2024-0690) * Bugfixes - Run all handlers with the same listen topic, even when notified from another handler (#82363). - ansible-galaxy role import - fix using the role_name in a standalone role's galaxy_info metadata by disabling automatic removal of the ansible-role- prefix. This matches the behavior of the Galaxy UI which also no longer implicitly removes the ansible-role- prefix. Use the --role-name option or add a role_name to the galaxy_info dictionary in the role's meta/main.yml to use an alternate role name. - ansible-test sanity --test runtime-metadata - add action_plugin as a valid field for modules in the schema (#82562). - ansible-config init will now dedupe ini entries from plugins. - ansible-galaxy role import - exit with 1 when the import fails (#82175). - ansible-galaxy role install - normalize tarfile paths and symlinks using ansible.utils.path.unfrackpath and consider them valid as long as the realpath is in the tarfile's role directory (#81965). - delegate_to when set to an empty or undefined variable will now give a proper error. - dwim functions for lookups should be better at detectging role context even in abscense of tasks/main. - roles, code cleanup and performance optimization of dependencies, now cached, and public setting is now determined once, at role instantiation. - roles, the static property is now correctly set, this will fix issues with public and DEFAULT_PRIVATE_ROLE_VARS controls on exporting vars. - unsafe data - Enable directly using AnsibleUnsafeText with Python pathlib (#82414)- update to 2.16.2: https://github.com/ansible/ansible/blob/v2.16.2/changelogs/CHANGELOG-v2.16.rst * Bugfixes - unsafe data - Address an incompatibility when iterating or getting a single index from AnsibleUnsafeBytes - unsafe data - Address an incompatibility with AnsibleUnsafeText and AnsibleUnsafeBytes when pickling with protocol=0- update to 2.16.1: https://github.com/ansible/ansible/blob/v2.16.1/changelogs/CHANGELOG-v2.16.rst * Breaking Changes / Porting Guide - assert - Nested templating may result in an inability for the conditional to be evaluated. See the porting guide for more information. * Security Fixes - templating - Address issues where internal templating can cause unsafe variables to lose their unsafe designation (CVE-2023-5764) * Bugfixes - Fix issue where an include_tasks handler in a role was not able to locate a file in tasks/ when tasks_from was used as a role entry point and main.yml was not present (#82241) - Plugin loader does not dedupe nor cache filter/test plugins by file basename, but full path name. - Restoring the ability of filters/tests can have same file base name but different tests/filters defined inside. - ansible-pull now will expand relative paths for the - d|--directory option is now expanded before use. - ansible-pull will now correctly handle become and connection password file options for ansible-playbook. - flush_handlers - properly handle a handler failure in a nested block when force_handlers is set (http://github.com/ansible/ansible/issues/81532) - module no_log will no longer affect top level booleans, for example no_log_module_parameter='a' will no longer hide changed=False as a 'no log value' (matches 'a'). - role params now have higher precedence than host facts again, matching documentation, this had unintentionally changed in 2.15. - wait_for should not handle 'non mmapable files' again.- update to 2.16.0: https://github.com/ansible/ansible/blob/v2.16.0/changelogs/CHANGELOG-v2.16.rst * Bugfixes and Minor changes omitted for brevity, see full changelog * Breaking Changes / Porting Guide - Any plugin using the config system and the cli entry to use the timeout from the command line, will see the value change if the use had configured it in any of the lower precedence methods. If relying on this behaviour to consume the global/generic timeout from the DEFAULT_TIMEOUT constant, please consult the documentation on plugin configuration to add the overlaping entries. - ansible-test - Test plugins that rely on containers no longer support reusing running containers. The previous behavior was an undocumented, untested feature. - service module will not permanently configure variables/flags for openbsd when doing enable/disable operation anymore, this module was never meant to do this type of work, just to manage the service state itself. A rcctl_config or similar module should be created and used instead. * Deprecated Features - Deprecated ini config option collections_paths, use the singular form collections_path instead - Deprecated the env var ANSIBLE_COLLECTIONS_PATHS, use the singular form ANSIBLE_COLLECTIONS_PATH instead - Old style vars plugins which use the entrypoints get_host_vars or get_group_vars are deprecated. The plugin should be updated to inherit from BaseVarsPlugin and define a get_vars method as the entrypoint. - Support for Windows Server 2012 and 2012 R2 has been removed as the support end of life from Microsoft is October 10th 2023. These versions of Windows will no longer be tested in this Ansible release and it cannot be guaranteed that they will continue to work going forward. - STRING_CONVERSION_ACTION config option is deprecated as it is no longer used in the Ansible Core code base. - the 'smart' option for setting a connection plugin is being removed as it's main purpose (choosing between ssh and paramiko) is now irrelevant. - vault and unfault filters - the undocumented vaultid parameter is deprecated and will be removed in ansible-core 2.20. Use vault_id instead. - yum_repository - deprecated parameter 'keepcache' (#78693). * Removed Features (previously deprecated) - ActionBase - remove deprecated _remote_checksum method - PlayIterator - remove deprecated cache_block_tasks and get_original_task methods - Remove deprecated FileLock class - Removed Python 3.9 as a supported version on the controller. Python 3.10 or newer is required. - Removed include which has been deprecated in Ansible 2.12. Use include_tasks or import_tasks instead. - Templar - remove deprecated shared_loader_obj parameter of __init__ - fetch_url - remove auto disabling decompress when gzip is not available - get_action_args_with_defaults - remove deprecated redirected_names method parameter - ansible-test - Removed support for the remote Windows targets 2012 and 2012-R2 - inventory_cache - remove deprecated default.fact_caching_prefix ini configuration option, use defaults.fact_caching_prefix instead. - module_utils/basic.py - Removed Python 3.5 as a supported remote version. Python 2.7 or Python 3.6+ is now required. - stat - removed unused get_md5 parameter. * Security Fixes - ansible-galaxy - Prevent roles from using symlinks to overwrite files outside of the installation directory (CVE-2023-5115) * Known issues - ansible-galaxy - dies in the middle of installing a role when that role contains Java inner classes (files with $ in the file name). This is by design, to exclude temporary or backup files. (#81553). - ansible-test - The pep8 sanity test is unable to detect f-string spacing issues (E201, E202) on Python 3.10 and 3.11. They are correctly detected under Python 3.12. See (PyCQA/pycodestyle#1190).- update to 2.15.8: * Minor Changes - ansible-test - Add FreeBSD 13.2 remote. - ansible-test - Removed freebsd/13.1 remote. * Bugfixes - unsafe data - Address an incompatibility when iterating or getting a single index from AnsibleUnsafeBytes - unsafe data - Address an incompatibility with AnsibleUnsafeText and AnsibleUnsafeBytes when pickling with protocol=0- update to 2.15.7: This release includes a fix for CVE-2023-5764, where internal templating actions could result in unsafe data losing its unsafe designation. * Breaking Changes / Porting Guide - assert - Nested templating may result in an inability for the conditional to be evaluated. See the porting guide for more information. * Security Fixes - templating - Address issues where internal templating can cause unsafe variables to lose their unsafe designation (CVE-2023-5764) * Bugfixes - ansible-pull now will expand relative paths for the - d|--directory option is now expanded before use. - flush_handlers - properly handle a handler failure in a nested block when force_handlers is set (http://github.com/ansible/ansible/issues/81532) - module no_log will no longer affect top level booleans, for example no_log_module_parameter='a' will no longer hide changed=False as a 'no log value' (matches 'a'). - modules/user.py - Add check for valid directory when creating new user homedir (allows /dev/null as skeleton) (#75063) - role params now have higher precedence than host facts again, matching documentation, this had unintentionally changed in 2.15. - wait_for should not handle 'non mmapable files' again.- update to 2.15.6: * Minor Changes - ansible-test - Windows 2012 and 2012-R2 instances are now requested from Azure instead of AWS. * Bugfixes - Fix run_once being incorrectly interpreted on handlers (#81666) - Plugin loader does not dedupe nor cache filter/test plugins by file basename, but full path name. - Properly template tags in parent blocks (#81053) - Restoring the ability of filters/tests can have same file base name but different tests/filters defined inside. - import_role reverts to previous behavior of exporting vars at compile time. - ansible-galaxy - Provide a better error message when using a requirements file with an invalid format - #81901 - ansible-inventory - index available_hosts for major performance boost when dumping large inventories - ansible-test - Fix parsing of cgroup entries which contain a : in the path (#81977).- update to 2.15.5: * Minor Changes - ansible-galaxy dependency resolution messages have changed the unexplained 'virtual' collection for the specific type ('scm', 'dir', etc) that is more user friendly * Security Fixes - ansible-galaxy - Prevent roles from using symlinks to overwrite files outside of the installation directory (CVE-2023-5115) * Bugfixes - Allow for searching handler subdir for included task via include_role (#81722) - PluginLoader - fix Jinja plugin performance issues (#79652) - ansible.module_utils.service - ensure binary data transmission in daemonize() - ansible.module_utils.service - fix inter-process communication in daemonize() - ansible-galaxy - started allowing the use of pre-releases for collections that do not have any stable versions published. (#81606) - ansible-galaxy - started allowing the use of pre-releases for dependencies on any level of the dependency tree that specifically demand exact pre-release versions of collections and not version ranges. (#81606) - ansible-galaxy error on dependency resolution will not error itself due to 'virtual' collections not having a name/namespace. - ansible-galaxy info - fix reporting no role found when lookup_role_by_name returns None. - role deduplication - don't deduplicate before a role has had a task run for that particular host (#81486). - uri/urls - Add compat function to handle the ability to parse the filename from a Content-Disposition header (#81806) - winrm - Better handle send input failures when communicating with hosts under load- update to 2.15.4: * Deprecated Features - vault and unfault filters - the undocumented vaultid parameter is deprecated and will be removed in ansible-core 2.20. Use vault_id instead. * Bugfixes - PowerShell - Remove some code which is no longer valid for dotnet 5+ - Prompting - add a short sleep between polling for user input to reduce CPU consumption (#81516). - ansible-galaxy - Enabled the data tarfile filter during role installation for Python versions that support it. A probing mechanism is used to avoid Python versions with a broken implementation. - ansible-test - Always use ansible-test managed entry points for ansible-core CLI tools when not running from source. This fixes issues where CLI entry points created during install are not compatible with ansible-test. - first found lookup has been updated to use the normalized argument parsing (pythonic) matching the documented examples. - handlers - the listen keyword can affect only one handler with the same name, the last one defined as it is a case with the notify keyword (#81013) - include_role - expose variables from parent roles to role's handlers (#80459) - tarfile - handle data filter deprecation warning message for extract and extractall (#80832). - vault and unvault filters now properly take vault_id parameter.- as example files were split out into a separate package ansible-documentation upstream, this package now Recommends that package - update to 2.15.3: * Minor Changes - Removed exclude and recursive-exclude commands for generated files from the MANIFEST.in file. These excludes were unnecessary since releases are expected to be built with a clean worktree. - Removed exclude commands for sanity test files from the MANIFEST.in file. These tests were previously excluded because they did not pass when run from an sdist. However, sanity tests are not expected to pass from an sdist, so excluding some (but not all) of the failing tests makes little sense. - Removed redundant include commands from the MANIFEST.in file. These includes either duplicated default behavior or another command. - The ansible-core sdist no longer contains pre-generated man pages. Instead, a packaging/cli-doc/build.py script is included in the sdist. This script can generate man pages and standalone RST documentation for ansible-core CLI programs. - The docs and examples directories are no longer included in the ansible-core sdist. These directories have been moved to the https://github.com/ansible/ansible-documentation repository. - Use include where recursive-include is unnecessary in the MANIFEST.in file. - ansible-test - Update the logic used to detect when ansible-test is running from source. - ansible-test - Updated the CloudStack test container to version 1.6.1. * Bugfixes - Exclude internal options from man pages and docs. - Fix ansible-config init man page option indentation. - The ansible-config init command now has a documentation description. - The ansible-galaxy collection download command now has a documentation description. - The ansible-galaxy collection install command documentation is now visible (previously hidden by a decorator). - The ansible-galaxy collection verify command now has a documentation description. - The ansible-galaxy role install command documentation is now visible (previously hidden by a decorator). - The ansible-inventory command command now has a documentation description (previously used as the epilog). - Update module_utils.urls unit test to work with cryptography >= 41.0.0. - When generating man pages, use func to find the command function instead of looking it up by the command name. - ansible-galaxy now considers all collection paths when identifying which collection requirements are already installed. Use the COLLECTIONS_PATHS and COLLECTIONS_SCAN_SYS_PATHS config options to modify these. Previously only the install path was considered when resolving the candidates. The install path will remain the only one potentially modified. (#79767, #81163) - ansible-test - Fix several possible tracebacks when using the - e option with sanity tests. - ansible-test - Pre-build a PyYAML wheel before installing requirements to avoid a potential Cython build failure. - ansible-test - Remove redundant warning about missing programs before attempting to execute them. - core will now also look at the connection plugin to force 'local' interpreter for networking path compatibility as just ansible_network_os could be misleading. - man page build - Sub commands of ansible-galaxy role and ansible-galaxy collection are now documented. - password_hash - fix salt format for crypt (only used if passlib is not installed) for the bcrypt algorithm. - urls.py - fixed cert_file and key_file parameters when running on Python 3.12 - #80490- update to 2.15.2: * Minor Changes - Utilize gpg check provided internally by the transaction.run method as oppose to calling it manually. - ansible-test - Add Fedora 38 remote. - ansible-test - Use a context manager to perform cleanup at exit instead of using the built-in atexit module. - dnf5 - enable environment groups installation testing in CI as its support was added. - dnf5 - enable now implemented cacheonly functionality * Bugfixes - From issue #80880, when notifying a handler from another handler, handler notifications must be registered immediately as the flush_handler call is not recursive. - ansible-galaxy - Fix issue installing collections containing directories with more than 100 characters on python versions before 3.10.6 - paramiko_ssh, psrp, and ssh connection plugins - ensure that all values for options that should be strings are actually converted to strings (#81029). - templating - In the template action and lookup, use local jinja2 environment overlay overrides instead of mutating the templars environment * Known Issues - ansible-test - The Fedora 37 remote is known to occasionally hang during boot. It is no longer routinely tested as a result. If possible, use the Fedora 38 remote instead.- update to 2.15.1: * Minor Changes - ansible-test - Allow float values for the --timeout option to the env command. This simplifies testing. - ansible-test - Refactored env command logic and timeout handling. - ansible-test - Use datetime.datetime.now with tz specified instead of datetime.datetime.utcnow. * Bugfixes - Properly disable jinja2_native in the template module when jinja2 override is used in the template (#80605) - ansible-galaxy - Fix variable type error when installing subdir collections (#80943) - ansible-test - Fix a traceback that occurs when attempting to test Ansible source using a different ansible-test. A clear error message is now given when this scenario occurs. - ansible-test - Fix handling of timeouts exceeding one day. - ansible-test - Fix various cases where the test timeout could expire without terminating the tests. - ansible-test local change detection - use git merge-base HEAD instead of git merge-base --fork-point (#79734). - deb822_repository - use http-agent for receiving content (#80809). - dnf5 - Update dnf5 module to handle API change for setting the download directory (#80887) - man page build - Remove the dependency on the docs directory for building man pages. - pep517 build backend - Copy symlinks when copying the source tree. This avoids tracebacks in various scenarios, such as when a venv is present in the source tree. - uri - fix search for JSON type to include complex strings containing '+'- major update to 2.15.0: https://github.com/ansible/ansible/blob/v2.15.0/changelogs/ CHANGELOG-v2.15.rst- modify %if-condition to allow building for python3.10 or python3.11 on SLES15- change python version on Leap15/SLES15 to python3.11 to use the new stack supported by SUSE- BuildRequire python3.9 to follow upstream (does not matter on Tumbleweed which is using 3.10 already...)- update to 2.14.5: https://github.com/ansible/ansible/blob/v2.14.5/changelogs/ CHANGELOG-v2.14.rst * Bugfixes - ansible-doc - stop generating wrong module URLs for module see-alsos. The URLs for modules in ansible.builtin do now work, and URLs for modules outside ansible.builtin are no longer added (#80280). - ansible-galaxy - Improve retries for collection installs, to properly retry, and extend retry logic to common URL related connection errors (#80170 #80174) - ansible-galaxy - reduce API calls to servers by fetching signatures only for final candidates. - ansible-test - Add support for argcomplete version 3. - jinja2_native - fix intermittent 'could not find job' failures when a value of ansible_job_id from a result of an async task was inadvertently changed during execution; to prevent this a format of ansible_job_id was changed. - password lookup now correctly reads stored ident fields. - pep517 build backend - Use the documented import_module import from importlib. - roles - Fix templating public, allow_duplicates and rolespec_validate (#80304). - syntax check - Limit --syntax-check to ansible-playbook only, as that is the only CLI affected by this argument (#80506)- use `with` in dependencies instead of `and` - update to 2.14.4: https://github.com/ansible/ansible/blob/v2.14.4/changelogs/ CHANGELOG-v2.14.rst * Minor Changes - ansible-test - Moved git handling out of the validate-modules sanity test and into ansible-test. - ansible-test - Removed the --keep-git sanity test option, which was limited to testing ansible-core itself. - ansible-test - Updated the Azure Pipelines CI plugin to work with newer versions of git. * Breaking Changes / Porting Guide - ansible-test - Integration tests which depend on specific file permissions when running in an ansible-test managed host environment may require changes. Tests that require permissions other than 755 or 644 may need to be updated to set the necessary permissions as part of the test run. * Bugfixes - Fix MANIFEST.in to exclude unwanted files in the packaging/ directory. - Fix MANIFEST.in to include `*.md` files in the test/support/ directory. - Fix an issue where the value of become was ignored when used on a role used as a dependency in main/meta.yml (#79777) - ansible_eval_concat - avoid redundant unsafe wrapping of templated strings converted to Python types - ansible-galaxy role info - fix unhandled AttributeError by catching the correct exception. - ansible-test - Always indicate the Python version being used before installing requirements. Resolves issue #72855 - ansible-test - Exclude ansible-core vendored Python packages from ansible-test payloads. - ansible-test - Integration test target prefixes defined in a tests/integration/target-prefixes.{group} file can now contain an underscore (`_`) character. Resolves issue #79225 - ansible-test - Removed pointless comparison in diff evaluation logic. - ansible-test - Set PYLINTHOME for the pylint sanity test to prevent failures due to pylint checking for the existence of an obsolete home directory. - ansible-test - Support loading of vendored Python packages from ansible-core. - ansible-test - Use consistent file permissions when delegating tests to a container or remote host. Files with any execute bit set will use permissions 755. All other files will use permissions 644. (Resolves issue #75079) - copy - fix creating the dest directory in check mode with remote_src=True (#78611). - copy - fix reporting changes to file attributes in check mode with remote_src=True (#77957).- adjust Requires and BuildRequires for python-resolvelib to allow versions below 0.10.0 https://github.com/ansible/ansible/blob/devel/requirements.txt- update to 2.14.3: Full changelog https://github.com/ansible/ansible/blob/v2.14.3/changelogs/ CHANGELOG-v2.14.rst * Minor Changes - Make using blocks as handlers a parser error (#79968) - ansible-test - Specify the configuration file location required by test plugins when the config file is not found. This resolves issue: #79411 - ansible-test - Update error handling code to use Python 3.x constructs, avoiding direct use of errno. - ansible-test acme test container - update version to update used Pebble version, underlying Python and Go base containers, and Python requirements (#79783). * Bugfixes - Ansible.Basic.cs - Ignore compiler warning (reported as an error) when running under PowerShell 7.3.x. - Fix conditionally notifying include_tasks` handlers when ``force_handlers is used (#79776) - TaskExecutor - don't ignore templated _raw_params that k=v parser failed to parse (#79862) - ansible-galaxy - fix installing collections in git repositories/directories which contain a MANIFEST.json file (#79796). - ansible-test - Support Podman 4.4.0+ by adding the SYS_CHROOT capability when running containers. - ansible-test - fix warning message about failing to run an image to include the image name - strategy plugins now correctly identify bad registered variables, even on skip.- update to 2.14.2: Full changelog https://github.com/ansible/ansible/blob/v2.14.2/changelogs/CHANGELOG-v2.14.rst * Major Changes - ansible-test - Docker Desktop on WSL2 is now supported (additional configuration required). - ansible-test - Docker and Podman are now supported on hosts with cgroup v2 unified. Previously only cgroup v1 and cgroup v2 hybrid were supported. - ansible-test - Podman now works on container hosts without systemd. Previously only some containers worked, while others required rootfull or rootless Podman, but would not work with both. Some containers did not work at all. - ansible-test - Podman on WSL2 is now supported. - ansible-test - When additional cgroup setup is required on the container host, this will be automatically detected. Instructions on how to configure the host will be provided in the error message shown. * Minor Changes - ansible-test - A new audit option is available when running custom containers. This option can be used to indicate whether a container requires the AUDIT_WRITE capability. The default is required, which most containers will need when using Podman. If necessary, the none option can be used to opt-out of the capability. This has no effect on Docker, which always provides the capability. - ansible-test - A new cgroup option is available when running custom containers. This option can be used to indicate a container requires cgroup v1 or that it does not use cgroup. The default behavior assumes the container works with cgroup v2 (as well as v1). - ansible-test - Additional log details are shown when containers fail to start or SSH connections to containers fail. - ansible-test - Connection failures to remote provisioned hosts now show failure details as a warning. - ansible-test - Containers included with ansible-test no longer disable seccomp by default. - ansible-test - Failure to connect to a container over SSH now results in a clear error. Previously tests would be attempted even after initial connection attempts failed. - ansible-test - Integration tests can be excluded from retries triggered by the --retry-on-error option by adding the retry/never alias. This is useful for tests that cannot pass on a retry or are too slow to make retries useful. - ansible-test - More details are provided about an instance when provisioning fails. - ansible-test - Reduce the polling limit for SSHD startup in containers from 60 retries to 10. The one second delay between retries remains in place. - ansible-test - SSH connections from OpenSSH 8.8+ to CentOS 6 containers now work without additional configuration. However, clients older than OpenSSH 7.0 can no longer connect to CentOS 6 containers as a result. The container must have centos6 in the image name for this work-around to be applied. - ansible-test - SSH shell connections from OpenSSH 8.8+ to ansible-test provisioned network instances now work without additional configuration. However, clients older than OpenSSH 7.0 can no longer open shell sessions for ansible-test provisioned network instances as a result. - ansible-test - The ansible-test env command now detects and reports the container ID if running in a container. - ansible-test - Unit tests now support network disconnect by default when running under Podman. Previously this feature only worked by default under Docker. - ansible-test - Use stop --time 0 followed by rm to remove ephemeral containers instead of rm -f. This speeds up teardown of ephemeral containers. - ansible-test - Warnings are now shown when using containers that were built with VOLUME instructions. - ansible-test - When setting the max open files for containers, the container host's limit will be checked. If the host limit is lower than the preferred value, it will be used and a warning will be shown. - ansible-test - When using Podman, ansible-test will detect if the loginuid used in containers is incorrect. When this occurs a warning is displayed and the container is run with the AUDIT_CONTROL capability. Previously containers would fail under this situation, with no useful warnings or errors given. * Bugfixes - Correctly count rescued tasks in play recap (#79711) - Fix traceback when using the template module and running with ANSIBLE_DEBUG=1 (#79763) - Fix using GALAXY_IGNORE_CERTS in conjunction with collections in requirements files which specify a specific source that isn't in the configured servers. - Fix using GALAXY_IGNORE_CERTS when downloading tarballs from Galaxy servers (#79557). - Module and role argument validation - include the valid suboption choices in the error when an invalid suboption is provided. - ansible-doc now will correctly display short descriptions on listing filters/tests no matter the directory sorting. - ansible-inventory will not explicitly sort groups/hosts anymore, giving a chance (depending on output format) to match the order in the input sources. - ansible-test - Added a work-around for a traceback under Python 3.11 when completing certain command line options. - ansible-test - Avoid using exec after container startup when possible. This improves container startup performance and avoids intermittent startup issues with some old containers. - ansible-test - Connection attempts to managed remote instances no longer abort on Permission denied errors. - ansible-test - Detection for running in a Podman or Docker container has been fixed to detect more scenarios. The new detection relies on /proc/self/mountinfo instead of /proc/self/cpuset. Detection now works with custom cgroups and private cgroup namespaces. - ansible-test - Fix validate-modules error when retrieving PowerShell argspec when retrieved inside a Cmdlet - ansible-test - Handle server errors when executing the docker info command. - ansible-test - Multiple containers now work under Podman without specifying the --docker-network option. - ansible-test - Pass the XDG_RUNTIME_DIR environment variable through to container commands. - ansible-test - Perform PyPI proxy configuration after instances are ready and bootstrapping has been completed. Only target instances are affected, as controller instances were already handled this way. This avoids proxy configuration errors when target instances are not yet ready for use. - ansible-test - Prevent concurrent / repeat inspections of the same container image. - ansible-test - Prevent concurrent / repeat pulls of the same container image. - ansible-test - Prevent concurrent execution of cached methods. - ansible-test - Show the exception type when reporting errors during instance provisioning. - ansible-test sanity - correctly report invalid YAML in validate-modules (#75837). - argument spec validation - again report deprecated parameters for Python-based modules. This was accidentally removed in ansible-core 2.11 when argument spec validation was refactored (#79680, #79681). - argument spec validation - ensure that deprecated aliases in suboptions are also reported (#79740). - argument spec validation - fix warning message when two aliases of the same option are used for suboptions to also mention the option's name they are in (#79740). - connection local now avoids traceback on invalid user being used to execuet ansible (valid in host, but not in container). - file - touch action in check mode was always returning ok. Fix now evaluates the different conditions and returns the appropriate changed status. (#79360) - get_url - Ensure we are passing ciphers to all url_get calls (#79717) - plugin filter now works with rejectlist as documented (still falls back to blacklist if used). - uri - improve JSON content type detection * Known Issues - ansible-test - Additional configuration may be required for certain container host and container combinations. Further details are available in the testing documentation. - ansible-test - Custom containers with VOLUME instructions may be unable to start, when previously the containers started correctly. Remove the VOLUME instructions to resolve the issue. Containers with this condition will cause ansible-test to emit a warning. - ansible-test - Systems with Podman networking issues may be unable to run containers, when previously the issue went unreported. Correct the networking issues to continue using ansible-test with Podman. - ansible-test - Using Docker on systems with SELinux may require setting SELinux to permissive mode. Podman should work with SELinux in enforcing mode.- update to 2.14.1: Full changelog https://github.com/ansible/ansible/blob/v2.14.1/changelogs/CHANGELOG-v2.14.rst * Minor Changes - ansible-test - Improve consistency of executed pylint commands by making the plugins ordered. * Bugfixes - Fixes leftover _valid_attrs usage. - ansible-galaxy - make initial call to Galaxy server on-demand only when installing, getting info about, and listing roles. - copy module will no longer move 'non files' set as src when remote_src=true. - display - reduce risk of post-fork output deadlocks (#79522) - jinja2_native: preserve quotes in strings (#79083) - updated error messages to include 'acl' and not just mode changes when failing to set required permissions on remote.- fix boo#1204320 - do no longer exclude %{ansible_python_sitelib}/ansible_test - create subpackage for ansible-test - remove Conflicts for ansible-test- rework spec file to define %ansible_python version, which is the python version, that ansible is built against, as well as %ansible_python_sitelib - remove duplicate entries for changelog and license - fix wrong %fdupes- add version contraints for both Requires and BuildRequires, that upstream defines: https://github.com/ansible/ansible/blob/devel/requirements.txt- update to 2.14.0: Full changelog https://github.com/ansible/ansible/blob/v2.14.0/changelogs/CHANGELOG-v2.14.rst- update to 2.13.6: Changelog https://github.com/ansible/ansible/blob/v2.13.6/changelogs/CHANGELOG-v2.13.rst * Minor Changes - ansible-test - Improve consistency of version specific documentation links. * Bugfixes - BSD network facts - Do not assume column indexes, look for netmask and broadcast for determining the correct columns when parsing inet line (#79117) - ansible-galaxy - make initial call to Galaxy server on-demand only when installing, getting info about, and listing roles. - ansible-test - Add wheel < 0.38.0 constraint for Python 3.6 and earlier. - ansible-test - Fix broken documentation link for aws test plugin error messages. - copy module will no longer move 'non files' set as src when remote_src=true. - file lookup now handles missing files more gracefully. - service_facts - Use python re to parse service output instead of grep (#78541) - updated error messages to include 'acl' and not just mode changes when failing to set required permissions on remote.- update to 2.13.5: Changelog https://github.com/ansible/ansible/blob/v2.13.5/changelogs/CHANGELOG-v2.13.rst * Bugfixes - ansible-galaxy - remove extra server api call during dependency resolution for requirements and dependencies that are already satisfied (#77443). - ansible-test - Allow disabled, unsupported, unstable and destructive integration test targets to be selected using their respective prefixes. - ansible-test - Allow unstable tests to run when targeted changes are made and the --allow-unstable-changed option is specified (resolves #74213). - apt - Fix module failure when a package is not installed and only_upgrade=True. Skip that package and check the remaining requested packages for upgrades. (#78762) - apt module should not traceback on invalid type given as package. issue 78663. - known_hosts - do not return changed status when a non-existing key is removed (#78598) - paramiko - Add back support for ssh_args, ssh_common_args, and ssh_extra_args for parsing the ProxyCommand (#78750) - plugin loader, fix detection for existing configuration before initializing for a plugin- Remove unneeded BuildRequires on python3-mock- add Conflict with ansible-test- update to 2.13.4: Changelog https://github.com/ansible/ansible/blob/v2.13.4/changelogs/CHANGELOG-v2.13.rst * Bugfixes - Fix for network_cli not getting all relevant connection options - ansible-galaxy - Fix detection of --role-file in arguments for implicit role invocation (#78204) - ansible-galaxy - Fix exit codes for role search and delete (#78516) - ansible-test - Fix change detection for ansible-test's own integration tests. - ansible-test - ansible-doc sanity test - Correctly determine the fully-qualified collection name for plugins in subdirectories, resolving #78490. - apt - don't actually update the cache in check mode with update_cache=true. - apt - don't mark existing packages as manually installed in check mode (#66413). - apt - fix package selection to include /etc/apt/preferences(.d) (#77969) - urls - Guard imports of urllib3 by catching Exception instead of ImportError to prevent exceptions in the import process of optional dependencies from preventing use of urls.py (#78648) - wait_for - Read file and perform comparisons using bytes to avoid decode errors (#78214)- update to 2.13.3: Changelog https://github.com/ansible/ansible/blob/v2.13.3/changelogs/CHANGELOG-v2.13.rst * Bugfixes - Avoid 'unreachable' error when chmod on AIX has 255 as return code. - Fix PluginLoader to mimic Python import machinery by adding module to sys.modules before exec - Fix dnf module documentation to indicate that comparison operators for package version require spaces around them (#78295) - ansible-connection - decrypt vaulted parameters before sending over the socket, as vault secrets are not available on the other side. - ansible-galaxy - Fix reinitializing the whole collection directory with ansible-galaxy collection init ns.coll --force. Now directories and files that are not included in the collection skeleton will be removed. - ansible-galaxy - do not require mandatory keys in the galaxy.yml of source collections when listing them (#70180). - ansible-galaxy - fix listing collections that contains metadata but the namespace or name are not strings. - ansible-galaxy - fix setting the cache for paginated responses from Galaxy NG/AH (#77911). - ansible-test - Delegation for commands which generate output for programmatic consumption no longer redirect all output to stdout. The affected commands and options are shell, sanity --lint, sanity --list-tests, integration --list-targets, coverage analyze - ansible-test - Delegation now properly handles arguments given after -- on the command line. - ansible-test - Test configuration for collections is now parsed only once, prior to delegation. Fixes issue: #78334 - ansible-test - The shell command no longer redirects all output to stdout when running a provided command. Any command output written to stderr will be mixed with the stderr output from ansible-test. - ansible-test - The shell command no longer requests a TTY when using delegation unless an interactive shell is being used. An interactive shell is the default behavior when no command is given to pass to the shell. - dnf - fix output parsing on systems with LANGUAGE set to a language other than English (#78193) - if a config setting prevents running ansible it should at least show it's "origin". - prevent type annotation shim failures from causing runtime failures (#77860) - template module/lookup - fix convert_data option that was effectively always set to True for Jinja macros (#78141) - uri - properly use uri parameter use_proxy (#58632) - yum - fix traceback when releasever is specified with latest (#78058)- package conflicts with ansible < 3, i.e. the old packaging scheme- update to 2.13.2: * Minor Changes - ansible-test - An improved error message is shown when the download of a pip bootstrap script fails. The download now uses urllib2 instead of urllib on Python 2. * Bugfixes - Move undefined check from concat to finalize (#78156) - ansible-doc - no longer list module and plugin aliases that are created with symlinks (#78137). - ansible-doc - when listing modules in collections, proceed recursively. This fixes module listing for community.general 5.x.y and community.network 4.x.y (#78137). - ansible-doc will not add 'website for' in ":ref:" substitutions as it made them confusing. - file backed cache plugins now handle concurrent access by making atomic updates to the files. - password lookup does not ignore k=v arguments anymore. - user - Fix error "Permission denied" in user module while generating SSH keys (#78017). - update to 2.13.1: * Minor Changes - Add an 'action_plugin' field for modules in runtime.yml plugin_routing. This fixes module_defaults by supporting modules-as-redirected-actions without redirecting module_defaults entries to the common action. With the runtime.yml above for ns.coll, a task such as will end up with defaults for eos_facts and eos_command since both modules redirect to the same action. To select an action plugin for a module without merging module_defaults, define an action_plugin field for the resolved module in the runtime.yml. The action_plugin field can be a redirected action plugin, as it is resolved normally. Using the modified runtime.yml, the example task will only use the ns.coll.eos_facts defaults. - ansible-galaxy - Support resolvelib versions 0.6.x, 0.7.x, and 0.8.x. The full range of supported versions is now >= 0.5.3, < 0.9.0. - ansible-test - Add RHEL 9.0 remote support. - ansible-test - Add support for Ubuntu VMs using the --remote option. - ansible-test - Add support for exporting inventory with ansible-test shell --export {path}. - ansible-test - Add support for multi-arch remotes. - ansible-test - Add support for running non-interactive commands with ansible-test shell. - ansible-test - Avoid using the mock_use_standalone_module setting for unit tests running on Python 3.8 or later. - ansible-test - Blocking mode is now enforced for stdin, stdout and stderr. If any of these are non-blocking then ansible-test will exit during startup with an error. - ansible-test - Improve consistency of output messages by using stdout or stderr for most output, but not both. - ansible-test - The shell command can be used outside a collection if no controller delegation is required. * Bugfixes - Add PyYAML >= 5.1 as a dependency of ansible-core to be compatible with Python 3.8+. - ansible-config dump - Only display plugin type headers when plugin options are changed if --only-changed is specified. - ansible-galaxy - handle unsupported versions of resolvelib gracefully. - ansible-test - Fix internal validation of remote completion configuration. - ansible-test - Prevent --target- prefixed options for the shell command from being combined with legacy environment options. - ansible-test - Sanity test output with the --lint option is no longer mixed in with bootstrapping output. - ansible-test - Subprocesses are now isolated from the stdin, stdout and stderr of ansible-test. This avoids issues with subprocesses tampering with the file descriptors, such as SSH making them non-blocking. As a result of this change, subprocess output from unit and integration tests on stderr now go to stdout. - ansible-test - Subprocesses no longer have access to the TTY ansible-test is connected to, if any. This maintains consistent behavior between local testing and CI systems, which typically do not provide a TTY. Tests which require a TTY should use pexpect or another mechanism to create a PTY. - apt module now correctly handles virtual packages. - lookup plugin - catch KeyError when lookup returns dictionary (#77789). - pip - fix cases where resolution of pip Python module fails when importlib.util has not already been imported - plugin loader - Sort results when fuzzy matching plugin names (#77966). - plugin loader will now load config data for plugin by name instead of by file to avoid issues with the same file being loaded under different names (fqcn + short name). - psrp connection now handles default to inventory_hostname correctly. - winrm connection now handles default to inventory_hostname correctly. - update to 2.13.0: Full changelog see https://github.com/ansible/ansible/blob/stable-2.13/changelogs/CHANGELOG-v2.13.rst#v2130 - update to 2.12.7: * Minor Changes - Add an 'action_plugin' field for modules in runtime.yml plugin_routing. This fixes module_defaults by supporting modules-as-redirected-actions without redirecting module_defaults entries to the common action. With the runtime.yml above for ns.coll, a task such as will end up with defaults for eos_facts and eos_command since both modules redirect to the same action. To select an action plugin for a module without merging module_defaults, define an action_plugin field for the resolved module in the runtime.yml. The action_plugin field can be a redirected action plugin, as it is resolved normally. Using the modified runtime.yml, the example task will only use the ns.coll.eos_facts defaults. - ansible-test - Avoid using the mock_use_standalone_module setting for unit tests running on Python 3.8 or later. * Bugfixes - pip - fix cases where resolution of pip Python module fails when importlib.util has not already been imported - plugin loader - Sort results when fuzzy matching plugin names (#77966). - update to 2.12.6: * Bugfixes - Prevent losing unsafe on results returned from lookups (#77535) - arg_spec - Fix incorrect no_log warning when a parameter alias is used (#77576) - plugin loader will now load config data for plugin by name instead of by file to avoid issues with the same file being loaded under different names (fqcn + short name). - variablemanager, more efficient read of vars files - update to 2.12.5: * Bugfixes - Ansible.ModuleUtils.SID - Use user principal name as is for lookup in the Convert-ToSID function - #77316 - Fix traceback when installing a collection from a git repository and git is not installed (#77479). - ansible-test - Correctly detect when running as the root user (UID 0) on the origin host. The result of the detection was incorrectly being inverted. - ansible-test - Fix skipping of tests marked needs/python on the origin host. - ansible-test - Fix skipping of tests marked needs/root on the origin host. - ansible-test compile sanity test - do not crash if a column could not be determined for an error (#77465). - hostname - use file_get_content() to read the file containing the host name in the FileStrategy.get_permanent_hostname() method. This prevents a TypeError from being raised when the strategy is used (#77025). - script - skip in check mode since the plugin cannot determine if a change will occur. - shell/command - only skip in check mode if the options creates and removes are both None. - winrm - Ensure kinit is run with the same PATH env var as the Ansible process- first version of package ansible-core at version 2.12.4h04-ch1a 1748337542  !"#$%&'()*+,-./0123456789:;<=>>@@BBDDFFHIJKLMNNPPRRTTVVXXZZ\]^^``bbddffhijjllnnpprrttvvxxzz|}~~      !"#$%&''))++--//113456789:;;=>?@@BBDDFFHHJJLMNOOQRSTTVVXXZZ\\^^`abcdefghijklmmopqrrttvvxxzz||~9     !!##%%'()*+,--//113355789:;<=>?@ABCDEFGHIIKLMNOOQQSSUUWWYY[[]]__aacceeggiiklmnopqqstuvwxyz{|}~z|xG     !"#$%2.18.3-150400.9.9.4    !! ""############"$$%%$&&''''''''''''&&&&&""""" (()) **++++++++++++*,,----------------------------------,,,,,,,,,,,,,,,,***** ..//////////////////////////............ 0011 2233 4455555544 6677776 88998::;;;;;;;;:::8<<==========<<<< >>??>@ABCCCCCCCCCCCCCCCCCCCCCCCCCCCCBBBBBDEEDBBBBBBBBBBBBBBBBBBBBBBBBAFGGFAHAIIAJKKKKKJLMMMMMMMMLLLLANAOPPOOQQRRRRRRRRRRQQQQQASTTSUUUS@VWWWWVVV>XXYYXZ[[ZX\]]\X^__^^X`abbbbbbaaaXcdeedcfggfXhiiiiiihhhhhXjkkkkjjllllllllllllllansible-testansible_test__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pyc_dataansible.cfgcompletiondocker.txtnetwork.txtremote.txtwindows.txtcoveragercplaybooksposix_coverage_setup.ymlposix_coverage_teardown.ymlposix_hosts_prepare.ymlposix_hosts_restore.ymlpypi_proxy_prepare.ymlpypi_proxy_restore.ymlwindows_coverage_setup.ymlwindows_coverage_teardown.ymlwindows_hosts_prepare.ps1windows_hosts_prepare.ymlwindows_hosts_restore.ps1windows_hosts_restore.ymlpytestconfigdefault.inilegacy.inirequirementsansible-test.txtansible.txtconstraints.txtsanity.ansible-doc.insanity.ansible-doc.txtsanity.changelog.insanity.changelog.txtsanity.import.insanity.import.plugin.insanity.import.plugin.txtsanity.import.txtsanity.integration-aliases.insanity.integration-aliases.txtsanity.pep8.insanity.pep8.txtsanity.pslint.ps1sanity.pylint.insanity.pylint.txtsanity.runtime-metadata.insanity.runtime-metadata.txtsanity.validate-modules.insanity.validate-modules.txtsanity.yamllint.insanity.yamllint.txtunits.txtwindows-integration.txt_internal__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pycansible_util.cpython-311.opt-1.pycansible_util.cpython-311.pycbecome.cpython-311.opt-1.pycbecome.cpython-311.pycbootstrap.cpython-311.opt-1.pycbootstrap.cpython-311.pyccache.cpython-311.opt-1.pyccache.cpython-311.pyccgroup.cpython-311.opt-1.pyccgroup.cpython-311.pyccompletion.cpython-311.opt-1.pyccompletion.cpython-311.pycconfig.cpython-311.opt-1.pycconfig.cpython-311.pycconnections.cpython-311.opt-1.pycconnections.cpython-311.pycconstants.cpython-311.opt-1.pycconstants.cpython-311.pyccontainers.cpython-311.opt-1.pyccontainers.cpython-311.pyccontent_config.cpython-311.opt-1.pyccontent_config.cpython-311.pyccore_ci.cpython-311.opt-1.pyccore_ci.cpython-311.pyccoverage_util.cpython-311.opt-1.pyccoverage_util.cpython-311.pycdata.cpython-311.opt-1.pycdata.cpython-311.pycdelegation.cpython-311.opt-1.pycdelegation.cpython-311.pycdiff.cpython-311.opt-1.pycdiff.cpython-311.pycdocker_util.cpython-311.opt-1.pycdocker_util.cpython-311.pycencoding.cpython-311.opt-1.pycencoding.cpython-311.pycexecutor.cpython-311.opt-1.pycexecutor.cpython-311.pycgit.cpython-311.opt-1.pycgit.cpython-311.pychost_configs.cpython-311.opt-1.pychost_configs.cpython-311.pychost_profiles.cpython-311.opt-1.pychost_profiles.cpython-311.pychttp.cpython-311.opt-1.pychttp.cpython-311.pycinit.cpython-311.opt-1.pycinit.cpython-311.pycinventory.cpython-311.opt-1.pycinventory.cpython-311.pycio.cpython-311.opt-1.pycio.cpython-311.pycjunit_xml.cpython-311.opt-1.pycjunit_xml.cpython-311.pyclocale_util.cpython-311.opt-1.pyclocale_util.cpython-311.pycmetadata.cpython-311.opt-1.pycmetadata.cpython-311.pycpayload.cpython-311.opt-1.pycpayload.cpython-311.pycprovisioning.cpython-311.opt-1.pycprovisioning.cpython-311.pycpypi_proxy.cpython-311.opt-1.pycpypi_proxy.cpython-311.pycpython_requirements.cpython-311.opt-1.pycpython_requirements.cpython-311.pycssh.cpython-311.opt-1.pycssh.cpython-311.pyctarget.cpython-311.opt-1.pyctarget.cpython-311.pyctest.cpython-311.opt-1.pyctest.cpython-311.pycthread.cpython-311.opt-1.pycthread.cpython-311.pyctimeout.cpython-311.opt-1.pyctimeout.cpython-311.pycutil.cpython-311.opt-1.pycutil.cpython-311.pycutil_common.cpython-311.opt-1.pycutil_common.cpython-311.pycvenv.cpython-311.opt-1.pycvenv.cpython-311.pycansible_util.pybecome.pybootstrap.pycache.pycgroup.pyci__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pycazp.cpython-311.opt-1.pycazp.cpython-311.pyclocal.cpython-311.opt-1.pyclocal.cpython-311.pycazp.pylocal.pyclassification__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pyccommon.cpython-311.opt-1.pyccommon.cpython-311.pyccsharp.cpython-311.opt-1.pyccsharp.cpython-311.pycpowershell.cpython-311.opt-1.pycpowershell.cpython-311.pycpython.cpython-311.opt-1.pycpython.cpython-311.pyccommon.pycsharp.pypowershell.pypython.pycli__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pycactions.cpython-311.opt-1.pycactions.cpython-311.pyccompat.cpython-311.opt-1.pyccompat.cpython-311.pyccompleters.cpython-311.opt-1.pyccompleters.cpython-311.pycconverters.cpython-311.opt-1.pycconverters.cpython-311.pycenvironments.cpython-311.opt-1.pycenvironments.cpython-311.pycepilog.cpython-311.opt-1.pycepilog.cpython-311.pycactions.pyargparsing__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pycactions.cpython-311.opt-1.pycactions.cpython-311.pycargcompletion.cpython-311.opt-1.pycargcompletion.cpython-311.pycparsers.cpython-311.opt-1.pycparsers.cpython-311.pycactions.pyargcompletion.pyparsers.pycommands__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pycenv.cpython-311.opt-1.pycenv.cpython-311.pycsanity.cpython-311.opt-1.pycsanity.cpython-311.pycshell.cpython-311.opt-1.pycshell.cpython-311.pycunits.cpython-311.opt-1.pycunits.cpython-311.pyccoverage__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pyccombine.cpython-311.opt-1.pyccombine.cpython-311.pycerase.cpython-311.opt-1.pycerase.cpython-311.pychtml.cpython-311.opt-1.pychtml.cpython-311.pycreport.cpython-311.opt-1.pycreport.cpython-311.pycxml.cpython-311.opt-1.pycxml.cpython-311.pycanalyze__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pyctargets__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pyccombine.cpython-311.opt-1.pyccombine.cpython-311.pycexpand.cpython-311.opt-1.pycexpand.cpython-311.pycfilter.cpython-311.opt-1.pycfilter.cpython-311.pycgenerate.cpython-311.opt-1.pycgenerate.cpython-311.pycmissing.cpython-311.opt-1.pycmissing.cpython-311.pyccombine.pyexpand.pyfilter.pygenerate.pymissing.pycombine.pyerase.pyhtml.pyreport.pyxml.pyenv.pyintegration__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pycnetwork.cpython-311.opt-1.pycnetwork.cpython-311.pycposix.cpython-311.opt-1.pycposix.cpython-311.pycwindows.cpython-311.opt-1.pycwindows.cpython-311.pycnetwork.pyposix.pywindows.pysanity.pyshell.pyunits.pycompat.pycompleters.pyconverters.pyenvironments.pyepilog.pyparsers__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pycbase_argument_parsers.cpython-311.opt-1.pycbase_argument_parsers.cpython-311.pychelpers.cpython-311.opt-1.pychelpers.cpython-311.pychost_config_parsers.cpython-311.opt-1.pychost_config_parsers.cpython-311.pyckey_value_parsers.cpython-311.opt-1.pyckey_value_parsers.cpython-311.pycvalue_parsers.cpython-311.opt-1.pycvalue_parsers.cpython-311.pycbase_argument_parsers.pyhelpers.pyhost_config_parsers.pykey_value_parsers.pyvalue_parsers.pycommands__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pyccoverage__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pyccombine.cpython-311.opt-1.pyccombine.cpython-311.pycerase.cpython-311.opt-1.pycerase.cpython-311.pychtml.cpython-311.opt-1.pychtml.cpython-311.pycreport.cpython-311.opt-1.pycreport.cpython-311.pycxml.cpython-311.opt-1.pycxml.cpython-311.pycanalyze__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pyctargets__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pyccombine.cpython-311.opt-1.pyccombine.cpython-311.pycexpand.cpython-311.opt-1.pycexpand.cpython-311.pycfilter.cpython-311.opt-1.pycfilter.cpython-311.pycgenerate.cpython-311.opt-1.pycgenerate.cpython-311.pycmissing.cpython-311.opt-1.pycmissing.cpython-311.pyccombine.pyexpand.pyfilter.pygenerate.pymissing.pycombine.pyerase.pyhtml.pyreport.pyxml.pyenv__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pycintegration__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pyccoverage.cpython-311.opt-1.pyccoverage.cpython-311.pycfilters.cpython-311.opt-1.pycfilters.cpython-311.pycnetwork.cpython-311.opt-1.pycnetwork.cpython-311.pycposix.cpython-311.opt-1.pycposix.cpython-311.pycwindows.cpython-311.opt-1.pycwindows.cpython-311.pyccloud__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pycacme.cpython-311.opt-1.pycacme.cpython-311.pycaws.cpython-311.opt-1.pycaws.cpython-311.pycazure.cpython-311.opt-1.pycazure.cpython-311.pyccloudscale.cpython-311.opt-1.pyccloudscale.cpython-311.pyccs.cpython-311.opt-1.pyccs.cpython-311.pycdigitalocean.cpython-311.opt-1.pycdigitalocean.cpython-311.pycgalaxy.cpython-311.opt-1.pycgalaxy.cpython-311.pycgcp.cpython-311.opt-1.pycgcp.cpython-311.pychcloud.cpython-311.opt-1.pychcloud.cpython-311.pychttptester.cpython-311.opt-1.pychttptester.cpython-311.pycnios.cpython-311.opt-1.pycnios.cpython-311.pycopennebula.cpython-311.opt-1.pycopennebula.cpython-311.pycopenshift.cpython-311.opt-1.pycopenshift.cpython-311.pycscaleway.cpython-311.opt-1.pycscaleway.cpython-311.pycvcenter.cpython-311.opt-1.pycvcenter.cpython-311.pycvultr.cpython-311.opt-1.pycvultr.cpython-311.pycacme.pyaws.pyazure.pycloudscale.pycs.pydigitalocean.pygalaxy.pygcp.pyhcloud.pyhttptester.pynios.pyopennebula.pyopenshift.pyscaleway.pyvcenter.pyvultr.pycoverage.pyfilters.pynetwork.pyposix.pywindows.pysanity__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pycansible_doc.cpython-311.opt-1.pycansible_doc.cpython-311.pycbin_symlinks.cpython-311.opt-1.pycbin_symlinks.cpython-311.pyccompile.cpython-311.opt-1.pyccompile.cpython-311.pycignores.cpython-311.opt-1.pycignores.cpython-311.pycimport.cpython-311.opt-1.pycimport.cpython-311.pycintegration_aliases.cpython-311.opt-1.pycintegration_aliases.cpython-311.pycpep8.cpython-311.opt-1.pycpep8.cpython-311.pycpslint.cpython-311.opt-1.pycpslint.cpython-311.pycpylint.cpython-311.opt-1.pycpylint.cpython-311.pycshellcheck.cpython-311.opt-1.pycshellcheck.cpython-311.pycvalidate_modules.cpython-311.opt-1.pycvalidate_modules.cpython-311.pycyamllint.cpython-311.opt-1.pycyamllint.cpython-311.pycansible_doc.pybin_symlinks.pycompile.pyignores.pyimport.pyintegration_aliases.pypep8.pypslint.pypylint.pyshellcheck.pyvalidate_modules.pyyamllint.pyshell__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pycunits__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pyccompat__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pycpackaging.cpython-311.opt-1.pycpackaging.cpython-311.pycyaml.cpython-311.opt-1.pycyaml.cpython-311.pycpackaging.pyyaml.pycompletion.pyconfig.pyconnections.pyconstants.pycontainers.pycontent_config.pycore_ci.pycoverage_util.pydata.pydelegation.pydev__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pyccontainer_probe.cpython-311.opt-1.pyccontainer_probe.cpython-311.pyccontainer_probe.pydiff.pydocker_util.pyencoding.pyexecutor.pygit.pyhost_configs.pyhost_profiles.pyhttp.pyinit.pyinventory.pyio.pyjunit_xml.pylocale_util.pymetadata.pypayload.pyprovider__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pyclayout__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pycansible.cpython-311.opt-1.pycansible.cpython-311.pyccollection.cpython-311.opt-1.pyccollection.cpython-311.pycunsupported.cpython-311.opt-1.pycunsupported.cpython-311.pycansible.pycollection.pyunsupported.pysource__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pycgit.cpython-311.opt-1.pycgit.cpython-311.pycinstalled.cpython-311.opt-1.pycinstalled.cpython-311.pycunsupported.cpython-311.opt-1.pycunsupported.cpython-311.pycunversioned.cpython-311.opt-1.pycunversioned.cpython-311.pycgit.pyinstalled.pyunsupported.pyunversioned.pyprovisioning.pypypi_proxy.pypython_requirements.pyssh.pytarget.pytest.pythread.pytimeout.pyutil.pyutil_common.pyvenv.py_util__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pyccontrollersanitycode-smell__pycache__action-plugin-docs.cpython-311.opt-1.pycaction-plugin-docs.cpython-311.pycchangelog.cpython-311.opt-1.pycchangelog.cpython-311.pycempty-init.cpython-311.opt-1.pycempty-init.cpython-311.pycline-endings.cpython-311.opt-1.pycline-endings.cpython-311.pycno-assert.cpython-311.opt-1.pycno-assert.cpython-311.pycno-get-exception.cpython-311.opt-1.pycno-get-exception.cpython-311.pycno-illegal-filenames.cpython-311.opt-1.pycno-illegal-filenames.cpython-311.pycno-smart-quotes.cpython-311.opt-1.pycno-smart-quotes.cpython-311.pycreplace-urlopen.cpython-311.opt-1.pycreplace-urlopen.cpython-311.pycruntime-metadata.cpython-311.opt-1.pycruntime-metadata.cpython-311.pycshebang.cpython-311.opt-1.pycshebang.cpython-311.pycsymlinks.cpython-311.opt-1.pycsymlinks.cpython-311.pycuse-argspec-type-path.cpython-311.opt-1.pycuse-argspec-type-path.cpython-311.pycuse-compat-six.cpython-311.opt-1.pycuse-compat-six.cpython-311.pycaction-plugin-docs.jsonaction-plugin-docs.pychangelogchangelog.jsonchangelog.py__pycache__sphinx.cpython-311.opt-1.pycsphinx.cpython-311.pycsphinx.pyempty-init.jsonempty-init.pyline-endings.jsonline-endings.pyno-assert.jsonno-assert.pyno-get-exception.jsonno-get-exception.pyno-illegal-filenames.jsonno-illegal-filenames.pyno-smart-quotes.jsonno-smart-quotes.pyreplace-urlopen.jsonreplace-urlopen.pyruntime-metadata.jsonruntime-metadata.pyshebang.jsonshebang.pysymlinks.jsonsymlinks.pyuse-argspec-type-path.jsonuse-argspec-type-path.pyuse-compat-six.jsonuse-compat-six.pyintegration-aliases__pycache__yaml_to_json.cpython-311.opt-1.pycyaml_to_json.cpython-311.pycyaml_to_json.pypep8current-ignore.txtpslintpslint.ps1settings.psd1pylintconfigansible-test-target.cfgansible-test.cfgcode-smell.cfgcollection.cfgdefault.cfgplugins__pycache__deprecated.cpython-311.opt-1.pycdeprecated.cpython-311.pychide_unraisable.cpython-311.opt-1.pychide_unraisable.cpython-311.pycstring_format.cpython-311.opt-1.pycstring_format.cpython-311.pycunwanted.cpython-311.opt-1.pycunwanted.cpython-311.pycdeprecated.pyhide_unraisable.pystring_format.pyunwanted.pyshellcheckexclude.txtvalidate-modules__pycache__validate.cpython-311.opt-1.pycvalidate.cpython-311.pycvalidate.pyvalidate_modules__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pycmain.cpython-311.opt-1.pycmain.cpython-311.pycmodule_args.cpython-311.opt-1.pycmodule_args.cpython-311.pycschema.cpython-311.opt-1.pycschema.cpython-311.pycutils.cpython-311.opt-1.pycutils.cpython-311.pycmain.pymodule_args.pyps_argspec.ps1schema.pyutils.pyyamllint__pycache__yamllinter.cpython-311.opt-1.pycyamllinter.cpython-311.pycconfigdefault.ymlmodules.ymlplugins.ymlyamllinter.pytools__pycache__collection_detail.cpython-311.opt-1.pyccollection_detail.cpython-311.pycyaml_to_json.cpython-311.opt-1.pycyaml_to_json.cpython-311.pyccollection_detail.pycoverage_stub.ps1yaml_to_json.pytarget__init__.py__pycache____init__.cpython-311.opt-1.pyc__init__.cpython-311.pyccli__pycache__ansible_test_cli_stub.cpython-311.opt-1.pycansible_test_cli_stub.cpython-311.pycansible_test_cli_stub.pycommon__pycache__constants.cpython-311.opt-1.pycconstants.cpython-311.pycconstants.pyinjector__pycache__python.cpython-311.opt-1.pycpython.cpython-311.pycpython.pyvirtualenv.shpytestplugins__pycache__ansible_forked.cpython-311.opt-1.pycansible_forked.cpython-311.pycansible_pytest_collections.cpython-311.opt-1.pycansible_pytest_collections.cpython-311.pycansible_pytest_coverage.cpython-311.opt-1.pycansible_pytest_coverage.cpython-311.pycansible_forked.pyansible_pytest_collections.pyansible_pytest_coverage.pysanitycompile__pycache__compile.cpython-311.opt-1.pyccompile.cpython-311.pyccompile.pyimport__pycache__importer.cpython-311.opt-1.pycimporter.cpython-311.pycimporter.pysetup__pycache__probe_cgroups.cpython-311.opt-1.pycprobe_cgroups.cpython-311.pycquiet_pip.cpython-311.opt-1.pycquiet_pip.cpython-311.pycrequirements.cpython-311.opt-1.pycrequirements.cpython-311.pycbootstrap.shcheck_systemd_cgroup_v1.shprobe_cgroups.pyquiet_pip.pyrequirements.pytools__pycache__virtualenvcheck.cpython-311.opt-1.pycvirtualenvcheck.cpython-311.pycyamlcheck.cpython-311.opt-1.pycyamlcheck.cpython-311.pycvirtualenvcheck.pyyamlcheck.pyconfigcloud-config-aws.ini.templatecloud-config-azure.ini.templatecloud-config-cloudscale.ini.templatecloud-config-cs.ini.templatecloud-config-gcp.ini.templatecloud-config-hcloud.ini.templatecloud-config-opennebula.ini.templatecloud-config-openshift.kubeconfig.templatecloud-config-scaleway.ini.templatecloud-config-vcenter.ini.templatecloud-config-vultr.ini.templateconfig.ymlinventory.networking.templateinventory.winrm.template/usr/bin//usr/lib/python3.11/site-packages//usr/lib/python3.11/site-packages/ansible_test//usr/lib/python3.11/site-packages/ansible_test/__pycache__//usr/lib/python3.11/site-packages/ansible_test/_data//usr/lib/python3.11/site-packages/ansible_test/_data/completion//usr/lib/python3.11/site-packages/ansible_test/_data/playbooks//usr/lib/python3.11/site-packages/ansible_test/_data/pytest//usr/lib/python3.11/site-packages/ansible_test/_data/pytest/config//usr/lib/python3.11/site-packages/ansible_test/_data/requirements//usr/lib/python3.11/site-packages/ansible_test/_internal//usr/lib/python3.11/site-packages/ansible_test/_internal/__pycache__//usr/lib/python3.11/site-packages/ansible_test/_internal/ci//usr/lib/python3.11/site-packages/ansible_test/_internal/ci/__pycache__//usr/lib/python3.11/site-packages/ansible_test/_internal/classification//usr/lib/python3.11/site-packages/ansible_test/_internal/classification/__pycache__//usr/lib/python3.11/site-packages/ansible_test/_internal/cli//usr/lib/python3.11/site-packages/ansible_test/_internal/cli/__pycache__//usr/lib/python3.11/site-packages/ansible_test/_internal/cli/argparsing//usr/lib/python3.11/site-packages/ansible_test/_internal/cli/argparsing/__pycache__//usr/lib/python3.11/site-packages/ansible_test/_internal/cli/commands//usr/lib/python3.11/site-packages/ansible_test/_internal/cli/commands/__pycache__//usr/lib/python3.11/site-packages/ansible_test/_internal/cli/commands/coverage//usr/lib/python3.11/site-packages/ansible_test/_internal/cli/commands/coverage/__pycache__//usr/lib/python3.11/site-packages/ansible_test/_internal/cli/commands/coverage/analyze//usr/lib/python3.11/site-packages/ansible_test/_internal/cli/commands/coverage/analyze/__pycache__//usr/lib/python3.11/site-packages/ansible_test/_internal/cli/commands/coverage/analyze/targets//usr/lib/python3.11/site-packages/ansible_test/_internal/cli/commands/coverage/analyze/targets/__pycache__//usr/lib/python3.11/site-packages/ansible_test/_internal/cli/commands/integration//usr/lib/python3.11/site-packages/ansible_test/_internal/cli/commands/integration/__pycache__//usr/lib/python3.11/site-packages/ansible_test/_internal/cli/parsers//usr/lib/python3.11/site-packages/ansible_test/_internal/cli/parsers/__pycache__//usr/lib/python3.11/site-packages/ansible_test/_internal/commands//usr/lib/python3.11/site-packages/ansible_test/_internal/commands/__pycache__//usr/lib/python3.11/site-packages/ansible_test/_internal/commands/coverage//usr/lib/python3.11/site-packages/ansible_test/_internal/commands/coverage/__pycache__//usr/lib/python3.11/site-packages/ansible_test/_internal/commands/coverage/analyze//usr/lib/python3.11/site-packages/ansible_test/_internal/commands/coverage/analyze/__pycache__//usr/lib/python3.11/site-packages/ansible_test/_internal/commands/coverage/analyze/targets//usr/lib/python3.11/site-packages/ansible_test/_internal/commands/coverage/analyze/targets/__pycache__//usr/lib/python3.11/site-packages/ansible_test/_internal/commands/env//usr/lib/python3.11/site-packages/ansible_test/_internal/commands/env/__pycache__//usr/lib/python3.11/site-packages/ansible_test/_internal/commands/integration//usr/lib/python3.11/site-packages/ansible_test/_internal/commands/integration/__pycache__//usr/lib/python3.11/site-packages/ansible_test/_internal/commands/integration/cloud//usr/lib/python3.11/site-packages/ansible_test/_internal/commands/integration/cloud/__pycache__//usr/lib/python3.11/site-packages/ansible_test/_internal/commands/sanity//usr/lib/python3.11/site-packages/ansible_test/_internal/commands/sanity/__pycache__//usr/lib/python3.11/site-packages/ansible_test/_internal/commands/shell//usr/lib/python3.11/site-packages/ansible_test/_internal/commands/shell/__pycache__//usr/lib/python3.11/site-packages/ansible_test/_internal/commands/units//usr/lib/python3.11/site-packages/ansible_test/_internal/commands/units/__pycache__//usr/lib/python3.11/site-packages/ansible_test/_internal/compat//usr/lib/python3.11/site-packages/ansible_test/_internal/compat/__pycache__//usr/lib/python3.11/site-packages/ansible_test/_internal/dev//usr/lib/python3.11/site-packages/ansible_test/_internal/dev/__pycache__//usr/lib/python3.11/site-packages/ansible_test/_internal/provider//usr/lib/python3.11/site-packages/ansible_test/_internal/provider/__pycache__//usr/lib/python3.11/site-packages/ansible_test/_internal/provider/layout//usr/lib/python3.11/site-packages/ansible_test/_internal/provider/layout/__pycache__//usr/lib/python3.11/site-packages/ansible_test/_internal/provider/source//usr/lib/python3.11/site-packages/ansible_test/_internal/provider/source/__pycache__//usr/lib/python3.11/site-packages/ansible_test/_util//usr/lib/python3.11/site-packages/ansible_test/_util/__pycache__//usr/lib/python3.11/site-packages/ansible_test/_util/controller//usr/lib/python3.11/site-packages/ansible_test/_util/controller/sanity//usr/lib/python3.11/site-packages/ansible_test/_util/controller/sanity/code-smell//usr/lib/python3.11/site-packages/ansible_test/_util/controller/sanity/code-smell/__pycache__//usr/lib/python3.11/site-packages/ansible_test/_util/controller/sanity/code-smell/changelog//usr/lib/python3.11/site-packages/ansible_test/_util/controller/sanity/code-smell/changelog/__pycache__//usr/lib/python3.11/site-packages/ansible_test/_util/controller/sanity/integration-aliases//usr/lib/python3.11/site-packages/ansible_test/_util/controller/sanity/integration-aliases/__pycache__//usr/lib/python3.11/site-packages/ansible_test/_util/controller/sanity/pep8//usr/lib/python3.11/site-packages/ansible_test/_util/controller/sanity/pslint//usr/lib/python3.11/site-packages/ansible_test/_util/controller/sanity/pylint//usr/lib/python3.11/site-packages/ansible_test/_util/controller/sanity/pylint/config//usr/lib/python3.11/site-packages/ansible_test/_util/controller/sanity/pylint/plugins//usr/lib/python3.11/site-packages/ansible_test/_util/controller/sanity/pylint/plugins/__pycache__//usr/lib/python3.11/site-packages/ansible_test/_util/controller/sanity/shellcheck//usr/lib/python3.11/site-packages/ansible_test/_util/controller/sanity/validate-modules//usr/lib/python3.11/site-packages/ansible_test/_util/controller/sanity/validate-modules/__pycache__//usr/lib/python3.11/site-packages/ansible_test/_util/controller/sanity/validate-modules/validate_modules//usr/lib/python3.11/site-packages/ansible_test/_util/controller/sanity/validate-modules/validate_modules/__pycache__//usr/lib/python3.11/site-packages/ansible_test/_util/controller/sanity/yamllint//usr/lib/python3.11/site-packages/ansible_test/_util/controller/sanity/yamllint/__pycache__//usr/lib/python3.11/site-packages/ansible_test/_util/controller/sanity/yamllint/config//usr/lib/python3.11/site-packages/ansible_test/_util/controller/tools//usr/lib/python3.11/site-packages/ansible_test/_util/controller/tools/__pycache__//usr/lib/python3.11/site-packages/ansible_test/_util/target//usr/lib/python3.11/site-packages/ansible_test/_util/target/__pycache__//usr/lib/python3.11/site-packages/ansible_test/_util/target/cli//usr/lib/python3.11/site-packages/ansible_test/_util/target/cli/__pycache__//usr/lib/python3.11/site-packages/ansible_test/_util/target/common//usr/lib/python3.11/site-packages/ansible_test/_util/target/common/__pycache__//usr/lib/python3.11/site-packages/ansible_test/_util/target/injector//usr/lib/python3.11/site-packages/ansible_test/_util/target/injector/__pycache__//usr/lib/python3.11/site-packages/ansible_test/_util/target/pytest//usr/lib/python3.11/site-packages/ansible_test/_util/target/pytest/plugins//usr/lib/python3.11/site-packages/ansible_test/_util/target/pytest/plugins/__pycache__//usr/lib/python3.11/site-packages/ansible_test/_util/target/sanity//usr/lib/python3.11/site-packages/ansible_test/_util/target/sanity/compile//usr/lib/python3.11/site-packages/ansible_test/_util/target/sanity/compile/__pycache__//usr/lib/python3.11/site-packages/ansible_test/_util/target/sanity/import//usr/lib/python3.11/site-packages/ansible_test/_util/target/sanity/import/__pycache__//usr/lib/python3.11/site-packages/ansible_test/_util/target/setup//usr/lib/python3.11/site-packages/ansible_test/_util/target/setup/__pycache__//usr/lib/python3.11/site-packages/ansible_test/_util/target/tools//usr/lib/python3.11/site-packages/ansible_test/_util/target/tools/__pycache__//usr/lib/python3.11/site-packages/ansible_test/config/-fmessage-length=0 -grecord-gcc-switches -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection -gobs://build.suse.de/SUSE:Maintenance:38869/SUSE_SLE-15-SP4_Update/32cf62ab300b8c3380163a0addd4b89b-ansible-core.SUSE_SLE-15-SP4_Updatedrpmxz5noarch-suse-linuxPython script, ASCII text executabledirectoryASCII textemptyPython script, UTF-8 Unicode text executable  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRp<)/M'!/utf-851b60ceeb9edac1ec62354a0750e58900e02d5fd525f0a1465914db290b7c076?7zXZ !t/@ ]"k%d/ ( ͂,/GEW']!Nďt<`Na${ČO޲}n|f.*1*:K8,?z5&/{٨z$j|WA^ %At\Rϭ#ARA4<20:- 1Yj(% J#3| 1phΙ]|_{{+%uUaq~٪(6L0ɗx!A{-Ith#E N_0in4`7wx5EtǕ`i28 k ]*8+* P|HIɲܧ7&y7vxfj, {f?fc7\G>kd,42\>qQ׽>+ { -o y]QȤyT˞7"X;|aIbGdw.;;` 42HHG<_1ӵ?(Vɍy!Y1?i4,Oiy.ѕh TMSc,!fȜq.iho"V!6tK ʄ+Mw>d=?xQj9-Ql 19]׸;Dj4٩r{Gf(hDIŐ Fo}aqDsSK[ۙ/3pu$Frx(xtUUhvHy|*L@驾Wp>rz>eWs]^EBC-`, G LCosfgdrX J@wKX_&,J#_Q=n_ qS0>ssӍYcHF4B3':nK>eem=움 j7 %}׋lÊ6!dlux }d1F}n{NFBn6agSEuiz7G7D s&o3G/}elGP;~q{!'syB! v!?|#Y0ey$~ ę5Y#÷W(ݵ zҭ5`W9~zH x`fl>*4v3aG-(v&bQ zD ==5$:J)ą(r5ލ&`]TUԻOi%R4՗WF~|8uDQu~勥b~%Ç}hKؒq7 I2.P0ø›n?| W޶ex .y+ >m(<p$C!X;: |`HFwBqOPNx 0Ij( dWF0/~|ky>I=iB:}}ȅ%iLh< JTȍij/`[Ml{r;Ѱ^Q^$Ssk4u? pR[QTsþ,@;N1s?Z4 YeLo!Ң[?KrR#~d>X-Apl!PAF`E+R` ,H>~gePZ XMq!Ł)ǴeuC{$, mJmpŠ].VJ,|}(>:q%A=e2BEÈ:s gvyؽ\j; ̍lD.Y(.dPLU}wSjKAK 8 euw&,$z`/;is,elǴsNyA򪵯`F[V !dq]2eZ/eb2-C^ 7H_"o ߌO d.Хp36wkY_ q1Jض"pّ{3舚E\$:F3k ѶobӾ^+,7$e|s4 7JI%I_58x ODF)@yaP?/>,blш`KcϤ}dӣ'>\{ߚ̆G"T3zAҭ_k5\iF &ȺRqnC:Hy]4%OX O,`@ŒѼ J9ϟ%L%T|Yݾ]y`^Ӟe^,!rhF|a@~s%,G,}$M _ڵJѫ;DCG7/BR1?{_BS Bko]=¬^e{ShdFϾ~F6dF]j.Hfsf_L{+B .#|Ildqk 0.D79 lb @5E$AWJ%%{8ı( kZdHjRZrλuGxIT*3zj jә 佱*j`Tތ"ETsƹgXᓢK%2rfBhŠ5m AO,WEI\f1d:ԛ#>tO+g܎9hGIΙiͷ~!\z{ _l?XųBwɫjZ?Fb}?cva+]N#C aE>8En0<#ޱ8jIR$`!&r2젙3I~k _ 6k.Si>)`l2:MqjeL?VYrnq 9@ a4Ah̩gdSPVTԮ+/5a*1&pj`o)H8,vy;;NmX<ڧ|;+ JDtw>qbnG]AĖ͟8j7;Bq3Wz);5^|1pۛ/}\}ۂcwS9 VJZGq*(-fKyTrrܪAu&V{HL]+&ٝD`''4(yLSG,PW6ȫ T3Ei Xã!#`I2uЭ OV:*q.t쟿Z& "7Z}Kx19xby^/5Jvwh{HgA~J~N͟mA4fPsy30%^dN,U1 +`iDHjwWBR{8ꙎI/- +Dw5:`vh]fPq l2_V yEfsvi}dS)rYԳedu02Ɓ[a<1(?b 2ʍ50NPv@5Q f&za!4"A m DEd~m_y/ڄOu27v9P=|ZLGJ_L gωϭmmQ"9M?9L+-o|n}Ӵ8pd8-V/TW1YHe\0?^'|@>I3o,5~+Oʸ@`M\ᶌ*+h+E)ud3AH4q/ur7i[~ѯm~x_B@e߽d_疋ƋX y] 8;L*3[јeսѕ.e01<*1݌Ļ=)zUᛩun ˋ!J!Ӡz]Xٵf["<rt5jG$Ky %E1aj]9[l@/&P" r48b/Q+#1RjS+Gx\$a.&RTI (3OŁ؀ҏ)B̝YX &x8o!Oa$tۘ k.8y cPh!HJv۴M.7w tܜ$`T΄u*yFh eijp兟: 9s5eہ 'q ~jcQ\K[oRFDJHbw&MXwd˙ojS&gcO3n!A=uLc?vl6kR슆eC1E'^ѳ ağ-0DԷ.1$נ-5>s xh},-;B"CZ 2U:i }~F': Xa 5 [׺἗NMق*uv){eov$_'GszJ^Lo+M*73}Bl͐mOfFһ%+g / &&%ۿ#FwmY7qGAZPszE-}Ӟ$bD+񄦖wH+D~A؃X+DSO79YXZRq8CF &C T/k Z61 TgxC ^!GrHG|^(dn!n$"k|PWTǢ.%gnevYcWY]&Yde"J0pDTf0hyM] P}V0.~O Ub}E6}^ms*`J醧d6EY3*p4Y20x)$ 0G 8p&Ұ~%mEaɯ o18}4+Þ Nq"`rjJypil?X6K|/ сZPtёBU5v9cbOŎ ۧR0?IFر:nKEW6izIxYUJq wgINNL7jU_8D)2 >lf )?&Co(s z/BJ}?#1]܂ܧɎ,ґ] Dj+e[7):s̶R@e:f"vΞ?,ՓX ҧ W j]MxM3G/BW+#׌*W.TeFdl+7]_T@U|bTõmU =A4&ASVHJJ\Ekq8 YZ