ver:"3.0" id,def,accumulate,admin,ahuZoneDelivery,app,appName,baseUri,beta,children,childrenFlatten,chillerMechanism,classes,computed,confirm,containedBy,conveys,coolingProcess,cools,decorators,defExtension,defName,defTest,dehumidifies,depends,deprecated,dis,disKey,disMacro,doc,docSection,docTaxonomy,ductConfig,ductDeck,ductSection,energyBaselineFunc,energyNormFunc,enum,ext,extends,fileExt,finExtended,flags,foldOn,func,functions,haystackApi,heatingProcess,heats,help,hisFuncReady,hisSrc,humidifies,icon,implements,input,interfaces,is,kind,kpiRule,lib,linter,mandatory,maxVal,meterScope,methodOf,mime,minVal,mode_enum,moves,multi,multiLine,name,noFlash,noSideEffects,nodoc,notInherited,of,onCommit,optsTemplate,order,overridable,parameters,pipeSection,podName,pointFunction,pointQuantity,pointSubject,prefUnit,processUses,produces,properties,quantityOf,reader,receives,reciprocalOf,refresh,regulates,reheats,returnType,ruleOn,ruleType,select,signature,sparkRule,src,stores,su,sysMod,tagOn,tags,template,templateName,trait,traitOn,traitView,transient,transitive,trio_multiLine,typeName,typeScript,validate,variables,vavAirCircuit,vavModulation,ventilates,version,view,wikipedia,writer,mod ,^absorption,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Cooling process using energy from heat source such as hot water",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^marker],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`https://en.wikipedia.org/wiki/Absorption_refrigerator`,, ,^ac,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Relating to alternating current electricity",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^marker],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^ac-elec,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Alternating current electricity",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^elec],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`https://en.wikipedia.org/wiki/Alternating_current`,, ,^ac-elec-meter,,,,,,,,"// TODO: how to deal with explosion?\n// energy\ntotal net energy sensor point\ntotal import energy sensor point\ntotal export energy sensor point\nphase:\"A\" net energy sensor point\n\n// power\ntotal active power sensor point\ntotal reactive power sensor point\ntotal apparent power sensor point\nphase:\"A\" active power sensor point\nphase:\"A\" reactive power sensor point\nphase:\"A\" apparent power sensor point\n\n// current\navg current magnitude sensor point\navg current angle sensor point\navg current imbalance sensor point\navg current thd sensor point\nphase:\"A\" current magnitude sensor point\nphase:\"A\" current angle sensor point\nphase:\"A\" current imbalance sensor point\nphase:\"A\" current thd sensor point\n\n// volt\navg volt magnitude sensor point\navg volt angle sensor point\navg volt imbalance sensor point\navg volt thd sensor point\nphase:\"A\" volt magnitude sensor point\nphase:\"A\" volt angle sensor point\nphase:\"A\" volt imbalance sensor point\nphase:\"A\" volt thd sensor point\n\n// power factor\navg pf sensor point\nphase:\"A\" pf sensor point",,,,,,,,,,,,,,,,,,,,"AC Electricity meter",,,,,,,,,,,,,,,,,,,,,,,,"bolt",,,,[^elec-meter],,,^lib:phIoT,["LintEquip","LintMarker"],,,^meterScopeType,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^ac-freq,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Frequency of alternating current",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^freq],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,["Hz"],,,,[^ac-elec],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^accumulate,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Accumulate the tag's value during [inheritance]`docHaystack::Normalization#inherit`\nand [defx]`docHaystack::Normalization#defx`. Tags marked as accumulate\nare aggregated together during normalization and deduplicated. This\nmarker must only be used on tags which expect a list value.",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^marker],,,^lib:ph,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^active,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Working, operative, effective",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^marker],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^active-power,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Active power or real power; energy transfer that contributes useful work",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^elec-power],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,["kW"],,,,[^ac-elec],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^actorTimeout,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Timeout for messages send to the connector's actor thread. It must\nbe a number with a duration unit. If omitted a default of 1min is used.\nThis value effectively determines how long a blocking remote request should\ntake before raising a timeout error. For protocols which communicate\nvia HTTP/TCP it is also used to configure the socket's receive\ntimeout (including Haystack and oBIX connectors).",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^duration],,,^lib:conn,["LintNumber"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[^conn],,,,,,,,,,,,,,,,,,,,, ,^actuator,,,,,,,,"equip\npoint",,,,,,,,,,,,,,,,,,,,"Equipment to move or control a mechanism. Actuators may be manually\noperated or automated via a control system to convert an energy source\ninto mechanical energy. Typically the energy source is electricity,\nhydraulics, or pneumatics.",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^equip],,,^lib:phIoT,["LintEquip","LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`https://en.wikipedia.org/wiki/Actuator`,, ,^addOn,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Feature which may be enabled or disabled at runtime",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^marker],,,^lib:core,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^admin,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Required admin permissions",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^marker],,,^lib:core,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[^func,^view],,,,,,,,,,,,,,,,,,,,, ,^ahu,,,^ahuZoneDeliveryType,,,,,"thermostat equip\ndischarge duct equip\nexhaust duct equip\nmixed duct equip\noutside duct equip\nreturn duct equip\nfreezeStat sensor point\nheatWheel cmd point\nfaceBypass cmd point\nbypass damper cmd point",,,,,,,,^coolingProcessType,^air,,,,,^air,,,,,,"Air Handling Unit: An enclosure with a fan that delivers air to a space\nvia ductwork and performs one or more of the functions of cleaning,\nheating, cooling, humidifying, dehumidifying, ventilating or circulating\nthe air.",,,^ductConfigType,^ductDeckType,,,,,,,,,,,,,,^heatingProcessType,^air,,,,^air,"fan",,,,[^airHandlingEquip],,,^lib:phIoT,["LintEquip","LintMarker"],M,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,^air,,,`https://en.wikipedia.org/wiki/Air_handler`,, ,^ahuRef,,,,,,,,,,,,,,,,,,,,,,,,,,,,"AHU which supplies air to an equipment or space",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^ref],,,^lib:phIoT,["LintRef"],,,,,,,,,,,,,,,,^ahu,,,,,,,,,,,,,,,,,^air,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^ahuZoneDelivery,,,,,,,,,,,,,,,,,,,,,,,,,,,,"AHU delivery method of conditioned air to the zone",,,,,,,,,,,,,,,,,,,,,,,,,,"ui::ChoiceInput",,[^choice],,,^lib:phIoT,["LintSymbol"],,,,,,,,,,,,,,,,^ahuZoneDeliveryType,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^ahuZoneDeliveryType,,,,,,,,,,,,,,,,,,,,,,,,,,,,"AHU delivery method of conditioned air to the zone",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^marker],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^air,,,,,,,,,,,,,,,,,,,,,,,,,,,,"The mixture of gases which surrounds the earth",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^gas],,,^lib:phScience,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`https://en.wikipedia.org/wiki/Atmosphere_of_Earth`,, ,^air-temp,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Dry bulb temperature",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^temp],,,^lib:phScience,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,["°C","°F"],,,,[^air],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^airCooling,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Cooling by dissipating heat into the surrounding air",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^coolingProcessType],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,[^air],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`https://en.wikipedia.org/wiki/Air_cooling`,, ,^airHandlingEquip,,,^ahuZoneDeliveryType,,,,,"thermostat equip\ndischarge duct equip\nexhaust duct equip\nmixed duct equip\noutside duct equip\nreturn duct equip\nthermostat equip\nfreezeStat sensor point\nheatWheel cmd point\nfaceBypass cmd point\nbypass damper cmd point",,,,,,,,^coolingProcessType,^air,,,,,^air,,,,,,"HVAC equipment that conditions and delivers air via one or more fans.\nConditioning of air includes heating, cooling, humidificiation,\ndehumidification, and ventilation.",,,^ductConfigType,^ductDeckType,,,,,,,,,,,,,,^heatingProcessType,^air,,,,^air,"fan",,,,[^equip],,,^lib:phIoT,["LintEquip","LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,^air,,,`https://en.wikipedia.org/wiki/Air_handler`,, ,^airQuality,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Measurement of contaminants in the air",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^quantity],,,^lib:phScience,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[^air],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^airTerminalUnit,,,,,,,,"thermostat equip\ndischarge duct equip\ninlet duct equip\nthermostat equip",,,,,,,,,,,,,,,,,,,,"Equipment in air distribution systems which terminate at the space.\nTerminal units receive air from `airHandlingEquip` which have the\nprimarily responsibility to condition air. Terminal units are primarily\nresponsible for delivery of air to the space and tempering the temperature.",,,^ductConfigType,,,,,,,,,,,,,,,,,,,,,"fan",,,,[^equip],,,^lib:phIoT,["LintEquip","LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^alsoSee,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Legacy tag definitions",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^str],,,^lib:core,["LintStr"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^angle,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Measurement of the relative difference in direction between two vectors or phasors",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^marker],,,^lib:phScience,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^app,,,,,,,,,,,,,,,,,,,,,,,,,,,,"UI application grouping of views",,,,,,,,,,,,,,,,,,,,,,,,"app",,,,[^feature],,,^lib:core,["LintApp"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^app:builder,,,,"builder",,,,,,,,,,,,,,,,,,,,,,"ui::builder",,"UI application grouping of views",,,,,,,,,,,,,,,,,,,,,,,,"compassDraft",,,,[^app],,,^lib:core,["LintApp"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^app:code,,,,"code",,,,,,,,,,,,,,,,,,,,,,"ui::code",,"UI application grouping of views",,,,,,,,,,,,,,,,,,,,,,,,"ide",,,,[^app],,,^lib:core,["LintApp"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^app:conn,,,,"conn",,,,,,,,,,,,,,,,,,,,,,"ui::connector",,"UI application grouping of views",,,,,,,,,,,,,,,,,,,,,,,,"conn",,,,[^app],,,^lib:core,["LintApp"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^app:debug,,,,"debug",,,,,,,,,,,,,,,,,,,,,,"ui::debug",,"UI application grouping of views",,,,,,,,,,,,,,,,,,,,,,,,"debug",,,,[^app],,,^lib:core,["LintApp"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^app:demo,,,,"demo",,,,,,,,,,,,,,,,,,,,,"Demo",,,"UI application grouping of views",,,,,,,,,,,,,,,,,,,,,,,,"presentation",,,,[^app],,,^lib:demo,["LintApp"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^app:doc,,,,"doc",,,,,,,,,,,,,,,,,,,,,,"ui::doc",,"UI application grouping of views",,,,,,,,,,,,,,,,,,,,,,,,"help",,,,[^app],,,^lib:core,["LintApp"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^app:energy,,,,"energy",,,,,,,,,,,,,,,,,,,,,,"ui::energy",,"UI application grouping of views",,,,,,,,,,,,,,,,,,,,,,,,"bolt",,,,[^app],,,^lib:energy,["LintApp"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^app:favs,,,,"favs",,,,,,,,,,,,,,,,,,,,,,"ui::favorites",,"UI application grouping of views",,,,,,,,,,,,,,,,,,,,,,,,"star",,,,[^app],,,^lib:core,["LintApp"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^app:his,,,,"his",,,,,,,,,,,,,,,,,,,,,,"ui::historian",,"UI application grouping of views",,,,,,,,,,,,,,,,,,,,,,,,"his",,,,[^app],,,^lib:his,["LintApp"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^app:home,,,,"home",,,,,,,,,,,,,,,,,,,,,,"ui::home",,"UI application grouping of views",,,,,,,,,,,,,,,,,,,,,,,,"home",,,,[^app],,,^lib:core,["LintApp"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^app:host,,,,"host",,,,,,,,,,,,,,,,,,,,,,"ui::host",,"UI application grouping of views",,,,,,,,,,,,,,,,,,,,,,,,"host",,,,[^app],,,^lib:core,["LintApp"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^app:kpi,,,,"kpi",,,,,,,,,,,,,,,,,,,,,,"ui::kpi",,"UI application grouping of views",,,,,,,,,,,,,,,,,,,,,,,,"kpi",,,,[^app],,,^lib:rule,["LintApp"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^app:misc,,,,"misc",,,,,,,,,,,,,,,,,,,,,,"ui::misc",,"UI application grouping of views",,,,,,,,,,,,,,,,,,,,,,,,"folder",,,,[^app],,,^lib:core,["LintApp"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^app:monitor,,,,"monitor",,,,,,,,,,,,,,,,,,,,,,"ui::monitor",,"UI application grouping of views",,,,,,,,,,,,,,,,,,,,,,,,"gauge",,,,[^app],,,^lib:core,["LintApp"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^app:rule,,,,"rule",,,,,,,,,,,,,,,,,,,,,,"ui::rule",,"UI application grouping of views",,,,,,,,,,,,,,,,,,,,,,,,"rule",,,,[^app],,,^lib:rule,["LintApp"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^app:settings,,,,"settings",,,,,,,,,,,,,,,,,,,,,,"ui::settings",,"UI application grouping of views",,,,,,,,,,,,,,,,,,,,,,,,"settings",,,,[^app],,,^lib:core,["LintApp"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^app:spark,,,,"spark",,,,,,,,,,,,,,,,,,,,,,"ui::spark",,"UI application grouping of views",,,,,,,,,,,,,,,,,,,,,,,,"spark",,,,[^app],,,^lib:rule,["LintApp"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^app:tools,,,,"tools",,,,,,,,,,,,,,,,,,,,,,"ui::tools",,"UI application grouping of views",,,,,,,,,,,,,,,,,,,,,,,,"toolbox",,,,[^app],,,^lib:core,["LintApp"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^app:weather,,,,"weather",,,,,,,,,,,,,,,,,,,,,,"ui::weather",,"UI application grouping of views",,,,,,,,,,,,,,,,,,,,,,,,"weather",,,,[^app],,,^lib:weather,["LintApp"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^appAccess,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Restricts the set of accessible apps. This tag is formatted as list\nof comma separated app names.",,,,,,,,,,,,,,,,,,,,,,,,,,"ui::AppAccessInput",,[^str],,,^lib:user,["LintStr"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^appName,,,,,,,,,,,,,,,,,,,,,,,,,,,,"View containing app name",,,,,,,,,,,,,,,,,,,,,,,,,,"ui::AppNameInput",,[^str],,,^lib:core,["LintStr"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^apparent,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Perceived quantity",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^marker],,,^lib:phScience,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^apparent-power,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Apparent power is perceived magnitude of power due to the combination of active and reactive power",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^quantity],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,["kVA"],,,,[^ac-elec],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^area,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Area of a shape or floor space",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^number],,,^lib:phIoT,["LintNumber"],,,,,,,,,,,,,,,,,,,,,,,,,,,["ft²","m²"],,,,,,,,,,,,,,,,,,,,,[^site,^space],,,,,,,,,,,,,,,,,,,,, ,^association,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Associations model ontological relationships between definitions.\nSee [Associations]`docHaystack::Associations` chapter.",,M,,,,,,,,,,,,,,,,,,,,,,,,"uiDev::SymbolListInput",,[^list],,,^lib:ph,,,,,,,,,,,,,,,,,^symbol,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^atmospheric,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Related to the atmosphere of the earth",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^marker],,,^lib:phScience,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^atmospheric-pressure,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Barometric pressure exerted by the weight of the atmosphere",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^pressure],,,^lib:phScience,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,["millibar","inHg"],,,,[^weather],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^avg,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Average; central or typical value; median",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^marker],,,^lib:phScience,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^bacnet,,,,,,,,,,,,,,,,,,,,,,,,,,,,"ASHRAE building automation and control protocol",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^protocol],,,^lib:phIct,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`https://en.wikipedia.org/wiki/BACnet`,, ,^barometric,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Relating atmospheric pressure",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^marker],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^baseUri,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Base URI for normalizing relative URIs",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^uri],,,^lib:ph,["LintUri"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[^lib],,,,,,,,,,,,,,,,,,,,, ,^battery,,,,,,,,"equip\npoint",,,,,,,,,,,,,,,,,,,,"Equipment used to store electric energy",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^equip],,,^lib:phIoT,["LintEquip","LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,^elec,,,,,,,,,,,,,,,,,,,,,,`https://en.wikipedia.org/wiki/Electric_battery`,, ,^beta,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Indicates a beta quality definition. Beta features might not should\nbe used with caution as they might not provide production quality or\nmight change over time.",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^marker],,,^lib:core,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^blowdown,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Removal from container or pipe",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^marker],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^blowdown-water,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Water expelled from a system to remove mineral build up",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^water],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`https://en.wikipedia.org/wiki/Water`,, ,^bluetooth,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Short range wireless communication protocol",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^protocol],,,^lib:phIct,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`https://en.wikipedia.org/wiki/Bluetooth`,, ,^boiler,,,,,,,,"equip\npoint",,,,,,,,,,,,,,,,,,,,"Equipment to generate hot water or steam for heating",,,,,,,,,,,,,,,,,,^heatingProcessType,^fluid,,,,,,,,,[^equip],,,^lib:phIoT,["LintEquip","LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`https://en.wikipedia.org/wiki/Boiler`,, ,^bool,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Boolean value 'true' or 'false'",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^scalar],,,^lib:ph,["LintBool"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^bypass,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Pipe used to bypass an equipment",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^pipeSectionType],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^calendar,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Configures the items for a daily calendar encoded as zinc grid.\nSee `ext-schedule::doc#calendar` for format and further details.",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^str],,,^lib:schedule,["LintStr"],,,,,,,,,,M,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^calendarRef,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Used to chain a calendar to a schedule or another calendar.",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^ref],,,^lib:schedule,["LintRef"],,,,,,,,,,,,,,,,^calendar,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^cav,,,,,,,,"thermostat equip\ndischarge duct equip\ninlet duct equip\nthermostat equip",,,,,,,,,,,,,,,,,,,,"Constant air volume terminal unit. CAV systems use a constant\nair flow rate with a variable air temperature.",,,^ductConfigType,,,,,,,,,,,,,,,,,,,,,"fan",,,,[^airTerminalUnit],,,^lib:phIoT,["LintEquip","LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`https://en.wikipedia.org/wiki/Constant_air_volume`,, ,^centrifugal,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Compression via a continuous flow of fluid through an impeller",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^marker],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`https://en.wikipedia.org/wiki/Centrifugal_compressor`,, ,^children,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Prototypes contained by this entity. The value is a string where\neach line defines a child prototype dict encoded as [Zinc]`docHaystack::Zinc`.\nSee [Protos chatper]`docHaystack::Protos` for more details.",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^str],,,^lib:ph,["LintStr"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^childrenFlatten,,,,,,,,,,,,,,,,,,,,,,,,,,,,"List of aspects to flatten into children prototypes.\nSee [Protos chatper]`docHaystack::Protos` for more details.",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^list],,,^lib:ph,,,,,,,,,,,,,,,,,^symbol,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^chilled,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Substance is cooled using cooling process",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^marker],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^chilled-water,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Water used for HVAC cooling",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^water],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`https://en.wikipedia.org/wiki/Chilled_water`,, ,^chilled-water-plant,,,,,,,,"chiller equip\ncoolingTower equip\n\nchilled water bypass pipe equip\nchilled water entering pipe equip\nchilled water leaving pipe equip\nchilled water header pipe equip\nchilled water heatExchanger equip\nchilled water delta flow point\nchilled water delta pressure point\nchilled water delta temp point\n\ncondenser water bypass pipe equip\ncondenser water delta flow point\ncondenser water delta pressure point\ncondenser water delta temp point",,,,,,,,,,,,,,,,,,,,"Plant used to generate chilled water for cooling",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^plant],,,^lib:phIoT,["LintEquip","LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,^chilled-water,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^chilledBeam,,,,,,,,"equip\npoint",,,,,,,,^chilledWaterCooling,^air,,,,,,,,,,,"Conditions a space using a heat exchanger integrated into the ceiling",,,,,,,,,,,,,,,,,,^heatingProcessType,^air,,,,,,,,,[^radiantEquip],,,^lib:phIoT,["LintEquip","LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`https://en.wikipedia.org/wiki/Chilled_beam`,, ,^chilledBeamZone,,,,,,,,,,,,,,,,,,,,,,,,,,,,"AHU supplies air to chilled beam terminal units",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^ahuZoneDeliveryType],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^chilledWaterCooling,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Cooling using transfer of heat to chilled water",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^coolingProcessType],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,[^chilled-water],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^chilledWaterPlantRef,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Plant which supplies chilled water to the entity",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^ref],,,^lib:phIoT,["LintRef"],,,,,,,,,,,,,,,,^chilled-water-plant,,,,,,,,,,,,,,,,,^chilled-water,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^chiller,,,,,,,,"run state point\nenable state point\nload cmd point\nload sensor point\nefficiency sensor point\n\nchilled water leaving pipe equip\nchilled water entering pipe equip\nchilled water delta temp sensor point\nchilled water delta flow sensor point\nchilled water valve isolation cmd point\n\ncondenser water leaving pipe equip\ncondenser water entering pipe equip\ncondenser water valve isolation cmd point\n\ncondenser run state point\ncondenser refrig temp sensor point\ncondenser refrig pressure sensor point\nevaporator refrig temp sensor point\nevaporator refrig pressure sensor point",,^chillerMechanismType,,,,,,,^chilled-water,,,,,,,,,,,"Equipment to remove heat from a liquid. Chillers typically use a vapor\ncompression or an absorption refrigeration cycle.",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^equip],,,^lib:phIoT,["LintEquip","LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`https://en.wikipedia.org/wiki/Chiller`,, ,^chiller-absorption,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Cooling process using energy from heat source such as hot water",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^absorption,^chillerMechanismType],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`https://en.wikipedia.org/wiki/Absorption_refrigerator`,, ,^chiller-centrifugal,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Compression via a continuous flow of fluid through an impeller",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^centrifugal,^chillerMechanismType],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`https://en.wikipedia.org/wiki/Centrifugal_compressor`,, ,^chiller-reciprocal,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Piston compressor driven by a crankshaft",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^reciprocal,^chillerMechanismType],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`https://en.wikipedia.org/wiki/Reciprocating_compressor`,, ,^chiller-rotaryScrew,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Rotary screw compression",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^rotaryScrew,^chillerMechanismType],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`https://en.wikipedia.org/wiki/Rotary-screw_compressor`,, ,^chillerMechanism,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Primary mechanism of chiller",,,,,,,,,,,,,,,,,,,,,,,,,,"ui::ChoiceInput",,[^choice],,,^lib:phIoT,["LintSymbol"],,,,,,,,,,,,,,,,^chillerMechanismType,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^chillerMechanismType,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Primary mechanism of chiller",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^marker],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^choice,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Choice specifies an exclusive marker selection.\nSee [Choices]`docHaystack::Choices` chapter.",,M,,,,,,,,,,,,,,,,,,,,,,,,"ui::ChoiceInput",,[^symbol],,,^lib:ph,["LintSymbol"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^circ,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Pipe used to circulate fluid through an equipment or system",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^pipeSectionType],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^closedLoop,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Working fluid is kept separate from fluid used for heat transfer into the atmosphere",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^coolingLoop],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^cloudage,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Percentage of sky obscurred by clouds. This is also known as cloudiness, or cloud amount.",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^quantity],,,^lib:phScience,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,["%"],,,,[^weather],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^cmd,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Point is a command, actuator, AO/BO",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^pointFunctionType],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^co2,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Carbon dioxide level",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^airQuality],,,^lib:phScience,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,["ppb"],,,,[^air],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^coap,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Constrained Application Protocol",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^protocol],,,^lib:phIct,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`https://en.wikipedia.org/wiki/Constrained_Application_Protocol`,, ,^coil,,,,,,,,"equip\npoint",,,,,,,,,,,,,,,,,,,,"Heat exchanger used to heat or cool air. Coils are sub-components\nof HVAC equipment such as `airHandlingEquip`.",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^heatExchanger],,,^lib:phIoT,["LintEquip","LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`https://en.wikipedia.org/wiki/Heat_exchanger#HVAC_air_coils`,, ,^coldDeck,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Duct carries air for cooling",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^ductDeckType],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^color,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Color encoded as '#RRGGBB' or '#RGB'",,,,,,,,,,,,,,,,,,,,,,,,,,"ui::ColorInput",,[^str],,,^lib:core,["LintStr"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^computed,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Indicates a definition which is computed. Computed defs cannot be\nused as tags themselves.",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^marker],,,^lib:ph,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^condensate,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Liquid phase produced by the condensation of steam or other gas",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^liquid],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`https://en.wikipedia.org/wiki/Liquid`,, ,^condenser,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Device or related to process of condensation",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^marker],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^condenser-water,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Water used used to remove heat through condensation",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^water],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`https://en.wikipedia.org/wiki/Water`,, ,^condenserCooling,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Removal of heat through the process of water condensation",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^coolingProcessType],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^conduit,,,,,,,,"equip\npoint",,,,,,,^phenomenon,,,,,,,,,,,,,"Duct, pipe, or cable to convey a substance or phenomenon",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^equip],,,^lib:phIoT,["LintEquip","LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^confirm,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Used on actions to prompt for confirmation. Value is dict with following tags:\n- icon: logical icon name (typically \"warn\")\n- dis/disKey: display title for the confirmation dialog\n- details/detailsKey: additional details",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^dict],,,^lib:core,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^conn,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Connector for communication to a remote system.",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^entity],,,^lib:conn,["LintMarker"],M,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^connErr,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Error message associated when `connStatus` indicates an error condition.\nSee `doc#conns`",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^str],,,^lib:conn,["LintStr"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[^conn],,,,,,,M,,,,,,,,,,,,,, ,^connLinger,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Linger timeout used to keep a connector open.\nIf not configured then a default of 30sec is used.",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^duration],,,^lib:conn,["LintNumber"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[^conn],,,,,,,,,,,,,,,,,,,,, ,^connPingFreq,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Duration used to configure the auto-ping feature on a given connector.\nWhen this tag is configured the connector will automatically attempt\na ping based on the configured frequency. For connectors which might\nnot have watched points this ensures periodic checks of the connectivity\nstatus. If this tag is not defined on a connector then the feature is\ndisabled.",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^duration],,,^lib:conn,["LintNumber"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[^conn],,,,,,,,,,,,,,,,,,,,, ,^connPoint,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Point associated with a connector for data synchronization with a remote system.",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^point],,,^lib:conn,["LintMarker","LintPoint"],,,,,,,,,,,,,,,,,,,,,,,,^pointFunctionType,^quantity,^phenomenon,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^connState,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Current connection state of a connector as one of the predefined strings.\nSee `doc#conns`",,,,,,,,"- closed: connection is closed\n- closing: a connection is currently being closed\n- open: connection is open\n- opening: a connection is currently being opened",,,,,,,,,,,,,,,,,,,,[^str],,,^lib:conn,["LintStr"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[^conn],,,,,,,M,,,,,,,,,,,,,, ,^connStatus,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Current status of a connector as one of the predefined strings\nSee `doc#conns`",,,,,,,,"- ok: all is okay\n- fault: a configuration problem - see `connErr`\n- down: a communication or network problem - see `connErr`\n- disabled: manual disable of the connector\n- unknown: we don't know anything (usually boot state)",,,,,,,,,,,,,,,,,,,,[^str],,,^lib:conn,["LintStr"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[^conn],,,,,,,M,,,,,,,,,,,,,, ,^connTuning,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Marker applied to a rec which defines a tuning configuration.\nSee `doc#tuning`",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^entity],,,^lib:conn,["LintMarker"],M,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^connTuningRef,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Reference to a tuning configuration defined by a `connTuning` rec.\nSee `doc#tuning`",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^ref],,,^lib:conn,["LintRef"],,,,,,,,,,,,,,,,^connTuning,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[^conn,^connPoint],,,,,,,,,,,,,,,,,,,,, ,^containedBy,,,,,,,,,,,,,,,,,,,,,,,,,,,,"The entity is logically contained by the referent.",,,,,,,,,,,,,,,,,,,,,,,,,,"uiDev::SymbolInput",,[^relationship],,,^lib:ph,["LintSymbol"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,^contains,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,,,,, ,^contains,,,,,,,,,,,,M,,,,,,,,,,,,,,,,"Entities logically contained by this entity",,,,,,,,,,,,,,,,,,,,,,,,,,"uiDev::SymbolInput",,[^relationship],,,^lib:ph,["LintSymbol"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,^containedBy,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,,,,, ,^controller,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Microprocessor based device used in a control system. Controllers\ninteract with the physical world through direct I/O to sensors and\nactuators or via network [protocols]`protocol`.",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^device],,,^lib:phIct,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^controls,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Associated with the control system for an industrial process",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^marker],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`https://en.wikipedia.org/wiki/Control_system`,, ,^controls-panel,,,,,,,,"controller device\nnetworking device",,,,,,,,,,,,,,,,,,,,"Panel housing controllers and networking gear",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^panel],,,^lib:phIct,["LintEquip","LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^conveys,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Equipment conveys a substance or phenomenon.",,,,,,,,,,,,,,,,,,,,,,,,,,"ui::ChoiceInput",,[^equipFunction],,,^lib:phIoT,["LintSymbol"],,,,,,,,,,,,,,,,^phenomenon,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^cool,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Point used to command equipment cooling",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^marker],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^cooling,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Cooling mode or process",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^marker],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^coolingCapacity,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Measurement of a chiller ability to remove heat measured",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^number],,,^lib:phIoT,["LintNumber"],,,,,,,,,,,,,,,,,,,,,,,,,,,["tonref","BTU/h","kW"],,,,,,,,,,,,,,,,,,,,,[^chiller],,,,,,,,,,,,,,,,,,,,, ,^coolingCoil,,,,,,,,"stage:1 cool enable cmd point\nchilled water cool valve cmd point",[^ductDeckType,^ductSectionType],,,,,,,^coolingProcessType,^air,,,,,,,,,,,"Coil used to cool air.",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^coil],,,^lib:phIoT,["LintEquip","LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`https://en.wikipedia.org/wiki/Heat_exchanger#HVAC_air_coils`,, ,^coolingLoop,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Open or closed loop",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^marker],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^coolingOnly,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Device without heating",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^marker],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^coolingOnly-vav,,,,,,,,"reheat cmd point\nvavMode sp point\nductArea sp point\nperimeterHeat cmd point",,,,,,,,,,,,,,,,,,,,"Cooling only VAV without fan or reheat",,,^ductConfigType,,,,,,,,,,,,,,,,,,,,,"fan",,,,[^vav],,,^lib:phIoT,["LintEquip","LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,^vavModulationType,,,,`https://en.wikipedia.org/wiki/Variable_air_volume`,, ,^coolingProcess,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Processed used to cool a substance",,,,,,,,,,,,,,,,,,,,,,,,,,"ui::ChoiceInput",,[^choice],,,^lib:phIoT,["LintSymbol"],,,,,,,,,,,,,,,,^coolingProcessType,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^coolingProcessType,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Processed used to cool a substance",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^process],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^coolingTower,,,,,,,,"condenser water entering pipe equip\ncondenser water leaving pipe equip\nfan motor equip",,,,,,,,,^condenser-water,,,,,,,,,,,"Equipment to transfer waste heat into the atmosphere",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^equip],,,^lib:phIoT,["LintEquip","LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`https://en.wikipedia.org/wiki/Cooling_tower`,, ,^cools,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Equipment removes heat from a substance.",,,,,,,,,,,,,,,,,,,,,,,,,,"ui::ChoiceInput",,[^equipFunction],,,^lib:phIoT,["LintSymbol"],,,,,,,,,,,,,,,,^substance,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^coord,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Geographic coordinate in latitude/longitude formatted as 'C(lat,lng)'",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^scalar],,,^lib:ph,["LintCoord"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^crac,,,^ahuZoneDeliveryType,,,,,"thermostat equip\ndischarge duct equip\nexhaust duct equip\nmixed duct equip\noutside duct equip\nreturn duct equip\nthermostat equip\nfreezeStat sensor point\nheatWheel cmd point\nfaceBypass cmd point\nbypass damper cmd point",,,,,,,,^coolingProcessType,^air,,,,,^air,,,,,,"Computer Room Air Conditioner: An FCU designed to condition a computer\nroom.",,,^ductConfigType,^ductDeckType,,,,,,,,,,,,,,^heatingProcessType,^air,,,,^air,"fan",,,,[^fcu],,,^lib:phIoT,["LintEquip","LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,^air,,,`https://en.wikipedia.org/wiki/Fan_coil_unit`,, ,^cur,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Supports current value",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^marker],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[^point],,,,,,,,,,,,,,,,,,,,, ,^cur-point,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Point with support to report a \"real-time\" current value. By real-time\nwe typically mean freshness within the order of of a few seconds or at\nmost a few minutes. For systems with direct I/O the current value is\ntypically driven by the I/O scan rate. For overlay systems which acquire\ndata via a protocol such as BACnet or Modbus then the current value\nis typically refreshed using polling or subscription over a network.",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^point],,,^lib:phIoT,["LintMarker","LintPoint"],,,,,,,,,,,,,,,,,,,,,,,,^pointFunctionType,^quantity,^phenomenon,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^curCalibration,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Calibration value to apply to adjust the value read from the connector\nbefore updating curVal. The conversion is applied to the `connExt::ConnPoint.updateCurOk`\nvalue after `curConvert` is applied and before writing `curVal` to the database.\nSee `doc#convert`",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^number],,,^lib:conn,["LintNumber"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[^connPoint],,,,,,,,,,,,,,,,,,,,, ,^curConvert,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Conversion to apply when reading curVal from connector.\nThe conversion is applied to the `connExt::ConnPoint.updateCurOk` value\nbefore applying `curCalibration` and writing `curVal` to the database.\nSee `doc#convert`",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^pointConvert],,,^lib:conn,["LintStr"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[^connPoint],,,,,,,,,,,,,,,,,,,,, ,^curErr,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Error description when `curStatus` indicates error condition",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^str],,,^lib:phIoT,["LintStr"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[^cur-point],,,,,,,M,,,,,,,,,,,,,, ,^curRule,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Marker tag for a cur rule type. See `doc#curRules`.",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^ruleTypeBase],,,^lib:core,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^curStatus,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Status of point's current value reading. The `curVal` is only available\nwhen curStatus is \"ok\" or \"stale\". However a \"stale\" value should\nbe used with caution since the local system does not have a fresh value.\nIt is recommended that the `curVal` tag is removed from a point\nwhen the curStatus is not \"ok\" nor \"stale\".",,,,,,,,"- ok: all is okay\n- stale: the point's curVal is not fresh data\n- fault: a configuration or hardware problem - see `curErr`\n- down: a communication or network problem - see `curErr`\n- disabled: manual disable of the point or connector\n- unknown: we don't know anything (usually boot state)\n- remoteFault: point in remote system is fault\n- remoteDown: point in remote system is down\n- remoteDisabled: point in remote system is disabled\n- remoteUnknown: point in remote system is unknown",,,,,,,,,,,,,,,,,,,,[^str],,,^lib:phIoT,["LintStr"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[^cur-point],,,,,,,M,,,,,,,,,,,,,, ,^curVal,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Current value of a point. The current value is only available when\nthe the `curStatus` is \"ok\" or \"stale\".",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^scalar],,,^lib:phIoT,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[^cur-point],,,,,,,M,,,,,,,,,,,,,, ,^current,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Movement of fluid or electricity",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^marker],,,^lib:phScience,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^current-angle,,,,,,,,,,,,,,,,,,,,,,,,,,,,"AC current phase angle",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^quantity],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,["deg"],,,,[^ac-elec],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^current-imbalance,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Current phase imbalance in a multiphase AC system",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^quantity],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,["%"],,,,[^ac-elec],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^current-magnitude,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Magnitude of electrical current",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^elec-current],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,["A"],,,,[^ac-elec],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^current-thd,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Total harmonic current distortion",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^quantity],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,["%"],,,,[^ac-elec],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^dali,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Digital Addressable Lighting Interface protocol for lighting",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^protocol],,,^lib:phIct,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`https://en.wikipedia.org/wiki/Digital_Addressable_Lighting_Interface`,, ,^damper,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Damper equipment or control point.",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^marker],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`https://en.wikipedia.org/wiki/Damper_(flow)`,, ,^damper-actuator,,,,,,,,"damper cmd point\ndamper sensor point",[^ductSectionType],,,,,,,,,,,,,,,,,,,"Actuator to regulate the flow of air.",,,,,^ductSectionType,,,,,,,,,,,,,,,,,,,,,,,[^actuator],,,^lib:phIoT,["LintEquip","LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,^air,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`https://en.wikipedia.org/wiki/Damper_(flow)`,, ,^dataCenter,,,,,,,,"rack equip\ncrac fcu equip",,,,,,,,,,,,,,,,,,,,"Space used to house computer and networking gear.",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^space],,,^lib:phIct,["LintMarker","LintSpace"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`https://en.wikipedia.org/wiki/Data_center`,, ,^date,,,,,,,,,,,,,,,,,,,,,,,,,,,,"ISO 8601 date as year, month, day: '2011-06-07'",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^scalar],,,^lib:ph,["LintDate"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^dateTime,,,,,,,,,,,,,,,,,,,,,,,,,,,,"ISO 8601 timestamp followed by timezone identifier",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^scalar],,,^lib:ph,["LintDateTime"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^daytime,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Time between sunrise and sunset",,,,,,,,"- nighttime: false indicates sun is below horizon\n- daytime: true indicates sun is above horizon",,,,,,,,,,,,,,,,,,,,[^quantity],,,^lib:phScience,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[^weather],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^dc,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Relating to direct current electricity",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^marker],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^dc-elec,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Direct current electricity",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^elec],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`https://en.wikipedia.org/wiki/Direct_current`,, ,^dc-elec-meter,,,,,,,,"equip\npoint",,,,,,,,,,,,,,,,,,,,"DC Electricity meter",,,,,,,,,,,,,,,,,,,,,,,,"bolt",,,,[^elec-meter],,,^lib:phIoT,["LintEquip","LintMarker"],,,^meterScopeType,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^def,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Create a new definition bound to the given symbol",,,,,,,,,,,,,,,,,,,,,,,,,,"ui::SymbolNameInput",,[^symbol],,,^lib:ph,["LintDef","LintSymbol"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^defName,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Definition name - TODO might change",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^str],,,^lib:core,["LintStr"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^defx,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Extends the given definition with additional meta tags.\nSee [Normalization]`docHaystack::Normalization#defx`.",,,,,,,,,,,,,,,,,,,,,,,,,,"uiDev::SymbolInput",,[^symbol],,,^lib:ph,["LintSymbol"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^dehumidifies,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Equipment removes moisture from air to decrease humidity.",,,,,,,,,,,,,,,,,,,,,,,,,,"ui::ChoiceInput",,[^equipFunction],,,^lib:phIoT,["LintSymbol"],,,,,,,,,,,,,,,,^air,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^delta,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Differential of fluid between entering and leaving sensors.",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^marker],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^depends,,,,,,,,,,,,,,,,,,,,,,,,,,,,"List of this library's dependencies. The dependent libs define the\n[lib namespace]`docHaystack::Namespaces#lib`. Also see\n[Normalization]`docHaystack::Normalization#resolve`.",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^list],,,^lib:ph,,,,,,,,,,,,,,,,,^ref,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[^lib],,,,,,,,,,,,,,,,,,,,, ,^deprecated,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Obsoleted",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^marker],,,^lib:core,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^device,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Microprocessor based hardware device. This is the general term for\nall computers, mobile phones, controllers, and I/O modules.",,M,,,,,,,,,,,,,,,,,,,,,,,,,,[^entity],,,^lib:phIct,["LintMarker"],M,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^dewPoint,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Dew point temperature at which water vapor will form dew",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^quantity],,,^lib:phScience,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,["°C","°F"],,,,[^air],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^dict,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Map of name/value tag pairs",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^val],,,^lib:ph,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^directZone,,,,,,,,,,,,,,,,,,,,,,,,,,,,"AHU supplies air directly to the zone",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^ahuZoneDeliveryType],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^direction,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Compass direction measured in degrees: North: 0° = 360°, East: 90°, South: 180°, West: 270°",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^quantity],,,^lib:phScience,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,["deg"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^dis,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Display name for an entity",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^str],,,^lib:ph,["LintDis","LintStr"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[^entity,^func],,,,,,,,,,,,,,,,,,,,, ,^disKey,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Localized string key formatted as 'pod::key'",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^str],,,^lib:core,["LintDisKey","LintStr"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^disMacro,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Display name using macro syntax. See `haystack::Etc.dictToDis`",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^str],,,^lib:core,["LintDisMacro","LintStr"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[^space,^equip,^point],,,,,,,,,,,,,,,,,,,,, ,^discharge,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Duct with air leaving an equipment",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^ductSectionType],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^doc,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Documentation in simplified flavor of markdown. The first\nsentence up to the period is used as the summary.\n\nSpecific formatting options:\npre>\n// inline formatting\n*italic* // italics font\n**bold** // bold font\n'code' // code or API term\n`point` // hyperlink to def (code link)\n[text]`point` // hyperlink with explicit link text\n![alt]`image.png` // image\n\n// unordered list\n- one\n- two\n- three\n\n// ordered list; use numbers or letters\n1. one\n2. two\n3. three\n do\n readAll(ahu).each ahu => do\n\n // tags for point\n tags: {\n disMacro: \"\\\$equipRef \\\$navName\",\n navName: \"Mode\",\n kind: \"Str\",\n enum: \"off,heat,cool\",\n point,\n his,\n sp,\n ahuMode,\n regionRef: ahu->regionRef,\n siteRef: ahu->siteRef,\n equipRef: ahu->id,\n tz: ahu->siteRef->tz,\n }\n if (ahu.has(\"floorRef\")) tags = tags.set(\"floorRef\", ahu->floorRef)\n\n // add the point\n pt: diff(null, tags, {add}).commit\n logInfo(\"addEnumPoints\", \"Adding \" + pt.dis)\n\n // populate the point's history\n fan: read(fan and cmd and equipRef==ahu->id)\n (fan->hisStart.date .. fan->hisEnd.date).eachDay d => do\n items: []\n cooling: ahuCoolPeriods(ahu, d)\n heating: ahuHeatPeriods(ahu, d)\n matrix: hisPeriodMatrix([cooling, heating])\n matrix.each row => do\n if (row->ts.date != d) return null\n mode: \"off\"\n if (row[\"v0\"] == true) mode = \"cool\"\n else if (row[\"v1\"] == true) mode = \"heat\"\n items = items.add({ts: row->ts, val: mode})\n end\n hisWrite(items, pt)\n end\n\n end\nend",,,,,,,,,,,,,,,,,,,,,,,,,2020-01-09T18:17:34.215Z ,^func:addMeta,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Return new grid with additional grid level meta-data tags.\nTags are added using `merge` conventions. Also see `setMeta`\nand `docSkySpark::Streams#addMeta`.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"addMeta",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:addRow,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Add an additional Dict row to the end of a grid.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"addRow",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:addRows,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Add an list of rows to the end of a grid.\nThe newRows may be expressed as list of Dict or a Grid.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"addRows",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:ahuCoolAndEcon,,,,,,,,,,,,,,,,,,,,,,,,,"AHU Cool and Econ",,,"Compute periods when AHU is in both cooling and economizing modes.\nSee `ahuCoolPeriods` and `ahuEconPeriods`.\n\nParams:\n - ahu: rec or grid of `ahu`\n - dates: any valid `hisRead` date range\n - minTime: minimum duration condition must persist before triggering\n\nReturns:\n - spark periods",,,,,,,,,,,,,,,M,,,,,"Unit is simultaneously running mechanical cooling with the outside\ndamper open. Most likely cause is a problem in the control algorithm.",,,,"func",,,,[^func],,,^lib:hvac,,,,,,,,,,,,"ahuCoolAndEcon",,,,,,,,,M,,,,,,,,,,,,,,,,,,,"ahu",^ruleTypeBase,,,M,"(ahu, dates, minTime: 0min) => do\n // normalize minTime to hours\n minTime = minTime.to(1h)\n\n // get periods when cooling and heating\n cool: ahuCoolPeriods(ahu, dates)\n econ: ahuEconPeriods(ahu, dates)\n\n // compute intersection of those periods\n hisPeriodIntersection([cool, econ])\n .findAll(r => r->v0 >= minTime)\n end",,,,,,,,,,,,,,,,,,,,,,,,, ,^func:ahuCoolAndHeat,,,,,,,,,,,,,,,,,,,,,,,,,"AHU Cool and Heat",,,"Compute periods when AHU is in both cooling and heating modes.\nSee `ahuCoolPeriods` and `ahuHeatPeriods`.\n\nParams:\n - ahu: rec or grid of `ahu`\n - dates: any valid `hisRead` date range\n - minTime: minimum duration condition must persist before triggering\n\nReturns:\n - spark periods",,,,,,,,,,,,,,,M,,,,,"Unit is simultaneously running mechanical cooling and mechanical heating.\nMost likely cause is a problem in the control algorithm.",,,,"func",,,,[^func],,,^lib:hvac,,,,,,,,,,,,"ahuCoolAndHeat",,,,,,,,,M,,,,,,,,,,,,,,,,,,,"ahu",^ruleTypeBase,,,M,"(ahu, dates, minTime: 0min) => do\n // normalize minTime to hours\n minTime = minTime.to(1h)\n\n // get periods when cooling and heating\n cool: ahuCoolPeriods(ahu, dates)\n heat: ahuHeatPeriods(ahu, dates)\n\n // compute intersection of those periods\n hisPeriodIntersection([cool, heat])\n .findAll(r => r->v0 >= minTime)\n end",,,,,,,,,,,,,,,,,,,,,,,,, @p:demo:r:25aa2aba-bfb36221 "AHU Cool and Heat Example",^func:ahuCoolAndHeatExample,,,,,,,,,,,,,,,,,,,,,,,,,"AHU Cool and Heat Example",,,,,,,,,,,,,,,,,,M,,,,,"Unit is simultaneously running mechanical cooling and mechanical heating.\nMost likely cause is a problem in the control algorithm.",,,,,,,,,,,^lib:proj_demo,,,,,,,,,,,,"ahuCoolAndHeatExample",,,,,,,,,,,,,,,,,,,,,,,,,,,,"ahu",,,,M,"// Example code for ahuCoolAndHeat found in standard hvac library\n(ahu, dates) => do\n\n // get periods when cooling and heating\n cool: ahuCoolPeriods(ahu, dates)\n heat: ahuHeatPeriods(ahu, dates)\n\n // compute intersection of those periods\n hisPeriodIntersection([cool, heat])\nend",,,,,,,,,,,,,,,,,,,,,,,,,2020-01-09T18:17:34.198Z @p:demo:r:25aa2aba-0104052a "AHU Cool Failure",^func:ahuCoolFailure,,,,,,,,,,,,,,,,,,,,,,,,,"AHU Cool Failure",,,,,,,,,,,,,,,,,,M,,,,,"Unit is cooling, but temperature drop between return sensor and\ndischarge sensor is under expected threshold\n\nRecommended Actions\n===================\n1. Check to see if cooling coil is dirty\n2. Check refrigerant levels in cooling system\n\n**Priority:** Medium",,,,,,,,,,,^lib:proj_demo,,,,,,,,,,,,"ahuCoolFailure",,,,,,,,,,,,,,,,,,,,,,,,,,,,"ahu",,,,M,"/*\n Unit is cooling, but temperature drop between return sensor and\n discharge sensor is under expected threshold\n\n Params:\n - ahu: rec or grid of `ahu`\n - dates: any valid `hisRead` date range\n - expected: drop in temperature when in cooling mode;\n default is 4Δ°C or 8Δ°F\n\n Returns:\n - spark periods\n */\n(ahu, dates, expected:null) => do\n\n // get temp points\n returnTemp: toAhuReturnTemp(ahu)\n dischargeTemp: toAhuDischargeTemp(ahu)\n\n // if expected is null, use suitable default based\n // on dischargeTemp which is a required point\n if (expected == null)\n expected = if (isMetric(dischargeTemp)) 4Δ°C else 8Δ°F\n\n // get times when temp drop is not over expected\n dropNotEnough: ahuTempDiff(dischargeTemp, returnTemp, dates).hisFindPeriods(t => t != null and t != na() and t < expected)\n\n // get cool periods\n cooling: ahuCoolPeriods(ahu, dates)\n\n // compute intersection of periods\n hisPeriodIntersection([dropNotEnough, cooling])\nend",,,,,,,,,,,,,,,,,,,,,,,,,2020-01-09T18:17:34.194Z ,^func:ahuCoolHeatCycling,,,,,,,,,,,,,,,,,,,,,,,,,"AHU Cool/Heat Cycling",,,"Compute periods between cooling and heating which do not\nmeeting a min time.\n\nParams:\n - ahu: rec or grid of `ahu`\n - dates: any valid `hisRead` date range\n - minTime: duration for minimum time b/w heating and cooling\n\nReturns:\n - history grid where value columns are durations equip is cycling",,,,,,,,,,,,,,,M,,,,,"AHU is cycling between cooling and heating and not meeting\na min amount of time required between these two modes.",,,,"func",,,,[^func],,,^lib:hvac,,,,,,,,,,,,"ahuCoolHeatCycling",,,,,,,,,M,,,,,,,,,,,,,,,,,,,"ahu",^ruleTypeBase,,,M,"(ahu, dates, minTime: 10min) => do\n\n // normalize min time to hours\n minTime = minTime.to(1h)\n\n // find matrix of cooling and heating periods\n cool: ahuCoolPeriods(ahu, dates)\n heat: ahuHeatPeriods(ahu, dates)\n matrix: hisPeriodMatrix([cool, heat])\n\n // create function to look for periods where both cool+heat\n // overlap or for transitions which don't meet minTime\n matchFunc: (cur, i) => do\n // if this is a period where both cool and heat are\n // running, then definitely consider it a match\n if (cur->numTrue == 2) return true\n\n // get previous row and next row\n if (i < 1 or i+1 >= matrix.size) return false\n prev: matrix[i - 1]\n next: matrix[i + 1]\n\n // look for these transitions:\n // prev cur next\n // ---- --- ----\n // cool -> off -> heat\n // heat -> off -> cool\n // where off duration is less then our min time\n return prev->numTrue > 0 and // prev: either cool or heat was on\n cur->numTrue == 0 and // cur: both cool and heat off\n next->numTrue > 0 and // next: either cool or heat was on\n prev->v0 != next->v0 and // we made transition from cool<->heat\n cur->dur < minTime // and off period doesn't meet min time\n end\n\n // find our matching periods, turn them back into normal ts/dur rows\n matrix.findAll(matchFunc).map(r => {ts: r->ts, v0: r->dur })\nend",,,,,,,,,,,,,,,,,,,,,,,,, ,^func:ahuCoolPeriods,,,,,,,,,,,,,,,,,,,,,,,,,"Cool Periods",,,"Compute periods when AHU is in cooling mode or matches given criteria.\nIf there are multiple stages of cooling, only stage 1 is considered.\n\nParams:\n - ahu: `ahu` with `toAhuCool` point\n - dates: any valid `hisRead` date range\n - match: critera to match via `matchPointVal`\n\nReturns:\n - history grid of duration values",,,,,,,,,,,,,,,M,,,,,"Periods of time when mechanical cooling is active. If multiple\nstages of cooling, only stage 1 is considered.",,,,"func",,,,[^func],,,^lib:hvac,,,,,,,,,,,,"ahuCoolPeriods",,,,,,,,,M,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,"(ahu, dates, match:true) => do\n ahu.toAhuCool.hisRead(dates).hisFindPeriods(matchPointVal(_, match))\nend",,,,,,,,,,,,,,,,,,,,,,,,, ,^func:ahuEconPeriods,,,,,,,,,,,,,,,,,,,,,,,,,"Econ Periods",,,"Compute periods when AHU is in economizing mode when the damper\nposition is over 10%.\n\nParams:\n - ahu: `ahu` with `toAhuOutsideDamper` point\n - dates: any valid `hisRead` date range\n - match: critera to match damper via `matchPointVal`, default 10% to 100%\n\nReturns:\n - history grid of duration values",,,,,,,,,,,,,,,M,,,,,"Periods of time when the outside damper is open beyond its\nminimum fresh air position to economize cooling.",,,,"func",,,,[^func],,,^lib:hvac,,,,,,,,,,,,"ahuEconPeriods",,,,,,,,,M,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,"(ahu, dates, match:10..100) => do\n ahu.toAhuOutsideDamper.hisRead(dates).hisFindPeriods(matchPointVal(_, match))\nend",,,,,,,,,,,,,,,,,,,,,,,,, ,^func:ahuFanFailure,,,,,,,,,,,,,,,,,,,,,,,,,"AHU Fan Failure",,,"Params:\n - ahu: rec or grid of `ahu`\n - dates: any valid `hisRead` date range\n\nReturns:\n - spark periods",,,,,,,,,,,,,,,M,,,,,"Fan is on but dischargePressure is below threshold of\n0.05kPa or 0.25inH₂O",,,,"func",,,,[^func],,,^lib:hvac,,,,,,,,,,,,"ahuFanFailure",,,,,,,,,M,,,,,,,,,,,,,,,,,,,"ahu",^ruleTypeBase,,,M,"(ahu, dates, minTime: 0min) => do\n // normalize minTime to hours\n minTime = minTime.to(1h)\n\n // get discharge pression and figure out\n // threshold metric or US customary unit\n pressure: toAhuDischargePressure(ahu)\n threshold: if (pressure->unit == \"kPa\") 0.05kPa else 0.25inH₂O\n\n fanOn: ahuFanPeriods(ahu, dates)\n pressureOff: hisRead(pressure, dates).hisFindPeriods(p => p < threshold)\n\n // compute intersection of periods\n hisPeriodIntersection([fanOn, pressureOff])\n .findAll(r => r->v0 >= minTime)\n end",,,,,,,,,,,,,,,,,,,,,,,,, ,^func:ahuFanPeriods,,,,,,,,,,,,,,,,,,,,,,,,,"Fan Periods",,,"Compute periods when AHU's supply fan is running or matches given criteria.\n\nParams:\n - ahu: `ahu` with `toAhuDischargeFan` point\n - dates: any valid `hisRead` date range\n - match: critera to match via `matchPointVal`\n\nReturns:\n - history grid of duration values\n\nExamples:\n // find periods where fan is on or over 0%\n read(...).ahuFanPeriods(yesterday)\n\n // find periods where fan is off or 0%\n read(...).ahuFanPeriods(2010-08, false)\n\n // find periods where variable speed fan is between 0% to 40%\n read(...).ahuFanPeriods(pastWeek, 0..40)",,,,,,,,,,,,,,,M,,,,,"Periods of time when the supply fan is running.",,,,"func",,,,[^func],,,^lib:hvac,,,,,,,,,,,,"ahuFanPeriods",,,,,,,,,M,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,"(ahu, dates, match:true) => do\n ahu.toAhuDischargeFan.hisRead(dates).hisFindPeriods(matchPointVal(_, match))\nend",,,,,,,,,,,,,,,,,,,,,,,,, @p:demo:r:25aa2aba-fc521aca "AHU Group Cool and Heat",^func:ahuGroupCoolAndHeat,,,,,,,,,,,,,,,,,,,,,,,,,"AHU Group Cool and Heat",,,,,,,,,,,,,,,,,,M,,,,,"A group of AHUs have at least one unit in cooling mode at the same\nas another unit is in heating mode. These units may be \"fighting\" each\nother to maintain temperature setpoints.\n\nRecommended Actions\n===================\nCheck control sequences.\n\n**Priority:** Medium",,,,,,,,,,,^lib:proj_demo,,,,,,,,,,,,"ahuGroupCoolAndHeat",,,,,,,,,,,,,,,,,,,,,,,,,,,,"ahuGroup",,,,M,"/*\n Find the intersection of periods where any one unit is\n is in heating mode and another unit is in cooling mode.\n*/\n(ahuGroup, dates) => do\n // get periods when any AHU in group is cooling\n cool: readAll(ahu and equipRef==ahuGroup->id)\n .toRecList\n .map(ahu => ahuCoolPeriods(ahu, dates))\n .hisPeriodUnion\n\n // get periods any any AHU in group is heating\n heat: readAll(ahu and equipRef==ahuGroup->id)\n .toRecList\n .map(ahu => ahuHeatPeriods(ahu, dates))\n .hisPeriodUnion\n\n // compute intersection\n faults: hisPeriodIntersection([cool, heat])\n\n // add costing/priority to the spark as additional tags\n faults.addMeta({spark_priority: \"med\"})\nend",,,,,,,,,,,,,,,,,,,,,,,,,2020-01-09T18:17:34.199Z ,^func:ahuHeatAndEcon,,,,,,,,,,,,,,,,,,,,,,,,,"AHU Heat and Econ",,,"Compute periods when AHU is in both cooling and economizing modes.\nSee `ahuHeatPeriods` and `ahuEconPeriods`.\n\nParams:\n - ahu: rec or grid of `ahu`\n - dates: any valid `hisRead` date range\n - minTime: minimum duration condition must persist before triggering\n\nReturns:\n - spark periods",,,,,,,,,,,,,,,M,,,,,"Unit is simultaneously running mechanical heating with the outside\ndamper open. Most likely cause is a problem in the control algorithm.",,,,"func",,,,[^func],,,^lib:hvac,,,,,,,,,,,,"ahuHeatAndEcon",,,,,,,,,M,,,,,,,,,,,,,,,,,,,"ahu",^ruleTypeBase,,,M,"(ahu, dates, minTime: 0min) => do\n // normalize minTime to hours\n minTime = minTime.to(1h)\n\n // get periods when cooling and heating\n heat: ahuHeatPeriods(ahu, dates)\n econ: ahuEconPeriods(ahu, dates)\n\n // compute intersection of those periods\n hisPeriodIntersection([heat, econ])\n .findAll(r => r->v0 >= minTime)\n end",,,,,,,,,,,,,,,,,,,,,,,,, ,^func:ahuHeatPeriods,,,,,,,,,,,,,,,,,,,,,,,,,"Heat Periods",,,"Compute periods when AHU is in heating mode or matches given criteria.\nIf there are multiple stages of heating, only stage 1 is considered.\n\nParams:\n - ahu: `ahu` with `toAhuHeat` point\n - dates: any valid `hisRead` date range\n - match: critera to match via `matchPointVal`\n\nReturns:\n - history grid of duration values",,,,,,,,,,,,,,,M,,,,,"Periods of time when mechanical heating is active. If multiple\nstages of heating, only stage 1 is considered.",,,,"func",,,,[^func],,,^lib:hvac,,,,,,,,,,,,"ahuHeatPeriods",,,,,,,,,M,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,"(ahu, dates, match:true) => do\n ahu.toAhuHeat.hisRead(dates).hisFindPeriods(matchPointVal(_, match))\nend",,,,,,,,,,,,,,,,,,,,,,,,, ,^func:ahuOnAndFanOff,,,,,,,,,,,,,,,,,,,,,,,,,"AHU On and Fan Off",,,"Params:\n - ahu: rec or grid of `ahu`\n - dates: any valid `hisRead` date range\n - minTime: minimum duration condition must persist before triggering\n\nReturns:\n - spark periods",,,,,,,,,,,,,,,M,,,,,"The unit has some component in the \"on\" state such as cooling\nor heating, however the fan is not running.",,,,"func",,,,[^func],,,^lib:hvac,,,,,,,,,,,,"ahuOnAndFanOff",,,,,,,,,M,,,,,,,,,,,,,,,,,,,"ahu",^ruleTypeBase,,,M,"(ahu, dates, minTime: 0min) => do\n // normalize minTime to hours\n minTime = minTime.to(1h)\n\n // get our periods\n fanOff: ahuFanPeriods(ahu, dates, false)\n onPeriods: [ahuCoolPeriods(ahu, dates),\n ahuHeatPeriods(ahu, dates)]\n\n // compute intersection of periods\n hisPeriodIntersection([fanOff, hisPeriodUnion(onPeriods)])\n .findAll(r => r->v0 >= minTime)\nend",,,,,,,,,,,,,,,,,,,,,,,,, @p:demo:r:25aa2aba-17c4b2b5 "AHU Outside Damper Stuck Closed",^func:ahuOutsideDamperStuckClosed,,,,,,,,,,,,,,,,,,,,,,,,,"AHU Outside Damper Stuck Closed",,,,,,,,,,,,,,,,,,M,,,,,"Damper should be open, but temp differential between mixed air\nsensor and outisde air sensor indicates that outside air is not\nbeing brought in. If mixed sensor is not available we use discharge\nsensor but only when unit is not cooling nor heating.\n\nRecommended Actions\n===================\n1. Look to see if damper control signal is oscillating\n2. Look to see if damper is being commanded closed during times sparks are found\n3. Manually check damper to see if linkage is broken or stuck\n\n**Priority:** Medium",,,,,,,,,,,^lib:proj_demo,,,,,,,,,,,,"ahuOutsideDamperStuckClosed",,,,,,,,,,,,,,,,,,,,,,,,,,,,"ahu",,,,M,"/*\n Damper should be open, but temp differential between mixed air\n sensor and outisde air sensor indicates that outside air is not\n being brought in. If mixed sensor is available we use discharge\n sensor but only when unit is not cooling nor heating.\n\n Params:\n - ahu: rec or grid of `ahu`\n - dates: any valid `hisRead` date range\n - tolerance: range of temps in Δ°C or Δ°F, or if unspecified\n default is +/-4Δ°C or +/-8Δ°F\n\n Returns:\n - spark periods\n */\n(ahu, dates, tolerance:null) => do\n // if tolerance is null, use suitable default based\n // on outsideTemp which is a required point\n outsideTemp: toAhuOutsideTemp(ahu)\n if (tolerance == null)\n tolerance = if (isMetric(outsideTemp)) 4Δ°C else 8Δ°F\n\n // get our periods\n fanOn: ahuFanPeriods(ahu, dates)\n damperOpen: ahuEconPeriods(ahu, dates, 70..100)\n\n // if we have mixed air sensor find periods outside of our\n // tolerance range; otherwise use difference between outside\n // and discharge but only when heating and cooling is off\n match: diff => diff != na() and diff.abs > tolerance\n mixedTemp: toAhuMixedTemp(ahu, false)\n if (mixedTemp != null) do\n tempPeriods: ahuTempDiff(outsideTemp, mixedTemp, dates).hisFindPeriods(match)\n else do\n dischargeTemp: toAhuDischargeTemp(ahu)\n tempPeriods: hisPeriodIntersection([\n ahuTempDiff(outsideTemp, dischargeTemp, dates).hisFindPeriods(match),\n ahuCoolPeriods(ahu, dates, false),\n ahuHeatPeriods(ahu, dates, false)])\n end\n\n // compute intersection of periods\n hisPeriodIntersection([fanOn, damperOpen, tempPeriods])\nend",,,,,,,,,,,,,,,,,,,,,,,,,2020-01-09T18:17:34.193Z @p:demo:r:25aa2aba-48c524d4 "AHU Outside Damper Stuck Open",^func:ahuOutsideDamperStuckOpen,,,,,,,,,,,,,,,,,,,,,,,,,"AHU Outside Damper Stuck Open",,,,,,,,,,,,,,,,,,M,,,,,"Damper should be closed, but temp differential between mixed air\nsensor and return air sensor indicates that significant outside\nair is being mixed. If mixed sensor is not available we use discharge\nsensor but only when unit is not cooling nor heating.\n\nRecommended Actions\n===================\n1. Look to see if damper control signal is oscillating\n2. Look to see if damper is being commanded open during times sparks are found\n3. Manually check damper to see if linkage is broken or stuck\n\n**Priority:** Medium",,,,,,,,,,,^lib:proj_demo,,,,,,,,,,,,"ahuOutsideDamperStuckOpen",,,,,,,,,,,,,,,,,,,,,,,,,,,,"ahu",,,,M,"/*\n Damper should be closed, but temp differential between mixed air\n sensor and return air sensor indicates that significant outside\n air is being mixed. If mixed sensor is available we use discharge\n sensor but only when unit is not cooling nor heating.\n\n Params:\n - ahu: rec or grid of `ahu`\n - dates: any valid `hisRead` date range\n - tolerance: range of temps in Δ°C or Δ°F, or if unspecified\n default is +/-4Δ°C or +/-8Δ°F\n\n Returns:\n - spark periods\n */\n(ahu, dates, tolerance:null) => do\n // if tolerance is null, use suitable default based\n // on returnTemp which is a required point\n returnTemp: toAhuReturnTemp(ahu)\n if (tolerance == null)\n tolerance = if (isMetric(returnTemp)) 4Δ°C else 8Δ°F\n\n // get our periods\n fanOn: ahuFanPeriods(ahu, dates)\n damperClosed: ahuEconPeriods(ahu, dates, 0..10)\n\n // if we have mixed air sensor find periods outside of our\n // tolerance range; otherwise use difference between return\n // and discharge but only when heating and cooling is off\n match: diff => diff != na() and diff.abs > tolerance\n mixedTemp: toAhuMixedTemp(ahu, false)\n if (mixedTemp != null) do\n tempPeriods: ahuTempDiff(mixedTemp, returnTemp, dates).hisFindPeriods(match)\n else do\n dischargeTemp: toAhuDischargeTemp(ahu)\n tempPeriods: hisPeriodIntersection([\n ahuTempDiff(returnTemp, dischargeTemp, dates).hisFindPeriods(match),\n ahuCoolPeriods(ahu, dates, false),\n ahuHeatPeriods(ahu, dates, false)])\n end\n\n // compute intersection of periods\n hisPeriodIntersection([fanOn, damperClosed, tempPeriods])\nend",,,,,,,,,,,,,,,,,,,,,,,,,2020-01-09T18:17:34.192Z @p:demo:r:25aa2aba-47ae3211 "ahuTempDiff",^func:ahuTempDiff,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,,,,,,,,^lib:proj_demo,,,,,,,,,,,,"ahuTempDiff",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"/*\n Temperature differential between two points, return\n history grid of 'point2 - point1'.\n*/\n(point1, point2, dates) => do\n hisRead([point1, point2], dates).hisInterpolate.map row => do\n {ts: row->ts, v0: row[\"v1\"] - row[\"v0\"] }\n end\nend",,,,,,,,,,,,,,,,,,,,,,,,,2020-01-09T18:17:34.196Z ,^func:alert,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:alert,,,,,,,,,,,,"alert",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,M,,,,,,,,,,,,,,,,,,,,,,, ,^func:alertSilence,,M,,,,,,,,,,,,,,,,,,,,,,,,"ui::silence",,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:alert,,,,,,,,,,,,"alertSilence",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,M,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:alerts,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:alert,,,,,,,,,,,,"alerts",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:all,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Return if all the items in a list, dict, or grid match the\ngiven test function. If the collection is empty, then return\ntrue.\n\nIf working with a list, the function takes '(val)'\nor '(val, index)' and returns true or false.\n\nIf working with a dict, the function takes '(val)'\nor '(val, name)' and returns true or false.\n\nIf working with a grid, the function takes '(row)'\nor '(row, index)' and returns true or false.\n\nIf working with a stream, then function takes '(val)'\nand returns true or false. See `docSkySpark::Streams#all`.\n\nExamples:\n [1, 3, 5].all v => v.isOdd >> true\n [1, 3, 6].all(isOdd) >> false\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"all",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, @p:demo:r:25ce25b1-5596448c "allFeatures",^func:allFeatures,,,,,,,,,,,,,,,,,,,,,M,,,,,,,"Looks at all defs, and find all unique features",,,,,,,,,,,,,,,M,,,,,,,,,,,,,,,,^lib:proj_demo,,,,,,,,,,,,"allFeatures",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"// String list of all unique feature\n() => do\n finDefs()\n .findAll(v => v->def.toStr.contains(\":\"))\n .map(r => r->def.toStr.split(\":\")[0])\n .unique()\nend",,,,,,,,,,,,,,,,,,,,,,,,,2020-02-06T01:24:39.503Z ,^func:any,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Return if any the items in a list, dict, or grid match the\ngiven test function. If the collection is empty, then return\nfalse.\n\nIf working with a list, the function takes '(val)'\nor '(val, index)' and returns true or false.\n\nIf working with a dict, the function takes '(val)'\nor '(val, name)' and returns true or false.\n\nIf working with a grid, the function takes '(row)'\nor '(row, index)' and returns true or false.\n\nIf working with a stream, then function takes '(val)'\nand returns true or false. See `docSkySpark::Streams#any`.\n\nExamples:\n [1, 3, 5].any v => v.isOdd >> true\n [2, 4, 6].any(isOdd) >> false\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"any",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:apps,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"apps",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:as,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Set the unit of a number. Unlike `to` no conversion of the\nscalar of the number is performed. The target unit can be a\nunit string or a number in which case the scalar value of the\nunit parameter is ignored (by convention should be 1).\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"as",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:asin,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Return the arc sine.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:math,,,,,,,,,,,,"asin",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:aspects,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:legacy,,,,,,,,,,,,"aspects",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:associations,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"associations",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:atan,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Return the arc tangent.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:math,,,,,,,,,,,,"atan",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:atan2,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Converts rectangular coordinates (x, y) to polar (r, theta).\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:math,,,,,,,,,,,,"atan2",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:avg,,,,,,,,,,,,,,,,,,,,,,,,,,"ui::average",,"Fold multiple values into their standard average or arithmetic\nmean. This function is the same as [math::mean]`mean`. Null\nvalues are ignored. Return null if no values.\n\nExample:\n [7, 2, 3].fold(avg) >> 4\n",,,,,,,,,,,,,,"Number",M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"avg",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:bitAnd,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Bitwise and: 'a & b'\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:math,,,,,,,,,,,,"bitAnd",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:bitNot,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Bitwise not: '~a'\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:math,,,,,,,,,,,,"bitNot",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:bitOr,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Bitwise or: 'a | b'\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:math,,,,,,,,,,,,"bitOr",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:bitShiftl,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Bitwise left shift: 'a << b'\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:math,,,,,,,,,,,,"bitShiftl",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:bitShiftr,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Bitwise right shift: 'a >> b'\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:math,,,,,,,,,,,,"bitShiftr",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:bitXor,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Bitwise xor: 'a ^ b'\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:math,,,,,,,,,,,,"bitXor",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:call,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Reflectively call a function with the given arguments. The func\nmay be a Str name or an expression that evaluates to a function.\nArgs is a positional list for each argument. Examples:\n call(\"today\")\n call(\"replace\", [\"hi there\", \"hi\", \"hello\"])\n call(replace, [\"hi there\", \"hi\", \"hello\"])\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"call",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:capitalize,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Return this string with the first character converted to\nuppercase. The case conversion is for ASCII only.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"capitalize",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:ceil,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Return the smallest whole number greater than or equal to val.\nResult has same unit as 'val'.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:math,,,,,,,,,,,,"ceil",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:chart,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Set the grid visualization view to chart.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:legacy,,,,,,,,,,,,"chart",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:checkSyntax,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"checkSyntax",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:clusterApprove,,,,,,,,,,,,,,,,,,,,,,,,,,"ui::approve",,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:cluster,,,,,,,,,,,,"clusterApprove",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,M,,,,,M,,,,,,,,,,,,,,,,,,,,,,, ,^func:clusterClose,,,,,,,,,,,,,,,,,,,,,,,,,,"ui::close",,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:cluster,,,,,,,,,,,,"clusterClose",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,M,,,,,M,,,,,,,,,,,,,,,,,,,,,,, ,^func:clusterDebug,,,,,,,,,,,,,,,,,,,,,,,,,,"ui::debug",,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:cluster,,,,,,,,,,,,"clusterDebug",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,M,,,,,M,,,,,,,,,,,,,,,,,,,,,,, ,^func:clusterDebugView,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:cluster,,,,,,,,,,,,"clusterDebugView",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,M,,,,,,,,,,,,,,,,,,,,,,, ,^func:clusterDelete,,,,,,,,,,,,,{icon:"warn" disKey:"ui::clusterNodeDeleteConfirm" detailsKey:"ui::clusterNodeDeleteConfirmDetails"},,,,,,,,,,,,,"ui::delete",,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:cluster,,,,,,,,,,,,"clusterDelete",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,M,,,,,M,,,,,,,,,,,,,,,,,,,,,,, ,^func:clusterDisable,,,,,,,,,,,,,,,,,,,,,,,,,,"ui::disable",,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:cluster,,,,,,,,,,,,"clusterDisable",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,M,,,,,M,,,,,,,,,,,,,,,,,,,,,,, ,^func:clusterEdit,,,,,,,,,,,,,,,,,,,,,,,,,,"ui::edit",,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:cluster,,,,,,,,,,,,"clusterEdit",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,M,,,,,M,,,,,,,,,,,,,,,,,,,,,,, ,^func:clusterEnable,,,,,,,,,,,,,,,,,,,,,,,,,,"ui::enable",,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:cluster,,,,,,,,,,,,"clusterEnable",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,M,,,,,M,,,,,,,,,,,,,,,,,,,,,,, ,^func:clusterLocal,,,,,,,,,,,,,,,,,,,,,,,,,,"ui::localNode",,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:cluster,,,,,,,,,,,,"clusterLocal",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,M,,,,,,,,,,,,,,,,,,,,,,, ,^func:clusterNew,,,,,,,,,,,,,,,,,,,,,,,,,,"ui::new",,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:cluster,,,,,,,,,,,,"clusterNew",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,M,,,,,,,,,,,M,,,,,,,,,,,, ,^func:clusterReadAll,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:cluster,,,,,,,,,,,,"clusterReadAll",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,M,,,,,,,,,,,,,,,,,,,,,,, ,^func:clusterRestartHub,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:cluster,,,,,,,,,,,,"clusterRestartHub",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,M,,,,,,,,,,,,,,,,,,,,,,, ,^func:col,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Get a column by its name. If not resolved then\nreturn null or throw UnknownNameErr based on checked flag.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"col",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:colNames,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Get the column names a list of strings.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"colNames",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:colToList,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Get a column as a list of the cell values ordered by row.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"colToList",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:collect,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Collect stream into a in-memory list or grid.\nSee `docSkySpark::Streams#collect`.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"collect",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:cols,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Get the columns from a grid as a list.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"cols",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:colsToLocale,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Map each col display string to its localized tag name if the\ncol does not already have a display string. Also see\n`haystack::Grid.colsToLocale` and `docSkySpark::Localization#tags`.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"colsToLocale",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:commit,,M,,,,,,,,,,,,,,,,,,,,,,,,,,"Commit one or more diffs to the folio database.\nThe argument may be one of the following:\n - result of `diff()`\n - list of `diff()` to commit multiple diffs at once\n - stream of `diff()`; see `docSkySpark::Streams#commit`.\n\nIf one diff is passed, return the new record. If a list\nof diffs is passed return a list of new records.\n\nExamples:\n // add new record\n newRec: commit(diff(null, {dis:\"New Rec!\"}, {add}))\n\n // add someTag to some group of records\n readAll(filter).toRecList.map(r => diff(r, {someTag})).commit\n\nSide effects:\n - writes to folio database\n - clears context read cache\n",,,,,,,,,,,,,,,M,,"Commit diffs to proj database",,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"commit",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:compTester,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"compTester",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,"defcomp\n a: {foo, bar:123, defVal:10}\n b: {input, is:^number, defVal:7}\n add: {blah, readonly}\n sub: {readonly}\n foo: {readonly}\n do\n add = a + b\n sub = a - b\n end\nend",,,,,,,,,,,,,,,,,,,,,,,,, ,^func:concat,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Concatenate a list of items into a string.\n\nExamples:\n [1, 2, 3].concat >> \"123\"\n [1, 2, 3].concat(\",\") >> \"1,2,3\"\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"concat",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:conjuncts,,,,,,,,,,,,,,,,,,,,,,,,,,,,"List conjunct definitions in the context namespace as Def[].\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"conjuncts",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:connBuilderClose,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:conn,,,,,,,,,,,,"connBuilderClose",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:connBuilderDetails,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:conn,,,,,,,,,,,,"connBuilderDetails",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:connBuilderDisable,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:conn,,,,,,,,,,,,"connBuilderDisable",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:connBuilderEnable,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:conn,,,,,,,,,,,,"connBuilderEnable",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:connBuilderExts,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:conn,,,,,,,,,,,,"connBuilderExts",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:connBuilderPing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:conn,,,,,,,,,,,,"connBuilderPing",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:connBuilderReadConns,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:conn,,,,,,,,,,,,"connBuilderReadConns",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:connBuilderReadExts,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:conn,,,,,,,,,,,,"connBuilderReadExts",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:connBuilderReadPoints,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:conn,,,,,,,,,,,,"connBuilderReadPoints",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:contains,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Return if 'val' contains 'x':\n - if 'val' is Str, then 'x' is substring.\n - if 'val' is List, then 'x' is item to search.\n - if 'val' is Range, then is 'x' inside the range inclusively\n - if 'val' is DateSpan, then is 'x' a date in the span\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"contains",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:context,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Get the current context as a Dict with the following tags:\n - 'username' for current user\n - 'userRef' if user maps to a rec in current project\n - 'projName' if evaluating in context of a project\n - 'nodeId' local cluster node id\n - 'ruleRef' if evaluating in context of a spark engine rule\n - 'locale' current locale\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"context",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:contextClearCache,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"contextClearCache",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, @p:demo:r:25aa2aba-c121b834 "convertToMetric",^func:convertToMetric,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,,,,,,,,^lib:proj_demo,,,,,,,,,,,,"convertToMetric",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"/*\n\n This function is used to convert the demo database from US cities\n and imperial units to British cities and the metric system. You\n may customize the cities and changes in the tables below.\n\n This function should be spawn as a job. From the Tools|Shell view\n run this expression:\n\n jobRun( convertToMetric() )\n\n*/\n() => do\n\n ////////////////////////////////////////////////////////////////////\n // constants\n ////////////////////////////////////////////////////////////////////\n\n newCurrency: \"£\"\n newTimeZone: \"London\"\n logCat: \"convertToMetric\"\n\n ////////////////////////////////////////////////////////////////////\n // region rec changes keyed by display name\n ////////////////////////////////////////////////////////////////////\n\n regionChanges: {\n \"Richmond\": { dis: \"London\" },\n \"Washington DC\": { dis: \"Manchester\" },\n }\n\n ////////////////////////////////////////////////////////////////////\n // weather rec changes keyed by display name\n ////////////////////////////////////////////////////////////////////\n\n weatherChanges: {\n \"Richmond, VA\":\n {\n dis: \"London\",\n geoCoord: coord(51.517,-0.106),\n geoCity: \"London\",\n geoCountry: \"GB\",\n tz: newTimeZone,\n -geoState,\n },\n\n \"Washington, DC\":\n {\n dis: \"Manchester\",\n geoCoord: coord(53.483,-2.25),\n geoCity: \"Manchester\",\n geoCountry: \"GB\",\n tz: newTimeZone,\n -geoState,\n },\n }\n\n ////////////////////////////////////////////////////////////////////\n // site rec changes keyed by display name\n ////////////////////////////////////////////////////////////////////\n\n siteChanges: {\n \"Headquarters\": {\n dis: \"Headquarters\",\n geoAddr: \"46 Westferry Circus, Canary Wharf, London, E14 8RS\",\n geoCoord: coord(51.506699,-0.02802),\n geoStreet: \"46 Westferry Circus\",\n geoPostalCode: \"E14 8RS\",\n geoCity: \"London\",\n geoCountry: \"GB\",\n tz: \"London\",\n -geoState, -metro,\n },\n\n \"Carytown\": {\n dis: \"Richmond\",\n geoAddr: \"29 George St Richmond, Greater London TW9 1HY\",\n geoCoord: coord(51.460784,-0.304304),\n geoStreet: \"29 George St\",\n geoPostalCode: \"TW9 1HY\",\n geoCity: \"Richmond\",\n geoCountry: \"GB\",\n tz: newTimeZone,\n -geoState, -metro,\n },\n\n \"Short Pump\": {\n dis: \"Enfield\",\n geoAddr: \"70 Lancaster Road Gordon Hill, Enfield EN2 0BX\",\n geoCoord: coord(51.663672,-0.079569),\n geoStreet: \"70 Lancaster Rd\",\n geoPostalCode: \"EN2 0BX\",\n geoCity: \"Enfield\",\n geoCountry: \"GB\",\n tz: newTimeZone,\n -geoState, -metro,\n },\n\n \"Gaithersburg\": {\n dis: \"Manchester\",\n geoAddr: \"401 Great Western St Manchester M14 4AH\",\n geoCoord: coord(53.456852,-2.227029),\n geoStreet: \"401 Great Western St\",\n geoPostalCode: \"M14 4AH\",\n geoCity: \"Manchester\",\n geoCountry: \"GB\",\n tz: newTimeZone,\n -geoState, -metro,\n },\n }\n\n ////////////////////////////////////////////////////////////////////\n // utility to commit diff\n ////////////////////////////////////////////////////////////////////\n\n commitChanges: (what, rec, changes) => do\n logInfo(logCat, \"Change \" + what + \": \" + rec.dis + \" => \" + changes.dis)\n diff(rec, changes).commit\n end\n\n ////////////////////////////////////////////////////////////////////\n // utility to convert units of history\n ////////////////////////////////////////////////////////////////////\n\n convertUnit: (rec, newUnit) => do\n oldUnit: rec->unit\n logInfo(logCat, \"Change unit \" + oldUnit + \" => \" + newUnit + \": \" + rec.dis)\n hisRewrite(rec) (val, ts) => [ts, val.to(newUnit)]\n end\n\n ////////////////////////////////////////////////////////////////////\n // utility to convert timezones\n ////////////////////////////////////////////////////////////////////\n\n convertTimeZone: (rec) => do\n logInfo(logCat, \"Change tz \" + rec[\"tz\"] + \" => \" + newTimeZone + \": \" + rec.dis)\n if (rec.has(\"hisFunc\"))\n diff(rec, {tz: newTimeZone}).commit\n else\n hisRewrite(rec) (val, ts) => [dateTime(ts.date, ts.time, newTimeZone), val]\n end\n\n ////////////////////////////////////////////////////////////////////\n // main\n ////////////////////////////////////////////////////////////////////\n\n // lets get this party started\n logInfo(logCat, \"Begin conversion...\")\n\n // modify regions\n readAll(region).each rec => do\n changes: regionChanges[rec->dis]\n if (changes == null) return logWarn(logCat, \"Region not mapped: \" + rec.dis)\n commitChanges(\"region\", rec, changes)\n end\n\n // modify weather\n readAll(weather).each rec => do\n changes: weatherChanges[rec->dis]\n if (changes == null) return logWarn(logCat, \"Weather not mapped: \" + rec.dis)\n commitChanges(\"weather\", rec, changes)\n end\n\n // modify sites\n readAll(site).each rec => do\n changes: siteChanges[rec->dis]\n if (changes == null) return logWarn(logCat, \"Site not mapped: \" + rec.dis)\n changes = changes.set(\"area\", rec->area.to(1m²))\n commitChanges(\"site\", rec, changes)\n end\n\n // change units\n readAll(unit==\"°F\").each rec => convertUnit(rec, \"°C\")\n readAll(unit==\"inH₂O\").each rec => convertUnit(rec, \"kPa\")\n readAll(unit==\"gal\").each rec => convertUnit(rec, \"m³\")\n readAll(unit==\"\\\$\").each rec => diff(rec, {unit:newCurrency}).commit\n readAll(costPerHour).each rec => diff(rec, {costPerHour:rec->costPerHour.as(newCurrency)}).commit\n\n // change timezone of all points\n readAll(his and tz==\"New_York\").each rec => convertTimeZone(rec)\n\n // change dis tags of KPIs\n try do\n read(dis==\"kW Norm (kW/ft²/°daysF)\").diff({dis:\"kW Norm (kW/m²/°daysC)\"}).commit\n read(dis==\"kWh Norm (kWh/ft²/°daysF)\").diff({dis:\"kWh Norm (kWh/m²/°daysC)\"}).commit\n read(dis==\"kWh Δ Prev Year (kWh/°daysF)\").diff({dis:\"kWh Δ Prev Year (kWh/°daysC)\"}).commit\n catch\n logWarn(logCat, \"KPIs not found\")\n\n // fix kpiSparkCost unit\n try do\n newSrc: \"(site, dates) => do\\n\" +\n \" sparks: navFilter(\\\"sparkTarget\\\", site).sparks(dates)\\n\" +\n \" cost: if (sparks.missing(\\\"cost\\\")) 0\" + newCurrency + \" else sparks.foldCol(\\\"cost\\\", sum)\\n\" +\n \" if (na() == cost) null else {sum: cost}\\n\" +\n \"end\"\n\n read(name==\"kpiSparkCost\").diff({src: newSrc}).commit\n catch\n logWarn(logCat, \"Failed to fix kpiSparkCost\")\n\n // recompute rules\n logInfo(logCat, \"Recompute rules\")\n ruleRosterRefresh()\n ruleDelete(null, null, null)\n\n // all done!\n logInfo(logCat, \"Conversion complete!\")\n\nend",,,,,,,,,,,,,,,,,,,,,,,,,2020-01-09T18:17:34.214Z ,^func:coord,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Construct a Coord from two Numbers in decimal degrees\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"coord",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:coordDist,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Given a two Coords, compute the great-circle distance between\nthem in meters using the haversine forumula.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"coordDist",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:coordLat,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Latitude of a Coord as a Number\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"coordLat",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:coordLng,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Longitude of a Coord as a Number\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"coordLng",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:cos,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Return the cosine of angle in radians.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:math,,,,,,,,,,,,"cos",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:cosh,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Return the hyperbolic cosine.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:math,,,,,,,,,,,,"cosh",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:count,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Fold multiple values into their total count\nReturn zero if no values.\n",,,,,,,,,,,,,,"Obj",M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"count",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:covAvg,,,,,,,,,,,,,,,,,,,,,,,,,,"ui::covAvg",,"Folding function for generating a time weighted average\non change-of-value histories (where `hisInterpolate` is \"cov\").\nThe average is calcualted by weighting each sample with\nits ratio of duration in the the overall interval. For\nexample given the following time/value pairs:\n\n 00:00 10\n 02:00 30\n 12:00 70\n\nIf performing a 1day rollup with the data above, the point\nhad a value of 10 for 2 hours, a value of 30 for ten hours,\nand a value of 70 for 12 hours (until end of day). The\ntime weighted COV average would be 48.3:\n 10 * (2/24) + 30 * (10/24) + 70 * (12/24)\n\nIf any value in the rollup interval is `na()`, then the\nresult is `na()`.\n",,,,,,,,,,,,,,"Number",M,,,,,,,,,"func",,,,[^func],,,^lib:his,,,,,,,,,,,,"covAvg",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, @p:demo:r:25ce19f4-6395689c "createDefExtension",^func:createDefExtension,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,,,,,,,,^lib:proj_demo,,,,,,,,,,,,"createDefExtension",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"// adds a new record with the \"finExtension\" marker tag\n// targetDef is the def to extend. (Str or Def)\n// props is a dict will be the def extension\n// createDefExtension(^site, {foo: 123})\n(targetDef, props) => do\n if (targetDef.isStr)\n targetDef = targetDef.parseSymbol\n \n defExtension: read(defExtension and def == targetDef, false)\n \n // new def extension\n if (defExtension == null)\n return diff(null, props.merge({def: targetDef, defExtension}), {add}).commit\n \n // editing def extension\n return defExtension.diff(props).commit\nend",,,,,,,,,,,,,,,,,,,,,,,,,2020-02-06T01:03:33.187Z ,^func:cryptoEntryDelete,,,,,,,,,,,,,{icon:"warn" disKey:"ui::cryptoDeleteConfirm" detailsKey:"ui::cryptoDeleteConfirmDetails"},,,,,,,,,,,,,"ui::delete",,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:crypto,,,,,,,,,,M,,"cryptoEntryDelete",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,M,,,,,M,,,,,,,,,,,,,,,,,,,,,,, ,^func:cryptoEntryRename,,,,,,,,,,,,,,,,,,,,,,,,,,"ui::rename",,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:crypto,,,,,,,,,,,,"cryptoEntryRename",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,M,,,,,M,,,,,,,,,,,,,,,,,,,,,,, ,^func:cryptoReadAllKeys,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:crypto,,,,,,,,,,,,"cryptoReadAllKeys",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,M,,,,,,,,,,,,,,,,,,,,,,, ,^func:cryptoTrustUri,,,,,,,,,,,,,,,,,,,,,,,,,,"ui::trustUri",,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:crypto,,,,,,,,,,,,"cryptoTrustUri",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,M,,,,,,,,,,,,,,,,,,,,,,, ,^func:curFunc,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Get the current top-level function's tags.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"curFunc",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:date,,,,,,,,,,,,,,,,,,,,,,,,,,,,"If val is a DateTime: get date portion of the timestamp.\nIf val is a Number: construct a date instance from year, month, day\n\nExamples:\n now().date // same as today()\n date(2010, 12, 1) // same as 2010-12-01\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"date",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:dateTime,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Construct a DateTime from a date, time, and timezone name.\nIf timezone is null, use system default.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"dateTime",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:day,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Get day of month as integer between 1 to 31 from date or datetime.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"day",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:dayOfYear,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Given a DateTime or Date, return the day of the year as a number between\n1 and 365 (or 1 to 366 if a leap year).\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"dayOfYear",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:debugHost,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:debug,,,,,,,,,,,,"debugHost",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,M,,,,,,,,,,,,,,,,,,,,,,, ,^func:debugLint,,M,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:debug,,,,,,,,,,,,"debugLint",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:debugProj,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:debug,,,,,,,,,,,,"debugProj",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,M,,,,,,,,,,,,,,,,,,,,,,, ,^func:debugThreads,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:debug,,,,,,,,,,,,"debugThreads",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,M,,,,,,,,,,,,,,,,,,,,,,, ,^func:debugType,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Return a string of the given value's type. No guarantee is made\nfor the string's format. Applications must **not** assume any\nspecific format, this function is for human consumption only.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"debugType",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:decapitalize,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Return this string with the first character converted to\nlowercase. The case conversion is for ASCII only.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"decapitalize",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:def,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Lookup a def by its symbol name (Str or Symbol). If not\nfound return null or raise UnknownDefErr based on checked flag.\nThe result is returned as the definition's normalized dict\nrepresentation.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"def",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, @p:demo:r:25c8ca39-efa9a8c4 "defFinder",^func:defFinder,,,,,,,,,,,,,,,,,,,,,M,,,,,,,"This will help find defs.",,,,,,,,,,,,,,,M,,,,,,,,,,,,,,,,^lib:proj_demo,,,,,,,,,,,,"defFinder",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"// filters defs() according to parameters\n// defHas filters defs by their properties. A Str\n// propHas searches the property defined by defHas. A Str or Def\n// searchIs searches the \"is\" column. A Str or Def\n// ---EXAMPLES---\n// defFinder(\"tagOn\", \"func\", \"marker\") -> finds all defs that have \"tagOn\" with ^func inside of \"tagOn\", that are markers\n// defFinder(\"tagOn\", null, \"marker\") -> finds all defs that have \"tagOn\" that are markers\n// defFinder(\"tagOn\", \"func\") -> finds all defs that have \"tagOn\" with ^func inside of \"tagOn\"\n// defFinder(\"tagOn\") -> finds all defs that have \"tagOn\"\n(defHas: \"is\", propHas: null, searchIs: null) => do\n result: finDefs().findAll(r => r.has(defHas))\n \n // searches property listed in defHas\n if (propHas != null)\n do\n if (propHas.isStr)\n propHas = parseSymbol(propHas)\n \n result = result.findAll(r =>\n do\n if (r[defHas].isList)\n return r[defHas].contains(propHas)\n else\n return r[defHas] == propHas\n end)\n end\n \n if (searchIs == null)\n return result\n \n // search \"is\" column\n if (searchIs.isStr)\n searchIs = searchIs.parseSymbol\n \n return result.findAll(r => r->is.contains(searchIs)) \nend",,,,,,,,,,,,,,,,,,,,,,,,,2020-02-06T01:30:04.775Z ,^func:defs,,,,,,,,,,,,,,,,,,,,,,,,,,,,"List all definitions in the context namespace as Def[].\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"defs",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:degreeDayHisSrc,,,,,,,,,,,,,,,,,,,,,,,,,"Degree Days",,,,,,,,,,,,,,,,,,M,,,,,,,M,,"func",,,,[^func],,,^lib:weather,,,,,,,,,,,,"degreeDayHisSrc",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:degreeDays,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Given a `site` or `weather` record compute both the heating and cooling\ndegree-days for the given date range. The dates can be any range supported\nby the `hisRead` function. The 'base' parameter specifies the balance point:\n- if null then `degreeDaysBase` is used\n- if a number is passed, then it is used as both the heating and\n cooling balance temp\n- otherwise must be a dict with \"heat\" and \"cool\" tags to specify\n different balance temps\n\nThe 'opts' parameter is a Dict that supports the following tags:\n - forecast: set to marker to include forecast data when computing degree days\n\nDegree days are calculated using the average `air` `temp` for each day:\n heatDegreeDays = heatBase - avg // 0 if result is negative\n coolDegreeDays = avg - coolBase // 0 if result is negative\n\nThe results are returned as a history grid with the following columns:\n- ts: midnight of each day computed\n- heat: heating degree days in °daysF or °daysC\n- cool: cooling degree days in °daysF or °daysC\n\nAny dates where no `air` `temp` data is available are computed as null\ndegree days.\n\nExamples\n read(site).degreeDays(2010-10)\n read(site).degreeDays(2010-10, 68°F)\n read(site).degreeDays(pastMonth, {heat:17°C, cool:20°C})\n read(site).degreeDays(pastMonth, {heat:17°C, cool:20°C}, {forecast})\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:weather,,,,,,,,,,,,"degreeDays",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:degreeDaysBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Given a `site` or `weather` record, return the default balance point\ntemperature to use for `degreeDays`. This function can return a single\nnumber to use for both the heating and cooling balance point, or it can\nreturn a dict with separate balance points using the tags \"heat\" and \"cool\".\nThe number(s) returned must have an explicit unit of either °C or °F.\nThe default implementation is 18°C or 65°F. Also see `isMetric`.\n\nExamples:\n 65°F // single balance point\n {heat:17°C, cool:19°C} // separate balance points",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:weather,,,,,,,,,,,,"degreeDaysBase",,,,,,,,,M,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,"(site) => do\n if (isMetric(site)) 18°C else 65°F\nend",,,,,,,,,,,,,,,,,,,,,,,,, @p:demo:r:25aa2aba-574c3538 "demoCharts",^func:demoCharts,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,,,,,,,,^lib:proj_demo,,,,,,,,,,,,"demoCharts",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"(span, sample: \"AHU\") => do\n\n // common data\n dates: span.toSpan\n ahuRec: read(ahu and rtu)\n xyData: ioReadZinc(`io/chart-data.zinc`)\n\n // AHU\n ahu: () => do\n ahuRec.toPoints.hisRead(dates).hisRollupAuto\n .addMeta({title: ahuRec.dis + \" \\u2022 \" + dates.format})\n end\n\n // AHU With NA\n ahuNa: () => do\n ahuRec.toPoints.hisRead(dates)\n .hisInterpolate\n .hisMap((v,ts) => if (ts.hour == 3) na() else v)\n .addMeta({title: ahuRec.dis + \" (NA) \\u2022 \" + dates.format})\n end\n\n // KWH Stacked Bar\n stackedBar: () => do\n lastYear: today().year - 1\n doKwh: (chartType) => do\n readAll(energy and siteMeter)\n .map(r => r.set(\"chartType\", chartType))\n .hisRead(lastYear).hisRollup(sum, 1mo)\n end\n hisJoin([doKwh(\"pie\"), doKwh(\"stackedBar\")])\n .addMeta({title: \"KWH \\u2022 \" + lastYear.as(1)})\n end\n\n // Negative Bar\n negBar: () => do\n g: xyData.map() (r,i) => do\n dis: (\"A\"[0]+i).toChar\n val: if (i.isOdd) r->y else -(r->y)\n {x: dis, y: val}\n end\n g.addColMeta(\"y\", {chartType:\"bar\"})\n .addMeta({title: \"Negative Bar Chart\"})\n end\n\n // Donut KWH last week\n donut: () => do\n readAll(energy and siteMeter)\n .map(r => r.set(\"chartType\", \"donut\"))\n .hisRead(lastWeek).hisRollup(sum, 1day)\n .addMeta({title: \"KWH \\u2022 Last Week\"})\n end\n\n // Zone Temp HeatMap\n heatMap: () => do\n zoneTempMonth()\n .addMeta({chartType:\"heatMap\", title: \"Zone Temp \\u2022 HeatMap \\u2022 Aug 2015\"})\n end\n\n // show explicit min/max\n chartMinMax: () => do\n xyData\n .addColMeta(\"y\", {dis: \"Chart Min/Max\", chartMin: -20, chartMax: 20})\n .addMeta({title: \"Chart Min/Max\"})\n end\n\n // group for multiple y-axes\n chartGrouping: () => do\n addChartMeta: (dict) => dict.set(\"chartGroup\",\"one\")\n temp: read(zone and temp and sensor and equipRef==ahuRec->id).addChartMeta\n pres: read(pressure and sensor and equipRef==ahuRec->id).addChartMeta\n damp: read(damper and cmd and equipRef==ahuRec->id).addChartMeta\n kw: read(power and siteMeter and siteRef==ahuRec->siteRef).addChartMeta\n hisRead([temp, pres, damp, kw], dates)\n .addMeta({title: \"Chart Grouping \\u2022 \" + dates.format})\n end\n\n // catch all\n sampleMap:\n {\n \"AHU\": ahu,\n \"AHU with NA\": ahuNa,\n \"Stacked Bar\": stackedBar,\n \"Negative Bar\": negBar,\n \"Donut\": donut,\n \"HeatMap\": heatMap,\n \"Chart Min/Max\": chartMinMax,\n \"Chart Grouping\": chartGrouping,\n }\n\n fn: sampleMap[sample]\n if (fn == null) fn = ahu\n fn()\nend\n",,,,,,,,,,,,,,,,,,,,,,,,,2020-01-09T18:17:34.224Z @p:demo:r:25aa2aba-3ad1d2c7 "demoCollage",^func:demoCollage,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,,,,,,,,^lib:proj_demo,,,,,,,,,,,,"demoCollage",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"(tile) => do\n\n // Line plot\n if (tile == 1) do\n return readAll(kwSite).hisRead(yesterday)\n .addMeta({title:\"Line\", chartLegend:\"hide\", chartNoScroll})\n end\n\n // Area plot\n if (tile == 2) do\n return read(kwSite).hisRead(yesterday)\n .addMeta({title:\"Area\", chartType:\"area\", chartLegend:\"hide\", chartNoScroll})\n end\n\n // Scatter plot\n if (tile == 3) do\n return readAll(kwSite).hisRead(yesterday)\n .hisRollup(max, 1hr)\n .addMeta({title:\"Scatter\", chartType:\"scatter\", chartLegend:\"hide\", chartNoScroll})\n end\n\n // Bar plot\n if (tile == 4) do\n return readAll(kwSite).hisRead(yesterday)\n .hisRollup(sum, 1day)\n .map(r=>r.set(\"ts\", r->ts.date))\n .addMeta({title:\"Bar\", chartType:\"bar\", chartLegend:\"hide\", chartNoScroll})\n end\n\n // Stacked plot\n if (tile == 5) do\n return readAll(kwSite).hisRead(lastWeek)\n .hisRollup(sum, 1day)\n .map(r=>r.set(\"ts\", r->ts.format(\"WWW\")))\n .addMeta({title:\"Stacked Bar\", chartType:\"stackedBar\", chartLegend:\"hide\", chartNoScroll})\n end\n\n // Runtime plot\n if (tile == 6) do\n return readAll(occupied).hisRead(yesterday)\n .addMeta({title:\"Runtime\", chartLegend:\"hide\", chartNoScroll})\n end\n\n // Pie plot\n if (tile == 7) do\n return readAll(kwSite).hisRead(yesterday)\n .hisRollup(sum, 1day)\n .map(r=>r.set(\"ts\", r->ts.date))\n .addMeta({title:\"Pie\", chartType:\"pie\", chartLegend:\"hide\", chartNoScroll})\n end\n\n // Donut plot\n if (tile == 8) do\n return readAll(kwSite).hisRead(yesterday)\n .hisRollup(sum, 1day)\n .map(r=>r.set(\"ts\", r->ts.date))\n .addMeta({title:\"Donut\", chartType:\"donut\", chartLegend:\"hide\", chartNoScroll})\n end\n\n // HeatMap plot\n if (tile == 9) do\n return read(kwSite).hisRead(lastWeek)\n .hisRollup(sum, 3hr)\n .addMeta({title:\"HeatMap\", chartType:\"heatMap\", chartLegend:\"hide\", chartNoScroll})\n end\n\n readAll(kwSite).hisRead(yesterday).addMeta({title:\"Tile \" + tile})\n\n\nend",,,,,,,,,,,,,,,,,,,,,,,,,2020-01-09T18:17:34.225Z @p:demo:r:25aa2aba-94ea50e9 "demoEnergySummary",^func:demoEnergySummary,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,,,,,,,,^lib:proj_demo,,,,,,,,,,,,"demoEnergySummary",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"(span, tile) => do\n spanDis: span.toSpan.format\n\n // xquery reads\n doReadHis: (f) => do\n q: xq().xqProjs(navProjNames())\n f(q)\n q.xqHisRead(span).xqExecute\n end\n readPower: () => doReadHis(q=>q.xqReadAll(power and equipRef->siteMeter))\n readEnergy: () => doReadHis(q=>q.xqReadAll(energy and equipRef->siteMeter))\n\n // map val cols\n mapValColMeta: (his, f) => do\n his.cols[1..-1].each col => do\n his = his.addColMeta(col.name, col.meta.merge(f(col.meta)))\n end\n his\n end\n\n // tile 1 - main meter power\n if (tile == 1) do\n return readPower()\n .hisRollupAuto\n .mapValColMeta(pt => {dis:pt->siteRef.refDis})\n .addMeta({title:\"KW by Site \\u2022 \" + spanDis})\n end\n\n // tile 2 - bar chart of total consumption\n if (tile == 2) do\n his: readEnergy().hisClip\n rows: his.cols[1..-1].map col => do\n total: his.foldCol(col.name, sum)\n {site: col.meta->siteRef.refDis, kwh: total}\n end\n return rows.toGrid.reorderCols([\"site\", \"kwh\"])\n .addColMeta(\"kwh\", {dis:\"kWh for \" + spanDis})\n .addMeta({title:\"KWH by Site \\u2022 \" + spanDis})\n end\n\n // tile 3 - main meter energy gradient plot\n if (tile == 3) do\n grid: readEnergy().hisFoldCols(sum)\n return grid.addMeta({chartType:\"heatMap\", title:\"All Sites Total Energy Use by Time of Day \\u2022 \"+ spanDis})\n end\n\n // tile 4 - donut of kwh per site\n if (tile == 4) do\n grid: readEnergy().hisRollup(sum, 1mo)\n total: grid.hisFoldCols(sum).foldCol(\"v0\", sum)\n return grid.mapValColMeta(pt => {\"dis\":pt->siteRef.refDis, \"chartType\":\"donut\"})\n .addMeta({title:\"Total KWH by Site \\u2022 \"+ spanDis + \" \\u2022 \" + total.format(\"#,###\")})\n .map(r => r.set(\"ts\", spanDis))\n end\n\n throw \"unknown tile \" + tile\nend",,,,,,,,,,,,,,,,,,,,,,,,,2020-01-09T18:17:34.226Z @p:demo:r:25aa2aba-030f799f "demoEquip",^func:demoEquip,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,,,,,,,,^lib:proj_demo,,,,,,,,,,,,"demoEquip",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"(equip, span, showWeather) => do\n\n // encode span to Axon expr\n spanExpr: span.toSpan.toAxonCode\n\n // build up Axon mapping expr\n expr:\n \"(eq) => {\" +\n \"rec: eq,\" +\n \"ptHis: equipToPoints(eq).hisRead(\" + spanExpr + \").hisRollupAuto.addMeta({force}),\" +\n \"weatherHis: toWeatherPoints(eq).hisRead(\" + spanExpr + \").addMeta({force})\" +\n \"}\"\n\n // execute xquery to read our equip and map it history data\n r: xq().xqReadByIds(equip).xqMap(expr).xqExecute.first\n\n // unpack xquery mapping\n rec: r->rec\n ptHis: r->ptHis\n weatherHis: r->weatherHis\n\n // put it all together\n his: ptHis\n if (showWeather) his = hisJoin([ptHis, weatherHis])\n return his.addMeta({title:\"Equip History \\u2022 \" + rec.dis + \" \\u2022 \" + span.toSpan.format})\nend",,,,,,,,,,,,,,,,,,,,,,,,,2020-01-09T18:17:34.228Z @p:demo:r:25aa2aba-58a9d80a "demoSiteReport",^func:demoSiteReport,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,,,,,,,,^lib:proj_demo,,,,,,,,,,,,"demoSiteReport",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"(siteRef, span, tile) => do\n\n site: toRec(siteRef)\n spanDis: span.toSpan.format\n\n // tile 1 - image\n if (tile == 1) do\n return \"Site Report \\u2022 \" + site.dis + \"\\n\" +\n \"###\\n\" +\n \"![site image][640x480]`fan://demoExt/res/\" + site.dis + \".jpg`\\n\"\n end\n\n\n // tile 2 - weather\n if (tile == 2) do\n return readAll(weatherPoint and weatherRef==toWeather(site)->id)\n .hisRead(span)\n .addMeta({title:\"Weather Temp \\u2022 \" + spanDis})\n end\n\n // tile 3 - power chart\n if (tile == 3) do\n return read(point and power and siteMeter and siteRef==site->id)\n .hisRead(span)\n .addMeta({title:\"KWH \\u2022 \" + spanDis})\n end\n\n // tile 4 - power heat map\n if (tile == 4) do\n return read(point and power and siteMeter and siteRef==site->id)\n .hisRead(span)\n .addMeta({chartType:\"heatMap\", title:\"KWH \\u2022 \" + spanDis})\n end\n\n throw \"unknown tile \" + tile\n\nend",,,,,,,,,,,,,,,,,,,,,,,,,2020-01-09T18:17:34.227Z ,^func:demoViz,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:demo,,,,,,,,,,,,"demoViz",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:devFetch,,M,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:dev,,,,,,,,,,,,"devFetch",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:devFindInFuncs,,M,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:dev,,,,,,,,,,,,"devFindInFuncs",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:devFuzzySearch,,M,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:dev,,,,,,,,,,,,"devFuzzySearch",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:devSave,,M,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:dev,,,,,,,,,,,,"devSave",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:diag,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:diag,,,,,,,,,,,,"diag",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,M,,,,,,,,,,,,,,,,,,,,,,, ,^func:diags,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:diag,,,,,,,,,,,,"diags",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,M,,,,,,,,,,,,,,,,,,,,,,, ,^func:diff,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Construct a modification \"diff\" used by `commit`. The orig should\nbe the instance which was read from the project, or it may be null\nonly if the add flag is passed. Any tags to add/set/remove should\nbe included in the changes dict.\n\nThe following flags are supported:\n - 'add': indicates diff is adding new record\n - 'remove': indicates diff is removing record (in general you\n should add `trash` tag instead of removing)\n - 'transient': indicate that this diff should not be flushed\n to persistent storage (it may or may not be persisted).\n - 'force': indicating that changes should be applied regardless\n of other concurrent changes which may be been applied after\n the orig version was read (use with caution!)\n\nExamples:\n // create new record\n diff(null, {dis:\"New Rec\", someMarker}, {add})\n\n // create new record with explicit id like Diff.makeAdd\n diff(null, {id:151bd3c5-6ce3cb21, dis:\"New Rec\"}, {add})\n\n // set/add dis tag and remove oldTag\n diff(orig, {dis:\"New Dis\", -oldTag})\n\n // set/add val tag transiently\n diff(orig, {val:123}, {transient})\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"diff",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:dis,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Get display string for dict or the given tag. If 'name'\nis null, then return display text for the entire dict\nusing `haystack::Etc.dictToDis`. If 'name' is non-null then format\nthe tag value using its appropiate 'toLocale' method.\nAlso see `haystack::Dict.dis`.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"dis",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:discreteBoolPeriods,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Fold timestamp/bool value pairs into an encoded Str of discrete minutely\nintervals. This rollup is similar to `discretePeriods` with the same\nBase64 encoding. There are two significant differences:\n 1. This rollup supports NA data\n 2. Instead of encoding offset/duration pairs, the encoding is\n offset/ordinal pairs. The ordinal values map as '{0: false, 1: true, 2: NA}'\n\nAlso see `parseDiscreteBoolPeriods` and `haystack::Etc.discretePeriods`.\n",,,,,,,,,,,,,,"Bool",M,,,,,,,,,"func",,,,[^func],,,^lib:his,,,,,,,,,,,,"discreteBoolPeriods",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:discreteEnumPeriods,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Fold timestamp/enum Str value pairs into an encoded Str of discrete\nminutely intervals. This rollup works very similar to `discretePeriods`\nwith the same Base64 encoding. The difference is that instead of\noffset/duration pairs, the encoding is offset/ordinal pairs. The\nordinal values map the position of each string value in the point's\n`enum` tag. If a string value is not mapped by 'enum' then a value\nof 0xff (255) is used for the ordinal. If a string value is NA, then a\nvalue of 0xfff (4095) is used for the ordinal.\n\nAlso see `parseDiscreteEnumPeriods` and `haystack::Etc.discretePeriods`.\n",,,,,,,,,,,,,,"Str",M,,,,,,,,,"func",,,,[^func],,,^lib:his,,,,,,,,,,,,"discreteEnumPeriods",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:discretePeriods,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Fold timestamp/bool value pairs into an encoded Str of discrete minutely\nintervals. The string encoding is based on 12-bit minutely\nstart/duration pairs. Each 12-bit minute offset/duration is encoded\nusing two 6-bit ASCII characters encoded by the Base64 table.\nAlso see `parseDiscretePeriods` and `haystack::Etc.discretePeriods`.\n\nHere is the Fantom code which decodes a string to iterate a\nperiod where 'time' is offset in minutes from base timestamp\nand 'dur' is duration of period in minutes (assuming a minutely\ninterval).\n\n static Void decodePeriod(Str str, |Int time, Int dur| f)\n {\n for (i := 0; i echo(day)\n eachDay(2010-07-01..2010-07-03, f) >> iterate Jul 1st, 2nd, 3rd\n eachDay(2010-07, f) >> iterate each day of July 2010\n eachDay(pastWeek, f) >> iterate last 7 days\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"eachDay",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:eachMonth,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Iterate the months for where 'dates' may be any object converted\ninto a date range by `toDateSpan`. The given function is called\nwith a 'DateSpan' argument for each interated month.\n\nExamples:\n // iterate each month in 2010, and echo data range\n eachMonth(2010) d => echo(d)\n\n // call f once for current method\n eachMonth(today(), f)\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"eachMonth",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:eachWhile,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Iterate the items of a collection until the given function\nreturns non-null, then break the iteration and return the\nresulting object. Return null if the function returns null\nfor every item.\n - Grid: iterate the rows as (row, index)\n - List: iterate the items as (val, index)\n - Dict: iterate the name/value pairs (val, name)\n - Range: iterate the integer range (integer)\n - Stream: iterate items as (val); see `docSkySpark::Streams#eachWhile`\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"eachWhile",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:echo,,M,,,,,,,,,,,,,,,,,,,,,,,,,,"Write the str represenation of 'x' to stdout and return 'x'.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"echo",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:elecKwToKwhHis,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Function to create a [computed history]`ext-his::doc#computed`\nfor `energy` kWh electrical consumption from `power` \"kW\" electrical demand.\nThis function creates an average hourly rollup from the kW data, but\nin order to work correctly the kW samples must be uniformly sampled\nacross the hour (such as every 15min), and the point should have `hisMode`\nset to 'consumption'.",,,,,,,,,,,,,,,M,,,,,,M,,,"func",,,,[^func],,,^lib:energy,,,,,,,,,,,,"elecKwToKwhHis",,,,,,,,,M,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,"(rec, dates, opts, yield) => do\n read((kw or power) and equipRef == rec->equipRef)\n .hisRead(dates, opts)\n .hisRollup(avg, 1hr)\n .each( row => do\n v0: row[\"v0\"]\n val: if (v0 == na()) na() else v0.as(1kWh)\n yield(row->ts, val)\n end)\nend",,,,,,,,,,,,,,,,,,,,,,,,, @p:demo:r:25aa2aba-48ebabe0 "elecKwhToCost",^func:elecKwhToCost,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,M,,,,,,,,,,^lib:proj_demo,,,,,,,,,,,,"elecKwhToCost",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"/*\n This is a simple demo function to convert kWh to \$ cost\n with a simple fixed rate formula of \$0.14/kWh\n*/\n(rec, dates, opts, yield) => do\n // for demo purposes use simple \$0.14/kWh\n costPerKwh: 0.14\n read(energy and equipRef == rec->equipRef)\n .hisRead(dates, opts)\n .hisRollup(avg, 1hr)\n .each( row => do\n cost: row[\"v0\"] * costPerKwh\n cost = if (na() == cost) cost else cost.as(rec->unit)\n yield(row->ts, cost)\n end )\nend",,,,,,,,,,,,,,,,,,,,,,,,,2020-01-09T18:17:34.202Z ,^func:emailSend,,M,,,,,,,,,,,,,,,,,,,,,,,,,,"Send an email synchronously:\n - recipients: one of the following:\n - Str email address for \"to\"\n - List of Str email addresses for \"to\"\n - Dict with \"to\", \"cc\", or \"bcc\" of Str or Str[]\n - subject: Str subject text\n - content: Str text for body. If the content begins with \"\", then\n it is send as \"text/html\", otherwise as \"text/plain\"\n - attachments: any one, or list of the following types will be included\n as file attachments:\n - [file io handle]`ext-io::doc#handles`\n - `haystack::Ref` to an App report will be attached as a PDF file\n - `haystack::Dict` of an App report record will be attached as a PDF file\n - `haystack::Grid`[] (list of Grids) will be treated as a compound report and attached as a PDF file\n - [export request dicts]`docFresco::Export`\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:email,,,,,,,,,,,,"emailSend",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:emailSendTest,,M,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:email,,,,,,,,,,,,"emailSendTest",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:emailTestDigest,,M,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:legacy,,,,,,,,,,,,"emailTestDigest",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:end,,,,,,,,,,,,,,,,,,,,,,,,,,,,"End value of a DateSpan, Span, or a range.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"end",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:endsWith,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Return if Str ends with the specified Str.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"endsWith",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:energyBaselineCommit,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:energy,,,,,,,,,,,,"energyBaselineCommit",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:energyBaselinePrevMonth,,,,,,,,,,,,,,,,,,,,,,,,,,,"Baseline Prev Month","Generate a baseline his grid based on last month's data.\nData from exactly 28days ago is used to ensure alignment by weekday.",,,,,,M,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:energy,,,,,,,,,,,,"energyBaselinePrevMonth",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,"(points, dates) => do\n hisRead(points, toDateSpan(dates) - 28day, {limit:null})\nend",,,,,,,,,,,,,,,,,,,,,,,,, ,^func:energyBaselinePrevYear,,,,,,,,,,,,,,,,,,,,,,,,,,,"Baseline Prev Year","Generate a baseline his grid based on last year's data.\nData from exactly 364days ago is used to ensure alignment by weekday.",,,,,,M,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:energy,,,,,,,,,,,,"energyBaselinePrevYear",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,"(points, dates) => do\n hisRead(points, toDateSpan(dates) - 364day, {limit:null})\nend",,,,,,,,,,,,,,,,,,,,,,,,, @p:demo:r:25aa2aba-c70b89da "Prev Year Less 10%",^func:energyBaselinePrevYearLess10,,,,,,,,,,,,,,,,,,,,,,,,,"Prev Year Less 10%",,,,,,,,,,,,,,,,,,M,,,,,,,,,,,,,,,,^lib:proj_demo,,,,,,,,,,,,"energyBaselinePrevYearLess10",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"// Calculate a baseline function 10% less than last year\n(points, dates) => do\n hisRead(points, toDateSpan(dates) - 364day).hisMap(power=>power*0.9)\nend",,,,,,,,,,,,,,,,,,,,,,,,,2020-01-09T18:17:34.221Z ,^func:energyBaselineStart,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:energy,,,,,,,,,,,,"energyBaselineStart",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:energyFold,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:energy,,,,,,,,,,,,"energyFold",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:energyHisRead,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:energy,,,,,,,,,,,,"energyHisRead",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:energyJoin,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:energy,,,,,,,,,,,,"energyJoin",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:energyNormByArea,,,,,,,,,,,,,,,,,,,,,,,,,,,"Normalize by Area","Given a his grid, normalize the values by area in m² or ft². Each\nvalue column must have a `siteRef` which references a site with\nthe `area` tag.",,,,,,,M,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:energy,,,,,,,,,,,,"energyNormByArea",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,"(hisData) => do\n hisMap(hisData) (val, ts, his) => val / his->siteRef->area\nend\n",,,,,,,,,,,,,,,,,,,,,,,,, ,^func:energyNormByDegreeDay,,,,,,,,,,,,,,,,,,,,,,,,,,,"Normalize by Degree-Day","Given a his grid, normalize the values by heating or cooling degree-day.\nEach value column must have a `siteRef` which references a site with\nthe `weatherRef` tag.\n",,,,,,,M,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:energy,,,,,,,,,,,,"energyNormByDegreeDay",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, @p:demo:r:25aa2aba-48f8144a "By revenue per site",^func:energyNormByRevenue,,,,,,,,,,,,,,,,,,,,,,,,,"By revenue per site",,,,,,,,,,,,,,,,,,M,,,,,,,,,,,,,,,,^lib:proj_demo,,,,,,,,,,,,"energyNormByRevenue",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"// Function to normalize energy by revenue per site\n(data) => do\n revenue: \"uninit\"\n data.hisMap((val,ts,his) => do\n if (revenue == \"uninit\") do\n site: readById(his->siteRef)\n revenue = if (site.has(\"revenue\")) site->revenue else null\n end\n if (revenue == null) revenue else val/revenue\n end)\nend",,,,,,,,,,,,,,,,,,,,,,,,,2020-01-09T18:17:34.222Z ,^func:energyNormalize,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:energy,,,,,,,,,,,,"energyNormalize",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:energyOperation,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:energy,,,,,,,,,,,,"energyOperation",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:energyOperationMap,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:energy,,,,,,,,,,,,"energyOperationMap",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:energyOverlay,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:energy,,,,,,,,,,,,"energyOverlay",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:energyProfile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:energy,,,,,,,,,,,,"energyProfile",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:energyProfileMap,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:energy,,,,,,,,,,,,"energyProfileMap",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:energyRollup,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:energy,,,,,,,,,,,,"energyRollup",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:energySwivel,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:energy,,,,,,,,,,,,"energySwivel",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:energySwivelX,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:energy,,,,,,,,,,,,"energySwivelX",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:energyTestBar,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:energy,,,,,,,,,,,,"energyTestBar",,,M,,,,,,M,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:energyTestFoo,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:energy,,,,,,,,,,,,"energyTestFoo",,,M,,,,,,M,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:energyToUnit,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:energy,,,,,,,,,,,,"energyToUnit",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:energyUsage,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:energy,,,,,,,,,,,,"energyUsage",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:energyUsageMap,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:energy,,,,,,,,,,,,"energyUsageMap",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:enumDef,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Return definition of given enum def defined by `enumMeta`\nThis call forces a refresh of the definitions.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:point,,,,,,,,,,,,"enumDef",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:enumDefs,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Return grid of current enum defs defined by `enumMeta`.\nThis call forces a refresh of the definitions.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:point,,,,,,,,,,,,"enumDefs",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:equipRuntimePeriods,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Compute periods when an equip's runtime is running\nor matches given criteria.\n\nParams:\n - equips: rec or grid of `equip` with 'runtime' point; see `toEquipRuntime`\n - dates: any valid `hisRead` date range\n - match: critera to match via `matchPointVal`\n\nReturns:\n - history grid of duration values\n\nExamples:\n // find periods where equip is running (true or over 0%)\n read(...).equipRuntimePeriods(pastWeek)\n\n // find periods where equip is off (false or 0%)\n read(...).equipRuntimePeriods(2010-09-22, false)",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:equip,,,,,,,,,,,,"equipRuntimePeriods",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,"(equips, dates, match:true) => do\n toEquips(equips)\n .map(toEquipRuntime(_, false))\n .hisRead(dates)\n .hisFindPeriods(matchPointVal(_, match))\nend",,,,,,,,,,,,,,,,,,,,,,,,, @p:demo:r:25aa2aba-fc6b8f53 "equipToPoints",^func:equipToPoints,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,,,,,,,,^lib:proj_demo,,,,,,,,,,,,"equipToPoints",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"/*\n This function overrides standard 'site::equipToPoints' function\n and illustrates how you can customize the points displayed by\n by apps such as the SiteApp. We demo two techniques in this\n example. First we include every \"site-wide\" point with the 'sitePoint'\n tag. Secondly for nested equips, we look for the 'summary' tag\n to show select points in the parent equip.\n*/\n(equip) => do\n readAll(point and\n ((equipRef==equip->id) or // direct points\n (sitePoint and siteRef==equip->siteRef) or // site-wide points\n (equipRef->equipRef==equip->id and summary))) // summary points of nested equip\nend",,,,,,,,,,,,,,,,,,,,,,,,,2020-01-09T18:17:34.191Z ,^func:eula,,,,,,,,,,,,,,,,,,,,,,,,,"EULA",,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:lic,,,,,,,,,,,,"eula",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:eval,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Evaluate an Axon string expression\n",,,,,,,,,,,,,,,M,,"Evaluate an Axon expression",,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"eval",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:exp,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Return e raised to val.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:math,,,,,,,,,,,,"exp",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:extAdd,,M,,,,,,,,,,,,,,,,,,,,,,,,,,"Enable the given extension name such as \"rule\".\nAll dependencies must be already enabled.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"extAdd",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:extAdd2,,M,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:legacy,,,,,,,,,,,,"extAdd2",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:extRemove,,M,,,,,,,,,,,,,,,,,,,,,,,,,,"Disable the given extension name. Raise exception\nif other extensions currently depend on this one.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"extRemove",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:extRemove2,,M,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:legacy,,,,,,,,,,,,"extRemove2",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:extSettings,,M,,,,,,,,,,,,,,,,,,,,,,,,,,"Return ext settings form data - see `docSkySpark::Exts#settings`\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"extSettings",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:extSettingsCommit,,M,,,,,,,,,,,,,,,,,,,,,,,,,,"Submit function for `extSettings` - see `docSkySpark::Exts#settings`\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"extSettingsCommit",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:exts,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Get the list of exts and their current status.\nResult format is subject to change\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"exts",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:exts2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:legacy,,,,,,,,,,,,"exts2",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:fandoc,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Construct view which renders text formatted as [fandoc]`fandoc::pod-doc#overview`\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:legacy,,,,,,,,,,,,"fandoc",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:favGroups,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:ui,,,,,,,,,,,,"favGroups",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:favNew,,,,,,,,,,,,,,,,,,,,,,,,,,"ui::new",,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:ui,,,,,,,,,,,,"favNew",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:favReadAll,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:ui,,,,,,,,,,,,"favReadAll",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:favSetDef,,M,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:ui,,,,,,,,,,,,"favSetDef",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, @p:demo:r:25ce2619-d5da0461 "featureDefFinder",^func:featureDefFinder,,,,,,,,,,,,,,,,,,,,,M,,,,,,,"Use defFinder but 1st param is by feature.",,,,,,,,,,,,,,,M,,,,,,,,,,,,,,,,^lib:proj_demo,,,,,,,,,,,,"featureDefFinder",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"(feature, defHas: \"is\", propHas: null, searchIs: null) => do\n defFinder(defHas, propHas, searchIs).findAll(v => v.has(feature))\nend",,,,,,,,,,,,,,,,,,,,,,,,,2020-02-06T01:27:16.388Z ,^func:feed,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Convert a stream into a live feed to populate a view.\nSee `docSkySpark::Streams#feed`\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"feed",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:filterToFunc,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Convert a filter expression to a function which may\nbe used with `findAll` or `find`. The returned function\naccepts one parameter of Dicts and returns true/false if\nthe Dict is matched by the filter. Also see `parseFilter`.\n\nExamples:\n // filter for dicts with 'equip' tag\n list.findAll(filterToFunc(equip))\n\n // filter rows with an 'area' tag over 10,000\n grid.findAll(filterToFunc(area > 10_000))\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"filterToFunc",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, @p:demo:r:25ce19de-6841d711 "finDef",^func:finDef,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,,,,,,,,^lib:proj_demo,,,,,,,,,,,,"finDef",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"// finds the targetDef and returns the def with it's extended properties\n// def will have the finExtended marker tag if it has been extened\n// if no def is found, return null\n// targetDef is the def to return. A Str or Def\n// finDef(\"site\")\n(targetDef) => do\n if (targetDef.isStr)\n targetDef = targetDef.parseSymbol\n \n foundDef: def(targetDef, false)\n \n if (foundDef == null)\n return null\n \n extension: read(def == targetDef and defExtension, false)\n \n if (extension == null)\n return foundDef\n \n return foundDef.merge(extension.merge({finExtended, -defExtension, -id, -mod}))\nend",,,,,,,,,,,,,,,,,,,,,,,,,2020-02-06T00:51:18.844Z @p:demo:r:25ce19d3-64e0f005 "finDefs",^func:finDefs,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,,,,,,,,^lib:proj_demo,,,,,,,,,,,,"finDefs",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"// finds the all defs with their extended properties (if any)\n// a def will have the finExtended marker tag if it has been extened\n// finDefs()\n() => do\n defs1: defs()\n extensions: readAll(defExtension)\n \n if (extensions.isEmpty)\n return defs\n \n defs1 = defs1.map(row =>\n do\n foundExtension: extensions.find(v => v->def == row->def)\n \n if (foundExtension != null)\n return row.merge(foundExtension.merge({finExtended, -defExtension, -id, -mod}))\n \n row\n end)\n \n defsAsList: defs1.toGrid.colToList(\"def\")\n notFound: extensions.findAll(v => not defsAsList.contains(v->def)).toRecList\n \n if (notFound.isEmpty)\n return defs1\n \n return defs1.addAll(notFound.map(r => r.merge({finExtended, -defExtension, -id, -mod})))\nend",,,,,,,,,,,,,,,,,,,,,,,,,2020-02-06T01:44:51.418Z ,^func:find,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Find the first matching item in a list or grid by\napplying the given filter function. If no match\nis found return null.\n\nIf working with a list, the filter should be a function\nthat takes '(val)' or '(val, index)'. It should return\ntrue to match and return the item.\n\nIf working with a dict, the filter should be a function\nthat takes '(val)' or '(val, name)'. It should return\ntrue to match and return the item.\n\nIf working with a grid, the filter function takes '(row)'\nor '(row, index)' and returns true to match and return the row.\n\nIf working with a stream, the filter takes '(val)' and returns\ntrue to match. See `docSkySpark::Streams#find`.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"find",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:findAll,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Find all the items in a list, dict, or grid by applying\nthe given filter function. Also see `find`.\n\nIf working with a list, the filter should be a function\nthat takes '(val)' or '(val, index)'. It should return\ntrue to keep the item.\n\nIf working with a dict, the filter should be a function\nthat takes '(val)' or '(val, name)'. It should return\nthe true to keep the name/value pair.\n\nIf working with a grid, the filter function takes '(row)'\nor '(row, index)' and returns true to keep the row. The\nresulting grid shares the original's grid meta and columns.\n\nIf working with a stream, the filter takes '(val)' and returns\ntrue to match. See `docSkySpark::Streams#findAll`.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"findAll",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, @p:demo:r:25ccbf25-215a8238 "findAllChoices",^func:findAllChoices,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,,,,,,,,^lib:proj_demo,,,,,,,,,,,,"findAllChoices",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"// find all choices defFinder(\"is\",^choice)\n// then use the \"of tag value\" and look up everything that is the of\n// for each choice add a tag called choices, and make it a list of defs.\n// defFinder(\"is\",^ahuZoneDeliveryType)\n() => do\n defFinder(\"is\", ^choice).map(choice =>\n do\n types: defFinder(\"is\", choice->of)\n subs: []\n \n // find ALL sub-type of the found types \n types.each sub =>\n do\n subTypes: findAllDefsThatAre(sub->def, true, false) \n \n // make sure sub-type were found before adding\n if (not subTypes.isEmpty())\n subs = subs.addAll(subTypes.toGrid.colToList(\"def\"))\n end\n \n // add the new cols\n choice.merge({choices: types.toGrid.colToList(\"def\"), subTypes: subs})\n end)\nend",,,,,,,,,,,,,,,,,,,,,,,,,2020-02-05T00:07:31.066Z @p:demo:r:25cb4773-66562cb4 "findAllDefsThatAre",^func:findAllDefsThatAre,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,,,,,,,,^lib:proj_demo,,,,,,,,,,,,"findAllDefsThatAre",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"// filters defs by the \"is\" column and it;s subtypes\n// baseDef is the root def to search for. A def\n// includeSubTypes is a flag to indicate whether or not to include all subtypes of the baseDef\n// firstIteration is a flag to include the def that matches the baseDef, adds a root tag\n// findAllDefsThatAre(^equip)\n(baseDef, includeSubTypes: true, firstIteration: true, baseList: finDefs()) => do\n results: baseList.findAll(v => v.has(\"is\") and v->is.contains(baseDef)).map(r => r.set(\"folderPath\", baseDef.toStr))\n \n if (includeSubTypes)\n do\n results.each superType =>\n do\n subList: findAllDefsThatAre(superType->def, includeSubTypes, false, baseList).map(r => r.set(\"folderPath\", baseDef.toStr + \"/\" + r->folderPath))\n \n if (not subList.isEmpty())\n results = results.addAll(subList)\n end\n end\n \n if (firstIteration)\n return results.addAll([def(baseDef).merge({folderPath: \"\", root})])\n \n return results\nend",,,,,,,,,,,,,,,,,,,,,,,,,2020-02-06T01:12:59.074Z @p:demo:r:25cb97c0-c0fce044 "findEquipFunctions",^func:findEquipFunctions,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,,,,,,,,^lib:proj_demo,,,,,,,,,,,,"findEquipFunctions",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"// read all equip functions\n// For each function, like moves now find all the defs that use moves\n// Now Add a tag called equipFunctionName which is a string, and add like moves\n// Do these for every equipFunction, like moves,cools,heats,products, etc..\n// For the is part make sure you have the folder path there too.\n// findEquipFunctions().toGrid().keepCols([\"def\",\"equipFunctionName\",\"equipFunctionType\",\"folderPath\",\"is\"])\n() => do\n equipFuncs: findAllDefsThatAre(^equipFunction)\n equipDefs: findAllDefsThatAre(^equip)\n //allDefs: finDefs()\n eqFnOfMap: {}\n usesEqFnList: []\n \n equipFuncs.each eqFn =>\n do\n usesEqFnList = usesEqFnList.addAll(equipDefs.findAll(v => v.has(eqFn.dis)).map(r =>\n do\n r.merge({\n equipFunctionName: eqFn.dis,\n folderPath: r->folderPath + \"/\" + r.dis + \"/\" + eqFn.dis,\n //folderPath: r->folderPath + \"/\" + eqFn.dis + \"/\" + r.dis,\n equipFunctionType: r[eqFn.dis]\n })\n end))\n end\n \n return usesEqFnList //.addAll(equipFuncs)\nend",,,,,,,,,,,,,,,,,,,,,,,,,2020-02-06T01:14:07.144Z ,^func:first,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Get the first item from an ordered collection or return null\nif the collection is empty:\n - list: item at index 0\n - grid: first frow\n - stream: first item; see `docSkySpark::Streams#first`\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"first",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:fitLinearRegression,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Given a grid of x, y coordinates compute the best fit linear\nregression equation using the ordinary least squares method.\nThe first column of the grid is used for 'x' and the second\ncolumn is 'y'. Any rows without a Number for both x and y\nare skipped. Any special Numbers (infinity/NaN) are skipped.\n\nOptions:\n - 'x': column name to use for x if not first column\n - 'y': column name to use for y if not second column\n\nThe resulting linear equation is:\n\n yᵢ = mxᵢ + b\n\nThe equation is returned as a dictionary with these keys:\n - 'm': slope of the best fit regression line\n - 'b': intercept of the best fit regression line\n - 'r2': R² coefficient of determination as a number between\n 1.0 (perfect correlation) and 0.0 (no correlation)\n - 'xmin': minimum value of x variable in sample data\n - 'xmax': maximum value of x variable in sample data\n - 'ymin': minimum value of y variable in sample data\n - 'ymax': maximum value of y variable in sample data\n\nAlso see `matrixFitLinearRegression` to compute a multiple linear\nregression.\n\nExample:\n data: [{x:1, y:2},\n {x:2, y:4},\n {x:4, y:4},\n {x:6, y:5}].toGrid\n fitLinearRegression(data)\n\n >>> {m:0.4915, b: 2.1525, r2: 0.7502}\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:math,,,,,,,,,,,,"fitLinearRegression",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:flatMap,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Map each item in a list or grid to zero or more new items\nas a flattened result.\n\nIf mapping a list, the mapping should be a function\nthat takes '(val)' or '(val, index)'. It should return\nthe a list of zero or more new values.\nSee `sys::List.flatMap`.\n\nIf mapping a grid, the mapping function takes '(row)' or '(row,index)'\nand returns a list of zero or more new Dict rows.\nSee `haystack::Grid.flatMap`.\n\nIf mapping a stream, the mapping functions takes '(val)'.\nSee `docSkySpark::Streams#flatMap`.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"flatMap",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:floor,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Return the largest whole number less than or equal to val.\nResult has same unit as 'val'.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:math,,,,,,,,,,,,"floor",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:fold,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Fold a list or stream into a single value using a folding function\nwith the signature of '(val, acc)' where val is the items\nbeing folded, and acc is an accumulator used to maintain\nstate between interations. Lifecycle of a fold:\n 1. Call 'fn(foldStart, null)', return initial accumulator state\n 2. Call 'fn(item, acc)' for every item, return new accumulator state\n 3. Call 'fn(foldEnd, acc)' return final result\n\nSee `docSkySpark::Streams#fold` for streaming details.\n\nThe fold will short-circuit and halt immediately if the folding\nfunction returns `na()` for the accumulator state. The result of\nthe fold is `na()` in this case. A folding function should document\nits behavior when a collection contains `na()`.\n\nBuilt-in folding functions include:\n - `count()`\n - `sum()`\n - `avg()`\n - `min()`\n - `max()`\n - `mean()`\n - `median()`\n - `rootMeanSquareErr()`\n - `meanBiasErr()`\n - `standardDeviation()`\n\nExample:\n [1, 2, 3, 4].fold(max) // fold list into its max value\n [1, 2, 3, 4].fold(avg) // fold list into its average value\n [1, 2, na(), 3].fold(sum) // => na()\n\nExample of writing your own custom fold function that\nused start/end values and has support for na():\n average: (val, acc) => do\n if (val == foldStart()) return {sum:0, count:0}\n if (val == foldEnd()) return acc->sum / acc->count\n if (val == na()) return na()\n return {sum: acc->sum + val, count: acc->count + 1}\n end\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"fold",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:foldCol,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Fold the values of the given column into a single value\nusing a folding function using same semantics as `fold`.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"foldCol",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:foldCols,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Fold a set of columns in each row into a new folded column\nand return a new grid. The columns to fold are selected by the\n'colSelector' function and removed from the result. The selector\nmay be a list of string names or a function which takes a Col\nand returns true to select it. The folding function uses same\nsemantics as `fold`.\n\n\nExample:\n // consider grid 'g' with the following structure:\n a b c\n --- --- ---\n 1 10 100\n 2 20 200\n\n // foldCols, add b and c together to create new bc column\n g.foldCols([\"b\", \"c\"], \"bc\", sum)\n\n // yields this grid:\n a bc\n --- ---\n 1 110\n 2 220\n\n // we could also replace list of col names with a function\n colSel: col => col.name == \"b\" or col.name == \"c\"\n g.foldCols(colSel, \"bc\", sum)\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"foldCols",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:foldEnd,,,,,,,,,,,,,,,,,,,,,,,,,,,,"The fold end marker value\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"foldEnd",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:foldStart,,,,,,,,,,,,,,,,,,,,,,,,,,,,"The fold start marker value\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"foldStart",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:folioBackup,,M,,,,,,,,,,,{icon:"question" iconColor:"#e67e22" disKey:"ui::backupThisConfirm" detailsKey:"ui::backupConfirmDetails"},,,,,,,,,,,,,"ui::backup",,"Asynchronously kick off a new backup for current project.\nRequires admin permission. See `skyarcd::Proj.backup`\nTo run a snapshot a background job use `jobFolioBackup`.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:proj,,,,,,,,,,,,"folioBackup",M,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:folioBackupCleanup,,M,,,,,,,,,,,,,,,,,,,,,,,,,,"Delete all backups older than the given duration or date.\nRequires admin permission.\n\nExamples:\n folioBackupCleanup(15day) // delete all backups older than 15 days\n folioBackupCleanup(2017-11-15) // delete all backups before given date\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:proj,,,,,,,,,,,,"folioBackupCleanup",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:folioBackupDelete,,M,,,,,,,,,,,{icon:"question" iconColor:"#e67e22" disKey:"ui::backupDeleteConfirm" detailsKey:"ui::backupDeleteConfirmDetails"},,,,,,,,,,,,,"ui::delete",,"Delete a backup file by its timestamp. Return true\nif backup found and deleted of false otherwise.\nRequires admin permission.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:proj,,,,,,,,,,M,,"folioBackupDelete",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,M,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:folioBackups,,M,,,,,,,,,,,,,,,,,,,,,,,,,,"List all the backups for the current project:\n - ts: timestamp of backup\n - size: size in bytes of backup\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:proj,,,,,,,,,,,,"folioBackups",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:folioCompact,,M,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:proj,,,,,,,,,,,,"folioCompact",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:folioDebug,,M,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:proj,,,,,,,,,,,,"folioDebug",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:folioDebugDetails,,M,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:proj,,,,,,,,,,,,"folioDebugDetails",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:folioDebugReadsByPlan,,M,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:proj,,,,,,,,,,,,"folioDebugReadsByPlan",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:folioDebugReadsByTag,,M,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:proj,,,,,,,,,,,,"folioDebugReadsByTag",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:folioDebugSummary,,M,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:proj,,,,,,,,,,,,"folioDebugSummary",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:folioDebugWatch,,M,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:proj,,,,,,,,,,,,"folioDebugWatch",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:folioDebugWatches,,M,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:proj,,,,,,,,,,,,"folioDebugWatches",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:folioEmptyTrash,,M,,,,,,,,,,,,,,,,,,,,,,,,,,"Delete all the records marked with `trash` tag.\nSee `skyarcd::Proj.emptyTrash`\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:proj,,,,,,,,,,,,"folioEmptyTrash",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:folioFlush,,M,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:proj,,,,,,,,,,,,"folioFlush",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:folioFlushMode,,M,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:proj,,,,,,,,,,,,"folioFlushMode",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:folioSetMode,,M,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:proj,,,,,,,,,,,,"folioSetMode",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:folioSnapshot,,M,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:proj,,,,,,,,,,,,"folioSnapshot",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:folioSnapshotDelete,,M,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:proj,,,,,,,,,,,,"folioSnapshotDelete",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:folioSnapshots,,M,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:proj,,,,,,,,,,,,"folioSnapshots",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:folioSync,,M,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"folioSync",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, @p:demo:r:25cca1b3-36b54380 "fooTest",^func:fooTest,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,,,,,,,,^lib:proj_demo,,,,,,,,,,,,"fooTest",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"() => do\n defs()\nend",,,,,,,,,,,,,,,,,,,,,,,,,2020-02-04T21:42:25.464Z ,^func:format,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Format an object using the current locale and specified format\npattern. Formatting patterns follow Fantom toLocale conventions:\n - `sys::Bool.toLocale`\n - `haystack::Number.toLocale`\n - `sys::Date.toLocale`\n - `sys::Time.toLocale`\n - `sys::DateTime.toLocale`\nIf 'toLocale' method is found, then return 'val.toStr'\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"format",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:formats,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Haystack [formats op]`docSkySpark::Ops#ops`\n",,,,,,,,,,,,,,,M,,"Data formats supported by server",,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"formats",,M,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:fromJavaMillis,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Given Number of milliseconds since Unix epoch of 1-Jan-1970 UTC,\nreturn a DateTime in given timezone. If timezone is null, use system default.\nAlso see `toJavaMillis`.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"fromJavaMillis",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:func,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Find a top-level function by name and return its tags. If\nnot found throw exception or return null based on checked flag.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"func",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:funcAppDoc,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:legacy,,,,,,,,,,,,"funcAppDoc",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:funcAppLoad,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:legacy,,,,,,,,,,,,"funcAppLoad",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:funcs,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Find all the top-levels functions in the current project\nwhich match the given filter. If the filter is omitted then\nreturn all the functions declared in the current project.\nThe function tags are returned.\n\nExamples:\n funcs() // all functions\n funcs(ext == \"hvac\") // match filter\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"funcs",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:gc,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"gc",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,M,,,,,,,,,,,,,,,,,,,,,,, ,^func:geoCountryCode,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Normalize a country name into its two letter ISO-3166 code.\nIf the country is not recognized, then return null or throw\nexception based on checked flag.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:geo,,,,,,,,,,,,"geoCountryCode",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:geoCountryName,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Given a two ISO-3166 country code or country name, return a country name.\nIf the country is not recognized, then return null or throw exception\nbased on checked flag.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:geo,,,,,,,,,,,,"geoCountryName",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:geoTz,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Given a dict/row that contains primary geo tags such as `geoCountry`,\n`geoState`, and `geoCity` return ideal timezone name.\n\nNOTE: if your city or country is not correctly modeled by this\n function then please let us know and we can update our database.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:geo,,,,,,,,,,,,"geoTz",,,,,,,,,M,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:geoUsStateCode,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Normalize a US state name into its standard two letter postal code.\nIf the state is not recognized, then return null or throw exception\nbased on checked flag.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:geo,,,,,,,,,,,,"geoUsStateCode",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:geoUsStateName,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Given a two letter postal code or state name, return a US state name.\nIf the state is not recognized, then return null or throw exception\nbased on checked flag.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:geo,,,,,,,,,,,,"geoUsStateName",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:get,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Get an item from a collection:\n - str(num): get character at index as int (same semanatics as Fantom)\n - str(range): get string slice (same semanatics as Fantom)\n - list(num): get item at given index (same semanatics as Fantom)\n - list(range): get list slice at given index (same semanatics as Fantom)\n - dict(key): get item with given key or return null\n - grid(num): get row at given index\n - grid(range): `haystack::Grid.getRange`\n\nThe get function maybe be accessed using the '[]' shortcut operator:\n list[3] >> list.get(3)\n\nSee `docSkySpark::AxonLang#getAndTrap`.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"get",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:getSafe,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Get an item from a str, list, or grid safely when an index is out of bounds:\n - str(num): get a character at index or null if index invalid\n - str(range): get safe slice or \"\" if entire range invalid\n - list(num): get item at given index or null is index invalid\n - list(range): get list slice with safe index\n - grid(num): get row at given index or null if index invalid\n - grid(range): `haystack::Grid.getRange` with safe range\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"getSafe",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:gridColKinds,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Given a grid return the types used in each column as a grid\nwith the following:\n - 'name': string name of the column\n - 'kind': all the different value kinds in the column separated by \"|\"\n - 'count': total number of rows with column with a non-null value\nAlso see `readAllTagNames`.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"gridColKinds",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:gridColsToDict,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Convert a grid into a dict of name/val pairs which are\nderived from each column using the given functions. The\nfunctions take '(col, index)'\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"gridColsToDict",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:gridRowsToDict,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Convert a grid into a dict of name/val pairs which are\nderived from each row using the given functions. The\nfunctions take '(row, index)'\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"gridRowsToDict",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:has,,,,,,,,,,,,,,,,,,,,,,,,,,,,"If val is a Grid return if it has the given column name.\nIf val is a Dict return if the given name is mapped to a non-null value.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"has",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:hasSubtypes,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"hasSubtypes",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:haystackCall,,M,,,,,,,,,,,,,,,,,,,,,,,,,,"Perform Haystack REST API call to given Str op name and with\ngiven request grid (can be anything acceptable `toGrid`). If\nthe checked flag is true and server returns an error grid, then\nraise `haystack::CallErr`, otherwise return the grid itself.\nReturn result as Grid\n\nAlso see `skyarcd::Client.call`.\n\nSide effects:\n - performs blocking network IO\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:haystack,,,,,,,,,,,,"haystackCall",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:haystackEval,,M,,,,,,,,,,,,,,,,,,,,,,,,,,"Evaluate an Axon expression in a remote server over\na haystack connector. The remote server must be a SkySpark\nserver which supports the \"eval\" REST op with an Axon\nexpression. This function blocks while the network request is\nmade. The result is always returned as a Grid using the same\nrules as `haystack::Etc.toGrid`.\n\nThe expression to evaluate in the remote server may capture\nvariables from the local scope. If these variables are atomic types,\nthen they are captured as defined by local scope and serialized\nto the remote server. Pass '{debug}' for opts to dump to stdout\nthe actual expr with serialized scope.\n\nOptions:\n - 'debug': dumps full expr with seralized scope to stdout\n - 'evalTimeout': duration number to override remote project's\n default [evalTimeout]`docSkySpark::Tuning#folio`\n\nExamples:\n read(haystackConn).haystackEval(3 + 4)\n read(haystackConn).haystackEval(readAll(site))\n read(haystackConn).haystackEval(readAll(kw).hisRead(yesterday))\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:haystack,,,,,,,,,,,,"haystackEval",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:haystackHisRead,,M,,,,,,,,,,,,,,,,,,,,,,,,,,"Perform Haystack REST API \"hisRead\" call to read history\ndata for the record identified by the id (must be Ref).\nThe range is any string encoding supported by the REST API\nor any value supported by `toDateSpan`. Return results\nas grid with \"ts\" and \"val\" column.\n\nSide effects:\n - performs blocking network IO\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:haystack,,,,,,,,,,,,"haystackHisRead",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:haystackInvokeAction,,M,,,,,,,,,,,,,,,,,,,,,,,,,,"Invoke a remote action on the given Haystack connector\nand remote entity. The id must be a Ref of the remote entity's\nidentifier and action is a Str action name. If args are\nspecified, then they should be a Dict keyed by parameter\nname.\n\nNOTE: this func uses the security permissions assigned to\nthe connector. So it is assumed that this call is wrapped in\na local action which has its own permission checking.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:haystack,,,,,,,,,,,,"haystackInvokeAction",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:haystackLearn,,M,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:haystack,,,,,,,,,,,,"haystackLearn",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:haystackPing,,M,,,,,,,,,,,,,,,,,,,,,,,,,,"Ping a `haystackConn` by asynchronously reading its 'about' URI\nupdating tags on the connector record.\n\nExamples:\n read(haystackConn).haystackPing\n haystackPing(haystackConnId)\n\nSide effects:\n - performs async network IO\n - productName: updated if ping successful\n - productVersion: updated if ping successful\n - moduleName: updated if ping successful\n - moduleVersion: updated if ping successful\n - tz: updated if ping successful\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:haystack,,,,,,,,,,,,"haystackPing",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:haystackRead,,M,,,,,,,,,,,,,,,,,,,,,,,,,,"Perform Haystack REST API call to read single entity with filter.\nThe filter is an expression like `readAll`. Return result as dict.\nIf the record is not found, then return null or raise UnknownRecErr\nbased on checked flag.\n\nAlso see `skyarcd::Client.read`.\n\nSide effects:\n - performs blocking network IO\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:haystack,,,,,,,,,,,,"haystackRead",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:haystackReadAll,,M,,,,,,,,,,,,,,,,,,,,,,,,,,"Perform Haystack REST API call to read all entities with filter.\nThe filter is an expression like `readAll`. Return results\nas grid.\n\nAlso see `skyarcd::Client.readAll`.\n\nSide effects:\n - performs blocking network IO\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:haystack,,,,,,,,,,,,"haystackReadAll",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:haystackReadById,,M,,,,,,,,,,,,,,,,,,,,,,,,,,"Perform Haystack REST API call to read a record by its unique identifier.\nReturn result as dict. If the record is not found, then return null or\nraise UnknownRecErr based on checked flag.\n\nAlso see `skyarcd::Client.readById`.\n\nSide effects:\n - performs blocking network IO\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:haystack,,,,,,,,,,,,"haystackReadById",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:haystackReadByIds,,M,,,,,,,,,,,,,,,,,,,,,,,,,,"Perform Haystack REST API call to read a list of records by their\nidentifiers. Return a grid where each row of the grid maps to the\nrespective id list (indexes line up). If checked is true and any one\nof the ids cannot be resolved then raise UnknownRecErr for first id not\nresolved. If checked is false, then each id not found has a row\nwhere every cell is null\n\nAlso see `skyarcd::Client.readByIds`.\n\nSide effects:\n - performs blocking network IO\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:haystack,,,,,,,,,,,,"haystackReadByIds",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:haystackSyncCur,,M,,,,,,,,,,,,,,,,,,,,,,,,,,"Asynchronously sync the proxy points with the current value\non the Haystack server. The proxies may be any value supported\nby `toRecList`. This function obtains the current values from the\nremote system using the [watchSub]`docSkySpark::Ops#watchSub` op\nvia a temporary watch with a 1min lease time. This forces the\nremote system to perform an async read on its own points.\n\nEach proxy point must contain:\n - `haystackConnRef`: references the connector\n - `haystackCur`: identifier of record to read\n\nSide effects:\n - performs async network IO\n - updates `curVal` tag transiently\n - updates `curStatus` tag transiently\n - updates `curErr` tag transiently\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:haystack,,,,,,,,,,,,"haystackSyncCur",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:haystackSyncHis,,M,,,,,,,,,,,,,,,,,,,,,,,,,,"Import the latest historical data from one or more external\nhaystack sources. The proxies may be any value suppored\nby `toRecList`.\n\nEach proxy record must contain:\n - `haystackConnRef`: references the haystack connector\n - `haystackHis`: Str identifier of the haystack source entity\n - `his`: all the standard historized point tags\n\nIf the range is unspecified, then an attempt is made\nto synchronize any data after 'hisEnd' (last timestamp\nread).\n\nThis method is designed to be run in the context of a\njob via the `ext-job::doc`.\n\nSide effects:\n - performs blocking network IO\n - updates records with history data\n - updates `hisStatus` tag transiently\n - updates `hisErr` tag transiently\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:haystack,,,,,,,,,,,,"haystackSyncHis",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:heading,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Construct heading view\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:legacy,,,,,,,,,,,,"heading",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:hisBlobs,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:his,,,,,,,,,,,,"hisBlobs",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:hisChart,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:his,,,,,,,,,,,,"hisChart",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:hisClear,,M,,,,,,,,,,,,,,,,,,,,,,,,,,"Clear the history items in the given range. The dates\nmust be aligned on monthly boundaries. Each month's data is\nremoved from the file system and the history summary tags\nare updated. If all the data is removed for a year, then the\nhisYear record is also removed. This function blocks until\nthe clear is complete.\n\nWARNING: once the data is cleared, there is **NO** recovery!!!\n\nThe hisArg contains the list of histories to query using any\nvalue supported by the `toRecList` function. See `hisRead`.\n\nThe dates argument must be a DateSpan where the start date falls\non the 1st of the month and the end falls on the last day of the\nmonth. If the dates parameter is null, then entire history\nof the point is cleared.\n\nAlso see `hisRemove` to remove less than one month of data.\n\nReturn a grid with a row for each history cleared. The following\ncolumns are included:\n - id: of the history record\n - dis: dis string of the history record\n - numRemoved: number of history items removed\n\nSide effects:\n - updates his rec tags hisSize, hisStart, etc\n - deletes history data\n - clears context read cache\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:his,,,,,,,,,,,,"hisClear",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:hisClip,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Remove the rows with leading/trailing timestamps from the\nactual query range. The query range is defined as inclusive\nof 'meta.hisStart' and exclusive of 'meta.hisEnd'. These\nmeta tags are derived from the dates range passed to the `hisRead`\nfunction.\n\nExample:\n hisRead(points, dates).hisClip\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:his,,,,,,,,,,,,"hisClip",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:hisCollectWriteAll,,M,,,,,,,,,,,,,,,,,,,,,,,,,,"Write all hisCollect items buffered in memory to the historian.\nBlock until complete or until timeout exceeded.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:point,,,,,,,,,,,,"hisCollectWriteAll",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:hisCompare,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Compare a history query against an alternate set of dates.\nThis function takes the result of a history query, potentially\nwith transforms using `hisMap`, `hisRollup`, etc.\n\nThe original query is re-run againts the new starting dates\nusing the same duration as the original query. For example if\nthe original duration was over 7days, then comparison queries\nwill also be 7days.\n\nThe comparison values are are added as columns \"vNxM\" where \"N\"\nrepresents the originals \"v0\", \"v1\" columns and \"M\" represents\nthe comparison dates. The timestamps are aligned on the hour\nof the day based on the original query.\n\nThe dates may be one of the following:\n - Date: convenience for '[date]'\n - Date[]: list of starting dates\n - DateSpan: convenience for month with starting\n date is aligned to base query by weekdays\n - DateSpan[]: convenience for list months aligned by weekday\n - Int: convenience for 1st of year aligned by weekday\n - Int[]: convenience for list of 1st of years\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:hisKit,,,,,,,,,,,,"hisCompare",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:hisCorrelate,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:his,,,,,,,,,,,,"hisCorrelate",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:hisCuSum,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Calculate a simplified cumulative sum (CuSum) for the given history\ngrid. The 'v0' column is treated as the \"actual\" value, and the 'v1'\ncolumn is treated as the \"target\" value.\n\nExample:\n\n // input data (dates ignored)\n ts, v0, v1\n 00:00, 100 kWh, 150 kWh\n 01:00, 175 kWh, 100 kWh\n 02:00, 50 kWh, 100 kWh\n\n // CuSum function\n hisCuSum(src)\n\n // resulting grid\n ts, v0\n 00:00, -50 kWh\n 01:00, 25 kWh\n 02:00, -25 kWh\n\nNOTE: this function is subject to change\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:hisKit,,,,,,,,,,,,"hisCuSum",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:hisDailyProfile,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Perform a rollup by time slice to produce a single 24-hour\nprofile of the data. The input must be a history grid with\na 'ts' DateTime column and timestamps spread across a uniform\ninterval (typically result of `hisRollup`). The result\nreplaces 'ts' with a 'time' column for each unique time-slice.\n\nFor example, let's consider we wish to generate an average\ndaily profile of our energy use in Jan of 2010. Assuming\nhave 15-min demand data we would start with this rollup:\n\n hisRead(pt, 2010-01).hisRollup(max, 1hr)\n\nThis produces a grid with one row for each hour of the month.\nThe values of the grid are the peak demand within each hour\nwindow (using the `max` function). Now let's say we wish\nto average the entire month to get average peak for each\none hour time slice:\n\n hisRead(pt, 2010-01).hisRollup(max, 1hr).hisDailyProfile(avg)\n\nThe resulting grid will have 24 rows with the average of each\ntime-slice:\n\n time val\n ----- ----\n 00:00 avg(01-Jan 00:00, 02-Jan 00:00, ... 31-Jan 00:00)\n 01:00 avg(01-Jan 01:00, 02-Jan 01:00, ... 31-Jan 01:00)\n ....\n 23:00 avg(01-Jan 23:00, 02-Jan 23:00, ... 31-Jan 23:00)\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:hisKit,,,,,,,,,,,,"hisDailyProfile",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:hisDurProfile,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Compute a \"load duration\" curve. The input must be a history\ngrid with a 'ts' DateTime column and all the values must be\nnumbers with a uniform unit. The result is a grid shaped as\nfollows:\n\n bucket v0 v1\n ------ ----------- ----------\n a dur v0 >= a dur v1 >= a ...\n b dur v0 >= b dur v1 >= b ...\n ....\n\nThe function creates 100 buckets based on the min/max range\nof all the values contained by the input grid. The 'ts' column\nis replaced by a 'bucket' column which defines 100 discrete\n\"buckets\" of the value range. The input's value columns and meta\nremain unchanged. The cells of the value columns define the number\nof hours the value is greater than or equal to the bucket value.\n\nBy default gaps in the data over 1hour are ignored. If\nthe 'hisInterval' grid.meta is specified and it is over 1hr,\nthen it is used as the gap threshold.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:hisKit,,,,,,,,,,,,"hisDurProfile",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:hisEquip,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:his,,,,,,,,,,,,"hisEquip",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:hisEquipX,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:his,,,,,,,,,,,,"hisEquipX",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:hisFilterDays,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:his,,,,,,,,,,,,"hisFilterDays",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:hisFindAll,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Perform a filter transformation on a history grid. The\nfilter function takes '(val, ts, his)' and returns\ntrue or false.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:hisKit,,,,,,,,,,,,"hisFindAll",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:hisFindInPeriods,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Perform filter transformation on a history grid by finding\nall rows which have a timestamp within the given periods. The\nperiods grid must be in the standard format for history periods\nwhere first column is 'ts' timestamp and second column is\nvalues measured in hours.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:hisKit,,,,,,,,,,,,"hisFindInPeriods",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:hisFindPeaks,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Filter a history grid so that only numeric samples that represent\na peak are returned. A peak is defined as a timestamp/value\npair where both the previous and next value is smaller. Non-numeric\ncolumns are filtered out. If the source grid has multiple\nnumeric value columns, then non-peak cells are set to null.\nAlso see `hisFindTroughs`.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:hisKit,,,,,,,,,,,,"hisFindPeaks",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:hisFindPeriods,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Find all the periods of time when 'fn' returns true for a history\ngrid. The filter func takes '(val, ts, his)' and returns true\nor false.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:hisKit,,,,,,,,,,,,"hisFindPeriods",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:hisFindSlicePeriods,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Given a source history grid and a grid of windows, compute the\nperiods of all the slices matched by given function. For each window\nin the widows grid, the `hisSlice` is computed and passed\nto the function as '(grid)'. If the function returns true the\nwindow is added to the resulting periods. Adjacent or overlapping\nwindows are coalesced together in the period results.\n\nSee [Windows and Slices]`ext-hisKit::doc#windowsAndSlices`\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:hisKit,,,,,,,,,,,,"hisFindSlicePeriods",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:hisFindTroughs,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Filter a history grid so that only numeric samples that represent\na trough are returned. A trough is defined as a timestamp/value\npair where both the previous and next value is larger. Non-numeric\ncolumns are implicitly filtered out. If the source grid has multiple\nnumeric value columns, then non-trough cells are set to null.\nAlso see `hisFindPeaks`.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:hisKit,,,,,,,,,,,,"hisFindTroughs",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:hisFlatten,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Perform a transformation on the history to flatten out ts/val\npairs into new rows. The mapping function takes '(val, ts, his)'\nand returns a dict for the flattened row. Given a grid with 'n'\nval colums, and 'm' rows, the resulting grid has 'n x m' rows. The\nresulting columns are determined by the dicts returned from the\nmapping func.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:hisKit,,,,,,,,,,,,"hisFlatten",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:hisFoldCols,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Given a history grid, fold all the value columns (every\ncolumn* except \"ts\") into a single \"v0\" column.\n\nExamples:\n readAll(kw).hisRead(lastWeek).hisFoldCols(sum)\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:hisKit,,,,,,,,,,,,"hisFoldCols",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:hisInWindows,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Return true or false if the given timestamp is inside at least\none of the given windows. The 'ts' parameter may be either a\nDateTime or a Dict/Row with a 'ts' tag/column. The 'windows'\nparameter must be a grid of timestamp/duration rows. Windows\nare start-inclusive and end-exclusive for timestamp comparisons.\n\nSee [Windows and Slices]`ext-hisKit::doc#windowsAndSlices`\n\nExample:\n // filter out rows not inside a grid of windows\n hisRead(points, dates).findAll(row => hisInWindows(row, windows))\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:hisKit,,,,,,,,,,,,"hisInWindows",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:hisInterpolate,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Interpolate all the null value cells for each timestamp.\nSee [Interpolation]`ext-hisKit::doc#interpolation` for details.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:his,,,,,,,,,,,,"hisInterpolate",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:hisJoin,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Given a list of history grids, join them by the 'ts' timestamp\ncolumn. This function automatically renames columns to ensure\neach column in result has a unique name. Grid meta is merged in\norder of grids parameter, however all \"hisX\" meta tags are stripped,\nand new 'hisStart' and 'hisEnd' are computed based on a merged range.\n\nThe following options are supported:\n - 'tz': specifies the timezone for the 'ts' column for the join.\n If omitted, and all the histories have the same timezone then\n that is the timezone used by 'ts'. Otherwise histories are joined\n by relative time of day using \"Etc/Rel\". If an explicit timezone\n other than \"Etc/Rel\" is specified, then timestamps are joined by\n absolute time.\n\nExample:\n a: hisRead(pointA, dates)\n b: hisRead(pointB, dates)\n hisJoin([a, b])\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:his,,,,,,,,,,,,"hisJoin",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:hisMap,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Perform a map transformation on the history value cells. The\nmapping function takes '(val, ts, his)' and returns new vals.\nThe src must be a history grid.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:hisKit,,,,,,,,,,,,"hisMap",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:hisMapSlices,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Given a source history grid and a grid of windows, compute the\nmapping of each slice. For each window in the widows grid,\nthe `hisSlice` is computed and passed to the function as '(grid)'.\nThe function must return a dict for resulting row or null to\nskip mapping that window/slice.\n\nSee [Windows and Slices]`ext-hisKit::doc#windowsAndSlices`\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:hisKit,,,,,,,,,,,,"hisMapSlices",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:hisMeta,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:his,,,,,,,,,,,,"hisMeta",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:hisPerf,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:his,,,,,,,,,,,,"hisPerf",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:hisPeriodIntersection,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Given two or more grids of historical periods, return a new\ngrid with the intersection. The input grids much have a \"ts\"\ntimestamp column and a second column named anything of period\nvalues. The resulting grid has \"ts\" and \"v0\" column, where\n\"v0\" is duration in hours.\n\nExample:\n // find periods when both a and b are on\n hisPeriodIntersection([a, b])\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:hisKit,,,,,,,,,,,,"hisPeriodIntersection",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:hisPeriodMatrix,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Given two or more grids of historical periods, return a new\ngrid which defines the \"matrix\" of unique combinations of all the\nperiods merged together. The result is returned as a grid with\nthese columns:\n - 'ts': starting timestamp of each unique period\n - 'dur': duration in hours of each unique period\n - 'numTrue': number of input periods \"on\" during period\n - 'v{i}': true of false indicating if input was \"on\" during that period\n\nExample, lets assume we have three unit runtime periods a, b, and c:\n // look for periods where all units are all off\n hisPeriodMatrix([a, b, c]).findAll r => r->numTrue == 0\n\n // look for periods where all units are all on\n hisPeriodMatrix([a, b, c]).findAll r => r->numTrue == 3\n\n // look for periods where a and b are on, but c is off\n hisPeriodMatrix([a, b, c]).findAll r => r->v0 and r->v1 and not r->v2\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:hisKit,,,,,,,,,,,,"hisPeriodMatrix",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:hisPeriodShift,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Given of a grid of historical periods, shift the starting and ending\ntimestamps by an offset. The input grids must have a \"ts\" timestamp\ncolumn and value columns of duration. The 'startShift' specifies a\npositive or negative shift of the starting timestamp of each period.\nThe 'endShift' indicates the amount to add/remove to each period\nduration (shifting the implied end timestamp). If the shift results\na negative duration, then that period it is removed. If the shift\ncreates overlapping periods, then they are merged.\n\nExamples:\n // input periods\n 02:00 1hr\n 08:00 4hr\n 13:00 5hr\n\n // shift start timestamp one hour forward and end timestamp\n // back two hours (note 02:00 period is removed)\n hisPeriodShift(src, 1hr, -2hr)\n 09:00 1hr\n 14:00 2hr\n\n // keep start timestamp unchanged, but move end timestamp\n // ahead three hours (note 08:00 and 13:00 periods merged)\n hisPeriodShift(src, 0hr, 3hr)\n 02:00 4hr\n 08:00 13hr\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:hisKit,,,,,,,,,,,,"hisPeriodShift",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:hisPeriodUnion,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Given two or more grids of historical periods, return a new\ngrid with the union. The input grids much have a \"ts\"\ntimestamp column and a second column named anything of period\nvalues. The resulting grid has \"ts\" and \"v0\" column, where\n\"v0\" is duration in hours.\n\nExample:\n // find periods when either a, b, or c is on\n hisPeriodUnion([a, b, c])\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:hisKit,,,,,,,,,,,,"hisPeriodUnion",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:hisRead,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Query history for an arbitrary range. The result is a grid with\na column called \"ts\", and multiple \"v0\", \"v1\", etc columns with\nthe values joined by timestamp.\n\nThe hisRefs contains the list of histories to query using any\nvalue supported by the `toRecList` function:\n - Ref or Ref[] to his\n - Dict/Row or Dict[]/Row[] of his\n - Grid of his\n\nAny records which don't support the 'his' tag are silently ignored.\nIf no records with the 'his' tag are specified then an exception is\nthrown.\n\nThe dates specifies the start/ending times of the query:\n - if start is null, then we use oldest item\n - if end is null, then we use most recent item\n - if start is Date, then we use midnight of that day\n - if end is Date, then we use midnight of next after\n - otherwise start/end must be DateTimes\n\nThe following convenience values are also allowed for range:\n - Date: convenience for 'date..date'\n - null: convenience for 'null..null'\n - Int: if between 1900 and 2100 convenience for entire year\n - Fn: function is resolved to one of the above 'today' vs 'today()'\n\nThe result always includes the previous item immediately before\nthe range, and immediately after the range. The leading/trailing\nvalues are often needed to interpret the first/last values of\nthe result. If leading/trailing values are not desired, then pipe\nthe result of this function to `hisClip`\n\nThe following options are supported:\n - 'limit': used to cap the number of records generated\n by the query. The default is 10,000. You may use Remove.val\n to indicate no limit such as '{-limit}'.\n - 'tz': specifies the timezone for the 'ts' column used to join\n multiple histories. If omitted, and all the histories have\n the same timezone then that is the timezone used by 'ts'.\n Otherwise histories are joined by relative time of day using\n \"Etc/Rel\". If an explicit timezone other than \"Etc/Rel\" is\n specified, then timestamps are joined by absolute time.\n - 'hisTotalized': set to Remove.val to disable delta reads of\n of hisTotalized recs (reads raw values); in Axon you can\n specify this like '{-hisTotalized}'.\n - 'hisMode': set to Remove.val to force all reads to behave\n as though the hisMode tag was not set on the rec; in Axon\n you can specify this like '{-hisMode}'.\n - 'hisAppendNA': set to Remove.val to disable the append NA\n threshold on histories that have this tag.; in Axon you\n specify this like '{-hisAppendNA}'. See `hisAppendNA` for\n details.\n - 'raw': set to Marker.val to disable all transformations\n of the history read; in Axon you can specify this like '{raw}'.\n This option is equivalent to '{-hisTotalized, -hisMode, -hisAppendNA}'.\n - 'forecast': include [forecast items]`ext-his::doc#forecast`\n - 'forecastOnly': include only [forecast items]`ext-his::doc#forecast`\n\nNote that the query limit is applied to the pipeline, not the\nraw 'hisRead'. So if 'hisRead' is piped directly to a 'hisRollup',\nthe limit will apply to the number of rollup rows, not raw\nrows. Unless configured in opts, the default limit is 10,000.\nThis value may be overridden by applying the 'hisLimit' tag\non the HisExt record. If the limit is hit and more data is\navailable, then grid meta has the 'limit' and 'more' tags defined.\n\nAlso see `ext-his::doc#queries`.\n",,,,,,,,,,,,,,,M,,"Read time series data to historian",,,,,,,"func",,,,[^func],,,^lib:his,,,,,,,,,,,,"hisRead",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:hisRemove,,M,,,,,,,,,,,,,,,,,,,,,,,,,,"Remove items from a history using a timestamp or timestamp range.\nThis function blocks until the remove is complete and returns\nthe number of items removed.\n\nWARNING: once the data is removed, there is **NO** recovery!!!\n\nThe hisRec supports anything accepted by `toRec`. Note this\nfunction only works on one record at a time.\n\nThe spans argument can be any non-null span accepted by `hisRead` or\na list of such spans. If a single DateTime is used then just\nthat item is removed, otherwise any items within the span's\ninclusive start time and exclusive end time are removed. Note that\ntimestamps are normalized according to the record's `hisTsPrecision`.\n\nThis function is used for fine grained removal within a single\nmonth. If removing one or more complete months then `hisClear`\nis much more efficient.\n\nSide effects:\n - updates his rec tags hisSize, hisStart, etc\n - deletes history data\n - clears context read cache\n\nExamples:\n hisRemove(pt, ts) // remove single item\n hisRemove(pt, startTs..endTs) // remove span of items\n hisRemove(pt, [ts1, ts2]) // remove list of timestamps\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:his,,,,,,,,,,,,"hisRemove",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:hisRewrite,,M,,,,,,,,,,,,,,,,,,,,,,,,,,"Rewrite every item of a history using the given transformation\nfunction. This function will automatically update the 'kind',\n'tz', and 'unit' tag if the mapping function returns a new timezone,\nnew value type, or new unit. The mapping function takes '(val, ts, his)'\nand returns new items as tuple list of '[ts, val]' or null to omit\na specific writing item.\n\nCAUTION: This function will read and rewrite every item and\nthere is no undo, so use it with care!\n\nThe hisArg contains the list of histories to rewrite using any\nvalue supported by the `toRecList` function. See `hisRead`.\n\nReturn a grid with a row for each history converted. The following\ncolumns are included:\n - id: of the history record\n - dis: dis string of the history record\n - numRewritten: number of history items rewritten\n\nSide effects:\n - rewrites every history item\n - clears context read cache\n\nExamples:\n // to convert to New_York timezone\n hisRewrite(hisId) (val, ts) => [ts.toTimeZone(\"New_York\"), val]\n\n // convert numbers to bool if non-zero\n hisRewrite(hisId) (val, ts) => [ts, val != 0]\n\n // convert units\n hisRewrite(hisId) (val, ts) => [ts, val.to(\"kW\")]\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:his,,,,,,,,,,,,"hisRewrite",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:hisRollup,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Roll up a history grid over discrete intervals of time with\nthe given fold function. The src must be a history grid created\nfrom `hisRead` or some transformation of it.\n\nRollups are inclusive of start and exclusive of end times.\nFor example a daily rollup includes midnight of the current day,\nbut excludes midnight of the next day. All the items found within\nthe interval are passed to the folding function to compute a\ntimestamp/val pair with each timestamp aligned to the start of the\ninterval.\n\nFor example a rollup interval of 1day over a one year range\nwould calculate 365 (or 366 if leap year) items with the\nstart time being midnight of each day. Interval rules:\n - Less 1day: use absolute time, aligned off start (example 1hr)\n - 1day: daily rollup, aligned off midnight\n - 1wk: weekly rollup, aligned off midnight on Sunday\n - 1mo: monthly rollup, aligned off midnight on 1st of month\n - 3mo: quarterly rollup, aligned off midnight on 1st of 3 month intervals\n - 1yr: yearly rollup, aligned off midnight Jan 1st\n - Anything else is an error\n\nSee 'core::fold' for how folding functions work. History rollups\nalso support rollup functions with arity of 3 '(val, ts, acc)'.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:his,,,,,,,,,,,,"hisRollup",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:hisRollupAuto,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Automatically chooses the best rollup interval and the best rollup\nfold function for each history.\n\nIf null is passed for the interval, then the following automatic\nselection is made:\n - less 2days: no rollup, return raw data\n - one week: 10min interval\n - one month: 1hour interval\n - over one month: daily interval\n\nThe rollup function applied to each history is determined as follows:\n 1. if foldFinder parameter is specified, it is called for each\n history to get fold function. If it returns null we check next\n step\n 2. if `hisRollupFunc` is defined on the history, then use it\n 3. Select fold function based on kind:\n a. Bool: `discreteBoolPeriods`\n b. Number with `hisMode` of \"cov\": `covAvg`\n c. Number pick based on unit's quantity:\n - power: `max`\n - volume, energy: `sum`\n - default: `avg`\n d. Str with enum tag: `discreteEnumPeriods`\n e. fallback to `count`\n\nIf your history has no data or is a computed history, you should\nexplicitly specify the `kind` or `hisRollupFunc` to ensure a suitable\nrollup is selected.\n\nIf a rollup is applied, then the following tags are automatically\napplied to the resulting grid:\n - `hisRollupInterval`: applied to grid.meta interval used for the rollup\n - `hisRollup`: applied to col.meta of each value column (such as \"avg\")\n - `hisRollupDis`: applied to col.meta for each rollup, if all the columns\n have the same rollup, then it is applied to grid.meta also\n\nExamples:\n // over 1hr intervals\n src.hisRead(pastWeek).hisRollupAuto\n\n // over 6hr intervals\n src.hisRead(pastMonth).hisRollupAuto\n\n // explicit 1day intervals\n src.hisRead(pastMonth).hisRollupAuto(1day)\n\n // explicit fold finder, uses max for all columns\n src.hisRead(pastMonth).hisRollupAuto(null, his => max)\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:his,,,,,,,,,,,,"hisRollupAuto",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:hisRollups,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Perform a series of rollups over discrete intervals. This\nfunction works just like `hisRollup`, but takes a list of\nfolding functions. Instead of a single value per input history,\nthere are a series of columns for each folding function.\nFor example if the input has a 'v0' and 'v1' column and the\nfolding functions are '[min, max]', then the resulting grid\nwill have 'v0_min', 'v0_max', 'v1_min', and 'v1_max'.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:his,,,,,,,,,,,,"hisRollups",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:hisShowWeatherPoint,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:his,,,,,,,,,,,,"hisShowWeatherPoint",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:hisSlice,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Slice a source history grid by a single time window. Slices\nonly include items from the source grid which are inclusive of\nthe window time range. The starting and ending rows are always\nthe time boundaries of window with the values interpolated (or\nnull if they cannot be interpolated).\n\nExample:\n\n // input data (dates ignored)\n ts, v0\n 00:00, 20, true\n 01:00, 30, false\n 02:00, 40, null\n 03:00, 50, true\n 04:00, 60, false\n\n // slice function\n hisSlice(src, dateTime(date, 1:30), 2hr)\n\n // resulting grid\n ts, val\n 1:30, 35, false\n 2:00, 40, null\n 3:00, 50, true\n 3:30, 55, true\n\nNote in the example above that we added a row at beginning and at the\nend for the window boundaries. The values of these boundary\nrows are interpolated from the original data.\n\nSee [Windows and Slices]`ext-hisKit::doc#windowsAndSlices`\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:hisKit,,,,,,,,,,,,"hisSlice",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:hisSlidingWindows,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Compute of grid of timestamp/duration windows. The window start\ntimes are defined by 'range' and 'step' parameter. The window\nduration is defined by 'dur' parameter. The last window's end\ntimestamp is always before or equal to the range ending timestamp.\n\n - 'range': may be any date/datetime range supported by `hisRead` or\n may be a history grid itself in which case the hisStart/hisEnd\n grid meta tags are used as the range\n - 'dur': Number with duration unit, standard unit is hour\n - 'step': Number with duration unit, standard unit is hour\n\nSee [Windows and Slices]`ext-hisKit::doc#windowsAndSlices`\n\nExample:\n\n // create sliding 1hr windows every 30min\n hisSlidingWindows(2011-07-04, 1hr, 30min)\n\n // resulting grid\n ts, v0\n 4-Jul-2011 00:00:00, 1hr\n 4-Jul-2011 00:30:00, 1hr\n 4-Jul-2011 01:00:00, 1hr\n 4-Jul-2011 01:30:00, 1hr\n ...\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:hisKit,,,,,,,,,,,,"hisSlidingWindows",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:hisSync,,M,,,,,,,,,,,,,,,,,,,,,,,,,,"Block until any pending history writes/clears are completed.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:his,,,,,,,,,,,,"hisSync",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:hisTransitionWindows,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Compute a grid of timestamp/duration windows based on transitions\nof a history grid. The window duration is defined by the 'dur'\nparameter. The transitions are determined by the 'fn' parameter\nwhich is a function of '(row, row)' which returns trues to create\na transition window.\n\nThe 'dur' parameter may be one of the following:\n Dur Value Window\n --------- -------\n Positive Number ts .. ts+dur\n Negative Number ts+dur .. ts\n Range of two Numbers ts+dur.start .. ts+dur.end\n\nIn all cases above the numbers must have a duration unit (hour is\nstandard). The timestamp uses is always the later of the rows being\ncompared. Here are some examples assuming transition time of '2:00':\n\n 15min >> 2:00 to 2:15 // postive number\n -15min >> 1:45 to 2:00 // negative number\n -20min..20min >> 1:40 to 2:20 // range number\n -1hr..-30min >> 1:00 to 1:30 // window before transition\n 1hr..2hr >> 3:00 to 4:00 // window after transition\n\nExample:\n\n // input data (dates ignored)\n ts, v0\n 00:00, false\n 08:00, true\n 17:00, false\n 19:00, true\n 20:00, false\n\n // function to create transitions for the 30min window\n // after each transition from true => false\n hisTransitionWindows(src, 30min) (a,b) => a->v0 and not b->v0\n\n // resulting grid of windows\n ts, v0\n 17:00, 0.5hr\n 20:00, 0.5hr\n\nSee [Windows and Slices]`ext-hisKit::doc#windowsAndSlices`\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:hisKit,,,,,,,,,,,,"hisTransitionWindows",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:hisWeekdayProfile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:hisKit,,,,,,,,,,,,"hisWeekdayProfile",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:hisWrite,,M,,,,,,,,,,,,,,,,,,,,,,,,,,"Asynchronously write the specified timestamp/value pairs to\nthe history. The timestamps must match 'tz' of history. If\nthe history has a 'unit' tag, then the items have either a null\nor matching unit.\n\nThe data may be one of the following:\n - Dict with 'ts' and 'val' tags; writes one pair to the history\n - List of Dicts with 'ts' and 'val' tags; writes the list of\n items to the history\n - Grid where first column is 'ts' and second column (may be named\n anything) is the values\n\nThe hisRec parameter may be:\n - Ref of history to write to\n - Rec of history to write to\n\nOptions:\n - 'forecast': set to marker to write as [forecast data]`ext-his::doc#forecast`\n\nSide effects:\n - updates his rec tags hisSize, hisStart, etc\n - writes new history data into hisYear\n - clears context read cache\n\nSee `ext-his::doc#writing`\n",,,,,,,,,,,,,,,M,,"Write time series data to historian",,,,,,,"func",,,,[^func],,,^lib:his,,,,,,,,,,,,"hisWrite",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:hostCommit,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:host,,,,,,,,,,,,"hostCommit",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,M,,,,,,,,,,,,,,,,,,,,,,, ,^func:hostId,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:host,,,,,,,,,,,,"hostId",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:hostMeta,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:host,,,,,,,,,,,,"hostMeta",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:hostRead,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:host,,,,,,,,,,,,"hostRead",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,M,,,,,,,,,,,,,,,,,,,,,,, ,^func:hostReadAll,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:host,,,,,,,,,,,,"hostReadAll",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,M,,,,,,,,,,,,,,,,,,,,,,, ,^func:hostReadById,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:host,,,,,,,,,,,,"hostReadById",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,M,,,,,,,,,,,,,,,,,,,,,,, ,^func:hostReboot,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:host,,,,,,,,,,,,"hostReboot",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,M,,,,,,,,,,,,,,,,,,,,,,, ,^func:hostSetPassword,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:host,,,,,,,,,,,,"hostSetPassword",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,M,,,,,,,,,,,,,,,,,,,,,,, ,^func:hostSettings,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:host,,,,,,,,,,,,"hostSettings",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,M,,,,,,,,,,,,,,,,,,,,,,, ,^func:hostShutdown,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:host,,,,,,,,,,,,"hostShutdown",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,M,,,,,,,,,,,,,,,,,,,,,,, ,^func:hour,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Get hour of day as integer between 0 to 23 from time or datetime\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"hour",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:hoursInDay,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Given a DateTime in a specific timezone, return the number of hours\nin the day. Dates which transition to DST will be 23 hours and days\nwhich transition back to standard time will be 25 hours.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"hoursInDay",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:httpSiteUri,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Primary HTTP or HTTPS Uri - see `skyarcd::HttpMod.siteUri`\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:http,,,,,,,,,,,,"httpSiteUri",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, @p:demo:r:25aa2aba-80b73252 "importExample",^func:importExample,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,,,,,,,,^lib:proj_demo,,,,,,,,,,,,"importExample",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"/*\n This function provides a complete example for importing site, equip,\n and point records from two CSV files included with the demo database.\n It illustrates several techniques:\n - importing data from CSV\n - deriving equip recs from point lists\n - mapping regular expression naming conventions to tags\n\n This script is organized into several sub-functions such as \"mapSites\"\n and \"mapEquips\". The main routine of the script is defined at the\n bottom of the script.\n*/\n() => do\n\n // import files we will use\n sitesFile: `io/import-sites.csv`\n pointsFile: `io/import-points.csv`\n\n // map equip name regex to tags; if a tag value is a\n // function, it is called with result of reGroups\n equipNameToTags: {\n r\"ElecMeter\": {elec, meter, siteMeter},\n r\"RTU-(\\d+)\": {ahu, rtu},\n }\n\n // map point name regex to tags; if a tag value is a\n // function, it is called with result of reGroups\n pointNameToTags: {\n r\"Demand\": {power, sensor},\n r\"Consumption\": {energy, sensor},\n r\"SupplyFan\": {discharge, air, fan, cmd},\n r\"DischargeAirTemp\": {discharge, air, temp, sensor},\n r\"ReturnAirTemp\": {\"return\", air, temp, sensor},\n r\"Cool-(\\d+)\": {cool, stage:(groups)=>groups[1].parseNumber, cmd},\n r\"Heat-(\\d+)\": {heat, stage:(groups)=>groups[1].parseNumber, cmd},\n }\n\n ////////////////////////////////////////////////////////////////////\n // Add Rec\n ////////////////////////////////////////////////////////////////////\n\n // function used to add our new records\n addRec: (msg, tags) => do\n\n // log an info message\n logInfo(\"import\", msg)\n\n // filter out any null or empty string tags\n tags = tags.findAll x => x != null and x != \"\"\n\n // adds temporary \"imported\" marker to all import so we can\n // easily test and then nuke to trash to re-run\n tags = tags.set(\"imported\", marker())\n\n // add as new record to the database\n commit(diff(null, tags, {add}))\n end\n\n ////////////////////////////////////////////////////////////////////\n // Sites\n ////////////////////////////////////////////////////////////////////\n\n // function to map sites CSV to parsed tags\n mapSites: () => do\n ioReadCsv(sitesFile).map row => do\n\n // get geo tags from CSV\n street: row->street\n city: row->city\n state: row->state\n\n // use geoTz function to map city/state to timezone\n tz: geoTz({geoCity:city, geoState:state})\n\n // map string cells to typed tags\n tags: {\n dis: row->dis,\n storeNum: row->storeNum.parseNumber,\n area: row->area.parseNumber.as(1ft²),\n geoAddr: street + \",\" + city + \",\" + state,\n geoCity: city,\n geoState: state,\n tz: tz,\n occupiedStart: row->occStart.parseTime(\"h:mm\"),\n occupiedEnd: row->occEnd.parseTime(\"h:mm\"),\n weatherRef: read(weather and dis == row->weather)->id,\n site,\n }\n end\n end\n\n // function to import the sites\n importSites: () => do\n mapSites().each row => addRec(\"Add site: \" + row->dis, row)\n end\n\n ////////////////////////////////////////////////////////////////////\n // Equips\n ////////////////////////////////////////////////////////////////////\n\n // function to map point list to equip records\n mapEquips: () => do\n // since multiple points might map to one piece of equip,\n // we create an accumulator map of dis-to-record\n acc: {}\n\n ioReadCsv(pointsFile).each row => do\n\n // parse equip name from path column\n equipName: pathToEquipName(row->path)\n\n // associate with site via storeNum\n site: read(site and storeNum==row->storeNum.parseNumber)\n\n // map string cells to typed tags\n tags: {\n dis: site->dis + \" \" + equipName,\n siteRef: site->id,\n equip,\n }\n\n // check if equip name matches one of our regular expressions\n tags = applyTagsByRegex(equipNameToTags, equipName, tags)\n\n acc = acc.set(tags->dis, tags)\n end\n\n return acc.vals\n end\n\n // function to import the equips\n importEquips: () => do\n mapEquips().each row => addRec(\"Add equip: \" + row->dis, row)\n end\n\n ////////////////////////////////////////////////////////////////////\n // Points\n ////////////////////////////////////////////////////////////////////\n\n // function to map point list to point records\n mapPoints: () => do\n ioReadCsv(pointsFile).map row => do\n\n // parse point name from path column\n equipName: pathToEquipName(row->path)\n pointName: pathToPointName(row->path)\n\n // associate with site via storeNum\n site: read(site and storeNum==row->storeNum.parseNumber)\n\n // associate with equip via dis\n equip: read(equip and dis == site->dis + \" \" + equipName)\n\n // map string cells to typed tags\n tags: {\n dis: site->dis + \" \" + equipName + \" \" + pointName,\n siteRef: site->id,\n equipRef: equip->id,\n kind: row->kind,\n tz: site->tz,\n point,\n his,\n }\n\n // if kind is Number, we must have unit column\n if (tags->kind == \"Number\")\n tags = tags.set(\"unit\", parseUnit(row->unit))\n\n // check if point name matches one of our regular expressions\n tags = applyTagsByRegex(pointNameToTags, pointName, tags)\n end\n end\n\n // function to import the points\n importPoints: () => do\n mapPoints().each row => addRec(\"Add point: \" + row->dis, row)\n end\n\n ////////////////////////////////////////////////////////////////////\n // Utils\n ////////////////////////////////////////////////////////////////////\n\n // parse path as \"{equipName}/{pointName}\"\n pathToEquipName: (path) => path.split(\"/\")[0]\n\n // parse path as \"{equipName}/{pointName}\"\n pathToPointName: (path) => path.split(\"/\")[1]\n\n // given equip/point name, try to find match by prefix\n // and if found, then apply given tags\n applyTagsByRegex: (mapping, name, tags) => do\n\n // check for every match in mapping dict of regex:tags\n mapping.each((tagsToAdd,regex) => do\n\n // we had a match, walk thru each tagToAdd and add it\n // to tags; if the tag value is a function then call\n // the function with reGroups\n if (regex.reMatches(name)) do\n tagsToAdd.each((v, n) => do\n if (v.isFunc()) v = v(reGroups(regex, name))\n tags = tags.set(n, v)\n end)\n end\n end)\n\n // return potentially updated tags\n return tags\n end\n\n ////////////////////////////////////////////////////////////////////\n // Main\n ////////////////////////////////////////////////////////////////////\n\n importSites() // map sites CSV and add site recs\n importEquips() // map points CSV and add equip recs\n importPoints() // map points CSV and add points recs\n readAll(imported) // return everything we added\n\nend",,,,,,,,,,,,,,,,,,,,,,,,,2020-01-09T18:17:34.213Z @p:demo:r:25d0b503-6b4068b0 "importJsonTypeScriptFiles",^func:importJsonTypeScriptFiles,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,,,,,,,,^lib:proj_demo,,,,,,,,,,,,"importJsonTypeScriptFiles",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"(dataFiles: null, import:true) => do\n // normalize dataFiles parameter\n if (dataFiles == null)\n dataFiles = readJsonTypeScriptFiles()\n else if (dataFiles.isUri)\n dataFiles = [dataFiles.ioReadJson({safeNames})]\n else if (dataFiles.isStr)\n dataFiles = [ioReadJson(parseUri(\"io/core/\"+dataFiles), {safeNames})]\n else if (dataFiles.isDict)\n dataFiles = [dataFiles]\n\n defList: []\n\n // add typscript defs\n curDef: read(defExtension and def == ^typeScript, false)\n\n if (curDef == null)\n do\n typeScriptDict: {def:^typeScript, typeScript, defExtension, is: [^feature]}\n\n if (import) diff(null, typeScriptDict, {add}).commit\n else defList = defList.add(typeScriptDict)\n end\n\n curDef = read(defExtension and def == ^typeScript:kind, false)\n\n if (curDef == null)\n do\n kindDef: {def:^typeScript:kind, typeScript, defExtension, is: [^typeScript]}\n\n if (import) diff(null, kindDef, {add}).commit\n else defList = defList.add(kindDef)\n end\n \n // propName map\n mainPropDict: {\n modules: \"module\",\n classes: \"class\",\n interfaces: \"interface\",\n functions: \"function\",\n enums: \"enum\",\n variables: \"variable\",\n types: \"type\"\n }\n \n //begin importing classes and methods\n dataFiles.each obj => \n do\n obj.names.each x => \n do\n if (mainPropDict[x] != null)\n do\n mainPropDef: read(defExtension and def == parseSymbol(\"typeScript:\" + mainPropDict[x]), false)\n\n if (mainPropDef == null)\n do\n mainPropDef = {def: parseSymbol(\"typeScript:\" + mainPropDict[x]), defExtension, is: [^typeScript, ^typeScript:kind]}\n\n if (import) diff(null, mainPropDef, {add}).commit\n else if (not defList.any(v => v->def == parseSymbol(\"typeScript:\" + mainPropDict[x]))) defList = defList.add(mainPropDef)\n end\n\n tempList: importTsMainProp(x, obj[x], import)\n\n if (not tempList.isEmpty)\n defList = defList.addAll(tempList)\n end\n end\n end\n\n return defList \nend\n",,,,,,,,,,,,,,,M,,,,,,,,,,2020-02-08T00:10:41.844Z @p:demo:r:25d0b499-c2b08df1 "importTsMainProp",^func:importTsMainProp,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,,,,,,,,^lib:proj_demo,,,,,,,,,,,,"importTsMainProp",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"(mainProp, tsPropertyDict, import:true) => do\n propertyNames: tsPropertyDict.names\n defList: []\n\n // loop over Properties\n propertyNames.each(propertyName =>\n do\n curProperty: tsPropertyDict[propertyName]\n propertyDef: read(defExtension and def == parseSymbol(\"typeScript:\" + curProperty->name.toTagName), false)\n\n // property def DNE\n if (propertyDef == null)\n do\n curPropertyDoc: curProperty[\"summary\"]\n\n if (curPropertyDoc == null)\n curPropertyDoc = \"\"\n\n if (curProperty[\"doc\"] != null and not curProperty->doc.isEmpty)\n do\n docNames: curProperty->doc.names\n curPropertyDoc = curPropertyDoc + \" \" + docNames.map(r => r.upper + \": \" + curProperty->doc[r]).concat(\" \")\n end\n\n // handle property\n curPropertyProps: curProperty[\"properties\"]\n\n if (curPropertyProps != null and not curPropertyProps.isEmpty)\n do\n if (curPropertyProps.isDict)\n curPropertyProps = curPropertyProps.names.map(r => curPropertyProps[r])\n end\n\n // define property\n propertyDef = {\n def: parseSymbol(\"typeScript:\" + curProperty->name.toTagName),\n is: [parseSymbol(\"typeScript:\" + mainProp)],\n dis: curProperty->name,\n //kind: parseSymbol(\"typeScript:\" + mainPropDict[mainProp])),\n extends: if (curProperty[\"extends\"] != null and not curProperty->extends.isEmpty) curProperty->extends.map(r => parseSymbol(\"typeScript:\"+r.toTagName)) else removeMarker(),\n implements: if (curProperty[\"implements\"] != null and not curProperty->implements.isEmpty) curProperty->implements.map(r => parseSymbol(\"typeScript:\"+r.toTagName)) else removeMarker(),\n doc: curPropertyDoc,\n properties: curPropertyProps,\n defExtension,\n typeScript\n }.set(mainProp, marker())\n\n // make it\n if (import)\n diff(null, propertyDef, {add}).commit\n else\n defList = defList.add(propertyDef)\n end\n\n // add property methods\n if (curProperty[\"methods\"] != null and not curProperty->methods.isEmpty) \n do\n methodList: importTsMethods(propertyDef->def, curProperty->methods, import)\n\n if (not methodList.isEmpty) \n defList = defList.addAll(methodList) \n end\n end)\n\n return defList\nend",,,,,,,,,,,,,,,M,,,,,,,,,,2020-02-08T00:05:38.566Z @p:demo:r:25d0b4ce-02d7e891 "importTsMethods",^func:importTsMethods,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,,,,,,,,^lib:proj_demo,,,,,,,,,,,,"importTsMethods",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"(fromClass, methodsDict, import:true) => do\n methodNames: methodsDict.names\n defList:[]\n\n // check if method def exists\n if (read(defExtension and def == ^typeScript:method, false) == null)\n do\n methodDef: {def:^typeScript:method, typeScript, defExtension, is: [^typeScript, ^typeScript:kind]}\n\n if (import) diff(null, methodDef, {add}).commit\n else defList = defList.add(methodDef)\n end\n\n // begin adding methods\n methodNames.each(methodName =>\n do\n curMethod: methodsDict[methodName]\n\n if (read(defExtension and def == parseSymbol(\"typeScript:\" + curMethod->name.toTagName) and methodOf == fromClass, false) == null)\n do\n curMethodDoc: curMethod[\"summary\"]\n methodDef: null\n\n if (curMethodDoc == null)\n curMethodDoc = \"\"\n\n if (curMethod[\"doc\"] != null and not curMethod->doc.isEmpty)\n do\n docNames: curMethod->doc.names\n curMethodDoc = curMethodDoc + \" \" + docNames.map(r => r.upper + \": \" + curMethod->doc[r]).concat(\" \")\n end\n\n methodDef = {\n def: parseSymbol(\"typeScript:\" + curMethod->name.toTagName),\n dis: curMethod->name,\n is: [^typeScript:method],\n kind: ^typeScript:method,\n //isPublic: curMethod->isPublic,\n signature: curMethod[\"signature\"],\n returnType: curMethod[\"returnType\"],\n doc: curMethodDoc,\n parameters: curMethod[\"parameters\"],\n decorators: curMethod[\"decorators\"],\n methodOf: fromClass,\n //method,\n defExtension,\n typeScript\n }\n\n // make it\n if (import) diff(null, methodDef, {add}).commit\n else defList = defList.add(methodDef)\n end\n end)\n\n //if (!import)\n return defList\nend",,,,,,,,,,,,,,,M,,,,,,,,,,2020-02-07T23:53:12.674Z ,^func:index,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Return the first match of 'x' in 'val' searching forward, starting\nat the specified offset index. A negative offset may be used to\naccess from the end of string. Return null if no occurences are found:\n - if 'val' is Str, then 'x' is substring.\n - if 'val' is List, then 'x' is item to search.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"index",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:indexr,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Return the last match of 'x' in 'val' searching backward, starting\nat the specified offset index. A negative offset may be used to\naccess from the end of string. Return null if no occurences are found:\n - if 'val' is Str, then 'x' is substring.\n - if 'val' is List, then 'x' is item to search.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"indexr",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:inheritance,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"inheritance",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:insert,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Insert an item into a list at the given index and return a new list.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"insert",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:insertAll,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Insert a list of items at the given index and return a new list.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"insertAll",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:install,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Asynchronously install the given pods which is a Dict or list\nof Dicts specifying the repo name, pod name and version.\nExample:\n install({repo:\"StackHub\", name:\"foo\", version:\"1.0.3\"})\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:install,,,,,,,,,,,,"install",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,M,,,,,,,,,,,,,,,,,,,,,,, ,^func:installCancel,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Attempt to cancel current install pipeline\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:install,,,,,,,,,,,,"installCancel",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,M,,,,,,,,,,,,,,,,,,,,,,, ,^func:installLogin,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:install,,,,,,,,,,,,"installLogin",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,M,,,,,,,,,,,,,,,,,,,,,,, ,^func:installLogout,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:install,,,,,,,,,,,,"installLogout",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,M,,,,,,,,,,,,,,,,,,,,,,, ,^func:installPlan,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:install,,,,,,,,,,,,"installPlan",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,M,,,,,,,,,,,,,,,,,,,,,,, ,^func:installPods,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:install,,,,,,,,,,,,"installPods",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,M,,,,,,,,,,,,,,,,,,,,,,, ,^func:installRepos,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:install,,,,,,,,,,,,"installRepos",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,M,,,,,,,,,,,,,,,,,,,,,,, ,^func:installSearch,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:install,,,,,,,,,,,,"installSearch",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,M,,,,,,,,,,,,,,,,,,,,,,, ,^func:installStatus,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Return install status as Dict with following tags: done, percent, msg, err, errTrace\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:install,,,,,,,,,,,,"installStatus",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,M,,,,,,,,,,,,,,,,,,,,,,, ,^func:installUpgrades,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:install,,,,,,,,,,,,"installUpgrades",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,M,,,,,,,,,,,,,,,,,,,,,,, ,^func:installVersionDetails,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:install,,,,,,,,,,,,"installVersionDetails",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,M,,,,,,,,,,,,,,,,,,,,,,, ,^func:installVersions,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:install,,,,,,,,,,,,"installVersions",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,M,,,,,,,,,,,,,,,,,,,,,,, ,^func:invoke,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Invoke an action on the given rec (any value supported by `toRec`).\nThe record must have a valid `actions` grid configured with a dis\nstring matching the the 'action' parameter. See `docSkySpark::Actions`.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"invoke",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:invokeAction,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Haystack [invokeAction op]`docSkySpark::Ops#invokeAction`\n",,,,,,,,,,,,,,,M,,"Watch subscription",,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"invokeAction",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:ioAppend,,M,,,,,,,,,,,,,,,,,,,,,,,,,,"Convert a handle to append mode. Writes will append to the end\nof the file instead of rewriting the file. Raises UnsupportedErr\nif the handle doesn't support append mode.\n\nExample:\n ioWriteStr(\"append a line\\n\", ioAppend(`io/foo.txt`))\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:io,,,,,,,,,,,,"ioAppend",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:ioBin,,M,,,,,,,,,,,,,,,,,,,,,,,,,,"Convert a record and a bin tag name to an I/O handle\nwhich may used to read/write the specified bin.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:io,,,,,,,,,,,,"ioBin",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:ioBuilderNewDir,,M,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:io,,,,,,,,,,,,"ioBuilderNewDir",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:ioBuilderNewFile,,M,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:io,,,,,,,,,,,,"ioBuilderNewFile",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:ioBuilderRename,,M,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:io,,,,,,,,,,,,"ioBuilderRename",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:ioBuilderSave,,M,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:io,,,,,,,,,,,,"ioBuilderSave",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:ioBuilderUpload,,M,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:io,,,,,,,,,,,,"ioBuilderUpload",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:ioCharset,,M,,,,,,,,,,,,,,,,,,,,,,,,,,"Configure an I/O handle to use the specified charset. The handle\nis any supported [I/O handle]`doc#handles` and the charset is a string\nname supported by the JVM installation. Standard charset names:\n - \"UTF-8\" 8-bit Unicode Transformation Format\n - \"UTF-16BE\": 16 bit Big Endian Unicode Transformation Format\n - \"UTF-16LE\" 16 bit Little Endian Unicode Transformation Format\n - \"ISO-8859-1\": Latin-1 code block\n - \"US-ASCII\": 7-bit ASCII\n\nExamples:\n // write text file in UTF-16BE\n ioWriteStr(str, ioCharset(`io/foo.txt`, \"UTF-16BE\"))\n\n // read CSV file in ISO-8859-1\n ioCharset(`io/foo.csv`, \"ISO-8859-1\").ioReadCsv\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:io,,,,,,,,,,,,"ioCharset",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:ioCopy,,M,,,,,,,,,,,,,,,,,,,,,,,,,,"Copy a file or directory to the new specified location.\nIf this file represents a directory, then it recursively\ncopies the entire directory tree. Both handles must reference\na local file or directory on the file system.\n\nIf during the copy, an existing file of the same name is found,\nthen the \"overwrite\" option should be to marker or 'true' to\noverwrite or 'false' to skip. Or if overwrite is not defined\nthen an IOErr is raised.\n\nExamples:\n ioCopy(`io/dir/`, `io/dir-copy/`)\n ioCopy(`io/file.txt`, `io/file-copy.txt`)\n ioCopy(`io/file.txt`, `io/file-copy.txt`, {overwrite})\n ioCopy(`io/file.txt`, `io/file-copy.txt`, {overwrite:false})\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:io,,,,,,,,,,,,"ioCopy",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:ioCrc,,M,,,,,,,,,,,,,,,,,,,,,,,,,,"Generate a cycle reduancy check code as a Number.\nSee `sys::Buf.crc` for available algorithms.\n\nExample:\n ioCrc(\"foo\", \"CRC-32\").toHex\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:io,,,,,,,,,,,,"ioCrc",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:ioDelete,,M,,,,,,,,,,,,,,,,,,,,,,,,,,"Delete a file or a directory as mapped by the given I/O handle.\nIf a directory is specified it is recursively deleted. If the I/O\nhandle does map to a file system then raise exception. If the\nfile does not exist then no action is taken.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:io,,,,,,,,,,,,"ioDelete",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:ioDigest,,M,,,,,,,,,,,,,,,,,,,,,,,,,,"Generate a one-way hash of the given I/O handle.\nSee `sys::Buf.toDigest` for available algorithms.\n\nExample:\n ioDigest(\"foo\", \"SHA-1\").ioToBase64\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:io,,,,,,,,,,,,"ioDigest",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:ioDir,,M,,,,,,,,,,,,,,,,,,,,,,,,,,"Read a directory listing, return a grid with cols:\n - 'uri': Uri for handle to read/write the file\n - 'name': filename string\n - 'mimeType': file mime type or null if unknown\n - 'dir': marker if file is a sub-directory or null\n - 'size': size of file in bytes or null\n - 'mod': modified timestamp or null if unknown\n\nIf the I/O handle does map to a file system then raise exception.\n\n ioDir(`io/`) // read files in project's io/ directory\n ioDir(`fan://proj`) // read files in proj.pod\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:io,,,,,,,,,,,,"ioDir",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:ioEachCsv,,M,,,,,,,,,,,,,,,,,,,,,,,,,,"Iterate the rows of a CSV file (comma separated values) and callback\nthe given function with two parameters: Str[] cells of current row\nand zero based Number line number.\n\nThe following options are supported:\n - delimiter: separator char as string, default is \",\"\n\nAlso `ioReadCsv`, `ioWriteCsv`, and `docSkySpark::Csv`.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:io,,,,,,,,,,,,"ioEachCsv",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:ioEachLine,,M,,,,,,,,,,,,,,,,,,,,,,,,,,"For each line of the given source stream call the given function\nwith two parameters: Str line and zero based Number line number.\nLines are processed according to `sys::InStream.eachLine`.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:io,,,,,,,,,,,,"ioEachLine",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:ioExport,,M,,,,,,,,,,,,,,,,,,,,,,,,,,"Export a view to the given file handle - see `docFresco::Export`\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:io,,,,,,,,,,,,"ioExport",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:ioFromBase64,,M,,,,,,,,,,,,,,,,,,,,,,,,,,"Return an I/O handle to decode from a base64 string.\nAlso see `ioToBase64()` and `sys::Buf.fromBase64`\n\nExample:\n // decode base64 to a string\n ioFromBase64(\"c2t5c3Bhcms\").ioReadStr\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:io,,,,,,,,,,,,"ioFromBase64",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:ioGzip,,M,,,,,,,,,,,,,,,,,,,,,,,,,,"Wrap an I/O handle to GZIP compress/uncompress.\n\nExample:\n // generate GZIP CSV file\n readAll(site).ioWriteCsv(ioGzip(`io/sites.gz`))\n\n // read GZIP CSV file\n ioGzip(`io/sites.gz`).ioReadCsv\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:io,,,,,,,,,,,,"ioGzip",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:ioHmac,,M,,,,,,,,,,,,,,,,,,,,,,,,,,"Generate an HMAC message authentication as specified by RFC 2104.\nSee `sys::Buf.hmac`.\n\nExample:\n ioHmac(\"foo\", \"SHA-1\", \"secret\").ioToBase64\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:io,,,,,,,,,,,,"ioHmac",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:ioMove,,M,,,,,,,,,,,,,,,,,,,,,,,,,,"Move or rename a file or directory. Both handles must reference\na local file or directory on the file system. If the target file\nalready exists then raise an IOErr.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:io,,,,,,,,,,,,"ioMove",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:ioPbk,,M,,,,,,,,,,,,,,,,,,,,,,,,,,"Generate a password based cryptographic key. See `sys::Buf.pbk`.\n\nExample:\n ioPbk(\"PBKDF2WithHmacSHA1\", \"secret\", ioRandom(64), 1000, 20).ioToBase64\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:io,,,,,,,,,,,,"ioPbk",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:ioRandom,,M,,,,,,,,,,,,,,,,,,,,,,,,,,"Generate randomized series of bytes which can be used as an input I/O handle.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:io,,,,,,,,,,,,"ioRandom",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:ioReadCsv,,M,,,,,,,,,,,,,,,,,,,,,,,,,,"Read a CSV (comma separated values) file into memory as a Grid.\nCSV format is implemented as specified by RFC 4180:\n - rows are delimited by a newline\n - cells are separated by 'delimiter' char\n - cells containing the delimiter, '\"' double quote, or\n newline are quoted; quotes are escaped as '\"\"'\n - empty cells are normalized into null\n\nThe following options are supported:\n - delimiter: separator char as string, default is \",\"\n - noHeader: if present then don't treat first row as col names,\n instead use \"v0\", \"v1\", etc\n\nAlso see `ioStreamCsv`, `ioEachCsv`, `ioWriteCsv`,\nand `docSkySpark::Csv`.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:io,,,,,,,,,,,,"ioReadCsv",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:ioReadJson,,M,,,,,,,,,,,,,,,,,,,,,,,,,,"Read a JSON file into memory. See `docSkySpark::Json#mapping`\nfor type mapping. This function reads any arbitrary JSON nested\nobject/array structure which can be accessed as Axon dicts/lists.\nAlso see `ioReadJsonGrid` if reading a Haystack formatted grid.\n\nObject keys which are not valid tag names will not serialize correctly\nover the REST API, but are available to use in-process. You can use\nthe 'safeNames' option to force object keys to be safe tag\nnames (but you will lose the original key names).\n\nBy default any string value starting with \"x:\" will be parsed according\nto the Haystack JSON specification. If you wish to disable this feature,\nthen use the 'notHaystack' option. Or if you wish to attempt to parse\nstrings into typed objects, but don't want a document to fail if there\nis an invalid string then use the 'safeVals' option.\n\nThe following options are supported:\n - notHaystack: do not attempt to normalize strings to Haystack types\n - safeNames: convert object keys to safe tag names\n - safeVals: attempt to parse strings to Haystack types, but don't\n fail if a string is illegally formatted\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:io,,,,,,,,,,,,"ioReadJson",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:ioReadJsonGrid,,M,,,,,,,,,,,,,,,,,,,,,,,,,,"Read a JSON file formatted as a standardized Haystack grid\ninto memory. See `docSkySpark::Json#grid` for type mapping. Also\nsee `ioReadJson` to read arbitrary JSON structured data.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:io,,,,,,,,,,,,"ioReadJsonGrid",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:ioReadLines,,M,,,,,,,,,,,,,,,,,,,,,,,,,,"Read a file into memory as a list of string lines.\nLines are processed according to `sys::InStream.readLine` semanatics.\n\nBy default the maximum line size read is 4kb of Unicode\ncharacters (not bytes). This limit may be overridden using\nthe option key \"limit\".\n\nExamples:\n ioReadLines(`io/file.txt`)\n ioReadLines(`io/file.txt`, {limit: 10_000})\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:io,,,,,,,,,,,,"ioReadLines",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:ioReadStr,,M,,,,,,,,,,,,,,,,,,,,,,,,,,"Read a file into memory as a string. Newlines are\nalways normalized into \"\\n\" characters.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:io,,,,,,,,,,,,"ioReadStr",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:ioReadTrio,,M,,,,,,,,,,,,,,,,,,,,,,,,,,"Read a trio file into memory as a list of Dicts.\nSee `docSkySpark::Trio`.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:io,,,,,,,,,,,,"ioReadTrio",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:ioReadZinc,,M,,,,,,,,,,,,,,,,,,,,,,,,,,"Read a zinc file into memory as a Grid.\nSee `docSkySpark::Zinc`.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:io,,,,,,,,,,,,"ioReadZinc",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:ioSkip,,M,,,,,,,,,,,,,,,,,,,,,,,,,,"Apply a skipping operation to an input I/O handle. The\nfollowing options are available (in order of processing):\n - bom: skip byte order mark\n - bytes: number of bytes to skip (must be binary input stream)\n - chars: number of chars to skip (must be text input stream)\n - lines: number of lines to skip\n\nSkipping a BOM will automatically set the appropiate charset.\nIf no BOM is detected, then this call is safely ignored by pushing\nthose bytes back into the input stream. The following byte\norder marks are supported:\n - UTF-16 Big Endian: 0xFE_FF\n - UTF-16 Little Endian: 0xFF_FE\n - UTF-8: 0xEF_BB_BF\n\nExamples:\n // skip leading 4 lines in a CSV file\n ioSkip(`io/foo.csv`, {lines:4}).ioReadCsv\n\n // skip byte order mark\n ioSkip(`io/foo.csv`, {bom}).ioReadCsv\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:io,,,,,,,,,,,,"ioSkip",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:ioStreamCsv,,M,,,,,,,,,,,,,,,,,,,,,,,,,,"Read a stream of dicts from a comma separated value file. This\nfunction uses the same options and semantics as `ioReadCsv` except\nit streams the rows as dicts instead of reading to an in-memory grid.\nSee `docSkySpark::Streams#ioStreamCsv`.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:io,,,,,,,,,,,,"ioStreamCsv",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:ioStreamLines,,M,,,,,,,,,,,,,,,,,,,,,,,,,,"Read a stream of lines. Lines are processed according to\n`sys::InStream.eachLine`. See `docSkySpark::Streams#ioStreamLines`.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:io,,,,,,,,,,,,"ioStreamLines",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:ioToBase64,,M,,,,,,,,,,,,,,,,,,,,,,,,,,"Encode an I/O handle into a base64 string. The default behavior\nis to encode using RFC 2045 (see `sys::Buf.toBase64`). Use the '{uri}'\noption to encode a URI-safe URI via RFC 4648 (see `sys::Buf.toBase64Uri`).\nAlso see `ioFromBase64`.\n\nExample:\n // encode string to base64\n ioToBase64(\"myusername:mysecret\")\n\n // encode string to base64 without padding using URI safe chars\n ioToBase64(\"myusername:mysecret\", {uri})\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:io,,,,,,,,,,,,"ioToBase64",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:ioToHex,,M,,,,,,,,,,,,,,,,,,,,,,,,,,"Encode an I/O handle into hexidecimal string.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:io,,,,,,,,,,,,"ioToHex",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:ioWriteCsv,,M,,,,,,,,,,,,,,,,,,,,,,,,,,"Write a [CSV]`docSkySpark::Csv` (comma separated values) file. 'val' may be\n - A Grid\n - A report. See `ext-io::doc#reports`\n\nCSV format is implemented as specified by RFC 4180:\n - rows are delimited by a newline\n - cells are separated by 'delimiter' char\n - cells containing the delimiter, '\"' double quote, or\n newline are quoted; quotes are escaped as '\"\"'\n\nThe following options are supported:\n - delimiter: separator char as string, default is \",\"\n - newline: newline string, default is \"\\n\" (use \"\\r\\n\" for CRLF)\n - noHeader: Set this option to prevent the column names from being\n written as a header row.\n\nAlso `ioReadCsv`, `ioEachCsv`, and `docSkySpark::Csv`.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:io,,,,,,,,,,,,"ioWriteCsv",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:ioWriteExcel,,M,,,,,,,,,,,,,,,,,,,,,,,,,,"Write an Excel XLS file, where 'val' may be:\n - Grid - writted a a single worksheet\n - Grid[] - each grid is exported as a separate worksheet\n\nBy default each worksheet is named \"Sheet1\", \"Sheet2\", etc. Use\na 'title' tag in Grid.meta to give the worksheets a specific name.\n\nExample:\n readAll(site).ioWriteExcel(`io/sites.xls`)\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:io,,,,,,,,,,,,"ioWriteExcel",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:ioWriteJson,,M,,,,,,,,,,,,,,,,,,,,,,,,,,"Write an Axon data structure to [JSON]`docSkySpark::Json`. 'val' may be:\n - One of the SkySpark types that can be mapped to JSON.\n See `docSkySpark::Json#mapping` for type mapping.\n - A Report. See `ext-io::doc#reports`\n\nThe following options are supported:\n - noEscapeUnicode: do not escape characters over 0x7F\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:io,,,,,,,,,,,,"ioWriteJson",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:ioWriteJsonLd,,M,,,,,,,,,,,,,,,,,,,,,,,,,,"Write an Axon data structure to RDF JSON-LD format. The 'val' must be an\nAxon type that can be converted to a Grid.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:io,,,,,,,,,,,,"ioWriteJsonLd",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:ioWriteLines,,M,,,,,,,,,,,,,,,,,,,,,,,,,,"Write a list of string lines separated with \"\\n\" character.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:io,,,,,,,,,,,,"ioWriteLines",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:ioWritePdf,,M,,,,,,,,,,,,,,,,,,,,,,,,,,"Write a PDF file which renders the given data using its\ndefault visualization. 'val' may be:\n - A Grid\n - A Report. See `ext-io::doc#reports`\n\nThe 'size' tag in options specifies page size as Str formattted\nas \"width,height\" measured in 1/72\" points. If size is null,\nthen the PDF is rendered as a single \"best fit\" page. If size\nis omitted, default of \"612,792\" is used. Standard sizes:\n - \"612,792\": Portrait 8.5\" x 11\" (216mm x 279mm)\n - \"792,612\": Landscape 11\" x 8.5\" (279mm x 216mm)\n\nExamples:\n // default 8.5\" x 11\"\n read(kw).hisRead(yesterday).ioWritePdf(`io/portrait.pdf`)\n\n // landscape 11\" x 8.5\"\n read(kw).hisRead(yesterday).ioWritePdf(`io/landscape.pdf`, {size:\"792,612\"})\n\n // single best fit page\n readAll(site).ioWritePdf(`io/sites.pdf`, {size:null})\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:io,,,,,,,,,,,,"ioWritePdf",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:ioWriteStr,,M,,,,,,,,,,,,,,,,,,,,,,,,,,"Write a string to a file.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:io,,,,,,,,,,,,"ioWriteStr",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:ioWriteTrio,,M,,,,,,,,,,,,,,,,,,,,,,,,,,"Write a file in the [trio]`docSkySpark::Trio` format. 'val' may be:\n - A list of Dicts. Dicts can be any format accepted by `toRecList`\n - A report. See `ext-io::doc#reports`\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:io,,,,,,,,,,,,"ioWriteTrio",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:ioWriteTurtle,,M,,,,,,,,,,,,,,,,,,,,,,,,,,"Write an Axon data structure to RDF Turtle format. The 'val' must be an\nAxon type that can be converted to a Grid.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:io,,,,,,,,,,,,"ioWriteTurtle",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:ioWriteXml,,M,,,,,,,,,,,,,,,,,,,,,,,,,,"Write a grid to an [XML]`docSkySpark::Xml` file. 'val' may be:\n - A Grid\n - A Report. See `ext-io::doc#reports`\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:io,,,,,,,,,,,,"ioWriteXml",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:ioWriteZinc,,M,,,,,,,,,,,,,,,,,,,,,,,,,,"Write a file in the [zinc]`docSkySpark::Zinc` format. 'val' may be:\n - A Grid\n - A report. See `ext-io::doc#reports`\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:io,,,,,,,,,,,,"ioWriteZinc",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:ioZipDir,,M,,,,,,,,,,,,,,,,,,,,,,,,,,"Read a zip file's entry listing, return a grid with cols:\n - 'path': path of entry inside zip as Uri\n - 'size': size of file in bytes or null\n - 'mod': modified timestamp or null if unknown\n\nThe handle must reference a zip file in the file system.\nUse `ioZipEntry` to perform a read operation on one of the\nentries in the zip file.\n\nExample:\n ioZipDir(`io/batch.zip`)\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:io,,,,,,,,,,,,"ioZipDir",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:ioZipEntry,,M,,,,,,,,,,,,,,,,,,,,,,,,,,"Return a I/O handle which may be used to read from a zip\nentry within a zip file. The 'handle' parameter must be\nan I/O handle which references a zip file in the file system.\nThe 'path' parameter must be a Uri which identifies the\npath of the entry within the zip file. See `ioZipDir` to\nread the listing of paths within a zip.\n\nExample:\n // read CSV file from within a zip\n ioZipEntry(`io/batch.zip`, `/zone-temp.csv`).ioReadCsv\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:io,,,,,,,,,,,,"ioZipEntry",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:isAlpha,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Is number an ASCII alpha char: isUpper||isLower\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"isAlpha",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:isAlphaNum,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Is number an ASCII alpha-numeric char: isAlpha||isDigit\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"isAlphaNum",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:isBool,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Return if an object is a boolean type\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"isBool",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:isDate,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Return if an object is a Date type\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"isDate",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:isDateTime,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Return if an object is a DateTime type\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"isDateTime",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:isDict,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Return if an object is a dict type\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"isDict",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:isDigit,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Is number a digit in the specified radix. A decimal radix of\nten returns true for 0-9. A radix of 16 also returns true\nfor a-f and A-F.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"isDigit",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:isEmpty,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Return if a collection is empty: str, list, dict, or grid\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"isEmpty",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:isEven,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Return if an integer is an even number.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"isEven",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:isFunc,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Return if an object is a function type\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"isFunc",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:isGrid,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Return if an object is a grid type\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"isGrid",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:isKeyword,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Return if given string is an Axon keyword\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"isKeyword",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:isLeapYear,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Return if a year is a leap year. Year must be four digit Number such as 2020.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"isLeapYear",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:isList,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Return if an object is a list type\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"isList",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:isLower,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Is number an ASCII lowercase alphabetic char: a-z\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"isLower",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:isMetric,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Given an optional value return true if the SI metric system should be\nused or false if the United States customary unit system should be\nused. The following rules are used:\n - if val is a dict with `geoCountry` return return false if \"US\"\n - if number or rec with `unit` and unit is known to be a US\n customary unit return false (right now we only check\n for °F and Δ°F)\n - fallback to locale of hosting server, see `sys::Locale`\n\nExamples:\n isMetric({geoCountry:\"US\"}) >> false\n isMetric({geoCountry:\"FR\"}) >> true\n isMetric(75°F) >> false\n isMetric({unit:\"Δ°C\"}) >> true\n isMetric() >> fallback to server locale\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"isMetric",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:isNaN,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Return if 'val' is the Number representation of not-a-number\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"isNaN",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:isNumber,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Return if an object is a number type\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"isNumber",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:isOdd,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Return if an integer is an odd number.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"isOdd",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:isRef,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Return if an object is a ref type\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"isRef",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:isSpace,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Is number is whitespace char: space \\t \\n \\r \\f\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"isSpace",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:isSteadyState,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"isSteadyState",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:isStr,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Return if an object is a str type\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"isStr",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:isTagName,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Return if the given string is legal tag name -\nsee `haystack::Etc.isTagName`\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"isTagName",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:isTime,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Return if an object is a Time type\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"isTime",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:isUpper,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Is number an ASCII uppercase alphabetic char: A-Z\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"isUpper",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:isUri,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Return if an object is a Uri type\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"isUri",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:isWeekday,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Does the given Date or DateTime fall on Mon, Tue, Wed, Thu, or Fri\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"isWeekday",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:isWeekend,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Does the given Date or DateTime fall on Sat or Sun\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"isWeekend",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:jobCancel,,M,,,,,,,,,,,,,,,,,,,,,,,,,,"Send the cancel message to the job identified by given handle.\nThrow Err if job ext not installed.\n\nSide effects:\n - changes job status of given job\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:job,,,,,,,,,,,,"jobCancel",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:jobCurRec,,,,,,,,,,,,,,,,,,,,,,,,,,,,"If running in the context of a scheduled job then return the job\nrecord Dict. Otherwise raise an error or return null based on the\nchecked flag.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:job,,,,,,,,,,,,"jobCurRec",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:jobDebug,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:job,,,,,,,,,,,,"jobDebug",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:jobDebug3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:job,,,,,,,,,,,,"jobDebug3",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:jobFolioBackup,,M,,,,,,,,,,,,,,,,,,,,,,,,,,"Run the `folioBackup` function as a background job.\nUnlike the core function, this function runs synchronously\nand updates the job progress based on backup progress.\nRaise an exception if this function is not called while\nrunning in a job.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:job,,,,,,,,,,,,"jobFolioBackup",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:jobFolioCompact,,M,,,,,,,,,,,,,,,,,,,,,,M,,,,"This is a no-op; compaction is no longer required in 3.0\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:job,,,,,,,,,,,,"jobFolioCompact",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:jobFolioSnapshot,,M,,,,,,,,,,,,,,,,,,,,,,M,,,,"Deprecated: use `jobFolioBackup`\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:job,,,,,,,,,,,,"jobFolioSnapshot",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:jobIsRunning,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Is the current context contained by a running job.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:job,,,,,,,,,,,,"jobIsRunning",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:jobLog,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Return the LogRecs logged by the job identified by handle.\nThrow Err if job ext not installed or handle does map to a\nvalid job. Columns:\n - ts: timestamp of log item\n - level: err, warn, info, debug\n - msg: message of LogRec\n - errTrace: dump if there was an exception\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:job,,,,,,,,,,,,"jobLog",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:jobProgress,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Update the current job's progress with percent complete\nand display message for current activity. If the current\ncontext is not actively running inside a job, this is a no-op.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:job,,,,,,,,,,,,"jobProgress",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:jobRun,,M,,,,,,,,,,,,,,,,,,,,,,,,,,"Run the given expression in the context of a background\njob. If the expression evaluates to a Ref which references\na job record, then run that job.\n\nThe job is run in the background using admin permissions.\n\nSee `ext-job::doc#funcs`.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:job,,,,,,,,,,,,"jobRun",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:jobSleep,,M,,,,,,,,,,,,,,,,,,,,,,,,,,"Sleep for the given duration. If the current context is\nnot actively running inside a job, this is a no-op.\n\nSide effects:\n - pauses the job for the given duration\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:job,,,,,,,,,,,,"jobSleep",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:jobStatus,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Return the status for a single job identified by handle.\nThrow Err if job ext not installed or handle does map to a\nvalid job. Columns:\n - handle: unique id for job\n - jobStatus: pending, running, cancelling, doneCancel, doneErr, doneOk\n - dis: summary display of job\n - progress: integer percent complete between 0 and 100\n - progressMsg: current progress activity\n - started: datetime job was started or null if not run yet\n - runtime: duration of job run\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:job,,,,,,,,,,,,"jobStatus",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:jobStatusAll,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Return the status for all the known jobs. Throw Err\nif job ext not installed. Result grid uses same format\nas `jobStatus`.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:job,,,,,,,,,,,,"jobStatusAll",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:jobStatusAll3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:job,,,,,,,,,,,,"jobStatusAll3",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:join,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Join two grids by column name. Current implementation requires:\n - grids cannot have conflicting col names (other than join col)\n - each row in both grids must have a unique value for join col\n - grid level meta is merged\n - join column meta is merged\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"join",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:joinAll,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Join a list of grids into a single grid. See `join`.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"joinAll",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:keepCols,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Return a new grid with keeps the given columns, but removes\nall the others. Columns can be Str names or Col instances.\nAlso see `docSkySpark::Streams#keepCols`.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"keepCols",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, @p:demo:r:25aa2aba-d320177d "AHU Fan Runtime",^func:kpiAhuFanRuntime,,,,,,,,,,,,,,,,,,,,,,,,,"AHU Fan Runtime",,,,,,,,,,,,,,,,,,M,,,,,"Total time the AHU fan was running",,,,,,,,,,M,^lib:proj_demo,,,,,,,,,,,,"kpiAhuFanRuntime",,,,,,,,,,,,,,,,,,,,,,,,,,,,"ahu",,,,,"(ahu, dates) => do\n fan: read(discharge and air and fan and equipRef==ahu->id)\n if (fan == null) return null\n his: hisRead(fan, dates).hisFindPeriods(val => val == true)\n runtime: his.foldCol(\"v0\", sum)\n if (runtime == null or runtime == na()) runtime = 0hr\n {sum: runtime}\nend",,,,,,,,,,,,,,,,,,,,,,,,,2020-01-09T18:17:34.209Z @p:demo:r:25aa2aba-33e84930 "kW",^func:kpiKw,,,,,,,,,,,,,,,,,,,,,,,,,"kW",,,,,,,,,,,,,,,,,,M,,,,,"Site electrical kW demand min, max, average over time period.",,,,,,,,,,M,^lib:proj_demo,,,,,,,,,,,,"kpiKw",,,,,,,,,,,,,,,,,,,,,,,,,,,,"site",,,,,"(site, dates) => do\n pt: read(power and equipRef->siteMeter and siteRef==site->id, false)\n if (pt == null) return null\n\n his: hisRead(pt, dates)\n if (his.isEmpty or his.meta->hisEnd < pt->hisStart) return null\n\n kpi: {min: his.foldCol(\"v0\", min),\n max: his.foldCol(\"v0\", max)}\n\n if (kpi.any v => na() == v ) null else kpi\nend",,,,,,,,,,,,,,,,,,,,,,,,,2020-01-09T18:17:34.204Z @p:demo:r:25aa2aba-4800c3fa "kW Norm (kW/ft²/°daysF)",^func:kpiKwNorm,,,,,,,,,,,,,,,,,,,,,,,,,"kW Norm (kW/ft²/°daysF)",,,,,,,,,,,,,,,,,,M,,,,,"Site electrical kW demand min, max, average normalized by ft² and degree day.",,,,,,,,,,M,^lib:proj_demo,,,,,,,,,,,,"kpiKwNorm",,,,,,,,,,,,,,,,,,,,,,,,,,,,"site",,,,,"(site, dates) => do\n pt: read(power and equipRef->siteMeter and siteRef==site->id, false)\n if (pt == null) return null\n\n his: hisRead(pt, dates).energyNormByArea.energyNormByDegreeDay\n\n if (his.isEmpty or\n his.meta[\"hisEnd\"] < pt[\"hisStart\"] or\n his.missing(\"v0\")) return null\n\n kpi: {min: his.foldCol(\"v0\", min),\n max: his.foldCol(\"v0\", max)}\n\n if (kpi.any v => na() == v ) null else kpi.map v => v.as(1)\nend",,,,,,,,,,,,,,,,,,,,,,,,,2020-01-09T18:17:34.205Z @p:demo:r:25aa2aba-27b60533 "kWh",^func:kpiKwh,,,,,,,,,,,,,,,,,,,,,,,,,"kWh",,,,,,,,,,,,,,,,,,M,,,,,"Site electrical kWh consumption min, max, average over time period.",,,,,,,,,,M,^lib:proj_demo,,,,,,,,,,,,"kpiKwh",,,,,,,,,,,,,,,,,,,,,,,,,,,,"site",,,,,"(site, dates) => do\n pt: read(energy and equipRef->siteMeter and siteRef==site->id, false)\n if (pt == null) return null\n\n his: hisRead(pt, dates).hisClip\n\n kpiSum: his.foldCol(\"v0\", sum)\n if (na() == kpiSum) null else {sum: kpiSum}\nend",,,,,,,,,,,,,,,,,,,,,,,,,2020-01-09T18:17:34.206Z @p:demo:r:25aa2aba-f8272ca7 "kWh Δ Prev Year (kWh/°daysF)",^func:kpiKwhDeltaPrevYear,,,,,,,,,,,,,,,,,,,,,,,,,"kWh Δ Prev Year (kWh/°daysF)",,,,,,,,,,,,,,,,,,M,,,,,"Delta of KWh consumption between selected time range and previous\nyear normalized by degree day.",,,,,,,,,,M,^lib:proj_demo,,,,,,,,,,,,"kpiKwhDeltaPrevYear",,,,,,,,,,,,,,,,,,,,,,,,,,,,"site",,,,,"(site, dates) => do\n pt: read(energy and equipRef->siteMeter and siteRef==site->id, false)\n if (pt == null) return null\n\n try do\n cur: hisRead(pt, dates).energyNormByDegreeDay.foldCol(\"v0\", sum)\n base: energyBaselinePrevYear(pt, dates).energyNormByDegreeDay.foldCol(\"v0\", sum)\n {delta: (cur - base).as(1)}\n end catch null\nend",,,,,,,,,,,,,,,,,,,,,,,,,2020-01-09T18:17:34.208Z @p:demo:r:25aa2aba-073ac1dc "kWh Norm (kWh/ft²/°daysF)",^func:kpiKwhNorm,,,,,,,,,,,,,,,,,,,,,,,,,"kWh Norm (kWh/ft²/°daysF)",,,,,,,,,,,,,,,,,,M,,,,,"Site electrical kWh consumption min, max, average normalized by ft² and degree day.",,,,,,,,,,M,^lib:proj_demo,,,,,,,,,,,,"kpiKwhNorm",,,,,,,,,,,,,,,,,,,,,,,,,,,,"site",,,,,"(site, dates) => do\n pt: read(energy and equipRef->siteMeter and siteRef==site->id, false)\n if (pt == null) return null\n\n his: hisRead(pt, dates).hisClip.energyNormByArea.energyNormByDegreeDay\n\n if (his.isEmpty or\n his.meta[\"hisEnd\"] < pt[\"hisStart\"] or\n his.missing(\"v0\")) return null\n\n kpiSum: his.foldCol(\"v0\", sum)\n if (na() == kpiSum) null else {sum: kpiSum.as(1)}\nend",,,,,,,,,,,,,,,,,,,,,,,,,2020-01-09T18:17:34.207Z @p:demo:r:25aa2aba-b2d295de "Watts/ft²",^func:kpiWattsNorm,,,,,,,,,,,,,,,,,,,,,,,,,"Watts/ft²",,,,,,,,,,,,,,,,,,M,,,,,"Site electrical kW demand normalized to watts per square foot",,,,,,,,,,M,^lib:proj_demo,,,,,,,,,,,,"kpiWattsNorm",,,,,,,,,,,,,,,,,,,,,,,,,,,,"site",,,,,"//KPI to calculate watts per square foot\n(site, dates) => do\n pt: read(power and equipRef->siteMeter and siteRef==site->id)\n his: hisRead(pt, dates).hisMap(kw => kw.to(1W)).energyNormByArea\n if (his.meta->hisEnd < pt->hisStart) return null\n {min: his.foldCol(\"v0\", min),\n max: his.foldCol(\"v0\", max)}\nend",,,,,,,,,,,,,,,,,,,,,,,,,2020-01-09T18:17:34.212Z @p:demo:r:25aa2aba-d8917fc8 "ZoneTemp Δ Sp",^func:kpiZoneTempDeltaSp,,,,,,,,,,,,,,,,,,,,,,,,,"ZoneTemp Δ Sp",,,,,,,,,,,,,,,,,,M,,,,,"Average delta of zone temp versus its configured setpoint.",,,,,,,,,,M,^lib:proj_demo,,,,,,,,,,,,"kpiZoneTempDeltaSp",,,,,,,,,,,,,,,,,,,,,,,,,,,,"ahu",,,,,"(equip, dates) => do\n // for demo purposes we just grab one random zone temp\n sensor: read(zone and temp and sensor and equipRef==equip->id, false)\n if (sensor == null) return null\n\n // get matching setpoint for equip\n sp: read(zone and temp and sp and equipRef==equip->id, false)\n if (sp == null) return null\n\n // get interpolated difference between sensor - sp for samples\n deltas: hisRead([sensor, sp], dates)\n .hisInterpolate\n .map(r => r.set(\"delta\", r[\"v0\"] - r[\"v1\"]))\n\n // return avg delta\n kpiDelta: deltas.foldCol(\"delta\", avg)\n if (na() == kpiDelta) null else {delta: kpiDelta}\nend",,,,,,,,,,,,,,,,,,,,,,,,,2020-01-09T18:17:34.21Z @p:demo:r:25aa2aba-1d2862dc "ZoneTemp Occ Avg",^func:kpiZoneTempOccAvg,,,,,,,,,,,,,,,,,,,,,,,,,"ZoneTemp Occ Avg",,,,,,,,,,,,,,,,,,M,,,,,"Average zone temp during occupancy",,,,,,,,,,M,^lib:proj_demo,,,,,,,,,,,,"kpiZoneTempOccAvg",,,,,,,,,,,,,,,,,,,,,,,,,,,,"ahu",,,,,"(equip, dates) => do\n // for demo purposes we just grab one random zone temp\n sensor: read(zone and temp and sensor and equipRef==equip->id, false)\n if (sensor == null) return null\n\n // get occupancy schedule\n occ: toOccupied(equip).hisRead(dates).hisFindPeriods(v => v)\n\n // get temps within occupancy\n temps: hisRead(sensor, dates).hisFindInPeriods(occ)\n\n // return avg\n {avg: temps.foldCol(\"v0\", avg)}\nend",,,,,,,,,,,,,,,,,,,,,,,,,2020-01-09T18:17:34.211Z @p:demo:r:25aa2aba-b78786ef "KW Exceeds Target",^func:kwTooHigh,,,,,,,,,,,,,,,,,,,,,,,,,"KW Exceeds Target",,,,,,,,,,,,,,,,,,M,,,,,"KW exceeds target of 400kW",,,,,,,,,,,^lib:proj_demo,,,,,,,,,,,,"kwTooHigh",,,,,,,,,,,,,,,,,,,,,,,,,,,,"elec and meter",,,,M,"(meter, date) => do\n result: read(power and equipRef==meter->id)\n .hisRead(date)\n .hisFindPeriods(power => power > 400)\n\nend",,,,,,,,,,,,,,,,,,,,,,,,,2020-01-09T18:17:34.203Z ,^func:last,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Get the last item from an ordered collection or return null\nif the collection is empty:\n - list: item at index -1\n - grid: item at index -1\n - stream: last item; see `docSkySpark::Streams#last`\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"last",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:lastMonth,,,,,,,,,,,,,,,,,,,,,,,,,,,,"DateSpan for month previous to this month '1..28-31'\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"lastMonth",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:lastWeek,,,,,,,,,,,,,,,,,,,,,,,,,,,,"DateSpan for week previous to this week 'sun..sat' (uses locale start of week)\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"lastWeek",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:lastYear,,,,,,,,,,,,,,,,,,,,,,,,,,,,"DateSpan for year previous to this year 'Jan-1..Dec-31'\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"lastYear",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:libs,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"libs",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:libsInstalled,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"libsInstalled",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:licHostInfo,,,,,,,,,,,,,,,,,,,,,,,,,,"ui::hostInfo",,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:lic,,,,,,,,,,,,"licHostInfo",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,M,,,,,,,,,,,,,,,,,,,,,,, ,^func:licInstall,,,,,,,,,,,,,,,,,,,,,,,,,,"ui::install",,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:lic,,,,,,,,,,,,"licInstall",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,M,,,,,,,,,,,,,,,,,,,,,,, ,^func:licPing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:lic,,,,,,,,,,,,"licPing",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,M,,,,,,,,,,,,,,,,,,,,,,, ,^func:licRefresh,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:lic,,,,,,,,,,,,"licRefresh",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,M,,,,,,,,,,,,,,,,,,,,,,, ,^func:licShow,,,,,,,,,,,,,,,,,,,,,,,,,,"ui::show",,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:lic,,,,,,,,,,,,"licShow",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,M,,,,,M,,,,,,,,,,,,,,,,,,,,,,, ,^func:licStatus,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Return current licensing status as Dict with following tags:\n - dis: summary of licensing status\n - mode: status string\n - usage: current point usage across projects\n - points: licensing capacity\n - level: info, warn, or err\n - devOnly: marker if development only license\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"licStatus",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,M,,,,,,,,,,,,,,,,,,,,,,, ,^func:licUninstall,,,,,,,,,,,,,{icon:"warn" disKey:"ui::licUninstallConfirm" detailsKey:"ui::licUninstallConfirmDetails"},,,,,,,,,,,,,"ui::uninstall",,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:lic,,,,,,,,,,,,"licUninstall",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,M,,,,,M,,,,,,,,,,,,,,,,,,,,,,, ,^func:licUpdate,,,,,,,,,,,,,,,,,,,,,,,,,,"ui::licUpdateFromCloud",,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:lic,,,,,,,,,,,,"licUpdate",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,M,,,,,,,,,,,,,,,,,,,,,,, ,^func:licUsageByProj,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:lic,,,,,,,,,,,,"licUsageByProj",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,M,,,,,,,,,,,,,,,,,,,,,,, ,^func:licViews,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:lic,,,,,,,,,,,,"licViews",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,M,,,,,,,,,,,,,,,,,,,,,,, ,^func:lics,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:lic,,,,,,,,,,,,"lics",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,M,,,,,,,,,,,,,,,,,,,,,,, ,^func:lightingFuncTest,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Marker",,,,,,,,,"func",,,,[^func],,,^lib:lighting,,,,,,,,,,,,"lightingFuncTest",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,"() => \"lighting func test\"",,,,,,,,,,,,,,,,,,,,,,,,, @p:demo:r:25aa2aba-d6758288 "Lights On and Unoccupied",^func:lightsOnAndUnoccupied,,,,,,,,,,,,,,,,,,,,,,,,,"Lights On and Unoccupied",,,,,,,,,,,,,,,,,,M,,,,,"Lights are on and site is unoccupied.\n\nRecommended Actions\n===================\n1. Check that schedules are linked to lighting system in control system\n2. Check if lights have been left in override mode\n\n**Priority:** Low",,,,,,,,,,,^lib:proj_demo,,,,,,,,,,,,"lightsOnAndUnoccupied",,,,,,,,,,,,,,,,,,,,,,,,,,,,"lights and point",,,,M,"/*\n Lights are on and site is unoccupied.\n\n Params:\n - lights: rec with `lights` tag\n - dates: any valid `hisRead` date range\n - threshold: number of hours lights must be on outside\n of occupied time before we consider generating a spark\n\n Returns:\n - spark periods\n*/\n(lights, dates, threshold: 2h) => do\n\n // get periods when lights are on\n on: hisRead(lights, dates).hisFindPeriods(v => true == v)\n\n // get unoccupied periods\n unoccupied: toOccupied(lights).hisRead(dates).hisFindPeriods(v => (na() != v) and (not v))\n\n // compute intersection and filter out periods under threshold\n faults: hisPeriodIntersection([on, unoccupied]).hisFindAll(p => p != na() and p > threshold)\n\n // compute total hours on during unoccupied times\n totalDur: faults.foldCol(\"v0\", sum)\n\n // lookup costPerHour const on lights rec\n cost: lights->costPerHour * totalDur.as(1)\n\n // add costing/priority to the spark as additional tags\n faults.addMeta({spark_cost: cost, spark_priority: \"low\"})\nend",,,,,,,,,,,,,,,,,,,,,,,,,2020-01-09T18:17:34.195Z ,^func:limit,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Truncate stream after given limit is reached.\nSee `docSkySpark::Streams#limit`.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"limit",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:lint,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Run the lint report on the given recs. Recs may be any value\naccepted by `toRecList` or if null then lint is run on the\nentire project. By default lint will only run for 10sec or\nuntil it finds 1000 issues. You can adjust these limts via\nthe opts parameter:\n - timeout: max amount of time to run lint (10sec default)\n - limit: max number of issues (1000 default)\n\nPass '{-timeout, -limit}' to remove the timeout and limit.\n\nResults are returned as grid with the following columns:\n - id: record id\n - tag: tag name with the lint issue\n - level: either \"warn\" or \"err\"\n - msg: issue as string\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"lint",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:lintTool,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:ui,,,,,,,,,,,,"lintTool",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:log,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Submit a log record to the logging subsystem:\n - level: must be \"err\", \"warn\", \"info\" (same as `sys::LogLevel`).\n - tags: Dict for `skyarcd::LogMod.create` or Str which is assumed to be '{name:}'\n - msg: short single line summary of message to log\n - err: exception from catch block that includes errTrace tag\nIn general you should prefer `logErr`, `logWarn`, and `logInfo`.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:log,,,,,,,,,,,,"log",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:log10,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Return base 10 logarithm of val.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:math,,,,,,,,,,,,"log10",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:logDebug,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Log at the \"debug\" level - see `log`.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:log,,,,,,,,,,,,"logDebug",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:logE,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Return natural logarithm to the base e of val.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:math,,,,,,,,,,,,"logE",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:logErr,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Log at the \"err\" level - see `log`.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:log,,,,,,,,,,,,"logErr",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:logInfo,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Log at the \"info\" level - see `log`.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:log,,,,,,,,,,,,"logInfo",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:logList,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:log,,,,,,,,,,,,"logList",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:logRead,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Read log records for given span. A non-null filter\nwill be applied to the log records. Opts:\n - 'limit': max number of recs to return (default 10,000)\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:log,,,,,,,,,,,,"logRead",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:logSetLevel,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:log,,,,,,,,,,,,"logSetLevel",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:logWarn,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Log at the \"warn\" level - see `log`.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:log,,,,,,,,,,,,"logWarn",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:longCycling,,,,,,,,,,,,,,,,,,,,,,,,,"Long Cycling",,,"Compute periods when an bool point's on period exceeds maxOnTime\n\nParams:\n - point: rec or grid of Bool `point`\n - dates: any valid `hisRead` date range\n - maxOnTime: duration for max time equip must be on\n\nReturns:\n - history grid where value columns are durations equip is long cycling",,,,,,,,,,,,,,,M,,,,,"Point has been continously longer than maxOnTime",,,,"func",,,,[^func],,,^lib:equip,,,,,,,,,,,,"longCycling",,,,,,,,,,,,,,,,,,,,,,,,,,,,"point and kind==\"Bool\"",^ruleTypeBase,,,M,"(point, dates, maxOnTime: 1hr) => do\n // normalize time to hours\n maxOnTime = maxOnTime.to(1h)\n\n // find periods when on and filter for those that exceed maxOnTime\n hisRead(point, dates)\n .hisFindPeriods(v => true == v)\n .findAll(row => row->v0 > maxOnTime)\n\nend",,,,,,,,,,,,,,,,,,,,,,,,, ,^func:lower,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Convert a char number or str to lower case\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"lower",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:map,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Map list, dict, or grid by applying the given mapping function.\n\nIf mapping a list, the mapping should be a function\nthat takes '(val)' or '(val, index)'. It should return\nthe new value for that index.\n\nIf mapping a dict, the mapping should be a function\nthat takes '(val)' or '(val, name)'. It should return\nthe new value for that name.\n\nIf mapping a grid, the mapping function takes '(row)' or '(row,index)'\nand returns a new dictionary to use for the row. The resulting\ngrid shares the original's grid level meta. Columns\nleft intact share the old meta-data, new columns have no\nmeta-data. If the mapping function returns null, then that row\nis removed from the resulting grid (not mapped).\n\nIf mapping a range, then the mapping function takes '(integer)', and\nreturns a list for each mapped integer inte the range.\n\nIf mapping a stream, the mapping functions takes '(val)'.\nSee `docSkySpark::Streams#map`.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"map",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:marker,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Get the marker value singleton `haystack::Marker.val`\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"marker",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:matchPointVal,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Return if a point value matches a given critera:\n - match any values which are equal via '==' operator\n - zero matches false (0% == false)\n - non-zero matches true (not 0% == true)\n - numerics can be matches with range\n - match can be a function which takes the value\n\nExamples:\n matchPointVal(false, false) >> true\n matchPointVal(0, false) >> true\n matchPointVal(33, false) >> false\n matchPointVal(33, true) >> true\n matchPointVal(33, 0..40) >> true\n matchPointVal(90, 0..40) >> false\n matchPointVal(4) x => x.isEven >> true\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:equip,,,,,,,,,,,,"matchPointVal",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:matrixAdd,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Add two matrices together and return new matrix. The parameters may\nbe any value supported `toMatrix`. Matrices must have the same dimensions.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:math,,,,,,,,,,,,"matrixAdd",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:matrixDeterminant,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Return the determinant as a unitless Number for the given matrix which\nis any value accepted by `toMatrix`. The matrix must be square.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:math,,,,,,,,,,,,"matrixDeterminant",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:matrixFitLinearRegression,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Given a matrix of y coordinates and a matrix of multiple x coordinates\ncompute the best fit multiple linear regression equation using\nthe ordinary least squares method. Both 'y' and 'x' may be any value\naccepted by `toMatrix`.\n\nThe resulting linear equation for r X coordinates is:\n\n yᵢ = bias + b₁xᵢ₁ + b₂xᵢ₂ +...+ bᵣxᵢᵣ\n\nThe equation is returned as a grid. The grid meta:\n - 'bias': bias or zero coefficient which is independent of any of the x factors\n - 'r2': R² coefficient of determination as a number between 1.0 (perfect correlation) and 0.0 (no correlation)\n - 'r': the square root of R², referred to as the correlation coefficient\n - 'rowCount': the number of rows of data used in the correlation\nFor each X factor there is a row with the following tags:\n - 'b': the correlation coefficient for the given X factor\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:math,,,,,,,,,,,,"matrixFitLinearRegression",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:matrixInverse,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Return the inverse of the given matrix which is any value accepted by `toMatrix`.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:math,,,,,,,,,,,,"matrixInverse",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:matrixMult,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Multiply two matrices and return new matrix. The parameters may\nbe any value supported `toMatrix`. Matrix 'a' column count must match\nmatrix 'b' row count.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:math,,,,,,,,,,,,"matrixMult",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:matrixSub,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Subtract two matrices and return new matrix. The parameters may\nbe any value supported `toMatrix`. Matrices must have the same dimensions.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:math,,,,,,,,,,,,"matrixSub",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:matrixTranspose,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Transpose the given matrix which is any value accepted by `toMatrix`.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:math,,,,,,,,,,,,"matrixTranspose",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:max,,,,,,,,,,,,,,,,,,,,,,,,,,"ui::max",,"Compare two numbers and return the larger one. This function\nmay also be used with `fold` to return the largest number (or\nnull if no values).\n\nExamples:\n max(7, 4) >> 7\n [7, 2, 4].fold(max) >> 7\n",,,,,,,,,,,,,,"Number",M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"max",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:mean,,,,,,,,,,,,,,,,,,,,,,,,,,"ui::mean",,"Fold a sample of numbers into their standard average or arithmetic\nmean. This function is the same as [core::avg]`avg()`. Nulls\nvalues are ignored. Return null if no values.\n\nExample:\n [2, 4, 5, 3].fold(mean)\n",,,,,,,,,,,,,,"Number",M,,,,,,,,,"func",,,,[^func],,,^lib:math,,,,,,,,,,,,"mean",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:meanBiasErr,,,,,,,,,,,,,,,,,,,,,,,,,,"ui::meanBiasErr",,"Fold a sample of numbers into their MBE (mean bias error).\nThe MBE function determines the MBE between a sample set and\nits mean:\n\n MBE = Σ(xᵢ - median) / (n - nDegrees)\n\nExamples:\n samples.fold(meanBiasErr) // unbiased zero degrees of freedom\n samples.fold(meanBiasErr(_,_,1)) // 1 degree of freedom\n",,,,,,,,,,,,,,"Number",M,,,,,,,,,"func",,,,[^func],,,^lib:math,,,,,,,,,,,,"meanBiasErr",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:median,,,,,,,,,,,,,,,,,,,,,,,,,,"ui::median",,"Fold a sample of numbers into their median value which is the\nmiddle value of the sorted samples. If there are an even number\nof sample, then the median is the mean of the middle two. Null\nvalues are ignored. Return null if no values.\n\nExample:\n [2, 4, 5, 3, 1].fold(median)\n",,,,,,,,,,,,,,"Number",M,,,,,,,,,"func",,,,[^func],,,^lib:math,,,,,,,,,,,,"median",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:merge,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Merge two Dicts together and return a new Dict. Any tags\nin 'b' are added to 'a'. If 'b' defines a tag already\nin 'a', then it is overwritten by 'b'. If a tag in 'b' is\nmapped to 'Remove.val', then that tag is removed from the\nresult.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"merge",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:meta,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Get the meta-data from a grid or col as a dict.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"meta",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:min,,,,,,,,,,,,,,,,,,,,,,,,,,"ui::min",,"Compare two numbers and return the smaller one. This function\nmay also be used with `fold` to return the smallest number (or\nnull if no values).\n\nExamples:\n min(7, 4) >> 4\n [7, 2, 4].fold(min) >> 2\n",,,,,,,,,,,,,,"Number",M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"min",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:minute,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Get minutes of the time as integer between 0 to 59 from time or datetime\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"minute",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:missing,,,,,,,,,,,,,,,,,,,,,,,,,,,,"If val is a Grid return if it does not have given column name.\nIf val is a Dict, return if the given name is not mapped to a non-null value.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"missing",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:monitorPoints,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:point,,,,,,,,,,,,"monitorPoints",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:month,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Get month as integer between 1 to 12 from date or datetime\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"month",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:moveTo,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Find the given item in a list, and move it to the given index. All\nthe other items are shifted accordingly. Negative indexes may\nused to access an index from the end of the list. If the item is\nnot found then this is a no op. Return new list.\n\nExamples:\n [10, 11, 12].moveTo(11, 0) >> [11, 10, 12]\n [10, 11, 12].moveTo(11, -1) >> [10, 12, 11]\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"moveTo",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:na,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Get NA not-available singleton `haystack::NA.val`\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"na",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:name,,,,,,,,,,,,,,,,,,,,,,,,,,,,"If val is a Col, get the column name.\nIf val is a Uri, get the last name in the path.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"name",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:names,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Get the list of names used by a given dict\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"names",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:nan,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Return the Number representation of not-a-number\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"nan",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:nav,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Haystack [formats op]`docSkySpark::Ops#nav`\n",,,,,,,,,,,,,,,M,,"Learn navigation",,,,,,,"func",,,,[^func],,,^lib:legacy,,,,,,,,,,,,"nav",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:navAncestors,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:legacy,,,,,,,,,,,,"navAncestors",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:navChildren,,,,,,,,,,,,,,,,,,,,,,,,,,,,"DEPRECATED: only supported for classic 2.1 UI\n\nReturn a grid of the given base records navigation direct children. If\nbase is null, then return the top-level navigation records.\n\nParameters:\n - 'treeName': string key of which tree to navigate such as \"equip\"\n - 'base': Ref or record Dict of base to navigate to\n - 'opts': null or Dict of options\n\nOptions:\n - 'stop': stop tag, example \"site\" if searching \"equip\" tree for just sites\n\nResulting grid as sames columns as `navLevels`. Also see\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:legacy,,,,,,,,,,,,"navChildren",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:navCommonAncestor,,,,,,,,,,,,,,,,,,,,,,,,,,,,"DEPRECATED: only supported for classic 2.1 UI\n\nGiven a navigation tree name and list of records (anything\nsupported by `toRecList`), return the common ancestor base\nrecord that they all share. For example given a list of points\nunder an equip, then the parent equip is returned. But\na set of points in different equipment, but same site will\nreturn the site record. Return result as Dict or null if no\ncommon ancestor is found.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:legacy,,,,,,,,,,,,"navCommonAncestor",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:navDuplicate,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:legacy,,,,,,,,,,,,"navDuplicate",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:navFilter,,,,,,,,,,,,,,,,,,,,,,,,,,,,"DEPRECATED: only supported for classic 2.1 UI\n\nReturn a grid used to represent a navigation filter under one or more base\nrecs. The filter defines the meta tag 'navFilter' to distinguish it from\nother types of grids. The grid defines a single 'id' column for the identifier\nand display name of each record in the filter.\n\nIf the base is null, then we assume the root of the entire tree. If\nthe string literal \"default\", then a user specific or project\nspecific default filter is used.\n\nOptions:\n - 'targetTag': tag name for all recs in tree we are looking for, or\n if omitted, then all recs in tree under base\n - 'auxFilter': string with filter auxiliary applied to each level of the tree\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:legacy,,,,,,,,,,,,"navFilter",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:navFilterFunc,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:nav,,,,,,,,,,,,"navFilterFunc",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:navInstantiate,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:legacy,,,,,,,,,,,,"navInstantiate",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:navInstantiateMenu,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:legacy,,,,,,,,,,,,"navInstantiateMenu",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:navLevels,,,,,,,,,,,,,,,,,,,,,,,,,,,,"DEPRECATED: only supported for classic 2.1 UI\n\nReturn a grid to populate a navigation multi-pane dialog. Given\na base record return a list of records at each level of the tree\nabove the base as well as the direct children of the base.\n\nParameters:\n - 'treeName': string key of which tree to navigate such as \"equip\"\n - 'base': Ref or record Dict of base to navigate to\n - 'opts': null or Dict of options\n\nOptions:\n - 'stop': stop tag, example \"site\" if searching \"equip\" tree for just sites\n - 'search': search string, if defined then return any record in\n the navigation tree that contains the case insensitive search string\n in its dis string\n - 'auxFilter': string with filter auxiliary applied to each level of the tree\n - 'limit': search limit (defaults to 1000)\n\nResulting grid has following columns:\n - 'level': 0 for for top level, down to level n based on navigation depth\n - 'id': Ref of record\n - 'indent': if level is organized as sub-tree (equip containing equips)\n - 'icon16': URI to best 16x16 icon to use\n - 'selected': if this is selected record in navigation path\n - 'children': if use can \"dive down\" into this record\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:legacy,,,,,,,,,,,,"navLevels",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:navMove,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:legacy,,,,,,,,,,,,"navMove",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:navProjNames,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Return a list of string project names which are currently\nnavigable based on current [uiMeta]`docFresco::Nav#uiMeta` flag\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:nav,,,,,,,,,,,,"navProjNames",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:navQuery,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:nav,,,,,,,,,,,,"navQuery",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:navQueryAll,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:nav,,,,,,,,,,,,"navQueryAll",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:navQueryX,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:nav,,,,,,,,,,,,"navQueryX",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:navReadByUri,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:legacy,,,,,,,,,,,,"navReadByUri",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:navReadByUris,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:legacy,,,,,,,,,,,,"navReadByUris",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:navRef,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Return a navigation Ref for given target name and record.\nThe target should be a string name for the tree leafs such such\n\"site\", \"equip\", or \"point\". The record is an Ref id or Dict\nfor the node to represent. Raise exception if the record does\nnot match any configured level of the target path. Pass the\nstring \"all\" to select the root of the navigation tree.\nAlso see `docFresco::Nav#navSelAny`.\n\nExamples:\n navRef(\"point\", pt) // select one point\n navRef(\"point\", equip) // select all points contained by given equip\n navRef(\"equip\", site) // select all equips contained by given site\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:nav,,,,,,,,,,,,"navRef",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:navResolve,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Resolve a list of navigation Refs to a list of Dict records.\nAlso see `docFresco::Nav#navSelAny`.\n\nDefault behavior is to resolve using only the local project. Pass\nthe 'navCluster' marker option to resolve across the cluster based\non the [projIncludeFilter]`docFresco::Nav#projIncludeFilter`\nconfiguration.\n\nNavigation [nesting]`docFresco::Nav#nesting` is when a given level\nof the tree is organized using a reference tag. For example 'equip'\nrecs are nested by the 'equipRef' tag. The default behavior of\nthis method is to **not** apply nesting to compute children of\nof a navigation ref. However this behavior can be overridden by\npassing the 'nestExpand' marker tag. This option is *extremely*\nexpensive and should be avoided if at all possible (especially if\ncombined with 'navCluster' option). Examples:\n\n // nested tree of equip via equipRef\n eq\n eqA\n eqA1\n eqA2\n eqB\n\n // default yields only [eq]\n navRef(\"equip\", eq).navResolve\n\n // yields [eq, eqA, eqA1, eqA2, eqB] (eq and its nested children)\n navRef(\"equip\", eq).navResolve({nestExpand})\n\nNote the nestExpand feature only works at the leaf level. In the\nexample above the target name is \"equip\", so we can expand 'eq' to\ninclude its nested children. However if target was \"point\", then we\nwould **not** expand 'eq' to include the points from 'eqA', 'eqA1', 'eqA2',\nand 'eqB'.\n\nOption summary:\n - 'kind': pass in kind value string used in input\n - 'navCluster': pass marker to resolve across cluster\n - 'nestExpand': pass marker to expand nested children (equip via equipRef)\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:nav,,,,,,,,,,,,"navResolve",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:navTrash,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:legacy,,,,,,,,,,,,"navTrash",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:navTrees,,,,,,,,,,,,,,,,,,,,,,,,,,,,"DEPRECATED: only supported for classic 2.1 UI\n\nList the navigation trees available for the current project.\nReturn grid with following columns:\n - 'treeName': programmatic name of tree\n - 'dis': display name of the tree\n - 'path': Str path syntax\n - 'depend': tree name if this tree is dependent\n - 'builder': Marker if this tree should show up in Builder\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:legacy,,,,,,,,,,,,"navTrees",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:negInf,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Return the Number representation negative infinity\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"negInf",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:noop,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"noop",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:now,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Return current DateTime according to context's time zone\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"now",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:nowTicks,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Return current time as nanosecond ticks since 1 Jan 2000 UTC.\nNote that the 64-bit floating point representations of nanosecond\nticks will loose accuracy below the microsecond.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"nowTicks",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:numDaysInMonth,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Get the number of days in a given month. The month parameter may be:\n - Date: returns number of days in given month (uses month/year, ignores day)\n - Number 1-12: returns days in month for current year\n - null: returns day in current month\n\nExamples:\n numDaysInMonth() >>> days in current month\n numDaysInMonth(1) >>> 31day (days in January)\n numDaysInMonth(6) >>> 30day (days in June)\n numDaysInMonth(2) >>> 28day or 29day (days for Feb this year)\n numDaysInMonth(2012-02-13) >>> 29day (days in Feb for leap year)\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"numDaysInMonth",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:occurred,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Return if a timestamp is contained within a Date range.\nRange may be any value supported by `toDateSpan`. Timestamp\nmay be either a Date or a DateTime. Also see `contains`.\n\nExamples:\n ts.occurred(thisWeek)\n ts.occurred(pastMonth())\n ts.occurred(2010-01-01..2010-01-15)\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"occurred",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, @p:demo:r:25aa2aba-502366f0 "oldChartDemo",^func:oldChartDemo,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,,,,,,,,^lib:proj_demo,,,,,,,,,,,,"oldChartDemo",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"() => do\n\n // get data items\n numPt: read(power and siteMeter)\n num2Pt: read(discharge and temp and sensor)\n boolPt: read(fan and cmd and kind==\"Bool\")\n xyData: ioReadZinc(`io/chart-data.zinc`)\n\n // category data\n categories:\n [{dis: \"Alpha\", v0: 3%, v1: 4%, v2: 9%},\n {dis: \"Beta\", v0: 2%, v1: 10%, v2: 1%},\n {dis: \"Gamma\", v0: 7%, v1: 8%, v2: 3%},\n {dis: \"Delta\", v0: 4%, v1: 3%, v2: 4%},\n ].toGrid\n\n // datetime line chart\n dtLineChart: () => do\n pt: numPt.merge({chartType: \"line\"})\n hisRead(pt, yesterday)\n end\n\n // datetime area chart\n dtAreaChart: () => do\n pt: numPt.merge({chartType: \"area\", color: \"#d73d40\"})\n hisRead(pt, yesterday)\n end\n\n // datetime bar chart\n dtBarChart: () => do\n pt: numPt.merge({chartType: \"bar\", color: \"#9474d4\"})\n hisRead(pt, lastMonth).hisRollup(max, 1day)\n end\n\n // datetime runtime chart\n dtRuntimeChart: () => do\n pt: boolPt.merge({chartType: \"runtime\", color: \"#30c525\"})\n hisRead(pt, yesterday)\n end\n\n // datetime two y-axes chart\n dt2YChart: () => do\n pt1: numPt.merge({chartGroup:\"2y\", chartType: \"area\", color: \"#f87808\"})\n pt2: num2Pt.merge({chartGroup:\"2y\", chartType: \"line\", color: \"#3d80df\"})\n hisRead([pt1, pt2], yesterday)\n end\n\n // time line chart\n timeLineChart: () => do\n pt: numPt.merge({chartType: \"line\", color: \"#c123b0\"})\n hisRead(pt, lastWeek).hisRollup(max, 1hr).hisDailyProfile(avg)\n end\n\n // x-y line chart\n xyLineChart: () => do\n xyData.addColMeta(\"y\", {chartType: \"line\"}).chart\n end\n\n // x-y area chart\n xyAreaChart: () => do\n xyData.addColMeta(\"y\", {chartType: \"area\", color: \"#d73d40\"}).chart\n end\n\n // x-y scatter chart\n xyScatterChart: () => do\n xyData.addColMeta(\"y\", {chartType: \"scatter\"}).chart\n end\n\n // category bar chart\n catBarChart: () => do\n categories\n .addColMeta(\"v0\", {dis: \"Value 0\", chartType: \"bar\", chartGroup: \"catBar\"})\n .addColMeta(\"v1\", {dis: \"Value 1\", chartType: \"bar\", chartGroup: \"catBar\"})\n .addColMeta(\"v2\", {dis: \"Value 2\", chartType: \"bar\", chartGroup: \"catBar\"})\n .chart\n end\n\n // category stacked bar chart\n catStackedBarChart: () => do\n categories\n .addColMeta(\"v0\", {dis: \"Value 0\", chartType: \"stackedBar\", chartGroup: \"catStackBar\"})\n .addColMeta(\"v1\", {dis: \"Value 1\", chartType: \"stackedBar\", chartGroup: \"catStackBar\"})\n .addColMeta(\"v2\", {dis: \"Value 2\", chartType: \"stackedBar\", chartGroup: \"catStackBar\"})\n .chart\n end\n\n // put it all together\n [heading(\"DateTime Line Chart\"), dtLineChart(),\n heading(\"DateTime Area Chart\"), dtAreaChart(),\n heading(\"DateTime Bar Chart\"), dtBarChart(),\n heading(\"DateTime Runtime Chart\"), dtRuntimeChart(),\n heading(\"DateTime Two Y-Axes Chart\"), dt2YChart(),\n heading(\"Time Line Chart\"), timeLineChart(),\n heading(\"X-Y Line Chart\"), xyLineChart(),\n heading(\"X-Y Area Chart\"), xyAreaChart(),\n heading(\"X-Y Scatter Chart\"), xyScatterChart(),\n heading(\"Category Bar Chart\"), catBarChart(),\n heading(\"Category Stacked Bar Chart\"), catStackedBarChart(),\n ]\nend",,,,,,,,,,,,,,,,,,,,,,,,,2020-01-09T18:17:34.219Z @p:demo:r:25aa2aba-1db07df4 "oldChartDemoKwh",^func:oldChartDemoKwh,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,,,,,,,,^lib:proj_demo,,,,,,,,,,,,"oldChartDemoKwh",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"// Build a stacked bar graph with total consumption for each\n// month this year. Chart type must be \"bar\" or \"stackedBar\".\n(chartType: \"stackedBar\") => do\n // read all the sites and their main meter kwh point\n sites: readAll(site).sort(\"dis\")\n kwhs: sites.map site => read(siteMeter and energy and siteRef==site->id)\n\n // build up rows of {dis: month, site0: kwh, site1: kwh, ...}\n rows: []\n times(12) (i) => do\n // get first and last of month\n year: now().year\n month: i+1\n startOfMonth: date(year, month, 1)\n endOfMonth: date(year, month, numDaysInMonth(startOfMonth))\n\n // init row with dis: MMM\n row: {dis: startOfMonth.format(\"MMM\")}\n\n // add site0, site1, for total consumption for the site in current month\n each(sites) (site, i) => do\n kwh: hisRead(kwhs[i], startOfMonth..endOfMonth).hisClip.foldCol(\"v0\", sum)\n row = row.set(\"site\"+i, kwh)\n end\n\n // add to our list of rows\n rows = rows.add(row)\n end\n\n // now turn Dict[] into grid with column meta for each site column\n grid: rows.toGrid\n each(sites) (site, i) => do\n grid = grid.addColMeta(\"site\"+i, {dis: site.dis, chartType: chartType, chartGroup: \"g\"})\n end\n grid.chart\nend",,,,,,,,,,,,,,,,,,,,,,,,,2020-01-09T18:17:34.217Z @p:demo:r:25aa2aba-a8b1dd6c "oldChartDemoSparks",^func:oldChartDemoSparks,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,,,,,,,,^lib:proj_demo,,,,,,,,,,,,"oldChartDemoSparks",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"// Plot kw against sparks for a given site\n() => do\n site: read(site and dis == \"Gaithersburg\")\n dates: lastWeek\n sparks: navFilter(\"sparkTarget\", site).sparks(dates).sparkHis\n kw: read(power and siteMeter and siteRef==site->id).hisRead(dates)\n hisJoin([sparks, kw])\nend",,,,,,,,,,,,,,,,,,,,,,,,,2020-01-09T18:17:34.218Z @p:demo:r:25aa2aba-5c1c02aa "oldRuleHelpReport",^func:oldRuleHelpReport,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,,,,,,,,^lib:proj_demo,,,,,,,,,,,,"oldRuleHelpReport",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"() => do\n sections: []\n readAll(rule).each rule => do\n sections = sections.add(heading(rule.dis))\n sections = sections.add(fandoc(rule[\"help\"]))\n end\n sections\nend",,,,,,,,,,,,,,,,,,,,,,,,,2020-01-09T18:17:34.22Z ,^func:ops,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Haystack [ops op]`docSkySpark::Ops#ops`\n",,,,,,,,,,,,,,,M,,"Operations supported by server",,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"ops",,M,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:padl,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Pad string to the left. If size is less than width, then\nadd the given char to the left to achieve the specified width.\n\nExamples:\n \"3\".padl(3, \"0\") >> \"003\"\n \"123\".padl(2, \"0\") >> \"123\"\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"padl",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:padr,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Pad string to the right. If size is less than width, then add\nthe given char to the left to acheive the specified with.\n\nExamples:\n \"xyz\".padr(2, \".\") >> \"xyz\"\n \"xyz\".padr(5, \"-\") >> \"xyz--\"\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"padr",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:params,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"params",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:parseBool,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Parse a Str into a Bool, legal formats are \"true\" or \"false. If invalid\nformat and checked is false return null, otherwise throw ParseErr.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"parseBool",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:parseDate,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Parse a Str into a Date. If the string cannot be parsed into a valid\nDate and checked is false then return null, otherwise throw ParseErr.\nSee `sys::Date.toLocale` for pattern.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"parseDate",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:parseDateTime,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Parse a Str into a DateTime. If the string cannot be parsed into a valid\nDateTime and checked is false then return null, otherwise throw ParseErr.\nSee `sys::DateTime.toLocale` for pattern.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"parseDateTime",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:parseDiscreteBoolPeriods,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Parse a Base64 encoded timeline of discrete Bool periods\nas encoded by `discreteBoolPeriods`. Return a grid of minutely\noffsets and Bool/NA values with the columns 'offset'\nand 'val'. If val is null, then return null.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:his,,,,,,,,,,,,"parseDiscreteBoolPeriods",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:parseDiscreteEnumPeriods,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Parse a base64 encoded string timeline of discrete enum periods\nas encoded by `discreteEnumPeriods`. Return a grid of minutely\noffsets and enum ordinal values with the columns 'offset'\nand 'ordinal'. If the rec is passed with the 'enum' tag, then\nan additional 'name' column specifies the ordinal to name mapping.\nIf val is null, then return null.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:his,,,,,,,,,,,,"parseDiscreteEnumPeriods",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:parseDiscretePeriods,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Parse a base64 encoded string timeline of discrete periods\nas encoded by `discretePeriods`. Return a grid of minutely\noffsets and duration with the columns 'offset' and 'dur'.\nIf val is null, then return null.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:his,,,,,,,,,,,,"parseDiscretePeriods",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:parseFilter,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Parse a string into a Filter expr which may be used\nwith the `read` or `readAll` function. Also see `filterToFunc`.\n\nExample:\n str: \"point and kw\"\n readAll(parseFilter(str))\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"parseFilter",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:parseFloat,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Parse a Str into a Float. Representations for infinity and\nnot-a-number are \"-INF\", \"INF\", \"NaN\". If invalid format\nand checked is false return null, otherwise throw ParseErr.\nThis string value *cannot* include a unit (see parseNumber).\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"parseFloat",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:parseInt,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Parse a Str into a integer number using the specified radix.\nIf invalid format and checked is false return null, otherwise\nthrow ParseErr. This string value *cannot* include a unit (see\nparseNumber).\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"parseInt",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:parseNumber,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Parse a Str into a number with an option unit. If invalid\nformat and checked is false return null, otherwise throw ParseErr.\nAlso see `parseInt` and `parseFloat` to parse basic integers and\nfloating point numbers without a unit.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"parseNumber",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:parseRef,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Parse a Str into a Ref. If the string is not a valid Ref identifier\nthen raise ParseErr or return null based on checked flag. The string\nmust *not* include a leading \"@\".\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"parseRef",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:parseSymbol,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Parse a Str into a Symbol. If the string is not a valid Symbol\nidentifier then raise ParseErr or return null based on checked flag.\nThe string must *not* include a leading \"^\".\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"parseSymbol",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:parseTime,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Parse a Str into a Time. If the string cannot be parsed into a valid\nTime and checked is false then return null, otherwise throw ParseErr.\nSee `sys::Time.toLocale` for pattern.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"parseTime",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:parseUnit,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Parse a Str into a standardized unit name. If the val is not\na valid unit name from the standard database then return null\nor raise exception based on checked flag.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"parseUnit",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:parseUri,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Parse a string into a Uri instance. If the string cannot be parsed\ninto a valid Uri and checked is false then return null, otherwise\nthrow ParseErr. This function converts an URI from *standard form*.\nUse `uriDecode` to convert a string from *escaped form*. See `sys::Uri`\nfor a detailed discussion on standard and escaped forms.\n\nExamples:\n \"foo bar\".parseUri >> `foo bar`\n \"foo%20bar\".uriDecode >> `foo bar`\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"parseUri",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:passwordSet,,M,,,,,,,,,,,,,,,,,,,,,,,,,,"Store a password key/val pair into current project's password\nstore. The key is typically a Ref of the associated record.\nSee `skyarcd::Proj.passwords`.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"passwordSet",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:pastMonth,,,,,,,,,,,,,,,,,,,,,,,,,,,,"DateSpan for last 30days 'today-30days..today'\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"pastMonth",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:pastWeek,,,,,,,,,,,,,,,,,,,,,,,,,,,,"DateSpan for last 7 days as 'today-7days..today'\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"pastWeek",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:pastYear,,,,,,,,,,,,,,,,,,,,,,,,,,,,"DateSpan for this past 'today-365days..today'\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"pastYear",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:pi,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Return constant for pi: 3.141592653589793\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:math,,,,,,,,,,,,"pi",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:pimConnBind,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:ui,,,,,,,,,,,,"pimConnBind",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:pimConnUnbind,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:ui,,,,,,,,,,,,"pimConnUnbind",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:pimFormNew,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:ui,,,,,,,,,,,,"pimFormNew",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:pivot,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Transform a grid to a pivot table - see `docSkySpark::AxonUsage#pivot`.\nNote: column names and meta are subject to change.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"pivot",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:pods,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"pods",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,M,,,,,,,,,,,,,,,,,,,,,,, ,^func:pointAuto,,M,,,,,,,,,,,,,,,,,,,,,,,,,,"User level-8 manual auto (override release) of writable point.\nSee `pointWrite`.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:point,,,,,,,,,,,,"pointAuto",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:pointConvert,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Evaluate a [point conversion]`ext-point::doc#convert`. First\nparameter is point to test (anything accepted by `toRec`) or null\nto use empty dict.\n\nExamples:\n pointConvert(null, \"+ 2 * 10\", 3)\n pointConvert(null, \"hexToNumber()\", \"ff\")\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:point,,,,,,,,,,,,"pointConvert",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:pointDetails,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:point,,,,,,,,,,,,"pointDetails",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:pointEmergencyAuto,,M,,,,,,,,,,,,,,,,,,,,,,,,,,"User level-1 manual auto (override release) of writable point.\nSee `pointWrite`.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:point,,,,,,,,,,,,"pointEmergencyAuto",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:pointEmergencyOverride,,M,,,,,,,,,,,,,,,,,,,,,,,,,,"User level-1 manual override of writable point.\nSee `pointWrite`.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:point,,,,,,,,,,,,"pointEmergencyOverride",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, @p:demo:r:25cb67cd-e1963eb7 "pointEssentials",^func:pointEssentials,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,,,,,,,,^lib:proj_demo,,,,,,,,,,,,"pointEssentials",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"() => do\n allTagsOnPoints: readAllTagNames(point)\n \n quantityDefs: findAllDefsThatAre(^quantity).findAll(v => allTagsOnPoints.colToList(\"name\").contains(v->def.toStr)).map(r => {def: r->def.toStr, folderPath: r->folderPath})\n phenomenonDefs: findAllDefsThatAre(^phenomenon).findAll(v => allTagsOnPoints.colToList(\"name\").contains(v->def.toStr)).map(r => {def: r->def.toStr, folderPath: r->folderPath})\n ptFuncTypeDefs: findAllDefsThatAre(^pointFunctionType).findAll(v => allTagsOnPoints.colToList(\"name\").contains(v->def.toStr)).map(r => {def: r->def.toStr, folderPath: r->folderPath})\n \n return allTagsOnPoints.map(row => \n do\n changes: {}\n \n qty: quantityDefs.find(v => v->def == row->name)\n phen: phenomenonDefs.find(v => v->def == row->name)\n ptFunc: ptFuncTypeDefs.find(v => v->def == row->name)\n \n if (qty!= null)\n changes = changes.merge(qty) \n \n else if (phen != null)\n changes = changes.merge(phen)\n \n else if (ptFunc != null)\n changes = changes.merge(ptFunc)\n \n return row.merge(changes)\n end).findAll(v => v[\"def\"] != null)\nend",,,,,,,,,,,,,,,,,,,,,,,,,2020-02-04T01:17:57.086Z ,^func:pointOverride,,M,,,,,,,,,,,,,,,,,,,,,,,,,,"User level-8 manual override of writable point.\nIf duration is specified it must be a number with unit of time\nthat indicates how long to put the point into override. After\nthe duration expires, the point is set back to auto (null).\nSee `pointWrite`.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:point,,,,,,,,,,,,"pointOverride",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:pointSetDef,,M,,,,,,,,,,,,,,,,,,,,,,,,,,"Set the relinquish default value (level-17) of writable point.\nSee `pointWrite`.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:point,,,,,,,,,,,,"pointSetDef",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:pointThermistorTables,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Return grid of thermistor table names as grid with one 'name' column\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:point,,,,,,,,,,,,"pointThermistorTables",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:pointWrite,,M,,,,,,,,,,,,,,,,,,,,,,,,,,"Set a writable point's priority array value at the given level.\nThe point may be any value accepted by `toRec`. Level must\nbe 1 to 17 (where 17 represents def value). The who parameter\nmust be a non-empty string which represent debugging information\nabout which user or application is writing to this priorirty\narray level.\n",,,,,,,,,,,,,,,M,,"Read/write point write array",,,,,,,"func",,,,[^func],,,^lib:point,,,,,,,,,,,,"pointWrite",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:pointWriteArray,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Return the current priority array state of a writable point.\nThe point may be any value accepted by `toRec`. The result is\nreturned grid with following columns:\n - level: number from 1 - 17 (17 is default)\n - levelDis: human description of level\n - val: current value at level or null\n - who: who last controlled the value at this level\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:point,,,,,,,,,,,,"pointWriteArray",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:posInf,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Return the Number representation positive infinity\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"posInf",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:pow,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Return val raised to the specified power.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:math,,,,,,,,,,,,"pow",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:projBackup,,,,,,,,,,,,,{icon:"question" iconColor:"#e67e22" disKey:"ui::backupProjsConfirm" detailsKey:"ui::backupConfirmDetails"},,,,,,,,,,,,,"ui::backup",,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:proj,,,,,,,,,,,,"projBackup",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,M,,,,,M,,,,,,,,,,,,,,,,,,,,,,, ,^func:projClearNs,,M,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:proj,,,,,,,,,,,,"projClearNs",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:projDemogen,,,,,,,,,,,,,{icon:"warn" disKey:"ui::demogenConfirm" detailsKey:"ui::demogenConfirmDetails"},,,,,,,,,,,,,"ui::demogen",,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:proj,,,,,,,,,,,,"projDemogen",,,M,,,,,,,,,,,,,,,,,,,,,M,,,,,^ruleTypeBase,,,,,,M,,,,,,,,,,,,,,,,,,,,,,, ,^func:projDetails,,,,,,,,,,,,,,,,,,,,,,,,,,"ui::details",,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:proj,,,,,,,,,,,,"projDetails",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,M,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:projNew,,,,,,,,,,,,,,,,,,,,,,,,,,"ui::new",,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:proj,,,,,,,,,,,,"projNew",,,M,,,,,,,,,,,,,,,,,,,,,M,,,,,^ruleTypeBase,,,,,,M,,,,,,,,,,,,,,,,,,,,,,, ,^func:projReplicate,,,,,,,,,,,,,{icon:"question" iconColor:"#e67e22" disKey:"ui::replicateConfirm" detailsKey:"ui::replicateConfirmDetails"},,,,,,,,,,,,,"ui::replicate",,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:proj,,,,,,,,,,,,"projReplicate",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,M,,,,,M,,,,,,,,,,,,,,,,,,,,,,, ,^func:projSendManifest,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:proj,,,,,,,,,,,,"projSendManifest",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,M,,,,,,,,,,,,,,,,,,,,,,, ,^func:projSync,,M,,,,,,,,,,,,,,,,,,,,,,,,,,"Block until all folio/project message queues are fully processed.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:proj,,,,,,,,,,,,"projSync",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:projTestDiskFull,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:proj,,,,,,,,,,,,"projTestDiskFull",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,M,,,,,,,,,,,,,,,,,,,,,,, ,^func:projs,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:proj,,,,,,,,,,,,"projs",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:protos,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"protos",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:random,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Return random integer within given inclusive range.\nIf range is null, then full range of representative\nintegers is assumed.\n\nExamples:\n random() // random num with no range\n random(0..100) // random num between 0 and 100\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:math,,,,,,,,,,,,"random",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:reFind,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Find the first match of regular expression in 's'\nor return null if no matches.\nSee [AxonUsage]`docSkySpark::AxonUsage#regex`.\n\nExamples:\n reFind(r\"\\d+\", \"x123y\") >> \"123\"\n reFind(r\"\\d+\", \"xyz\") >> null\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"reFind",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:reGroups,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Return a list of the substrings captured by matching the given\nregular operation against 's'. Return null if no matches. The\nfirst item in the list is the entire match, and each additional\nitem is matched to '()' arguments in the regex pattern.\nSee [AxonUsage]`docSkySpark::AxonUsage#regex`.\n\nExamples:\n re: r\"(RTU|AHU)-(\\d+)\"\n reGroups(re, \"AHU\") >> null\n reGroups(re, \"AHU-7\") >> [\"AHU-7\", \"AHU\", \"7\"]\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"reGroups",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:reMatches,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Return if regular expression matches entire region of 's'.\nSee [AxonUsage]`docSkySpark::AxonUsage#regex`.\n\nExamples:\n reMatches(r\"\\d+\", \"x123y\") >> false\n reMatches(r\"\\d+\", \"123\") >> true\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"reMatches",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:read,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Read from database the first record which matches filter.\nIf no matches found throw UnknownRecErr or null based\non checked flag. See `readAll` for how filter works.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"read",,M,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:readAll,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Reall all records from the database which match filter.\nThe filter must an expression which matches the filter structure.\nString values may parsed into a filter using `parseFilter` function.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"readAll",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:readAllStream,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Reall all records which match filter as stream of Dict records.\nSee `docSkySpark::Streams#readAllStream`.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"readAllStream",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:readAllTagNames,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Return the intersection of all tag names used by all the records\nmatching the given filter. The results are returned as a grid\nwith following columns:\n - 'name': string name of the tag\n - 'kind': all the different value kinds separated by \"|\"\n - 'count': total number of recs with the tag\nAlso see `readAllTagVals` and `gridColKinds`.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"readAllTagNames",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:readAllTagVals,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Return the range of all the values mapped to a given\ntag name used by all the records matching the given filter.\nThis method is capped to 200 results. The results are\nreturned as a grid with a single 'val' column.\nAlso see `readAllTagNames`.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"readAllTagVals",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:readById,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Read a record from database by 'id'. If not found\nthrow UnknownRecErr or return null based on checked flag.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"readById",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:readByIdPersistentTags,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Given record id, read only the persistent tags from Folio.\nAlso see `readByIdTransientTags`.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"readByIdPersistentTags",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:readByIdTransientTags,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Given record id, read only the transient tags from Folio.\nAlso see `readByIdPersistentTags`.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"readByIdTransientTags",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:readByIds,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Read a list of record ids into a grid. The rows in the\nresult correspond by index to the ids list. If checked is true,\nthen every id must be found in the project or UnknownRecErr\nis thrown. If checked is false, then an unknown record is\nreturned as a row with every column set to null (including\nthe 'id' tag).\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"readByIds",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:readByIdsStream,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Read a list of ids as a stream of Dict records.\nIf checked if false, then records not found are skipped.\nSee `docSkySpark::Streams#readByIdsStream`.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"readByIdsStream",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:readByName,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Read a record from database by 'name'. If not found\nthrow UnkownRecErr or return null based on checked flag.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"readByName",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:readCount,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Return the number of records which match the given filter expression.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"readCount",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, @p:demo:r:25d0ac30-76212e9e "readJsonTypeScriptFiles",^func:readJsonTypeScriptFiles,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,,,,,,,,^lib:proj_demo,,,,,,,,,,,,"readJsonTypeScriptFiles",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"() => do\n allFiles: ioDir(`io/core/`)\n\n return allFiles.map row => row->uri.ioReadJson({safeNames})\nend\n",,,,,,,,,,,,,,,M,,,,,,,,,,2020-02-07T23:17:05.854Z ,^func:readLink,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Read a record Dict by its id for hyperlinking in a UI. Unlike other\nreads which return a Dict, this read returns the columns ordered in\nthe same order as reads which return a Grid.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"readLink",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:readProjStatus,,,,,,,,,,,,,,,,,,,,,,,,M,,,,"Deprecated: use 'read(projMeta)' to read project meta\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:legacy,,,,,,,,,,,,"readProjStatus",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:recBlobs,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"recBlobs",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:recDelete,,M,,,,,,,,,,,{icon:"warn" disKey:"ui::delete" detailsKey:"ui::deleteDetails"},,,,,,,,,,,,,"ui::delete",,"Record delete action.\nThis function implicitly operates on all contained recs.\nNOTE: this function should only be used for actions.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,M,,"recDelete",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,M,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:recDisable,,M,,,,,,,,,,,,,,,,,,,,,,,,"ui::disable",,"Record disable action.\nNOTE: this function should only be used for actions.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,M,,"recDisable",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,M,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:recDup,,M,,,,,,,,,,,{icon:"warn" disKey:"ui::dupItems" detailsKey:"ui::dupItemsDetails"},,,,,,,,,,,,,"ui::duplicate",,"Record duplicate action.\nThis function implicitly operates on all contained recs.\nNOTE: this function should only be used for actions.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,M,,"recDup",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,M,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:recEdit,,M,,,,,,,,,,,,,,,,,,,,,,,,"ui::edit",,"Record edit action.\nNOTE: this function should only be used for actions.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,M,,"recEdit",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,M,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:recEmptyTrash,,M,,,,,,,,,,,{icon:"warn" disKey:"ui::emptyTrash" detailsKey:"ui::emptyTrashDetails"},,,,,,,,,,,,,"ui::empty",,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"recEmptyTrash",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:recEnable,,M,,,,,,,,,,,,,,,,,,,,,,,,"ui::enable",,"Record enable action.\nNOTE: this function should only be used for actions.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,M,,"recEnable",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,M,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:recForm,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Return a data grid for a form view to edit the specified record.\nIf the record is null a new default one is created from the template.\nSee `recFormCommit` for the submit action function.\nTODO: subject to change\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"recForm",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:recFormCommit,,M,,,,,,,,,,,,,,,,,,,,,,,,,,"Commit a rec based form to Folio. Also see `recForm`\nTODO: subject to change\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"recFormCommit",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:recMove,,M,,,,,,,,,,,,,,,,,,,,,,,,"ui::move",,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,M,,"recMove",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,M,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:recNew,,M,,,,,,,,,,,,,,,,,,,,,,,,"ui::new",,"Record create action.\nNOTE: this function should only be used for actions.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"recNew",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:recRestoreFromTrash,,M,,,,,,,,,,,{icon:"undo" disKey:"ui::restoreFromTrash" detailsKey:"ui::restoreFromTrashDetails"},,,,,,,,,,,,,"ui::restore",,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"recRestoreFromTrash",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,M,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:recTagDefs,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"recTagDefs",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:recTrash,,M,,,,,,,,,,,{icon:"warn" disKey:"ui::moveToTrash" detailsKey:"ui::moveToTrashDetails"},,,,,,,,,,,,,"ui::trash",,"Record trash action.\nThis function implicitly operates on all contained recs.\nNOTE: this function should only be used for actions.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,M,,"recTrash",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,M,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:refDis,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Given a ref return `haystack::Ref.dis`\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"refDis",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:refGen,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Generate a new unique Ref identifier\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"refGen",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:reflect,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"reflect",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:remainder,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Return the remainder or modulo of division: 'a % b'.\nResult has same unit as 'a'.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:math,,,,,,,,,,,,"remainder",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:remove,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Remove an item from a collection and return a new collection.\n - List: key is index to remove at\n - Dict: key is tag name\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"remove",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:removeCol,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Return a new grid with the given column removed.\nIf the column doesn't exist, then return given grid.\nAlso see `docSkySpark::Streams#removeCol`.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"removeCol",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:removeCols,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Return a new grid with all the given columns removed.\nColumns can be Str names or Col instances.\nAlso see `docSkySpark::Streams#removeCols`.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"removeCols",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:removeMarker,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Get the remove value singleton `haystack::Remove.val`\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"removeMarker",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:renameCol,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Return a new grid with the given column renamed.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"renameCol",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, @p:demo:r:25aa2aba-41bd0ffa "renameSites",^func:renameSites,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,,,,,,,,^lib:proj_demo,,,,,,,,,,,,"renameSites",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"() => do\n // rename all the sites\n\n // update projMeta\n read(projMeta).diff({dis:\"North\", doc:\"Demo sites in north\", demoProj}).commit\n\n // read region\n dc: read(region and dis==\"Washington DC\")->id\n ph: read(region and dis==\"Richmond\")->id\n\n // mapping\n changes: {\n // regions - change Richmond, tweak washington\n \"Richmond\": {dis:\"Philadelphia\"},\n \"Washington DC\": {dis:\"Washington DC North\"},\n\n // weather - change Richmond, leave DC\n \"Richmond, VA\": {dis:\"Philadelphia, PA\"},\n\n // sites\n \"Carytown\": {dis: \"Rittenhouse\", geoStreet: \"100 Walnut St\", geoCity: \"Philadelphia\", geoState:\"PA\", geoPostalCode: \"19004\"},\n \"Gaithersburg\": {dis: \"Woodly Park\", geoStreet: \"3133 Connecticut\", geoCity: \"Washington\", geoState:\"DC\", geoPostalCode: \"20008\", regionRef:dc},\n \"Headquarters\": {dis: \"Chevy Chase\", geoStreet: \"31 Center Dr\", geoCity: \"Bethesda \", geoState:\"MD\", geoPostalCode: \"20810\", regionRef:dc},\n \"Short Pump\": {dis: \"Fairhill\", geoStreet: \"N 4th St\", geoCity: \"Philadelphia\", geoState:\"PA\", geoPostalCode: \"19880\"},\n }\n\n changes.each() (c, disKey) => do\n rec: read(dis == disKey)\n if (rec.has(\"site\")) do\n c = c.set(\"metro\", rec->regionRef->dis)\n c = c.set(\"geoAddr\", \"\" + c->geoStreet + \", \" + c->geoCity + \" \" + c->geoState)\n end\n diff(rec, c).commit\n end\nend",,,,,,,,,,,,,,,,,,,,,,,,,2020-01-09T18:17:34.229Z ,^func:reorderCols,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Return a new grid with the columns reordered. The given list\nof names represents the new order and must contain the same current\ncolumn names. Any columns not specified are removed. Also\nsee `colNames`, `moveTo`, and `docSkySpark::Streams#reorderCols`.\n\nExample:\n // move name to first col, and foo to last col\n cols: grid.colNames.moveTo(\"name\", 0).moveTo(\"foo\", -1)\n return grid.reorderCols(cols)\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"reorderCols",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:replace,,,,,,,,,,,,,,,,,,,,,,,,,,,,"String replace of all occurrences of 'from' with 'to'.\nAll three parameters must be strings.\n\nExamples:\n \"hello\".replace(\"hell\", \"t\") >> \"to\"\n \"aababa\".replace(\"ab\", \"-\") >> \"a--a\"\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"replace",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:replicaCancel,,,,,,,,,,,,,,,,,,,,,,,,,,"ui::cancel",,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:repl,,,,,,,,,,,,"replicaCancel",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,M,,,,,M,,,,,,,,,,,,,,,,,,,,,,, ,^func:replicaConfig,,,,,,,,,,,,,,,,,,,,,,,,,,"ui::config",,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:repl,,,,,,,,,,,,"replicaConfig",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,M,,,,,M,,,,,,,,,,,,,,,,,,,,,,, ,^func:replicaCreate,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:repl,,,,,,,,,,,,"replicaCreate",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,M,,,,,,,,,,,,,,,,,,,,,,, ,^func:replicaDebug,,,,,,,,,,,,,,,,,,,,,,,,,,"ui::debug",,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:repl,,,,,,,,,,,,"replicaDebug",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,M,,,,,M,,,,,,,,,,,,,,,,,,,,,,, ,^func:replicaDebugLog,,,,,,,,,,,,,,,,,,,,,,,,,,"ui::debug",,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:repl,,,,,,,,,,,,"replicaDebugLog",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,M,,,,,M,,,,,,,,,,,,,,,,,,,,,,, ,^func:replicaMode,,,,,,,,,,,,,,,,,,,,,,,,,,"ui::mode",,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:repl,,,,,,,,"live, passive, suspended",,,,"replicaMode",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,M,,,,,M,,,,,,,,,,,,,,,,,,,,,,, ,^func:replicaPing,,,,,,,,,,,,,,,,,,,,,,,,,,"ui::ping",,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:repl,,,,,,,,,,,,"replicaPing",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,M,,,,,M,,,,,,,,,,,,,,,,,,,,,,, ,^func:replicaPoll,,,,,,,,,,,,,,,,,,,,,,,,,,"ui::poll",,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:repl,,,,,,,,,,,,"replicaPoll",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,M,,,,,M,,,,,,,,,,,,,,,,,,,,,,, ,^func:replicaSync,,,,,,,,,,,,,,,,,,,,,,,,,,"ui::sync",,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:repl,,,,,,,,,,,,"replicaSync",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,M,,,,,M,,,,,,,,,,,,,,,,,,,,,,, ,^func:replicas,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:repl,,,,,,,,,,,,"replicas",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,M,,,,,,,,,,,,,,,,,,,,,,, ,^func:rootMeanSquareErr,,,,,,,,,,,,,,,,,,,,,,,,,,"ui::rootMeanSquareErr",,"Fold a sample of numbers into their RMSE (root mean square error).\nThe RMSE function determines the RMSE between a sample set and\nits mean using the n-degrees of freedom RMSE:\n\n RMBE = sqrt( Σ(xᵢ - median)² ) / (n - nDegrees)\n\nExamples:\n samples.fold(rootMeanSquareErr) // unbiased zero degrees of freedom\n samples.fold(rootMeanSquareErr(_,_,1)) // 1 degree of freedom\n",,,,,,,,,,,,,,"Number",M,,,,,,,,,"func",,,,[^func],,,^lib:math,,,,,,,,,,,,"rootMeanSquareErr",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:round,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Returns the nearest whole number to val.\nResult has same unit as 'val'.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:math,,,,,,,,,,,,"round",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:ruleBlobs,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:rule,,,,,,,,,,,,"ruleBlobs",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:ruleCluster,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:rule,,,,,,,,,,,,"ruleCluster",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:ruleDebug,,M,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:rule,,,,,,,,,,,,"ruleDebug",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:ruleDebugReport,,M,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:rule,,,,,,,,,,,,"ruleDebugReport",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:ruleDebugRule,,M,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:rule,,,,,,,,,,,,"ruleDebugRule",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:ruleDebugRuleTarget,,M,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:rule,,,,,,,,,,,,"ruleDebugRuleTarget",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:ruleDebugRules,,M,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:rule,,,,,,,,,,,,"ruleDebugRules",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:ruleDebugSummary,,M,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:rule,,,,,,,,,,,,"ruleDebugSummary",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:ruleDebugTarget,,M,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:rule,,,,,,,,,,,,"ruleDebugTarget",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:ruleDebugTargetRule,,M,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:rule,,,,,,,,,,,,"ruleDebugTargetRule",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:ruleDebugTargets,,M,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:rule,,,,,,,,,,,,"ruleDebugTargets",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:ruleDelete,,M,,,,,,,,,,,,,,,,,,,,,,,,,,"Delete works just like `ruleRecompute` except it also deletes\nthe sparks/KPIs from the cache. This function can be very expensive\ncompared to a simple recompute. Recompute only requires updating\nthe index to reset specific rule/date combinations to the unknown\nstate. This function does the same, but also removes the actual\ncached spark/KPI for each rule/date combination.\n\nThis function deletes the sparks synchronously and can take a long\ntime if there are many targets. If you deleting many targets then\nrun this function within a job.\n\nThe default behavior is to automatically call `ruleRosterRefresh` before\nthe recompute to ensure the rules/targets are up-to-date. This behavior\ncan be overridden by passing '{noRefreshRoster}' for options.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:rule,,,,,,,,,,,,"ruleDelete",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:ruleErrs,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Return grid of all the rule+targets which have errors. The rules\nparameter may be any set of recs accepted by `toRecList` or null\nto query all rules. This function does **not** automatically refresh\nthe roster. The grid contains the following columns:\n - ruleRef: id of the rule rec\n - targetRef: id of the target or null if entire rule is in fault\n - status: type of error\n - errTrace: last exception (if rule has been run since reboot)\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:rule,,,,,,,,,,,,"ruleErrs",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:ruleInfo,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:rule,,,,,,,,,,,,"ruleInfo",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:ruleInfoX,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:rule,,,,,,,,,,,,"ruleInfoX",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:ruleKpiSwivel,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:rule,,,,,,,,,,,,"ruleKpiSwivel",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:ruleKpiTable,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:rule,,,,,,,,,,,,"ruleKpiTable",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:ruleKpis,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Query local KPIs along three dimensions of target x dates x rules.\nTargets and rules are any expr accepted by `toRecList` or null for all.\nSpan is any expr accepted by `toSpan`.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:rule,,,,,,,,,,,,"ruleKpis",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:ruleLocal,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:rule,,,,,,,,,,,,"ruleLocal",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:ruleRecompute,,M,,,,,,,,,,,,,,,,,,,,,,,,,,"Recompute local sparks or KPIs for the given targets/dates/rules.\nTargets and rules are any expr accepted by `toRecList`. Span is any\nexpr accepted by `toSpan`. If null is passed for any parameter\nthen it means all.\n\nRecomputation clears the index for the selected target/dates/rules.\nIt does *not* immediately remove the actual spark/kpi dicts. So until the\nengine gets a chance to re-run a rule, existing sparks/kpis remain in effect.\n\nThe default behavior is to automatically call `ruleRosterRefresh` before\nthe recompute to ensure the rules/targets are up-to-date. This behavior\ncan be overridden by passing '{noRefreshRoster}' for options.\n\nExamples:\n\n // refresh single target/date/rule combination\n ruleRecompute(@some-target, today, @some-rule)\n\n // clear all rules/dates for given target\n ruleRecompute(@some-target, null, null)\n\n // clear all targets/dates for given rule\n ruleRecompute(null, null, @some-rule)\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:rule,,,,,,,,,,,,"ruleRecompute",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:ruleRosterRefresh,,M,,,,,,,,,,,,,,,,,,,,,,,,,,"Force [roster refresh]`ext-rule::doc#roster`\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:rule,,,,,,,,,,,,"ruleRosterRefresh",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:ruleSparkEquip,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:rule,,,,,,,,,,,,"ruleSparkEquip",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:ruleSparkEquipX,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:rule,,,,,,,,,,,,"ruleSparkEquipX",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:ruleSparkHis,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Turn a grid of sparks as returned by `ruleSparks` into a history grid\nof the spark periods. Each unique combination of 'targetRef' and\n'ruleRef' becomes the value columns.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:rule,,,,,,,,,,,,"ruleSparkHis",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:ruleSparkSwivel,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:rule,,,,,,,,,,,,"ruleSparkSwivel",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:ruleSparkTable,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:rule,,,,,,,,,,,,"ruleSparkTable",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:ruleSparks,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Query local sparks along three dimensions of target x dates x rules.\nTargets and rules are any expr accepted by `toRecList` or null for all.\nSpan is any expr accepted by `toSpan`.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:rule,,,,,,,,,,,,"ruleSparks",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:ruleSwivelX,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:rule,,,,,,,,,,,,"ruleSwivelX",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:ruleTableX,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:rule,,,,,,,,,,,,"ruleTableX",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:ruleTest,,M,,,,,,,,,,,,,,,,,,,,,,,,,,"Perform test run of rule. The rule may be a rule ready function\nor a rule function. If the target is omitted, then a target is\nauto-selected by 'ruleOn'. If date is omitted and the rule is\nis spark or KPI then yesterday will be used.\n\nNOTE: this function's parameters and output is subject to change.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:rule,,,,,,,,,,,,"ruleTest",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:ruleToTargets,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Get all the target records the rule is registered on by the `ruleOn`\ntag. The rule may be any value accepted by `toRec`.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:rule,,,,,,,,,,,,"ruleToTargets",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:rulesToTargets,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Get all the target records the list of rules is registered on by\nthe `ruleOn` tag. The rule may be any value accepted by `toRecList`.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:rule,,,,,,,,,,,,"rulesToTargets",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:sbInvoke,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:ui,,,,,,,,,,,,"sbInvoke",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:sbPointDetails,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:ui,,,,,,,,,,,,"sbPointDetails",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:scheduleHis,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Compute a historical or future timeline of a schedule record. This\nfunction may be configured using `hisFunc` to turn in a schedule\ninto a [computed history]`ext-his::doc#computed`. Or this function\nmay be called with a schedule rec and a date range to returns\na history grid of the schedule.\n\nTime spans of the schedule which are auto/null are returned in the\nresults with a null value. But these nulls may be processed incorrectly\nif performing a join with other histories or using history functions\nwhich treat null as an unaligned, sparse va\n",,,,,,,,,,,,,,,M,,,,,,M,,,"func",,,,[^func],,,^lib:schedule,,,,,,,,,,,,"scheduleHis",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:scheduleSync,,M,,,,,,,,,,,,,,,,,,,,,,,,,,"Block until any schedule changes are refreshed.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:schedule,,,,,,,,,,,,"scheduleSync",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:scheduleValAt,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Return the scheduled value at the given timestamp.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:schedule,,,,,,,,,,,,"scheduleValAt",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:second,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Get seconds of the time as integer between 0 to 59 from time or datetime\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"second",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:sensorFailure,,,,,,,,,,,,,,,,,,,,,,,,,"Sensor Failure",,,"Compute periods when a point doesn't change by more than a tolerance.\n\nParams:\n - point: rec or grid of `point`\n - dates: any valid `hisRead` date range (today always skipped)\n - tolerance: number or 0.1 by default\n\nReturns:\n - history grid where value columns are durations",,,,,,,,,,,,,,,M,,,,,"Sensor has failed to change over 24 hour period. Because it\nrequires a full day of analysis, this rule always skips today.",,,,"func",,,,[^func],,,^lib:equip,,,,,,,,,,,,"sensorFailure",,,,,,,,,,,,,,,,,,,,,,,,,,,,"point and kind==\"Number\" and sensor",^ruleTypeBase,,,M,"(point, dates, tolerance: 0.1) => do\n hisRead(point, dates)\n .hisRollup(spread, 1day)\n .hisFindPeriods((v, ts) => v != null and v != na() and v.abs < tolerance and ts.date != today())\nend",,,,,,,,,,,,,,,,,,,,,,,,, @p:demo:r:25aa2aba-46d68710 "Sensor has N/A Data",^func:sensorHasNaData,,,,,,,,,,,,,,,,,,,,,,,,,"Sensor has N/A Data",,,,,,,,,,,,,,,,,,M,,,,,"N/A was logged for the sensor during this time frame. This is usually\ndue to a network connectivity issue.\n\nRecommended Actions\n===================\n1. Check the connector configuration\n2. Check the point configuration\n3. Check the remote system\n\n**Priority:** Low",,,,,,,,,,,^lib:proj_demo,,,,,,,,,,,,"sensorHasNaData",,,,,,,,,,,,,,,,,,,,,,,,,,,,"sensor and point",,,,M,"/*\n Find all periods when the the point has na data\n*/\n(point, dates) => do\n hisRead(point, dates).hisFindPeriods(v => v == na())\nend",,,,,,,,,,,,,,,,,,,,,,,,,2020-01-09T18:17:34.201Z ,^func:sessionLogout,,,,,,,,,,,,,,,,,,,,,,,,,,"ui::logout",,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:session,,,,,,,,,,,,"sessionLogout",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,M,,,,,M,,,,,,,,,,,,,,,,,,,,,,, ,^func:sessions,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:session,,,,,,,,,,,,"sessions",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,M,,,,,,,,,,,,,,,,,,,,,,, ,^func:set,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Set a collection item and return a new collection.\n - List: set item by index key\n - Dict: set item by key name\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"set",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:setColMeta,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Return a new grid with column meta-data replaced by given meta dict.\nAlso see `addColMeta` and `docSkySpark::Streams#setColMeta`.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"setColMeta",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:setMeta,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Return new grid with grid level meta-data replaced by given\nmeta Dict. Also see `addMeta` and `docSkySpark::Streams#setMeta`.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"setMeta",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:shortCycling,,,,,,,,,,,,,,,,,,,,,,,,,"Short Cycling",,,"Compute periods when an bool point's on/off periods\nare not meeting min on/off times.\n\nParams:\n - point: rec or grid of Bool `point`\n - dates: any valid `hisRead` date range\n - minOffTime: duration for minimum time equip must be off\n - minOnTime: duration for minimum time equip must be on\n\nReturns:\n - history grid where value columns are durations equip is short cycling",,,,,,,,,,,,,,,M,,,,,"Point is cycling on/off more often than its min on/off times.",,,,"func",,,,[^func],,,^lib:equip,,,,,,,,,,,,"shortCycling",,,,,,,,,,,,,,,,,,,,,,,,,,,,"point and kind==\"Bool\"",^ruleTypeBase,,,M,"(point, dates, minOffTime: 10min, minOnTime: 10min) => do\n\n // normalize min on/off times to hours\n minOffTime = minOffTime.to(1h)\n minOnTime = minOnTime.to(1h)\n\n // compute deadband min on/off timestamps\n tsOffDeadband: now() - minOffTime - 1min\n tsOnDeadband: now() - minOnTime - 1min\n\n // find periods not meeting min off time (skip times\n offProblems: hisRead(point, dates)\n .hisFindPeriods(v => (na() != v) and (not v))\n .findAll(row => row->v0 < minOffTime and row->ts < tsOffDeadband)\n\n // find periods not meeting min on time\n onProblems: hisRead(point, dates)\n .hisFindPeriods(v => true == v)\n .findAll(row => row->v0 < minOnTime and row->ts < tsOnDeadband)\n\n // return intersection as result\n hisPeriodUnion([offProblems, onProblems])\nend",,,,,,,,,,,,,,,,,,,,,,,,, ,^func:sin,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Return sine of angle in radians.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:math,,,,,,,,,,,,"sin",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:sinh,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Return hyperbolic sine.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:math,,,,,,,,,,,,"sinh",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:size,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Return number of items in str, list, or grid\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"size",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:skip,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Skip the given number of items in a stream.\nSee `docSkySpark::Streams#skip`.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"skip",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:sleep,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"sleep",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:sort,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Sort a list or grid.\n\nIf sorting a list, the sorter should be a function\nthat takes two list items and returns -1, 0, or 1 (typicaly\ndone with the '<=>' operator. If no sorter is passed, then\nthe list is sorted by its natural ordering.\n\nIf sorting a grid, the sorter can be a column name\nor a function. If a function, it should take two rows\nand return -1, 0, or 1.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"sort",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:sortDis,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Sort a grid by row display name - see `haystack::Grid.sortDis`\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"sortDis",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:sortr,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Reverse sort a list or grid. This function works just\nlike `sort` except sorts in reverse.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"sortr",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, @p:demo:r:25aa2aba-cfeeaa2e "sparkRuleHelp",^func:sparkRuleHelp,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"",,,,,,,,,,,,,,,,^lib:proj_demo,,,,,,,,,,,,"sparkRuleHelp",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"// given a grid of sparks, return a fandoc string of associated rule help\n(sparks) => do\n if (sparks.missing(\"ruleRef\")) return \"\"\n help: \"\"\n sparks.unique(\"ruleRef\").each spark => do\n if (help.size > 0) help = help + \"\\n---\\n\"\n rule: readById(spark->ruleRef)\n help = help + \"\\n\" + rule.dis + \"\\n****\\n\"\n help = help + rule[\"help\"] + \"\\n\\n\"\n end\n return help\nend",,,,,,,,,,,,,,,,,,,,,,,,,2020-01-09T18:17:34.223Z ,^func:split,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Split a string by the given separator and trim whitespace.\nIf 'sep' is null then split by any whitespace char; otherwise\nit must be exactly one char long. See `sys::Str.split` for detailed\nbehavior.\n\nOptions:\n - noTrim: disable auto-trim of whitespace from start and end of tokens\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"split",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:spread,,,,,,,,,,,,,,,,,,,,,,,,,,"ui::spread",,"Fold multiple values to compute the difference between\nthe max and min value (the range b/w min and max).\nReturn null if no values.\n\nExample:\n [7, 2, 3].fold(spread) >> 5\n",,,,,,,,,,,,,,"Number",M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"spread",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:sqrt,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Return square root of val.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:math,,,,,,,,,,,,"sqrt",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:standardDeviation,,,,,,,,,,,,,,,,,,,,,,,,,,"ui::standardDeviation",,"Fold a series of numbers into the standard deviation of a *sample*:\n\n s = sqrt(Σ (xᵢ - mean)² / (n-1))\n\nExample:\n [4, 2, 5, 8, 6].fold(standardDeviation)\n",,,,,,,,,,,,,,"Number",M,,,,,,,,,"func",,,,[^func],,,^lib:math,,,,,,,,,,,,"standardDeviation",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:start,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Start value of a DateSpan, Span or a range.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"start",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:startOfWeek,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Return current locale's start of weekday. Weekday is\nreturned as integer from 0 (Sunday) to 6 (Saturday).\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"startOfWeek",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:startsWith,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Return if Str starts with the specified Str.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"startsWith",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:stream,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Create new stream from given collection:\n - Grid: stream the rows\n - List: stream the items\n - Range: stream inclusive range of integers\nSee `docSkySpark::Streams#stream`.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"stream",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:stripUncommittable,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Strip any tags which cannot be persistently committed to Folio.\nThis includes special tags such as 'hisSize' and any transient tags\nthe record has defined. If 'val' is Dict, then a single Dict is returned.\nOtherwise 'val' must be Dict[] or Grid and Dict[] is returned.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"stripUncommittable",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:subtypes,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"subtypes",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:sum,,,,,,,,,,,,,,,,,,,,,,,,,,"ui::sum",,"Fold multiple values into their numeric sum.\nReturn null if no values.\n",,,,,,,,,,,,,,"Number",M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"sum",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:supertypes,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"supertypes",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:swizzleRefs,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Given a grid of records, assign new ids and swizzle all internal\nref tags. Each row of the grid must have an 'id' tag. A new id\nis generated for each row, and any Ref tags which used one of\nthe old ids is replaced with the new id. This function is handy\nfor copying graphs of recs such as site/equip/point trees.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"swizzleRefs",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:sysModAdd,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Enable the given system module name such as \"ldap\".\nAll dependencies must be already enabled.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"sysModAdd",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,M,,,,,,,,,,,,,,,,,,,,,,, ,^func:sysModRemove,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Disable the given system module name. Raise exception\nif it is a boot module or it is required for dependencies.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"sysModRemove",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,M,,,,,,,,,,,,,,,,,,,,,,, ,^func:sysMods,,,,,,,,,,,,,,,,,,,,,,,,,,,,"List the installed system mods.\nResult format is subject to change\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"sysMods",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:sysReload,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"sysReload",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,M,,,,,,,,,,,,,,,,,,,,,,, ,^func:table,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Set the grid visualization view to table.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:legacy,,,,,,,,,,,,"table",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:tags,,,,,,,,,,,,,,,,,,,,,,,,,,,,"List tag definitions in the context namespace as Def[].\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"tags",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:tags2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:legacy,,,,,,,,,,,,"tags2",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:tan,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Return tangent of angle in radians.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:math,,,,,,,,,,,,"tan",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:tanh,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Return hyperbolic tangent.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:math,,,,,,,,,,,,"tanh",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:targetToRules,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Get all the rule records which are registered on given target.\nThe target may be any value accepted by `toRec`.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:rule,,,,,,,,,,,,"targetToRules",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:targetsToRules,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Get all the rule records which are registered on given list\nof targets. The target may be any value accepted by `toRecList`.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:rule,,,,,,,,,,,,"targetsToRules",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:tariffAxonCharge,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:tariff,,,,,,,,,,,,"tariffAxonCharge",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:tariffBillPeriod,,,,,,,,,,,,,,,,,,,,,,,,,,,,"For the given meter, get the date span of the bill period containing\nthe given date.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:tariff,,,,,,,,,,,,"tariffBillPeriod",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:tariffConsumptionCharge,,M,,,,,,,,,,,,,,,,,,,,,,,,,,"Create a consumption charge. The parameters are the same as `tariffDemandCharge`.\nReturns the new consumption charge record.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:tariff,,,,,,,,,,,,"tariffConsumptionCharge",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:tariffCost,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Calculate the cost of energy for a meter. The parameters:\n - meter: The energy meter to calculate the cost for. May be any target accepted\n by `toRec`.\n - dates: the date range to query.\n\nThe 'opts' parameter is a Dict and supports the following options:\n - interval: a Duration between '1min' and '1day'. If specified, then the tariff\n engine will calculate the cost of each charge for every interval in the 'dates'\n range. For example, if dates is yesterday, and interval is '1hr', then the tariff\n engine will break down the cost into 24 hourly slices for yesterday.\n - tariffHisRef: a Ref that can be used to override the tariff *history* that would\n normally be used for the meter.\n - tariffRef: a Ref that can be used to override the *tariff* that is used to\n calculate cost. Can be used in conjunction with the tariffHisRef option. If\n specified, this tariff will be used for all bill periods in the date span.\n - data: The data option allows you to override the historical data that\n the tariff engine would normally run against. The value of this option\n is a map where where the keys are string encodings of a point's id. The\n values are history grids. See the discussion below for more details.\n\nThe function returns the cost as a history grid where each value column corresponds\nto a charge in the tariff.\n\nThe **data** option: Normally, the tariff engine will determine the history\npoint to use for a charge by looking at the `usageOn` tag for a charge, and\nthen resolve that filter to the appropriate point. However, if the data map\nhas a key with the same id as the resolved usageOn point, then the history grid in\nthe data map will be used instead. Care should be taken to ensure that the\nhistory grid you give the tariff engine has data for the entire billing\nperiod(s) you are calculating cost for. The `tariffBillPeriod` function\ncan help you in this regard.\n\nExample:\n\n // Get the cost for yesterday without any timestamp adjustment for intervals.\n tariffCost(@Carytown.ElecMeter-Main, yesterday)\n\n // Get the cost for yesterday at 1hr intervals\n tariffCost(@Carytown.ElecMeter-Main, yesterday, {interval: 1hr})\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:tariff,,,,,,,,,,,,"tariffCost",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:tariffCostToHis,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Function to create a [computed history]`ext-his::doc#computed`\nfor the tariff cost associated with that meter. The function computes\nthe history by calling `tariffCost` for the meter\nassociated with this point (it should be a `siteMeter`). All the charges\nfor a ts are then folded into a single value using 'sum'.",,,,,,,,,,,,,,,M,,,,,,M,,,"func",,,,[^func],,,^lib:tariff,,,,,,,,,,,,"tariffCostToHis",,,,,,,,,M,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,"(rec, dates, opts, yield) => do\n meter: readById(rec->equipRef)\n if (meter.missing(\"siteMeter\")) return null\n\n tariffCost(meter, dates)\n .hisFoldCols(sum)\n .each(row => yield(row[\"ts\"], row[\"v0\"]))\nend",,,,,,,,,,,,,,,,,,,,,,,,, ,^func:tariffCostView,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:tariff,,,,,,,,,,,,"tariffCostView",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:tariffCostViewX,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:tariff,,,,,,,,,,,,"tariffCostViewX",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:tariffCreate,,M,,,,,,,,,,,,,,,,,,,,,,,,,,"Create a new tariff. Creates a new tariff with the given display name and currency,\nand returns the new tariff Dict record.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:tariff,,,,,,,,,,,,"tariffCreate",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:tariffCreateBillHis,,M,,,,,,,,,,,,,,,,,,,,,,,,,,"Create the billing period history point. The parameters:\n\n - rec (optional): If specified, must be the site or meter to\n create the history point on. May be any target accepted by `toRec`.\n If 'null', then the point will be created \"project-wide\".\n - his (optional): If specified, this grid will be written as the initial\n billing period history. The grid must have the following columns:\n 1. 'date' (Date): the date marking the beginning of a bill period.\n 2. 'tariff' (Str or Ref): the id of the tariff for that bill period.\n - opts (optional): A `haystack::Dict` with additional options to create the point.\n Supported options:\n - 'tz': Str containing the name of the time zone to use for this point.\n This option is ignored if the 'rec' parameter is non-null.\n - 'navName': The Str `navName` to use for this point. (default: \"Tariff His\")\n\nIf rec is 'null' or is a site, then you can associate meters with the\ntariff billing history by using the `tariffHisRef` tag.\n\nReturns the new billing period history point record.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:tariff,,,,,,,,,,,,"tariffCreateBillHis",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:tariffData,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:tariff,,,,,,,,,,,,"tariffData",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:tariffDemandCharge,,M,,,,,,,,,,,,,,,,,,,,,,,,,,"Create a demand charge. The parameters:\n - tariff: The tariff to assign the charge to. May be any target accepted by `toRec`.\n - dis: The display name for the charge.\n - meterType: The meter type this charge applies to. Must be one of 'elec', 'gas',\n 'water' or 'steam'. The `usageOn` tag will be configured based on the meter type.\n You can override the `usageOn` by setting it explicitly in the 'optTags' parameter.\n - strategy: The range strategy to use. Must be one of 'cumulative', 'inRange', or 'perReading'\n - ranges: A list of range specifications where a range specifcation is a list with\n format '[min, max, fee]'.\n - optTags: Any additional tags to apply to the charge. You can override any of the\n other settings by explicitly setting them in this Dict.\n\nReturns the new demand charge record.\n\nExample:\n tariffDemandCharge(@Schedule1B, \"Peak Demand Charge\", \"elec\", \"inRange\",\n [[0, 1000, 3.225], [1000, posInf(), 4.662]])\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:tariff,,,,,,,,,,,,"tariffDemandCharge",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:tariffFixedCharge,,M,,,,,,,,,,,,,,,,,,,,,,,,,,"Create a fixed charge. The parameters:\n - tariff: The tariff to assign the charge to. May be any target accepted by `toRec`.\n - dis: The display name for the charge.\n - fee (Number or Ref): the fee for this charge.\n - freq (Str or Duration): 'bill' (the default) if the charge applies to the entire bill period,\n or a Duration for the frequency of the charge.\n\nReturns the new fixed charge record.\n\nExample:\n // A fixed charge that applies to the entire bill period\n tariffFixedCharge(@Schedule1B, \"Service Charge\", 102.50, \"bill\")\n\n // A fixed charge that applies every day\n tariffFixedCharge(@Schedule1B, \"Rental Fee\", 7.25, 1day)\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:tariff,,,,,,,,,,,,"tariffFixedCharge",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:tariffIsDefined,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:tariff,,,,,,,,,,,,"tariffIsDefined",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:tariffPercentageCharge,,M,,,,,,,,,,,,,,,,,,,,,,,,,,"Create a percentage charge. The parameters:\n - tariff: The tariff to assign the charge to. May be any target accepted by `toRec`.\n - dis: The display name for the charge.\n - percentage: The percentage for this charge.\n - charges: the charges this charge applies to. Maybe be any result target accepted\n by `toRecList`.\n\nReturns the new percentage charge record.\n\nExample:\n // A 3.5% tax on two other charges\n tariffPercentageCharge(@Schedule1B, \"State Tax\", 3.5, \"@ServiceCharge,@ConsumptionCharge\")\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:tariff,,,,,,,,,,,,"tariffPercentageCharge",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, @p:demo:r:25aa2aba-c145c3f1 "Temp Sensor Failure",^func:tempSensorFailure,,,,,,,,,,,,,,,,,,,,,,,,,"Temp Sensor Failure",,,,,,,,,,,,,,,,,,M,,,,,"Sensor has failed to change over 24 hour period. Because it requires a\nfull day of analysis, this rule always skips today.\n\nRecommended Actions\n===================\n1. Check calibration settings in control system\n2. Physical replacement of the sensor\n\n**Priority:** Medium",,,,,,,,,,,^lib:proj_demo,,,,,,,,,,,,"tempSensorFailure",,,,,,,,,,,,,,,,,,,,,,,,,,,,"temp and sensor and point",,,,M,"/*\n Temperate sensor failure - demo customization which\n wraps standard 'sensorFailure' to add cost, priority tags\n*/\n(sensor, dates) => do\n\n // call standard sensorFailure\n faults: sensorFailure(sensor, dates)\n if (faults == null or faults.isEmpty) return faults\n\n // add costing/priority to the spark as additional tags\n faults.addMeta({spark_priority: \"med\"})\nend",,,,,,,,,,,,,,,,,,,,,,,,,2020-01-09T18:17:34.2Z ,^func:template,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"template",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:templateFor,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"templateFor",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:templates,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"templates",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:terms,,,,,,,,,,,,,,,,,,,,,,,,,,,,"List term definitions (tags and conjuncts) in the context namespace as Def[].\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"terms",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, @p:demo:r:25cb81e2-624a0cc8 "test",^func:test,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,,,,,,,,^lib:proj_demo,,,,,,,,,,,,"test",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"() => do\n allTagsOnPoints: readAllTagNames(point)\n \n quantityDefs: findAllDefsThatAre(^quantity).findAll(v => allTagsOnPoints.colToList(\"name\").contains(v->def.toStr)).map(r => {def: r->def.toStr, folderPath: r->folderPath})\n phenomenonDefs: findAllDefsThatAre(^phenomenon).findAll(v => allTagsOnPoints.colToList(\"name\").contains(v->def.toStr)).map(r => {def: r->def.toStr, folderPath: r->folderPath})\n ptFuncTypeDefs: findAllDefsThatAre(^pointFunctionType).findAll(v => allTagsOnPoints.colToList(\"name\").contains(v->def.toStr)).map(r => {def: r->def.toStr, folderPath: r->folderPath})\n \n return allTagsOnPoints.map(row => \n do\n changes: {}\n \n qty: quantityDefs.find(v => v->def == row->name)\n phen: phenomenonDefs.find(v => v->def == row->name)\n ptFunc: ptFuncTypeDefs.find(v => v->def == row->name)\n \n if (qty!= null)\n changes = changes.merge(qty) \n \n else if (phen != null)\n changes = changes.merge(phen)\n \n else if (ptFunc != null)\n changes = changes.merge(ptFunc)\n \n return row.merge(changes)\n end).findAll(v => v[\"def\"] != null)\nend",,,,,,,,,,,,,,,,,,,,,,,,,2020-02-04T01:16:40.64Z @p:demo:r:25aa2aba-5f874a4f "testJob",^func:testJob,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,,,,,,,,^lib:proj_demo,,,,,,,,,,,,"testJob",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"() => do\n echo(\"TestJob start...\")\n 10.times(i => do\n jobProgress(i*10, echo(\"TestJob \" + i + \"...\"))\n jobSleep(1sec)\n end)\n echo(\"TestJob done!\")\nend",,,,,,,,,,,,,,,,,,,,,,,,,2020-01-09T18:17:34.19Z ,^func:thisMonth,,,,,,,,,,,,,,,,,,,,,,,,,,,,"DateSpan for this month as '1st..28-31'\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"thisMonth",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:thisWeek,,,,,,,,,,,,,,,,,,,,,,,,,,,,"DateSpan for this week as 'sun..sat' (uses locale start of week)\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"thisWeek",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:thisYear,,,,,,,,,,,,,,,,,,,,,,,,,,,,"DateSpan for this year 'Jan-1..Dec-31'\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"thisYear",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:time,,,,,,,,,,,,,,,,,,,,,,,,,,,,"If val is a DateTime: get time portion of the timestamp.\nIf val is a Number: construct a time instance from hour, minutes,\nsecs (truncated to nearest second).\n\nExamples:\n now().time // current time\n time(20, 45) // same as 20:45\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"time",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:times,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Call the specified function the given number\nof times passing the counter.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"times",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:to,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Convert a number to the given unit. If the units are not\nof the same dimension then an exception is raised. The\ntarget unit can be a string or a Number. If target unit\nis a Number, then the scalar value is ignored, but by\nconvention should be 1.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"to",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:toAhuCool,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Given an `ahu` rec, get its `cool` `cmd` point rec.\nIf the AHU has multiple stages of cooling, get first stage only.",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:hvac,,,,,,,,,,,,"toAhuCool",,,,,,,,,M,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,"(ahu, checked:true) => do\n cools: readAll(cool and cmd and equipRef == ahu->id)\n\n if (cools.size > 1) cools = cools.findAll(p => p[\"stage\"] == 1)\n if (cools.isEmpty) do\n if (checked) throw \"No 'cool' points defined: \" + dis(ahu)\n return null\n end\n cools.first\nend",,,,,,,,,,,,,,,,,,,,,,,,, ,^func:toAhuDischargeFan,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Given an `ahu` rec, query its `discharge` `fan` `cmd` point rec.",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:hvac,,,,,,,,,,,,"toAhuDischargeFan",,,,,,,,,M,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,"(ahu, checked:true) => do\n read(discharge and fan and cmd and equipRef == ahu->id, checked)\nend",,,,,,,,,,,,,,,,,,,,,,,,, ,^func:toAhuDischargePressure,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Given an `ahu` rec, get its `discharge` `pressure` `sensor` point rec.",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:hvac,,,,,,,,,,,,"toAhuDischargePressure",,,,,,,,,M,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,"(ahu, checked:true) => do\n read(discharge and pressure and sensor and equipRef == ahu->id, checked)\nend",,,,,,,,,,,,,,,,,,,,,,,,, ,^func:toAhuDischargeTemp,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Given an `ahu` rec, get its `discharge` `temp` `sensor` point rec.",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:hvac,,,,,,,,,,,,"toAhuDischargeTemp",,,,,,,,,M,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,"(ahu, checked:true) => do\n read(discharge and temp and sensor and equipRef == ahu->id, checked)\nend",,,,,,,,,,,,,,,,,,,,,,,,, ,^func:toAhuHeat,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Given an `ahu` rec, get its `heat` `cmd` point rec.\nIf the AHU has multiple stages of heating, get first stage only.",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:hvac,,,,,,,,,,,,"toAhuHeat",,,,,,,,,M,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,"(ahu, checked:true) => do\n heats: readAll(heat and cmd and equipRef == ahu->id)\n\n if (heats.size > 1) heats = heats.findAll(p => p[\"stage\"] == 1)\n if (heats.isEmpty) do\n if (checked) throw \"No 'heat' points defined: \" + dis(ahu)\n return null\n end\n heats.first\nend",,,,,,,,,,,,,,,,,,,,,,,,, ,^func:toAhuMixedTemp,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Given an `ahu` rec, get its `mixed` `temp` `sensor` point rec .",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:hvac,,,,,,,,,,,,"toAhuMixedTemp",,,,,,,,,M,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,"(ahu, checked:true) => do\n read(mixed and temp and sensor and equipRef == ahu->id, checked)\nend",,,,,,,,,,,,,,,,,,,,,,,,, ,^func:toAhuOutsideDamper,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Given an `ahu` rec, get its `outside` `damper` `cmd` point.",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:hvac,,,,,,,,,,,,"toAhuOutsideDamper",,,,,,,,,M,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,"(ahu, checked:true) => do\n read(outside and damper and cmd and equipRef == ahu->id, checked)\nend",,,,,,,,,,,,,,,,,,,,,,,,, ,^func:toAhuOutsideTemp,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Given an `ahu` rec, get its `outside` `temp` `sensor` point rec. If\nthe AHU doesn't have a direct outside temp point, then fallback\nto the site's weather temp.",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:hvac,,,,,,,,,,,,"toAhuOutsideTemp",,,,,,,,,M,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,"(ahu, checked:true) => do\n // first try direct\n direct: read(outside and temp and (sensor or in) and equipRef == ahu->id, false)\n if (direct != null) return direct\n\n // fallback to weather\n w: toWeather(ahu, checked)\n if (w == null) return null\n read(temp and weatherRef == w->id, checked)\nend",,,,,,,,,,,,,,,,,,,,,,,,, ,^func:toAhuReturnTemp,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Given an `ahu` rec, get its `return` `temp` `sensor` point rec.",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:hvac,,,,,,,,,,,,"toAhuReturnTemp",,,,,,,,,M,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,"(ahu, checked:true) => do\n read(\"return\" and temp and sensor and equipRef==ahu->id, checked)\nend",,,,,,,,,,,,,,,,,,,,,,,,, ,^func:toAhuZoneTemp,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Given an `ahu` rec, get its `zone` `temp` `sensor` point rec or throw an exception.",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:hvac,,,,,,,,,,,,"toAhuZoneTemp",,,,,,,,,M,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,"(ahu, checked:true) => do\n read(zone and temp and sensor and equipRef == ahu->id, checked)\nend",,,,,,,,,,,,,,,,,,,,,,,,, ,^func:toAxonCode,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Convert a scalar, list, or dict value to its Axon code representation\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"toAxonCode",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:toChar,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Convert a unicode char number into a single char string\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"toChar",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:toDateSpan,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Convert the following objects into a `haystack::DateSpan`:\n - 'Date..Date': starting and ending date\n - 'Date..Number': starting date and num of days (day unit required)\n - 'Date': one day range\n - 'Number': convert as year\n - 'Func': function which evaluates to date range\n - 'DateTime..DateTime': use starting/ending dates; if end is midnight,\n then use previous date\n - 'Str': evaluates to `haystack::DateSpan.fromStr`\n - null: use projMeta dateSpanDefault or default to today\n\nExamples:\n toDateSpan(2010-07-01..2010-07-03) >> 01-Jul-2010..03-Jul-2010\n toDateSpan(2010-07-01..4) >> 01-Jul-2010..04-Jul-2010\n toDateSpan(2010-07-01..60day) >> 01-Jul-2010..29-Aug-2010\n toDateSpan(2010-07) >> 01-Jul-2010..31-Jul-2010\n toDateSpan(2010) >> 01-Jan-2010..31-Dec-2010\n toDateSpan(pastWeek) // on 9 Aug >> 02-Aug-2010..09-Aug-2010\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"toDateSpan",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:toDateTimeSpan,,,,,,,,,,,,,,,,,,,,,,,,M,,,,"Use `toSpan`\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"toDateTimeSpan",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:toDegrees,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Convert angle in radians to an angle in degrees.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:math,,,,,,,,,,,,"toDegrees",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:toEquipRuntime,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Given an `equip` rec, get its 'runtime' point rec.",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:equip,,,,,,,,,,,,"toEquipRuntime",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,"(equip, checked:true) => do\n if (equip.has(\"runtime\") and equip.has(\"point\")) equip\n else read(runtime and equipRef == equip->id, checked)\nend",,,,,,,,,,,,,,,,,,,,,,,,, ,^func:toEquips,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Given a record or grid of records, return a grid of equips:\n - if recs grid has 'equip' column, return all matches\n - if recs have 'equipRef', derefernce to equips\n - if recs have 'site', dereference by 'equip' and 'siteRef'\n - return empty grid if cannot infer as equips\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:equip,,,,,,,,,,,,"toEquips",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:toGrid,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Given an arbitrary object, translate it to a Grid via\n`haystack::Etc.toGrid`:\n - if grid just return it\n - if row in grid of size, return row.grid\n - if scalar return 1x1 grid\n - if dict return grid where dict is only\n - if list of dict return grid where each dict is row\n - if list of non-dicts, return one col grid with rows for each item\n\nExample:\n // create simple grid with dis,age cols and 3 rows:\n [{dis:\"Bob\", age:30},\n {dis:\"Ann\", age:40},\n {dis:\"Dan\", age:50}].toGrid\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"toGrid",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:toHex,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Convert a number to a hexadecimal string.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"toHex",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:toJavaMillis,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Given a DateTime return Number of milliseconds since Unix epoch of 1-Jan-1970 UTC\nAlso see `fromJavaMillis`.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"toJavaMillis",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:toList,,,,,,,,,,,,,,,,,,,,,,,,,,,,"If val is a list return it, otherwise return '[val]'.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"toList",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:toLocale,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Get the localized string for the given tag name or qualified name.\nIf the key is formatted as \"pod::name\" then route to `sys::Env.locale`,\notherwise to `haystack::Etc.tagToLocale`.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"toLocale",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:toMatrix,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Convert a general grid to an optimized matrix grid. Matrixs are two\ndimensional grids of Numbers. Columns are named \"v0\", \"v1\", \"v2\", etc.\nGrid meta is preserved, but not column meta. Numbers in the resulting\nmatrix are unitless; any units passed in are stripped.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:math,,,,,,,,,,,,"toMatrix",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:toOccupied,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Given a `site`, `equip`, or `point` rec, get its `occupied` point.\nThe following algorithm is used to lookup the occupied point:\n 1. If rec is `point`, then lookup its equip via `equipRef`\n 2. If `equip`, then attempt to match occupied for exact\n equip using `equipRef`\n 3. If equip is nested, then iterate up the equip tree via\n `equipRef`\n 4. If no equip match found, then match for `siteRef`; if\n multiple matches found, select occupied point with the\n the `sitePoint` tag.\n\nIf there are no matches then return null or raise an exception\nbased on checked flag. If there are multiple ambiguous\nmatches (missing the 'sitePoint' tag), then an exception is\nalways raised regardless of checked flag.\n\nAlso see `ext-equip::doc#occupied`\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:equip,,,,,,,,,,,,"toOccupied",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:toPoints,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Given a record or grid of records, return a grid of points:\n - if recs grid has 'point' column, return all matches\n - if recs have 'pointRef', derefernce to points\n - if recs have 'site', dereference by 'point' and 'siteRef'\n - if recs have 'equip', dereference by 'point' and 'equipRef'\n - return empty grid if cannot infer as points\n\nIf the record passed is a single equip, then this function\nwill route to `equipToPoints`.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:equip,,,,,,,,,,,,"toPoints",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:toRadians,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Convert angle in degrees to an angle in radians.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:math,,,,,,,,,,,,"toRadians",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:toRadix,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Convert a number to its string representation in the given radix (base).\nIf width is non-null, then leading zeroes are prepended to ensure the\nspecified width.\n\nExample:\n 6.toRadix(2) => \"110\"\n 255.toRadix(16, 4) => \"00ff\"\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"toRadix",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:toRec,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Given any of the following, return a Dict:\n - null always return null\n - Null Ref always returns null\n - Row or Dict\n - Grid returns first row\n - Ref will make a call to read database\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"toRec",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:toRecId,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Given any of the following, return a Ref:\n - Ref\n - Row or Dict, return 'id' tag\n - Grid return first row id\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"toRecId",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:toRecIdList,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Given any of the following, return a Ref[]:\n - Ref\n - Ref[]\n - Dict return 'id' tag\n - Dict[] return 'id' tags\n - Grid return 'id' column\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"toRecIdList",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:toRecList,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Given any of the following, return a Dict[] of records:\n - null return empty list\n - Ref or Ref[] (will make a call to read database)\n - Row or Row[]\n - Dict or Dict[]\n - Grid\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"toRecList",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:toSites,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Given a record or grid of records, return a grid of sites:\n - if recs grid has 'site' column, return all matches\n - if recs have 'siteRef', derefernce to sites\n - return empty grid if cannot infer as sites\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:equip,,,,,,,,,,,,"toSites",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:toSpan,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Convert the following objects into a `haystack::Span`:\n - 'DateSpan,tz': anything accepted by `toDateSpan` plus a Timezone string\n - 'DateTime..DateTime': range of two DateTimes\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"toSpan",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:toStr,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Convert an obj to its string representation\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"toStr",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:toTagName,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Given arbitrary string, convert to a safe tag name -\nsee `haystack::Etc.toTagName`\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"toTagName",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:toTimeZone,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Convert a DateTime or Span to another timezone:\n now().toTimeZone(\"Chicago\")\n now().toTimeZone(\"UTC\")\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"toTimeZone",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:toWeather,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Attempt to get the weather station record from:\n - if rec has `weather` tag, then return it\n - if rec has `weatherRef` tag, then dereference\n - if rec has `siteRef`, attempt to dereference from that\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:weather,,,,,,,,,,,,"toWeather",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:toWeatherPlot,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:weather,,,,,,,,,,,,"toWeatherPlot",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:toWeatherPoints,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:weather,,,,,,,,,,,,"toWeatherPoints",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:today,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Return today's Date according to context's time zone\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"today",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, @p:demo:r:25aa2aba-904b470b "totalizeKwh",^func:totalizeKwh,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,,,,,,,,^lib:proj_demo,,,,,,,,,,,,"totalizeKwh",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"/*\n Compute the total kWh consumed by a given meter over an interval of time:\n - meter: Dict for elec meter record\n - tsStart: DateTime of inclusive starting time\n - tsEnd: DateTime of exclusive ending time\n - returns: Number in kWh\n*/\n(meter, tsStart, tsEnd) => do\n\n // get kwh point for meter\n point: read(energy and equipRef == meter->id)\n\n // read history for date and get hourly rollup of kWh\n his: hisRead(point, tsStart.date .. tsEnd.date).hisRollup(sum, 1hr)\n\n // filter out the times outside of our start/end time\n filteredHis: findAll(his) r => tsStart <= r->ts and r->ts < tsEnd\n\n // rollup the kWh for our filtered time period\n filteredHis.foldCol(\"v0\", sum)\nend",,,,,,,,,,,,,,,,,,,,,,,,,2020-01-09T18:17:34.197Z ,^func:trace,,M,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"trace",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:transpose,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"transpose",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:trap,,,,,,,,,,,,,,,,,,,,,,,,,,,,"If the given value is a dict, then get a value by name, or\nthrow UnknownNameErr if name not mapped. If the value is\na Ref, then perform a checked 'readById', then perform\nthe name lookup.\n\nThe trap function maybe be accessed using the '->' shortcut operator:\n dict->foo >>> dict.trap(\"foo\")\n\nSee `docSkySpark::AxonLang#getAndTrap`.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"trap",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:trim,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Trim whitespace from the beginning and end of the string. For the purposes\nof this function, whitespace is defined as any character equal to or less\nthan the 0x20 space character (including ' ', '\\r', '\\n', and '\\t').\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"trim",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:trimEnd,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Trim whitespace only from the end of the string.\nSee `trim` for definition of whitespace.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"trimEnd",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:trimStart,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Trim whitespace only from the beginning of the string.\nSee `trim` for definition of whitespace.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"trimStart",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:tz,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Get timezone as city name string in tzinfo database from datetime.\nIf the datetime is null then return the environment default timezone.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"tz",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:tzdb,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Return the installed timezone database as Grid with following columns:\n - name: name of the timezone\n - fullName: qualified name used by Olson database\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"tzdb",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:uiLink,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Host relative URI to hyperlink to a Fresco view - see `docFresco::Export#links`\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:ui,,,,,,,,,,,,"uiLink",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:uiLinkAbs,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Convenience for `httpSiteUri()` + `uiLink()` to generate an\nabsolute URI hyperlink\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:ui,,,,,,,,,,,,"uiLinkAbs",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:uiNavProjNames,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:nav,,,,,,,,,,,,"uiNavProjNames",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:uiPoll,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,"Evaluate ui poll request",,,,,,,"func",,,,[^func],,,^lib:ui,,,,,,,,,,,,"uiPoll",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:uiSettingsFormCommit,,M,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:ui,,,,,,,,,,,,"uiSettingsFormCommit",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:uiSettingsTest,,M,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:ui,,,,,,,,,,,,"uiSettingsTest",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:unique,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Return the unique items in a collection. If val is a List\nthen return `sys::List.unique`. If val is a Grid then\nreturn `haystack::Grid.unique` where key must be a column\nname or list of column names.\n\nExamples:\n [1, 1, 2, 2].unique >> [1, 2]\n grid.unique(\"geoState\") >> unique states\n grid.unique([\"geoCity\", geoState\"]) >> city,state combos\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"unique",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, @p:demo:r:25cb66b0-e5ebfe9a "uniquePointDefCount",^func:uniquePointDefCount,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,,,,,,,,^lib:proj_demo,,,,,,,,,,,,"uniquePointDefCount",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"// returns a list of point def combinations in the databases with a count of each occurance\n// count should add up to total number of points in db\n(showEmpty:false) => do\n allTagsOnPoints: readAllTagNames(point).colToList(\"name\")\n \n quantityDefs: findAllDefsThatAre(^quantity).findAll(v => allTagsOnPoints.contains(v->def.toStr)).map(r => r->def.toStr)\n phenomenonDefs: findAllDefsThatAre(^phenomenon).findAll(v => allTagsOnPoints.contains(v->def.toStr)).map(r => r->def.toStr)\n ptFuncTypeDefs: findAllDefsThatAre(^pointFunctionType).findAll(v => allTagsOnPoints.contains(v->def.toStr)).map(r => r->def.toStr)\n \n uniqueList: []\n \n excludeQty: quantityDefs.map(r => \"not \" + r)\n excludePhenom: phenomenonDefs.map(r => \"not \" + r)\n excludePtFunc: ptFuncTypeDefs.map(r => \"not \" + r)\n \n // uh oh, triple nested loop\n phenomenonDefs.add(null).each phenomDef =>\n do \n quantityDefs.add(null).each qtyDef =>\n do\n ptFuncTypeDefs.add(null).each funcTypeDef =>\n do\n tags: [\"point\"]\n dis: []\n \n if (phenomDef != null) \n do\n tags = tags.add(phenomDef)\n dis = dis.add(phenomDef)\n end\n else\n tags = tags.addAll(excludePhenom)\n \n if (qtyDef != null)\n do\n tags = tags.add(qtyDef)\n dis = dis.add(qtyDef)\n end\n else\n tags = tags.addAll(excludeQty)\n \n if (funcTypeDef != null)\n do\n tags = tags.add(funcTypeDef)\n dis = dis.add(funcTypeDef)\n end\n else\n tags = tags.addAll(excludePtFunc)\n \n \n curDict: {\n dis: dis.concat(\"-\"), \n pointFunctionType: funcTypeDef, \n quantity: qtyDef,\n phenomenon: phenomDef,\n pointCount: readCount(parseFilter(tags.concat(\" and \")))\n }\n \n uniqueList = uniqueList.add(curDict)\n end\n end\n end\n \n if (showEmpty)\n return uniqueList\n \n return uniqueList.findAll(v=> v->pointCount > 0)\nend",,,,,,,,,,,,,,,,,,,,,,,,,2020-02-06T01:31:41.738Z ,^func:unit,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Given a number return its unit string or null.\nIf the val is null, then return null.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"unit",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:unitdb,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Return the installed unit database as Grid with following columns:\n - quantity: dimension of the unit\n - name: full name of the unit\n - symbol: the abbreviated Unicode name of the unit\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"unitdb",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:unitsEq,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Return if the two numbers have the same unit. If either\nof the numbers if null return false.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"unitsEq",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:upper,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Convert a char number or str to upper case\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"upper",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:uriBasename,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Get the basename (last name in path without extension) of a Uri as a string.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"uriBasename",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:uriDecode,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Parse an ASCII percent encoded string into a Uri according to RFC 3986.\nAll %HH escape sequences are translated into octects, and then the octect\nsequence is UTF-8 decoded into a Str. The '+' character in the query section\nis unescaped into a space. If checked if true then throw ParseErr if the\nstring is a malformed URI or if not encoded correctly, otherwise return\nnull. Use `parseUri` to parse from standard form. See `sys::Uri` for\na detailed discussion on standard and encoded forms.\n\nExamples:\n \"foo bar\".parseUri >> `foo bar`\n \"foo%20bar\".uriDecode >> `foo bar`\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"uriDecode",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:uriEncode,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Return the percent encoded string for this Uri according to RFC 3986.\nEach section of the Uri is UTF-8 encoded into octects and then percent\nencoded according to its valid character set. Spaces in the query\nsection are encoded as '+'.\n\nExamples:\n `foo bar`.uriEncode >> \"foo%20bar\"\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"uriEncode",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:uriExt,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Get the URI extension of a Uri as a string or null.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"uriExt",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:uriHost,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Get the host Uri as a string or null\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"uriHost",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:uriIsDir,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Return if the URI path ends in a slash.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"uriIsDir",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:uriName,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Get the name Str of a Uri (last item in path).\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"uriName",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:uriPath,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Get the path segments of a Uri as a list of Strs.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"uriPath",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:uriPathStr,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Get the path a Uri as a string.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"uriPathStr",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:uriPort,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Get the port of a Uri as a Number or null\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"uriPort",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:uriScheme,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Get the scheme of a Uri as a string or null\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"uriScheme",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:userActivity,,,,,,,,,,,,,,,,,,,,,,,,,,"ui::activity",,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:user,,,,,,,,,,,,"userActivity",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,M,,,,,M,,,,,,,,,,,,,,,,,,,,,,, ,^func:userAppDefs,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:user,,,,,,,,,,,,"userAppDefs",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,M,,,,,,,,,,,,,,,,,,,,,,, ,^func:userChangeLocale,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:user,,,,,,,,,,,,"userChangeLocale",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:userChangePassword,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:user,,,,,,,,,,,,"userChangePassword",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:userCur,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Read user rec Dict for current session user\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:user,,,,,,,,,,,,"userCur",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:userDelete,,,,,,,,,,,,,{icon:"warn" disKey:"ui::userDeleteConfirm" detailsKey:"ui::userDeleteConfirmDetails"},,,,,,,,,,,,,"ui::delete",,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:user,,,,,,,,,,,,"userDelete",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,M,,,,,M,,,,,,,,,,,,,,,,,,,,,,, ,^func:userEdit,,,,,,,,,,,,,,,,,,,,,,,,,,"ui::edit",,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:user,,,,,,,,,,,,"userEdit",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,M,,,,,M,,,,,,,,,,,,,,,,,,,,,,, ,^func:userIsProjAccessible,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Return if the given user has access to the project as configured\nby `projAccessFilter`. The user must be a Dict and the projName\nmust be a Str name. Also see `skyarc::User.isProjAccessible`.\nRequires su permission.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:user,,,,,,,,,,,,"userIsProjAccessible",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,M,,,,,,,,,,,,,,,,,,,,,,, ,^func:userLastLogin,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Get information about the last successful login for the user with the given\n'username'. The Dict will contains the following tags:\n - ts: the timestamp of the last login\n - remoteAddr: the remote IP address the user logged in from\n - userAgent: the user-agent used to login (if known)\n\nReturn 'null' if no login information is found.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:user,,,,,,,,,,,,"userLastLogin",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,M,,,,,,,,,,,,,,,,,,,,,,, ,^func:userNew,,,,,,,,,,,,,,,,,,,,,,,,,,"ui::new",,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:user,,,,,,,,,,,,"userNew",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,M,,,,,,,,,,,,,,,,,,,,,,, ,^func:userRead,,M,,,,,,,,,,,,,,,,,,,,,,,,,,"Read a rec Dict from the user db by filter. If context user is not\nsu, then the user being read must be accessible to the current\ncontext project.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:user,,,,,,,,,,,,"userRead",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:userReadAll,,M,,,,,,,,,,,,,,,,,,,,,,,,,,"Read a Grid of recs from the user db by filter. If the context user\nis not su, then only users with access to the to the current\ncontext project are returned.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:user,,,,,,,,,,,,"userReadAll",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:userReadById,,M,,,,,,,,,,,,,,,,,,,,,,,,,,"Read a rec Dict from the user db by id. If context user is not\nsu, then the user being read must be accessible to the current\ncontext project.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:user,,,,,,,,,,,,"userReadById",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:userSetPassword,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Update password of the given user.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:user,,,,,,,,,,,,"userSetPassword",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,M,,,,,,,,,,,,,,,,,,,,,,, ,^func:userTopics,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:user,,,,,,,,,,,,"userTopics",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,M,,,,,,,,,,,,,,,,,,,,,,, ,^func:validateFilter,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Raise an exception if string is not valid filter\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"validateFilter",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:validateLicId,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"validateLicId",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:validateNodeId,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"validateNodeId",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:validateNodeIdStr,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:cluster,,,,,,,,,,,,"validateNodeIdStr",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:validateNodePubKey,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:cluster,,,,,,,,,,,,"validateNodePubKey",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:validateNodeUri,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:cluster,,,,,,,,,,,,"validateNodeUri",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:validateNotBlank,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Raise an exception if string is blank\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"validateNotBlank",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:validateProjId,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"validateProjId",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:validateProjName,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"validateProjName",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:validateReplicaId,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"validateReplicaId",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:validateSubnetId,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"validateSubnetId",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:validateTagName,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Raise an exception if string is not a validate tag name\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"validateTagName",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:validateUsername,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Raise an excpetion if string is not a validate username\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"validateUsername",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:vals,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Get the list of values used by a given dict\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"vals",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:views,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"views",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:vizReloadEnv,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:ui,,,,,,,,,,,,"vizReloadEnv",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,M,,,,,,,,,,,,,,,,,,,,,,, ,^func:vizStatusStyleTest,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:ui,,,,,,,,,,,,"vizStatusStyleTest",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:watchAdd,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Add a grid of recs to an existing watch and return the grid passed in.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"watchAdd",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:watchClose,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Close an open watch by id. If the watch does not exist or\nhas expired then this is a no op. Also see `skyarcd::Watch.close`\nand `docSkySpark::Watches#axon`.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"watchClose",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:watchFeed,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Create a watch feed on a set of Folio records and return initial grid\nTODO: subject to change\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"watchFeed",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:watchOpen,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Open a new watch on a grid of records. The 'dis' parameter\nis used for the watch's debug display string. Update and return\nthe grid with a meta 'watchId' tag. Also see `skyarcd::Proj.watchOpen`\nand `docSkySpark::Watches#axon`.\n\nExample:\n readAll(myPoints).watchOpen(\"MyApp|Points\")\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"watchOpen",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:watchPoll,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Poll an open watch and return all the records which have changed\nsince the last poll. Note that this grid does not have display\nstrings for Ref tags. Raise exception if watchId doesn't exist\nor has expired. Also see `skyarcd::Watch.poll` and\n`docSkySpark::Watches#axon`.\n",,,,,,,,,,,,,,,M,,"Watch poll cov or refresh",,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"watchPoll",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:watchRemove,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Remove a grid of recs from an existing watch and return grid passed in.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"watchRemove",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:watchSub,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Haystack [watchSub op]`docSkySpark::Ops#watchSub`\n",,,,,,,,,,,,,,,M,,"Watch subscription",,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"watchSub",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:watchUnsub,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Haystack [watchUnsub op]`docSkySpark::Ops#watchSub`\n",,,,,,,,,,,,,,,M,,"Watch unsubscription",,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"watchUnsub",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:weatherDebugReqs,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:weather,,,,,,,,,,,,"weatherDebugReqs",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:weatherDebugSyncs,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:weather,,,,,,,,,,,,"weatherDebugSyncs",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:weatherDegreeDays,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:weather,,,,,,,,,,,,"weatherDegreeDays",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:weatherFeedPoints,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:weather,,,,,,,,,,,,"weatherFeedPoints",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:weatherForecast,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:weather,,,,,,,,,,,,"weatherForecast",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:weatherForecastChart,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:weather,,,,,,,,,,,,"weatherForecastChart",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:weatherHisMap,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:weather,,,,,,,,,,,,"weatherHisMap",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:weatherHistorical,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:weather,,,,,,,,,,,,"weatherHistorical",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:weatherNew,,M,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:weather,,,,,,,,,,,,"weatherNew",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:weatherReadLocs,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Search for matching weather stations given a city name.\nResulting grid contains the following columns if available:\n - `dis`: full display name to use for prompt\n - 'disRec': best display name for weather rec (city, state, country)\n - `geoCity`: city name of station\n - `geoState`: region or US state code\n - `geoCountry`: ISO 3166-1 two letter code\n - `geoCoord`: longitude,latitude of station/city\n - `tz`: best guess for timezone\n\nSide effects:\n - performs blocking network IO\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:weather,,,,,,,,,,,,"weatherReadLocs",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:weatherSunriseTime,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Get sunrise for date and location.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:weather,,,,,,,,,,,,"weatherSunriseTime",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:weatherSunsetTime,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Get sunset for date and location.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:weather,,,,,,,,,,,,"weatherSunsetTime",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:weatherSyncHis,,M,,,,,,,,,,,,,,,,,,,,,,,,,,"Import the latest historical data from the weather\nweb service to the local history database. The weathers\nparameter must be `weather` recs in any format suppored\nby `toRecList`:\n - Ref or Ref[]\n - Dict/Dict[]\n - Grid\n\nIf the range is unspecified, then an attempt is made to synchronize\nany data after 'hisEnd' of each `weatherPoint` (last timestamp read).\nOtherwise must be a value supported by `toDateSpan`.\n\nThis method is designed to be run in the context of a job via\nthe `ext-job::doc`. However note that the job must **not** define\nthe 'jobSchedule' tag. If an attempt is made to run this function\nusing a scheduled job, then an exception is raised. Instead of\nusing this func, ongoing his sync for weather is controlled\nby the `weatherAutoSyncHis` tag.\n\nSide effects:\n - performs blocking network IO\n - updates `weatherPoint` record with history data\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:weather,,,,,,,,,,,,"weatherSyncHis",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:weatherTrash,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:weather,,,,,,,,,,,,"weatherTrash",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:weekOfYear,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Given a DateTime or Date, return the week number of the year as a\nnumber between 1 and 53 using the given start of week weekday as\nnumber 0-6 (defaults start of week for current locale).\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"weekOfYear",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:weekday,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Get weekday as integer from 0 to 6 of Date or DateTime,\nwhere 0 indicates Sunday and 6 indicates Saturday\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"weekday",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:worksheetToAxon,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:ui,,,,,,,,,,,,"worksheetToAxon",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:xq,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Construct new `skyarcd::XQuery` instance. Options:\n - 'timeout': timeout to use for network calls to remote nodes\n - 'useReplicas': marker tag to enable replica reads\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:xquery,,,,,,,,,,,,"xq",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:xqDefine,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Define a variable available to subsequent Axon expressions. This\nprovides an easy way to marshall data across the cluster without\nencoding data to an Axon expression. See `skyarcd::XQuery.define`.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:xquery,,,,,,,,,,,,"xqDefine",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:xqEval,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Evaluate an Axon expr in each project - see `skyarcd::XQuery.eval`\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:xquery,,,,,,,,,,,,"xqEval",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:xqExecute,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Execute the XQuery and return results\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:xquery,,,,,,,,,,,,"xqExecute",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:xqFindAll,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Filter the previous step using an Axon expr - see `skyarcd::XQuery.findAll`\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:xquery,,,,,,,,,,,,"xqFindAll",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:xqFlatMap,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Map the previous step to zero or more Dicts using an Axon expr - see `skyarcd::XQuery.flatMap`\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:xquery,,,,,,,,,,,,"xqFlatMap",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:xqHisRead,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Read point history data - see `skyarcd::XQuery.hisRead`\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:xquery,,,,,,,,,,,,"xqHisRead",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:xqHisRollup,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Rollup history data - see `skyarcd::XQuery.hisRollup`\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:xquery,,,,,,,,,,,,"xqHisRollup",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:xqHisRollupAuto,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Rollup history data - see `skyarcd::XQuery.hisRollupAuto`\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:xquery,,,,,,,,,,,,"xqHisRollupAuto",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:xqMap,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Map the previous step using an Axon expr - see `skyarcd::XQuery.map`\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:xquery,,,,,,,,,,,,"xqMap",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:xqMapToHis,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:xquery,,,,,,,,,,,,"xqMapToHis",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:xqPing,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:xquery,,,,,,,,,,,,"xqPing",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,M,,,,,,,,,,,,,,,,,,,,,,, ,^func:xqPingX,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:xquery,,,,,,,,,,,,"xqPingX",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,M,,,,,,,,,,,,,,,,,,,,,,, ,^func:xqPipe,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:xquery,,,,,,,,,,,,"xqPipe",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:xqPivot,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Transform previous step into pivot table - see `skyarcd::XQuery.pivot`\nNote: column names and meta are subject to change.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:xquery,,,,,,,,,,,,"xqPivot",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:xqProjs,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Restrict query to given project name(s) - see `skyarcd::XQuery.projs`.\nAlso see `navProjNames` to restrict a query to navigable projects.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:xquery,,,,,,,,,,,,"xqProjs",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:xqReadAll,,,,,,,,,,,,,,,,,,,,,,,,,,,," Read recs by filter - see `skyarcd::XQuery.readAll`\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:xquery,,,,,,,,,,,,"xqReadAll",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:xqReadAllList,,,,,,,,,,,,,,,,,,,,,,,,,,,," Read recs by filter - see `skyarcd::XQuery.readAllList`\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:xquery,,,,,,,,,,,,"xqReadAllList",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:xqReadByIds,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Read recs by ids - see `skyarcd::XQuery.readByIds`\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:xquery,,,,,,,,,,,,"xqReadByIds",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:xqReadByIdsList,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Read recs by ids - see `skyarcd::XQuery.readByIds`\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:xquery,,,,,,,,,,,,"xqReadByIdsList",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:xqTestSleep,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:xquery,,,,,,,,,,,,"xqTestSleep",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,M,,,,,,,,,,,,,,,,,,,,,,, ,^func:xqTimeout,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Set timeout for network calls to remote nodes - see `skyarcd::XQuery.timeout`.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:xquery,,,,,,,,,,,,"xqTimeout",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:xqTrace,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Execute the XQuery and return debug tracing\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:xquery,,,,,,,,,,,,"xqTrace",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:xqUseReplicas,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Route to replicas instead of master - see `skyarcd::XQuery.useReplicas`.\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:xquery,,,,,,,,,,,,"xqUseReplicas",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:xstr,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"xstr",,,M,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:year,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Get year as integer such as 2010 from date or datetime\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"year",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^func:yesterday,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Return yesterday's Date according to context's time zone\n",,,,,,,,,,,,,,,M,,,,,,,,,"func",,,,[^func],,,^lib:core,,,,,,,,,,,,"yesterday",,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, @p:demo:r:25aa2aba-0c8d101e "zoneTempMonth",^func:zoneTempMonth,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,,,,,,,,^lib:proj_demo,,,,,,,,,,,,"zoneTempMonth",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"// Sample zone temp 15min data for Aug-2105\n() => do\n hisStart: dateTime(2015-08-01, 0:00)\n hisEnd: dateTime(2015-09-01, 0:00)\n ts: hisStart - 15min\n g: ioReadCsv(`io/zoneTempMonth.csv`).map r => do\n ts = ts + 15min\n {ts: ts, v0: parseNumber(r->temp).as(\"°F\")}\n end\n g.addColMeta(\"v0\", {dis: \"Zone Temp Sample\"})\n .addMeta({hisStart: hisStart, hisEnd: hisEnd, view:\"chart\"})\nend",,,,,,,,,,,,,,,,,,,,,,,,,2020-01-09T18:17:34.216Z ,^gas,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Substance with neither definite volume nor shape",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^fluid],,,^lib:phScience,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`https://en.wikipedia.org/wiki/Gas`,, ,^gasHeating,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Heating by the combustion of natural gas",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^heatingProcessType],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,[^naturalGas],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^gasoline,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Petroleum derived liquid used as a fuel source",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^liquid],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`https://en.wikipedia.org/wiki/Gasoline`,, ,^geoAddr,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Free form street address",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^str],,,^lib:ph,["LintStr"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[^geoPlace],,,,,,,,,,,,,,,,,,,,, ,^geoCity,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Geographic city or locality name",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^str],,,^lib:ph,["LintStr"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[^geoPlace],,,,,,,,,,,,,,,,,,,,, ,^geoCoord,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Geographic coordinate as 'C(latitude,longitude)'",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^coord],,,^lib:ph,["LintCoord"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[^geoPlace],,,,,,,,,,,,,,,,,,,,, ,^geoCountry,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Geographic country as [ISO 3166-1]`http://en.wikipedia.org/wiki/ISO_3166-1`\ntwo letter code",,,,,,,,"- AF: Afghanistan\n- AX: Aland Islands\n- AL: Albania\n- DZ: Algeria\n- AS: American Samoa\n- AD: Andorra\n- AO: Angola\n- AI: Anguilla\n- AQ: Antarctica\n- AG: Antigua and Barbuda\n- AR: Argentina\n- AM: Armenia\n- AW: Aruba\n- AU: Australia\n- AT: Austria\n- AZ: Azerbaijan\n- BS: Bahamas\n- BH: Bahrain\n- BD: Bangladesh\n- BB: Barbados\n- BY: Belarus\n- BE: Belgium\n- BZ: Belize\n- BJ: Benin\n- BM: Bermuda\n- BT: Bhutan\n- BO: Bolivia, Plurinational State of\n- BO: Bolivia\n- BA: Bosnia and Herzegovina\n- BA: Bosnia\n- BA: Herzegovina\n- BW: Botswana\n- BV: Bouvet Island\n- BR: Brazil\n- IO: British Indian Ocean Territory\n- BN: Brunei Darussalam\n- BG: Bulgaria\n- BF: Burkina Faso\n- BI: Burundi\n- KH: Cambodia\n- CM: Cameroon\n- CA: Canada\n- CV: Cape Verde\n- KY: Cayman Islands\n- CF: Central African Republic\n- TD: Chad\n- CL: Chile\n- CN: China\n- CX: Christmas Island\n- CC: Cocos (keeling) Islands\n- CC: Cocos\n- CO: Colombia\n- KM: Comoros\n- CG: Congo\n- CD: Congo, the Democratic Republic of the\n- CK: Cook Islands\n- CR: Costa Rica\n- CI: Cote D'ivoire\n- HR: Croatia\n- CU: Cuba\n- CY: Cyprus\n- CZ: Czech Republic\n- DK: Denmark\n- DJ: Djibouti\n- DM: Dominica\n- DO: Dominican Republic\n- EC: Ecuador\n- EG: Egypt\n- SV: El Salvador\n- GQ: Equatorial Guinea\n- ER: Eritrea\n- EE: Estonia\n- ET: Ethiopia\n- FK: Falkland Islands (malvinas)\n- FK: Falkland Islands\n- FO: Faroe Islands\n- FJ: Fiji\n- FI: Finland\n- FR: France\n- GF: French Guiana\n- PF: French Polynesia\n- TF: French Southern Territories\n- GA: Gabon\n- GM: Gambia\n- GE: Georgia\n- DE: Germany\n- GH: Ghana\n- GI: Gibraltar\n- GR: Greece\n- GL: Greenland\n- GD: Grenada\n- GP: Guadeloupe\n- GU: Guam\n- GT: Guatemala\n- GG: Guernsey\n- GN: Guinea\n- GW: Guinea-bissau\n- GY: Guyana\n- HT: Haiti\n- HM: Heard Island and Mcdonald Islands\n- VA: Holy See (vatican City State)\n- VA: Vatican\n- HN: Honduras\n- HK: Hong Kong\n- HU: Hungary\n- IS: Iceland\n- IN: India\n- ID: Indonesia\n- IR: Iran, Islamic Republic of\n- IR: Iran\n- IQ: Iraq\n- IE: Ireland\n- IM: Isle of Man\n- IL: Israel\n- IT: Italy\n- JM: Jamaica\n- JP: Japan\n- JE: Jersey\n- JO: Jordan\n- KZ: Kazakhstan\n- KE: Kenya\n- KI: Kiribati\n- KP: Korea, Democratic People's Republic of\n- KR: Korea, Republic of\n- KR: Korea\n- KW: Kuwait\n- KG: Kyrgyzstan\n- LA: Lao People's Democratic Republic\n- LA: Lao\n- LV: Latvia\n- LB: Lebanon\n- LS: Lesotho\n- LR: Liberia\n- LY: Libyan Arab Jamahiriya\n- LI: Liechtenstein\n- LT: Lithuania\n- LU: Luxembourg\n- MO: Macao\n- MK: Macedonia, the Former Yugoslav Republic of\n- MK: Macedonia\n- MG: Madagascar\n- MW: Malawi\n- MY: Malaysia\n- MV: Maldives\n- ML: Mali\n- MT: Malta\n- MH: Marshall Islands\n- MQ: Martinique\n- MR: Mauritania\n- MU: Mauritius\n- YT: Mayotte\n- MX: Mexico\n- FM: Micronesia, Federated States of\n- FM: Micronesia\n- MD: Moldova, Republic of\n- MD: Moldova\n- MC: Monaco\n- MN: Mongolia\n- ME: Montenegro\n- MS: Montserrat\n- MA: Morocco\n- MZ: Mozambique\n- MM: Myanmar\n- NA: Namibia\n- NR: Nauru\n- NP: Nepal\n- NL: Netherlands\n- AN: Netherlands Antilles\n- NC: New Caledonia\n- NZ: New Zealand\n- NI: Nicaragua\n- NE: Niger\n- NG: Nigeria\n- NU: Niue\n- NF: Norfolk Island\n- MP: Northern Mariana Islands\n- NO: Norway\n- OM: Oman\n- PK: Pakistan\n- PW: Palau\n- PS: Palestinian Territory, Occupied\n- PS: Palestine\n- PA: Panama\n- PG: Papua New Guinea\n- PY: Paraguay\n- PE: Peru\n- PH: Philippines\n- PN: Pitcairn\n- PL: Poland\n- PT: Portugal\n- PR: Puerto Rico\n- QA: Qatar\n- RE: Reunion\n- RO: Romania\n- RU: Russian Federation\n- RW: Rwanda\n- BL: Saint Barthelemy\n- SH: Saint Helena, Ascension and Tristan Da Cunha\n- SH: Saint Helena\n- KN: Saint Kitts and Nevis\n- LC: Saint Lucia\n- MF: Saint Martin\n- PM: Saint Pierre and Miquelon\n- VC: Saint Vincent and the Grenadines\n- WS: Samoa\n- SM: San Marino\n- ST: Sao Tome and Principe\n- SA: Saudi Arabia\n- SN: Senegal\n- RS: Serbia\n- SC: Seychelles\n- SL: Sierra Leone\n- SG: Singapore\n- SK: Slovakia\n- SI: Slovenia\n- SB: Solomon Islands\n- SO: Somalia\n- ZA: South Africa\n- GS: South Georgia and the South Sandwich Islands\n- ES: Spain\n- LK: Sri Lanka\n- SD: Sudan\n- SR: Suriname\n- SJ: Svalbard and Jan Mayen\n- SZ: Swaziland\n- SE: Sweden\n- CH: Switzerland\n- SY: Syrian Arab Republic\n- TW: Taiwan, Province of China\n- TW: Taiwan\n- TJ: Tajikistan\n- TZ: Tanzania, United Republic of\n- TZ: Tanzania\n- TH: Thailand\n- TL: Timor-leste\n- TG: Togo\n- TK: Tokelau\n- TO: Tonga\n- TT: Trinidad and Tobago\n- TN: Tunisia\n- TR: Turkey\n- TM: Turkmenistan\n- TC: Turks and Caicos Islands\n- TV: Tuvalu\n- UG: Uganda\n- UA: Ukraine\n- AE: United Arab Emirates\n- GB: United Kingdom\n- GB: England\n- GB: Britain\n- GB: Great Britain\n- US: United States\n- US: United States of America\n- US: USA\n- UM: United States Minor Outlying Islands\n- UY: Uruguay\n- UZ: Uzbekistan\n- VU: Vanuatu\n- EE: Vatican City State See Holy\n- VE: Venezuela, Bolivarian Republic of\n- VE: Venezuela\n- VN: Viet Nam\n- VG: Virgin Islands, British\n- VI: Virgin Islands, U.S.\n- WF: Wallis and Futuna\n- EH: Western Sahara\n- YE: Yemen\n- ZM: Zambia\n- ZW: Zimbabwe",,,,,,,,,,,,,,,,,,,,[^str],,,^lib:ph,["LintStr"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[^geoPlace],,,,,,,,,,,,,,,,,,,,, ,^geoCounty,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Geographic subdivision of US state",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^str],,,^lib:ph,["LintStr"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[^geoPlace],,,,,,,,,,,,,,,,,,,,, ,^geoElevation,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Elevation above sea-level of the location",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^number],,,^lib:ph,["LintNumber"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[^geoPlace],,,,,,,,,,,,,,,,,,,,, ,^geoPlace,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Geographic place",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^marker],,,^lib:ph,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^geoPostalCode,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Geographic postal code; for US this is a five digit zip code",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^str],,,^lib:ph,["LintStr"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[^geoPlace],,,,,,,,,,,,,,,,,,,,, ,^geoState,,,,,,,,,,,,,,,,,,,,,,,,,,,,"State or province name; for US this is two letter state code. May be\nused to model adminstrative area betwen the geoCity and geoCountry level.",,,,,,,,"- AL: Alabama\n- AK: Alaska\n- AS: American Samoa\n- AZ: Arizona\n- AR: Arkansas\n- CA: California\n- CO: Colorado\n- CT: Connecticut\n- DE: Delaware\n- DC: District of Columbia\n- FM: Federated States of Micronesia\n- FL: Florida\n- GA: Georgia\n- GU: Guam\n- HI: Hawaii\n- ID: Idaho\n- IL: Illinois\n- IN: Indiana\n- IA: Iowa\n- KS: Kansas\n- KY: Kentucky\n- LA: Louisiana\n- ME: Maine\n- MH: Marshall Islands\n- MD: Maryland\n- MA: Massachusetts\n- MI: Michigan\n- MN: Minnesota\n- MS: Mississippi\n- MO: Missouri\n- MT: Montana\n- NE: Nebraska\n- NV: Nevada\n- NH: New Hampshire\n- NJ: New Jersey\n- NM: New Mexico\n- NY: New York\n- NC: North Carolina\n- ND: North Dakota\n- MP: Northern Mariana Islands\n- OH: Ohio\n- OK: Oklahoma\n- OR: Oregon\n- PW: Palau\n- PA: Pennsylvania\n- PR: Puerto Rico\n- RI: Rhode Island\n- SC: South Carolina\n- SD: South Dakota\n- TN: Tennessee\n- TX: Texas\n- UT: Utah\n- VA: Virginia\n- VI: Virgin Islands\n- VT: Vermont\n- WA: Washington\n- WV: West Virginia\n- WI: Wisconsin\n- WY: Wyoming",,,,,,,,,,,,,,,,,,,,[^str],,,^lib:ph,["LintStr"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[^geoPlace],,,,,,,,,,,,,,,,,,,,, ,^geoStreet,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Geographic street address and name",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^str],,,^lib:ph,["LintStr"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[^geoPlace],,,,,,,,,,,,,,,,,,,,, ,^grid,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Two dimension table of columns and rows",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^val],,,^lib:ph,["LintGrid"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^ground,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Related to the surface of the earth",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^marker],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^ground-floor,,,,,,,,"space\nequip\npoint",,,,,,,,,,,,,,,,,,,,"Floor at ground level. In North America this is typically called\nthe first floor, but in Europe its often labelled as floor zero.\nIf `floorNum` is defined, then it must be set to zero.",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^floor],,,^lib:phIoT,["LintMarker","LintSpace"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`https://en.wikipedia.org/wiki/Storey`,, ,^halign,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Horizontal layout alignment",,,,,,,,,,,,,,,,,,,,,,,,,,"ui::HalignInput",,[^str],,,^lib:core,["LintStr"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^haystack,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Haystack HTTP protocol for exchanging tagged data",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^protocol],,,^lib:phIct,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`https://en.wikipedia.org/wiki/Communication_protocol`,, ,^haystackApi,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Function which is a published Hasytack REST API op",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^marker],,,^lib:core,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^haystackConn,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Haystack connector to a Haystack REST API server.",,,,,,,,,,,,,,,,,,,,,,,,"haystack",,,,[^conn],,,^lib:haystack,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^haystackConnRef,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Used on a proxy point to reference its parent `haystackConn`",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^ref],,,^lib:haystack,["LintRef"],,,,,,,,,,,,,,,,^haystackConn,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[^haystackPoint],,,,,,,,,,,,,,,,,,,,, ,^haystackCur,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Used on a haystack proxy point to store the id of the entity in the\nremote system used to read and watch `curVal`.",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^str],,,^lib:haystack,["LintStr"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[^haystackPoint],,,,,,,,,,,,,,,,,,,,, ,^haystackHis,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Used on a haystack proxy point object to store the id of the historized\npoint in the remote system used to sync history data.",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^str],,,^lib:haystack,["LintStr"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[^haystackPoint],,,,,,,,,,,,,,,,,,,,, ,^haystackPoint,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Point which synchronizes data via a Haystack connector.",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^connPoint],,,^lib:haystack,["LintMarker","LintPoint"],,,,,,,,,,,,,,,,,,,,,,,,^pointFunctionType,^quantity,^phenomenon,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^haystackPollFreq,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Applied to 'haystackConn' to tune the duration between watch polls.\nIf not configured it defaults to 1sec.",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^duration],,,^lib:haystack,["LintNumber"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[^haystackConn],,,,,,,,,,,,,,,,,,,,, ,^haystackWrite,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Used on a haystack proxy point to store the id of the entity in the\nremote system used to write `writeVal`.",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^str],,,^lib:haystack,["LintStr"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[^haystackPoint],,,,,,,,,,,,,,,,,,,,, ,^haystackWriteLevel,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Number between 1 and 16 used with `haystackWrite` to determine which\npriority level of the remote system is written to.",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^int],,,^lib:haystack,["LintNumber"],,16,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[^haystackPoint],,,,,,,,,,,,,,,,,,,,, ,^header,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Pipe used as central connection or manifold for other piping runs.",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^pipeSectionType],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^heat,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Point used to command equipment heating",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^marker],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^heatExchanger,,,,,,,,"equip\npoint",,,,,,,,,,,,,,,,,,,,"Equipment to transfer heat between two working fluids.",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^equip],,,^lib:phIoT,["LintEquip","LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`https://en.wikipedia.org/wiki/Heat_exchanger`,, ,^heatPump,,,^ahuZoneDeliveryType,,,,,"thermostat equip\ndischarge duct equip\nexhaust duct equip\nmixed duct equip\noutside duct equip\nreturn duct equip\nthermostat equip\nfreezeStat sensor point\nheatWheel cmd point\nfaceBypass cmd point\nbypass damper cmd point",,,,,,,,^coolingProcessType,^air,,,,,^air,,,,,,"Heat pump: An air handling equipment which employs a vapor compression\ncycle with a reversing valve to provide heating or cooling to a space.",,,^ductConfigType,^ductDeckType,,,,,,,,,,,,,,^heatingProcessType,^air,,,,^air,"fan",,,,[^airHandlingEquip],,,^lib:phIoT,["LintEquip","LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,^air,,,`https://en.wikipedia.org/wiki/Heat_pump`,, ,^heatWheel,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Boolean point indicating command state of AHU's heat wheel.",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^marker],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`https://en.wikipedia.org/wiki/Thermal_wheel`,, ,^heating,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Heating mode or process",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^marker],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^heatingCoil,,,,,,,,"stage:1 heat enable cmd point\nhot water heat valve cmd point\nsteam heat valve cmd point",[^ductDeckType,^ductSectionType],,,,,,,,,,,,,,,,,,,"Coil used to heat air.",,,,,,,,,,,,,,,,,,^heatingProcessType,^air,,,,,,,,,[^coil],,,^lib:phIoT,["LintEquip","LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`https://en.wikipedia.org/wiki/Heat_exchanger#HVAC_air_coils`,, ,^heatingProcess,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Processed used to heat a substance",,,,,,,,,,,,,,,,,,,,,,,,,,"ui::ChoiceInput",,[^choice],,,^lib:phIoT,["LintSymbol"],,,,,,,,,,,,,,,,^heatingProcessType,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^heatingProcessType,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Processed used to heat a substance",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^process],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^heats,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Equipment heats a substance.",,,,,,,,,,,,,,,,,,,,,,,,,,"ui::ChoiceInput",,[^equipFunction],,,^lib:phIoT,["LintSymbol"],,,,,,,,,,,,,,,,^substance,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^help,,,,,,,,,,,,,,,,,,,,,,,,,,,,"End user documentation. The string value should be formatted in fandoc.\nNote that 'help' is targetted for end users versus 'doc' which is\nreference documentation targetted for developers. For example in a\nrule, the 'help' tag is displayed directly to users in the UI.",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^str],,,^lib:core,["LintStr"],,,,,,,,,,M,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[^func,^rule],,,,,,,,,,,,,,,,,,,,, ,^his,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Supports historization of data",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^marker],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[^point],,,,,,,,,,,,,,,,,,,,, ,^his-point,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Historized point with a history log of timestamp/value pairs. Points\nmarked as historized indicate the system can response to queries via\nthe 'hisRead' operation to return a trend log of timestamp/value pairs.\n\nThere are typically two mechanisms for historization:\n - the local system performs the historization by logging the\n point's `curVal` to local storage\n - in overlay systems a downstream device performs the historization\n and the local system synchronizes the history data in batch on\n a periodic basis",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^point],,,^lib:phIoT,["LintMarker","LintPoint"],,,,,,,,,,,,,,,,,,,,,,,,^pointFunctionType,^quantity,^phenomenon,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^hisAppendNA,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Specifies the amount of time after a history point's `hisEnd` that the\n`hisRead` function should append an 'NA'. See [Appending N/A]`doc#appendNA`\nfor details.",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^duration],,,^lib:his,["LintNumber"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[^his-point],,,,,,,,,,,,,,,,,,,,, ,^hisCollectCov,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Enables COV history collection of the `curVal`. The tag value must\nbe Marker to collection on any change. Or if the point is Numeric,\nthen the value may be a Number which indicates the tolerance a point\nmust change before logged.\n\nCOV collection is rate throttled for safety using the following rules:\n - never collected faster than once every 5sec\n - if a numeric with `hisCollectInterval`, then never collect faster\n than 1/10 of the interval or 1min (whichever is lower)\n - if a numeric without `hisCollectInterval`, then never collect\n faster than once a minute\n\nAlso see `doc#hisCollect`.",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^marker,^number],,,^lib:point,["LintMarker","LintMultiKind","LintNumber"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[^his-point],,,,,,,,,,,,,,,,,,,,, ,^hisCollectInterval,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Enables interval history collection of the `curVal`. The value must\nbe a duration Number with a \"sec\", \"min,\" or \"hr\" unit:\n - if secondly, then must be divisible evenly into a 60sec minute\n - if minutely, then must be evenly divisible into a 60min hour\n - if hourly, then must be evenly divisible into a 24hr day\n\nAlso see `doc#hisCollect`.",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^duration],,,^lib:point,["LintNumber"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[^his-point],,,,,,,,,,,,,,,,,,,,, ,^hisCollectWriteFreq,,,,,,,,,,,,,,,,,,,,,,,,,,,,"This tag configures how long to buffer collected history items in\nmemory before flushing them to the historian. If this tag is missing, then\ncollected items are immediately flushed to the historian and to disk. But\nwhen this tag is configured with a duration number, items are be buffered\nin memory and then written to the historian in batch. Batch writes enable\nmore efficient compression of the history data and allows you to tune\nhow often data is fsync'ed to disk.",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^duration],,,^lib:point,["LintNumber"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[^his-point],,,,,,,,,,,,,,,,,,,,, ,^hisConvert,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Conversion to apply when reading history data from connector.\nThe conversion is applied to each item passed to `connExt::ConnPoint.updateHisOk`\nbefore writing to the database. This conversion happens *before* the\n`hisOnWrite` conversion hooks.\nSee `doc#convert`",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^pointConvert],,,^lib:conn,["LintStr"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[^connPoint],,,,,,,,,,,,,,,,,,,,, ,^hisEnd,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Timestamp of newest item in history",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^dateTime],,,^lib:his,["LintDateTime"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[^his-point],,,,,,,M,,,,,,,,,,,,,, ,^hisErr,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Error description when `hisStatus` indicates error condition",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^str],,,^lib:phIoT,["LintStr"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[^his-point],,,,,,,M,,,,,,,,,,,,,, ,^hisFuncReady,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Indicates a function designed to be used directly as a [computed history]`hisFunc`",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^marker],,,^lib:core,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^hisMode,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Indicates the way that history data is collected for a point.",,,,,,,,"- sampled: Data is sampled on a regular interval. The timestamp\n indicates exactly when the sample was taken, and we assume linear\n interpolation between samples.\n- cov: Data is logged when it changes. The means the timestamp\n indicates exactly when it changed (inclusive) and it remains that\n value until the next sample's timestamp (exclusive).\n- consumption: Integral data is sampled on a regular interval and\n logged at the *end* of the interval. The timestamp indicates the\n *end* of the interval. Therefore, the raw data is logged as\n start *exclusive*, end *inclusive*. This is mode is typical for\n consumption meters.",,,,,,,,,,,,,,,,,,,,[^str],,,^lib:phIoT,["LintStr"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[^his-point],,,,,,,,,,,,,,,,,,,,, ,^hisSize,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Approximate number of timestamp/value pairs stored in history",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^int],,,^lib:his,["LintNumber"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[^his-point],,,,,,,M,,,,,,,,,,,,,, ,^hisSrc,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Legacy 2.1 support for function picker in History App",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^marker],,,^lib:core,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^hisStart,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Timestamp of oldest item in history",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^dateTime],,,^lib:his,["LintDateTime"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[^his-point],,,,,,,M,,,,,,,,,,,,,, ,^hisStatus,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Status of point's history collection or synchronization",,,,,,,,"- ok: last sync attempt was successful\n- fault: a configuration problem - see `hisErr`\n- down: a communication or network problem - see `hisErr`\n- disabled: manual disable of the point or parent connector\n- unknown: we don't know anything (usually boot state)\n- pending: sync has been scheduled and is waiting to running\n- syncing: sync is currently running",,,,,,,,,,,,,,,,,,,,[^str],,,^lib:phIoT,["LintStr"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[^his-point],,,,,,,M,,,,,,,,,,,,,, ,^hisTotalized,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Indicates values which are a continuous stream of totalization. History\ndata reads and should be normalized by computing the delta.",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^marker],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[^his-point],,,,,,,,,,,,,,,,,,,,, ,^hot,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Having high degree of heat",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^marker],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^hot-water,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Hot water used for HVAC heating or supply to hot taps",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^water],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`https://en.wikipedia.org/wiki/Water`,, ,^hot-water-boiler,,,,,,,,"hot water leaving pipe equip\nhot water entering pipe equip\nmakeup water entering pipe equip\ncirc pipe equip\noutside duct equip\nflue duct equip",,,,,,,,,,,,,,,,,,,,"Boiler which outputs hot water",,,,,,,,,,,,,,,,,,^heatingProcessType,^hot-water,,,,,,,,,[^boiler],,,^lib:phIoT,["LintEquip","LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,^hot-water,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`https://en.wikipedia.org/wiki/Boiler`,, ,^hot-water-plant,,,,,,,,"hot water boiler equip\n\nhot water bypass pipe equip\nhot water entering pipe equip\nhot water leaving pipe equip\nhot water header pipe equip\nhot water heatExchanger equip\nhot water delta pressure sensor point\nhot water delta flow sensor point\nhot water delta temp sensor point\nhot water mixing valve cmd point\n\nmakeup water entering pipe equip\noutside duct equip\nflue duct equip",,,,,,,,,,,,,,,,,,,,"Plant used to generate hot water for heating",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^plant],,,^lib:phIoT,["LintEquip","LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,^hot-water,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^hotDeck,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Duct carries air for heating",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^ductDeckType],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^hotWaterHeating,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Heating using energy of hot water",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^heatingProcessType],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,[^hot-water],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^hotWaterPlantRef,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Plant which supplies hot water to the entity",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^ref],,,^lib:phIoT,["LintRef"],,,,,,,,,,,,,,,,^hot-water-plant,,,,,,,,,,,,,,,,,^hot-water,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^http,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Hypertext Transfer Protocol which is foundation of the web",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^protocol],,,^lib:phIct,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`https://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol`,, ,^humidifies,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Equipment adds moisture to air to increase humidity.",,,,,,,,,,,,,,,,,,,,,,,,,,"ui::ChoiceInput",,[^equipFunction],,,^lib:phIoT,["LintSymbol"],,,,,,,,,,,,,,,,^air,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^humidity,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Percent relative humidity; measure of moisture in the air",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^quantity],,,^lib:phScience,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,["%RH"],,,,[^air],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^hvac,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Heating, ventilation, and air conditioning",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^marker],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`https://en.wikipedia.org/wiki/HVAC`,, ,^hvac-zone-space,,,,,,,,"// NOTE: this list should be kept in sync with thermostat\nzone air temp sensor point\nzone air temp effective sp point\nzone air temp occ cooling sp point\nzone air temp occ heating sp point\nzone air temp unocc cooling sp point\nzone air temp unocc heating sp point\nzone air temp standby cooling sp point\nzone air temp standby heating sp point\nzone air humidity point\nzone air co2 point",,,,,,,,,,,,,,,,,,,,"Zone related to conditioning of a space's air temperature and quality.",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^zone-space],,,^lib:phIoT,["LintMarker","LintSpace"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^ice,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Water in its solid form",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^solid],,,^lib:phScience,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`https://en.wikipedia.org/wiki/Ice`,, ,^icon,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Icon logical name",,,,,,,,,,,,,,,,,,,,,,,,,,"ui::IconInput",,[^str],,,^lib:core,["LintStr"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^id,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Defines the unique identifier of an entity in system using a Ref value\ntype. The scope of an entity is undefined, but must be unique with a\ngiven system or project. This identifier may be used by other entities\nfor cross-referencing.",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^ref],,,^lib:ph,["LintRef"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[^entity],,,,,,,,,,,,,,,,,,,,, ,^illuminance,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Luminous flux hitting the inside of the sphere at a specific point.\n\nAlso see [ies.org]`https://www.ies.org/definitions/illuminance/`",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^quantity],,,^lib:phScience,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,["lux","footcandle","phot"],,,,[^light],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`https://en.wikipedia.org/wiki/Illuminance`,, ,^imageSize,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Image size in pixels",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^str],,,^lib:core,["LintStr"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[^filetype:svg],,,,,,,,,,,,,,,,,,,,, ,^imap,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Internet Message Access Protocol for retreiving email",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^protocol],,,^lib:phIct,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`https://en.wikipedia.org/wiki/Internet_Message_Access_Protocol`,, ,^imbalance,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Lacking balance",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^marker],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^import,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Received into a system",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^marker],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^inlet,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Duct with air entering an equipment",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^ductSectionType],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^input,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Fantom type qname for `ui::Input` to use for a definition",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^str],,,^lib:core,["LintStr"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^int,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Unitless integer number",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^number],,,^lib:ph,["LintNumber"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^intensity,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Measure of an electromagnetic field",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^marker],,,^lib:phScience,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^irradiance,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Energy received at a surface by area",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^quantity],,,^lib:phScience,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^is,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Defines one or more supertypes of a subtyping relationship.\nSee [Subtyping]`docHaystack::Subtyping` chapter.",,,,,,,,,,,,,,,,,,,,,,,,,,"uiDev::SymbolListInput",,[^association],,,^lib:ph,,,,,,,,,,,,,,,,,^symbol,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[^def],,,,,,,,,,,,,,,,,,,,, ,^isolation,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Actuator used to isolate an equipment from a pipe or ductwork system",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^marker],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^jobSchedule,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Specifies when a job is scheduled using a string format:\n onetime 2010-07-04T12:00:00-04:00 New_York\n every 15min\n every 2hr\n at 00:00\n at 6:00,20:00\n on tue at 16:00\n on sat,sun at 02:00\n on 1,15 at 02:00\n\nSee `ext-job::doc`.",,,,,,,,,,,,,,,,,,,,,,,,,,"ui::JobScheduleInput",,[^str],,,^lib:job,["LintStr"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^kind,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Kind name used before Haystack 4.0 to identity data types",,,,,,,,"- Marker: is-a label\n- Bool: true or false\n- NA: not available\n- Number: floating point with optional unit\n- Str: Unicode string\n- Uri: Universal resource identifier\n- Ref: reference to an entity\n- Date: an ISO 8601 date as year, month, day: 2011-06-07\n- Time: an ISO 8601 time as hour, minute, seconds: 09:51:27.354\n- DateTime: an ISO 8601 timestamp followed by timezone name\n- Coord: geographic coordinate in latitude/longitude formatted as C(lat,lng)\n- XStr: extended string with type name\n- List: ordered sequence\n- Dict: key/value map\n- Grid: two dimensional tabular data collection",,,,,,,,,,,,,,,,,,"ui::KindInput",,[^str],,,^lib:ph,["LintStr"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[^point],,,,,,,,,,,,,,,,,,,,, ,^knx,,,,,,,,,,,,,,,,,,,,,,,,,,,,"KNX protocol commonly used for lighting systems",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^protocol],,,^lib:phIct,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`https://en.wikipedia.org/wiki/KNX_(standard)`,, ,^kpiRule,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Marker tag for a KPI rule type. See `doc#kpiRules`.",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^ruleTypeBase],,,^lib:core,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^leaving,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Pipe conveys fluid out of an equipment",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^pipeSectionType],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^level,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Fill level of a vessel containing a fluid where 0% is empty and 100% is filled",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^quantity],,,^lib:phScience,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,["%"],,,,[^fluid],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^lib,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Library module of symbolic definitions",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^feature],,,^lib:ph,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^lib:alert,,,,,,`https://skyfoundry.com/def/alert/`,,,,,,,,,,,,,,,,,[^lib:ph,^lib:core],,,,,"Alert notification framework",,,,,,,,,,,,,,,,,,,,,,,,"host",,,,[^lib],,,^lib:alert,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,,,"skyarcd::AlertMod",,,,,,,"3.0.23",,,, ,^lib:api,,,,,,`https://skyfoundry.com/def/api/`,,,,,,,,,,,,,,,,,[^lib:ph,^lib:core],,,,,"Haystack HTTP API module",,,,,,,,,,,,,,,,,,,,,,,,"host",,,,[^lib],,,^lib:api,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,,,"skyarcd::ApiMod",,,,,,,"3.0.23",,,, ,^lib:brand,,,,,,`https://skyfoundry.com/def/brand/`,,,,,,,,,,,,,,,,,[^lib:ph,^lib:core],,,,,"Branding assets module",,,,,,,,,,,,,,,,,,,,,,,,"host",,,,[^lib],,,^lib:brand,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,,,"skyarcd::BrandMod",,,,,,,"3.0.23",,,, ,^lib:cluster,,,,,,`https://skyfoundry.com/def/cluster/`,,,,,,,,,,,,,,,,,[^lib:ph,^lib:core],,,,,"Arcbeam cluster management",,,,,,,,,,,,,,,,,,,,,,,,"host",,,,[^lib],,,^lib:cluster,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,,,"clusterMod::StdClusterMod",,,,,,,"3.0.23",,,, ,^lib:conn,,,,,,`https://skyfoundry.com/def/conn/`,,,,,,,,,,,,,,,,,[^lib:ph,^lib:core,^lib:phIoT,^lib:his,^lib:point],,,,,"Connector Extension Framework",,,,,,,,,M,,,,"j",,,,,,,,,,,"plug",,,,[^lib],,,^lib:conn,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"connExt::ConnExt",,,,,,,"3.0.23",,,, ,^lib:core,,,,,,`https://skyfoundry.com/def/core/`,,,,,,,,,,,,,,,,,[^lib:ph],,,,,"Core library module",,,,,,,,,,,,,,,,,,,,,,,,"host",,,,[^lib],,,^lib:core,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,,,"skyarcd::CoreMod",,,,,,,"3.0.23",,,, ,^lib:crypto,,,,,,`https://skyfoundry.com/def/crypto/`,,,,,,,,,,,,,,,,,[^lib:ph,^lib:core],,,,,"Cryptographic certificates and key pair management",,,,,,,,,,,,,,,,,,,,,,,,"host",,,,[^lib],,,^lib:crypto,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,,,"skyarcd::CryptoMod",,,,,,,"3.0.23",,,, ,^lib:debug,,,,,,`https://skyfoundry.com/def/debug/`,,,,,,,,,,,,,,,,,[^lib:ph,^lib:core],,,,,"Debugging utilities",,,,,,,,,,,,,,,,,,,,,,,,"host",,,,[^lib],,,^lib:debug,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,,,"skyarcd::DebugMod",,,,,,,"3.0.23",,,, ,^lib:demo,,,,,,`https://skyfoundry.com/def/demo/`,,,,,,,,,,,,,,,,,[^lib:ph,^lib:core,^lib:phIoT],,,,,"Demo database extension",,,,,,,,,M,,,,"j",,,,,,,,,,,"presentation",,,,[^lib],,,^lib:demo,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"demoExt::DemoExt",,,,,,,"3.0.23",,,, ,^lib:dev,,,,,,`https://skyfoundry.com/def/dev/`,,,,,,,,,,,,,,,,,[^lib:ph,^lib:core],,,,,"Developer tools module",,,,,,,,,,,,,,,,,,,,,,,,"host",,,,[^lib],,,^lib:dev,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,,,"devMod::DevMod",,,,,,,"3.0.23",,,, ,^lib:diag,,,,,,`https://skyfoundry.com/def/diag/`,,,,,,,,,,,,,,,,,[^lib:ph,^lib:core],,,,,"Diagnostics sytem module",,,,,,,,,,,,,,,,,,,,,,,,"host",,,,[^lib],,,^lib:diag,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,,,"skyarcd::DiagMod",,,,,,,"3.0.23",,,, ,^lib:doc,,,,,,`https://skyfoundry.com/def/doc/`,,,,,,,,,,,,,,,,,[^lib:ph,^lib:core],,,,,"Publishes HTML documentation",,,,,,,,,,,,,,,,,,,,,,,,"host",,,,[^lib],,,^lib:doc,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,,,"skyarcd::DocMod",,,,,,,"3.0.23",,,, ,^lib:email,,,,,,`https://skyfoundry.com/def/email/`,,,,,,,,,,,,,,,,,[^lib:ph,^lib:core],,,,,"Outbound email via SMTP management",,,,,,,,,,,,,,,,,,,,,,,,"host",,,,[^lib],,,^lib:email,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,,,"skyarcd::EmailMod",,,,,,,"3.0.23",,,, ,^lib:energy,,,,,,`https://skyfoundry.com/def/energy/`,,,,,,,,,,,,,,,,,[^lib:ph,^lib:core,^lib:phIoT,^lib:his,^lib:hisKit,^lib:equip],,,,,"Energy Extension",,,,,,,,,M,,,,"j",,,,,,,,,,,"bolt",,,,[^lib],,,^lib:energy,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"energyExt::EnergyExt",,,,,,,"3.0.23",,,, ,^lib:equip,,,,,,`https://skyfoundry.com/def/equip/`,,,,,,,,,,,,,,,,,[^lib:ph,^lib:core,^lib:phIoT,^lib:his,^lib:point],,,,,"Equipment Extension",,,,,,,,,M,,,,,,,,,,,,,,,"equip",,,,[^lib],,,^lib:equip,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"equipExt::EquipExt",,,,,,,"3.0.23",,,, ,^lib:geo,,,,,,`https://skyfoundry.com/def/geo/`,,,,,,,,,,,,,,,,,[^lib:ph,^lib:core,^lib:phIoT],,,,,"Geolocation Extension",,,,,,,,,M,,,,,,,,,,,,,,,"puzzle",,,,[^lib],,,^lib:geo,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"geoExt::GeoExt",,,,,,,"3.0.23",,,, ,^lib:haystack,,,,,,`https://skyfoundry.com/def/haystack/`,,,,,,,,,,,,,,,,,[^lib:ph,^lib:core,^lib:phIoT,^lib:conn],,,,,"Haystack Connector Extension",,,,,,,,,M,,,,"j",,,,,,,,,,,"haystack",,,,[^lib],,,^lib:haystack,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"haystackExt::HaystackExt",,,,,,,"3.0.23",,,, ,^lib:his,,,,,,`https://skyfoundry.com/def/his/`,,,,,,,,,,,,,,,,,[^lib:ph,^lib:core,^lib:phIoT],,,,,"Historian Extension",,,,,,,,,M,,,,,,,,,,,,,,,"his",,,,[^lib],,,^lib:his,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"hisExt::HisExt",,,,,,,"3.0.23",,,, ,^lib:hisKit,,,,,,`https://skyfoundry.com/def/hisKit/`,,,,,,,,,,,,,,,,,[^lib:ph,^lib:core,^lib:phIoT,^lib:his],,,,,"Historian Analytics Kit Extension",,,,,,,,,M,,,,,,,,,,,,,,,"his",,,,[^lib],,,^lib:hisKit,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"hisKitExt::HisKitExt",,,,,,,"3.0.23",,,, ,^lib:host,,,,,,`https://skyfoundry.com/def/host/`,,,,,,,,,,,,,,,,,[^lib:ph,^lib:core],,,,,"Host model and settings database",,,,,,,,,,,,,,,,,,,,,,,,"host",,,,[^lib],,,^lib:host,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,,,"skyarcd::HostMod",,,,,,,"3.0.23",,,, ,^lib:http,,,,,,`https://skyfoundry.com/def/http/`,,,,,,,,,,,,,,,,,[^lib:ph,^lib:core],,,,,"HTTP/HTTPS web server module",,,,,,,,,,,,,,,,,,,,,,,,"host",,,,[^lib],,,^lib:http,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,,,"skyarcd::HttpMod",,,,,,,"3.0.23",,,, ,^lib:hvac,,,,,,`https://skyfoundry.com/def/hvac/`,,,,,,,,,,,,,,,,,[^lib:ph,^lib:core,^lib:phIoT,^lib:his,^lib:hisKit,^lib:equip],,,,,"HVAC Extension",,,,,,,,,M,,,,,,,,,,,,,,,"puzzle",,,,[^lib],,,^lib:hvac,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"hvacExt::HvacExt",,,,,,,"3.0.23",,,, ,^lib:install,,,,,,`https://skyfoundry.com/def/install/`,,,,,,,,,,,,,,,,,[^lib:ph,^lib:core],,,,,"Pod installation module",,,,,,,,,,,,,"j",,,,,,,,,,,"host",,,,[^lib],,,^lib:install,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,,,"installMod::InstallMod",,,,,,,"3.0.23",,,, ,^lib:io,,,,,,`https://skyfoundry.com/def/io/`,,,,,,,,,,,,,,,,,[^lib:ph,^lib:core,^lib:phIoT],,,,,"I/O Extension",,,,,,,,,M,,,,,,,,,,,,,,,"puzzle",,,,[^lib],,,^lib:io,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"ioExt::IOExt",,,,,,,"3.0.23",,,, ,^lib:iot,,,,,,`https://skyfoundry.com/def/iot/`,,,,,,,,,,,,,,,,,[^lib:ph,^lib:core,^lib:phIoT],,,,,"Extensions to Project Haystack IoT defs",,,,,,,,,,,,,,,,,,,,,,,,"host",,,,[^lib],,,^lib:iot,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,,,"iotMod::IoTMod",,,,,,,"3.0.23",,,, ,^lib:job,,,,,,`https://skyfoundry.com/def/job/`,,,,,,,,,,,,,,,,,[^lib:ph,^lib:core,^lib:phIoT],,,,,"Job Extension",,,,,,,,,M,,,,,,,,,,,,,,,"job",,,,[^lib],,,^lib:job,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"jobExt::JobExt",,,,,,,"3.0.23",,,, ,^lib:legacy,,,,,,`https://skyfoundry.com/def/legacy/`,,,,,,,,,,,,,,,,,[^lib:ph,^lib:core],,,,,"Classic 2.1 app and functionality support",,,,,,,,,,,,,,,,,,,,,,,,"host",,,,[^lib],,,^lib:legacy,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,,,"legacy::LegacyMod",,,,,,,"3.0.23",,,, ,^lib:lic,,,,,,`https://skyfoundry.com/def/lic/`,,,,,,,,,,,,,,,,,[^lib:ph,^lib:core],,,,,"License management module",,,,,,,,,,,,,,,,,,,,,,,,"host",,,,[^lib],,,^lib:lic,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,,,"skyarcd::LicMod",,,,,,,"3.0.23",,,, ,^lib:lighting,,,,,,`https://skyfoundry.com/def/lighting/`,,,,,,,,,,,,,,,,,[^lib:ph,^lib:core,^lib:phIoT,^lib:his],,,,,"Lighting Extension",,,,,,,,,M,,,,,,,,,,,,,,,"puzzle",,,,[^lib],,,^lib:lighting,,,,,,,,,,,,,,,,,,,,,,,,"lightingExt",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"3.0.23",,,, ,^lib:lint,,,,,,`https://skyfoundry.com/def/lint/`,,,,,,,,,,,,,,,,,[^lib:ph,^lib:core],,,,,"Lint validation module",,,,,,,,,,,,,,,,,,,,,,,,"host",,,,[^lib],,,^lib:lint,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,,,"lintMod::StdLintMod",,,,,,,"3.0.23",,,, ,^lib:log,,,,,,`https://skyfoundry.com/def/log/`,,,,,,,,,,,,,,,,,[^lib:ph,^lib:core],,,,,"Logging engine",,,,,,,,,,,,,,,,,,,,,,,,"host",,,,[^lib],,,^lib:log,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,,,"skyarcd::LogMod",,,,,,,"3.0.23",,,, ,^lib:math,,,,,,`https://skyfoundry.com/def/math/`,,,,,,,,,,,,,,,,,[^lib:ph,^lib:core,^lib:phIoT],,,,,"Math function library",,,,,,,,,M,,,,,,,,,,,,,,,"puzzle",,,,[^lib],,,^lib:math,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"mathExt::MathExt",,,,,,,"3.0.23",,,, ,^lib:mobile,,,,,,`https://skyfoundry.com/def/mobile/`,,,,,,,,,,,,,,,,,[^lib:ph,^lib:core],,,,,"Classic support for the legacy Fresco 2.1 mobile UI",,,,,,,,,,,,,,,,,,,,,,,,"host",,,,[^lib],,,^lib:mobile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,,,"mobile::MobileMod",,,,,,,"3.0.23",,,, ,^lib:nav,,,,,,`https://skyfoundry.com/def/nav/`,,,,,,,,,,,,,,,,,[^lib:ph,^lib:core],,,,,"Support for UI navigation",,,,,,,,,,,,,"j",,,,,,,,,,,"host",,,,[^lib],,,^lib:nav,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,,,"navMod::NavMod",,,,,,,"3.0.23",,,, ,^lib:ph,,,,,,`https://project-haystack.org/def/ph/`,,,,,,,,,,,,,,,,,,,,,,"Project Haystack core definitions",,,,,,,,,,,,,,,,,,,,,,,,"tag",,,,[^lib],,,^lib:ph,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,,,,,,,,,,"3.9.7",,,, ,^lib:phIct,,,,,,`https://project-haystack.org/def/phIct/`,,,,,,,,,,,,,,,,,[^lib:ph,^lib:phIoT],,,,,"Project Haystack definitions for Information and Communications Technology.\nThis includes microprocessor based hardware, software, and networking\ntechnologies.",,,,,,,,,,,,,,,,,,,,,,,,"tag",,,,[^lib],,,^lib:phIct,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,,,,,,,,,,"3.9.7",,`https://en.wikipedia.org/wiki/Information_and_communications_technology`,, ,^lib:phIoT,,,,,,`https://project-haystack.org/def/phIoT/`,,,,,,,,,,,,,,,,,[^lib:ph,^lib:phScience],,,,,"Project Haystack definitions for Internet of Things",,,,,,,,,,,,,,,,,,,,,,,,"tag",,,,[^lib],,,^lib:phIoT,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,,,,,,,,,,"3.9.7",,`https://en.wikipedia.org/wiki/Internet_of_things`,, ,^lib:phScience,,,,,,`https://project-haystack.org/def/phScience/`,,,,,,,,,,,,,,,,,[^lib:ph],,,,,"Project Haystack scientific definitions",,,,,,,,,,,,,,,,,,,,,,,,"tag",,,,[^lib],,,^lib:phScience,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,,,,,,,,,,"3.9.7",,,, ,^lib:pod,,,,,,`https://skyfoundry.com/def/pod/`,,,,,,,,,,,,,,,,,[^lib:ph,^lib:core],,,,,"Publishes white-listed resources packaged in pods",,,,,,,,,,,,,,,,,,,,,,,,"host",,,,[^lib],,,^lib:pod,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,,,"skyarcd::PodMod",,,,,,,"3.0.23",,,, ,^lib:point,,,,,,`https://skyfoundry.com/def/point/`,,,,,,,,,,,,,,,,,[^lib:ph,^lib:core,^lib:phIoT,^lib:his],,,,,"Point Extension",,,,,,,,,M,,,,,,,,,,,,,,,"puzzle",,,,[^lib],,,^lib:point,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"pointExt::PointExt",,,,,,,"3.0.23",,,, ,^lib:proj,,,,,,`https://skyfoundry.com/def/proj/`,,,,,,,,,,,,,,,,,[^lib:ph,^lib:core],,,,,"Project management module",,,,,,,,,,,,,,,,,,,,,,,,"host",,,,[^lib],,,^lib:proj,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,,,"projMod::StdProjMod",,,,,,,"3.0.23",,,, ,^lib:proj_demo,,,,,,`http://FINStackDemo:9092/api/demo`,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,^lib:proj_demo,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"3.0.23",,,, ,^lib:pub,,,,,,`https://skyfoundry.com/def/pub/`,,,,,,,,,,,,,,,,,[^lib:ph,^lib:core],,,,,"Publishes var/pub as publicly accessible files",,,,,,,,,,,,,,,,,,,,,,,,"host",,,,[^lib],,,^lib:pub,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,,,"skyarcd::PubMod",,,,,,,"3.0.23",,,, ,^lib:repl,,,,,,`https://skyfoundry.com/def/repl/`,,,,,,,,,,,,,,,,,[^lib:ph,^lib:core],,,,,"Support for replication",,,,,,,,,,,,,,,,,,,,,,,,"host",,,,[^lib],,,^lib:repl,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,,,"replMod::StdReplMod",,,,,,,"3.0.23",,,, ,^lib:rule,,,,,,`https://skyfoundry.com/def/rule/`,,,,,,,,,,,,,,,,,[^lib:ph,^lib:core,^lib:phIoT,^lib:point,^lib:his],,,,,"Rule Engine Extension",,,,,,,,,M,,,,"j",,,,,,,,,,,"rule",,,,[^lib],,,^lib:rule,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"ruleExt::RuleExt",,,,,,,"3.0.23",,,, ,^lib:schedule,,,,,,`https://skyfoundry.com/def/schedule/`,,,,,,,,,,,,,,,,,[^lib:ph,^lib:core,^lib:phIoT,^lib:point],,,,,"Scheduling Extension",,,,,,,,,M,,,,"j",,,,,,,,,,,"calendar",,,,[^lib],,,^lib:schedule,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"scheduleExt::ScheduleExt",,,,,,,"3.0.23",,,, ,^lib:session,,,,,,`https://skyfoundry.com/def/session/`,,,,,,,,,,,,,,,,,[^lib:ph,^lib:core],,,,,"Client session management",,,,,,,,,,,,,,,,,,,,,,,,"host",,,,[^lib],,,^lib:session,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,,,"skyarcd::SessionMod",,,,,,,"3.0.23",,,, ,^lib:tariff,,,,,,`https://skyfoundry.com/def/tariff/`,,,,,,,,,,,,,,,,,[^lib:ph,^lib:core,^lib:phIoT,^lib:his,^lib:hisKit,^lib:energy,^lib:schedule],,,,,"Tariff Engine",,,,,,,,,M,,,,"j",,,,,,,,,,,"bolt",,,,[^lib],,,^lib:tariff,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"tariffExt::TariffExt",,,,,,,"3.0.23",,,, ,^lib:ui,,,,,,`https://skyfoundry.com/def/ui/`,,,,,,,,,,,,,,,,,[^lib:ph,^lib:core],,,,,"Support for Fresco UI",,,,,,,,,,,,,,,,,,,,,,,,"host",,,,[^lib],,,^lib:ui,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,,,"uiMod::StdUiMod",,,,,,,"3.0.23",,,, ,^lib:ui2,,,,,,`https://skyfoundry.com/def/ui2/`,,,,,,,,,,,,,,,,,[^lib:ph,^lib:core],,,,,"Classic support for the legacy Fresco 2.1 UI",,,,,,,,,,,,,,,,,,,,,,,,"host",,,,[^lib],,,^lib:ui2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,,,"legacy::Ui2Mod",,,,,,,"3.0.23",,,, ,^lib:user,,,,,,`https://skyfoundry.com/def/user/`,,,,,,,,,,,,,,,,,[^lib:ph,^lib:core],,,,,"User management module",,,,,,,,,,,,,,,,,,,,,,,,"host",,,,[^lib],,,^lib:user,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,,,"userMod::StdUserMod",,,,,,,"3.0.23",,,, ,^lib:viz,,,,,,`https://skyfoundry.com/def/viz/`,,,,,,,,,,,,,,,,,[^lib:ph,^lib:core],,,,,"Viz visualization framework module",,,,,,,,,,,,,,,,,,,,,,,,"host",,,,[^lib],,,^lib:viz,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,,,"skyarcd::VizMod",,,,,,,"3.0.23",,,, ,^lib:watchdog,,,,,,`https://skyfoundry.com/def/watchdog/`,,,,,,,,,,,,,,,,,[^lib:ph,^lib:core],,,,,"Background watchdog checks on critical resources",,,,,,,,,,,,,,,,,,,,,,,,"host",,,,[^lib],,,^lib:watchdog,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,,,"skyarcd::WatchdogMod",,,,,,,"3.0.23",,,, ,^lib:weather,,,,,,`https://skyfoundry.com/def/weather/`,,,,,,,,,,,,,,,,,[^lib:ph,^lib:core,^lib:phIoT,^lib:his],,,,,"Weather Extension",,,,,,,,,M,,,,"j",,,,,,,,,,,"weather",,,,[^lib],,,^lib:weather,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"weatherExt::WeatherExt",,,,,,,"3.0.23",,,, ,^lib:xquery,,,,,,`https://skyfoundry.com/def/xquery/`,,,,,,,,,,,,,,,,,[^lib:ph,^lib:core],,,,,"XQuery support module",,,,,,,,,,,,,,,,,,,,,,,,"host",,,,[^lib],,,^lib:xquery,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,,,"xqueryMod::StdXQueryMod",,,,,,,"3.0.23",,,, ,^light,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Electromagnetic radiation in the visibile spectrum",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^phenomenon],,,^lib:phScience,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`https://en.wikipedia.org/wiki/Light`,, ,^lighting,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Systems associated with illumination in the built environment",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^marker],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`https://en.wikipedia.org/wiki/Lighting`,, ,^lighting-zone-space,,,,,,,,"occupied point",,,,,,,,,,,,,,,,,,,,"Zone related to lighting system",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^zone-space],,,^lib:phIoT,["LintMarker","LintSpace"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^linter,M,,,,,,,,,,,,,,,,,,,,,,,,,,,"Fantom qname of `skyarcd::Linter` class.",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^list],,,^lib:core,,,,,,,,,,,,,,,,,^str,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^liquid,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Substance with definite volume but takes the shape of its container",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^fluid],,,^lib:phScience,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`https://en.wikipedia.org/wiki/Liquid`,, ,^list,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Ordered list of zero or more values.",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^val],,,^lib:ph,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^load,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Chiller point to command or measure the chiller's load as a percentage\nfrom \"0%\" to \"100%\". When paired with cmd this models the chiller's\nload limit. When paired with sensor this models the chiller's current\nload factor.",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^marker],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^luminaire,,,,,,,,"equip\npoint",,,,,,,,,,,,,,,,,,,,"Light fixture using electricity to provide illumination",,,,,,,,,,,,,,,,,,,,,,,,"lightbulb",,,,[^equip],,,^lib:phIoT,["LintEquip","LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`https://en.wikipedia.org/wiki/Light_fixture`,, ,^luminance,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Energy of light in a given direction.\n\nAlso see [ies.org]`https://www.ies.org/definitions/luminance/`",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^quantity],,,^lib:phScience,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,["candelas_per_square_meter","candelas_per_square_foot"],,,,[^light],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`https://en.wikipedia.org/wiki/Luminance`,, ,^luminous,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Relating to light as perceived by the eye",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^marker],,,^lib:phScience,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^luminous-flux,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Total perceived light in all directions.\n\nAlso see [ies.org]`https://www.ies.org/definitions/luminous-flux/`",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^quantity],,,^lib:phScience,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,["lumen"],,,,[^light],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`https://en.wikipedia.org/wiki/Luminous_flux`,, ,^luminous-intensity,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Perceived light in a particular direction per unit solid angle.\n\nAlso see [ies.org]`https://www.ies.org/definitions/luminous-intensity/`",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^quantity],,,^lib:phScience,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,["candela"],,,,[^light],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`https://en.wikipedia.org/wiki/Luminous_intensity`,, ,^magnitude,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Size or extent",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^marker],,,^lib:phScience,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^makeup,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Restore soemthing missed or lost",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^marker],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^makeup-water,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Water used used to makeup water loss through leaks, evaporation, or blowdown",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^water],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`https://en.wikipedia.org/wiki/Water`,, ,^mandatory,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Requires that the marker be applied to dicts which use the marker's subtypes.\nThis tag is typically applied to top-level entity tags such as 'equip'.\nFor example if an instance is tagged with a subtype of 'equip' such\nas 'tank', then the instance must also include the 'equip' tag as a\nmandatory marker.",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^marker],,,^lib:ph,["LintMarker"],,,,,,,,,,,,,,,M,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[^def],,,,,,,,,,,,,,,,,,,,, ,^marker,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Marker labels a dict with typing information",,M,,,,,,,,,,,,,,,,,,,,,,,,,,,,,^lib:ph,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^mau,,,^ahuZoneDeliveryType,,,,,"thermostat equip\ndischarge duct equip\nexhaust duct equip\nmixed duct equip\noutside duct equip\nreturn duct equip\nthermostat equip\nfreezeStat sensor point\nheatWheel cmd point\nfaceBypass cmd point\nbypass damper cmd point",,,,,,,,^coolingProcessType,^air,,,,,^air,,,,,,"Makeup Air Unit: An AHU that brings in 100% outside air and no\nrecirculated air.",,,^ductConfigType,^ductDeckType,,,,,,,,,,,,,,^heatingProcessType,^air,,,,^air,"fan",,,,[^ahu],,,^lib:phIoT,["LintEquip","LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,^air,,,`https://en.wikipedia.org/wiki/Air_handler`,, ,^maxVal,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Inclusive maximum for a numeric value.",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^number],,,^lib:ph,["LintNumber"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[^def,^point],,,,,,,,,,,,,,,,,,,,, ,^meter,,,,,,,,"equip\npoint",,,,,,,,,,,,,,,,,,,,"Equipment to meter a substance or phenomenon",,,,,,,,,,,,,,,,,,,,,,,,"bolt",,,,[^equip],,,^lib:phIoT,["LintEquip","LintMarker"],,,^meterScopeType,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^meterScope,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Classifies a meter as a main site meter or submeter",,,,,,,,,,,,,,,,,,,,,,,,,,"ui::ChoiceInput",,[^choice],,,^lib:phIoT,["LintSymbol"],,,,,,,,,,,,,,,,^meterScopeType,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^meterScopeType,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Classifies a meter as a main site meter or submeter",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^marker],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^mime,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Mime type formatted as type/subtype",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^str],,,^lib:ph,["LintStr"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[^filetype],,,,,,,,,,,,,,,,,,,,, ,^minVal,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Inclusive minimum for a numeric value.",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^number],,,^lib:ph,["LintNumber"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[^def,^point],,,,,,,,,,,,,,,,,,,,, ,^mixed,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Duct where fresh outside and return air is mixed together",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^ductSectionType],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^mixing,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Three way valve which inputs two pipes and outputs a mixture\nbetween the two to a single output pipe.",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^marker],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^mobile,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Relating to mobile phones, handheld computers, and similar technology",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^marker],,,^lib:phIct,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^mobile-phone,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Cellular phone providing telecommunication over radio links.",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^phone],,,^lib:phIct,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`https://en.wikipedia.org/wiki/Mobile_phone`,, ,^modbus,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Register based communication protocol used with industrial devices.",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^protocol],,,^lib:phIct,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`https://en.wikipedia.org/wiki/Modbus`,, ,^motor,,,,,,,,"run state point\nenable state point",,,,,,,,,,,,,,,,,,,,"Equipment that converts electrical energy into mechanical energy",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^equip],,,^lib:phIoT,["LintEquip","LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`https://en.wikipedia.org/wiki/Electric_motor`,, ,^moves,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Equipment moves a substance.",,,,,,,,,,,,,,,,,,,,,,,,,,"ui::ChoiceInput",,[^equipFunction],,,^lib:phIoT,["LintSymbol"],,,,,,,,,,,,,,,,^substance,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^movingWalkway,,,,,,,,"equip\npoint",,,,,,,,,,,,,,,,,,,,"Conveyor to move people across a horizontal or inclined plane.",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^verticalTransport],,,^lib:phIoT,["LintEquip","LintMarker"],,,,,,,,^occupants,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`https://en.wikipedia.org/wiki/Moving_walkway`,, ,^mqtt,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Message Queuing Telemetry Transport publish/subscribe protocol",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^protocol],,,^lib:phIct,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`https://en.wikipedia.org/wiki/MQTT`,, ,^multi,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Indicated multiple selection",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^marker],,,^lib:core,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^multiLine,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Indicates that a multi-line text input should be used",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^marker],,,^lib:core,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^multiZone,,,,,,,,,,,,,,,,,,,,,,,,,,,,"AHU discharge air is split into a duct per zone",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^ahuZoneDeliveryType],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^na,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Not available used to indicate invalid or missing data",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^scalar],,,^lib:ph,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^name,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Name key",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^str],,,^lib:core,["LintName","LintStr"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^naturalGas,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Fossil fuel energy source consisting largely of methane and other hydrocarbons",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^gas],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`https://en.wikipedia.org/wiki/Natural_gas`,, ,^navName,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Navigation name commonly used with `disMacro` to create computed display strings.",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^str],,,^lib:core,["LintNavName","LintStr"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[^space,^equip,^point],,,,,,,,,,,,,,,,,,,,, ,^navTree,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Navigation tree name to use for ref tag",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^str],,,^lib:core,["LintStr"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^net,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Difference between import and export",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^marker],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^network,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Logical communications network between two or more devices.",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^entity],,,^lib:phIct,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^networking,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Related to data communication networks",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^marker],,,^lib:phIct,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^networking-device,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Microprocessor device used to establish networks.",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^device],,,^lib:phIct,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^networking-router,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Networking device used to route data between different networks.",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^networking-device],,,^lib:phIct,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`https://en.wikipedia.org/wiki/Router_(computing)`,, ,^networking-switch,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Networking device used to connect devices on the same network.",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^networking-device],,,^lib:phIct,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`https://en.wikipedia.org/wiki/Network_switch`,, ,^neutralDeck,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Duct carries air which by-passes both heating and cooling coils",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^ductDeckType],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^noFlash,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[^marker],,,^lib:core,["LintMarker"],,,,,,,,,,,,,,M,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^noSideEffects,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[^marker],,,^lib:core,["LintMarker"],,,,,,,,,,,,,,M,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`https://en.wikipedia.org/wiki/Side_effect_(computer_science)`,, ,^node,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Cluster node. Nodes are managed at the host level in the cluster database.",,,,,,,,,,,,,,,,,,,,,,,,"host",,,,[^entity],,,^lib:cluster,["LintMarker"],M,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^nodoc,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Undocumented and not officially supported",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^marker],,,^lib:core,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^nosrc,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Do not include source code in documentation",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^marker],,,^lib:core,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^notInherited,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Marker applied to a def to indicate that is not inherited into\nsubtype definitions.",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^marker],,,^lib:ph,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[^def],,,,,,,,,,,,,,,,,,,,, ,^number,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Integer or floating point numbers annotated with an optional unit",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^scalar],,,^lib:ph,["LintNumber"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^obix,,,,,,,,,,,,,,,,,,,,,,,,,,,,"XML based Open Building Information eXchange protocol.",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^protocol],,,^lib:phIct,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`https://en.wikipedia.org/wiki/OBIX`,, ,^occ,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Occupied mode of a space",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^marker],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^occupants,,,,,,,,,,,,,,,,,,,,,,,,,,,,"People who use the built ennvironment",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^marker],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^occupied,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Setpoint or sensor indicating occupancy of a space",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^marker],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^of,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Expected value type of a collection, reference, or choice",,,,,,,,,,,,,,,,,,,,,,,,,,"uiDev::SymbolInput",,[^symbol],,,^lib:ph,["LintSymbol"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[^def],,,,,,,,,,,,,,,,,,,,, ,^oilHeating,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Heating by the combustion of fuel oil",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^heatingProcessType],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,[^fuelOil],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^onCommit,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[^str],,,^lib:core,["LintStr"],,,,,,,,,,,,,,M,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^openLoop,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Uses working fluid itself for evaporation into the atmosphere",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^coolingLoop],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^optsTemplate,,,,,,,,,,,,,,,,,,,,,,,,,,,,"TODO",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^str],,,^lib:core,["LintStr"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^order,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Used to order definitions",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^number],,,^lib:core,["LintNumber"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^outside,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Duct to access fresh outside air",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^ductSectionType],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^overridable,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Applied to an ext function to enable [override]`docSkySpark::Axon#overrides`\nby project record functions.",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^marker],,,^lib:core,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^pageSize,,,,,,,,,,,,,,,,,,,,,,,,,,"ui::pageSize",,"Printed page size formatted as \"width,height\" with an explicit unit\nof \"pt\", \"in\", \"mm\", or \"cm\". Examples \"8.5in,11in\" or \"612pt,792pt\"",,,,,,,,,,,,,,,,,,,,,,,,,,"ui::PageSizeInput",,[^str],,,^lib:core,["LintStr"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[^filetype:pdf],,,,,,,,,,,,,,,,,,,,, ,^panel,,,,,,,,"equip\npoint",,,,,,,,,,,,,,,,,,,,"Enclosure for electrical and control equipment. Panels may be\nused to isolate electrical connections and provide environmental\nprotection.",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^equip],,,^lib:phIoT,["LintEquip","LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^parallel,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Circuit with multiple paths of flow",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^marker],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^password,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Manages password which is hashed/stored to the password store.",,,,,,,,,,,,,,,,,,,,,,,,,,"ui::PasswordInput",,[^str],,,^lib:core,["LintStr"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[^energyStarConn,^haystackConn,^obixConn,^sedonaConn,^snmpConn,^sqlConn],,,,,,,,,,,,,,,,,,,,, ,^perimeterHeat,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Auxiliary heating points associated with a `vav`",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^marker],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^pf,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Electrical power factor; unitless number between 0.0 and 1.0 which is ratio\nof active to apparent power in an AC power system.",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^quantity],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,["pf"],,,,[^ac-elec],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^phase,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Phase measurement in a three-phase electrical system",,,,,,,,"- A: line-to-neutral measurement\n- B: line-to-neutral measurement\n- C: line-to-neutral measurement\n- AB: line-to-line measurement\n- BC: line-to-line measurement\n- CA: line-to-line measurement\n- N: neutral current",,,,,,,,,,,,,,,,,,,,[^str],,,^lib:phIoT,["LintStr"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`https://en.wikipedia.org/wiki/Three-phase_electric_power`,, ,^phenomenon,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Aspect of scientific interest with measurable quantities",,M,,,,,,,,,,,,,,,,,,,,,,,,,,[^marker],,,^lib:phScience,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^phone,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Telephone used for voice telecommunication.",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^device],,,^lib:phIct,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`https://en.wikipedia.org/wiki/Telephone`,, ,^pipe,,,,,,,,"pump motor equip\nvalve actuator equip\nflow point\npressure point\ntemp point",[^fluid,^pipeSectionType],,,,,,^fluid,,,,,,,,,,,,,"Conduit used to convey a fluid",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^conduit],,,^lib:phIoT,["LintEquip","LintMarker"],,,,,,,,,,,,,,,,,,,,,,^pipeSectionType,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`https://en.wikipedia.org/wiki/Pipe_(fluid_conveyance)`,, ,^pipeSection,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Equipment section of piping",,,,,,,,,,,,,,,,,,,,,,,,,,"ui::ChoiceInput",,[^choice],,,^lib:phIoT,["LintSymbol"],,,,,,,,,,,,,,,,^pipeSectionType,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^pipeSectionType,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Equipment section of piping",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^marker],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^placeholder,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Hint displayed in a text field input",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^str],,,^lib:core,["LintStr"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^plant,,,,,,,,"equip\npoint",,,,,,,,,,,,,,,,,,,,"Central plant used to generate a substance for a process",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^equip],,,^lib:phIoT,["LintEquip","LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^pm10,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Particulate Matter 10; atmospheric pollutant of fine particles with an aerodynamic diameter of 10 micrometers or less",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^airQuality],,,^lib:phScience,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,["µg/m³","ppb"],,,,[^air],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^pm25,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Particulate Matter 2.5; atmospheric pollutant of fine particles with/ an aerodynamic diameter of 2.5 micrometers or less",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^airQuality],,,^lib:phScience,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,["µg/m³","ppb"],,,,[^air],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^podName,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Fantom pod name",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^str],,,^lib:core,["LintStr"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^point,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Data point such as a sensor or actuator",,M,,,,,,,,,,,,,,,,,,,,,,,,,,[^entity],,,^lib:phIoT,["LintMarker","LintPoint"],M,,,,,,,,,,,,,,,,,,,,,,,^pointFunctionType,^quantity,^phenomenon,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^pointConvert,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Point value conversion used to normalize data to/from a remote system.\nSee `doc#convert`",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^str],,,^lib:conn,["LintStr"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^pointFunction,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,,,,,,"ui::ChoiceInput",,[^choice],,,^lib:phIoT,["LintSymbol"],,,,,,,,,,,,,,,,^pointFunctionType,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[^trait:point],,,,,,,,,,,,,,,, ,^pointFunctionType,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Classifies the point as a sensor, command, or setpoint",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^marker],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^pointQuantity,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Quantity the point senses or controls",,,,,,,,,,,,,,,,,,,,,,,,,,"ui::ChoiceInput",,[^choice],,,^lib:phIoT,["LintSymbol"],,,,,,,,,,,,,,,,^quantity,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^pointSubject,,,,,,,,,,,,,,,,,,,,,,,,,,,,"What the point senses or controls",,,,,,,,,,,,,,,,,,,,,,,,,,"ui::ChoiceInput",,[^choice],,,^lib:phIoT,["LintSymbol"],,,,,,,,,,,,,,,,^phenomenon,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^pollTime,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Frequency between polls of 'curVal'.\nSee `ext-conn::doc#pollTime`.",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^duration],,,^lib:conn,["LintNumber"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[^connTuning],,,,,,,,,,,,,,,,,,,,, ,^pop3,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Post Office Protocol version 3 for retreiving email",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^protocol],,,^lib:phIct,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`https://en.wikipedia.org/wiki/Post_Office_Protocol`,, ,^power,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Energy consumed per unit time",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^quantity],,,^lib:phScience,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^precipitation,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Amount of atmospheric water vapor fallen including rain, sleet, snow, and hail",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^quantity],,,^lib:phScience,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,["mm","in"],,,,[^weather],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^prefUnit,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Defines a preferred unit to be used with a quantity",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^list],,,^lib:phScience,,,,,,,,,,,,,,,,,^unit,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^pressure,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Measure of force applied",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^quantity],,,^lib:phScience,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,["kPa","psi"],,,,[^fluid],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^pressureDependent,,,,,,,,,,,,,,,,,,,,,,,,,,,,"VAV damper modulates to control space temp; dependent on duct pressure\nbeing maintained",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^vavModulationType],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^pressureIndependent,,,,,,,,,,,,,,,,,,,,,,,,,,,,"VAV damper or a control valve that modulates to maintain desired flow\nsetpoint; independent of the duct pressure",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^vavModulationType],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^primaryFunction,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Primary function of building as US Energy Star key",,,,,,,,"Adult Education\nAmbulatory Surgical Center\nAquarium\nAutomobile Dealership\nBank Branch\nBar/Nightclub\nBarracks\nBowling Alley\nCasino\nCollege/University\nConvenience Store with Gas Station\nConvenience Store without Gas Station\nConvention Center\nCourthouse\nData Center\nDistribution Center\nDrinking Water Treatment & Distribution\nEnclosed Mall\nEnergy/Power Station\nFast Food Restaurant\nFinancial Office\nFire Station\nFitness Center/Health Club/Gym\nFood Sales\nFood Service\nHospital (General Medical & Surgical)\nHotel\nIce/Curling Rink\nIndoor Arena\nK-12 School\nLaboratory\nLibrary\nLifestyle Center\nMailing Center/Post Office\nManufacturing/Industrial Plant\nMedical Office\nMixed Use Property\nMovie Theater\nMultifamily Housing\nMuseum\nNon-Refrigerated Warehouse\nOffice\nOther - Education\nOther - Entertainment/Public Assembly\nOther - Lodging/Residential\nOther - Mall\nOther - Public Services\nOther - Recreation\nOther - Restaurant/Bar\nOther - Services\nOther - Stadium\nOther - Technology/Science\nOther - Utility\nOther\nOther/Specialty Hospital\nOutpatient Rehabilitation/Physical Therapy\nParking\nPerforming Arts\nPersonal Services (Health/Beauty, Dry Cleaning, etc)\nPolice Station\nPre-school/Daycare\nPrison/Incarceration\nRace Track\nRefrigerated Warehouse\nRepair Services (Vehicle, Shoe, Locksmith, etc)\nResidence Hall/Dormitory\nRestaurant\nRetail Store\nRoller Rink\nSelf-Storage Facility\nSenior Care Community\nSingle Family Home\nSocial/Meeting Hall\nStadium (Closed)\nStadium (Open)\nStrip Mall\nSupermarket/Grocery Store\nSwimming Pool\nTransportation Terminal/Station\nUrgent Care/Clinic/Other Outpatient\nVeterinary Office\nVocational School\nWastewater Treatment Plant\nWholesale Club/Supercenter\nWorship Facility\nZoo",,,,,,,,,,,,,,,,,,,,[^str],,,^lib:phIoT,["LintStr"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[^site],,,,,,,,,,,,,,,,,,,,, ,^process,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Industrial or HVAC process",,M,,,,,,,,,,,,,,,,,,,,,,,,,,[^marker],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^processUses,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Input to a process, usually energy source",,,,,,,,,,,,,,,,,,,,,,,,,,"uiDev::SymbolListInput",,[^association],,,^lib:phIoT,,,,,,,,,,,,,,,,,^phenomenon,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^produces,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Equipment produces a substance or phenomenon.",,,,,,,,,,,,,,,,,,,,,,,,,,"ui::ChoiceInput",,[^equipFunction],,,^lib:phIoT,["LintSymbol"],,,,,,,,,,,,,,,,^phenomenon,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^projAccessFilter,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Applied to users to defines access to projects.\nSee `docSkySpark::Security#projAccessFilter`.",,,,,,,,,,,,,,,,,,,,,,,,,,"ui::ProjAccessFilterInput",,[^str],,,^lib:user,["LintStr"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"validateFilter",,,,,,,,, ,^projMeta,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Singleton record for project meta data",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^entity],,,^lib:proj,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^protocol,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Communication protocol used for devices on a network.",,M,,,,,,,,,,,,,,,,,,,,,,,,,,[^entity],,,^lib:phIct,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`https://en.wikipedia.org/wiki/Communication_protocol`,, ,^pump,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Pump equipment or control point",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^marker],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`https://en.wikipedia.org/wiki/Pump`,, ,^pump-motor,,,,,,,,"run state point\nenable state point",[^fluid,^pipeSectionType,^pump],,,,,,,,,,,,,,,,,,,"Motor used with a pump to move fluid.",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^motor],,,^lib:phIoT,["LintEquip","LintMarker"],,,,,,,,^fluid,,,,,,,,,,,,,,^pipeSectionType,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`https://en.wikipedia.org/wiki/Pump`,, ,^quality,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Quantity measured against standard metric",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^marker],,,^lib:phScience,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^quantities,,,,,,,,,,,,M,,,,,,,,,,,,,,,,"Quantities used to measure this phenomenon",M,,,,,,,,,,,,,,,,,,,,,,,,,"uiDev::SymbolListInput",,[^association],,,^lib:phScience,,,,,,,,,,,,,,,,,^symbol,,,,,,,,,,,,,,,,,,^quantityOf,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^quantity,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Measurable property of a substance or phenomenon",,M,,,,,,,,,,,,,,,,,,,,,,,,,,[^marker],,,^lib:phScience,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^quantityOf,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Associates quantity as measurement of a phenomenon",,,,,,,,,,,,,,,,,,,,,,,,,,"uiDev::SymbolListInput",,[^association],,,^lib:phScience,,,,,,,,,,,,,,,,,^phenomenon,,,,,,,,,,,,,,,,,,^quantities,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^rack,,,,,,,,"server device\nnetworking device",,,,,,,,,,,,,,,,,,,,"Enclosure or chassis used to mount computer and networking gear.\nDevices are mounted to rails of a standard width, typically 19 or 23\ninches. Height is measured in *rack units* where one 1U is 1.75 inches.\nA full rack has a height of 42U.",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^equip],,,^lib:phIct,["LintEquip","LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`https://en.wikipedia.org/wiki/19-inch_rack`,, ,^radiantEquip,,,,,,,,"equip\npoint",,,,,,,,,,,,,,,,,,,,"HVAC equipment that conditions a space without forced air.",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^equip],,,^lib:phIoT,["LintEquip","LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^radiantFloor,,,,,,,,"equip\npoint",,,,,,,,,,,,,,,,,,,,"Heats a space using pipes or cables embedded beneath floor.",,,,,,,,,,,,,,,,,,^heatingProcessType,^air,,,,,,,,,[^radiantEquip],,,^lib:phIoT,["LintEquip","LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`https://en.wikipedia.org/wiki/Underfloor_heating`,, ,^radiator,,,,,,,,"equip\npoint",,,,,,,,,,,,,,,,,,,,"Heats a space using exposed pipes or coils. Hot water and steam\nradiators are often cast iron and installed directly in the space\nor along the baseboard. Electric radiators are typically installed\non the baseboard.",,,,,,,,,,,,,,,,,,^heatingProcessType,^air,,,,,,,,,[^radiantEquip],,,^lib:phIoT,["LintEquip","LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`https://en.wikipedia.org/wiki/Radiator_(heating)`,, ,^reactive,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Relating to reactance",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^marker],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^reactive-power,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Reactive power or imaginary power; energy transfer that contributes useful work",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^quantity],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,["kVAR"],,,,[^ac-elec],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^reader,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Fantom type qname for reader class",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^str],,,^lib:core,["LintStr"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^readonly,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Indicates a value which may be read, but not written",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^marker],,,^lib:core,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^receives,,,,,,,,,,,,,,,,,,,,,,,,,,,,"The entity receives from the referent.\nThe value of this tag is what is received.",,,,,,,,,,,,,,,,,,,,,,,,,,"uiDev::SymbolInput",,[^relationship],,,^lib:ph,["LintSymbol"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,^supplies,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,,,,, ,^reciprocal,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Piston compressor driven by a crankshaft",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^marker],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`https://en.wikipedia.org/wiki/Reciprocating_compressor`,, ,^reciprocalOf,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Specifies the inverse of an association or relationships.\nSee [Associations]`docHaystack::Associations#reciprocalOf` and\n[Relationships]`docHaystack::Relationships#reciprocalOf` chapter.",,,,,,,,,,,,,,,,,,,,,,,,,,"uiDev::SymbolInput",,[^symbol],,,^lib:ph,["LintSymbol"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^ref,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Reference to an entity. Ref values are ASCII strings limited to the\nfollowing chars: a-z, A-Z, 0-9, underbar, colon, dash, dot, or tilde.",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^scalar],,,^lib:ph,["LintRef"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^refresh,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Indicates an operation which requires a page refresh",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^marker],,,^lib:core,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^refrig,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Fluid used in refrigeration and heat exchange. Refrigerants typically\nalternate between liquid and gas state.",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^fluid],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`https://en.wikipedia.org/wiki/Refrigerant`,, ,^regulates,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Equipment regulates the flow of substance or phenomenon.",,,,,,,,,,,,,,,,,,,,,,,,,,"ui::ChoiceInput",,[^equipFunction],,,^lib:phIoT,["LintSymbol"],,,,,,,,,,,,,,,,^phenomenon,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^reheat,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Command point for `reheats` process",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^marker],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^reheats,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Equipment heats a substance previously cooled or heated.",,,,,,,,,,,,,,,,,,,,,,,,,,"ui::ChoiceInput",,[^heats],,,^lib:phIoT,["LintSymbol"],,,,,,,,,,,,,,,,^substance,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^relationship,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Ref tags used to model entity-to-entity relationships.\nSee [Relationships]`docHaystack::Relationships` chapter.",,M,,,,,,,,,,,,,,,,,,,,,,,,"uiDev::SymbolInput",,[^symbol],,,^lib:ph,["LintSymbol"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^restart,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Indicates a setting which requires restart when modified",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^marker],,,^lib:core,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^return,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Duct returning air back to equipment",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^ductSectionType],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^roof,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Envelope covering the top of a building",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^marker],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^roof-floor,,,,,,,,"space\nequip\npoint",,,,,,,,,,,,,,,,,,,,"The roof floor is the topmost level of a building. It is often\nwhere HVAC equipment is located such as rooftop AHUs.",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^floor],,,^lib:phIoT,["LintMarker","LintSpace"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`https://en.wikipedia.org/wiki/Storey`,, ,^room,,,,,,,,"space\nequip\npoint",,,,,,,,,,,,,,,,,,,,"Enclosed room of a building",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^space],,,^lib:phIoT,["LintMarker","LintSpace"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`https://en.wikipedia.org/wiki/Room`,, ,^rotaryScrew,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Rotary screw compression",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^marker],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`https://en.wikipedia.org/wiki/Rotary-screw_compressor`,, ,^router,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Device used to route data packets",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^marker],,,^lib:phIct,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^rtu,,,^ahuZoneDeliveryType,,,,,"thermostat equip\ndischarge duct equip\nexhaust duct equip\nmixed duct equip\noutside duct equip\nreturn duct equip\nthermostat equip\nfreezeStat sensor point\nheatWheel cmd point\nfaceBypass cmd point\nbypass damper cmd point",,,,,,,,^coolingProcessType,^air,,,,,^air,,,,,,"Roof Top Unit: A unitary AHU that is weatherized for outdoor use.",,,^ductConfigType,^ductDeckType,,,,,,,,,,,,,,^heatingProcessType,^air,,,,^air,"fan",,,,[^ahu],,,^lib:phIoT,["LintEquip","LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,^air,,,`https://en.wikipedia.org/wiki/Air_handler`,, ,^rule,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Marker tag for a rule record. See `doc#rules`.",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^entity],,,^lib:rule,["LintMarker"],M,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^ruleCost,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Specifies formula used to apply a cost tag to sparks. See `doc#cost`.",,,,,,,,,,,,,,,,,,,,,,,,,,"ruleExt::RuleCostInput",,[^str],,,^lib:rule,["LintStr"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^ruleFunc,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Specifies the function to run for a `rule`.",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^str],,,^lib:rule,["LintStr"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^ruleOn,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Target filter for a rule or rule ready func.",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^filter],,,^lib:core,["LintStr"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[^func,^rule],,,,,,,,,,,,,,,,,,,,, ,^ruleTuning,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Marker applied to a rec which defines a rule tuning configuration.\nSee `doc#tuning`",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^entity],,,^lib:rule,["LintMarker"],M,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^ruleType,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Rule type choice",,,,,,,,,,,,,,,,,,,,,,,,,,"ui::ChoiceInput",,[^choice],,,^lib:core,["LintSymbol"],,,,,,,,,,,,,,,,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^ruleTypeBase,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Rule type marker",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^marker],,,^lib:core,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^run,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Primary on/off `point` of an `equip` especially used with a `vfd`.\nRun is used with Bool points where true indicates on and false indicates\noff. When paired with `cmd` this is the commanded state of the equipment.\nWhen paired with `sensor` this is the actual status of the equip. If\nthe equipment also defines an `enable` point then both must be commanded\non in order to run the equipment.",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^stateQuantity],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[^state],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`https://en.wikipedia.org/wiki/State_(computer_science)`,, ,^scalar,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Scalar is an atomic value kind",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^val],,,^lib:ph,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^schedulable,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Binds a `schedule` to a [writable point]`ext-point::doc#write`.\nThe value must be a number between 16 and 1 which indicates the\npriority level used to write the schedules current value.\nSee `doc#schedulable`.",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^int],,,^lib:schedule,["LintNumber"],,16,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^schedule,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Configures the items for a schedule encoded as zinc encoded.\nSee `ext-schedule::doc#schedule` for format and further details.",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^str],,,^lib:schedule,["LintStr"],,,,,,,,,,M,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^scheduleRef,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Associates a `schedulable` with its schedule.",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^ref],,,^lib:schedule,["LintRef"],,,,,,,,,,,,,,,,^schedule,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^select,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Used on an action to use current selection",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^marker],,,^lib:core,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^sensor,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Point is a sensor, input, AI/BI",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^pointFunctionType],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^series,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Circuit with single path of flow",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^marker],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^server,,,,,,,,,,,,,,,,,,,,,,,,,,,,"General purpose computer.",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^device],,,^lib:phIct,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`https://en.wikipedia.org/wiki/Server_(computing)`,, ,^showWeather,,,,,,,,,,,,,,,,,,,,,,,,,,"ui::showWeather",,,,,,,,,,,,,,,,,,,,,,,,,,,,"uiMisc::ShowWeatherInput",,[^bool],,,^lib:weather,["LintBool"],,,,,,,,,,,,,,M,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^singleDuct,,,,,,,,,,,,,,,,,,,,,,,,,,,,"One single duct",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^ductConfigType],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^site,,,,,,,,"space\nequip",,,,,,,,,,,,,,,,,,,,"Site is a geographic location of the built environment.\nTypically site maps to one building with its own unique\nstreet address.",,M,,,,,,,,,,,,,,,,,,,,,,,,,,[^entity,^geoPlace],,,^lib:phIoT,["LintMarker","LintSite"],M,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^siteMeter,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Main meter for the associated site",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^meterScopeType],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^siteRef,,,,,,,,,,,,,,^site,,,,,,,,,,,,,,"Reference to site which contains the entity",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^ref],,,^lib:phIoT,["LintRef"],,,,,,,,,,,,,,,,^site,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[^space,^equip,^point],,,,,,,,,,,,,,,,,,,,, ,^smtp,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Simple Mail Transfer Protocol for sending email",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^protocol],,,^lib:phIct,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`https://en.wikipedia.org/wiki/Simple_Mail_Transfer_Protocol`,, ,^snmp,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Simple Network Management Protocol for managing IP devices",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^protocol],,,^lib:phIct,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`https://en.wikipedia.org/wiki/Simple_Network_Management_Protocol`,, ,^solar,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Relating to energy from the sun",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^phenomenon],,,^lib:phScience,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^solar-irradiance,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Energy received on surface of the earth from the sun",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^irradiance],,,^lib:phScience,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,["W/m²"],,,,[^solar],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^solid,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Substance with definite shape and volume",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^substance],,,^lib:phScience,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`https://en.wikipedia.org/wiki/Solid`,, ,^sox,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Sedona Framework UDP based communication protocol",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^protocol],,,^lib:phIct,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`https://en.wikipedia.org/wiki/Communication_protocol`,, ,^sp,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Point is a setpoint, soft point, internal control variable, schedule",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^pointFunctionType],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^space,,,,,,,,"space\nequip\npoint",,,,,,,,,,,,,,,,,,,,"Space is a three-dimensional volume in the built environment",,M,,,,,,,,,,,,,,,,,,,,,,,,,,[^entity],,,^lib:phIoT,["LintMarker","LintSpace"],M,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^spaceRef,,,,,,,,,,,,,,^space,,,,,,,,,,,,,,"Reference to space which contains this entity",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^ref],,,^lib:phIoT,["LintRef"],,,,,,,,,,,,,,,,^space,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[^space,^equip,^point],,,,,,,,,,,,,,,,,,,,, ,^span,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Time span as modeled by `haystack::Span`",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^xstr],,,^lib:core,["LintXStr"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^sparkRule,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Marker tag for a spark rule type. See `doc#sparkRules`.",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^ruleTypeBase],,,^lib:core,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^speed,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Distance per unit time",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^quantity],,,^lib:phScience,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,["km/h","mph"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^src,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Axon source code",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^str],,,^lib:core,["LintStr"],,,,,,,,,,M,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^stage,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Stage number of staged equipment operation such as coil or pump.\nThe first stage is 1, second stage 2, etc.",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^int],,,^lib:phIoT,["LintNumber"],,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^staleTime,,,,,,,,,,,,,,,,,,,,,,,,,,,," Time before a point's curStatus marked from \"ok\" to \"stale\"\nSee `ext-conn::doc#staleTime`.",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^duration],,,^lib:conn,["LintNumber"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[^connTuning],,,,,,,,,,,,,,,,,,,,, ,^standby,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Readiness mode of a space",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^marker],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^state,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Software, hardware, or process control status. This phenomenon\nis used as a catch-all for points which don't directly sense or\ncontrol physical phenomenon.",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^phenomenon],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`https://en.wikipedia.org/wiki/State_(computer_science)`,, ,^stateQuantity,,,,,,,,,,,,,,,,,,,,,,,,,,,,"What is sensed or controlled of software, hardware, or process state.",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^quantity],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`https://en.wikipedia.org/wiki/State_(computer_science)`,, ,^steam,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Water in its gas form",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^gas],,,^lib:phScience,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`https://en.wikipedia.org/wiki/Steam`,, ,^steam-boiler,,,,,,,,"steam leaving pipe equip\ncondensate entering pipe equip\nmakeup water entering pipe equip\ncirc pipe equip\noutside duct equip\nflue duct equip",,,,,,,,,,,,,,,,,,,,"Boiler which outputs steam",,,,,,,,,,,,,,,,,,^heatingProcessType,^steam,,,,,,,,,[^boiler],,,^lib:phIoT,["LintEquip","LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,^steam,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`https://en.wikipedia.org/wiki/Boiler`,, ,^steam-plant,,,,,,,,"steam boiler equip\n\nsteam leaving pipe equip\ncondensate entering pipe equip\nsteam bypass pipe equip\nsteam header pipe equip\nsteam heatExchanger equip\nsteam delta pressure sensor point\nsteam delta flow sensor point\nsteam delta temp sensor point\nsteam mixing valve cmd point\n\nmakeup water entering pipe equip\noutside duct equip\nflue duct equip",,,,,,,,,,,,,,,,,,,,"Plant used to generate steam for heating",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^plant],,,^lib:phIoT,["LintEquip","LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,^steam,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^steamHeating,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Heating using energy of steam",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^heatingProcessType],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,[^steam],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^steamPlantRef,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Plant which supplies steam to the entity",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^ref],,,^lib:phIoT,["LintRef"],,,,,,,,,,,,,,,,^steam-plant,,,,,,,,,,,,,,,,,^steam,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^stores,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Equipment stores a substance or phenomenon.",,,,,,,,,,,,,,,,,,,,,,,,,,"ui::ChoiceInput",,[^equipFunction],,,^lib:phIoT,["LintSymbol"],,,,,,,,,,,,,,,,^phenomenon,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^str,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Unicode string of characters",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^scalar],,,^lib:ph,["LintStr"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^su,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Required superuser permissions",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^marker],,,^lib:core,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[^func,^view],,,,,,,,,,,,,,,,,,,,, ,^submeter,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Submeters measure usage of a sub-system or equipment within a site",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^meterScopeType],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^submeterOf,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Reference to parent meter which is immediately upstream of this meter",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^ref],,,^lib:phIoT,["LintRef"],,,,,,,,,,,,,,,,^meter,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[^meter],,,,,,,,,,,,,,,,,,,,, ,^substance,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Matter in one the three states solid, liquid, or gas",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^phenomenon],,,^lib:phScience,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`https://en.wikipedia.org/wiki/Matter`,, ,^subterranean,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Below the surface of the earth",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^marker],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^subterranean-floor,,,,,,,,"space\nequip\npoint",,,,,,,,,,,,,,,,,,,,"Floor below ground level. Subterranean floors are also known as\nbasements, lower levels, or cellars.",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^floor],,,^lib:phIoT,["LintMarker","LintSpace"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`https://en.wikipedia.org/wiki/Storey`,, ,^supplies,,,,,,,,,,,,,,,,,,,,,,,,,,,,"The entity supplies to the referent.\nThe value of this tag is what is supplied.",,,,,,,,,,,,,,,,,,,,,,,,,,"uiDev::SymbolInput",,[^relationship],,,^lib:ph,["LintSymbol"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,^receives,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,,,,, ,^switch,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Device for toggling state or routing data",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^marker],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^symbol,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Symbol to a def. Symbol values are ASCII strings limited to the\nfollowing chars: a-z, A-Z, 0-9, underbar, colon, dash, dot.",,,,,,,,,,,,,,,,,,,,,,,,,,"uiDev::SymbolInput",,[^scalar],,,^lib:ph,["LintSymbol"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^sysMod,,,,,,,,,,,,,,,,,,,,,,,,,,,,"System module library",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^lib],,,^lib:core,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^tablet,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Mobile device with touch screen for user input.",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^device],,,^lib:phIct,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`https://en.wikipedia.org/wiki/Tablet_computer`,, ,^tag,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Legacy backward compatible tag definitions",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^feature],,,^lib:core,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^tagOn,M,,,,,,,,,,,,,,,,,,,,,,,,,,,"This tag is used on the given entity",,,,,,,,,,,,,,,,,,,,,,,,,,"uiDev::SymbolListInput",,[^association],,,^lib:ph,["LintTagOn"],,,,,,,,,,,,,,,M,^symbol,,,,,,,,,,,,,,,,,,^tags,,,,,,,,,,,,,,[^def],,,,,,,,,,,,,,,,,,,,, ,^tags,,,,,,,,,,,,M,,,,,,,,,,,,,,,,"Tags used with this entity",M,,,,,,,,,,,,,,,,,,,,,,,,,"ui::MultiStrInput",,[^association],,,^lib:ph,,,,,,,,,,,,,,,,,^symbol,,,,,,,,,,,,,,,,,,^tagOn,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^tank,,,,,,,,"level sensor point\ntemp sensor point\npressure sensor point",[^substance],,,,,,,,,,,,,,,,,,,"Tank used to store a substance for temporary holding",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^equip],,,^lib:phIoT,["LintEquip","LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,^substance,,,,,,,,,,,,,,,,,,,,,,`https://en.wikipedia.org/wiki/Storage_tank`,, ,^temp,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Temperature - measure of hot and cold",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^quantity],,,^lib:phScience,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,["°C","°F"],,,,[^substance],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^template,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Legacy backward compatible templates",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^feature],,,^lib:core,["LintTemplate"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^template:app,,,,,,,,,,,,,,,,,,,,,,,,,"ui::app",,,"Legacy backward compatible templates",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^template],,,^lib:core,["LintTemplate"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"app: {kind:\"Str\" validate:\"validateTagName\"}\ndis: {kind:\"Str\" validate:\"validateNotBlank\"}\nicon: {kind:\"Str\" defVal:\"folder\"}","app",,,,,,,,,,,,,,,,,,, ,^template:blank,,,,,,,,,,,,,,,,,,,,,,,,,"ui::blank",,,"Legacy backward compatible templates",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^template],,,^lib:core,["LintTemplate"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"","blank",,,,,,,,,,,,,,,,,,, ,^template:cryptoRename,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Legacy backward compatible templates",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^template],,,^lib:core,["LintTemplate"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"id: {kind:\"Ref\" hidden ro}\nalias: {kind:\"Str\"}\nkeep: {kind:\"Bool\"}\nforce: {kind:\"Bool\"}\nbundle:{kind:\"Marker\" hidden}\ncertType:{kind:\"Str\" hidden}\ncryptoEntry:{kind:\"Marker\" hidden}\nissuer:{kind:\"Str\" hidden}\nsubject:{kind:\"Str\" hidden}","cryptoRename",,,,,,,,,,,,,,,,,,, ,^template:cryptoTrust,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Legacy backward compatible templates",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^template],,,^lib:core,["LintTemplate"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"uri: {kind:\"Uri\"}\nalias: {kind:\"Str\"}","cryptoTrust",,,,,,,,,,,,,,,,,,, @p:demo:r:25aa2aba-7b7f923b "Tenant Template",^template:demoTenant,,,,,,,,,,,,,,,,,,,,,,,,,"Tenant Template",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,^lib:proj_demo,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"dis: {kind:\"Str\" validate:\"validateNotBlank\"}\nsiteRef: {kind:\"Ref\"}\nbilling: {kind:\"Str\" enum:\"Monthly, Quarterly, Yearly\"}\nspace: {kind:\"Number\" defVal:0ft²}\ndemoTenant: {kind:\"Marker\" defVal:M}","demoTenant",,,,,,,,,,,,,,,,,,,2020-01-09T18:17:34.425Z ,^template:energyOperationOpts,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Legacy backward compatible templates",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^template],,,^lib:energy,["LintTemplate"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"mode: { kind:\"Str\" disKey:\"ui::mode\" enum:\"lineChart,barChart,donut\"}\npoint: { kind:\"Str\" disKey:\"ui::point\" input:\"energyExt::MeterPointInput\"}\nunit: { kind:\"Str\" disKey:\"ui::unit\"}\nnorms: { kind:\"Str[]\" disKey:\"ui::normalize\" input:\"energyExt::NormFuncInput\"}\nloads: { kind:\"Str\" disKey:\"ui::loads\" enum:\"on,off\"}\nshowWeather: { kind:\"Bool\" disKey:\"ui::showWeather\" input:\"uiMisc::ShowWeatherInput\"}\naddPoints: { kind:\"Ref[]\" disKey:\"ui::addPoints\" navCluster}","energyOperationOpts",,,,,,,,,,,,,,,,,,, ,^template:energyProfileOpts,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Legacy backward compatible templates",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^template],,,^lib:energy,["LintTemplate"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"mode: { kind:\"Str\" disKey:\"ui::mode\" enum:\"dailyAverage,dailyAverageByWeekday,dailyOverlay,loadDuration,heatMap\"}\npoint: { kind:\"Str\" disKey:\"ui::point\" input:\"energyExt::MeterPointInput\"}\nunit: { kind:\"Str\" disKey:\"ui::unit\"}\nincludeSubmeters: { kind:\"Bool\" disKey:\"ui::includeSubmeters\"}\nnorms: { kind:\"Str[]\" disKey:\"ui::normalize\" input:\"energyExt::NormFuncInput\"}\nbaseline: { kind:\"Str\" disKey:\"ui::baseline\" input:\"energyExt::BaselineFuncInput\"}\ndays: { kind:\"Str\" disKey:\"ui::days\" input:\"energyExt::WeekdayInput\" defVal:\"all\"}\ncompare: { kind:\"Ref[]\" disKey:\"ui::compare\" navCluster}","energyProfileOpts",,,,,,,,,,,,,,,,,,, ,^template:energyUsageOpts,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Legacy backward compatible templates",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^template],,,^lib:energy,["LintTemplate"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"mode: { kind:\"Str\" disKey:\"ui::mode\" enum:\"lineChart,dailyAverage,barChart,donut,stackedBarChart,deltaBaseline\"}\npoint: { kind:\"Str\" disKey:\"ui::point\" input:\"energyExt::MeterPointInput\"}\nunit: { kind:\"Str\" disKey:\"ui::unit\"}\nrollup: { kind:\"Dict\" disKey:\"ui::rollup\" input:\"energyExt::RollupInput\"}\nnorms: { kind:\"Str[]\" disKey:\"ui::normalize\" input:\"energyExt::NormFuncInput\"}\nbaseline: { kind:\"Str\" disKey:\"ui::baseline\" input:\"energyExt::BaselineFuncInput\"}\ndays: { kind:\"Str\" disKey:\"ui::days\" input:\"energyExt::WeekdayInput\" defVal:\"all\"}","energyUsageOpts",,,,,,,,,,,,,,,,,,, ,^template:equip,,,,,,,,,,,,,,,,,,,,,,,,,,"equipExt::equip",,"Legacy backward compatible templates",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^template],,,^lib:equip,["LintTemplate"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"navName: {kind:\"Str\" validate:\"validateNotBlank\"}\ndisMacro: {kind:\"Str\" defVal:\"\\\$siteRef \\\$navName\"}\nsiteRef: {kind:\"Ref\"}\nequip: {kind:\"Marker\"}","equip",,,,,,,,,,,,,,,,,,, ,^template:fav,,,,,,,,,,,,,,,,,,,,,,,,,"ui::favorite",,,"Legacy backward compatible templates",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^template],,,^lib:core,["LintTemplate"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"noLabel: { kind:\"Dict\" const synthetic input:\"ui::FavSaveInput\" }\noverwrite: { kind:\"Ref\" hidden optional }\ndis: { kind:\"Str\" validate:\"validateNotBlank\" }\nfav: { kind:\"Marker\" }\nviewLink: { kind:\"Dict\" hidden }\nspan: { kind:\"Dict\" const synthetic input:\"ui::FavRelSpanInput\" }\ngroup: { kind:\"Str\" validate:\"validateNotBlank\" optional input:\"ui::FavGroupInput\" }\ndoc: { kind:\"Str\" multiLine optional }","fav",,,,,,,,,,,,,,,,,,, ,^template:func,,,,,,,,,,,,,,,,,,,,,,,,,"ui::func",,,"Legacy backward compatible templates",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^template],,,^lib:core,["LintTemplate"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"name: {kind:\"Str\" validate:\"validateTagName\"}\nfunc: {kind:\"Marker\"}\nsrc: {kind:\"Str\" validate:\"validateNotBlank\" defVal:\"() => do\\n \\\"Hello World!\\\"\\nend\"}","func",,,,,,,,,,,,,,,,,,, ,^template:haystackConn,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Legacy backward compatible templates",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^template],,,^lib:haystack,["LintTemplate"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"hostId: {hidden}\nhostDis: {hidden}\nhostModel: {hidden}\nmoduleName: {hidden}\nmoduleVersion: {hidden}\nproductName: {hidden}\nproductVersion: {hidden}\ntz: {hidden}","haystackConn",,,,,,,,,,,,,,,,,,, ,^template:hisCorrelateOpts,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Legacy backward compatible templates",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^template],,,^lib:his,["LintTemplate"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"days: { kind:\"Str\" disKey:\"ui::days\" input:\"uiMisc::WeekdayInput\" defVal:\"all\"}\nhistory: { kind:\"Dict\", disKey:\"ui::his\", input:\"uiMisc::CorrelateHisInput\" defVal:{} }","hisCorrelateOpts",,,,,,,,,,,,,,,,,,, ,^template:hisEquipOpts,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Legacy backward compatible templates",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^template],,,^lib:his,["LintTemplate"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"showWeather: { kind:\"Bool\" }\naddPoints: { disKey:\"ui::addPoints\" kind:\"Ref[]\" navCluster}","hisEquipOpts",,,,,,,,,,,,,,,,,,, ,^template:job,,,,,,,,,,,,,,,,,,,,,,,,,,"ui::job",,"Legacy backward compatible templates",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^template],,,^lib:job,["LintTemplate"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"dis: { kind:\"Str\" validate:\"validateNotBlank\" }\njob: { kind:\"Str\" validate:\"validateNotBlank\" }\njobSchedule: { kind:\"Str\" optional }\njobLastRuntime: { transient }\njobLastStatus: { transient }\njobLastTime: { transient }","job",,,,,,,,,,,,,,,,,,, ,^template:node,,,,,,,,,,,,,,,,,,,,,,,,,,"ui::clusterNode",,"Legacy backward compatible templates",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^template],,,^lib:cluster,["LintTemplate"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"nodeId: {kind:\"Str\" validate:\"validateNodeIdStr\" const}\ndis: {kind:\"Str\" validate:\"validateNotBlank\"}\nuri: {kind:\"Uri\" validate:\"validateNodeUri\" optional}\npubKey: {kind:\"Str\" validate:\"validateNodePubKey\" multiLine}\nnode: {kind:\"Marker\"}\nstatus: {kind:\"Str\" optional hidden}\nversion: {kind:\"Str\" optional hidden}\nhostModel: {kind:\"Str\" optional hidden}\nisolate: {kind:\"Marker\" optional}\nkeepAlive: {kind:\"Number\" optional defVal:5sec}","node",,,,,,,,,,,,,,,,,,, ,^template:pdfOpts,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Legacy backward compatible templates",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^template],,,^lib:core,["LintTemplate"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"pageSize: {kind:\"Str\"}","pdfOpts",,,,,,,,,,,,,,,,,,, ,^template:point,,,,,,,,,,,,,,,,,,,,,,,,,,"equipExt::point",,"Legacy backward compatible templates",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^template],,,^lib:equip,["LintTemplate"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"navName: {kind:\"Str\" validate:\"validateNotBlank\"}\ndisMacro: {kind:\"Str\" defVal:\"\\\$equipRef \\\$navName\"}\nsiteRef: {kind:\"Ref\"}\nequipRef: {kind:\"Ref\"}\nkind: {kind:\"Str\"}\ntz: {kind:\"Str\"}\npoint: {kind:\"Marker\"}\npointType: {markerChoice: \"sensor,cmd,sp\"}","point",,,,,,,,,,,,,,,,,,, ,^template:projMeta,,,,,,,,,,,,,,,,,,,,,,,,,,"ui::projMeta",,"Legacy backward compatible templates",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^template],,,^lib:proj,["LintTemplate"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"name: {kind:\"Str\" const validate:\"validateProjName\"}\ndis: {kind:\"Str\" validate:\"validateNotBlank\" optional}\ndoc: {kind:\"Str\" optional}\nprojMeta: {kind:\"Marker\"}","projMeta",,,,,,,,,,,,,,,,,,, ,^template:projSettings,,,,,,,,,,,,,,,,,,,,,,,,,,"ui::projSettings",,"Legacy backward compatible templates",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^template],,,^lib:ui,["LintTemplate"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"projMeta: {kind:\"Marker\" const ro}\ncreated: {kind:\"DateTime\" const ro hidden}\nversion: {kind:\"Str\" const ro}\ndis: {kind:\"Str\" doc:\"Display name of project\"}\ndoc: {kind:\"Str\" multi:R optional doc:\"Description of project\"}\ndateSpanDefault: {kind:\"Str\" optional placeholder:\"today\" doc:\"Default Span used in 2.1 apps\"}\nsteadyState: {kind:\"Number\" optional unit:\"min\" defVal:1min doc:\"Delay after startup before system is considered steady state\"}\nauditAction: {kind:\"Marker\" optional doc:\"Log every action invocation\"}\nauditCommit: {kind:\"Marker\" optional doc:\"Log every persistent commit\"}","projSettings",,,,,,,,,,,,,,,,,,, ,^template:replicaConfig,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Legacy backward compatible templates",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^template],,,^lib:repl,["LintTemplate"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"id: {kind:\"Ref\" ro transient}\ndis: {kind:\"Str\" ro transient}\nroute: {kind:\"Str\" hidden transient}\nrouteStatus: {kind:\"Str\" hidden transient}\nreplicaState: {kind:\"Str\" hidden transient}\npercent: {kind:\"Number\" hidden transient}\nnumPolls: {kind:\"Number\" hidden transient}\nlastPoll: {kind:\"DateTime\" hidden transient}\npollErr: {kind:\"Str\" hidden transient}\nreplicaConfig: {kind:\"Marker\"}\nmode: {kind:\"Str\" enum:\"live,passive,suspended\"}\nautoSync: {kind:\"Marker\" optional}\nsyncFreq: {kind:\"Number\" defVal:10min}\npollTimeout: {kind:\"Number\" defVal:5min}","replicaConfig",,,,,,,,,,,,,,,,,,, ,^template:rule,,,,,,,,,,,,,,,,,,,,,,,,,"ui::rule",,,"Legacy backward compatible templates",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^template],,,^lib:rule,["LintTemplate"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"ruleReady: { synthetic const kind:\"Dict\" input:\"ruleExt::RuleReadyInput\" }\ndis: { kind:\"Str\" validate:\"validateNotBlank\" }\nrule: { kind:\"Marker\" }\nsparkRule: { kind:\"Marker\" optional }\nkpiRule: { kind:\"Marker\" optional }\ncurRule: { kind:\"Marker\" optional }\nruleOn: { kind:\"Str\" }\nruleFunc: { kind:\"Str\" }\nruleCost: { kind:\"Str\" optional }\ncolor: { kind:\"Str\" optional }\nhelp: { kind:\"Str\" }","rule",,,,,,,,,,"(rec) => do\n count: 0\n if (rec.has(\"sparkRule\")) count = count+1\n if (rec.has(\"kpiRule\")) count = count+1\n if (rec.has(\"curRule\")) count = count+1\n if (count != 1) throw \"Must set either 'sparkRule' or 'kpiRule' marker tag\"\nend",,,,,,,,, ,^template:ruleTuning,,,,,,,,,,,,,,,,,,,,,,,,,"ui::tuning",,,"Legacy backward compatible templates",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^template],,,^lib:rule,["LintTemplate"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"dis: { kind:\"Str\" validate:\"validateNotBlank\" }\nruleTuning: { kind:\"Marker\" }\nruleRef: { kind:\"Ref\" }\ntargetFilter: { kind:\"Str\" optional }","ruleTuning",,,,,,,,,,,,,,,,,,, ,^template:site,,,,,,,,,,,,,,,,,,,,,,,,,,"equipExt::site",,"Legacy backward compatible templates",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^template],,,^lib:equip,["LintTemplate"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"dis: {kind:\"Str\" validate:\"validateNotBlank\"}\ntz: {kind:\"Str\" defExpr:\"tz()\"}\narea: {kind:\"Number\" defExpr:\"if (isMetric()) 0m² else 0ft²\" optional}\ngeoCountry: {kind:\"Str\" defVal:\"US\" optional}\nyearBuilt: {kind:\"Number\" optional}\nweatherRef: {kind:\"Ref\" optional}\nsite: {kind:\"Marker\"}","site",,,,,,,,,,,,,,,,,,, ,^template:sparkEquipOpts,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Legacy backward compatible templates",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^template],,,^lib:rule,["LintTemplate"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"showWeather: { kind:\"Bool\" }\naddPoints: { disKey:\"ui::addPoints\" kind:\"Ref[]\" navCluster}","sparkEquipOpts",,,,,,,,,,,,,,,,,,, ,^template:svgOpts,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Legacy backward compatible templates",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^template],,,^lib:core,["LintTemplate"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"size: {kind:\"Str\" size:\"150px\" defVal:\"1000,800\", placeholder:\"width,height\"}","svgOpts",,,,,,,,,,,,,,,,,,, ,^template:tariffCostOpts,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Legacy backward compatible templates",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^template],,,^lib:tariff,["LintTemplate"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"meter: { kind:\"Str\" disKey:\"ui::meter\" enum:\"elec,water,gas\"}","tariffCostOpts",,,,,,,,,,,,,,,,,,, ,^template:uiSettings,,,,,,,,,,,,,,,,,,,,,,,,,,"ui::ui",,"Legacy backward compatible templates",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^template],,,^lib:ui,["LintTemplate"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"uiMeta: {kind:\"Marker\" const ro}\nprojIncludeFilter: {kind:\"Str\" optional}","uiSettings",,,,,,,,,,,,,,,,,,, ,^template:user,,,,,,,,,,,,,,,,,,,,,,,,,,"ui::user",,"Legacy backward compatible templates",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^template],,,^lib:user,["LintTemplate"],,,,,,,,,,,,,,,,,"uiMisc::UserWizard.onCommit",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"// core\nusername: {kind:\"Str\" const validate:\"validateUsername\"}\nid: {kind:\"Ref\" const hidden}\ndis: {kind:\"Str\" validate:\"validateNotBlank\"}\nemail: {kind:\"Str\" optional}\nuserRole: {kind:\"Str\"}\ntz: {kind:\"Str\" defExpr:\"tz()\"}\ncreated: {kind:\"DateTime\" const ro optional defExpr:\"now()\" format:\"D-MMM-YYYY\"}\nuser: {kind:\"Marker\"}\ndisabled: {kind:\"Marker\" optional}\nexpires: {kind:\"Date\" optional}\nlastLogin: {kind:\"DateTime\" const ro optional hidden}\n\n// auth\nuserAuth: {kind:\"Dict\"}\nuserReset: {kind:\"Dict\" hidden optional}\n\n// Access Filters\nprojAccessFilter: {kind:\"Str\" optional validate:\"validateFilter\"}\nsiteAccessFilter: {kind:\"Str\" optional validate:\"validateFilter\"}\nappAccess: {kind:\"Str\" optional}\nreportCanSave: {kind:\"Marker\" optional}\n\n// topics\ntopicsEmailDigest: {kind:\"Str\" optional}\ntopicsEmailImmediate: {kind:\"Str\" optional}","user",,,,,,,,,,"(rec) => do\n id: rec[\"id\"].toStr.split(\":\").last\n username: \"\" + rec[\"username\"]\n if (id != username) throw \"User id must match username\"\nend",,,,,,,,, ,^template:view,,,,,,,,,,,,,,,,,,,,,,,,,"ui::view",,,"Legacy backward compatible templates",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^template],,,^lib:core,["LintTemplate"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"view: {kind:\"Str\" validate:\"validateTagName\"}\ndis: {kind:\"Str\" validate:\"validateNotBlank\"}\nsrc: {kind:\"Str\" validate:\"validateNotBlank\" defVal:\"view: {inherit:\\\"table\\\"}\"}\nappName: {kind:\"Str\" defVal:\"misc\"}","view",,,,,,,,,,,,,,,,,,, ,^template:weatherStation,,,,,,,,,,,,,,,,,,,,,,,,,,"ui::weather",,"Legacy backward compatible templates",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^template],,,^lib:weather,["LintTemplate"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"weatherInput: {kind:\"Dict\" const synthetic input:\"uiMisc::WeatherStationInput\"}\ndis: {kind:\"Str\" validate:\"validateNotBlank\"}\ngeoCoord: {kind:\"Coord\" const ro optional}\ngeoCity: {kind:\"Str\" const ro}\ngeoState: {kind:\"Str\" const ro optional}\ngeoCountry: {kind:\"Str\" const ro}\ntz: {kind:\"Str\"}\nweather: {kind:\"Marker\"}\nweatherStation: {kind:\"Marker\"}\nweatherAutoSyncForecast: {kind:\"Marker\" defVal:M optional}\nweatherAutoSyncHis: {kind:\"Marker\" defVal:M optional}\nweatherSyncIds: {kind:\"Str[]\" input:\"uiMisc::WeatherSyncIdsInput\" defVal:[\"temp\", \"condition\", \"humidity\", \"sunrise\"]}","weatherStation",,,,,,,,,,"(rec) => do\n if (rec.has(\"weatherAutoSyncForecast\") or rec.has(\"weatherAutoSyncHis\"))\n do\n c: rec[\"geoCoord\"]\n if (c == null or coordLat(c) == 0 or coordLng(c) == 0) throw \"Select a weather station\"\n end\nend",,,,,,,,, ,^templateName,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Template by name - legacy support",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^str],,,^lib:core,["LintStr"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^thd,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Total harmonic distortion",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^marker],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^thermal,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Related to energy of heat",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^marker],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^thermal-meter,,,,,,,,"equip\npoint",,,,,,,,,,,,,,,,,,,,"Meter to measure energy transfer via fluid",,,,,,,,,,,,,,,,,,,,,,,,"bolt",,,,[^meter],,,^lib:phIoT,["LintEquip","LintMarker"],,,^meterScopeType,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^thermostat,,,,,,,,"// NOTE: this list should be kept in sync with hvac-zonc-space\nzone air temp sensor point\nzone air temp effective sp point\nzone air temp occ cooling sp point\nzone air temp occ heating sp point\nzone air temp unocc cooling sp point\nzone air temp unocc heating sp point\nzone air temp standby cooling sp point\nzone air temp standby heating sp point\nzone air humidity point\nzone air co2 point",[],,,,,,,,,,,,,,,,,,,"Senses and controls temperature of space in HVAC system. Thermostats\nmay provide an interface for setpoint control.",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^equip],,,^lib:phIoT,["LintEquip","LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`https://en.wikipedia.org/wiki/Thermostat`,, ,^thread,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Low power wireless IoT protocol",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^protocol],,,^lib:phIct,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`https://en.wikipedia.org/wiki/Thread_(network_protocol)`,, ,^time,,,,,,,,,,,,,,,,,,,,,,,,,,,,"ISO 8601 time as hour, minute, seconds: '09:51:27.354'",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^scalar],,,^lib:ph,["LintTime"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^topicsEmailDigest,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Applied to indicate which topics the user is subscribed to for\ndaily digest email delivery. The value must be a comma separated\nlist of 'topic' record ids such as \"@a-1,@b-2\".",,,,,,,,,,,,,,,,,,,,,,,,,,"ui::TopicsEmailInput",,[^str],,,^lib:user,["LintStr"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^topicsEmailImmediate,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Applied to indicate which topics the user is subscribed to for\nimmediate email delivery. The value must be a comma separated list\nof 'topic' record ids such as \"@a-1,@b-2\".",,,,,,,,,,,,,,,,,,,,,,,,,,"ui::TopicsEmailInput",,[^str],,,^lib:user,["LintStr"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^total,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Complete or absolute",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^marker],,,^lib:phScience,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, @p:demo:r:25ce137f-659b49aa "trait",^trait,,,,,,,,,,,,,,,,,,,,,,,,,,,,"A trait is a feature, which allows Haystack Objects to have multiple features, and inherit other features.",,M,,,,,,,,,,,,,,,,,,,,,,,,,,[^feature],,,^lib:proj_demo,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,^marker,,,,,,,,,,,,,,,`https://en.wikipedia.org/wiki/Trait_(computer_programming)`,,2020-02-06T01:56:37.344Z @p:demo:r:25ce3046-4c85f0e1 "traitOn",^traitOn,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Associates tag defs to a traits",,M,,,,,,,,,,,,,,,,,,,,,,,,"uiDev::SymbolListInput",,[^association],,,^lib:proj_demo,,,,,,,,,,,,,,,,,^symbol,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2020-02-06T02:03:00.921Z @p:demo:r:25ce27bb-1c8d2859 "traitView",^traitView,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Represents a view of a certain trait",,M,,,,,,,,,,,,,,,,,,,,,,,,,,[^feature],,,^lib:proj_demo,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2020-02-06T01:26:19.293Z ,^transient,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Indicates a value tag which should not be persisted. Transient\nvalues often change frequently and do not provide long term informational\nvalue. Typyically they are stored only in RAM and should not be stored\nto durable storage.",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^marker],,,^lib:ph,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[^def],,,,,,,,,,,,,,,,,,,,, ,^transitive,,,,,,,,,,,,,,,,,,,,,,,,,,,,"This marker is applied to a `relationship` to indicate it is transitive.\nTransitivity requires that if the relationship applies to A,B and B,C\nthen it also applies to A,C.",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^marker],,,^lib:ph,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^trash,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Marks a record for deletion",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^marker],,,^lib:core,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^tripleDuct,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Three ducts: hotDeck, coldDeck, or neutralDeck",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^ductConfigType],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^tvoc,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Total volatile organic compound (TVOC). This is a general term applied to the overall total volatile organic compouns (VOCs) detected.",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^airQuality],,,^lib:phScience,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,["µg/m³","ppb"],,,,[^air],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^typeName,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Fantom type qname",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^str],,,^lib:core,["LintStr"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, @p:demo:r:25d7473e-a3b837e7 "typeScript",^typeScript,,,,,,,,,,,,,,,,,,,M,,,,,,,,,,,M,,,,,,,,,,M,,,,,,,,,,,,,,,,[^feature],,,^lib:proj_demo,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,,2020-02-12T23:31:10.691Z ,^tz,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Timezone identifier from standard timezone database",,,,,,,,"Abidjan\nAccra\nAdak\nAddis_Ababa\nAdelaide\nAden\nAlgiers\nAlmaty\nAmman\nAmsterdam\nAnadyr\nAnchorage\nAndorra\nAntananarivo\nAntigua\nApia\nAqtau\nAqtobe\nAraguaina\nAshgabat\nAsmara\nAsuncion\nAthens\nAtikokan\nAuckland\nAzores\nBaghdad\nBahia\nBahia_Banderas\nBahrain\nBaku\nBangkok\nBarbados\nBeirut\nBelem\nBelgrade\nBelize\nBerlin\nBermuda\nBeulah\nBishkek\nBissau\nBlanc-Sablon\nBoa_Vista\nBogota\nBoise\nBrisbane\nBroken_Hill\nBrunei\nBrussels\nBucharest\nBudapest\nBuenos_Aires\nCET\nCST6CDT\nCairo\nCambridge_Bay\nCampo_Grande\nCanary\nCancun\nCape_Verde\nCaracas\nCasablanca\nCasey\nCatamarca\nCayenne\nCayman\nCenter\nCeuta\nChagos\nChatham\nChicago\nChihuahua\nChisinau\nChita\nChoibalsan\nChristmas\nChuuk\nCocos\nColombo\nComoro\nCopenhagen\nCordoba\nCosta_Rica\nCreston\nCuiaba\nCuracao\nCurrie\nDamascus\nDanmarkshavn\nDar_es_Salaam\nDarwin\nDavis\nDawson\nDawson_Creek\nDenver\nDetroit\nDhaka\nDili\nDjibouti\nDubai\nDublin\nDumontDUrville\nDushanbe\nEET\nEST\nEST5EDT\nEaster\nEdmonton\nEfate\nEirunepe\nEl_Aaiun\nEl_Salvador\nEnderbury\nEucla\nFakaofo\nFaroe\nFiji\nFortaleza\nFunafuti\nGMT\nGMT+1\nGMT+10\nGMT+11\nGMT+12\nGMT+2\nGMT+3\nGMT+4\nGMT+5\nGMT+6\nGMT+7\nGMT+8\nGMT+9\nGMT-1\nGMT-10\nGMT-11\nGMT-12\nGMT-13\nGMT-14\nGMT-2\nGMT-3\nGMT-4\nGMT-5\nGMT-6\nGMT-7\nGMT-8\nGMT-9\nGalapagos\nGambier\nGaza\nGibraltar\nGlace_Bay\nGodthab\nGoose_Bay\nGrand_Turk\nGuadalcanal\nGuam\nGuatemala\nGuayaquil\nGuyana\nHST\nHalifax\nHavana\nHebron\nHelsinki\nHermosillo\nHo_Chi_Minh\nHobart\nHong_Kong\nHonolulu\nHovd\nIndianapolis\nInuvik\nIqaluit\nIrkutsk\nIstanbul\nJakarta\nJamaica\nJayapura\nJerusalem\nJohannesburg\nJujuy\nJuneau\nKabul\nKaliningrad\nKamchatka\nKampala\nKarachi\nKathmandu\nKerguelen\nKhandyga\nKhartoum\nKiev\nKiritimati\nKnox\nKolkata\nKosrae\nKrasnoyarsk\nKuala_Lumpur\nKuching\nKuwait\nKwajalein\nLa_Paz\nLa_Rioja\nLagos\nLima\nLindeman\nLisbon\nLondon\nLord_Howe\nLos_Angeles\nLouisville\nLuxembourg\nMET\nMST\nMST7MDT\nMacau\nMaceio\nMacquarie\nMadeira\nMadrid\nMagadan\nMahe\nMajuro\nMakassar\nMaldives\nMalta\nManagua\nManaus\nManila\nMaputo\nMarengo\nMarquesas\nMartinique\nMatamoros\nMauritius\nMawson\nMayotte\nMazatlan\nMelbourne\nMendoza\nMenominee\nMerida\nMetlakatla\nMexico_City\nMidway\nMinsk\nMiquelon\nMogadishu\nMonaco\nMoncton\nMonrovia\nMonterrey\nMontevideo\nMonticello\nMontreal\nMoscow\nMuscat\nNairobi\nNassau\nNauru\nNdjamena\nNew_Salem\nNew_York\nNicosia\nNipigon\nNiue\nNome\nNorfolk\nNoronha\nNoumea\nNovokuznetsk\nNovosibirsk\nOjinaga\nOmsk\nOral\nOslo\nPST8PDT\nPago_Pago\nPalau\nPalmer\nPanama\nPangnirtung\nParamaribo\nParis\nPerth\nPetersburg\nPhnom_Penh\nPhoenix\nPitcairn\nPohnpei\nPontianak\nPort-au-Prince\nPort_Moresby\nPort_of_Spain\nPorto_Velho\nPrague\nPuerto_Rico\nPyongyang\nQatar\nQyzylorda\nRainy_River\nRangoon\nRankin_Inlet\nRarotonga\nRecife\nRegina\nRel\nResolute\nReunion\nReykjavik\nRiga\nRio_Branco\nRio_Gallegos\nRiyadh\nRome\nRothera\nSaipan\nSakhalin\nSalta\nSamara\nSamarkand\nSan_Juan\nSan_Luis\nSanta_Isabel\nSantarem\nSantiago\nSanto_Domingo\nSao_Paulo\nScoresbysund\nSeoul\nShanghai\nSimferopol\nSingapore\nSitka\nSofia\nSouth_Georgia\nSrednekolymsk\nSt_Johns\nStanley\nStockholm\nSwift_Current\nSydney\nSyowa\nTahiti\nTaipei\nTallinn\nTarawa\nTashkent\nTbilisi\nTegucigalpa\nTehran\nTell_City\nThimphu\nThule\nThunder_Bay\nTijuana\nTirane\nTokyo\nTongatapu\nToronto\nTripoli\nTroll\nTucuman\nTunis\nUCT\nUTC\nUlaanbaatar\nUrumqi\nUshuaia\nUst-Nera\nUzhgorod\nVancouver\nVevay\nVienna\nVientiane\nVilnius\nVincennes\nVladivostok\nVolgograd\nVostok\nWET\nWake\nWallis\nWarsaw\nWhitehorse\nWinamac\nWindhoek\nWinnipeg\nYakutat\nYakutsk\nYekaterinburg\nYellowknife\nYerevan\nZaporozhye\nZurich",,,,,,,,,,,,,,,,,,"ui::TzInput",,[^str],,,^lib:ph,["LintStr"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[^point,^site,^weatherStation],,,,,,,,,,,,,,,,,,,,, ,^ui2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[^str],,,^lib:core,["LintStr"],,,,,,,,,,,,,,M,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^unit,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Unit identifier from standard unit database",,,,,,,,"- %: percent (dimensionless)\n- px: pixel (dimensionless)\n- db: decibel (dimensionless)\n- pf: power_factor (dimensionless)\n- pH: ph (dimensionless)\n- %RH: percent_relative_humidity (dimensionless)\n- gH₂O/kgAir: grams_of_water_per_kilogram_dry_air (dimensionless)\n- V/K: volts_per_degree_kelvin (dimensionless)\n- °daysC: degree_days_celsius (dimensionless)\n- °daysF: degree_days_fahrenheit (dimensionless)\n- %obsc/ft: percent_obscuration_per_foot (dimensionless)\n- %obsc/m: percent_obscuration_per_meter (dimensionless)\n- psi/°F: psi_per_degree_fahrenheit (dimensionless)\n- m²/N: square_meters_per_newton (dimensionless)\n- W/m²K: watts_per_square_meter_degree_kelvin (dimensionless)\n- dBmV: db_millivolt (dimensionless)\n- dBµV: db_microvolt (dimensionless)\n- ppu: parts_per_unit (dimensionless)\n- ppm: parts_per_million (dimensionless)\n- ppb: parts_per_billion (dimensionless)\n- g/kg: grams_per_kilogram (dimensionless)\n- rad: radian (dimensionless)\n- deg: degrees_angular (dimensionless)\n- degPh: degrees_phase (dimensionless)\n- sr: steradian (dimensionless)\n- ntu: nephelometric_turbidity_units (dimensionless)\n- fnu: formazin_nephelometric_unit (dimensionless)\n- PUE: power_usage_effectiveness (dimensionless)\n- DCIE: data_center_infrastructure_efficiency (dimensionless)\n- Af: afghani (currency)\n- DZD: algerian_dinar (currency)\n- ARS: argentine_peso (currency)\n- Դ: armenian_dram (currency)\n- ƒ: aruban_guilder_florin (currency)\n- AUD: australian_dollar (currency)\n- ман: azerbaijanian_manat (currency)\n- BSD: bahamian_dollar (currency)\n- BHD: bahraini_dinar (currency)\n- ฿: baht (currency)\n- PAB: balboa (currency)\n- BBD: barbados_dollar (currency)\n- Br: belarussian_ruble (currency)\n- BZD: belize_dollar (currency)\n- BMD: bermudian_dollar (currency)\n- VEF: bolivar_fuerte (currency)\n- BOB: boliviano (currency)\n- R\$: brazilian_real (currency)\n- BND: brunei_dollar (currency)\n- лв: bulgarian_lev (currency)\n- BIF: burundi_franc (currency)\n- CAD: canadian_dollar (currency)\n- CVE: cape_verde_escudo (currency)\n- KYD: cayman_islands_dollar (currency)\n- ₵: cedi (currency)\n- XAF: cfa_franc_bceao (currency)\n- XPF: cfp_franc (currency)\n- CLP: chilean_peso (currency)\n- 元: chinese_yuan (currency)\n- CDF: congolese_franc (currency)\n- C\$: cordoba_oro (currency)\n- ₡: costa_rican_colon (currency)\n- Kn: croatian_kuna (currency)\n- CUP: cuban_peso (currency)\n- Kč: czech_koruna (currency)\n- GMD: dalasi (currency)\n- kr: danish_krone (currency)\n- ден: denar (currency)\n- DJF: djibouti_franc (currency)\n- Db: dobra (currency)\n- DOP: dominican_peso (currency)\n- ₫: dong (currency)\n- XCD: east_caribbean_dollar (currency)\n- EGP: egyptian_pound (currency)\n- ETB: ethiopian_birr (currency)\n- €: euro (currency)\n- FKP: falkland_islands_pound (currency)\n- FJD: fiji_dollar (currency)\n- HUF: forint (currency)\n- GIP: gibraltar_pound (currency)\n- HTG: gourde (currency)\n- ₲: guarani (currency)\n- GNF: guinea_franc (currency)\n- GYD: guyana_dollar (currency)\n- HKD: hong_kong_dollar (currency)\n- ₴: hryvnia (currency)\n- Kr: iceland_krona (currency)\n- ₹: indian_rupee (currency)\n- IRR: iranian_rial (currency)\n- IQD: iraqi_dinar (currency)\n- JMD: jamaican_dollar (currency)\n- JOD: jordanian_dinar (currency)\n- Sh: kenyan_shilling (currency)\n- PGK: kina (currency)\n- ₭: kip (currency)\n- КМ: konvertibilna_marka (currency)\n- KWD: kuwaiti_dinar (currency)\n- MK: kwacha (currency)\n- Kz: kwanza (currency)\n- MMK: kyat (currency)\n- ლ: lari (currency)\n- LBP: lebanese_pound (currency)\n- ALL: lek (currency)\n- HNL: lempira (currency)\n- Le: leone (currency)\n- RON: leu (currency)\n- LRD: liberian_dollar (currency)\n- LYD: libyan_dinar (currency)\n- SZL: lilangeni (currency)\n- LSL: loti (currency)\n- MGA: malagasy_ariary (currency)\n- RM: malaysian_ringgit (currency)\n- TMT: manat (currency)\n- MUR: mauritius_rupee (currency)\n- MTn: metical (currency)\n- MXN: mexican_peso (currency)\n- MDL: moldavian_leu (currency)\n- MAD: moroccan_dirham (currency)\n- ₦: naira (currency)\n- Nfk: nakfa (currency)\n- NAD: namibia_dollar (currency)\n- NPR: nepalese_rupee (currency)\n- ₪: new_israeli_shekel (currency)\n- NZD: new_zealand_dollar (currency)\n- BTN: ngultrum (currency)\n- KPW: north_korean_won (currency)\n- NOK: norwegian_krone (currency)\n- PEN: nuevo_sol (currency)\n- UM: ouguiya (currency)\n- ₨: pakistan_rupee (currency)\n- MOP: pataca (currency)\n- UYU: peso_uruguayo (currency)\n- ₱: philippine_peso (currency)\n- £: pound_sterling (currency)\n- BWP: pula (currency)\n- zł: pzloty (currency)\n- QAR: qatari_rial (currency)\n- GTQ: quetzal (currency)\n- ZAR: rand (currency)\n- OMR: rial_omani (currency)\n- KHR: riel (currency)\n- MVR: rufiyaa (currency)\n- Rp: rupiah (currency)\n- RUB: russian_ruble (currency)\n- RWF: rwanda_franc (currency)\n- SHP: saint_helena_pound (currency)\n- SAR: saudi_riyal (currency)\n- din: serbian_dinar (currency)\n- SCR: seychelles_rupee (currency)\n- SGD: singapore_dollar (currency)\n- SBD: solomon_islands_dollar (currency)\n- KGS: som (currency)\n- SOS: somali_shilling (currency)\n- ЅМ: somoni (currency)\n- ₩: south_korean_won (currency)\n- Rs: sri_lanka_rupee (currency)\n- SDG: sudanese_pound (currency)\n- SRD: suriname_dollar (currency)\n- SEK: swedish_krona (currency)\n- SFr: swiss_franc (currency)\n- SYP: syrian_pound (currency)\n- TWD: taiwan_dollar (currency)\n- ৳: taka (currency)\n- WST: tala (currency)\n- TZS: tanzanian_shilling (currency)\n- 〒: tenge (currency)\n- TTD: trinidad_and_tobago_dollar (currency)\n- ₮: tugrik (currency)\n- TND: tunisian_dinar (currency)\n- ₤: turkish_lira (currency)\n- AED: uae_dirham (currency)\n- UGX: uganda_shilling (currency)\n- \$: us_dollar (currency)\n- UZS: uzbekistan_sum (currency)\n- Vt: vatu (currency)\n- YER: yemeni_rial (currency)\n- ¥: yen (currency)\n- ZK: zambian_kwacha (currency)\n- ZWL: zimbabwe_dollar (currency)\n- m/s²: meters_per_second_squared (acceleration)\n- rad/s²: radians_per_second_squared (angular acceleration)\n- Js: joule_second (angular momentum)\n- rad/s: radians_per_second (angular velocity)\n- rpm: revolutions_per_minute (angular velocity)\n- m²: square_meter (area)\n- mm²: square_millimeter (area)\n- cm²: square_centimeter (area)\n- km²: square_kilometer (area)\n- in²: square_inch (area)\n- ft²: square_foot (area)\n- yd²: square_yard (area)\n- mile²: square_mile (area)\n- acre: acre (area)\n- F: farad (capacitance)\n- COP: coefficient_of_performance (cooling efficiency)\n- EER: energy_efficiency_ratio (cooling efficiency)\n- kW/ton: kilowatt_per_ton (cooling efficiency)\n- kg/m³: kilograms_per_cubic_meter (density)\n- µg/m³: micrograms_per_cubic_meter (density)\n- C: coulomb (electric charge)\n- Ah: ampere_hour (electric charge)\n- S: siemens (electric conductance)\n- A: ampere (electric current)\n- mA: milliampere (electric current)\n- Am²: ampere_square_meter (electromagnetic moment)\n- A/m²: amperes_per_square_meter (electric current density)\n- V/m: volts_per_meter (electric field strength)\n- V: volt (electric potential)\n- mV: millivolt (electric potential)\n- kV: kilovolt (electric potential)\n- MV: megavolt (electric potential)\n- Ω: ohm (electric resistance)\n- kΩ: kilohm (electric resistance)\n- MΩ: megohm (electric resistance)\n- mΩ: milliohm (electric resistance)\n- S/m: siemens_per_meter (electrical conductivity)\n- Ωm: ohm_meter (electrical resistivity)\n- J: joule (energy)\n- kJ: kilojoule (energy)\n- Wh: watt_hour (energy)\n- kWh: kilowatt_hour (energy)\n- MWh: megawatt_hour (energy)\n- BTU: btu (energy)\n- kBTU: kilobtu (energy)\n- MMBTU: megabtu (energy)\n- hph: horsepower_hour (energy)\n- cal: calorie (energy)\n- therm: therm (energy)\n- tonrefh: tons_refrigeration_hour (energy)\n- MJ: megajoule (energy)\n- GJ: gigajoule (energy)\n- Nm: newton_meter (energy)\n- m³_gas: cubic_meters_natural_gas (energy)\n- ft³_gas: cubic_feet_natural_gas (energy)\n- hundred_cubic_feet_natural_gas: hundred_cubic_feet_natural_gas (energy)\n- thousand_cubic_feet_natural_gas: thousand_cubic_feet_natural_gas (energy)\n- million_cubic_feet_natural_gas: million_cubic_feet_natural_gas (energy)\n- VAh: volt_ampere_hour (apparent energy)\n- kVAh: kilovolt_ampere_hour (apparent energy)\n- MVAh: megavolt_ampere_hour (apparent energy)\n- VARh: volt_ampere_reactive_hour (reactive energy)\n- kVARh: kilovolt_ampere_reactive_hour (reactive energy)\n- MVARh: megavolt_ampere_reactive_hour (reactive energy)\n- J/m²: joules_per_square_meter (energy by area)\n- Wh/m²: watt_hours_per_square_meter (energy by area)\n- Wh/ft²: watt_hours_per_square_foot (energy by area)\n- kWh/m²: kilowatt_hours_per_square_meter (energy by area)\n- kWh/ft²: kilowatt_hours_per_square_foot (energy by area)\n- MWh/m²: megawatt_hours_per_square_meter (energy by area)\n- MWh/ft²: megawatt_hours_per_square_foot (energy by area)\n- MJ/m²: megajoules_per_square_meter (energy by area)\n- MJ/ft²: megajoules_per_square_foot (energy by area)\n- kBTU/ft²: kilobtu_per_square_foot (energy by area)\n- MBTU/ft²: megabtu_per_square_foot (energy by area)\n- J/g: joules_per_gram (enthalpy)\n- J/kg: joules_per_kilogram (enthalpy)\n- J/kg_dry: joules_per_kilogram_dry_air (enthalpy)\n- BTU/lb: btu_per_pound (enthalpy)\n- btu/lb_dry: btus_per_pound_dry_air (enthalpy)\n- kJ/kg: kilojoules_per_kilogram (enthalpy)\n- kJ/kg_dry: kilojoules_per_kilogram_dry_air (enthalpy)\n- MJ/kg_dry: megajoules_per_kilogram_dry_air (enthalpy)\n- cal/g: calorie_per_gram (enthalpy)\n- J/°K: joules_per_degree_kelvin (entropy)\n- kJ/°K: kilojoules_per_degree_kelvin (entropy)\n- MJ/°K: megajoules_per_degree_kelvin (entropy)\n- N: newton (force)\n- lbf: pound_force (force)\n- Hz: hertz (frequency)\n- kHz: kilohertz (frequency)\n- cph: cycles_per_hour (frequency)\n- cpm: cycles_per_minute (frequency)\n- MHz: megahertz (frequency)\n- /min: per_minute (frequency)\n- /s: per_second (frequency)\n- /h: per_hour (frequency)\n- %/s: percent_per_second (frequency)\n- ACH: air_changes_per_hour (frequency)\n- kg/m²: kilograms_per_square_meter (grammage)\n- g/m²: grams_per_square_meter (grammage)\n- K/s: degrees_kelvin_per_second (heating rate)\n- °C/h: degrees_celsius_per_hour (heating rate)\n- °C/min: degrees_celsius_per_minute (heating rate)\n- °F/h: degrees_fahrenheit_per_hour (heating rate)\n- °F/min: degrees_fahrenheit_per_minute (heating rate)\n- K/h: degrees_kelvin_per_hour (heating rate)\n- K/min: degrees_kelvin_per_minute (heating rate)\n- lx: lux (illuminance)\n- fc: footcandle (illuminance)\n- phot: phot (illuminance)\n- H: henry (inductance)\n- W/m²_irr: watts_per_square_meter_irradiance (irradiance)\n- W/ft²_irr: watts_per_square_foot_irradiance (irradiance)\n- m: meter (length)\n- µm: micrometer (length)\n- mm: millimeter (length)\n- cm: centimeter (length)\n- km: kilometer (length)\n- in: inch (length)\n- ft: foot (length)\n- yd: yard (length)\n- mile: mile (length)\n- cd/m²: candelas_per_square_meter (luminance)\n- cd/ft²: candels_per_square_foot (luminance)\n- lm: lumen (luminous flux)\n- cd: candela (luminous intensity)\n- A/m: amperes_per_meter (magnetic field strength)\n- Wb: weber (magnetic flux)\n- T: tesla (magnetic flux density)\n- kg: kilogram (mass)\n- mg: milligram (mass)\n- g: gram (mass)\n- oz: ounce (mass)\n- lb: pound (mass)\n- klb: kilopound (mass)\n- ton: metric_ton (mass)\n- t: short_ton (mass)\n- kg/s: kilograms_per_second (mass flow)\n- kg/min: kilograms_per_minute (mass flow)\n- kg/h: kilograms_per_hour (mass flow)\n- lb/min: pounds_per_minute (mass flow)\n- lb/h: pounds_per_hour (mass flow)\n- lb/s: pounds_per_second (mass flow)\n- klb/h: kilopounds_per_hour (mass flow)\n- g/s: grams_per_second (mass flow)\n- g/min: grams_per_minute (mass flow)\n- ton/h: metric_tons_per_hour (mass flow)\n- Ns: newton_second (momentum)\n- W: watt (power)\n- mW: milliwatt (power)\n- kW: kilowatt (power)\n- MW: megawatt (power)\n- GW: gigawatt (power)\n- BTU/h: btus_per_hour (power)\n- therm/h: therms_per_hour (power)\n- hp: horsepower (power)\n- ftlbs/sec: foot_pounds_per_second (power)\n- tonref: tons_refrigeration (power)\n- kBTU/h: kilobtus_per_hour (power)\n- MMBTU/h: megabtus_per_hour (power)\n- J/h: joules_per_hour (power)\n- kJ/h: kilojoules_per_hour (power)\n- MJ/h: megajoules_per_hour (power)\n- GJ/h: gigajoules_per_hour (power)\n- W/m²: watts_per_square_meter (power by area)\n- W/ft²: watts_per_square_foot (power by area)\n- kW/m²: kilowatts_per_square_meter (power by area)\n- kW/ft²: kilowatts_per_square_foot (power by area)\n- kBTU/h/ft²: kilobtus_per_hour_per_square_foot (power by area)\n- W/m³/s: watts_per_cubic_meters_per_second (power by volumetric flow)\n- W/cfm: watts_per_cubic_feet_per_minute (power by volumetric flow)\n- kW/kcfm: kilowatts_per_kilocubic_feet_per_minute (power by volumetric flow)\n- kW/gal/min: kilowatts_per_gallons_per_minute (power by volumetric flow)\n- VA: volt_ampere (apparent power)\n- kVA: kilovolt_ampere (apparent power)\n- mVA: megavolt_ampere (apparent power)\n- VAR: volt_ampere_reactive (reactive power)\n- kVAR: kilovolt_ampere_reactive (reactive power)\n- MVAR: megavolt_ampere_reactive (reactive power)\n- Pa: pascal (pressure)\n- kPa: kilopascal (pressure)\n- bar: bar (pressure)\n- atm: atmosphere (pressure)\n- psi: pounds_per_square_inch (pressure)\n- cmH₂O: centimeters_of_water (pressure)\n- inH₂O: inches_of_water (pressure)\n- mmHg: millimeters_of_mercury (pressure)\n- cmHg: centimeters_of_mercury (pressure)\n- inHg: inches_of_mercury (pressure)\n- hPa: hectopascal (pressure)\n- mbar: millibar (pressure)\n- J/kg°K: joules_per_kilogram_degree_kelvin (specific entropy)\n- N/m: newtons_per_meter (surface tension)\n- °F: fahrenheit (temperature)\n- °C: celsius (temperature)\n- K: kelvin (temperature)\n- Δ°F: fahrenheit_degrees (temperature differential)\n- Δ°C: celsius_degrees (temperature differential)\n- ΔK: kelvin_degrees (temperature differential)\n- W/m°K: watts_per_meter_degree_kelvin (thermal conductivity)\n- ns: nanosecond (time)\n- µs: microsecond (time)\n- ms: millisecond (time)\n- cs: hundredths_second (time)\n- ds: tenths_second (time)\n- s: second (time)\n- min: minute (time)\n- h: hour (time)\n- day: day (time)\n- wk: week (time)\n- mo: julian_month (time)\n- yr: year (time)\n- m/s: meters_per_second (velocity)\n- km/s: kilometers_per_second (velocity)\n- km/h: kilometers_per_hour (velocity)\n- mph: miles_per_hour (velocity)\n- ft/s: feet_per_second (velocity)\n- ft/min: feet_per_minute (velocity)\n- mm/s: millimeters_per_second (velocity)\n- mm/min: millimeters_per_minute (velocity)\n- m/min: meters_per_minute (velocity)\n- m/h: meters_per_hour (velocity)\n- knot: knot (velocity)\n- m³: cubic_meter (volume)\n- mm³: cubic_millimeter (volume)\n- cm³: cubic_centimeter (volume)\n- mL: milliliter (volume)\n- hL: hectoliter (volume)\n- L: liter (volume)\n- kL: kiloliter (volume)\n- in³: cubic_inch (volume)\n- ft³: cubic_foot (volume)\n- yd³: cubic_yard (volume)\n- gal: gallon (volume)\n- kgal: kilogallon (volume)\n- qt: quart (volume)\n- pt: pint (volume)\n- fl_oz: fluid_ounce (volume)\n- galUK: imperial_gallon (volume)\n- hft³: hecto_cubic_foot (volume)\n- m³/s: cubic_meters_per_second (volumetric flow)\n- mL/s: milliliters_per_second (volumetric flow)\n- hL/s: hectoliters_per_second (volumetric flow)\n- L/s: liters_per_second (volumetric flow)\n- cfs: cubic_feet_per_second (volumetric flow)\n- cfm: cubic_feet_per_minute (volumetric flow)\n- cfh: cubic_feet_per_hour (volumetric flow)\n- kcfm: kilocubic_feet_per_minute (volumetric flow)\n- galUK/min: imperial_gallons_per_minute (volumetric flow)\n- L/min: liters_per_minute (volumetric flow)\n- gal/min: gallons_per_minute (volumetric flow)\n- gph: gallons_per_hour (volumetric flow)\n- L/h: liters_per_hour (volumetric flow)\n- m³/min: cubic_meters_per_minute (volumetric flow)\n- m³/h: cubic_meters_per_hour (volumetric flow)\n- byte: byte (bytes)\n- kB: kilobyte (bytes)\n- MB: megabyte (bytes)\n- GB: gigabyte (bytes)\n- TB: terabyte (bytes)\n- PB: petabyte (bytes)\n",,,,,,,,,,,,,,,,,,"ui::UnitInput",,[^str],,,^lib:ph,["LintStr"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[^point],,,,,,,,,,,,,,,,,,,,, ,^unitVent,,,^ahuZoneDeliveryType,,,,,"thermostat equip\ndischarge duct equip\nexhaust duct equip\nmixed duct equip\noutside duct equip\nreturn duct equip\nthermostat equip\nfreezeStat sensor point\nheatWheel cmd point\nfaceBypass cmd point\nbypass damper cmd point",,,,,,,,^coolingProcessType,^air,,,,,^air,,,,,,"Unit Ventilator: An FCU that has direct access to outside air to provide\nthe space with ventilation.",,,^ductConfigType,^ductDeckType,,,,,,,,,,,,,,^heatingProcessType,^air,,,,^air,"fan",,,,[^fcu],,,^lib:phIoT,["LintEquip","LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,^air,,,`https://en.wikipedia.org/wiki/Fan_coil_unit`,, ,^unocc,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Unoccupied mode of a space",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^marker],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^uri,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Unverisal resource identifier",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^scalar],,,^lib:ph,["LintUri"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[^bacnetConn,^energyStarConn,^haystackConn,^modbusConn,^opcConn,^sedonaConn,^snmpConn,^sqlConn],,,,,,,,,,,,,,,,,,,,, ,^usedWith,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Legacy tag definitions",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^str],,,^lib:core,["LintStr"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^user,,,,,,,,,,,,,,,,,,,,,,,,,,,,"User account. Users are managed at the host level in the user database.",,,,,,,,,,,,,,,,,,,,,,,,"user",,,,[^entity],,,^lib:user,["LintMarker"],M,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^userAuth,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Defines how a user authenticates.\n See [docSkySpark]`docSkySpark::Security#projUsers`",,,,,,,,,,,,,,,,,,,,,,,,,,"ui::UserAuthInput",,[^dict],,,^lib:user,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^userRole,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Indicates what permissions and access rights the user has.\nSee [docSkySpark]`docSkySpark::Security#projUsers`",,,,,,,,"- op: the user is an operator\n- admin: the user is an administrator\n- su: the user is a super user",,,,,,,,,,,,,,,,,,,,[^str],,,^lib:user,["LintStr"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^username,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Username for an authentication account",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^str],,,^lib:core,["LintStr"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[^energyStarConn,^haystackConn,^obixConn,^sedonaConn,^snmpConn,^sqlConn],,,,,,,,,,,,,,,,,,,,, ,^val,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Data value type",,M,,,,,,,,,,,,,,,,,,,,,,,,,,,,,^lib:ph,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^validate,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Axon expression to validate def",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^str],,,^lib:core,["LintStr"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^valve,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Valve equipment or control point",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^marker],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`https://en.wikipedia.org/wiki/Valve`,, ,^valve-actuator,,,,,,,,"valve cmd point\nvalve sensor point",[^fluid,^pipeSectionType],,,,,,,,,,,,,,,,,,,"Actuator to regulate the flow of fluid.",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^actuator],,,^lib:phIoT,["LintEquip","LintMarker"],,,,,,,,,,,,,,,,,,,,,,^pipeSectionType,,,,,,,,,,,,,,^fluid,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`https://en.wikipedia.org/wiki/Valve`,, ,^vav,,,,,,,,"reheat cmd point\nvavMode sp point\nductArea sp point\nperimeterHeat cmd point",,,,,,,,,,,,,,,,,,,,"Variable air volume terminal unit. VAV systems use a constant\nair temperature with a variable air flow rate.",,,^ductConfigType,,,,,,,,,,,,,,,,,,,,,"fan",,,,[^airTerminalUnit],,,^lib:phIoT,["LintEquip","LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,^vavModulationType,,,,`https://en.wikipedia.org/wiki/Variable_air_volume`,, ,^vav-parallel,,,,,,,,,,,,,,,,,,,,,,,,,,,,"VAV pulls air from outside the primary air flow",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^vavAirCircuitType],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^vav-series,,,,,,,,,,,,,,,,,,,,,,,,,,,,"VAV pulls air from the primary air flow",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^vavAirCircuitType],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^vavAirCircuit,,,,,,,,,,,,,,,,,,,,,,,,,,,,"How does the VAV pull in air",,,,,,,,,,,,,,,,,,,,,,,,,,"ui::ChoiceInput",,[^choice],,,^lib:phIoT,["LintSymbol"],,,,,,,,,,,,,,,,^vavAirCircuitType,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^vavAirCircuitType,,,,,,,,,,,,,,,,,,,,,,,,,,,,"How does the VAV pull in air",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^marker],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^vavMode,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Standardized `vav` operational mode enumeration",,,,,,,,"- cooling:\n- heating:\n- reheat:\n- warmup: morning warmup where AHU is supplying warm air\n- purge: night purge when AHU is supplying 100% fresh air\n- pressurize:\n- depressurize:\n- manual:",,,,,,,,,,,,,,,,,,,,[^str],,,^lib:phIoT,["LintStr"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^vavModulation,,,,,,,,,,,,,,,,,,,,,,,,,,,,"How does VAV modulate the temp based on duct pressure",,,,,,,,,,,,,,,,,,,,,,,,,,"ui::ChoiceInput",,[^choice],,,^lib:phIoT,["LintSymbol"],,,,,,,,,,,,,,,,^vavModulationType,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^vavModulationType,,,,,,,,,,,,,,,,,,,,,,,,,,,,"How does VAV modulate the temp based on duct pressure",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^marker],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^vavZone,,,,,,,,,,,,,,,,,,,,,,,,,,,,"AHU supplies air to VAV terminal units",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^ahuZoneDeliveryType],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^ventilates,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Equipment brings fresh outside air into a space.",,,,,,,,,,,,,,,,,,,,,,,,,,"ui::ChoiceInput",,[^equipFunction],,,^lib:phIoT,["LintSymbol"],,,,,,,,,,,,,,,,^air,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`https://en.wikipedia.org/wiki/Ventilation_(architecture)`,, ,^version,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Version string formatted as decimal integers separated by a dot",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^str],,,^lib:ph,["LintStr"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[^lib,^projMeta,^provBuild,^provImage,^provOverlay,^provPatch],,,,,,,,,,,,,,,,,,,,, ,^verticalTransport,,,,,,,,"equip\npoint",,,,,,,,,,,,,,,,,,,,"Equipment to move humans and materials",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^equip],,,^lib:phIoT,["LintEquip","LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^vfd,,,,,,,,"drive speed point\ndrive freq point",,,,,,,,,,,,,,,,,,,,"Motor with variable frequency drive.",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^motor],,,^lib:phIoT,["LintEquip","LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[^motor],,,,,,,,,,,,,,,,,,,`https://en.wikipedia.org/wiki/Variable-frequency_drive`,, ,^view,,,,,,,,,,,,,,,,,,,,,,,,,,,,"UI view",,,,,,,,,,,,,,,,,,,,,,,,"view",,,,[^feature],,,^lib:core,["LintView"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^view:alerts,,,,,"debug",,,,,,,,,,,,,,,,,,,,,"ui::alerts",,"UI view",,,,,,,,,,,,,,,,,,,,,,,,"view",,,,[^view],,,^lib:core,["LintView"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"view: {inherit:\"table\"}\nsilence: {action:\"alertSilence\"}\ndata: {expr:\"alerts()\"}",,,,,,,,,,,,,,,,,,,,,,"alerts",,, ,^view:apiSettings,,,,,"settings",,,,,,,,,,,,,,,,,,,,,"ui::api",,"UI view",,,,,,,,,,,,,,,,,,,,,,,,"view",,,,[^view],,,^lib:core,["LintView"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"view: {inherit:\"form\"}\nsubmit: {action:\"hostCommit\"}\ndata: {expr:\"hostSettings(\\\"api\\\")\"}",,M,,,,,,,,,,,,,,,,,,,,"apiSettings",,, ,^view:backups,,M,,,"tools",,,,,,,,,,,,,,,,,,,,,"ui::backups",,"UI view",,,,,,,,,,,,,,,,,,,,,,,,"view",,,,[^view],,,^lib:ui,["LintView"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"view: {inherit:\"table\"}\nbackup: {action:\"folioBackup\"}\ndelete: {action:\"folioBackupDelete\"}\ndata: {expr:\"folioBackups()\"}",,,,,,,,,,,,,,,,,,,,,,"backups",,, ,^view:blank,,,,,,,,,,,,,,,,,,,,,,,,,,,,"UI view",,,,,,,,,,,,,,,,,,,,,,,,"view",,,,[^view],,,^lib:core,["LintView"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"view: { uiType: \"ui::BlankView\" vizType:\"blank\" }",,,,,,,,,,,,,,,,,,,,,,"blank",,, ,^view:chart,,,,,,,,,,,,,,,,,,,,,,,,,,"ui::chart",,"UI view",,,,,,,,,,,,,,,,,,,,,,,,"view",,,,[^view],,,^lib:core,["LintView"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"view: {uiType: \"ui::ChartView\" vizType:\"genChart\"}",,,,,,,,,,,,,,,,,,,,,,"chart",,, ,^view:clusterNodes,,,,,"host",,,,,,,,,,,,,,,,,,,,,"ui::cluster",,"UI view",,,,,,,,,,,,,,,,,,,,,,,,"view",,,,[^view],,,^lib:cluster,["LintView"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"view: {inherit:\"table\"}\nlocal: {action:\"clusterLocal\"}\ndebug: {action:\"clusterDebug\"}\nnew: {action:\"clusterNew\"}\nedit: {action:\"clusterEdit\"}\ndelete: {action:\"clusterDelete\"}\nenable: {action:\"clusterEnable\"}\ndisable: {action:\"clusterDisable\"}\nclose: {action:\"clusterClose\" noFlash}\napprove: {action:\"clusterApprove\"}\ndata: {expr:\"clusterReadAll()\"}",,M,,,,,,,,,,,,,,,,,,,,"clusterNodes",,, ,^view:clusterSettings,,,,,"settings",,,,,,,,,,,,,,,,,,,,,"ui::cluster",,"UI view",,,,,,,,,,,,,,,,,,,,,,,,"view",,,,[^view],,,^lib:cluster,["LintView"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"view: {inherit:\"form\"}\nsubmit: {action:\"hostCommit\"}\ndata: {expr:\"hostSettings(\\\"cluster\\\")\"}",,M,,,,,,,,,,,,,,,,,,,,"clusterSettings",,, ,^view:codeEditor,,M,,,"code",,,,,,,,,,,,,,,"func",,,,,,"ui::editor",,"UI view",,,,,,,,,,,,,,,,,,,,,,,,"view",,,,[^view],,,^lib:ui,["LintView"],,,,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,"view: { uiType:\"uiDev::DevView\" }\nuri: { var defVal:`dev:blank` }\nshowNav: { var defVal:\"funcs\" }\nshowTool: { var defVal:\"hide\" }\nmarkers: { var }",,,,,,,,,,,,,,,,,,,,,,"codeEditor",,, ,^view:connTuning,,M,,,"conn",,,,,,,,,,,,,,,"connTuning",,,,,,"ui::tuning",,"UI view",,,,,,,,,,,,,,,,,,,,,,,,"view",,,,[^view],,,^lib:conn,["LintView"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"view: { inherit:\"table\" }\nnew: { action:\"recNew\" }\nedit: { action:\"recEdit\" }\ntrash: { action:\"recTrash\" }\ndata: { expr:\"readAll(connTuning).sortDis\" }",,,,,,,,,,,,,,,,,,,,,,"connTuning",,, ,^view:conns,,M,,,"conn",,,,,,,,,,,,,,,,,,,,,"ui::connector",,"UI view",,,,,,,,,,,,,,,,,,,,,,,,"view",,,,[^view],,,^lib:conn,["LintView"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"view: { uiType:\"uiBuilder::ConnBuilder\" }",,,,,,,,,,,,,,,,,,,,,,"conns",,, ,^view:crypto,,,,,"host",,,,,,,,,,,,,,,,,,,,,"ui::crypto",,"UI view",,,,,,,,,,,,,,,,,,,,,,,,"view",,,,[^view],,,^lib:core,["LintView"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"view: {inherit:\"table\"}\ntrustUri: {action:\"cryptoTrustUri\" templateName:\"cryptoTrust\"}\ndelete: {action:\"cryptoEntryDelete\"}\nrename: {action:\"cryptoEntryRename\" templateName:\"cryptoRename\"}\ndata: {expr:\"cryptoReadAllKeys()\"}",,M,,,,,,,,,,,,,,,,,,,,"crypto",,, ,^view:debugCluster,,,,,"debug",,,,,,,,,,,,,,,,,,,,,"ui::cluster",,"UI view",,,,,,,,,,,,,,,,,,,,,,,,"view",,,,[^view],,,^lib:cluster,["LintView"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"view: {inherit:\"text\"}\ndata: {expr:\"clusterDebugView()\"}",,M,,,,,,,,,,,,,,,,,,,,"debugCluster",,, ,^view:debugExts,,M,,,"debug",,,,,,,,,,,,,,,,,,,,,"ui::exts",,"UI view",,,,,,,,,,,,,,,,,,,,,,,,"view",,,,[^view],,,^lib:ui,["LintView"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"view: {inherit:\"table\"}\nhideCols: {var defVal:[\"icon\"]}\ndata: {expr:\"exts()\"}",,,,,,,,,,,,,,,,,,,,,,"debugExts",,, ,^view:debugFolio,,M,,,"debug",,,,,,,,,,,,,,,,,,,,,"ui::folio",,"UI view",,,,,,,,,,,,,,,,,,,,,,,,"view",,,,[^view],,,^lib:ui,["LintView"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"view: {inherit:\"table\"}\nmode: {var input kind:\"Str\" enum:\"Summary,Reads by Tag,Reads by Plan,Watches\" defVal:\"Summary\"}\nrefresh: {dis:\"Refresh\" noFlash action:\"noop\"}\ndetails: {dis:\"Details\" noFlash select action:\"folioDebugDetails\"}\ndata: {expr:\"folioDebug({{mode}})\"}",,,,,,,,,,,,,,,,,,,,,,"debugFolio",,, ,^view:debugHost,,,,,"debug",,,,,,,,,,,,,,,,,,,,,"ui::host",,"UI view",,,,,,,,,,,,,,,,,,,,,,,,"view",,,,[^view],,,^lib:core,["LintView"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"view: {inherit:\"text\"}\ndata: {expr:\"debugHost()\"}",,M,,,,,,,,,,,,,,,,,,,,"debugHost",,, ,^view:debugProj,,,,,"debug",,,,,,,,,,,,,,,,,,,,,"ui::proj",,"UI view",,,,,,,,,,,,,,,,,,,,,,,,"view",,,,[^view],,,^lib:ui,["LintView"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"view: {inherit:\"text\"}\ndata: {expr:\"debugProj()\"}",,M,,,,,,,,,,,,,,,,,,,,"debugProj",,, ,^view:degreeDay,,,,,"weather",,,,,,,,,,,,,,,,,,,,,"ui::degreeDays",,"UI view",,,,,,,,,,,,,,,,,,,,,,,,"view",,,,[^view],,,^lib:weather,["LintView"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"view: { inherit:\"chart\" }\nweatherRefs: { var input share kind:\"Ref[]\" disKey:\"ui::weather\" navCluster }\nspan: { var input share kind:\"Span\" defVal:Span(\"today\") }\ndata: { expr:\"weatherDegreeDays({{weatherRefs}}, {{span}})\" }",,,,,,,,,,,,,,,,,,,,,,"degreeDay",,, @p:demo:r:25aa2aba-a92f33ef "Charts",^view:demoCharts,,M,,,"demo",,,,,,,,,,,,,,,,,,,,"Charts",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,^lib:proj_demo,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"view: {inherit:\"chart\"}\nspan: {var input kind:\"Span\" defVal:Span(\"yesterday\")}\nsample: {var input kind:\"Str\" defVal:\"AHU\" enum:\"AHU\" enum:\"AHU,AHU with NA,Stacked Bar,Negative Bar,Donut,HeatMap,Chart Min/Max,Chart Grouping\"}\ndata: {expr:\"demoCharts({{span}}, {{sample}})\"}",,,,,,,,,,,,,,,,,,,,,,"demoCharts",,,2020-01-09T18:17:34.417Z @p:demo:r:25aa2aba-58cf38f5 "Collage",^view:demoCollage,,,,,"demo",,,,,,,,,,,,,,,,,,,,"Collage",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,^lib:proj_demo,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"view: {inherit:\"tile\"}\nlayout: {var kind:\"Str\" defVal:\"grid 3x3; 0 0 1 1; 1 0 1 1; 2 0 1 1; 0 1 1 1; 1 1 1 1; 2 1 1 1; 0 2 1 1; 1 2 1 1; 2 2 1 1\"}\nsubView1: Trio:\n view: {inherit:\"chart\"}\n data: {expr:\"demoCollage(1)\"}\nsubView2: Trio:\n view: {inherit:\"chart\"}\n data: {expr:\"demoCollage(2)\"}\nsubView: Trio:\n view: {inherit:\"chart\"}\n data: {expr:\"demoCollage(3)\"}\nsubView3: Trio:\n view: {inherit:\"chart\"}\n data: {expr:\"demoCollage(4)\"}\nsubView4: Trio:\n view: {inherit:\"chart\"}\n data: {expr:\"demoCollage(5)\"}\nsubView5: Trio:\n view: {inherit:\"chart\"}\n data: {expr:\"demoCollage(6)\"}\nsubView6: Trio:\n view: {inherit:\"chart\"}\n data: {expr:\"demoCollage(7)\"}\nsubView7: Trio:\n view: {inherit:\"chart\"}\n data: {expr:\"demoCollage(8)\"}\nsubView8: Trio:\n view: {inherit:\"chart\"}\n data: {expr:\"demoCollage(9)\"}",,,,,,,,,,,,,,,,,,,,,,"demoCollage",,,2020-01-09T18:17:34.418Z @p:demo:r:25aa2aba-cda52a9a "Energy Summary",^view:demoEnergySummary,,,,,"demo",,,,,,,,,,,,,,,,,,,,"Energy Summary",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,^lib:proj_demo,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"view: {inherit:\"tile\"}\nspan: {var kind:\"Span\" input defVal:Span(\"lastWeek\")}\nlayout: {var kind:\"Str\" defVal:\"grid 2x2; 0 0 1 1; 1 0 1 1; 0 1 1 1; 1 1 1 1\"}\nsubView: Trio:\n view: {inherit:\"chart\"}\n span: {var kind:\"Span\" input binding:\"../span\"}\n data: {expr:\"demoEnergySummary({{span}}, 1)\"}\nsubView1: Trio:\n view: {inherit:\"chart\"}\n span: {var kind:\"Span\" input binding:\"../span\"}\n data: {expr:\"demoEnergySummary({{span}}, 2)\"}\nsubView2: Trio:\n view: {inherit:\"chart\"}\n span: {var kind:\"Span\" input binding:\"../span\"}\n data: {expr:\"demoEnergySummary({{span}}, 3)\"}\nsubView3: Trio:\n view: {inherit:\"chart\"}\n span: {var kind:\"Span\" input binding:\"../span\"}\n data: {expr:\"demoEnergySummary({{span}}, 4)\"}",,,,,,,,,,,,,,,,,,,,,,"demoEnergySummary",,,2020-01-09T18:17:34.419Z @p:demo:r:25aa2aba-b0f52d6c "Equip",^view:demoEquip,,,,,"demo",,,,,,,,,,,,,,,,,,,,"Equip",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,^lib:proj_demo,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"view: {inherit:\"chart\"}\nequip: {var input kind:\"Ref\" navCluster}\nspan: {var input kind:\"Span\" defVal:Span(\"today\")}\nshowWeather: {var input kind:\"Bool\" defVal:F enum:\"Weather Off, Weather On\"}\ndata: {expr:\"demoEquip({{equip}}, {{span}}, {{showWeather}})\"}",,,,,,,,,,,,,,,,,,,,,,"demoEquip",,,2020-01-09T18:17:34.42Z @p:demo:r:25aa2aba-acb2703f "Site Report",^view:demoSitekReport,,,,,"demo",,,,,,,,,,,,,,,,,,,,"Site Report",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,^lib:proj_demo,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"view: {inherit:\"page\"}\nsite: {var kind:\"Ref\" input}\nspan: {var kind:\"Span\" input defVal:Span(\"lastWeek\")}\nsubView: Trio:\n view: {inherit:\"fandoc\"}\n site: {var binding:\"../site\"}\n span: {var binding:\"../span\"}\n data: {expr:\"demoSiteReport({{site}}, {{span}}, 1)\"}\nsubView1: Trio:\n view: {inherit:\"chart\"}\n site: {var binding:\"../site\"}\n span: {var binding:\"../span\"}\n data: {expr:\"demoSiteReport({{site}}, {{span}}, 2)\"}\nsubView2: Trio:\n view: {inherit:\"chart\"}\n site: {var binding:\"../site\"}\n span: {var binding:\"../span\"}\n data: {expr:\"demoSiteReport({{site}}, {{span}}, 3)\"}\nsubView3: Trio:\n view: {inherit:\"chart\"}\n site: {var binding:\"../site\"}\n span: {var binding:\"../span\"}\n data: {expr:\"demoSiteReport({{site}}, {{span}}, 4)\"}",,,,,,,,,,,,,,,,,,,,,,"demoSitekReport",,,2020-01-09T18:17:34.421Z @p:demo:r:25aa2aba-7b08e5aa "Spark Report",^view:demoSparkReport,,,,,"demo",,,,,,,,,,,,,,,,,,,,"Spark Report",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,^lib:proj_demo,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"view: {inherit:\"page\"}\nspan: {var kind:\"Span\" input defVal:Span(\"lastWeek\")}\nsparksChart: Trio:\n view: {inherit:\"chart\"}\n title: {var defVal:\"Spark Timeline\"}\n span: {var kind:\"Span\" binding:\"../span\"}\n data: {expr:\"ruleSparks(null, {{span}}).ruleSparkHis\"}\nbreak1: Trio:\n view: {inherit:\"pageBreak\"}\nsparksTable: Trio:\n view: {inherit:\"table\"}\n title: {var defVal:\"Sparks\"}\n span: {var kind:\"Span\" binding:\"../span\"}\n data: {expr:\"ruleSparks(null, {{span}}).keepCols([\\\"date\\\", \\\"dur\\\", \\\"targetRef\\\", \\\"ruleRef\\\", \\\"times\\\"])\"}\nbreak2: Trio:\n view: {inherit:\"pageBreak\"}\nruleHelp: Trio:\n view: {inherit:\"fandoc\"}\n title: {var defVal:\"Rule Documentation\"}\n span: {var kind:\"Span\" binding:\"../span\"}\n data: {expr:\"ruleSparks(null, {{span}}).sparkRuleHelp\"}",,,,,,,,,,,,,,,,,,,,,,"demoSparkReport",,,2020-01-09T18:17:34.422Z @p:demo:r:25aa2aba-b70e9339 "Tenant Form",^view:demoTenantForm,,,,,"demo",,,,,,,,,,,,,,,,,,,,"Tenant Form",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,^lib:proj_demo,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"view: {inherit:\"form\"}\nsubmit: {action:\"recFormCommit\"}\ndata: {expr: \"read(demoTenant, false).recForm(\\\"demoTenant\\\")\"}",,,,,,,,,,,,,,,,,,,,,,"demoTenantForm",,,2020-01-09T18:17:34.423Z @p:demo:r:25aa2aba-23ddd2bf "Tenants",^view:demoTenants,,,,,"demo",,,,,,,,,,,,,,,,,,,,"Tenants",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,^lib:proj_demo,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"view: {inherit:\"table\"}\nnew: {action:\"recNew\"}\nedit: {action:\"recEdit\"}\ntrash: {action:\"recTrash\"}\ndata: {expr:\"readAll(demoTenant)\"}",,,,,,,"demoTenant",,,,,,,,,,,,,,,"demoTenants",,,2020-01-09T18:17:34.424Z ,^view:demoViz,,M,,,"demo",,M,,,,,,,,,,,,,,,,,,,"Viz",,"UI view",,,,,,,,,,,,,,,,,,,,,,,,"view",,,,[^view],,,^lib:demo,["LintView"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"view: {inherit:\"viz\"}\nopts: {var input:\"demoExt::DemoVizOptsInput\" defVal:{type:\"LinePlotDemo\"}}\nshowData: {dis:\"Show Data\" action:\"demoExt::DemoVizActions.showData\"}\nshowComp: {dis:\"Show Comp\" action:\"demoExt::DemoVizActions.showComp\"}\nshowRend: {dis:\"Show Rend\" action:\"demoExt::DemoVizActions.showRend\"}\nshowSvg: {dis:\"Show SVG\" action:\"demoExt::DemoVizActions.showSvg\"}\nshowEnv: {dis:\"Show Env\" action:\"demoExt::DemoVizActions.showEnv\"}\ndata: {expr:\"demoViz({{opts}})\"}",,,,,,,,,,,,,,,,,,,,,,"demoViz",,, ,^view:devSettings,,,,,"settings",,,,,,,,,,,,,,,,,,,,,"ui::dev",,"UI view",,,,,,,,,,,,,,,,,,,,,,,,"view",,,,[^view],,,^lib:dev,["LintView"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"view: {inherit:\"form\"}\nsubmit: {action:\"hostCommit\"}\ndata: {expr:\"hostSettings(\\\"dev\\\")\"}",,M,,,,,,,,,,,,,,,,,,,,"devSettings",,, ,^view:diag,,,,,"debug",,,,,,,,,,,,,,,,,,,,,"ui::diag",,"UI view",,,,,,,,,,,,,,,,,,,,,,,,"view",,,,[^view],,,^lib:core,["LintView"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"view: {uiType: \"uiMisc::DiagDashboardView\"}\nuri: {var input kind:\"Uri\" defVal:`/`}\ndata: {expr:\"diags({{uri}})\"}",,M,,,,,,,,,,,,,,,,,,,,"diag",,, ,^view:doc,,,,,"doc",,,,,,,,,,,,,,,,,,,,,"ui::doc",,"UI view",,,,,,,,,,,,,,,,,,,,,,,,"view",,,,[^view],,,^lib:core,["LintView"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"view: {uiType: \"uiMisc::DocView\"}",,,,,,,,,,,,,,,,,,,,,,"doc",,, ,^view:emailSettings,,,,,"settings",,,,,,,,,,,,,,,,,,,,,"ui::email",,"UI view",,,,,,,,,,,,,,,,,,,,,,,,"view",,,,[^view],,,^lib:core,["LintView"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"view: {inherit:\"form\"}\nsubmit: {action:\"hostCommit\"}\ntest: {action:\"ui::EmailDialog.test\"}\ndata: {expr:\"hostSettings(\\\"email\\\", {password})\"}",,M,,,,,,,,,,,,,,,,,,,,"emailSettings",,, ,^view:energyOperation,,,,,"energy",,,,,,,,,,,,,,,,,,,,,"ui::operation",,"UI view",,,,,,,,,,,,,,,,,,,,,,,,"view",,,,[^view],,,^lib:energy,["LintView"],,,,,,,,,,,,,,,,,,,51,,,,,,,,,,,,,,,,,,,,,,,,,"view: {inherit:\"chart\"}\nmeters: {input var kind:\"Ref\" navCluster share}\nspan: {input var kind:\"Span\" defVal:Span(\"today\") share}\nopts:Trio:\n var\n kind:\"Dict\"\n disKey:\"ui::options\"\n input:\"energyExt::OperationOptsInput\"\n templateName:\"energyOperationOpts\"\n defVal:Trio:\n mode:\"lineChart\"\n unit:\"\"\n norms:[]\n loads:\"on\"\n showWeather:false\ndata: {expr:\"energyOperation({{meters}}, {{span}}, {{opts}})\"}",,,,,,,,,,,,,,,,,,,,,,"energyOperation",,, ,^view:energyProfile,,,,,"energy",,,,,,,,,,,,,,,,,,,,,"ui::profile",,"UI view",,,,,,,,,,,,,,,,,,,,,,,,"view",,,,[^view],,,^lib:energy,["LintView"],,,,,,,,,,,,,,,,,,,52,,,,,,,,,,,,,,,,,,,,,,,,,"view: {inherit:\"chart\"}\nmeters: {input var kind:\"Ref\" navCluster share}\nspan: {input var kind:\"Span\" defVal:Span(\"today\") share}\nopts:Trio:\n var\n kind:\"Dict\"\n disKey:\"ui::options\"\n input: \"energyExt::ProfileOptsInput\"\n templateName:\"energyProfileOpts\"\n defVal:Trio:\n mode:\"dailyAverage\"\n norms:[]\n baseline:\"none\"\n includeSubmeters:true\n days:\"all\"\n unit:\"\"\ndata: {expr:\"energyProfile({{meters}}, {{span}}, {{opts}})\"}",,,,,,,,,,,,,,,,,,,,,,"energyProfile",,, ,^view:energySwivel,,,,,"energy",,,,,,,,,,,,,,,,,,,,,"ui::swivel",,"UI view",,,,,,,,,,,,,,,,,,,,,,,,"view",,,,[^view],,,^lib:energy,["LintView"],,,,,,,,,,,,,,,,,,,53,,,,,,,,,,,,,,,,,,,,,,,,,"uiViewBar: {var navPath:\"sites\"}\nview: {uiType:\"uiMisc::SwivelView\"}\nsites: {input var disKey:\"ui::sites\" kind:\"Ref[]\" navCluster navSelAny share}\nspan: {input var kind:\"Span\" defVal:Span(\"today\") share}\nopts: {var input:\"energyExt::EnergySwivelInput\" kind:\"Dict\" defVal:{}}\ndata: {expr:\"energySwivel({{sites}}, {{span}}, {{opts}})\"}",,,,,,,,,,,,,,,,,,,,,,"energySwivel",,, ,^view:energyUsage,,,,,"energy",,,,,,,,,,,,,,,,,,,,,"ui::usage",,"UI view",,,,,,,,,,,,,,,,,,,,,,,,"view",,,,[^view],,,^lib:energy,["LintView"],,,,,,,,,,,,,,,,,,,50,,,,,,,,,,,,,,,,,,,,,,,,,"view: {inherit:\"chart\"}\nsites: {input var disKey:\"ui::sites\" kind:\"Ref[]\" navCluster navSelAny share}\nspan: {input var kind:\"Span\" defVal:Span(\"today\") share}\nopts:Trio:\n var\n kind:\"Dict\"\n disKey:\"ui::options\"\n input:\"energyExt::UsageOptsInput\"\n templateName:\"energyUsageOpts\"\n defVal:Trio:\n mode:\"lineChart\"\n unit:\"\"\n rollup:{fold:\"auto\" interval:\"auto\"}\n norms:[]\n baseline:\"none\"\n days:\"all\"\ndata: {expr:\"energyUsage({{sites}}, {{span}}, {{opts}})\"}",,,,,,,,,,,,,,,,,,,,,,"energyUsage",,, ,^view:extSettings,,M,,,"settings",,,,,,,,,,,,,,,,,,,,,"ui::exts",,"UI view",,,,,,,,,,,,,,,,,,,,,,,,"view",,,,[^view],,,^lib:ui,["LintView"],,,,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,"view: {inherit:\"table\"}\nhideCols: {var defVal:[\"icon\"]}\nenable: {disKey:\"ui::enable\" select multi action:\"uiBuilder::LibActions.enable\"}\ndisable: {disKey:\"ui::disable\" select multi action:\"uiBuilder::LibActions.disable\"}\ndata: {expr: \"exts()\"}",,,,,,,,,,,,,,,,,,,,,,"extSettings",,, ,^view:fandoc,,,,,,,,,,,,,,,,,,,,,,,,,,"ui::fandoc",,"UI view",,,,,,,,,,,,,,,,,,,,,,,,"view",,,,[^view],,,^lib:core,["LintView"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"view: {uiType: \"ui::FandocView\" vizType:\"genFandoc\"}",,,,,,,,,,,,,,,,,,,,,,"fandoc",,, ,^view:favs,,,,,"favs",,,,,,,,,,,,,,,,,,,,,"ui::favorites",,"UI view",,,,,,,,,,,,,,,,,,,,,,,,"view",,,,[^view],,,^lib:ui,["LintView"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"view : { inherit:\"tile\" }\nlayout: { var kind:\"Str\" defVal:\"grid 4x1; 0 0 1 1; 1 0 3 1\" }\nfilter: { var kind:\"Str\" defVal:\"fav\" }\nnav: Trio:\n view: { inherit:\"table\" }\n filter: { var binding:\"../filter\" }\n hideHeader: { var defVal:T }\n hideInfo: { var defVal:T }\n hideStripes: { var defVal:T }\n hideCols: { var defVal:[\"icon\",\"filter\"] }\n onSelect: { var defVal:\"filter\" }\n data: { expr:\"favGroups()\" }\ntable: Trio:\n view: { inherit:\"table\" templateName:\"fav\" }\n filter: { var binding:\"../filter\" }\n hideCols: { var defVal:[\"dis\",\"mod\"] }\n edit: { action:\"recEdit\" refresh }\n trash: { action:\"recTrash\" }\n data: { expr:\"favReadAll({{filter}})\" }",,,,,,,,,,,,,,,,,,,,,,"favs",,, ,^view:file,,M,,,"tools",,,,,,,,,,,,,,,,,,,,,"ui::file",,"UI view",,,,,,,,,,,,,,,,,,,,,,,,"view",,,,[^view],,,^lib:io,["LintView"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"view: { uiType:\"uiBuilder::IoBuilder\" }\nhandle: { var kind:\"Uri\" defVal:`io/` }\nnewDir: { disKey:\"ui::newDir\" action:\"ioBuilderNewDir\" select tag:\"uri\" }\nnewFile: { disKey:\"ui::newFile\" action:\"ioBuilderNewFile\" select tag:\"uri\" }\nupload: { disKey:\"ui::upload\" action:\"ioBuilderUpload\" upload multi }\nsave: { disKey:\"ui::save\" action:\"ioBuilderSave\" select tag:\"uri\" }\nrename: { disKey:\"ui::rename\" action:\"ioBuilderRename\" select tag:\"uri\" }\ndelete: { disKey:\"ui::delete\" action:\"ioDelete\" select tag:\"uri\" confirm:{icon:\"warn\" disKey:\"ui::ioDeleteConfirm\" detailsKey:\"ui::ioDeleteConfirmDetails\"} }\ndata: { expr:\"ioDir({{handle}})\" }",,,,,,,,,,,,,,,,,,,,,,"file",,, ,^view:forecast,,,,,"weather",,,,,,,,,,,,,,,,,,,,,"ui::forecast",,"UI view",,,,,,,,,,,,,,,,,,,,,,,,"view",,,,[^view],,,^lib:weather,["LintView"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"view: { inherit:\"chart\" }\nweatherRefs: { var input share kind:\"Ref[]\" disKey:\"ui::weather\" navCluster }\ndata: { expr:\"weatherForecast({{weatherRefs}})\" }",,,,,,,,,,,,,,,,,,,,,,"forecast",,, ,^view:form,,,,,,,,,,,,,,,,,,,,,,,,,,"ui::form",,"UI view",,,,,,,,,,,,,,,,,,,,,,,,"view",,,,[^view],,,^lib:core,["LintView"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"view: {uiType: \"ui::FormView\"}",,,,,,,,,,,,,,,,,,,,,,"form",,, ,^view:hisChart,,,,,"his",,,,,,,,,,,,,,,,,,,,,,"\$","UI view",,,,,,,,,,,,,,,,,,,,,,,,"view",,,,[^view],,,^lib:his,["LintView"],,,,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,"view: {inherit:\"chart\"}\npoints: {var input kind:\"Ref[]\" navCluster navSelAny share}\nspan: {var input kind:\"Span\" defVal:Span(\"today\") share}\ndata: {expr:\"hisChart({{points}}, {{span}})\"}",,,,,,,,,,,,,,,,,,,,,,"hisChart",,, ,^view:hisCorrelate,,,,,"his",,,,,,,,,,,,,,,,,,,,,,"\$","UI view",,,,,,,,,,,,,,,,,,,,,,,,"view",,,,[^view],,,^lib:his,["LintView"],,,,,,,,,,,,,,,,,,,190,,,,,,,,,,,,,,,,,,,,,,,,,"view: { inherit:\"tile\"}\nuiViewBar: { var kind:\"Dict\" defVal:{} showVarLabels:T }\nlayout: { var kind:\"Str\" defVal:\"grid 1x5; 0 0 1 2; 0 2 1 3\" }\nxaxis: { var input kind:\"Ref\" navCluster dis:\"X-Axis\" }\nyaxis: { var input kind:\"Ref\" navCluster dis:\"Y-Axis\" }\nspan: { var input kind:\"Span\" defVal:Span(\"today\") share dis:\"\" }\nfilter: Trio:\n var\n input\n kind:\"Dict\"\n disKey:\"ui::filter\"\n templateName:\"hisCorrelateOpts\"\n defVal: Trio:\n days:\"all\"\nreg: Trio:\n view: { inherit:\"chart\" }\n xaxis: { var binding:\"../xaxis\" }\n yaxis: { var binding:\"../yaxis\" }\n span: { var binding:\"../span\" }\n filter: { var binding:\"../filter\" }\n data: { expr:\"hisCorrelate({{xaxis}}, {{yaxis}}, {{span}}, {{filter}}).first->reg\" }\nhis: Trio:\n view: { inherit:\"chart\" }\n xaxis: { var binding:\"../xaxis\" }\n yaxis: { var binding:\"../yaxis\" }\n span: { var binding:\"../span\" }\n filter: { var binding:\"../filter\" }\n data: { expr:\"hisCorrelate({{xaxis}}, {{yaxis}}, {{span}}, {{filter}}).first->his\" }",,,,,,,,,,,,,,,,,,,,,,"hisCorrelate",,, ,^view:hisEquip,,,,,"his",,,,,,,,,,,,,,,,,,,,,,"\$","UI view",,,,,,,,,,,,,,,,,,,,,,,,"view",,,,[^view],,,^lib:his,["LintView"],,,,,,,,,,,,,,,,,,,110,,,,,,,,,,,,,,,,,,,,,,,,,"view: {inherit:\"chart\"}\nequip: {var input kind:\"Ref\" navCluster share}\nspan: {var input kind:\"Span\" defVal:Span(\"today\") share}\nopts: {var input kind:\"Dict\" disKey:\"ui::options\" templateName:\"hisEquipOpts\" defVal:{showWeather:T}}\ndata: {expr:\"hisEquip({{equip}}, {{span}}, {{opts}})\"}",,,,,,,,,,,,,,,,,,,,,,"hisEquip",,, ,^view:historical,,,,,"weather",,,,,,,,,,,,,,,,,,,,,"ui::historical",,"UI view",,,,,,,,,,,,,,,,,,,,,,,,"view",,,,[^view],,,^lib:weather,["LintView"],,,,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,"view: { inherit:\"chart\" }\nweatherRefs: { var input share kind:\"Ref[]\" disKey:\"ui::weather\" navCluster }\nspan: { var input share kind:\"Span\" defVal:Span(\"today\") }\ndata: { expr:\"weatherHistorical({{weatherRefs}}, {{span}})\" }",,,,,,,,,,,,,,,,,,,,,,"historical",,, ,^view:home,,,,,"home",,,,,,,,,,,,,,,,,,,,,"ui::home",,"UI view",,,,,,,,,,,,,,,,,,,,,,,,"view",,,,[^view],,,^lib:core,["LintView"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"view: {uiType:\"ui::HomeView\"}",,,,,,,,,,,,,,,,,,,,,,"home",,, ,^view:hostSettings,,,,,"settings",,,,,,,,,,,,,,,,,,,,,"ui::host",,"UI view",,,,,,,,,,,,,,,,,,,,,,,,"view",,,,[^view],,,^lib:core,["LintView"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"view: {inherit:\"form\"}\nsubmit: {action:\"hostCommit\"}\ndata: {expr:\"hostSettings(\\\"host\\\")\"}",,M,,,,,,,,,,,,,,,,,,,,"hostSettings",,, ,^view:httpSettings,,,,,"settings",,,,,,,,,,,,,,,,,,,,,"ui::http",,"UI view",,,,,,,,,,,,,,,,,,,,,,,,"view",,,,[^view],,,^lib:core,["LintView"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"view: {inherit:\"form\"}\nsubmit: {action:\"hostCommit\"}\ndata: {expr:\"hostSettings(\\\"http\\\")\"}",,M,,,,,,,,,,,,,,,,,,,,"httpSettings",,, ,^view:iframe,,,,,,,,,,,,,,,,,,,,,,,,,,"ui::iframe",,"UI view",,,,,,,,,,,,,,,,,,,,,,,,"view",,,,[^view],,,^lib:core,["LintView"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"view: {uiType:\"ui::IframeView\"}",,,,,,,,,,,,,,,,,,,,,,"iframe",,, ,^view:install,,,,,"host",,,,,,,,,,,,,,,,,,,,,"ui::install",,"UI view",,,,,,,,,,,,,,,,,,,,,,,,"view",,,,[^view],,,^lib:install,["LintView"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"view: {uiType: \"uiMisc::InstallView\"}\ndata: {expr:\"installPods()\"}",,M,,,,,,,,,,,,,,,,,,,,"install",,, ,^view:jobs,,M,,,"tools",,,,,,,,,,,,,,,,,,,,,"ui::job",,"UI view",,,,,,,,,,,,,,,,,,,,,,,,"view",,,,[^view],,,^lib:job,["LintView"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"view: { inherit:\"tile\" }\nlayout: { var kind:\"Str\" defVal:\"grid 1x2; 0 0 1 1; 0 1 1 1\"}\nsubView1: Trio:\n view: { inherit:\"table\" templateName:\"job\" }\n new: { action:\"recNew\" }\n edit: { action:\"recEdit\" }\n trash: { action:\"recTrash\" }\n sep1: { action:\"uiSep\" }\n run: { disKey:\"ui::run\" action:\"jobRun\" select }\n sep2: { action:\"uiSep\" }\n debug: { disKey:\"ui::debug\" action:\"jobDebug3\" }\n sep3: { action:\"uiSep\" }\n enable: { action:\"recEnable\" }\n disable: { action:\"recDisable\" }\n data: { expr:\"readAll(job).sort(\\\"dis\\\")\" }\nsubView2: Trio:\n view: { inherit:\"table\" }\n hideCols: { var defVal:[\"id\"] }\n cancel: { disKey:\"ui::cancel\" action:\"jobCancel\" select tag:\"handle\" }\n details: { disKey:\"ui::details\" action:\"jobLog\" select tag:\"handle\" }\n data: { expr:\"jobStatusAll3()\" }",,,,,,,,,,,,,,,,,,,,,,"jobs",,, ,^view:kpiSwivel,,,,,"kpi",,,,,,,,,,,,,,,,,,,,,"ui::swivel",,"UI view",,,,,,,,,,,,,,,,,,,,,,,,"view",,,,[^view],,,^lib:rule,["LintView"],,,,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,"view: {uiType:\"uiMisc::SwivelView\"}\nuiViewBar: {var navPath:\"targets\" }\ntargets: {var input kind:\"Ref[]\" navCluster navSelAny share}\nspan: {var input kind:\"Span\" defVal:Span(\"today\") share}\nrules: {var input:\"ruleExt::RulesInput\" kind:\"Str[]\" defVal:[] share ruleType:\"kpi\"}\nopts: {var input:\"ruleExt::KpiSwivelInput\" kind:\"Dict\" defVal:{}}\ndata: {expr:\"ruleKpiSwivel({{targets}}, {{span}}, {{rules}}, {{opts}})\"}",,,,,,,,,,,,,,,,,,,,,,"kpiSwivel",,, ,^view:kpiTable,,,,,"kpi",,,,,,,,,,,,,,,,,,,,,"ui::table",,"UI view",,,,,,,,,,,,,,,,,,,,,,,,"view",,,,[^view],,,^lib:rule,["LintView"],,,,,,,,,,,,,,,,,,,110,,,,,,,,,,,,,,,,,,,,,,,,,"view: {uiType:\"uiMisc::VizTableView\"}\ntargets: {var input kind:\"Ref[]\" navCluster navSelAny share}\nspan: {var input kind:\"Span\" defVal:Span(\"today\") share}\nrules: {var input:\"ruleExt::RulesInput\" kind:\"Str[]\" defVal:[] share ruleType:\"kpi\"}\ndata: {expr:\"ruleKpiTable({{targets}}, {{span}}, {{rules}})\"}",,,,,,,,,,,,,,,,,,,,,,"kpiTable",,, ,^view:lics,,,,,"host",,,,,,,,,,,,,,,,,,,,,"ui::lics",,"UI view",,,,,,,,,,,,,,,,,,,,,,,,"view",,,,[^view],,,^lib:core,["LintView"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"view: {uiType: \"uiMisc::LicView\"}\ninstall: {disKey: \"ui::install\" action:\"uiMisc::LicView.onInstall\"}\nupdate: {action:\"licUpdate\"}\nuninstall: {action:\"licUninstall\"}\nhostInfo: {action:\"licHostInfo\"}\nshow: {action:\"licShow\"}\neula: {action:\"eula\"}\ndata: {expr:\"lics()\"}",,M,,,,,,,,,,,,,,,,,,,,"lics",,, ,^view:lint,,M,,,"tools",,,,,,,,,,,,,,,,,,,,,"ui::lint",,"UI view",,,,,,,,,,,,,,,,,,,,,,,,"view",,,,[^view],,,^lib:ui,["LintView"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"view: {inherit:\"table\"}\nshow: {var input enum:\"All,Warn Only,Err Only\" defVal:\"All\"}\ndata: {expr:\"lintTool({{show}})\"}",,,,,,,,,,,,,,,,,,,,,,"lint",,, ,^view:log,,,,,"debug",,,,,,,,,,,,,,,,,,,,,"ui::log",,"UI view",,,,,,,,,,,,,,,,,,,,,,,,"view",,,,[^view],,,^lib:core,["LintView"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"view: {uiType:\"uiMisc::LogView\"}\nspan: {var input kind:\"Span\" defVal:Span(\"today\")}\nfilter: {var input kind:\"Str\" defExpr:\"null\"}\ndata: {expr:\"logRead({{span}}, {{filter}})\"}",,M,,,,,,,,,,,,,,,,,,,,"log",,, ,^view:logSettings,,,,,"settings",,,,,,,,,,,,,,,,,,,,,"ui::log",,"UI view",,,,,,,,,,,,,,,,,,,,,,,,"view",,,,[^view],,,^lib:core,["LintView"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"view: {inherit:\"form\"}\nsubmit: {action:\"hostCommit\"}\ndata: {expr:\"hostSettings(\\\"log\\\")\"}",,M,,,,,,,,,,,,,,,,,,,,"logSettings",,, ,^view:monitorPoints,,,,,"monitor",,,,,,,,,,,,,,,,,,,,,"ui::points",,"UI view",,,,,,,,,,,,,,,,,,,,,,,,"view",,,,[^view],,,^lib:point,["LintView"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"view: {inherit:\"table\"}\npoints: {var input kind:\"Ref[]\" navSelAny share}\ndata: {expr:\"monitorPoints({{points}})\"}",,,,,,,,,,,,,,,,,,,,,,"monitorPoints",,, ,^view:nav,,,,,,,,,,,,,,,,,,,,,,,,,,"ui::nav",,"UI view",,,,,,,,,,,,,,,,,,,,,,,,"view",,,,[^view],,,^lib:core,["LintView"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"view: {uiType: \"ui::NavView\"}",,,,,,,,,,,,,,,,,,,,,,"nav",,, ,^view:page,,,,,,,,,,,,,,,,,,,,,,,,,,"ui::page",,"UI view",,,,,,,,,,,,,,,,,,,,,,,,"view",,,,[^view],,,^lib:core,["LintView"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"view: {uiType: \"ui::PageView\" vizType:\"vPane\"}",,,,,,,,,,,,,,,,,,,,,,"page",,, ,^view:pageBreak,,,,,,,,,,,,,,,,,,,,,,,,,,"ui::pageBreak",,"UI view",,,,,,,,,,,,,,,,,,,,,,,,"view",,,,[^view],,,^lib:core,["LintView"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"view: {uiType: \"ui::PageBreakView\" vizType:\"pageBreak\"}",,,,,,,,,,,,,,,,,,,,,,"pageBreak",,, ,^view:pods,,,,,"debug",,,,,,,,,,,,,,,,,,,,,"ui::pods",,"UI view",,,,,,,,,,,,,,,,,,,,,,,,"view",,,,[^view],,,^lib:core,["LintView"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"view: {inherit:\"table\"}\ndata: {expr:\"pods()\"}",,M,,,,,,,,,,,,,,,,,,,,"pods",,, ,^view:projSettings,,M,,,"settings",,,,,,,,,,,,,,,,,,,,,"ui::proj",,"UI view",,,,,,,,,,,,,,,,,,,,,,,,"view",,,,[^view],,,^lib:ui,["LintView"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"view: {inherit:\"form\"}\nsubmit: {action:\"recFormCommit\" refresh}\ndata: {expr: \"read(projMeta).recForm(\\\"projSettings\\\").addMeta({templateName:\\\"projSettings\\\"})\"}",,,,,,,"projSettings",,,,,,,,,,,,,,,"projSettings",,, ,^view:projs,,,,,"host",,,,,,,,,,,,,,,,,,,,,"ui::projs",,"UI view",,,,,,,,,,,,,,,,,,,,,,,,"view",,,,[^view],,,^lib:proj,["LintView"],,,,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,"view: {inherit:\"table\"}\nnew: {action:\"projNew\"}\ndemogen: {disKey:\"ui::demogen\" action:\"uiMisc::ProjDemogen.open\" }\ndetails: {action:\"projDetails\"}\nbackup: {action:\"projBackup\"}\nreplicate: {action:\"projReplicate\"}\ndata: {expr:\"projs()\"}",,M,,,,,,,,,,,,,,,,,,,,"projs",,, ,^view:recs,,M,,,"builder",,,,,,,,,,,,,,,,,,,,,"ui::rec",,"UI view",,,,,,,,,,,,,,,,,,,,,,,,"view",,,,[^view],,,^lib:ui,["LintView"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"view: { uiType:\"uiBuilder::RecBuilder\" }\nexpr: { var kind:\"Str\" defVal:\"{}\" }\nnew: { dis:\"New\" action:\"recNew\" }\nnewChild: { dis:\"New Child\" action:\"recNew\" }\nedit: { dis:\"Edit\" action:\"recEdit\" }\ntrash: { dis:\"Trash\" action:\"recTrash\" }\nopenIn: { dis:\"Open In\" action:\"uiOpenIn\" select multi }\nwxSync: { dis:\"Sync\" match:\"weatherStation\" select multi action:\"uiMisc::WeatherActions.onSync\" }\ndata: { expr:\"eval({{expr}})\" }",,,,,,,"rec",,,,,,,,,,,,,,,"recs",,, ,^view:replicas,,,,,"host",,,,,,,,,,,,,,,,,,,,,"ui::replicas",,"UI view",,,,,,,,,,,,,,,,,,,,,,,,"view",,,,[^view],,,^lib:repl,["LintView"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"view: {inherit:\"table\"}\ndebug: {action:\"replicaDebug\"}\nping: {action:\"replicaPing\" noFlash}\nsync: {action:\"replicaSync\" noFlash}\ncancel: {action:\"replicaCancel\" noFlash}\nmode: {action:\"replicaMode\"}\nconfig: {action:\"replicaConfig\"}\ndata: {expr:\"replicas()\"}",,M,,,,,,,,,,,,,,,,,,,,"replicas",,, ,^view:ruleCluster,,M,,,"rule",,,,,,,,,,,,,,,,,,,,,"ui::cluster",,"UI view",,,,,,,,,,,,,,,,,,,,,,,,"view",,,,[^view],,,^lib:rule,["LintView"],,,,,,,,,,,,,,,,,,,110,,,,,,,,,,,,,,,,,,,,,,,,,"view: {inherit:\"table\"}\nruleType: {var input kind:\"Str\" enum:\"all,spark,kpi,cur\" defVal:\"all\"}\ndata: {expr:\"ruleCluster({{ruleType}})\"}",,,,,,,"rule",,,,,,,,,,,,,,,"ruleCluster",,, ,^view:ruleDebug,,M,,,"rule",,,,,,,,,,,,,,,,,,,,,"ui::debug",,"UI view",,,,,,,,,,,,,,,,,,,,,,,,"view",,,,[^view],,,^lib:rule,["LintView"],,,,,,,,,,,,,,,,,,,800,,,,,,,,,,,,,,,,,,,,,,,,,"view: {inherit:\"table\"}\nuiViewBar: {var navPath:\"ref\" }\nnavLink: {var defVal:\"ref\"}\nref: {var kind:\"Ref\" defExpr:\"null\"}\nrecompute: {action:\"ruleExt::DebugRecomputeAction.onAction\" disKey:\"ui::recompute\" select multi}\nactorDebug: {dis:\"Actor Debug\" action:\"ruleDebugReport\" }\nrefreshRoster: {action:\"ruleRosterRefresh\"}\ndata: {expr:\"ruleDebug({{ref}})\"}",,,,,,,,,,,,,,,,,,,,,,"ruleDebug",,, ,^view:ruleLocal,,M,,,"rule",,,,,,,,,,,,,,,,,,,,,"ui::local",,"UI view",,,,,,,,,,,,,,,,,,,,,,,,"view",,,,[^view],,,^lib:rule,["LintView"],,,,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,"view: {inherit:\"table\"}\nnew: {action:\"recNew\"}\nedit: {action:\"recEdit\"}\ntrash: {action:\"recTrash\"}\nenable: {action:\"recEnable\"}\ndisable: {action:\"recDisable\"}\nruleType: {var input kind:\"Str\" enum:\"all,spark,kpi,cur\" defVal:\"all\"}\ndata: {expr:\"ruleLocal({{ruleType}})\"}",,,,,,,"rule",,,,,,,,,,,,,,,"ruleLocal",,, ,^view:ruleSettings,,M,,,"settings",,,,,,,,,,,,,,,,,,,,,"ui::rule",,"UI view",,,,,,,,,,,,,,,,,,,,,,,,"view",,,,[^view],,,^lib:rule,["LintView"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"view: {inherit:\"form\"}\nsubmit: {action:\"extSettingsCommit\"}\ndata: {expr:\"extSettings(\\\"rule\\\")\"}",,,,,,,,,,,,,,,,,,,,,,"ruleSettings",,, ,^view:ruleTuning,,M,,,"rule",,,,,,,,,,,,,,,,,,,,,"ui::tuning",,"UI view",,,,,,,,,,,,,,,,,,,,,,,,"view",,,,[^view],,,^lib:rule,["LintView"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"view: { inherit:\"table\" }\nnew: { action:\"recNew\" }\nedit: { action:\"recEdit\" }\ntrash: { action:\"recTrash\" }\ndata: { expr:\"readAll(ruleTuning)\" }",,,,,,,"ruleTuning",,,,,,,,,,,,,,,"ruleTuning",,, ,^view:sessions,,,,,"host",,,,,,,,,,,,,,,,,,,,,"ui::sessions",,"UI view",,,,,,,,,,,,,,,,,,,,,,,,"view",,,,[^view],,,^lib:core,["LintView"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"view: {inherit:\"table\"}\nlogout: {action:\"sessionLogout\"}\ndata: {expr:\"sessions()\"}",,M,,,,,,,,,,,,,,,,,,,,"sessions",,, ,^view:shell,,M,,,"tools",,,,,,,,,,,,,,,,,,,,,"ui::shell",,"UI view",,,,,,,,,,,,,,,,,,,,,,,,"view",,,,[^view],,,^lib:ui,["LintView"],,,,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,"view: { uiType:\"uiBuilder::ShellView\" }\nexpr: { var kind:\"Str\" defVal:\"{}\" }\nnew: { dis:\"New\" action:\"recNew\" }\nedit: { dis:\"Edit\" action:\"recEdit\" }\ndup: { dis:\"Dup\" action:\"recDup\" }\ntrash: { dis:\"Trash\" action:\"recTrash\" }\nopenIn: { dis:\"Open In\" action:\"uiOpenIn\" select multi }\ndata: { expr:\"eval({{expr}})\" }",,,,,,,"rec",,,,,,,,,,,,,,,"shell",,, ,^view:sites,,M,,,"builder",,,,,,,,,,,,,,,,,,,,,"ui::site",,"UI view",,,,,,,,,,,,,,,,,,,,,,,,"view",,,,[^view],,,^lib:ui,["LintView"],,,,,,,,,,,,,,,,,,,101,,,,,,,,,,,,,,,,,,,,,,,,,"view: { uiType:\"uiBuilder::SiteBuilder\" }",,,,,,,,,,,,,,,,,,,,,,"sites",,, ,^view:sparkEquip,,,,,"spark",,,,,,,,,,,,,,,,,,,,,"ui::equip",,"UI view",,,,,,,,,,,,,,,,,,,,,,,,"view",,,,[^view],,,^lib:rule,["LintView"],,,,,,,,,,,,,,,,,,,120,,,,,,,,,,,,,,,,,,,,,,,,,"view: {inherit:\"chart\"}\nuiViewBar: {var navPath:\"equip\" }\nequip: {var input kind:\"Ref\" navCluster share}\nspan: {var input kind:\"Span\" defVal:Span(\"today\") share}\nrules: {var input:\"ruleExt::RulesInput\" kind:\"Str[]\" defVal:[] share ruleType:\"spark\"}\nopts: {var input kind:\"Dict\" disKey:\"ui::options\" templateName:\"sparkEquipOpts\" defVal:{showWeather:T}}\ndata: {expr:\"ruleSparkEquip({{equip}}, {{span}}, {{rules}}, {{opts}})\"}",,,,,,,,,,,,,,,,,,,,,,"sparkEquip",,, ,^view:sparkSwivel,,,,,"spark",,,,,,,,,,,,,,,,,,,,,"ui::swivel",,"UI view",,,,,,,,,,,,,,,,,,,,,,,,"view",,,,[^view],,,^lib:rule,["LintView"],,,,,,,,,,,,,,,,,,,100,,,,,,,,,,,,,,,,,,,,,,,,,"view: {uiType:\"ruleExt::SparkSwivelView\"}\nuiViewBar: {var navPath:\"targets\"}\ntargets: {var input kind:\"Ref[]\" navCluster navSelAny share}\nspan: {var input kind:\"Span\" defVal:Span(\"today\") share}\nrules: {var input:\"ruleExt::RulesInput\" kind:\"Str[]\" defVal:[] share ruleType:\"spark\"}\nopts: {var input:\"ruleExt::SparkSwivelInput\" kind:\"Dict\" defVal:{}}\ndata: {expr:\"ruleSparkSwivel({{targets}}, {{span}}, {{rules}}, {{opts}})\"}",,,,,,,,,,,,,,,,,,,,,,"sparkSwivel",,, ,^view:sparkTable,,,,,"spark",,,,,,,,,,,,,,,,,,,,,"ui::table",,"UI view",,,,,,,,,,,,,,,,,,,,,,,,"view",,,,[^view],,,^lib:rule,["LintView"],,,,,,,,,,,,,,,,,,,110,,,,,,,,,,,,,,,,,,,,,,,,,"view: {uiType:\"uiMisc::VizTableView\"}\ntargets: {var input kind:\"Ref[]\" navCluster navSelAny share}\nspan: {var input kind:\"Span\" defVal:Span(\"today\") share}\nrules: {var input:\"ruleExt::RulesInput\" kind:\"Str[]\" defVal:[] share ruleType:\"spark\"}\ndata: {expr:\"ruleSparkTable({{targets}}, {{span}}, {{rules}})\"}",,,,,,,,,,,,,,,,,,,,,,"sparkTable",,, ,^view:sysModSettings,,,,,"settings",,,,,,,,,,,,,,,,,,,,,"ui::sysMods",,"UI view",,,,,,,,,,,,,,,,,,,,,,,,"view",,,,[^view],,,^lib:core,["LintView"],,,,,,,,,,,,,,,,,,,105,,,,,,,,,,,,,,,,,,,,,,,,,"view: {inherit:\"table\"}\nhideCols: {var defVal:[\"icon\"]}\nenable: {disKey:\"ui::enable\" select multi action:\"uiBuilder::LibActions.enable\"}\ndisable: {disKey:\"ui::disable\" select multi action:\"uiBuilder::LibActions.disable\"}\ndata: {expr: \"sysMods()\"}",,M,,,,,,,,,,,,,,,,,,,,"sysModSettings",,, ,^view:table,,,,,,,,,,,,,,,,,,,,,,,,,,"ui::table",,"UI view",,,,,,,,,,,,,,,,,,,,,,,,"view",,,,[^view],,,^lib:core,["LintView"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"view: {uiType: \"ui::TableView\" vizType:\"table\"}",,,,,,,,,,,,,,,,,,,,,,"table",,, ,^view:tags,,M,,,"builder",,,,,,,,,,,,,,,"def",,,,,,"ui::tag",,"UI view",,,,,,,,,,,,,,,,,,,,,,,,"view",,,,[^view],,,^lib:ui,["LintView"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"view: { inherit:\"table\" }\nnew: { action:\"recNew\" }\nedit: { action:\"recEdit\" }\ntrash: { action:\"recTrash\" }\ndata: { expr:\"recTagDefs()\" }",,,,,,,,,,,,,,,,,,,,,,"tags",,, ,^view:tariffCost,,,,,"energy",,,,,,,,,,,,,,,,,,,,,"ui::tariff",,"UI view",,,,,,,,,,,,,,,,,,,,,,,,"view",,,,[^view],,,^lib:tariff,["LintView"],,,,,,,,,,,,,,,,,,,60,,,,,,,,,,,,,,,,,,,,,,,,,"view: {inherit:\"chart\"}\nsites: {input var disKey:\"ui::sites\" kind:\"Ref[]\" navCluster navSelAny share}\nspan: {input var defVal:Span(\"today\") share}\nopts:Trio:\n var\n kind:\"Dict\"\n disKey:\"ui::options\"\n input\n templateName:\"tariffCostOpts\"\n defVal:Trio:\n meter:\"elec\"\ndata: {expr:\"tariffCostView({{sites}}, {{span}}, {{opts}})\"}",,,,,,,,,,,,,,,,,,,,,,"tariffCost",,, ,^view:text,,,,,,,,,,,,,,,,,,,,,,,,,,"ui::text",,"UI view",,,,,,,,,,,,,,,,,,,,,,,,"view",,,,[^view],,,^lib:core,["LintView"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"view: {uiType: \"ui::TextView\" vizType:\"genText\"}",,,,,,,,,,,,,,,,,,,,,,"text",,, ,^view:threads,,,,,"debug",,,,,,,,,,,,,,,,,,,,,"ui::threads",,"UI view",,,,,,,,,,,,,,,,,,,,,,,,"view",,,,[^view],,,^lib:core,["LintView"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"view: {inherit:\"text\"}\ndata: {expr:\"debugThreads()\"}",,M,,,,,,,,,,,,,,,,,,,,"threads",,, ,^view:tile,,,,,,,,,,,,,,,,,,,,,,,,,,"ui::tile",,"UI view",,,,,,,,,,,,,,,,,,,,,,,,"view",,,,[^view],,,^lib:core,["LintView"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"view: {uiType: \"ui::TileView\" vizType:\"tilePane\"}",,,,,,,,,,,,,,,,,,,,,,"tile",,, ,^view:trash,,M,,,"tools",,,,,,,,,,,,,,,,,,,,,"ui::trash",,"UI view",,,,,,,,,,,,,,,,,,,,,,,,"view",,,,[^view],,,^lib:ui,["LintView"],,,,,,,,,,,,,,,,,,,801,,,,,,,,,,,,,,,,,,,,,,,,,"view: { inherit:\"table\" }\nempty: { dis:\"Empty\" action:\"recEmptyTrash\" }\nrestore: { dis:\"Restore\" action:\"recRestoreFromTrash\" select multi }\ndata: { expr:\"readAll(trash, {trash})\" }",,,,,,,,,,,,,,,,,,,,,,"trash",,, ,^view:ui2,,,,,,,,,,,,,,,,,,,,,,,,,"UI2",,,"UI view",,,,,,,,,,,,,,,,,,,,,,,,"view",,,,[^view],,,^lib:core,["LintView"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"view: {uiType: \"ui::Ui2View\"}",,,,,,,,,,,,,,,,,,,,,,"ui2",,, ,^view:uiSettings,,M,,,"settings",,,,,,,,,,,,,,,,,,,,,"ui::ui",,"UI view",,,,,,,,,,,,,,,,,,,,,,,,"view",,,,[^view],,,^lib:ui,["LintView"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"view: {inherit:\"form\"}\nsubmit: {action:\"uiSettingsFormCommit\" refresh}\nconfig: {disMacro:\"\$ \$\" action:\"uiMisc::ConfigTarget.config\"}\ntestNav: {disMacro:\"\$ Nav\" action:\"uiMisc::NavPathTest.test\"}\ndata: {expr: \"read(uiMeta).recForm(\\\"uiSettings\\\").addMeta({templateName:\\\"uiSettings\\\"})\"}",,,,,,,"uiSettings",,,,,,,,,,,,,,,"uiSettings",,, ,^view:userSettings,,,,,"settings",,,,,,,,,,,,,,,,,,,,,"ui::user",,"UI view",,,,,,,,,,,,,,,,,,,,,,,,"view",,,,[^view],,,^lib:user,["LintView"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"view: {inherit:\"form\"}\nsubmit: {action:\"hostCommit\"}\ndata: {expr:\"hostSettings(\\\"user\\\")\"}",,M,,,,,,,,,,,,,,,,,,,,"userSettings",,, ,^view:users,,,,,"host",,,,,,,,,,,,,,,,,,,,,"ui::users",,"UI view",,,,,,,,,,,,,,,,,,,,,,,,"view",,,,[^view],,,^lib:user,["LintView"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"view: {inherit:\"table\"}\nnew: {action:\"userNew\"}\nedit: {action:\"userEdit\" select multi}\nreset: {disKey:\"ui::resetPass\" action:\"uiMisc::UserWizard.openReset\" select}\ndelete: {action:\"userDelete\"}\nactivity: {action:\"userActivity\"}\ndata: {expr:\"userReadAll()\"}",,M,,,,,"user",,,,,,,,,,,,,,,"users",,, ,^view:views,,M,,,"builder",,,,,,,,,,,,,,,,,,,,,"ui::view",,"UI view",,,,,,,,,,,,,,,,,,,,,,,,"view",,,,[^view],,,^lib:ui,["LintView"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"view: { uiType:\"uiBuilder::ViewBuilder\" }\nviewRef: { var input kind:\"Ref\" }\nnewView: { dis:\"New\" action:\"uiBuilder::ViewBuilder.onNew\" }\neditView: { dis:\"Edit\" action:\"recEdit\" }\nsaveView: { dis:\"Save\" action:\"uiBuilder::ViewBuilder.onSave\" select }\ntrash: { dis:\"Trash\" action:\"recTrash\" refresh }\ntogglesb: { dis:\"Toggle Sidebar\" action:\"uiBuilder::ViewBuilder.onToggleSidebar\" }\ngotoView: { dis:\"Goto\" select action:\"uiGoto\" target:{view:\"{{view}}\" }}\npreview: { dis:\"Preview\" select action:\"uiBuilder::ViewBuilder.onPreview\" }\ndata: { expr:\"readAll(view)\" }",,,,,,,"view",,,,,,,,,,,,,,,"views",,, ,^view:viz,,,,,,,,,,,,,,,,,,,,,,,,,,"ui::viz",,"UI view",,,,,,,,,,,,,,,,,,,,,,,,"view",,,,[^view],,,^lib:core,["LintView"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"view: {uiType: \"ui::UiVizView\"}",,,,,,,,,,,,,,,,,,,,,,"viz",,, ,^view:worksheet,,M,,,"builder",,M,,,,,,,,,,,,,,,,,,,"ui::worksheet",,"UI view",,,,,,,,,,,,,,,,,,,,,,,,"view",,,,[^view],,,^lib:ui,["LintView"],,,,,,,,,,,,,,,,,,,800,,,,,,,,,,,,,,,,,,,,,,,,,"view: { uiType:\"uiBuilder::WorksheetView\" }\nsrc: { var kind:\"Str\" defVal:\"{}\" }\neval: { dis:\"Eval\" action:\"uiBuilder::WorksheetView.onEval\" }\nclear: { dis:\"Clear\" action:\"uiBuilder::WorksheetView.onClear\" }\nsaveFunc: { dis:\"Save as Func\" select action:\"recNew\" templateName:\"func\" }\nsaveView: { dis:\"Save as View\" select action:\"recNew\" templateName:\"view\" }\nopenIn: { dis:\"Open In\" action:\"uiOpenIn\" select multi }\ndata: { expr:\"worksheetToAxon({{src}}).eval\" }",,,,,,,,,,,,,,,,,,,,,,"worksheet",,, ,^view:xquerySettings,,,,,"settings",,,,,,,,,,,,,,,,,,,,,"ui::xquery",,"UI view",,,,,,,,,,,,,,,,,,,,,,,,"view",,,,[^view],,,^lib:xquery,["LintView"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"view: {inherit:\"form\"}\nsubmit: {action:\"hostCommit\"}\ndata: {expr:\"hostSettings(\\\"xquery\\\")\"}",,M,,,,,,,,,,,,,,,,,,,,"xquerySettings",,, ,^visibility,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Distance at which light can be clearly discerned",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^quantity],,,^lib:phScience,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,["km","mile"],,,,[^weather],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^volt,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Electrical voltage, potential difference",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^marker],,,^lib:phScience,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^volt-angle,,,,,,,,,,,,,,,,,,,,,,,,,,,,"AC voltage phase angle",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^quantity],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,["deg"],,,,[^ac-elec],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^volt-imbalance,,,,,,,,,,,,,,,,,,,,,,,,,,,,"AC voltage phase imbalance",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^quantity],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,["%"],,,,[^ac-elec],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^volt-magnitude,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Magnitude of electrical voltage",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^elec-volt],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,["A"],,,,[^ac-elec],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^water,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Water in its liquid form",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^liquid],,,^lib:phScience,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`https://en.wikipedia.org/wiki/Water`,, ,^weather,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Associated with atmospheric air or phenomenon",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^phenomenon],,,^lib:phScience,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`https://en.wikipedia.org/wiki/Weather`,, ,^weather-point,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Weather station sensor point",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^point],,,^lib:phIoT,["LintMarker","LintPoint"],,,,,,,,,,,,,,,,,,,,,,,,^pointFunctionType,^quantity,^phenomenon,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^weatherCond,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Enumeration of weather conditions",,,,,,,,"unknown\nclear\npartlyCloudy\ncloudy\nshowers\nrain\nthunderstorms\nice\nflurries\nsnow",,,,,,,,,,,,,,,,,,,,[^quantity],,,^lib:phScience,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[^weather],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^weatherRef,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Reference to weather station for to use this entity",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^ref],,,^lib:phIoT,["LintRef"],,,,,,,,,,,,,,,,^weatherStation,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[^site,^weather-point],,,,,,,,,,,,,,,,,,,,, ,^weatherStation,,,,,,,,"weather air temp sensor point\nweather air webBulb sensor point\nweather air feelsLike sensor point\nweather air dewPoint sensor point\nweather air humidity sensor point\nweather atmospheric pressure sensor point\nweather cloudage sensor point\nweather daytime sensor point\nweather precipitation sensor point\nweather solar irradiance sensor point\nweather weatherCond sensor point\nweather wind speed sensor point\nweather wind direction sensor point\nweather visibility sensor point",,,,,,,,,,,,,,,,,,,,"Logical weather station and its measurement points",,M,,,,,,,,,,,,,,,,,,,,,,,,,,[^entity,^geoPlace],,,^lib:phIoT,["LintMarker"],M,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`https://en.wikipedia.org/wiki/Weather_station`,, ,^webBulb,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Wet bulb air temperature. Temperature which the air would have if cooled to saturation by the evaporation of water into it.",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^quantity],,,^lib:phScience,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,["°C","°F"],,,,[^air],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^wikipedia,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Hyperlink to the subject's page on Wikipedia",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^uri],,,^lib:ph,["LintUri"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[^def],,,,,,,,,,,,,,,,,,,,, ,^wind,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Flow of air on surface of the Earth",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^phenomenon],,,^lib:phScience,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`https://en.wikipedia.org/wiki/Wind`,, ,^wind-direction,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Compass direction from which wind originates",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^direction],,,^lib:phScience,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,["deg"],,,,[^wind],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^wind-speed,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Wind flow speed",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^speed],,,^lib:phScience,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,["km/h","mph"],,,,[^wind],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^wire,,,,,,,,"equip\npoint",,,,,,,^elec,,,,,,,,,,,,,"Cabling used to convey electricity or data",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^conduit],,,^lib:phIoT,["LintEquip","LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^writable,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Supports writing data",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^marker],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[^point],,,,,,,,,,,,,,,,,,,,, ,^writable-point,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Point with writable output using 16-level priority array. Writable\npoints typically are a setpont or actuator command. Haystack writable\npoints are modeled on the BACnet 16-level priority array with a\nrelinquish default which effectively acts as level 17.\n\nThe following levels have special behavior:\n - **Level 1**: highest priority reserved for emergency overrides\n - **Level 8**: manual override with ability to set timer to expire back to auto\n - **Default**: implicitly acts as level 17 for relinquish default\n\nThe priority array provides for contention resolution when many different\ncontrol applications may be vying for control of a given point. Low level\napplications like scheduling typically control levels 14, 15, or 16. Then\nusers can override at level 8. But a higher levels like 2 to 7 can be used\nto trump a user override (for example a demand response energy routine\nthat requires higher priority).\n\nThe actual value to write is resolved by starting at level 1 and working down\nto relinquish default to find the first non-null value. It is possible for\nall levels to be null, in which case the overall write output is null (which\nin turn may be auto/null to another system). Anytime a null value is written\nto a priority level, we say that level has been set to auto or released (this\nallows the next highest level to take command of the output).",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^point],,,^lib:phIoT,["LintMarker","LintPoint"],,,,,,,,,,,,,,,,,,,,,,,,^pointFunctionType,^quantity,^phenomenon,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^writeConvert,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Conversion to apply when writing writeVal to the connector.\nThe conversion is applied to `writeVal` before calling `connExt::Conn.onWrite`.\nSee `doc#convert`",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^pointConvert],,,^lib:conn,["LintStr"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[^connPoint],,,,,,,,,,,,,,,,,,,,, ,^writeErr,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Error description when `writeStatus` indicates error condition",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^str],,,^lib:phIoT,["LintStr"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[^writable-point],,,,,,,M,,,,,,,,,,,,,, ,^writeLevel,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Current priority level for `writeVal` as number between 1 and 17.\nThe value 17 indicates the relinquish default value.",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^int],,,^lib:phIoT,["LintNumber"],,17,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[^writable-point],,,,,,,M,,,,,,,,,,,,,, ,^writeMaxTime,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Maximum time between writes used to send perioid writes.\nSee `ext-conn::doc#writeMaxTime`.",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^duration],,,^lib:conn,["LintNumber"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[^connTuning],,,,,,,,,,,,,,,,,,,,, ,^writeMinTime,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Minimum time between writes used to throttle the speed of writes.\nSee `ext-conn::doc#writeMinTime`.",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^duration],,,^lib:conn,["LintNumber"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[^connTuning],,,,,,,,,,,,,,,,,,,,, ,^writeStatus,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Current status of a writable point output",,,,,,,,"- unbound: writable point is not bound to any output\n- ok: last write was successful\n- down: connectivity/networking problem - see `writeErr`\n- fault: configuration or hardware error - see `writeErr`\n- disabled: manual disable of the point or connector\n- unknown: we don't know anything (typically boot state)",,,,,,,,,,,,,,,,,,,,[^str],,,^lib:phIoT,["LintStr"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[^writable-point],,,,,,,M,,,,,,,,,,,,,, ,^writeVal,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Current desired value to write to output. This is the current \"winning\"\nvalue of the priority array indicated by `writeLevel`. If this tag\nis missing then the winning value is null/auto.",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^scalar],,,^lib:phIoT,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[^writable-point],,,,,,,M,,,,,,,,,,,,,, ,^writer,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Fantom type qname for writer class",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^str],,,^lib:core,["LintStr"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^xstr,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Extended string - type name and string value encoding",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^scalar],,,^lib:ph,["LintXStr"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^yearBuilt,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Original year of construction as four digit year such as 1980",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^int],,,^lib:phIoT,["LintNumber"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[^site],,,,,,,,,,,,,,,,,,,,, ,^zigbee,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Low power wireless communication protocol for home automation",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^protocol],,,^lib:phIct,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`https://en.wikipedia.org/wiki/Zigbee`,, ,^zone,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Related to spaces from a system perspective",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^marker],,,^lib:phIoT,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^zone-space,,,,,,,,"occupied point",,,,,,,,,,,,,,,,,,,,"Space associated with a specific system",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^space],,,^lib:phIoT,["LintMarker","LintSpace"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^zwave,,,,,,,,,,,,,,,,,,,,,,,,,,,,"Low power wireless communication protocol for home automation",,,,,,,,,,,,,,,,,,,,,,,,,,,,[^protocol],,,^lib:phIct,["LintMarker"],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,`https://en.wikipedia.org/wiki/Z-Wave`,, ,^typeScript:make,,,,,,,,,,,,,,,,,,[],,,,,,,"make",,,"Makes a marker.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hmarker,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"HMarker",,,,"public static make(): HMarker ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:valueOf,,,,,,,,,,,,,,,,,,[],,,,,,,"valueOf",,,"",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hval,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"HVal | string | boolean | number",,,,"public valueOf(): HVal | string | boolean | number ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:variable,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript,^typeScript:kind],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^typeScript:getKind,,,,,,,,,,,,,,,,,,[],,,,,,,"getKind",,,"",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hdict,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"Kind",,,,"public getKind(): Kind ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:toJSON,,,,,,,,,,,,,,,,,,[],,,,,,,"toJSON",,,"",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hmarker,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"HaysonVal",,,,"public toJSON(): HaysonVal ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:make,,,,,,,,,,,,,,,,,,[],,,,,,,"make",,,"Makes a haystack string.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hstr,,,,,,,,,,,,,,,,,[{summary:"The value string." kind:"parameter" name:"value" type:"string"}],,,,,,,,,,,,,,,,,"HStr",,,,"public static make(value: string): HStr ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:hremove,,,,,,,,,,,M,,,,,,,,,,,,,,"HRemove",,,"Haystack remove value.",,,,,,,,,,[^typeScript:hval],,M,,,,,,,,,,,,,,,,[^typeScript:classes],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[{summary:"The remove instance." isReadonly:T isStatic:T docs:{} decorators:[] kind:"property" name:"INSTANCE" isPublic:T returnType:""}],,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:compareTo,,,,,,,,,,,,,,,,,,[],,,,,,,"compareTo",,,"Compares two values.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hnull,,,,,,,,,,,,,,,,,[{summary:"The value to compare against." kind:"parameter" name:"value" type:"HNull"}],,,,,,,,,,,,,,,,,"number",,,,"public compareTo(value: HNull): number ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:toJSON,,,,,,,,,,,,,,,,,,[],,,,,,,"toJSON",,,"",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:htime,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"HaysonVal",,,,"public toJSON(): HaysonVal ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:hnull,,,,,,,,,,,M,,,,,,,,,,,,,,"HNull",,,"Haystack null value.",,,,,,,,,,[^typeScript:hval],,M,,,,,,,,,,,,,,,,[^typeScript:classes],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[{summary:"The null instance." isReadonly:T isStatic:T docs:{} decorators:[] kind:"property" name:"INSTANCE" isPublic:T returnType:""}],,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:hdef,,,,,,,,,,,M,,,,,,,,,,,,,,"HDef",,,"Haystack def.",,,,,,,,,,[^typeScript:hval],,M,,,,,,,,,,,,,,,,[^typeScript:classes],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[{summary:"" isGetter:T docs:{returns:"The def value."} decorators:[] kind:"property" name:"value" isPublic:T returnType:"string"}],,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:equals,,,,,,,,,,,,,,,,,,[],,,,,,,"equals",,,"Value equality check.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hmarker,,,,,,,,,,,,,,,,,[{summary:"The marker to compare." kind:"parameter" name:"marker" type:"HMarker"}],,,,,,,,,,,,,,,,,"boolean",,,,"public equals(marker: HMarker): boolean ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:getKind,,,,,,,,,,,,,,,,,,[],,,,,,,"getKind",,,"",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:href,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"Kind",,,,"public getKind(): Kind ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:getKind,,,,,,,,,,,,,,,,,,[],,,,,,,"getKind",,,"",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hval,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"Kind",,,,"public abstract getKind(): Kind",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:toZinc,,,,,,,,,,,,,,,,,,[],,,,,,,"toZinc",,,"Encodes to an encoding zinc value.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hgrid,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"string",,,,"public toZinc(): string ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:has,,,,,,,,,,,,,,,,,,[],,,,,,,"has",,,"Test to see if the list contains the value.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hlist,,,,,,,,,,,,,,,,,[{summary:"The value to test or a haystack filter." kind:"parameter" name:"val" type:"HVal | string"}],,,,,,,,,,,,,,,,,"boolean",,,,"public has(val: HVal | string): boolean ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:equals,,,,,,,,,,,,,,,,,,[],,,,,,,"equals",,,"Value equality check.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hremove,,,,,,,,,,,,,,,,,[{summary:"The remove to test." kind:"parameter" name:"remove" type:"HRemove"}],,,,,,,,,,,,,,,,,"boolean",,,,"public equals(remove: HRemove): boolean ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:hdateTime,,,,,,,,,,,M,,,,,,,,,,,,,,"HDateTime",,,"Haystack date time.",,,,,,,,,,[^typeScript:hval],,M,,,,,,,,,,,,,,,,[^typeScript:classes],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[{summary:"" isGetter:T docs:{returns:"The date time object as a JavaScript date."} decorators:[] kind:"property" name:"date" isPublic:T returnType:"Date"},{summary:"" isGetter:T docs:{returns:"The date time in an ISO 8601 format."} decorators:[] kind:"property" name:"iso" isPublic:T returnType:"string"},{summary:"" isGetter:T docs:{returns:"The timezone."} decorators:[] kind:"property" name:"timezone" isPublic:T returnType:"string"},{summary:"" isGetter:T docs:{returns:"The date time value."} decorators:[] kind:"property" name:"value" isPublic:T returnType:"string"}],,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:toFilter,,,,,,,,,,,,,,,,,,[],,,,,,,"toFilter",,,"Encodes to an encoded zinc value that can be used\nin a haystack filter string.\n\nA dict isn't supported in filter so throw an error.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hdict,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"string",,,,"public toFilter(): string ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:has,,,,,,,,,,,,,,,,,,[],,,,,,,"has",,,"Return true if the dict matches the specified filter.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hdict,,,,,,,,,,,,,,,,,[{summary:"The haystack filter." kind:"parameter" name:"filter" type:"string"}],,,,,,,,,,,,,,,,,"boolean",,,,"public has(filter: string): boolean ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:toObj,,,,,,,,,,,,,,,,,,[],,,,,,,"toObj",,,"",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hdict,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"HValObj",,,,"public toObj(): HValObj ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:getKind,,,,,,,,,,,,,,,,,,[],,,,,,,"getKind",,,"",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hxstr,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"Kind",,,,"public getKind(): Kind ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:compareTo,,,,,,,,,,,,,,,,,,[],,,,,,,"compareTo",,,"Compares two dates.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hdate,,,,,,,,,,,,,,,,,[{summary:"The date to compare against." kind:"parameter" name:"date" type:"HDate"}],,,,,,,,,,,,,,,,,"number",,,,"public compareTo(date: HDate): number ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:toFilter,,,,,,,,,,,,,,,,,,[],,,,,,,"toFilter",,,"Encodes to an encoded zinc value that can be used\nin a haystack filter string.\n\nA dict isn't supported in filter so throw an error.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hremove,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"string",,,,"public toFilter(): string ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^trait:point,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^trait],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^typeScript:toJSON,,,,,,,,,,,,,,,,,,[],,,,,,,"toJSON",,,"",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hcoord,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"HaysonVal",,,,"public toJSON(): HaysonVal ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:toJSON,,,,,,,,,,,,,,,,,,[],,,,,,,"toJSON",,,"",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hnull,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"HaysonVal",,,,"public toJSON(): HaysonVal ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:valueOf,,,,,,,,,,,,,,,,,,[],,,,,,,"valueOf",,,"",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hnum,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"number",,,,"public valueOf(): number ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:make,,,,,,,,,,,,,,,,,,[],,,,,,,"make",,,"Makes a haystack def.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hdef,,,,,,,,,,,,,,,,,[{summary:"The value string." kind:"parameter" name:"value" type:"string"}],,,,,,,,,,,,,,,,,"HDef",,,,"public static make(value: string): HDef ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:type,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript,^typeScript:kind],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^typeScript:get,,,,,,,,,,,,,,,,,,[],,,,,,,"get",,,"Returns a haystack value from the list or undefined if it can't be found.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hlist,,,,,,,,,,,,,,,,,[{summary:"The index number of the value to get." kind:"parameter" name:"index" type:"number"}],,,,,,,,,,,,,,,,,"HVal | undefined",,,,"public get(index: number): HVal | undefined ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:toString,,,,,,,,,,,,,,,,,,[],,,,,,,"toString",,,"",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hxstr,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"string",,,,"public toString(): string ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:toFilter,,,,,,,,,,,,,,,,,,[],,,,,,,"toFilter",,,"Encodes to an encoded zinc value that can be used\nin a haystack filter string.\n\nA dict isn't supported in filter so throw an error.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hdateTime,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"string",,,,"public toFilter(): string ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:equals,,,,,,,,,,,,,,,,,,[],,,,,,,"equals",,,"Value equality check.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hbool,,,,,,,,,,,,,,,,,[{summary:"The boolean property." kind:"parameter" name:"bool" type:"HBool"}],,,,,,,,,,,,,,,,,"boolean",,,,"public equals(bool: HBool): boolean ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:remove,,,,,,,,,,,,,,,,,,[],,,,,,,"remove",,,"Removes a property from the dict.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hdict,,,,,,,,,,,,,,,,,[{summary:"The property name." kind:"parameter" name:"name" type:"string"}],,,,,,,,,,,,,,,,,"void",,,,"public remove(name: string): void ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:toJSON,,,,,,,,,,,,,,,,,,[],,,,,,,"toJSON",,,"",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:gridColumn,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"HaysonGridColumn",,,,"public toJSON(): HaysonGridColumn ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:toJSON,,,,,,,,,,,,,,,,,,[],,,,,,,"toJSON",,,"",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hdateTime,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"HaysonVal",,,,"public toJSON(): HaysonVal ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:compareTo,,,,,,,,,,,,,,,,,,[],,,,,,,"compareTo",,,"Compares two strings.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hstr,,,,,,,,,,,,,,,,,[{summary:"The string to compare against." kind:"parameter" name:"str" type:"HStr"}],,,,,,,,,,,,,,,,,"number",,,,"public compareTo(str: HStr): number ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:toString,,,,,,,,,,,,,,,,,,[],,,,,,,"toString",,,"",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hna,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"string",,,,"public toString(): string ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:toString,,,,,,,,,,,,,,,,,,[],,,,,,,"toString",,,"",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hnum,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"string",,,,"public toString(): string ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:set,,,,,,,,,,,,,,,,,,[],,,,,,,"set",,,"Set a haystack value in the list.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hlist,,,,,,,,,,,,,,,,,[{summary:"The index of the item in the list." kind:"parameter" name:"index" type:"number"},{summary:"The haystack value to set." kind:"parameter" name:"value" type:"HVal"}],,,,,,,,,,,,,,,,,"void",,,,"public set(index: number, value: HVal): void ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:get,,,,,,,,,,,,,,,,,,[],,,,,,,"get",,,"Returns a haystack value from the dict or undefined if it can't be found.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hdict,,,,,,,,,,,,,,,,,[{summary:"" kind:"parameter" name:"paths" type:"string | Array"}],,,,,,,,,,,,,,,,,"HVal | undefined",,,,"public get(paths: string | string[]): HVal | undefined ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:listIterator,,,,,,,,,,,M,,,,,,,,,,,,,,"ListIterator",,,"An iterator for a list.",,,,,,,,,,,,M,,,,,,,,,,,,,[^typeScript:iteratorHVal],,,[^typeScript:classes],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,{},,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:getKind,,,,,,,,,,,,,,,,,,[],,,,,,,"getKind",,,"",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:htime,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"Kind",,,,"public getKind(): Kind ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:toJSON,,,,,,,,,,,,,,,,,,[],,,,,,,"toJSON",,,"",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hxstr,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"HaysonVal",,,,"public toJSON(): HaysonVal ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:module,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript,^typeScript:kind],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^typeScript:makeValue,,,,,,,,,,,,,,,,,,,,,,,,,"makeValue",,,"Make the haystack value based on the supplied data.",,,,,,,,,,,,M,,,,M,,,,,,,,,,,,[^typeScript:functions],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:make,,,,,,,,,,,,,,,,,,[],,,,,,,"make",,,"Factory method for a haystack date time.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hdateTime,,,,,,,,,,,,,,,,,[{summary:"The date time." kind:"parameter" name:"value" type:"string | Date"}],,,,,,,,,,,,,,,,,"HDateTime",,,,"public static make(value: string | Date): HDateTime ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:getKind,,,,,,,,,,,,,,,,,,[],,,,,,,"getKind",,,"",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hbool,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"Kind",,,,"public getKind(): Kind ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:compareTo,,,,,,,,,,,,,,,,,,[],,,,,,,"compareTo",,,"Compares two grids.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hgrid,,,,,,,,,,,,,,,,,[{summary:"" kind:"parameter" name:"grid" type:"HGrid"}],,,,,,,,,,,,,,,,,"number",,,,"public compareTo(grid: HGrid): number ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:toFilter,,,,,,,,,,,,,,,,,,[],,,,,,,"toFilter",,,"Encodes to an encoded zinc value that can be used\nin a haystack filter string.\n\nThe encoding for a haystack filter is mostly zinc but contains\nsome exceptions.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hnum,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"string",,,,"public toFilter(): string ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:toJSON,,,,,,,,,,,,,,,,,,[],,,,,,,"toJSON",,,"",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hdef,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"HaysonVal",,,,"public toJSON(): HaysonVal ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:toString,,,,,,,,,,,,,,,,,,[],,,,,,,"toString",,,"",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hlist,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"string",,,,"public toString(): string ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:toFilter,,,,,,,,,,,,,,,,,,[],,,,,,,"toFilter",,,"Encodes to an encoded zinc value that can be used\nin a haystack filter string.\n\nA dict isn't supported in filter so throw an error.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hbin,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"string",,,,"public toFilter(): string ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:getKind,,,,,,,,,,,,,,,,,,[],,,,,,,"getKind",,,"",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hmarker,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"Kind",,,,"public getKind(): Kind ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:toZinc,,,,,,,,,,,,,,,,,,[],,,,,,,"toZinc",,,"Encodes to an encoding zinc value.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:htime,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"string",,,,"public toZinc(): string ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:hstr,,,,,,,,,,,M,,,,,,,,,,,,,,"HStr",,,"Haystack string.",,,,,,,,,,[^typeScript:hval],,M,,,,,,,,,,,,,,,,[^typeScript:classes],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[{summary:"" isGetter:T docs:{returns:"The string value."} decorators:[] kind:"property" name:"value" isPublic:T returnType:"string"},{summary:"An empty string." isReadonly:T isStatic:T docs:{} decorators:[] kind:"property" name:"EMPTY" isPublic:T returnType:"HStr"}],,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:getKind,,,,,,,,,,,,,,,,,,[],,,,,,,"getKind",,,"",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hnull,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"Kind",,,,"public getKind(): Kind ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:hdict,,,,,,,,,,,M,,,,,,,,,,,,,,"HDict",,,"Haystack Dict.\n\nA dict is mutable and can have its values changed.\n\nA dict implements the JavaScript proxy pattern to make it easy to work\nwith getting and setting properties...\n```typescript\nconst dict = HDict.make({ foo: HStr.make('alpha') })\n\n// Write 'beta'\ndict.foo = HStr.make('beta')\n\n// Read 'beta'\nconsole.log(dict.foo)\n```\n\nA dict is also iterable...\n```typescript\n// Iterate a dict\nfor (let row of dict) {\nconsole.log(row.name)\nconsole.log(row.value)\n}\n\n// Destructure a dict into an array of rows...\nconst fooRow = [...dict].filter((row): boolean => row.name === 'foo')[0]\n\n// Use a haystack filter to test for properties...\nconsole.log(dict.has('foo == \"beta\"')) // prints true\n```",,,,,,,,,,[^typeScript:hval],,M,,,,,,,,,,,,,[^typeScript:iterableHValRow],,,[^typeScript:classes],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[{summary:"" isGetter:T docs:{returns:"The number of entries in the dict."} decorators:[] kind:"property" name:"size" isPublic:T returnType:"number"},{summary:"" isGetter:T docs:{returns:"All keys used in the dict."} decorators:[] kind:"property" name:"keys" isPublic:T returnType:"Array"},{summary:"" isGetter:T docs:{returns:"All values for the dict."} decorators:[] kind:"property" name:"values" isPublic:T returnType:"Array"}],,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:compareTo,,,,,,,,,,,,,,,,,,[],,,,,,,"compareTo",,,"Compares two uris.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:huri,,,,,,,,,,,,,,,,,[{summary:"The uri to compare against." kind:"parameter" name:"uri" type:"HUri"}],,,,,,,,,,,,,,,,,"number",,,,"public compareTo(uri: HUri): number ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:toZinc,,,,,,,,,,,,,,,,,,[],,,,,,,"toZinc",,,"Encodes to an encoding zinc value.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hna,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"string",,,,"public toZinc(): string ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:toJSON,,,,,,,,,,,,,,,,,,[],,,,,,,"toJSON",,,"",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hnum,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"HaysonVal",,,,"public toJSON(): HaysonVal ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:toJSON,,,,,,,,,,,,,,,,,,[],,,,,,,"toJSON",,,"",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:href,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"HaysonVal",,,,"public toJSON(): HaysonVal ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:equals,,,,,,,,,,,,,,,,,,[],,,,,,,"equals",,,"Value equality check.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hval,,,,,,,,,,,,,,,,,[{summary:"The value property." kind:"parameter" name:"value" type:"HVal"}],,,,,,,,,,,,,,,,,"boolean",,,,"public abstract equals(value: HVal): boolean",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:equals,,,,,,,,,,,,,,,,,,[],,,,,,,"equals",,,"Value equality check.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:href,,,,,,,,,,,,,,,,,[{summary:"The ref to test." kind:"parameter" name:"ref" type:"HRef"}],,,,,,,,,,,,,,,,,"boolean",,,,"public equals(ref: HRef): boolean ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:hvalObj,,,,,,,,,,,,,,,,,,,,,,,,,"HValObj",,,"An object composed of haystack values.",,,,,,,,,,,,M,,,,,,,,,,,,,,,M,[^typeScript:interfaces],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,{},,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:make,,,,,,,,,,,,,,,,,,[],,,,,,,"make",,,"Makes a haystack number.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hnum,,,,,,,,,,,,,,,,,[{summary:"The value." kind:"parameter" name:"value" type:"number"},{summary:"Optional units." kind:"parameter" name:"unit" isOptional:T type:"string"}],,,,,,,,,,,,,,,,,"HNum",,,,"public static make(value: number, unit?: string): HNum ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:kind,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:haysonCoord,,,,,,,,,,,,,,,,,,,,,,,,,"HaysonCoord",,,"Hayson co-ordinate object.",,,,,,,,,,,,M,,,,,,,,,,,,,,,M,[^typeScript:interfaces],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[{summary:"" docs:{} decorators:[] kind:"property" name:"lng" returnType:"number"},{summary:"" docs:{} decorators:[] kind:"property" name:"lat" returnType:"number"}],,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:valueOf,,,,,,,,,,,,,,,,,,[],,,,,,,"valueOf",,,"",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hbool,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"boolean",,,,"public valueOf(): boolean ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:toString,,,,,,,,,,,,,,,,,,[],,,,,,,"toString",,,"",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hnull,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"string",,,,"public toString(): string ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:toJSON,,,,,,,,,,,,,,,,,,[],,,,,,,"toJSON",,,"",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hbool,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"HaysonVal",,,,"public toJSON(): HaysonVal ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:getJs,,,,,,,,,,,,,,,,,,[],,,,,,,"getJs",,,"Returns literal JSON for a value in the dict.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hdict,,,,,,,,,,,,,,,,,[{summary:"" kind:"parameter" name:"paths" type:"string | Array"}],,,,,,,,,,,,,,,,,"string | number | boolean | undefined",,,,"public getJs(\n\t\tpaths: string | string[]\n\t): string | number | boolean | undefined ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:make,,,,,,,,,,,,,,,,,,[],,,,,,,"make",,,"Makes an na.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hna,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"HNa",,,,"public static make(): HNa ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:remove,,,,,,,,,,,,,,,,,,[],,,,,,,"remove",,,"Removes a value from the list.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hlist,,,,,,,,,,,,,,,,,[{summary:"The index of the item in the list." kind:"parameter" name:"index" type:"number"}],,,,,,,,,,,,,,,,,"void",,,,"public remove(index: number): void ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:toZinc,,,,,,,,,,,,,,,,,,[],,,,,,,"toZinc",,,"",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:gridColumn,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"string",,,,"public toZinc(): string ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:toZinc,,,,,,,,,,,,,,,,,,[],,,,,,,"toZinc",,,"Encode to zinc encoding.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:huri,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"string",,,,"public toZinc(): string ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:equals,,,,,,,,,,,,,,,,,,[],,,,,,,"equals",,,"Value equality check.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hstr,,,,,,,,,,,,,,,,,[{summary:"The string to test." kind:"parameter" name:"str" type:"HStr"}],,,,,,,,,,,,,,,,,"boolean",,,,"public equals(str: HStr): boolean ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:toString,,,,,,,,,,,,,,,,,,[],,,,,,,"toString",,,"",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:huri,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"string",,,,"public toString(): string ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:toFilter,,,,,,,,,,,,,,,,,,[],,,,,,,"toFilter",,,"Encodes to an encoded zinc value that can be used\nin a haystack filter string.\n\nThe encoding for a haystack filter is mostly zinc but contains\nsome exceptions.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hval,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"string",,,,"public toFilter(): string ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:toString,,,,,,,,,,,,,,,,,,[],,,,,,,"toString",,,"",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hdateTime,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"string",,,,"public toString(): string ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:getKind,,,,,,,,,,,,,,,,,,[],,,,,,,"getKind",,,"",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hnum,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"Kind",,,,"public getKind(): Kind ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:hnum,,,,,,,,,,,M,,,,,,,,,,,,,,"HNum",,,"Haystack number with units.",,,,,,,,,,[^typeScript:hval],,M,,,,,,,,,,,,,,,,[^typeScript:classes],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[{summary:"" isGetter:T docs:{returns:"Optional unit value for a number."} decorators:[] kind:"property" name:"unit" isPublic:T returnType:"string | undefined"},{summary:"Positive infinity." isReadonly:T isStatic:T docs:{} decorators:[] kind:"property" name:"POSITIVE_INFINITY" isPublic:T returnType:"HNum"},{summary:"Not a number." isReadonly:T isStatic:T docs:{} decorators:[] kind:"property" name:"NAN" isPublic:T returnType:"HNum"},{summary:"Negative infinity." isReadonly:T isStatic:T docs:{} decorators:[] kind:"property" name:"NEGATIVE_INFINITY" isPublic:T returnType:"HNum"},{summary:"" isGetter:T docs:{returns:"The numeric value."} decorators:[] kind:"property" name:"value" isPublic:T returnType:"number"}],,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:toZinc,,,,,,,,,,,,,,,,,,[],,,,,,,"toZinc",,,"Encodes to an encoding zinc value.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hval,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"string",,,,"public abstract toZinc(): string",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:equals,,,,,,,,,,,,,,,,,,[],,,,,,,"equals",,,"Value equality check.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hnum,,,,,,,,,,,,,,,,,[{summary:"The number to test." kind:"parameter" name:"num" type:"HNum"}],,,,,,,,,,,,,,,,,"boolean",,,,"public equals(num: HNum): boolean ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:escapeToUnicodeSequence,,,,,,,,,,,,,,,,,,,,,,,,,"escapeToUnicodeSequence",,,"Escape any character to a unicode sequence if required.",,,,,,,,,,,,M,,,,M,,,,,,,,,,,,[^typeScript:functions],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:class,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript,^typeScript:kind],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^typeScript:toZinc,,,,,,,,,,,,,,,,,,[],,,,,,,"toZinc",,,"Encodes to an encoding zinc value.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hxstr,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"string",,,,"public toZinc(): string ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:toJSON,,,,,,,,,,,,,,,,,,[],,,,,,,"toJSON",,,"",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hdate,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"HaysonVal",,,,"public toJSON(): HaysonVal ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:hbin,,,,,,,,,,,M,,,,,,,,,,,,,,"HBin",,,"Haystack Bin.\n\nPlease note, this type is currently deprecated.",,,,,,,,,,[^typeScript:hval],,M,,,,,,,,,,,,,,,,[^typeScript:classes],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[{summary:"" isGetter:T docs:{returns:"The mime value."} decorators:[] kind:"property" name:"mime" isPublic:T returnType:"string"},{summary:"" isGetter:T docs:{returns:"The type value."} decorators:[] kind:"property" name:"type" isPublic:T returnType:"string"}],,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:gridColumn,,,,,,,,,,,M,,,,,,,,,,,,,,"GridColumn",,,"A grid column.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:classes],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[{summary:"Any meta data for the column." isReadonly:T docs:{} decorators:[] kind:"property" name:"meta" isPublic:T returnType:"HDict"},{summary:"" isGetter:T docs:{returns:"The display name for the column."} decorators:[] kind:"property" name:"displayName" isPublic:T returnType:"string"},{summary:"The name of the column." isReadonly:T docs:{} decorators:[] kind:"property" name:"name" isPublic:T returnType:"string"},{summary:"" isGetter:T docs:{returns:"The display name for the column."} decorators:[] kind:"property" name:"dis" isPublic:T returnType:"string"}],,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:clear,,,,,,,,,,,,,,,,,,[],,,,,,,"clear",,,"Clear all entries from the list.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hlist,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"void",,,,"public clear(): void ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:toZinc,,,,,,,,,,,,,,,,,,[],,,,,,,"toZinc",,,"Encodes to an encoding zinc value.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hcoord,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"string",,,,"public toZinc(): string ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:hdate,,,,,,,,,,,M,,,,,,,,,,,,,,"HDate",,,"Haystack date.",,,,,,,,,,[^typeScript:hval],,M,,,,,,,,,,,,,,,,[^typeScript:classes],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[{summary:"" isGetter:T docs:{returns:"A JS date object."} decorators:[] kind:"property" name:"date" isPublic:T returnType:"Date"},{summary:"" isGetter:T docs:{returns:"The date value."} decorators:[] kind:"property" name:"value" isPublic:T returnType:"string"}],,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:getJs,,,,,,,,,,,,,,,,,,[],,,,,,,"getJs",,,"Returns literal JSON for a value in the list.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hlist,,,,,,,,,,,,,,,,,[{summary:"The index of the item in the list." kind:"parameter" name:"index" type:"number"}],,,,,,,,,,,,,,,,,"string | number | boolean | undefined",,,,"public getJs(index: number): string | number | boolean | undefined ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:compareTo,,,,,,,,,,,,,,,,,,[],,,,,,,"compareTo",,,"Compares two strings.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hdef,,,,,,,,,,,,,,,,,[{summary:"The string to compare against." kind:"parameter" name:"str" type:"HDef"}],,,,,,,,,,,,,,,,,"number",,,,"public compareTo(str: HDef): number ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:symbol_iterator,,,,,,,,,,,,,,,,,,[],,,,,,,"[Symbol.iterator]",,,"Iterate over a list.\n\nThis enables a 'for ... of' loop to be used directly on an iterator.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hlist,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"Iterator",,,,"public [Symbol.iterator](): Iterator ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:compareTo,,,,,,,,,,,,,,,,,,[],,,,,,,"compareTo",,,"Compares two booleans.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hbool,,,,,,,,,,,,,,,,,[{summary:"The boolean to compare against." kind:"parameter" name:"bool" type:"HBool"}],,,,,,,,,,,,,,,,,"number",,,,"public compareTo(bool: HBool): number ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:toFilter,,,,,,,,,,,,,,,,,,[],,,,,,,"toFilter",,,"Encodes to an encoded zinc value that can be used\nin a haystack filter string.\n\nThe encoding for a haystack filter is mostly zinc but contains\nsome exceptions.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hbool,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"string",,,,"public toFilter(): string ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:now,,,,,,,,,,,,,,,,,,[],,,,,,,"now",,,"",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hdateTime,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"HDateTime",,,,"public static now(): HDateTime ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:isEmpty,,,,,,,,,,,,,,,,,,[],,,,,,,"isEmpty",,,"",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hlist,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"boolean",,,,"public isEmpty(): boolean ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:symbol_iterator,,,,,,,,,,,,,,,,,,[],,,,,,,"[Symbol.iterator]",,,"Iterate over a dict.\n\nThis enables a 'for ... of' loop to be used directly on an iterator.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hdict,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"Iterator",,,,"public [Symbol.iterator](): Iterator ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:toZinc,,,,,,,,,,,,,,,,,,[],,,,,,,"toZinc",,,"Encodes to an encoding zinc value.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hmarker,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"string",,,,"public toZinc(): string ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:hlist,,,,,,,,,,,M,,,,,,,,,,,,,,"HList",,,"Haystack List.\n\nA list is mutable and can have its values changed.\n\nA list implements the JavaScript proxy pattern to make it easy to work with...\n```typescript\nconst list = HList.make({ HStr.make('alpha') })\n\n// Write 'beta'\nlist[0] = HStr.make('beta')\n\n// Read 'beta'\nconsole.log(list[0])\n```\n\nA list is also iterable...\n```typescript\n// Iterate a list\nfor (let value of list) {\nconsole.log(value)\n}\n\n// Destructure a list into an array...\nconst array = [...list]\n\n// Access the underlying array object directly.\nconst strs = list.values.filter((val: HVal): boolean => val.is(Kind.Str))\n```",,,,,,,,,,[^typeScript:hval],,M,,,,,,,,,,,,,[^typeScript:iterableHVal],,,[^typeScript:classes],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[{summary:"Convience method for getting the minimum number in a list.\n\nIf there are no numbers then Number.MAX_SAFE_INTEGER is returned." isGetter:T docs:{returns:"A minimum number in a list."} decorators:[] kind:"property" name:"min" isPublic:T returnType:"number"},{summary:"Convience method for averaging all the numbers in a list.\n\nIf there are no numbers then Number.NaN is returned." isGetter:T docs:{returns:"The average of all the numbers."} decorators:[] kind:"property" name:"avg" isPublic:T returnType:"number"},{summary:"Convience method for getting the maximum number in a list.\n\nIf there are no numbers then Number.MIN_SAFE_INTEGER is returned." isGetter:T docs:{returns:"A maximum number in a list."} decorators:[] kind:"property" name:"max" isPublic:T returnType:"number"},{summary:"The list values." docs:{} decorators:[] kind:"property" name:"values" isPublic:T returnType:"Array"},{summary:"Return the length of the list." isGetter:T docs:{} decorators:[] kind:"property" name:"length" isPublic:T returnType:"number"},{summary:"Convience method for summing a list of numbers in a list." isGetter:T docs:{returns:"A sum of all the numbers in the list."} decorators:[] kind:"property" name:"sum" isPublic:T returnType:"number"}],,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^trait:point,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^trait],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^typeScript:cannot_CHANGE_IMMUTABLE_VALUE,,,,,,,,,,,,,,,,,,,,,,,,,"CANNOT_CHANGE_IMMUTABLE_VALUE",,,"",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:variables],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,M,,,,,,,, ,^typeScript:isEmpty,,,,,,,,,,,,,,,,,,[],,,,,,,"isEmpty",,,"",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hdict,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"boolean",,,,"public isEmpty(): boolean ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:equals,,,,,,,,,,,,,,,,,,[],,,,,,,"equals",,,"Value equality check.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:huri,,,,,,,,,,,,,,,,,[{summary:"The uri to test." kind:"parameter" name:"uri" type:"HUri"}],,,,,,,,,,,,,,,,,"boolean",,,,"public equals(uri: HUri): boolean ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:equals,,,,,,,,,,,,,,,,,,[],,,,,,,"equals",,,"Value equality check.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hnull,,,,,,,,,,,,,,,,,[{summary:"The value property." kind:"parameter" name:"value" type:"HNull"}],,,,,,,,,,,,,,,,,"boolean",,,,"public equals(value: HNull): boolean ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:hxstr,,,,,,,,,,,M,,,,,,,,,,,,,,"HXStr",,,"Haystack XStr.",,,,,,,,,,[^typeScript:hval],,M,,,,,,,,,,,,,,,,[^typeScript:classes],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[{summary:"" isGetter:T docs:{returns:"The type value."} decorators:[] kind:"property" name:"type" isPublic:T returnType:"string"},{summary:"" isGetter:T docs:{returns:"The value."} decorators:[] kind:"property" name:"value" isPublic:T returnType:"string"}],,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:equals,,,,,,,,,,,,,,,,,,[],,,,,,,"equals",,,"Value equality check.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hna,,,,,,,,,,,,,,,,,[{summary:"The na to test." kind:"parameter" name:"na" type:"HNa"}],,,,,,,,,,,,,,,,,"boolean",,,,"public equals(na: HNa): boolean ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:compareTo,,,,,,,,,,,,,,,,,,[],,,,,,,"compareTo",,,"Compares two values.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hremove,,,,,,,,,,,,,,,,,[{summary:"The remove to compare against." kind:"parameter" name:"remove" type:"HRemove"}],,,,,,,,,,,,,,,,,"number",,,,"public compareTo(remove: HRemove): number ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:method,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript,^typeScript:kind],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:haysonGrid,,,,,,,,,,,,,,,,,,,,,,,,,"HaysonGrid",,,"Hayson Grid",,,,,,,,,,,,M,,,,,,,,,,,,,,,M,[^typeScript:interfaces],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[{summary:"" docs:{} decorators:[] kind:"property" name:"rows" returnType:"Array>"},{summary:"" docs:{} decorators:[] kind:"property" name:"version" returnType:"string"},{summary:"" docs:{} decorators:[] kind:"property" name:"cols" returnType:"Array"}],,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:compareTo,,,,,,,,,,,,,,,,,,[],,,,,,,"compareTo",,,"Compares two dicts.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hdict,,,,,,,,,,,,,,,,,[{summary:"The dict to compare against." kind:"parameter" name:"dict" type:"HDict"}],,,,,,,,,,,,,,,,,"number",,,,"public compareTo(dict: HDict): number ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:toFilter,,,,,,,,,,,,,,,,,,[],,,,,,,"toFilter",,,"Encodes to an encoded zinc value that can be used\nin a haystack filter string.\n\nA dict isn't supported in filter so throw an error.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hna,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"string",,,,"public toFilter(): string ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:set,,,,,,,,,,,,,,,,,,[],,,,,,,"set",,,"Set a haystack value.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hdict,,,,,,,,,,,,,,,,,[{summary:"The name to set." kind:"parameter" name:"name" type:"string"},{summary:"The haystack value to set." kind:"parameter" name:"value" type:"HVal"}],,,,,,,,,,,,,,,,,"void",,,,"public set(name: string, value: HVal): void ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:make,,,,,,,,,,,,,,,,,,[],,,,,,,"make",,,"Makes a new grid.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hgrid,,,,,,,,,,,,,,,,,[{summary:"The meta data." kind:"parameter" name:"meta" type:"HDict"},{summary:"Grid columns." kind:"parameter" name:"columns" type:"Array<{ name: string; meta?: HDict }>"},{summary:"Grid rows iterator." kind:"parameter" name:"rows" type:"Iterable>"},{summary:"Optional grid version number." kind:"parameter" name:"version" isOptional:T type:"string"}],,,,,,,,,,,,,,,,,"HGrid",,,,"public static make(\n\t\tmeta: HDict,\n\t\tcolumns: { name: string; meta?: HDict }[],\n\t\trows: Iterable,\n\t\tversion?: string\n\t): HGrid ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:compareTo,,,,,,,,,,,,,,,,,,[],,,,,,,"compareTo",,,"Compares two xstrings.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hxstr,,,,,,,,,,,,,,,,,[{summary:"The xstring to compare against." kind:"parameter" name:"xstr" type:"HXStr"}],,,,,,,,,,,,,,,,,"number",,,,"public compareTo(xstr: HXStr): number ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:toJSON,,,,,,,,,,,,,,,,,,[],,,,,,,"toJSON",,,"",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hna,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"HaysonVal",,,,"public toJSON(): HaysonVal ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:hbool,,,,,,,,,,,M,,,,,,,,,,,,,,"HBool",,,"Haystack boolean.",,,,,,,,,,[^typeScript:hval],,M,,,,,,,,,,,,,,,,[^typeScript:classes],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[{summary:"The boolean true instance." isReadonly:T isStatic:T docs:{} decorators:[] kind:"property" name:"TRUE" isPublic:T returnType:""},{summary:"The boolean false instance." isReadonly:T isStatic:T docs:{} decorators:[] kind:"property" name:"FALSE" isPublic:T returnType:""},{summary:"" isGetter:T docs:{returns:"The boolean value."} decorators:[] kind:"property" name:"value" isPublic:T returnType:"boolean"}],,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:push,,,,,,,,,,,,,,,,,,[],,,,,,,"push",,,"A classic push method for an array.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hlist,,,,,,,,,,,,,,,,,[{summary:"The value to push into the list." kind:"parameter" name:"val" type:"HVal | string | boolean | number"}],,,,,,,,,,,,,,,,,"void",,,,"public push(val: HVal | string | boolean | number): void ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:not_SUPPORTED_IN_FILTER_MSG,,,,,,,,,,,,,,,,,,,,,,,,,"NOT_SUPPORTED_IN_FILTER_MSG",,,"",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:variables],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,M,,,,,,,, ,^typeScript:equals,,,,,,,,,,,,,,,,,,[],,,,,,,"equals",,,"Column equality check.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:gridColumn,,,,,,,,,,,,,,,,,[{summary:"The column to test." kind:"parameter" name:"column" type:"GridColumn"}],,,,,,,,,,,,,,,,,"boolean",,,,"public equals(column: GridColumn): boolean ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:hmarker,,,,,,,,,,,M,,,,,,,,,,,,,,"HMarker",,,"Haystack marker value.",,,,,,,,,,[^typeScript:hval],,M,,,,,,,,,,,,,,,,[^typeScript:classes],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[{summary:"The marker instance." isReadonly:T isStatic:T docs:{} decorators:[] kind:"property" name:"INSTANCE" isPublic:T returnType:""}],,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:toZinc,,,,,,,,,,,,,,,,,,[],,,,,,,"toZinc",,,"",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:gridRow,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"string",,,,"public toZinc(): string ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:toZinc,,,,,,,,,,,,,,,,,,[],,,,,,,"toZinc",,,"Encodes to an encoding zinc value.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hdate,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"string",,,,"public toZinc(): string ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:setJs,,,,,,,,,,,,,,,,,,[],,,,,,,"setJs",,,"Set a haystack value from some literal javascript.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hlist,,,,,,,,,,,,,,,,,[{summary:"The index of the item in the list." kind:"parameter" name:"index" type:"number"},{summary:"The haystack value to set." kind:"parameter" name:"value" type:"string | boolean | number"}],,,,,,,,,,,,,,,,,"void",,,,"public setJs(index: number, value: string | boolean | number): void ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:equals,,,,,,,,,,,,,,,,,,[],,,,,,,"equals",,,"Value equality check.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hdateTime,,,,,,,,,,,,,,,,,[{summary:"The date time value to test." kind:"parameter" name:"dateTime" type:"HDateTime"}],,,,,,,,,,,,,,,,,"boolean",,,,"public equals(dateTime: HDateTime): boolean ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:valueOf,,,,,,,,,,,,,,,,,,[],,,,,,,"valueOf",,,"",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hstr,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"string",,,,"public valueOf(): string ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:make,,,,,,,,,,,,,,,,,,[],,,,,,,"make",,,"Makes an null instance.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hnull,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"HNull",,,,"public static make(): HNull ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:getKind,,,,,,,,,,,,,,,,,,[],,,,,,,"getKind",,,"",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hcoord,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"Kind",,,,"public getKind(): Kind ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:enum,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript,^typeScript:kind],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^typeScript:readValue,,,,,,,,,,,,,,,,,,[],,,,,,,"readValue",,,"Read the value and return it.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:zincReader,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"HVal",,,,"public readValue(): HVal ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:getKind,,,,,,,,,,,,,,,,,,[],,,,,,,"getKind",,,"",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hdate,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"Kind",,,,"public getKind(): Kind ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:toString,,,,,,,,,,,,,,,,,,[],,,,,,,"toString",,,"",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hbin,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"string",,,,"public toString(): string ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:getKind,,,,,,,,,,,,,,,,,,[],,,,,,,"getKind",,,"",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:huri,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"Kind",,,,"public getKind(): Kind ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:toJSON,,,,,,,,,,,,,,,,,,[],,,,,,,"toJSON",,,"",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hremove,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"HaysonVal",,,,"public toJSON(): HaysonVal ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:make,,,,,,,,,,,,,,,,,,[],,,,,,,"make",,,"Make a list.\n\n```typescript\n// A single haystack value array.\nconst list0 = HList.make([HStr.make('foo), HMarker.make()])\n\n// Pass in multiple arguments instead of an array.\nconst list1 = HList.make(HStr.make('foo'), HMarker.make())\n```",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hlist,,,,,,,,,,,,,,,,,[{summary:"A value or list of values." isSpread:T kind:"parameter" name:"values" type:"Array<>"}],,,,,,,,,,,,,,,,,"HList",,,,"public static make(...values: (HVal[] | HVal)[]): HList ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:toJSON,,,,,,,,,,,,,,,,,,[],,,,,,,"toJSON",,,"",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hlist,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"HaysonVal",,,,"public toJSON(): HaysonVal ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:interface,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript,^typeScript:kind],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^typeScript:zincReader,,,,,,,,,,,M,,,,,,,,,,,,,,"ZincReader",,,"A Zinc reader.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:classes],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,{},,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:huri,,,,,,,,,,,M,,,,,,,,,,,,,,"HUri",,,"Haystack URI.",,,,,,,,,,[^typeScript:hval],,M,,,,,,,,,,,,,,,,[^typeScript:classes],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[{summary:"" isGetter:T docs:{returns:"The URI string value."} decorators:[] kind:"property" name:"value" isPublic:T returnType:"string"},{summary:"An empty URI." isReadonly:T isStatic:T docs:{} decorators:[] kind:"property" name:"EMPTY" isPublic:T returnType:"HUri"}],,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:now,,,,,,,,,,,,,,,,,,[],,,,,,,"now",,,"",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:htime,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"HTime",,,,"public static now(): HTime ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:getKind,,,,,,,,,,,,,,,,,,[],,,,,,,"getKind",,,"",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hremove,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"Kind",,,,"public getKind(): Kind ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:string,,,,,,,,,,,,,,,,,,[],,,,,,,"string",,,"Consume the data stream and return a string value.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:zincReader,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"HStr",,,,"public string(): HStr ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:toZinc,,,,,,,,,,,,,,,,,,[],,,,,,,"toZinc",,,"Encodes to an encoding zinc value.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hlist,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"string",,,,"public toZinc(): string ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:toZinc,,,,,,,,,,,,,,,,,,[],,,,,,,"toZinc",,,"Encodes to an encoding zinc value.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hnum,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"string",,,,"public toZinc(): string ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:getKind,,,,,,,,,,,,,,,,,,[],,,,,,,"getKind",,,"",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hlist,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"Kind",,,,"public getKind(): Kind ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:gridRow,,,,,,,,,,,M,,,,,,,,,,,,,,"GridRow",,,"A grid row.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:classes],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[{summary:"The grid cells." isReadonly:T docs:{} decorators:[] kind:"property" name:"cells" isPublic:T returnType:"Array"}],,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:toZinc,,,,,,,,,,,,,,,,,,[],,,,,,,"toZinc",,,"Encode to zinc encoding.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:href,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"string",,,,"public toZinc(): string ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:compareTo,,,,,,,,,,,,,,,,,,[],,,,,,,"compareTo",,,"Compares two times.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:htime,,,,,,,,,,,,,,,,,[{summary:"The time to compare against." kind:"parameter" name:"time" type:"HTime"}],,,,,,,,,,,,,,,,,"number",,,,"public compareTo(time: HTime): number ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:toString,,,,,,,,,,,,,,,,,,[],,,,,,,"toString",,,"",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hdate,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"string",,,,"public toString(): string ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:getKind,,,,,,,,,,,,,,,,,,[],,,,,,,"getKind",,,"",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hdef,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"Kind",,,,"public getKind(): Kind ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:compareTo,,,,,,,,,,,,,,,,,,[],,,,,,,"compareTo",,,"Compares two markers.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hmarker,,,,,,,,,,,,,,,,,[{summary:"The marker to compare against." kind:"parameter" name:"marker" type:"HMarker"}],,,,,,,,,,,,,,,,,"number",,,,"public compareTo(marker: HMarker): number ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:toFilter,,,,,,,,,,,,,,,,,,[],,,,,,,"toFilter",,,"Encodes to an encoded zinc value that can be used\nin a haystack filter string.\n\nA list isn't supported in filter so throw an error.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hlist,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"string",,,,"public toFilter(): string ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:make,,,,,,,,,,,,,,,,,,[],,,,,,,"make",,,"Factory method for a haystack date.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hdate,,,,,,,,,,,,,,,,,[{summary:"The date value." kind:"parameter" name:"value" type:"string | Date"}],,,,,,,,,,,,,,,,,"HDate",,,,"public static make(value: string | Date): HDate ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:toString,,,,,,,,,,,,,,,,,,[],,,,,,,"toString",,,"",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:href,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"string",,,,"public toString(): string ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:haysonVal,,,,,,,,,,,,,,,,,,,,,,,,,"HaysonVal",,,"Haystack value.",,,,,,,,,,,,M,,,,,,,,,,,,,,,M,[^typeScript:interfaces],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[{summary:"" docs:{} decorators:[] kind:"property" name:"val" returnType:"string | boolean | number | null | Array | HaysonDict | HaysonCoord | HaysonGrid"},{summary:"" docs:{} decorators:[] kind:"property" name:"unit" isOptional:T returnType:"string"},{summary:"" docs:{} decorators:[] kind:"property" name:"kind" returnType:"Kind"},{summary:"" docs:{} decorators:[] kind:"property" name:"type" isOptional:T returnType:"string"}],,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:make,,,,,,,,,,,,,,,,,,[],,,,,,,"make",,,"Factory method for a haystack boolean.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hbool,,,,,,,,,,,,,,,,,[{summary:"The value." kind:"parameter" name:"value" type:"boolean"}],,,,,,,,,,,,,,,,,"HBool",,,,"public static make(value: boolean): HBool ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:equals,,,,,,,,,,,,,,,,,,[],,,,,,,"equals",,,"Value equality check.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:htime,,,,,,,,,,,,,,,,,[{summary:"The time to test." kind:"parameter" name:"time" type:"HTime"}],,,,,,,,,,,,,,,,,"boolean",,,,"public equals(time: HTime): boolean ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:toString,,,,,,,,,,,,,,,,,,[],,,,,,,"toString",,,"",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hremove,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"string",,,,"public toString(): string ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:equals,,,,,,,,,,,,,,,,,,[],,,,,,,"equals",,,"Value equality check.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hdict,,,,,,,,,,,,,,,,,[{summary:"The dict to test." kind:"parameter" name:"dict" type:"HDict"}],,,,,,,,,,,,,,,,,"boolean",,,,"public equals(dict: HDict): boolean ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:is,,,,,,,,,,,,,,,,,,[],,,,,,,"is",,,"Compares the value's kind.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hval,,,,,,,,,,,,,,,,,[{summary:"The kind to compare against." kind:"parameter" name:"kind" type:"Kind"}],,,,,,,,,,,,,,,,,"boolean",,,,"public is(kind: Kind): boolean ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:toFilter,,,,,,,,,,,,,,,,,,[],,,,,,,"toFilter",,,"Encodes to an encoded zinc value that can be used\nin a haystack filter string.\n\nA grid isn't supported in filter so throw an error.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hgrid,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"string",,,,"public toFilter(): string ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:toZinc,,,,,,,,,,,,,,,,,,[],,,,,,,"toZinc",,,"Encode to zinc encoding.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hstr,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"string",,,,"public toZinc(): string ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:toJSON,,,,,,,,,,,,,,,,,,[],,,,,,,"toJSON",,,"",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:gridRow,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"Array",,,,"public toJSON(): HaysonVal[] ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:compareTo,,,,,,,,,,,,,,,,,,[],,,,,,,"compareTo",,,"Compares two refs.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:href,,,,,,,,,,,,,,,,,[{summary:"The ref to compare against." kind:"parameter" name:"ref" type:"HRef"}],,,,,,,,,,,,,,,,,"number",,,,"public compareTo(ref: HRef): number ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:next,,,,,,,,,,,,,,,,,,[],,,,,,,"next",,,"",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:dictIterator,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"IteratorResult",,,,"public next(): IteratorResult ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:numberDateTime,,,,,,,,,,,,,,,,,,[],,,,,,,"numberDateTime",,,"Consume the data stream and return a number, date or time value.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:zincReader,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"HNum | HDate | HTime | HDateTime",,,,"public numberDateTime(): HNum | HDate | HTime | HDateTime ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:equals,,,,,,,,,,,,,,,,,,[],,,,,,,"equals",,,"Value equality check.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hbin,,,,,,,,,,,,,,,,,[{summary:"The bin property." kind:"parameter" name:"bin" type:"HBin"}],,,,,,,,,,,,,,,,,"boolean",,,,"public equals(bin: HBin): boolean ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:toFilter,,,,,,,,,,,,,,,,,,[],,,,,,,"toFilter",,,"Encodes to an encoded zinc value that can be used\nin a haystack filter string.\n\nA dict isn't supported in filter so throw an error.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hnull,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"string",,,,"public toFilter(): string ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:toZinc,,,,,,,,,,,,,,,,,,[],,,,,,,"toZinc",,,"Encodes to an encoding zinc value.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hdateTime,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"string",,,,"public toZinc(): string ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:toString,,,,,,,,,,,,,,,,,,[],,,,,,,"toString",,,"",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:htime,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"string",,,,"public toString(): string ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:toString,,,,,,,,,,,,,,,,,,[],,,,,,,"toString",,,"",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hdict,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"string",,,,"public toString(): string ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:toJSON,,,,,,,,,,,,,,,,,,[],,,,,,,"toJSON",,,"",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hgrid,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"HaysonVal",,,,"public toJSON(): HaysonVal ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:compareTo,,,,,,,,,,,,,,,,,,[],,,,,,,"compareTo",,,"Compares two bins.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hbin,,,,,,,,,,,,,,,,,[{summary:"The bin to compare against." kind:"parameter" name:"bin" type:"HBin"}],,,,,,,,,,,,,,,,,"number",,,,"public compareTo(bin: HBin): number ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:hvalRow,,,,,,,,,,,,,,,,,,,,,,,,,"HValRow",,,"A haystack value row used for iteration.",,,,,,,,,,,,M,,,,,,,,,,,,,,,M,[^typeScript:interfaces],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[{summary:"" docs:{} decorators:[] kind:"property" name:"name" returnType:"string"},{summary:"" docs:{} decorators:[] kind:"property" name:"value" returnType:"HVal"}],,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:dictIterator,,,,,,,,,,,M,,,,,,,,,,,,,,"DictIterator",,,"An iterator for a dict.",,,,,,,,,,,,M,,,,,,,,,,,,,[^typeScript:iteratorHValRow],,,[^typeScript:classes],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,{},,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:toJSON,,,,,,,,,,,,,,,,,,[],,,,,,,"toJSON",,,"",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hdict,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"HaysonVal",,,,"public toJSON(): HaysonVal ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:toString,,,,,,,,,,,,,,,,,,[],,,,,,,"toString",,,"",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hbool,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"string",,,,"public toString(): string ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:equals,,,,,,,,,,,,,,,,,,[],,,,,,,"equals",,,"Value equality check.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hdef,,,,,,,,,,,,,,,,,[{summary:"" kind:"parameter" name:"def" type:"HDef"}],,,,,,,,,,,,,,,,,"boolean",,,,"public equals(def: HDef): boolean ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:make,,,,,,,,,,,,,,,,,,[],,,,,,,"make",,,"Make a haystack xstring.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hxstr,,,,,,,,,,,,,,,,,[{summary:"The type." kind:"parameter" name:"type" type:"string"},{summary:"The value." kind:"parameter" name:"value" type:"string"}],,,,,,,,,,,,,,,,,"HXStr",,,,"public static make(type: string, value: string): HXStr ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:make,,,,,,,,,,,,,,,,,,[],,,,,,,"make",,,"Factory method for a new haystack coord.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hcoord,,,,,,,,,,,,,,,,,[{summary:"The latitude value." kind:"parameter" name:"latitude" type:"number"},{summary:"The longitude value." kind:"parameter" name:"longitude" type:"number"}],,,,,,,,,,,,,,,,,"HCoord",,,,"public static make(latitude: number, longitude: number): HCoord ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^traitView:point,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^traitView],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[^trait:point],,,,,,M,,,,,,,,,,,,,,, ,^typeScript:toZinc,,,,,,,,,,,,,,,,,,[],,,,,,,"toZinc",,,"Encode to zinc encoding.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hdef,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"string",,,,"public toZinc(): string ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:toFilter,,,,,,,,,,,,,,,,,,[],,,,,,,"toFilter",,,"Encodes to an encoded zinc value that can be used\nin a haystack filter string.\n\nA dict isn't supported in filter so throw an error.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hmarker,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"string",,,,"public toFilter(): string ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:now,,,,,,,,,,,,,,,,,,[],,,,,,,"now",,,"",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hdate,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"HDate",,,,"public static now(): HDate ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:compareTo,,,,,,,,,,,,,,,,,,[],,,,,,,"compareTo",,,"Compares two numbers.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hval,,,,,,,,,,,,,,,,,[{summary:"" kind:"parameter" name:"value" type:"HVal"}],,,,,,,,,,,,,,,,,"number",,,,"public abstract compareTo(value: HVal): number",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:hcoord,,,,,,,,,,,M,,,,,,,,,,,,,,"HCoord",,,"Haystack coord.",,,,,,,,,,[^typeScript:hval],,M,,,,,,,,,,,,,,,,[^typeScript:classes],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[{summary:"" isGetter:T docs:{returns:"The latitude value."} decorators:[] kind:"property" name:"latitude" isPublic:T returnType:"number"},{summary:"" isGetter:T docs:{returns:"The longitude value."} decorators:[] kind:"property" name:"longitude" isPublic:T returnType:"number"}],,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:ref,,,,,,,,,,,,,,,,,,[],,,,,,,"ref",,,"Consume the data stream and return an ref value.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:zincReader,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"HRef",,,,"public ref(): HRef ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:toJSON,,,,,,,,,,,,,,,,,,[],,,,,,,"toJSON",,,"",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hbin,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"HaysonVal",,,,"public toJSON(): HaysonVal ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:equals,,,,,,,,,,,,,,,,,,[],,,,,,,"equals",,,"Value equality check.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hdate,,,,,,,,,,,,,,,,,[{summary:"" kind:"parameter" name:"date" type:"HDate"}],,,,,,,,,,,,,,,,,"boolean",,,,"public equals(date: HDate): boolean ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:make,,,,,,,,,,,,,,,,,,[],,,,,,,"make",,,"Makes a haystack time.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:htime,,,,,,,,,,,,,,,,,[{summary:"The value." kind:"parameter" name:"value" type:"string | Date"}],,,,,,,,,,,,,,,,,"HTime",,,,"public static make(value: string | Date): HTime ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:toList,,,,,,,,,,,,,,,,,,[],,,,,,,"toList",,,"",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hdict,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"HList",,,,"public toList(): HList ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:equals,,,,,,,,,,,,,,,,,,[],,,,,,,"equals",,,"Value equality check.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hlist,,,,,,,,,,,,,,,,,[{summary:"The list to test." kind:"parameter" name:"list" type:"HList"}],,,,,,,,,,,,,,,,,"boolean",,,,"public equals(list: HList): boolean ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:make,,,,,,,,,,,,,,,,,,[],,,,,,,"make",,,"Make a haystack bin.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hbin,,,,,,,,,,,,,,,,,[{summary:"The mime type." kind:"parameter" name:"mime" type:"string"}],,,,,,,,,,,,,,,,,"HBin",,,,"public static make(mime: string): HBin ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:getKind,,,,,,,,,,,,,,,,,,[],,,,,,,"getKind",,,"",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hgrid,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"Kind",,,,"public getKind(): Kind ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:make,,,,,,,,,,,,,,,,,,[],,,,,,,"make",,,"Makes a Haystack ref.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:href,,,,,,,,,,,,,,,,,[{summary:"The value." kind:"parameter" name:"value" type:"string"}],,,,,,,,,,,,,,,,,"HRef",,,,"public static make(value: string): HRef ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:compareTo,,,,,,,,,,,,,,,,,,[],,,,,,,"compareTo",,,"Compares two date times.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hdateTime,,,,,,,,,,,,,,,,,[{summary:"The date time value to compare against." kind:"parameter" name:"dateTime" type:"HDateTime"}],,,,,,,,,,,,,,,,,"number",,,,"public compareTo(dateTime: HDateTime): number ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:toFilter,,,,,,,,,,,,,,,,,,[],,,,,,,"toFilter",,,"Encodes to an encoded zinc value that can be used\nin a haystack filter string.\n\nA dict isn't supported in filter so throw an error.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hcoord,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"string",,,,"public toFilter(): string ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:toString,,,,,,,,,,,,,,,,,,[],,,,,,,"toString",,,"",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hgrid,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"string",,,,"public toString(): string ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:htime,,,,,,,,,,,M,,,,,,,,,,,,,,"HTime",,,"Haystack time.",,,,,,,,,,[^typeScript:hval],,M,,,,,,,,,,,,,,,,[^typeScript:classes],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[{summary:"Midnight" isReadonly:T isStatic:T docs:{} decorators:[] kind:"property" name:"MIDNIGHT" isPublic:T returnType:"HTime"},{summary:"" isGetter:T docs:{returns:"The time value."} decorators:[] kind:"property" name:"value" isPublic:T returnType:"string"}],,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:toString,,,,,,,,,,,,,,,,,,[],,,,,,,"toString",,,"",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hdef,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"string",,,,"public toString(): string ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:equals,,,,,,,,,,,,,,,,,,[],,,,,,,"equals",,,"Value equality check.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hxstr,,,,,,,,,,,,,,,,,[{summary:"The xstring to test." kind:"parameter" name:"xstr" type:"HXStr"}],,,,,,,,,,,,,,,,,"boolean",,,,"public equals(xstr: HXStr): boolean ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:hval,,,,,,,,,,,M,,,,,,,,,,,,,,"HVal",,,"The interface for a haystack value.\n\nEach haystack encoded value should declare a static factory 'make' method\nused for creating values. All constructors should be kept private (or protected).\n\nAny 'toString' overrides should display a human friendly readonly version of the value.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:classes],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,{},,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:haysonGridColumn,,,,,,,,,,,,,,,,,,,,,,,,,"HaysonGridColumn",,,"Hayson grid column.",,,,,,,,,,,,M,,,,,,,,,,,,,,,M,[^typeScript:interfaces],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[{summary:"" docs:{} decorators:[] kind:"property" name:"meta" returnType:"HaysonVal"},{summary:"" docs:{} decorators:[] kind:"property" name:"name" returnType:"string"}],,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:toZinc,,,,,,,,,,,,,,,,,,[],,,,,,,"toZinc",,,"Encodes to an encoding zinc value.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hbin,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"string",,,,"public toZinc(): string ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:getKind,,,,,,,,,,,,,,,,,,[],,,,,,,"getKind",,,"",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hstr,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"Kind",,,,"public getKind(): Kind ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:setJs,,,,,,,,,,,,,,,,,,[],,,,,,,"setJs",,,"Set a haystack value from some literal javascript.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hdict,,,,,,,,,,,,,,,,,[{summary:"The name to set." kind:"parameter" name:"name" type:"string"},{summary:"The haystack value to set." kind:"parameter" name:"value" type:"string | boolean | number"}],,,,,,,,,,,,,,,,,"void",,,,"public setJs(name: string, value: string | boolean | number): void ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:equals,,,,,,,,,,,,,,,,,,[],,,,,,,"equals",,,"Value equality check.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hcoord,,,,,,,,,,,,,,,,,[{summary:"The coordinate property." kind:"parameter" name:"coord" type:"HCoord"}],,,,,,,,,,,,,,,,,"boolean",,,,"public equals(coord: HCoord): boolean ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:href,,,,,,,,,,,M,,,,,,,,,,,,,,"HRef",,,"Haystack ref.",,,,,,,,,,[^typeScript:hval],,M,,,,,,,,,,,,,,,,[^typeScript:classes],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[{summary:"" isGetter:T docs:{returns:"The ref value."} decorators:[] kind:"property" name:"value" isPublic:T returnType:"string"}],,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:compareTo,,,,,,,,,,,,,,,,,,[],,,,,,,"compareTo",,,"Compares two values.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hna,,,,,,,,,,,,,,,,,[{summary:"The na to compare against." kind:"parameter" name:"na" type:"HNa"}],,,,,,,,,,,,,,,,,"number",,,,"public compareTo(na: HNa): number ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:toFilter,,,,,,,,,,,,,,,,,,[],,,,,,,"toFilter",,,"Encodes to an encoded zinc value that can be used\nin a haystack filter string.\n\nA dict isn't supported in filter so throw an error.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hdef,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"string",,,,"public toFilter(): string ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:getKind,,,,,,,,,,,,,,,,,,[],,,,,,,"getKind",,,"",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hdateTime,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"Kind",,,,"public getKind(): Kind ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:getKind,,,,,,,,,,,,,,,,,,[],,,,,,,"getKind",,,"",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hna,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"Kind",,,,"public getKind(): Kind ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:compareTo,,,,,,,,,,,,,,,,,,[],,,,,,,"compareTo",,,"Compares two lists.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hlist,,,,,,,,,,,,,,,,,[{summary:"The list to compare against." kind:"parameter" name:"list" type:"HList"}],,,,,,,,,,,,,,,,,"number",,,,"public compareTo(list: HList): number ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:toString,,,,,,,,,,,,,,,,,,[],,,,,,,"toString",,,"",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hstr,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"string",,,,"public toString(): string ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:getKind,,,,,,,,,,,,,,,,,,[],,,,,,,"getKind",,,"",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hbin,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"Kind",,,,"public getKind(): Kind ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:next,,,,,,,,,,,,,,,,,,[],,,,,,,"next",,,"",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:listIterator,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"IteratorResult",,,,"public next(): IteratorResult ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:toZinc,,,,,,,,,,,,,,,,,,[],,,,,,,"toZinc",,,"Encodes to an encoding zinc value.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hremove,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"string",,,,"public toZinc(): string ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:equals,,,,,,,,,,,,,,,,,,[],,,,,,,"equals",,,"Row equality check.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:gridRow,,,,,,,,,,,,,,,,,[{summary:"The row to test." kind:"parameter" name:"row" type:"GridRow"}],,,,,,,,,,,,,,,,,"boolean",,,,"public equals(row: GridRow): boolean ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:filter,,,,,,,,,,,,,,,,,,[],,,,,,,"filter",,,"Filter the list via a haystack filter and return a new list.\n\nThe array list is referenced as either 'it' or 'item.\n\n```typescript\nconst list = HList.make([ HStr.make('foo'), HStr.make('boo'), HStr.make('foo') ])\n\nconst filteredList = list.filter('item == \"foo\"')\n```",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hlist,,,,,,,,,,,,,,,,,[{summary:"A haystack filter." kind:"parameter" name:"filter" type:"string"}],,,,,,,,,,,,,,,,,"HList",,,,"public filter(filter: string): HList ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:toString,,,,,,,,,,,,,,,,,,[],,,,,,,"toString",,,"",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hcoord,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"string",,,,"public toString(): string ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:make,,,,,,,,,,,,,,,,,,[],,,,,,,"make",,,"Makes a haystack remove instance.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hremove,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"HRemove",,,,"public static make(): HRemove ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:function,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript,^typeScript:kind],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,^typeScript:clear,,,,,,,,,,,,,,,,,,[],,,,,,,"clear",,,"Clear all entries from the dict.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hdict,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"void",,,,"public clear(): void ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:toZinc,,,,,,,,,,,,,,,,,,[],,,,,,,"toZinc",,,"Encode to zinc encoding.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hbool,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"string",,,,"public toZinc(): string ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:toJSON,,,,,,,,,,,,,,,,,,[],,,,,,,"toJSON",,,"",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hstr,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"HaysonVal",,,,"public toJSON(): HaysonVal ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:uri,,,,,,,,,,,,,,,,,,[],,,,,,,"uri",,,"Consume the data stream and return an uri value.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:zincReader,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"HUri",,,,"public uri(): HUri ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:make,,,,,,,,,,,,,,,,,,[],,,,,,,"make",,,"Make a dict.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hdict,,,,,,,,,,,,,,,,,[{summary:"dict map values. IF not specified an empty dict is created." kind:"parameter" name:"values" isOptional:T type:"HValObj"}],,,,,,,,,,,,,,,,,"HDict",,,,"public static make(values?: HValObj): HDict ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:hna,,,,,,,,,,,M,,,,,,,,,,,,,,"HNa",,,"Haystack NA value.",,,,,,,,,,[^typeScript:hval],,M,,,,,,,,,,,,,,,,[^typeScript:classes],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[{summary:"The marker instance." isReadonly:T isStatic:T docs:{} decorators:[] kind:"property" name:"INSTANCE" isPublic:T returnType:""}],,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:toJSON,,,,,,,,,,,,,,,,,,[],,,,,,,"toJSON",,,"",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:huri,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"HaysonVal",,,,"public toJSON(): HaysonVal ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:compareTo,,,,,,,,,,,,,,,,,,[],,,,,,,"compareTo",,,"Compares two coords.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hcoord,,,,,,,,,,,,,,,,,[{summary:"The coordinate to compare against." kind:"parameter" name:"coord" type:"HCoord"}],,,,,,,,,,,,,,,,,"number",,,,"public compareTo(coord: HCoord): number ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:toFilter,,,,,,,,,,,,,,,,,,[],,,,,,,"toFilter",,,"Encodes to an encoded zinc value that can be used\nin a haystack filter string.\n\nA dict isn't supported in filter so throw an error.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hxstr,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"string",,,,"public toFilter(): string ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:hgrid,,,,,,,,,,,M,,,,,,,,,,,,,,"HGrid",,,"Haystack Grid.\n\nThis implementation is designed to work with an iterator of rows.\nThis enables any Zinc parser to lazily evaluate rows on demand.",,,,,,,,,,[^typeScript:hval],,M,,,,,,,,,,,,,,,,[^typeScript:classes],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,[{summary:"The grid's meta data." docs:{} decorators:[] kind:"property" name:"meta" isPublic:T returnType:"HDict"},{summary:"The grid's columns." docs:{} decorators:[] kind:"property" name:"columns" isPublic:T returnType:"Array"},{summary:"Get all the grid's rows as an array.\n\nPlease note, if possible it's advised to use an iterator instead of directly\naccessing this array." isGetter:T docs:{returns:"All the grid's rows."} decorators:[] kind:"property" name:"rows" isPublic:T returnType:"Array"},{summary:"The grid's version number." isReadonly:T docs:{} decorators:[] kind:"property" name:"version" isPublic:T returnType:"string"}],,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:compareTo,,,,,,,,,,,,,,,,,,[],,,,,,,"compareTo",,,"Compares two numbers.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hnum,,,,,,,,,,,,,,,,,[{summary:"The number to compare." kind:"parameter" name:"num" type:"HNum"}],,,,,,,,,,,,,,,,,"number",,,,"public compareTo(num: HNum): number ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:make,,,,,,,,,,,,,,,,,,[],,,,,,,"make",,,"Makes a haystack URI.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:huri,,,,,,,,,,,,,,,,,[{summary:"The string value for the URI." kind:"parameter" name:"value" type:"string"}],,,,,,,,,,,,,,,,,"HUri",,,,"public static make(value: string): HUri ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:toJSON,,,,,,,,,,,,,,,,,,[],,,,,,,"toJSON",,,"",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hval,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"HaysonVal",,,,"public abstract toJSON(): HaysonVal",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:haysonDict,,,,,,,,,,,,,,,,,,,,,,,,,"HaysonDict",,,"Haystack Dict.",,,,,,,,,,,,M,,,,,,,,,,,,,,,M,[^typeScript:interfaces],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,{},,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:toString,,,,,,,,,,,,,,,,,,[],,,,,,,"toString",,,"",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hmarker,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"string",,,,"public toString(): string ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:toZinc,,,,,,,,,,,,,,,,,,[],,,,,,,"toZinc",,,"Encodes to an encoding zinc value.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hnull,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"string",,,,"public toZinc(): string ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:equals,,,,,,,,,,,,,,,,,,[],,,,,,,"equals",,,"Grid equality check.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hgrid,,,,,,,,,,,,,,,,,[{summary:"The grid to test." kind:"parameter" name:"grid" type:"HGrid"}],,,,,,,,,,,,,,,,,"boolean",,,,"public equals(grid: HGrid): boolean ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:toZinc,,,,,,,,,,,,,,,,,,[],,,,,,,"toZinc",,,"Encodes to an encoding zinc value.",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:method],^typeScript:method,,,,,,,^typeScript:hdict,,,,,,,,,,,,,,,,,[],,,,,,,,,,,,,,,,,"string",,,,"public toZinc(): string ",,,,,,,,,,,,,,,,,M,,,,,,,,,, ,^typeScript:default_GRID_VERSION,,,,,,,,,,,,,,,,,,,,,,,,,"DEFAULT_GRID_VERSION",,,"",,,,,,,,,,,,M,,,,,,,,,,,,,,,,[^typeScript:variables],,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,M,,,,,,,,