m3T      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~SafeNone2T None%&OTAn implementation of REST" functor based on http-client and IO None2TNone!"59; Floating IPs Bhttps://developers.digitalocean.com/documentation/v2/#floating-ips Type of Domain zone file entries Dhttps://developers.digitalocean.com/documentation/v2/#domain-records)Enumeration of possible DNS records types'Type of Domain zones =https://developers.digitalocean.com/documentation/v2/#domains6kType of action status This is returned when action is initiated or when status of some action is requested@Type of Size objects ;https://developers.digitalocean.com/documentation/v2/#sizesM Type of SSH Keys >https://developers.digitalocean.com/documentation/v2/#ssh-keysSType of droplet images <https://developers.digitalocean.com/documentation/v2/#imagesb(Partial) Type of Droplets >https://developers.digitalocean.com/documentation/v2/#dropletsq"Type of Networks configured for a Droplet}A network is either a list of IPv4 and IPv6 NICs definitions, or no network. We need this because a droplet can contain an 'empty' networks JSON Object entry, instead of null.x#Type of a single Network definitionThis type is parameterized with a phantom type which lifts the network address type at the type level (could use DataKinds extension...). This allows distinguishing types of of networks while using same parsing.MA type for various sizes Type parameter is used to define number's magnitude&Enumeration of all possible size slugsA type for describing Regiona A region can be assigned an empty object when it is undefined, or be referenced simply by its slug =https://developers.digitalocean.com/documentation/v2/#regions[String representation of size slugs This maps to corresponding expected JSON string value.  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNQOPRSTUVWXYZ[\]^_`abcfedghijklmnopqrstuvwxyz{|}~\   !"#$%&'()*+,-./0123456 789:;<=>?@ ABCDEFGHIJKLMNOPQRS TUVWXYZ[\]^_`abcdefghijklmnopqrstuvwx yz{|}~{}~       !"#$%&'()None!"9;*+,-./0123456789:;<=>?@ABCDEFG*+*+,-./0123456789:;<=>?@ABCDEFGSafe+,-9;<=?DOQRTHIJKLMNOPQRSTUVWXYZ[\HIJKLMNOPQRSTUVHIJKLMNOPQRSTUVWXYZ[\L2M1 None:<=])Extract a typed result from a JSON output ^_`abcdef] ^_`abcdef]^_`abcdef] Safeghgh None29;<=ijklmnopqrstuvwxyzijklmnopqrstuvwxy ijklmnopqrstuvwxyz None!":<=T{|}~{|}~ None29;<=ijklmnopqrstuvwxyNone!"$#Lookup (first) public IP for given Droplet , if any.4Find the first droplet that matches given Id or nameNone29;<=Comonadic interpreter for DropletCommandsAvailable commands for droplets  None!":<=T  None29;<= None!":<=T  NoneNone29;<= None !":<=QRTNoneQRTJRun DO actions, extracting authentication token from environment variable  AUTH_TOKEN.5Run DO actions, passing a built authentication token.IRun DO actions, debugging requests, passing a built authentication token.  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNQOPRSTUVWXYZ[\]^_`abcfedghijklmnopqrstuvwxyz{|}~xyz{|}~{}~wvqrstubcdefghijklmnop^_`aSTUVWXYZ[\]MNOPQRLK@ABCDEFGHIJ6789:;<=>?2345./01*+,-'()"#$%& !  !"##$%&'()*+,-./0123445567899:;<=>?@ABCDEFGGHIJKLMNOPPQRSTUVWXYZ[\\]^_`aabcdefghijklmnoopqrstuvwxyz{|}}~       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_` a b c d e f g h i j k l m n n o p q r s t u v w x y z { | } ~   hdo-0.4-Bz21p01hFox6nhqLUe6CTN Network.DO Network.SSHNetwork.REST.CommandsNetwork.REST.Conduit Network.RESTNetwork.DO.TypesNetwork.DO.PrettyNetwork.DO.PairingNetwork.DO.Net.CommonNetwork.DO.NamesNetwork.DO.IP.CommandsNetwork.DO.IP.Net Network.DO.IPNetwork.DO.Droplets.UtilsNetwork.DO.Droplets.CommandsNetwork.DO.Droplets.NetNetwork.DO.Domain.CommandsNetwork.DO.Domain.NetNetwork.DO.DomainNetwork.DO.CommandsNetwork.DO.Net IPActionTypeAssignUnassignIPActionAssignIP UnassignIPFloatingIPTarget TargetRegion TargetDroplet FloatingIP floatingIpfloatingDropletfloatingRegion DomainRecordrecordId recordType recordName recordDatarecordPriority recordPort recordWeightDNSTypeACNAMETXTPTRSRVNSAAAAMX DomainConfigDomain domainName domainTTL zone_file DomainNamedomainAction DoPowerOff DoPowerOnCreateSnapshotDropletActionTypePowerOffPowerOn MakeSnapshot ActionStatus InProgress CompletedErrored ActionResultactionId actionStatus actionTypeactionStartedAtactionCompletedAtactionResourceIdactionResourceTypeactionRegionSlugSizeszSlugszMemoryszVcpusszDisk szTransferszPrice_MonthlyszPrice_Hourly szRegions szAvailablePrice TransferRateKeykeyIdkeyFingerprint publicKeykeyNameImageimageId imageName distribution imageSlug publicImage imageRegions min_disk_sizeimage_created_at imageType ImageTypeSnapshot TemporaryBackupDroplet dropletIdnamememoryvcpusdisklocked created_atstatus backup_ids snapshot_idsregion size_slugnetworksNetworks NoNetworksv4v6V6V4Network NetworkV4 NetworkV6 ip_addressnetmaskgatewaynetType netmask_v6NetTypePublicPrivateStatusNewActiveOffArchiveDatetheDateBytes bytesSizeGigaMegaIdBoxConfiguration configName boxRegionsizeconfigImageSlugkeysbackgroundCreateKeyId ImageSlugSizeSlugM512G1G2G4G8G16G32G48G64G96Region RegionSlugNoRegion regionName regionSlug regionSizesregionAvailableToolConfigurationToolslackUri authTokenquietResultErrormsgURISlug AuthTokenerror sizeSlugs defaultImage jsonBytes jsonNetwork parseRecord failParse outputResult generateNamepublicIPfindByIdOrNameCommandlistKeys listSizes listImages listRegionslistFloatingIPscreateFloatingIPdeleteFloatingIPassignFloatingIPunassignFloatingIP listDomains createDomain deleteDomain listRecords createRecord deleteRecord listDroplets createDroplet showDropletdestroyDroplet dropletActiondropletConsole getActionlistDropletSnapshotsrunDOEnvrunDO runDODebuggetAuthFromEnvsshRESTTRESTGetPostWaitForGetWithPostWith DeleteWithOptionsHeader authorisationgetJSON getJSONWithpostJSON postJSONWithdeleteJSONWithwaitFor runConduit RequestLogRequestLogWithBodyWithBodyBodyDebugNoDebug debugRequest debugResponseoptions$fFromJSONIPActionType$fToJSONIPAction$fToJSONFloatingIPTarget$fFromJSONFloatingIP$fToJSONDomainRecord$fFromJSONDomainRecord$fToJSONDNSType$fFromJSONDNSType$fToJSONDomainConfig$fFromJSONDomain$fToJSONDomainName$fFromJSONDomainName$fReadDomainName$fShowDomainName$fToJSONAction$fToJSONDropletActionType$fFromJSONDropletActionType$fFromJSONActionStatus$fFromJSONActionResult$fFromJSONSize $fFromJSONKey$fFromJSONImage$fFromJSONImageType$fFromJSONDroplet$fFromJSONNetworks$fFromJSONNetwork$fFromJSONNetwork0$fFromJSONNetType $fToJSONIP $fFromJSONIP$fFromJSONStatus$fFromJSONDate$fFromJSONBytes$fFromJSONBytes0$fToJSONBoxConfiguration$fFromJSONSizeSlug$fToJSONSizeSlug$fReadSizeSlug$fShowSizeSlug$fFromJSONRegion $fShowRegion$fToJSONRegion$fDefaultToolConfigurationPrettypretty$fPrettyDNSType$fPrettyDomainRecord$fPrettyDomain$fPrettyIPActionType$fPrettyFloatingIP$fPrettyDropletActionType$fPrettyActionResult $fPrettySize$fPrettySizeSlug$fPrettyDouble $fPrettyImage $fPrettyKey $fPretty[] $fPrettyBytes$fPrettyBytes0$fPrettyNetwork$fPrettyNetworks$fPrettyRegion $fPrettyIP$fPrettyNetType$fPrettyStatus$fPrettyDroplet $fPrettyDate $fPrettyError $fPrettyChar $fPrettyMaybe$fPrettyEither $fPretty()PairingMpairMPairingpair:*::+:injlinjrinjrlinjrrinjrrlinjrrr pairEffect pairEffect' pairEffectM$fPairingMProductSumm$fPairingMSumProductm$fPairingM(,)(->)m$fPairing(,)(->)$fPairing(->)(,)$fPairingIdentityIdentity fromResponseListable listEndpoint listFieldrootURI apiVersiontoURItoList queryListleftright CoIPCommandsT CoIPCommandslistFloatingIPsHcreateFloatingIPH deleteIPH actionIPH IPCommandsT IPCommandsListFloatingIPsCreateIPDeleteIPActionIPfloatingIPAction!$fPairingMCoIPCommandsIPCommandsmfloatingIpsURIfloatingIpsEndpoint doCreateIP doDeleteIPdoActionipCommandsInterpreter$fListableFloatingIPCoDropletCommandsDropletCommandsCoDropletCommandsT listDropletsHcreateDropletHdestroyDropletHactionDropletH getActionHlistSnapshotsHconsoleH showDropletHDropletCommandsT ListDroplets CreateDropletDestroyDroplet DropletAction GetAction ListSnapshotsConsole ShowDroplet+$fPairingMCoDropletCommandsDropletCommandsm dropletsURIdropletsEndpointdoListSnapshotsdoCreatedoDestroyDroplet doGetAction doShowDropletdoSshInDropletwaitForBoxToBeUpdropletCommandsInterpreter$fListableDropletCoDomainCommandsTCoDomainCommands listDomainsH createDomainH deleteDomainH listRecordsH createRecordH deleteRecordHDomainCommandsTDomainCommands ListDomains CreateDomain DeleteDomain ListRecords CreateRecord DeleteRecord)$fPairingMCoDomainCommandsDomainCommandsm domainsURIdomainsEndpointdoCreateDomaindoDeleteDomain doListRecordsdoCreateRecorddoDeleteRecorddnsCommandsInterpreter$fListableDomainCoDOTCoDO listKeysH listSizesH listImagesH listRegionsHDOTDOListKeys ListSizes ListImages ListRegions$fPairingMCoDODOm imagesURIkeysURIsizesURI accountURI regionsURI keysEndpoint sizesEndpointimagesEndpointregionsEndpointgenericCommands mkDOClient$fListableRegion$fListableImage$fListableSize $fListableKey