%% coding: utf-8
{"4.3.11",
 [{"4.3.2",[],
   [{load_object_code,{ssl,"10.2.4.3",[ssl_cipher]}},
    {load_object_code,{cuttlefish,"3.3.6",[cuttlefish_duration_parse]}},
    {load_object_code,
        {emqx,"4.3.12",
            [emqx_vm,emqx_sys_mon,emqx_alarm_handler,emqx_misc,emqx_packet,
             emqx_shared_sub,emqx_ws_connection,emqx_http_lib,emqx_channel,
             emqx_connection,emqx_cm,emqx_access_rule,emqx_ctl,emqx_pqueue,
             emqx_mqueue,emqx_frame,emqx_rpc,emqx_app]}},
    {load_object_code,
        {ekka,"0.8.1.7",
            [ekka_cluster_dns,ekka_ring,ekka_node_monitor,ekka_autocluster,
             ekka_autoheal,ekka_locker,ekka_httpc,ekka_mnesia]}},
    {load_object_code,{emqx_plugin_libs,"4.3.1",[emqx_plugin_libs_ssl]}},
    {load_object_code,{emqx_modules,"4.3.3",[emqx_mod_presence]}},
    {load_object_code,{emqx_retainer,"4.3.2",[emqx_retainer]}},
    {load_object_code,{emqtt,"1.2.3.1",[emqtt,emqtt_frame]}},
    {load_object_code,{emqx_bridge_mqtt,"4.3.3",[emqx_bridge_mqtt_actions]}},
    {load_object_code,
        {emqx_sn,"4.3.4",
            [emqx_sn_app,emqx_sn_asleep_timer,emqx_sn_broadcast,emqx_sn_frame,
             emqx_sn_gateway,emqx_sn_registry,emqx_sn_sup]}},
    {load_object_code,{emqx_coap,"4.3.1",[emqx_coap_mqtt_adapter]}},
    {load_object_code,
        {emqx_stomp,"4.3.3",
            [emqx_stomp,emqx_stomp_connection,emqx_stomp_frame,
             emqx_stomp_heartbeat,emqx_stomp_protocol]}},
    {load_object_code,{gun,"1.3.7",[gun]}},
    {load_object_code,{ehttpc,"0.1.14",[ehttpc,ehttpc_pool]}},
    {load_object_code,
        {emqx_auth_http,"4.3.3",
            [emqx_acl_http,emqx_auth_http,emqx_auth_http_app,
             emqx_auth_http_cli,emqx_auth_http_sup]}},
    {load_object_code,{ecpool,"0.5.2",[ecpool_worker,ecpool_sup]}},
    {load_object_code,{emqx_auth_jwt,"4.3.1",[emqx_auth_jwt_svr]}},
    {load_object_code,
        {emqx_auth_mnesia,"4.3.4",
            [emqx_acl_mnesia_migrator,emqx_acl_mnesia_db,emqx_auth_mnesia_sup,
             emqx_auth_mnesia_api,emqx_acl_mnesia,emqx_acl_mnesia_api,
             emqx_acl_mnesia_cli]}},
    {load_object_code,
        {emqx_web_hook,"4.3.8",
            [emqx_web_hook_app,emqx_web_hook,emqx_web_hook_actions]}},
    {load_object_code,
        {emqx_rule_engine,"4.3.6",
            [emqx_rule_registry,emqx_rule_engine,emqx_rule_actions]}},
    {load_object_code,
        {lwm2m_coap,"1.1.5",[lwm2m_coap_server_content,lwm2m_coap_channel]}},
    {load_object_code,
        {emqx_lwm2m,"4.3.5",
            [binary_util,emqx_lwm2m_api,emqx_lwm2m_app,emqx_lwm2m_cm,
             emqx_lwm2m_cm_sup,emqx_lwm2m_cmd_handler,
             emqx_lwm2m_coap_resource,emqx_lwm2m_coap_server,emqx_lwm2m_json,
             emqx_lwm2m_message,emqx_lwm2m_protocol,emqx_lwm2m_sup,
             emqx_lwm2m_timer,emqx_lwm2m_tlv,emqx_lwm2m_xml_object,
             emqx_lwm2m_xml_object_db]}},
    {load_object_code,
        {emqx_auth_ldap,"4.3.2",[emqx_acl_ldap,emqx_auth_ldap_cli]}},
    {load_object_code,
        {mongodb,"3.0.10",
            [mc_auth_logic,mc_connection_man,mc_cursor,mc_monitor,mc_pool_sup,
             mc_selecting_logics,mc_server,mc_super_sup,mc_topology,
             mc_topology_logics,mc_utils,mc_worker,mc_worker_api,
             mc_worker_logic,mongo_api,mongo_app,mongo_id_server,
             mongo_protocol,mongoc]}},
    {load_object_code,{grpc,"0.6.3",[grpc_utils,grpc_client,grpc_stream]}},
    {load_object_code,
        {emqx_exhook,"4.3.4",
            [emqx_exhook,emqx_exhook_app,emqx_exhook_cli,emqx_exhook_handler,
             emqx_exhook_mngr,emqx_exhook_pb,emqx_exhook_server,
             emqx_exhook_sup,emqx_exhook_v_1_hook_provider_bhvr,
             emqx_exhook_v_1_hook_provider_client]}},
    {load_object_code,
        {emqx_exproto,"4.3.5",
            [emqx_exproto_gsvr,emqx_exproto_gcli,emqx_exproto_conn,
             emqx_exproto_channel]}},
    {load_object_code,{minirest,"0.3.7",[minirest,minirest_handler]}},
    {load_object_code,
        {emqx_management,"4.3.9",
            [emqx_mgmt,emqx_mgmt_api,emqx_mgmt_api_acl,emqx_mgmt_api_alarms,
             emqx_mgmt_api_apps,emqx_mgmt_api_banned,emqx_mgmt_api_brokers,
             emqx_mgmt_api_clients,emqx_mgmt_api_data,emqx_mgmt_api_listeners,
             emqx_mgmt_api_metrics,emqx_mgmt_api_nodes,emqx_mgmt_api_plugins,
             emqx_mgmt_api_pubsub,emqx_mgmt_api_routes,emqx_mgmt_api_stats,
             emqx_mgmt_api_subscriptions,emqx_mgmt_app,emqx_mgmt_auth,
             emqx_mgmt_cli,emqx_mgmt_data_backup,emqx_mgmt_http,emqx_mgmt_sup,
             emqx_mgmt_util]}},
    {load_object_code,
        {emqx_dashboard,"4.3.7",
            [emqx_dashboard,emqx_dashboard_admin,emqx_dashboard_api,
             emqx_dashboard_app,emqx_dashboard_cli,emqx_dashboard_sup]}},
    point_of_no_return,
    {load,{ssl_cipher,brutal_purge,soft_purge}},
    {load,{cuttlefish_duration_parse,brutal_purge,soft_purge}},
    {load,{emqx_vm,brutal_purge,soft_purge}},
    {load,{emqx_sys_mon,brutal_purge,soft_purge}},
    {load,{emqx_alarm_handler,brutal_purge,soft_purge}},
    {load,{emqx_misc,brutal_purge,soft_purge}},
    {load,{emqx_packet,brutal_purge,soft_purge}},
    {load,{emqx_shared_sub,brutal_purge,soft_purge}},
    {load,{emqx_ws_connection,brutal_purge,soft_purge}},
    {load,{emqx_http_lib,brutal_purge,soft_purge}},
    {load,{emqx_channel,brutal_purge,soft_purge}},
    {load,{emqx_connection,brutal_purge,soft_purge}},
    {load,{emqx_cm,brutal_purge,soft_purge}},
    {load,{emqx_access_rule,brutal_purge,soft_purge}},
    {load,{emqx_ctl,brutal_purge,soft_purge}},
    {load,{emqx_pqueue,brutal_purge,soft_purge}},
    {load,{emqx_mqueue,brutal_purge,soft_purge}},
    {load,{emqx_frame,brutal_purge,soft_purge}},
    {load,{emqx_rpc,brutal_purge,soft_purge}},
    {load,{emqx_app,brutal_purge,soft_purge}},
    {load,{ekka_cluster_dns,brutal_purge,soft_purge}},
    {load,{ekka_ring,brutal_purge,soft_purge}},
    {load,{ekka_node_monitor,brutal_purge,soft_purge}},
    {load,{ekka_autocluster,brutal_purge,soft_purge}},
    {load,{ekka_autoheal,brutal_purge,soft_purge}},
    {load,{ekka_locker,brutal_purge,soft_purge}},
    {load,{ekka_httpc,brutal_purge,soft_purge}},
    {load,{ekka_mnesia,brutal_purge,soft_purge}},
    {load,{emqx_plugin_libs_ssl,brutal_purge,soft_purge}},
    {load,{emqx_mod_presence,brutal_purge,soft_purge}},
    {load,{emqx_retainer,brutal_purge,soft_purge}},
    {load,{emqtt,brutal_purge,soft_purge}},
    {load,{emqtt_frame,brutal_purge,soft_purge}},
    {load,{emqx_bridge_mqtt_actions,brutal_purge,soft_purge}},
    {apply,{application,stop,[emqx_sn]}},
    {remove,{emqx_sn_app,brutal_purge,brutal_purge}},
    {remove,{emqx_sn_asleep_timer,brutal_purge,brutal_purge}},
    {remove,{emqx_sn_broadcast,brutal_purge,brutal_purge}},
    {remove,{emqx_sn_frame,brutal_purge,brutal_purge}},
    {remove,{emqx_sn_gateway,brutal_purge,brutal_purge}},
    {remove,{emqx_sn_registry,brutal_purge,brutal_purge}},
    {remove,{emqx_sn_sup,brutal_purge,brutal_purge}},
    {purge,
        [emqx_sn_app,emqx_sn_asleep_timer,emqx_sn_broadcast,emqx_sn_frame,
         emqx_sn_gateway,emqx_sn_registry,emqx_sn_sup]},
    {load,{emqx_sn_app,brutal_purge,brutal_purge}},
    {load,{emqx_sn_asleep_timer,brutal_purge,brutal_purge}},
    {load,{emqx_sn_broadcast,brutal_purge,brutal_purge}},
    {load,{emqx_sn_frame,brutal_purge,brutal_purge}},
    {load,{emqx_sn_gateway,brutal_purge,brutal_purge}},
    {load,{emqx_sn_registry,brutal_purge,brutal_purge}},
    {load,{emqx_sn_sup,brutal_purge,brutal_purge}},
    {apply,{application,load,[emqx_sn]}},
    {load,{emqx_coap_mqtt_adapter,brutal_purge,soft_purge}},
    {apply,{application,stop,[emqx_stomp]}},
    {remove,{emqx_stomp,brutal_purge,brutal_purge}},
    {remove,{emqx_stomp_connection,brutal_purge,brutal_purge}},
    {remove,{emqx_stomp_frame,brutal_purge,brutal_purge}},
    {remove,{emqx_stomp_heartbeat,brutal_purge,brutal_purge}},
    {remove,{emqx_stomp_protocol,brutal_purge,brutal_purge}},
    {purge,
        [emqx_stomp,emqx_stomp_connection,emqx_stomp_frame,
         emqx_stomp_heartbeat,emqx_stomp_protocol]},
    {load,{emqx_stomp,brutal_purge,brutal_purge}},
    {load,{emqx_stomp_connection,brutal_purge,brutal_purge}},
    {load,{emqx_stomp_frame,brutal_purge,brutal_purge}},
    {load,{emqx_stomp_heartbeat,brutal_purge,brutal_purge}},
    {load,{emqx_stomp_protocol,brutal_purge,brutal_purge}},
    {apply,{application,load,[emqx_stomp]}},
    {apply,{emqx_stomp,force_clear_after_app_stoped,[]}},
    {load,{gun,brutal_purge,soft_purge}},
    {suspend,[ehttpc]},
    {load,{ehttpc,brutal_purge,brutal_purge}},
    {code_change,up,[{ehttpc,[]}]},
    {resume,[ehttpc]},
    {load,{ehttpc_pool,brutal_purge,soft_purge}},
    {apply,{application,stop,[emqx_auth_http]}},
    {remove,{emqx_acl_http,brutal_purge,brutal_purge}},
    {remove,{emqx_auth_http,brutal_purge,brutal_purge}},
    {remove,{emqx_auth_http_app,brutal_purge,brutal_purge}},
    {remove,{emqx_auth_http_cli,brutal_purge,brutal_purge}},
    {remove,{emqx_auth_http_sup,brutal_purge,brutal_purge}},
    {purge,
        [emqx_acl_http,emqx_auth_http,emqx_auth_http_app,emqx_auth_http_cli,
         emqx_auth_http_sup]},
    {load,{emqx_acl_http,brutal_purge,brutal_purge}},
    {load,{emqx_auth_http,brutal_purge,brutal_purge}},
    {load,{emqx_auth_http_app,brutal_purge,brutal_purge}},
    {load,{emqx_auth_http_cli,brutal_purge,brutal_purge}},
    {load,{emqx_auth_http_sup,brutal_purge,brutal_purge}},
    {apply,{application,load,[emqx_auth_http]}},
    {load,{ecpool_worker,brutal_purge,soft_purge}},
    {load,{ecpool_sup,brutal_purge,soft_purge}},
    {load,{emqx_auth_jwt_svr,brutal_purge,soft_purge}},
    {load,{emqx_acl_mnesia_db,brutal_purge,brutal_purge}},
    {load,{emqx_acl_mnesia_migrator,brutal_purge,brutal_purge}},
    {suspend,[emqx_auth_mnesia_sup]},
    {load,{emqx_auth_mnesia_sup,brutal_purge,brutal_purge}},
    {code_change,up,[{emqx_auth_mnesia_sup,[]}]},
    {resume,[emqx_auth_mnesia_sup]},
    {apply,{emqx_acl_mnesia_migrator,start_supervised,[]}},
    {load,{emqx_auth_mnesia_api,brutal_purge,soft_purge}},
    {load,{emqx_acl_mnesia,brutal_purge,soft_purge}},
    {load,{emqx_acl_mnesia_api,brutal_purge,soft_purge}},
    {load,{emqx_acl_mnesia_cli,brutal_purge,soft_purge}},
    {apply,{application,stop,[emqx_web_hook]}},
    {load,{emqx_web_hook_app,brutal_purge,soft_purge}},
    {load,{emqx_web_hook,brutal_purge,soft_purge}},
    {load,{emqx_web_hook_actions,brutal_purge,soft_purge}},
    {load,{emqx_rule_registry,brutal_purge,soft_purge}},
    {apply,{emqx_stats,cancel_update,[rule_registery_stats]}},
    {load,{emqx_rule_engine,brutal_purge,soft_purge}},
    {load,{emqx_rule_actions,brutal_purge,soft_purge}},
    {load,{lwm2m_coap_server_content,brutal_purge,soft_purge}},
    {load,{lwm2m_coap_channel,brutal_purge,soft_purge}},
    {apply,{application,stop,[emqx_lwm2m]}},
    {remove,{binary_util,brutal_purge,brutal_purge}},
    {remove,{emqx_lwm2m_app,brutal_purge,brutal_purge}},
    {remove,{emqx_lwm2m_cmd_handler,brutal_purge,brutal_purge}},
    {remove,{emqx_lwm2m_coap_resource,brutal_purge,brutal_purge}},
    {remove,{emqx_lwm2m_coap_server,brutal_purge,brutal_purge}},
    {remove,{emqx_lwm2m_json,brutal_purge,brutal_purge}},
    {remove,{emqx_lwm2m_message,brutal_purge,brutal_purge}},
    {remove,{emqx_lwm2m_protocol,brutal_purge,brutal_purge}},
    {remove,{emqx_lwm2m_sup,brutal_purge,brutal_purge}},
    {remove,{emqx_lwm2m_timer,brutal_purge,brutal_purge}},
    {remove,{emqx_lwm2m_tlv,brutal_purge,brutal_purge}},
    {remove,{emqx_lwm2m_xml_object,brutal_purge,brutal_purge}},
    {remove,{emqx_lwm2m_xml_object_db,brutal_purge,brutal_purge}},
    {purge,
        [binary_util,emqx_lwm2m_app,emqx_lwm2m_cmd_handler,
         emqx_lwm2m_coap_resource,emqx_lwm2m_coap_server,emqx_lwm2m_json,
         emqx_lwm2m_message,emqx_lwm2m_protocol,emqx_lwm2m_sup,
         emqx_lwm2m_timer,emqx_lwm2m_tlv,emqx_lwm2m_xml_object,
         emqx_lwm2m_xml_object_db]},
    {load,{binary_util,brutal_purge,brutal_purge}},
    {load,{emqx_lwm2m_api,brutal_purge,brutal_purge}},
    {load,{emqx_lwm2m_app,brutal_purge,brutal_purge}},
    {load,{emqx_lwm2m_cm,brutal_purge,brutal_purge}},
    {load,{emqx_lwm2m_cm_sup,brutal_purge,brutal_purge}},
    {load,{emqx_lwm2m_cmd_handler,brutal_purge,brutal_purge}},
    {load,{emqx_lwm2m_coap_resource,brutal_purge,brutal_purge}},
    {load,{emqx_lwm2m_coap_server,brutal_purge,brutal_purge}},
    {load,{emqx_lwm2m_json,brutal_purge,brutal_purge}},
    {load,{emqx_lwm2m_message,brutal_purge,brutal_purge}},
    {load,{emqx_lwm2m_protocol,brutal_purge,brutal_purge}},
    {load,{emqx_lwm2m_sup,brutal_purge,brutal_purge}},
    {load,{emqx_lwm2m_timer,brutal_purge,brutal_purge}},
    {load,{emqx_lwm2m_tlv,brutal_purge,brutal_purge}},
    {load,{emqx_lwm2m_xml_object,brutal_purge,brutal_purge}},
    {load,{emqx_lwm2m_xml_object_db,brutal_purge,brutal_purge}},
    {apply,{application,load,[emqx_lwm2m]}},
    {load,{emqx_acl_ldap,brutal_purge,soft_purge}},
    {load,{emqx_auth_ldap_cli,brutal_purge,soft_purge}},
    {apply,{application,stop,[mongodb]}},
    {remove,{mc_auth_logic,brutal_purge,brutal_purge}},
    {remove,{mc_connection_man,brutal_purge,brutal_purge}},
    {remove,{mc_cursor,brutal_purge,brutal_purge}},
    {remove,{mc_monitor,brutal_purge,brutal_purge}},
    {remove,{mc_pool_sup,brutal_purge,brutal_purge}},
    {remove,{mc_selecting_logics,brutal_purge,brutal_purge}},
    {remove,{mc_server,brutal_purge,brutal_purge}},
    {remove,{mc_super_sup,brutal_purge,brutal_purge}},
    {remove,{mc_topology,brutal_purge,brutal_purge}},
    {remove,{mc_topology_logics,brutal_purge,brutal_purge}},
    {remove,{mc_utils,brutal_purge,brutal_purge}},
    {remove,{mc_worker,brutal_purge,brutal_purge}},
    {remove,{mc_worker_api,brutal_purge,brutal_purge}},
    {remove,{mc_worker_logic,brutal_purge,brutal_purge}},
    {remove,{mongo_api,brutal_purge,brutal_purge}},
    {remove,{mongo_app,brutal_purge,brutal_purge}},
    {remove,{mongo_id_server,brutal_purge,brutal_purge}},
    {remove,{mongo_protocol,brutal_purge,brutal_purge}},
    {remove,{mongoc,brutal_purge,brutal_purge}},
    {purge,
        [mc_auth_logic,mc_connection_man,mc_cursor,mc_monitor,mc_pool_sup,
         mc_selecting_logics,mc_server,mc_super_sup,mc_topology,
         mc_topology_logics,mc_utils,mc_worker,mc_worker_api,mc_worker_logic,
         mongo_api,mongo_app,mongo_id_server,mongo_protocol,mongoc]},
    {load,{mc_auth_logic,brutal_purge,brutal_purge}},
    {load,{mc_connection_man,brutal_purge,brutal_purge}},
    {load,{mc_cursor,brutal_purge,brutal_purge}},
    {load,{mc_monitor,brutal_purge,brutal_purge}},
    {load,{mc_pool_sup,brutal_purge,brutal_purge}},
    {load,{mc_selecting_logics,brutal_purge,brutal_purge}},
    {load,{mc_server,brutal_purge,brutal_purge}},
    {load,{mc_super_sup,brutal_purge,brutal_purge}},
    {load,{mc_topology,brutal_purge,brutal_purge}},
    {load,{mc_topology_logics,brutal_purge,brutal_purge}},
    {load,{mc_utils,brutal_purge,brutal_purge}},
    {load,{mc_worker,brutal_purge,brutal_purge}},
    {load,{mc_worker_api,brutal_purge,brutal_purge}},
    {load,{mc_worker_logic,brutal_purge,brutal_purge}},
    {load,{mongo_api,brutal_purge,brutal_purge}},
    {load,{mongo_app,brutal_purge,brutal_purge}},
    {load,{mongo_id_server,brutal_purge,brutal_purge}},
    {load,{mongo_protocol,brutal_purge,brutal_purge}},
    {load,{mongoc,brutal_purge,brutal_purge}},
    {apply,{application,start,[mongodb,permanent]}},
    {load,{grpc_utils,brutal_purge,brutal_purge}},
    {load,{grpc_client,brutal_purge,soft_purge}},
    {load,{grpc_stream,brutal_purge,soft_purge}},
    {apply,{application,stop,[emqx_exhook]}},
    {remove,{emqx_exhook,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_app,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_cli,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_handler,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_pb,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_server,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_sup,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_v_1_hook_provider_bhvr,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_v_1_hook_provider_client,brutal_purge,brutal_purge}},
    {purge,
        [emqx_exhook,emqx_exhook_app,emqx_exhook_cli,emqx_exhook_handler,
         emqx_exhook_pb,emqx_exhook_server,emqx_exhook_sup,
         emqx_exhook_v_1_hook_provider_bhvr,
         emqx_exhook_v_1_hook_provider_client]},
    {load,{emqx_exhook,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_app,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_cli,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_handler,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_mngr,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_pb,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_server,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_sup,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_v_1_hook_provider_bhvr,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_v_1_hook_provider_client,brutal_purge,brutal_purge}},
    {apply,{application,load,[emqx_exhook]}},
    {load,{emqx_exproto_gsvr,brutal_purge,soft_purge}},
    {load,{emqx_exproto_gcli,brutal_purge,soft_purge}},
    {load,{emqx_exproto_conn,brutal_purge,soft_purge}},
    {load,{emqx_exproto_channel,brutal_purge,soft_purge}},
    {load,{minirest,brutal_purge,soft_purge}},
    {load,{minirest_handler,brutal_purge,soft_purge}},
    {apply,{minirest,stop_http,['http:management']}},
    {apply,{minirest,stop_http,['https:management']}},
    {apply,{application,stop,[emqx_management]}},
    {remove,{emqx_mgmt,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_acl,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_alarms,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_apps,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_banned,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_brokers,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_clients,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_data,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_listeners,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_metrics,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_nodes,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_plugins,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_pubsub,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_routes,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_stats,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_subscriptions,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_app,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_auth,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_cli,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_data_backup,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_http,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_sup,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_util,brutal_purge,brutal_purge}},
    {purge,
        [emqx_mgmt,emqx_mgmt_api,emqx_mgmt_api_acl,emqx_mgmt_api_alarms,
         emqx_mgmt_api_apps,emqx_mgmt_api_banned,emqx_mgmt_api_brokers,
         emqx_mgmt_api_clients,emqx_mgmt_api_data,emqx_mgmt_api_listeners,
         emqx_mgmt_api_metrics,emqx_mgmt_api_nodes,emqx_mgmt_api_plugins,
         emqx_mgmt_api_pubsub,emqx_mgmt_api_routes,emqx_mgmt_api_stats,
         emqx_mgmt_api_subscriptions,emqx_mgmt_app,emqx_mgmt_auth,
         emqx_mgmt_cli,emqx_mgmt_data_backup,emqx_mgmt_http,emqx_mgmt_sup,
         emqx_mgmt_util]},
    {load,{emqx_mgmt,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_acl,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_alarms,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_apps,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_banned,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_brokers,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_clients,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_data,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_listeners,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_metrics,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_nodes,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_plugins,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_pubsub,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_routes,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_stats,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_subscriptions,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_app,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_auth,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_cli,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_data_backup,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_http,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_sup,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_util,brutal_purge,brutal_purge}},
    {apply,{application,load,[emqx_management]}},
    {apply,{emqx_rule_engine,load_providers,[]}},
    {apply,{application,stop,[emqx_dashboard]}},
    {remove,{emqx_dashboard,brutal_purge,brutal_purge}},
    {remove,{emqx_dashboard_admin,brutal_purge,brutal_purge}},
    {remove,{emqx_dashboard_api,brutal_purge,brutal_purge}},
    {remove,{emqx_dashboard_app,brutal_purge,brutal_purge}},
    {remove,{emqx_dashboard_cli,brutal_purge,brutal_purge}},
    {remove,{emqx_dashboard_sup,brutal_purge,brutal_purge}},
    {purge,
        [emqx_dashboard,emqx_dashboard_admin,emqx_dashboard_api,
         emqx_dashboard_app,emqx_dashboard_cli,emqx_dashboard_sup]},
    {load,{emqx_dashboard,brutal_purge,brutal_purge}},
    {load,{emqx_dashboard_admin,brutal_purge,brutal_purge}},
    {load,{emqx_dashboard_api,brutal_purge,brutal_purge}},
    {load,{emqx_dashboard_app,brutal_purge,brutal_purge}},
    {load,{emqx_dashboard_cli,brutal_purge,brutal_purge}},
    {load,{emqx_dashboard_sup,brutal_purge,brutal_purge}},
    {apply,{application,load,[emqx_dashboard]}},
    {apply,{emqx_plugins,load,[]}}]},
  {"4.3.4",[],
   [{load_object_code,{ssl,"10.2.4.3",[ssl_cipher]}},
    {load_object_code,{cuttlefish,"3.3.6",[cuttlefish_duration_parse]}},
    {load_object_code,
        {emqx,"4.3.12",
            [emqx_vm,emqx_sys_mon,emqx_http_lib,emqx_connection,emqx_channel,
             emqx_ws_connection,emqx_alarm_handler,emqx_misc,emqx_cm,
             emqx_shared_sub,emqx_access_rule,emqx_ctl,emqx_pqueue,
             emqx_mqueue,emqx_frame,emqx_rpc,emqx_app]}},
    {load_object_code,
        {ekka,"0.8.1.7",
            [ekka_cluster_dns,ekka_ring,ekka_node_monitor,ekka_autocluster,
             ekka_autoheal,ekka_locker,ekka_httpc,ekka_mnesia]}},
    {load_object_code,{emqx_plugin_libs,"4.3.1",[emqx_plugin_libs_ssl]}},
    {load_object_code,{emqx_modules,"4.3.3",[emqx_mod_presence]}},
    {load_object_code,{emqx_retainer,"4.3.2",[emqx_retainer]}},
    {load_object_code,{emqx_bridge_mqtt,"4.3.3",[emqx_bridge_mqtt_actions]}},
    {load_object_code,{emqx_sn,"4.3.4",[emqx_sn_registry]}},
    {load_object_code,{emqx_coap,"4.3.1",[emqx_coap_mqtt_adapter]}},
    {load_object_code,
        {emqx_stomp,"4.3.3",
            [emqx_stomp,emqx_stomp_connection,emqx_stomp_frame,
             emqx_stomp_heartbeat,emqx_stomp_protocol]}},
    {load_object_code,{gun,"1.3.7",[gun]}},
    {load_object_code,{ehttpc,"0.1.14",[ehttpc,ehttpc_pool]}},
    {load_object_code,
        {emqx_auth_http,"4.3.3",
            [emqx_acl_http,emqx_auth_http,emqx_auth_http_app,
             emqx_auth_http_cli,emqx_auth_http_sup]}},
    {load_object_code,{ecpool,"0.5.2",[ecpool_worker,ecpool_sup]}},
    {load_object_code,
        {emqx_auth_mnesia,"4.3.4",
            [emqx_acl_mnesia_migrator,emqx_acl_mnesia_db,emqx_auth_mnesia_sup,
             emqx_auth_mnesia_api,emqx_acl_mnesia,emqx_acl_mnesia_api,
             emqx_acl_mnesia_cli]}},
    {load_object_code,
        {emqx_web_hook,"4.3.8",
            [emqx_web_hook_app,emqx_web_hook,emqx_web_hook_actions]}},
    {load_object_code,
        {emqx_rule_engine,"4.3.6",
            [emqx_rule_engine,emqx_rule_actions,emqx_rule_registry]}},
    {load_object_code,
        {emqx_lwm2m,"4.3.5",[emqx_lwm2m_protocol,emqx_lwm2m_message]}},
    {load_object_code,{emqx_auth_ldap,"4.3.2",[emqx_auth_ldap_cli]}},
    {load_object_code,
        {mongodb,"3.0.10",
            [mc_auth_logic,mc_connection_man,mc_cursor,mc_monitor,mc_pool_sup,
             mc_selecting_logics,mc_server,mc_super_sup,mc_topology,
             mc_topology_logics,mc_utils,mc_worker,mc_worker_api,
             mc_worker_logic,mongo_api,mongo_app,mongo_id_server,
             mongo_protocol,mongoc]}},
    {load_object_code,{grpc,"0.6.3",[grpc_utils,grpc_client,grpc_stream]}},
    {load_object_code,
        {emqx_exhook,"4.3.4",
            [emqx_exhook,emqx_exhook_app,emqx_exhook_cli,emqx_exhook_handler,
             emqx_exhook_mngr,emqx_exhook_pb,emqx_exhook_server,
             emqx_exhook_sup,emqx_exhook_v_1_hook_provider_bhvr,
             emqx_exhook_v_1_hook_provider_client]}},
    {load_object_code,
        {emqx_exproto,"4.3.5",
            [emqx_exproto_gsvr,emqx_exproto_gcli,emqx_exproto_conn,
             emqx_exproto_channel]}},
    {load_object_code,{minirest,"0.3.7",[minirest,minirest_handler]}},
    {load_object_code,
        {emqx_management,"4.3.9",
            [emqx_mgmt,emqx_mgmt_api,emqx_mgmt_api_acl,emqx_mgmt_api_alarms,
             emqx_mgmt_api_apps,emqx_mgmt_api_banned,emqx_mgmt_api_brokers,
             emqx_mgmt_api_clients,emqx_mgmt_api_data,emqx_mgmt_api_listeners,
             emqx_mgmt_api_metrics,emqx_mgmt_api_nodes,emqx_mgmt_api_plugins,
             emqx_mgmt_api_pubsub,emqx_mgmt_api_routes,emqx_mgmt_api_stats,
             emqx_mgmt_api_subscriptions,emqx_mgmt_app,emqx_mgmt_auth,
             emqx_mgmt_cli,emqx_mgmt_data_backup,emqx_mgmt_http,emqx_mgmt_sup,
             emqx_mgmt_util]}},
    {load_object_code,
        {emqx_dashboard,"4.3.7",
            [emqx_dashboard,emqx_dashboard_admin,emqx_dashboard_api,
             emqx_dashboard_app,emqx_dashboard_cli,emqx_dashboard_sup]}},
    point_of_no_return,
    {load,{ssl_cipher,brutal_purge,soft_purge}},
    {load,{cuttlefish_duration_parse,brutal_purge,soft_purge}},
    {load,{emqx_vm,brutal_purge,soft_purge}},
    {load,{emqx_sys_mon,brutal_purge,soft_purge}},
    {load,{emqx_http_lib,brutal_purge,soft_purge}},
    {load,{emqx_connection,brutal_purge,soft_purge}},
    {load,{emqx_channel,brutal_purge,soft_purge}},
    {load,{emqx_ws_connection,brutal_purge,soft_purge}},
    {load,{emqx_alarm_handler,brutal_purge,soft_purge}},
    {load,{emqx_misc,brutal_purge,soft_purge}},
    {load,{emqx_cm,brutal_purge,soft_purge}},
    {load,{emqx_shared_sub,brutal_purge,soft_purge}},
    {load,{emqx_access_rule,brutal_purge,soft_purge}},
    {load,{emqx_ctl,brutal_purge,soft_purge}},
    {load,{emqx_pqueue,brutal_purge,soft_purge}},
    {load,{emqx_mqueue,brutal_purge,soft_purge}},
    {load,{emqx_frame,brutal_purge,soft_purge}},
    {load,{emqx_rpc,brutal_purge,soft_purge}},
    {load,{emqx_app,brutal_purge,soft_purge}},
    {load,{ekka_cluster_dns,brutal_purge,soft_purge}},
    {load,{ekka_ring,brutal_purge,soft_purge}},
    {load,{ekka_node_monitor,brutal_purge,soft_purge}},
    {load,{ekka_autocluster,brutal_purge,soft_purge}},
    {load,{ekka_autoheal,brutal_purge,soft_purge}},
    {load,{ekka_locker,brutal_purge,soft_purge}},
    {load,{ekka_httpc,brutal_purge,soft_purge}},
    {load,{ekka_mnesia,brutal_purge,soft_purge}},
    {load,{emqx_plugin_libs_ssl,brutal_purge,soft_purge}},
    {load,{emqx_mod_presence,brutal_purge,soft_purge}},
    {load,{emqx_retainer,brutal_purge,soft_purge}},
    {load,{emqx_bridge_mqtt_actions,brutal_purge,soft_purge}},
    {load,{emqx_sn_registry,brutal_purge,soft_purge}},
    {load,{emqx_coap_mqtt_adapter,brutal_purge,soft_purge}},
    {apply,{application,stop,[emqx_stomp]}},
    {remove,{emqx_stomp,brutal_purge,brutal_purge}},
    {remove,{emqx_stomp_connection,brutal_purge,brutal_purge}},
    {remove,{emqx_stomp_frame,brutal_purge,brutal_purge}},
    {remove,{emqx_stomp_heartbeat,brutal_purge,brutal_purge}},
    {remove,{emqx_stomp_protocol,brutal_purge,brutal_purge}},
    {purge,
        [emqx_stomp,emqx_stomp_connection,emqx_stomp_frame,
         emqx_stomp_heartbeat,emqx_stomp_protocol]},
    {load,{emqx_stomp,brutal_purge,brutal_purge}},
    {load,{emqx_stomp_connection,brutal_purge,brutal_purge}},
    {load,{emqx_stomp_frame,brutal_purge,brutal_purge}},
    {load,{emqx_stomp_heartbeat,brutal_purge,brutal_purge}},
    {load,{emqx_stomp_protocol,brutal_purge,brutal_purge}},
    {apply,{application,load,[emqx_stomp]}},
    {apply,{emqx_stomp,force_clear_after_app_stoped,[]}},
    {load,{gun,brutal_purge,soft_purge}},
    {suspend,[ehttpc]},
    {load,{ehttpc,brutal_purge,brutal_purge}},
    {code_change,up,[{ehttpc,[]}]},
    {resume,[ehttpc]},
    {load,{ehttpc_pool,brutal_purge,soft_purge}},
    {apply,{application,stop,[emqx_auth_http]}},
    {remove,{emqx_acl_http,brutal_purge,brutal_purge}},
    {remove,{emqx_auth_http,brutal_purge,brutal_purge}},
    {remove,{emqx_auth_http_app,brutal_purge,brutal_purge}},
    {remove,{emqx_auth_http_cli,brutal_purge,brutal_purge}},
    {remove,{emqx_auth_http_sup,brutal_purge,brutal_purge}},
    {purge,
        [emqx_acl_http,emqx_auth_http,emqx_auth_http_app,emqx_auth_http_cli,
         emqx_auth_http_sup]},
    {load,{emqx_acl_http,brutal_purge,brutal_purge}},
    {load,{emqx_auth_http,brutal_purge,brutal_purge}},
    {load,{emqx_auth_http_app,brutal_purge,brutal_purge}},
    {load,{emqx_auth_http_cli,brutal_purge,brutal_purge}},
    {load,{emqx_auth_http_sup,brutal_purge,brutal_purge}},
    {apply,{application,load,[emqx_auth_http]}},
    {load,{ecpool_worker,brutal_purge,soft_purge}},
    {load,{ecpool_sup,brutal_purge,soft_purge}},
    {load,{emqx_acl_mnesia_db,brutal_purge,brutal_purge}},
    {load,{emqx_acl_mnesia_migrator,brutal_purge,brutal_purge}},
    {suspend,[emqx_auth_mnesia_sup]},
    {load,{emqx_auth_mnesia_sup,brutal_purge,brutal_purge}},
    {code_change,up,[{emqx_auth_mnesia_sup,[]}]},
    {resume,[emqx_auth_mnesia_sup]},
    {apply,{emqx_acl_mnesia_migrator,start_supervised,[]}},
    {load,{emqx_auth_mnesia_api,brutal_purge,soft_purge}},
    {load,{emqx_acl_mnesia,brutal_purge,soft_purge}},
    {load,{emqx_acl_mnesia_api,brutal_purge,soft_purge}},
    {load,{emqx_acl_mnesia_cli,brutal_purge,soft_purge}},
    {apply,{application,stop,[emqx_web_hook]}},
    {load,{emqx_web_hook_app,brutal_purge,soft_purge}},
    {load,{emqx_web_hook,brutal_purge,soft_purge}},
    {load,{emqx_web_hook_actions,brutal_purge,soft_purge}},
    {load,{emqx_rule_engine,brutal_purge,soft_purge}},
    {load,{emqx_rule_actions,brutal_purge,soft_purge}},
    {load,{emqx_rule_registry,brutal_purge,soft_purge}},
    {load,{emqx_lwm2m_protocol,brutal_purge,soft_purge}},
    {load,{emqx_lwm2m_message,brutal_purge,soft_purge}},
    {load,{emqx_auth_ldap_cli,brutal_purge,soft_purge}},
    {apply,{application,stop,[mongodb]}},
    {remove,{mc_auth_logic,brutal_purge,brutal_purge}},
    {remove,{mc_connection_man,brutal_purge,brutal_purge}},
    {remove,{mc_cursor,brutal_purge,brutal_purge}},
    {remove,{mc_monitor,brutal_purge,brutal_purge}},
    {remove,{mc_pool_sup,brutal_purge,brutal_purge}},
    {remove,{mc_selecting_logics,brutal_purge,brutal_purge}},
    {remove,{mc_server,brutal_purge,brutal_purge}},
    {remove,{mc_super_sup,brutal_purge,brutal_purge}},
    {remove,{mc_topology,brutal_purge,brutal_purge}},
    {remove,{mc_topology_logics,brutal_purge,brutal_purge}},
    {remove,{mc_utils,brutal_purge,brutal_purge}},
    {remove,{mc_worker,brutal_purge,brutal_purge}},
    {remove,{mc_worker_api,brutal_purge,brutal_purge}},
    {remove,{mc_worker_logic,brutal_purge,brutal_purge}},
    {remove,{mongo_api,brutal_purge,brutal_purge}},
    {remove,{mongo_app,brutal_purge,brutal_purge}},
    {remove,{mongo_id_server,brutal_purge,brutal_purge}},
    {remove,{mongo_protocol,brutal_purge,brutal_purge}},
    {remove,{mongoc,brutal_purge,brutal_purge}},
    {purge,
        [mc_auth_logic,mc_connection_man,mc_cursor,mc_monitor,mc_pool_sup,
         mc_selecting_logics,mc_server,mc_super_sup,mc_topology,
         mc_topology_logics,mc_utils,mc_worker,mc_worker_api,mc_worker_logic,
         mongo_api,mongo_app,mongo_id_server,mongo_protocol,mongoc]},
    {load,{mc_auth_logic,brutal_purge,brutal_purge}},
    {load,{mc_connection_man,brutal_purge,brutal_purge}},
    {load,{mc_cursor,brutal_purge,brutal_purge}},
    {load,{mc_monitor,brutal_purge,brutal_purge}},
    {load,{mc_pool_sup,brutal_purge,brutal_purge}},
    {load,{mc_selecting_logics,brutal_purge,brutal_purge}},
    {load,{mc_server,brutal_purge,brutal_purge}},
    {load,{mc_super_sup,brutal_purge,brutal_purge}},
    {load,{mc_topology,brutal_purge,brutal_purge}},
    {load,{mc_topology_logics,brutal_purge,brutal_purge}},
    {load,{mc_utils,brutal_purge,brutal_purge}},
    {load,{mc_worker,brutal_purge,brutal_purge}},
    {load,{mc_worker_api,brutal_purge,brutal_purge}},
    {load,{mc_worker_logic,brutal_purge,brutal_purge}},
    {load,{mongo_api,brutal_purge,brutal_purge}},
    {load,{mongo_app,brutal_purge,brutal_purge}},
    {load,{mongo_id_server,brutal_purge,brutal_purge}},
    {load,{mongo_protocol,brutal_purge,brutal_purge}},
    {load,{mongoc,brutal_purge,brutal_purge}},
    {apply,{application,start,[mongodb,permanent]}},
    {load,{grpc_utils,brutal_purge,brutal_purge}},
    {load,{grpc_client,brutal_purge,soft_purge}},
    {load,{grpc_stream,brutal_purge,soft_purge}},
    {apply,{application,stop,[emqx_exhook]}},
    {remove,{emqx_exhook,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_app,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_cli,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_handler,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_pb,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_server,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_sup,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_v_1_hook_provider_bhvr,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_v_1_hook_provider_client,brutal_purge,brutal_purge}},
    {purge,
        [emqx_exhook,emqx_exhook_app,emqx_exhook_cli,emqx_exhook_handler,
         emqx_exhook_pb,emqx_exhook_server,emqx_exhook_sup,
         emqx_exhook_v_1_hook_provider_bhvr,
         emqx_exhook_v_1_hook_provider_client]},
    {load,{emqx_exhook,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_app,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_cli,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_handler,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_mngr,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_pb,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_server,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_sup,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_v_1_hook_provider_bhvr,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_v_1_hook_provider_client,brutal_purge,brutal_purge}},
    {apply,{application,load,[emqx_exhook]}},
    {load,{emqx_exproto_gsvr,brutal_purge,soft_purge}},
    {load,{emqx_exproto_gcli,brutal_purge,soft_purge}},
    {load,{emqx_exproto_conn,brutal_purge,soft_purge}},
    {load,{emqx_exproto_channel,brutal_purge,soft_purge}},
    {load,{minirest,brutal_purge,soft_purge}},
    {load,{minirest_handler,brutal_purge,soft_purge}},
    {apply,{minirest,stop_http,['http:management']}},
    {apply,{minirest,stop_http,['https:management']}},
    {apply,{application,stop,[emqx_management]}},
    {remove,{emqx_mgmt,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_acl,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_alarms,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_apps,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_banned,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_brokers,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_clients,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_data,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_listeners,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_metrics,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_nodes,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_plugins,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_pubsub,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_routes,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_stats,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_subscriptions,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_app,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_auth,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_cli,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_data_backup,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_http,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_sup,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_util,brutal_purge,brutal_purge}},
    {purge,
        [emqx_mgmt,emqx_mgmt_api,emqx_mgmt_api_acl,emqx_mgmt_api_alarms,
         emqx_mgmt_api_apps,emqx_mgmt_api_banned,emqx_mgmt_api_brokers,
         emqx_mgmt_api_clients,emqx_mgmt_api_data,emqx_mgmt_api_listeners,
         emqx_mgmt_api_metrics,emqx_mgmt_api_nodes,emqx_mgmt_api_plugins,
         emqx_mgmt_api_pubsub,emqx_mgmt_api_routes,emqx_mgmt_api_stats,
         emqx_mgmt_api_subscriptions,emqx_mgmt_app,emqx_mgmt_auth,
         emqx_mgmt_cli,emqx_mgmt_data_backup,emqx_mgmt_http,emqx_mgmt_sup,
         emqx_mgmt_util]},
    {load,{emqx_mgmt,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_acl,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_alarms,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_apps,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_banned,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_brokers,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_clients,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_data,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_listeners,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_metrics,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_nodes,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_plugins,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_pubsub,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_routes,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_stats,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_subscriptions,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_app,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_auth,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_cli,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_data_backup,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_http,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_sup,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_util,brutal_purge,brutal_purge}},
    {apply,{application,load,[emqx_management]}},
    {apply,{emqx_rule_engine,load_providers,[]}},
    {apply,{application,stop,[emqx_dashboard]}},
    {remove,{emqx_dashboard,brutal_purge,brutal_purge}},
    {remove,{emqx_dashboard_admin,brutal_purge,brutal_purge}},
    {remove,{emqx_dashboard_api,brutal_purge,brutal_purge}},
    {remove,{emqx_dashboard_app,brutal_purge,brutal_purge}},
    {remove,{emqx_dashboard_cli,brutal_purge,brutal_purge}},
    {remove,{emqx_dashboard_sup,brutal_purge,brutal_purge}},
    {purge,
        [emqx_dashboard,emqx_dashboard_admin,emqx_dashboard_api,
         emqx_dashboard_app,emqx_dashboard_cli,emqx_dashboard_sup]},
    {load,{emqx_dashboard,brutal_purge,brutal_purge}},
    {load,{emqx_dashboard_admin,brutal_purge,brutal_purge}},
    {load,{emqx_dashboard_api,brutal_purge,brutal_purge}},
    {load,{emqx_dashboard_app,brutal_purge,brutal_purge}},
    {load,{emqx_dashboard_cli,brutal_purge,brutal_purge}},
    {load,{emqx_dashboard_sup,brutal_purge,brutal_purge}},
    {apply,{application,load,[emqx_dashboard]}},
    {apply,{emqx_plugins,load,[]}}]},
  {"4.3.3",[],
   [{load_object_code,{ssl,"10.2.4.3",[ssl_cipher]}},
    {load_object_code,{cuttlefish,"3.3.6",[cuttlefish_duration_parse]}},
    {load_object_code,
        {emqx,"4.3.12",
            [emqx_vm,emqx_sys_mon,emqx_http_lib,emqx_connection,emqx_channel,
             emqx_alarm_handler,emqx_misc,emqx_packet,emqx_shared_sub,
             emqx_ws_connection,emqx_cm,emqx_access_rule,emqx_ctl,emqx_pqueue,
             emqx_mqueue,emqx_frame,emqx_rpc,emqx_app]}},
    {load_object_code,
        {ekka,"0.8.1.7",
            [ekka_cluster_dns,ekka_ring,ekka_node_monitor,ekka_autocluster,
             ekka_autoheal,ekka_locker,ekka_httpc,ekka_mnesia]}},
    {load_object_code,{emqx_plugin_libs,"4.3.1",[emqx_plugin_libs_ssl]}},
    {load_object_code,{emqx_modules,"4.3.3",[emqx_mod_presence]}},
    {load_object_code,{emqx_retainer,"4.3.2",[emqx_retainer]}},
    {load_object_code,{emqx_bridge_mqtt,"4.3.3",[emqx_bridge_mqtt_actions]}},
    {load_object_code,{emqx_sn,"4.3.4",[emqx_sn_gateway,emqx_sn_registry]}},
    {load_object_code,{emqx_coap,"4.3.1",[emqx_coap_mqtt_adapter]}},
    {load_object_code,
        {emqx_stomp,"4.3.3",
            [emqx_stomp,emqx_stomp_connection,emqx_stomp_frame,
             emqx_stomp_heartbeat,emqx_stomp_protocol]}},
    {load_object_code,{gun,"1.3.7",[gun]}},
    {load_object_code,{ehttpc,"0.1.14",[ehttpc,ehttpc_pool]}},
    {load_object_code,
        {emqx_auth_http,"4.3.3",
            [emqx_acl_http,emqx_auth_http,emqx_auth_http_app,
             emqx_auth_http_cli,emqx_auth_http_sup]}},
    {load_object_code,{ecpool,"0.5.2",[ecpool_worker,ecpool_sup]}},
    {load_object_code,
        {emqx_auth_mnesia,"4.3.4",
            [emqx_acl_mnesia_migrator,emqx_acl_mnesia_db,emqx_auth_mnesia_sup,
             emqx_auth_mnesia_api,emqx_acl_mnesia,emqx_acl_mnesia_api,
             emqx_acl_mnesia_cli]}},
    {load_object_code,
        {emqx_web_hook,"4.3.8",
            [emqx_web_hook_app,emqx_web_hook,emqx_web_hook_actions]}},
    {load_object_code,
        {emqx_rule_engine,"4.3.6",
            [emqx_rule_registry,emqx_rule_engine,emqx_rule_actions]}},
    {load_object_code,
        {lwm2m_coap,"1.1.5",[lwm2m_coap_server_content,lwm2m_coap_channel]}},
    {load_object_code,
        {emqx_lwm2m,"4.3.5",
            [binary_util,emqx_lwm2m_api,emqx_lwm2m_app,emqx_lwm2m_cm,
             emqx_lwm2m_cm_sup,emqx_lwm2m_cmd_handler,
             emqx_lwm2m_coap_resource,emqx_lwm2m_coap_server,emqx_lwm2m_json,
             emqx_lwm2m_message,emqx_lwm2m_protocol,emqx_lwm2m_sup,
             emqx_lwm2m_timer,emqx_lwm2m_tlv,emqx_lwm2m_xml_object,
             emqx_lwm2m_xml_object_db]}},
    {load_object_code,
        {emqx_auth_ldap,"4.3.2",[emqx_acl_ldap,emqx_auth_ldap_cli]}},
    {load_object_code,
        {mongodb,"3.0.10",
            [mc_auth_logic,mc_connection_man,mc_cursor,mc_monitor,mc_pool_sup,
             mc_selecting_logics,mc_server,mc_super_sup,mc_topology,
             mc_topology_logics,mc_utils,mc_worker,mc_worker_api,
             mc_worker_logic,mongo_api,mongo_app,mongo_id_server,
             mongo_protocol,mongoc]}},
    {load_object_code,{grpc,"0.6.3",[grpc_utils,grpc_client,grpc_stream]}},
    {load_object_code,
        {emqx_exhook,"4.3.4",
            [emqx_exhook,emqx_exhook_app,emqx_exhook_cli,emqx_exhook_handler,
             emqx_exhook_mngr,emqx_exhook_pb,emqx_exhook_server,
             emqx_exhook_sup,emqx_exhook_v_1_hook_provider_bhvr,
             emqx_exhook_v_1_hook_provider_client]}},
    {load_object_code,
        {emqx_exproto,"4.3.5",
            [emqx_exproto_gsvr,emqx_exproto_gcli,emqx_exproto_conn,
             emqx_exproto_channel]}},
    {load_object_code,{minirest,"0.3.7",[minirest,minirest_handler]}},
    {load_object_code,
        {emqx_management,"4.3.9",
            [emqx_mgmt,emqx_mgmt_api,emqx_mgmt_api_acl,emqx_mgmt_api_alarms,
             emqx_mgmt_api_apps,emqx_mgmt_api_banned,emqx_mgmt_api_brokers,
             emqx_mgmt_api_clients,emqx_mgmt_api_data,emqx_mgmt_api_listeners,
             emqx_mgmt_api_metrics,emqx_mgmt_api_nodes,emqx_mgmt_api_plugins,
             emqx_mgmt_api_pubsub,emqx_mgmt_api_routes,emqx_mgmt_api_stats,
             emqx_mgmt_api_subscriptions,emqx_mgmt_app,emqx_mgmt_auth,
             emqx_mgmt_cli,emqx_mgmt_data_backup,emqx_mgmt_http,emqx_mgmt_sup,
             emqx_mgmt_util]}},
    {load_object_code,
        {emqx_dashboard,"4.3.7",
            [emqx_dashboard,emqx_dashboard_admin,emqx_dashboard_api,
             emqx_dashboard_app,emqx_dashboard_cli,emqx_dashboard_sup]}},
    point_of_no_return,
    {load,{ssl_cipher,brutal_purge,soft_purge}},
    {load,{cuttlefish_duration_parse,brutal_purge,soft_purge}},
    {load,{emqx_vm,brutal_purge,soft_purge}},
    {load,{emqx_sys_mon,brutal_purge,soft_purge}},
    {load,{emqx_http_lib,brutal_purge,soft_purge}},
    {load,{emqx_connection,brutal_purge,soft_purge}},
    {load,{emqx_channel,brutal_purge,soft_purge}},
    {load,{emqx_alarm_handler,brutal_purge,soft_purge}},
    {load,{emqx_misc,brutal_purge,soft_purge}},
    {load,{emqx_packet,brutal_purge,soft_purge}},
    {load,{emqx_shared_sub,brutal_purge,soft_purge}},
    {load,{emqx_ws_connection,brutal_purge,soft_purge}},
    {load,{emqx_cm,brutal_purge,soft_purge}},
    {load,{emqx_access_rule,brutal_purge,soft_purge}},
    {load,{emqx_ctl,brutal_purge,soft_purge}},
    {load,{emqx_pqueue,brutal_purge,soft_purge}},
    {load,{emqx_mqueue,brutal_purge,soft_purge}},
    {load,{emqx_frame,brutal_purge,soft_purge}},
    {load,{emqx_rpc,brutal_purge,soft_purge}},
    {load,{emqx_app,brutal_purge,soft_purge}},
    {load,{ekka_cluster_dns,brutal_purge,soft_purge}},
    {load,{ekka_ring,brutal_purge,soft_purge}},
    {load,{ekka_node_monitor,brutal_purge,soft_purge}},
    {load,{ekka_autocluster,brutal_purge,soft_purge}},
    {load,{ekka_autoheal,brutal_purge,soft_purge}},
    {load,{ekka_locker,brutal_purge,soft_purge}},
    {load,{ekka_httpc,brutal_purge,soft_purge}},
    {load,{ekka_mnesia,brutal_purge,soft_purge}},
    {load,{emqx_plugin_libs_ssl,brutal_purge,soft_purge}},
    {load,{emqx_mod_presence,brutal_purge,soft_purge}},
    {load,{emqx_retainer,brutal_purge,soft_purge}},
    {load,{emqx_bridge_mqtt_actions,brutal_purge,soft_purge}},
    {load,{emqx_sn_gateway,brutal_purge,soft_purge}},
    {load,{emqx_sn_registry,brutal_purge,soft_purge}},
    {load,{emqx_coap_mqtt_adapter,brutal_purge,soft_purge}},
    {apply,{application,stop,[emqx_stomp]}},
    {remove,{emqx_stomp,brutal_purge,brutal_purge}},
    {remove,{emqx_stomp_connection,brutal_purge,brutal_purge}},
    {remove,{emqx_stomp_frame,brutal_purge,brutal_purge}},
    {remove,{emqx_stomp_heartbeat,brutal_purge,brutal_purge}},
    {remove,{emqx_stomp_protocol,brutal_purge,brutal_purge}},
    {purge,
        [emqx_stomp,emqx_stomp_connection,emqx_stomp_frame,
         emqx_stomp_heartbeat,emqx_stomp_protocol]},
    {load,{emqx_stomp,brutal_purge,brutal_purge}},
    {load,{emqx_stomp_connection,brutal_purge,brutal_purge}},
    {load,{emqx_stomp_frame,brutal_purge,brutal_purge}},
    {load,{emqx_stomp_heartbeat,brutal_purge,brutal_purge}},
    {load,{emqx_stomp_protocol,brutal_purge,brutal_purge}},
    {apply,{application,load,[emqx_stomp]}},
    {apply,{emqx_stomp,force_clear_after_app_stoped,[]}},
    {load,{gun,brutal_purge,soft_purge}},
    {suspend,[ehttpc]},
    {load,{ehttpc,brutal_purge,brutal_purge}},
    {code_change,up,[{ehttpc,[]}]},
    {resume,[ehttpc]},
    {load,{ehttpc_pool,brutal_purge,soft_purge}},
    {apply,{application,stop,[emqx_auth_http]}},
    {remove,{emqx_acl_http,brutal_purge,brutal_purge}},
    {remove,{emqx_auth_http,brutal_purge,brutal_purge}},
    {remove,{emqx_auth_http_app,brutal_purge,brutal_purge}},
    {remove,{emqx_auth_http_cli,brutal_purge,brutal_purge}},
    {remove,{emqx_auth_http_sup,brutal_purge,brutal_purge}},
    {purge,
        [emqx_acl_http,emqx_auth_http,emqx_auth_http_app,emqx_auth_http_cli,
         emqx_auth_http_sup]},
    {load,{emqx_acl_http,brutal_purge,brutal_purge}},
    {load,{emqx_auth_http,brutal_purge,brutal_purge}},
    {load,{emqx_auth_http_app,brutal_purge,brutal_purge}},
    {load,{emqx_auth_http_cli,brutal_purge,brutal_purge}},
    {load,{emqx_auth_http_sup,brutal_purge,brutal_purge}},
    {apply,{application,load,[emqx_auth_http]}},
    {load,{ecpool_worker,brutal_purge,soft_purge}},
    {load,{ecpool_sup,brutal_purge,soft_purge}},
    {load,{emqx_acl_mnesia_db,brutal_purge,brutal_purge}},
    {load,{emqx_acl_mnesia_migrator,brutal_purge,brutal_purge}},
    {suspend,[emqx_auth_mnesia_sup]},
    {load,{emqx_auth_mnesia_sup,brutal_purge,brutal_purge}},
    {code_change,up,[{emqx_auth_mnesia_sup,[]}]},
    {resume,[emqx_auth_mnesia_sup]},
    {apply,{emqx_acl_mnesia_migrator,start_supervised,[]}},
    {load,{emqx_auth_mnesia_api,brutal_purge,soft_purge}},
    {load,{emqx_acl_mnesia,brutal_purge,soft_purge}},
    {load,{emqx_acl_mnesia_api,brutal_purge,soft_purge}},
    {load,{emqx_acl_mnesia_cli,brutal_purge,soft_purge}},
    {apply,{application,stop,[emqx_web_hook]}},
    {load,{emqx_web_hook_app,brutal_purge,soft_purge}},
    {load,{emqx_web_hook,brutal_purge,soft_purge}},
    {load,{emqx_web_hook_actions,brutal_purge,soft_purge}},
    {load,{emqx_rule_registry,brutal_purge,soft_purge}},
    {apply,{emqx_stats,cancel_update,[rule_registery_stats]}},
    {load,{emqx_rule_engine,brutal_purge,soft_purge}},
    {load,{emqx_rule_actions,brutal_purge,soft_purge}},
    {load,{lwm2m_coap_server_content,brutal_purge,soft_purge}},
    {load,{lwm2m_coap_channel,brutal_purge,soft_purge}},
    {apply,{application,stop,[emqx_lwm2m]}},
    {remove,{binary_util,brutal_purge,brutal_purge}},
    {remove,{emqx_lwm2m_app,brutal_purge,brutal_purge}},
    {remove,{emqx_lwm2m_cmd_handler,brutal_purge,brutal_purge}},
    {remove,{emqx_lwm2m_coap_resource,brutal_purge,brutal_purge}},
    {remove,{emqx_lwm2m_coap_server,brutal_purge,brutal_purge}},
    {remove,{emqx_lwm2m_json,brutal_purge,brutal_purge}},
    {remove,{emqx_lwm2m_message,brutal_purge,brutal_purge}},
    {remove,{emqx_lwm2m_protocol,brutal_purge,brutal_purge}},
    {remove,{emqx_lwm2m_sup,brutal_purge,brutal_purge}},
    {remove,{emqx_lwm2m_timer,brutal_purge,brutal_purge}},
    {remove,{emqx_lwm2m_tlv,brutal_purge,brutal_purge}},
    {remove,{emqx_lwm2m_xml_object,brutal_purge,brutal_purge}},
    {remove,{emqx_lwm2m_xml_object_db,brutal_purge,brutal_purge}},
    {purge,
        [binary_util,emqx_lwm2m_app,emqx_lwm2m_cmd_handler,
         emqx_lwm2m_coap_resource,emqx_lwm2m_coap_server,emqx_lwm2m_json,
         emqx_lwm2m_message,emqx_lwm2m_protocol,emqx_lwm2m_sup,
         emqx_lwm2m_timer,emqx_lwm2m_tlv,emqx_lwm2m_xml_object,
         emqx_lwm2m_xml_object_db]},
    {load,{binary_util,brutal_purge,brutal_purge}},
    {load,{emqx_lwm2m_api,brutal_purge,brutal_purge}},
    {load,{emqx_lwm2m_app,brutal_purge,brutal_purge}},
    {load,{emqx_lwm2m_cm,brutal_purge,brutal_purge}},
    {load,{emqx_lwm2m_cm_sup,brutal_purge,brutal_purge}},
    {load,{emqx_lwm2m_cmd_handler,brutal_purge,brutal_purge}},
    {load,{emqx_lwm2m_coap_resource,brutal_purge,brutal_purge}},
    {load,{emqx_lwm2m_coap_server,brutal_purge,brutal_purge}},
    {load,{emqx_lwm2m_json,brutal_purge,brutal_purge}},
    {load,{emqx_lwm2m_message,brutal_purge,brutal_purge}},
    {load,{emqx_lwm2m_protocol,brutal_purge,brutal_purge}},
    {load,{emqx_lwm2m_sup,brutal_purge,brutal_purge}},
    {load,{emqx_lwm2m_timer,brutal_purge,brutal_purge}},
    {load,{emqx_lwm2m_tlv,brutal_purge,brutal_purge}},
    {load,{emqx_lwm2m_xml_object,brutal_purge,brutal_purge}},
    {load,{emqx_lwm2m_xml_object_db,brutal_purge,brutal_purge}},
    {apply,{application,load,[emqx_lwm2m]}},
    {load,{emqx_acl_ldap,brutal_purge,soft_purge}},
    {load,{emqx_auth_ldap_cli,brutal_purge,soft_purge}},
    {apply,{application,stop,[mongodb]}},
    {remove,{mc_auth_logic,brutal_purge,brutal_purge}},
    {remove,{mc_connection_man,brutal_purge,brutal_purge}},
    {remove,{mc_cursor,brutal_purge,brutal_purge}},
    {remove,{mc_monitor,brutal_purge,brutal_purge}},
    {remove,{mc_pool_sup,brutal_purge,brutal_purge}},
    {remove,{mc_selecting_logics,brutal_purge,brutal_purge}},
    {remove,{mc_server,brutal_purge,brutal_purge}},
    {remove,{mc_super_sup,brutal_purge,brutal_purge}},
    {remove,{mc_topology,brutal_purge,brutal_purge}},
    {remove,{mc_topology_logics,brutal_purge,brutal_purge}},
    {remove,{mc_utils,brutal_purge,brutal_purge}},
    {remove,{mc_worker,brutal_purge,brutal_purge}},
    {remove,{mc_worker_api,brutal_purge,brutal_purge}},
    {remove,{mc_worker_logic,brutal_purge,brutal_purge}},
    {remove,{mongo_api,brutal_purge,brutal_purge}},
    {remove,{mongo_app,brutal_purge,brutal_purge}},
    {remove,{mongo_id_server,brutal_purge,brutal_purge}},
    {remove,{mongo_protocol,brutal_purge,brutal_purge}},
    {remove,{mongoc,brutal_purge,brutal_purge}},
    {purge,
        [mc_auth_logic,mc_connection_man,mc_cursor,mc_monitor,mc_pool_sup,
         mc_selecting_logics,mc_server,mc_super_sup,mc_topology,
         mc_topology_logics,mc_utils,mc_worker,mc_worker_api,mc_worker_logic,
         mongo_api,mongo_app,mongo_id_server,mongo_protocol,mongoc]},
    {load,{mc_auth_logic,brutal_purge,brutal_purge}},
    {load,{mc_connection_man,brutal_purge,brutal_purge}},
    {load,{mc_cursor,brutal_purge,brutal_purge}},
    {load,{mc_monitor,brutal_purge,brutal_purge}},
    {load,{mc_pool_sup,brutal_purge,brutal_purge}},
    {load,{mc_selecting_logics,brutal_purge,brutal_purge}},
    {load,{mc_server,brutal_purge,brutal_purge}},
    {load,{mc_super_sup,brutal_purge,brutal_purge}},
    {load,{mc_topology,brutal_purge,brutal_purge}},
    {load,{mc_topology_logics,brutal_purge,brutal_purge}},
    {load,{mc_utils,brutal_purge,brutal_purge}},
    {load,{mc_worker,brutal_purge,brutal_purge}},
    {load,{mc_worker_api,brutal_purge,brutal_purge}},
    {load,{mc_worker_logic,brutal_purge,brutal_purge}},
    {load,{mongo_api,brutal_purge,brutal_purge}},
    {load,{mongo_app,brutal_purge,brutal_purge}},
    {load,{mongo_id_server,brutal_purge,brutal_purge}},
    {load,{mongo_protocol,brutal_purge,brutal_purge}},
    {load,{mongoc,brutal_purge,brutal_purge}},
    {apply,{application,start,[mongodb,permanent]}},
    {load,{grpc_utils,brutal_purge,brutal_purge}},
    {load,{grpc_client,brutal_purge,soft_purge}},
    {load,{grpc_stream,brutal_purge,soft_purge}},
    {apply,{application,stop,[emqx_exhook]}},
    {remove,{emqx_exhook,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_app,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_cli,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_handler,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_pb,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_server,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_sup,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_v_1_hook_provider_bhvr,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_v_1_hook_provider_client,brutal_purge,brutal_purge}},
    {purge,
        [emqx_exhook,emqx_exhook_app,emqx_exhook_cli,emqx_exhook_handler,
         emqx_exhook_pb,emqx_exhook_server,emqx_exhook_sup,
         emqx_exhook_v_1_hook_provider_bhvr,
         emqx_exhook_v_1_hook_provider_client]},
    {load,{emqx_exhook,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_app,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_cli,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_handler,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_mngr,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_pb,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_server,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_sup,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_v_1_hook_provider_bhvr,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_v_1_hook_provider_client,brutal_purge,brutal_purge}},
    {apply,{application,load,[emqx_exhook]}},
    {load,{emqx_exproto_gsvr,brutal_purge,soft_purge}},
    {load,{emqx_exproto_gcli,brutal_purge,soft_purge}},
    {load,{emqx_exproto_conn,brutal_purge,soft_purge}},
    {load,{emqx_exproto_channel,brutal_purge,soft_purge}},
    {load,{minirest,brutal_purge,soft_purge}},
    {load,{minirest_handler,brutal_purge,soft_purge}},
    {apply,{minirest,stop_http,['http:management']}},
    {apply,{minirest,stop_http,['https:management']}},
    {apply,{application,stop,[emqx_management]}},
    {remove,{emqx_mgmt,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_acl,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_alarms,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_apps,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_banned,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_brokers,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_clients,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_data,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_listeners,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_metrics,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_nodes,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_plugins,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_pubsub,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_routes,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_stats,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_subscriptions,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_app,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_auth,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_cli,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_data_backup,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_http,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_sup,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_util,brutal_purge,brutal_purge}},
    {purge,
        [emqx_mgmt,emqx_mgmt_api,emqx_mgmt_api_acl,emqx_mgmt_api_alarms,
         emqx_mgmt_api_apps,emqx_mgmt_api_banned,emqx_mgmt_api_brokers,
         emqx_mgmt_api_clients,emqx_mgmt_api_data,emqx_mgmt_api_listeners,
         emqx_mgmt_api_metrics,emqx_mgmt_api_nodes,emqx_mgmt_api_plugins,
         emqx_mgmt_api_pubsub,emqx_mgmt_api_routes,emqx_mgmt_api_stats,
         emqx_mgmt_api_subscriptions,emqx_mgmt_app,emqx_mgmt_auth,
         emqx_mgmt_cli,emqx_mgmt_data_backup,emqx_mgmt_http,emqx_mgmt_sup,
         emqx_mgmt_util]},
    {load,{emqx_mgmt,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_acl,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_alarms,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_apps,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_banned,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_brokers,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_clients,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_data,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_listeners,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_metrics,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_nodes,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_plugins,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_pubsub,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_routes,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_stats,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_subscriptions,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_app,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_auth,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_cli,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_data_backup,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_http,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_sup,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_util,brutal_purge,brutal_purge}},
    {apply,{application,load,[emqx_management]}},
    {apply,{emqx_rule_engine,load_providers,[]}},
    {apply,{application,stop,[emqx_dashboard]}},
    {remove,{emqx_dashboard,brutal_purge,brutal_purge}},
    {remove,{emqx_dashboard_admin,brutal_purge,brutal_purge}},
    {remove,{emqx_dashboard_api,brutal_purge,brutal_purge}},
    {remove,{emqx_dashboard_app,brutal_purge,brutal_purge}},
    {remove,{emqx_dashboard_cli,brutal_purge,brutal_purge}},
    {remove,{emqx_dashboard_sup,brutal_purge,brutal_purge}},
    {purge,
        [emqx_dashboard,emqx_dashboard_admin,emqx_dashboard_api,
         emqx_dashboard_app,emqx_dashboard_cli,emqx_dashboard_sup]},
    {load,{emqx_dashboard,brutal_purge,brutal_purge}},
    {load,{emqx_dashboard_admin,brutal_purge,brutal_purge}},
    {load,{emqx_dashboard_api,brutal_purge,brutal_purge}},
    {load,{emqx_dashboard_app,brutal_purge,brutal_purge}},
    {load,{emqx_dashboard_cli,brutal_purge,brutal_purge}},
    {load,{emqx_dashboard_sup,brutal_purge,brutal_purge}},
    {apply,{application,load,[emqx_dashboard]}},
    {apply,{emqx_plugins,load,[]}}]},
  {"4.3.7",[],
   [{load_object_code,{ssl,"10.2.4.3",[ssl_cipher]}},
    {load_object_code,{cuttlefish,"3.3.6",[cuttlefish_duration_parse]}},
    {load_object_code,
        {emqx,"4.3.12",
            [emqx_vm,emqx_sys_mon,emqx_http_lib,emqx_connection,emqx_channel,
             emqx_cm,emqx_ws_connection,emqx_alarm_handler,emqx_misc,
             emqx_pqueue,emqx_mqueue,emqx_frame,emqx_rpc,emqx_app]}},
    {load_object_code,
        {ekka,"0.8.1.7",
            [ekka_cluster_dns,ekka_ring,ekka_node_monitor,ekka_autocluster,
             ekka_autoheal,ekka_locker,ekka_httpc,ekka_mnesia]}},
    {load_object_code,{emqx_plugin_libs,"4.3.1",[emqx_plugin_libs_ssl]}},
    {load_object_code,{emqx_retainer,"4.3.2",[emqx_retainer]}},
    {load_object_code,{emqx_bridge_mqtt,"4.3.3",[emqx_bridge_mqtt_actions]}},
    {load_object_code,{emqx_sn,"4.3.4",[emqx_sn_registry]}},
    {load_object_code,{emqx_coap,"4.3.1",[emqx_coap_mqtt_adapter]}},
    {load_object_code,
        {emqx_stomp,"4.3.3",
            [emqx_stomp,emqx_stomp_connection,emqx_stomp_frame,
             emqx_stomp_heartbeat,emqx_stomp_protocol]}},
    {load_object_code,{gun,"1.3.7",[gun]}},
    {load_object_code,{ehttpc,"0.1.14",[ehttpc,ehttpc_pool]}},
    {load_object_code,
        {emqx_auth_http,"4.3.3",[emqx_auth_http_app,emqx_auth_http_cli]}},
    {load_object_code,{ecpool,"0.5.2",[ecpool_worker,ecpool_sup]}},
    {load_object_code,
        {emqx_auth_mnesia,"4.3.4",
            [emqx_acl_mnesia_migrator,emqx_acl_mnesia_db,emqx_auth_mnesia_sup,
             emqx_auth_mnesia_api,emqx_acl_mnesia,emqx_acl_mnesia_api,
             emqx_acl_mnesia_cli]}},
    {load_object_code,
        {emqx_web_hook,"4.3.8",[emqx_web_hook_app,emqx_web_hook_actions]}},
    {load_object_code,
        {emqx_rule_engine,"4.3.6",[emqx_rule_engine,emqx_rule_registry]}},
    {load_object_code,{emqx_lwm2m,"4.3.5",[emqx_lwm2m_protocol]}},
    {load_object_code,
        {mongodb,"3.0.10",
            [mc_auth_logic,mc_connection_man,mc_cursor,mc_monitor,mc_pool_sup,
             mc_selecting_logics,mc_server,mc_super_sup,mc_topology,
             mc_topology_logics,mc_utils,mc_worker,mc_worker_api,
             mc_worker_logic,mongo_api,mongo_app,mongo_id_server,
             mongo_protocol,mongoc]}},
    {load_object_code,{grpc,"0.6.3",[grpc_utils,grpc_client,grpc_stream]}},
    {load_object_code,
        {emqx_exhook,"4.3.4",
            [emqx_exhook,emqx_exhook_app,emqx_exhook_cli,emqx_exhook_handler,
             emqx_exhook_mngr,emqx_exhook_pb,emqx_exhook_server,
             emqx_exhook_sup,emqx_exhook_v_1_hook_provider_bhvr,
             emqx_exhook_v_1_hook_provider_client]}},
    {load_object_code,
        {emqx_exproto,"4.3.5",
            [emqx_exproto_gsvr,emqx_exproto_gcli,emqx_exproto_conn,
             emqx_exproto_channel]}},
    {load_object_code,
        {emqx_management,"4.3.9",
            [emqx_mgmt,emqx_mgmt_api,emqx_mgmt_api_acl,emqx_mgmt_api_alarms,
             emqx_mgmt_api_apps,emqx_mgmt_api_banned,emqx_mgmt_api_brokers,
             emqx_mgmt_api_clients,emqx_mgmt_api_data,emqx_mgmt_api_listeners,
             emqx_mgmt_api_metrics,emqx_mgmt_api_nodes,emqx_mgmt_api_plugins,
             emqx_mgmt_api_pubsub,emqx_mgmt_api_routes,emqx_mgmt_api_stats,
             emqx_mgmt_api_subscriptions,emqx_mgmt_app,emqx_mgmt_auth,
             emqx_mgmt_cli,emqx_mgmt_data_backup,emqx_mgmt_http,emqx_mgmt_sup,
             emqx_mgmt_util]}},
    {load_object_code,
        {emqx_dashboard,"4.3.7",
            [emqx_dashboard,emqx_dashboard_admin,emqx_dashboard_api,
             emqx_dashboard_app,emqx_dashboard_cli,emqx_dashboard_sup]}},
    point_of_no_return,
    {load,{ssl_cipher,brutal_purge,soft_purge}},
    {load,{cuttlefish_duration_parse,brutal_purge,soft_purge}},
    {load,{emqx_vm,brutal_purge,soft_purge}},
    {load,{emqx_sys_mon,brutal_purge,soft_purge}},
    {load,{emqx_http_lib,brutal_purge,soft_purge}},
    {load,{emqx_connection,brutal_purge,soft_purge}},
    {load,{emqx_channel,brutal_purge,soft_purge}},
    {load,{emqx_cm,brutal_purge,soft_purge}},
    {load,{emqx_ws_connection,brutal_purge,soft_purge}},
    {load,{emqx_alarm_handler,brutal_purge,soft_purge}},
    {load,{emqx_misc,brutal_purge,soft_purge}},
    {load,{emqx_pqueue,brutal_purge,soft_purge}},
    {load,{emqx_mqueue,brutal_purge,soft_purge}},
    {load,{emqx_frame,brutal_purge,soft_purge}},
    {load,{emqx_rpc,brutal_purge,soft_purge}},
    {load,{emqx_app,brutal_purge,soft_purge}},
    {load,{ekka_cluster_dns,brutal_purge,soft_purge}},
    {load,{ekka_ring,brutal_purge,soft_purge}},
    {load,{ekka_node_monitor,brutal_purge,soft_purge}},
    {load,{ekka_autocluster,brutal_purge,soft_purge}},
    {load,{ekka_autoheal,brutal_purge,soft_purge}},
    {load,{ekka_locker,brutal_purge,soft_purge}},
    {load,{ekka_httpc,brutal_purge,soft_purge}},
    {load,{ekka_mnesia,brutal_purge,soft_purge}},
    {load,{emqx_plugin_libs_ssl,brutal_purge,soft_purge}},
    {load,{emqx_retainer,brutal_purge,soft_purge}},
    {load,{emqx_bridge_mqtt_actions,brutal_purge,soft_purge}},
    {load,{emqx_sn_registry,brutal_purge,soft_purge}},
    {load,{emqx_coap_mqtt_adapter,brutal_purge,soft_purge}},
    {apply,{application,stop,[emqx_stomp]}},
    {remove,{emqx_stomp,brutal_purge,brutal_purge}},
    {remove,{emqx_stomp_connection,brutal_purge,brutal_purge}},
    {remove,{emqx_stomp_frame,brutal_purge,brutal_purge}},
    {remove,{emqx_stomp_heartbeat,brutal_purge,brutal_purge}},
    {remove,{emqx_stomp_protocol,brutal_purge,brutal_purge}},
    {purge,
        [emqx_stomp,emqx_stomp_connection,emqx_stomp_frame,
         emqx_stomp_heartbeat,emqx_stomp_protocol]},
    {load,{emqx_stomp,brutal_purge,brutal_purge}},
    {load,{emqx_stomp_connection,brutal_purge,brutal_purge}},
    {load,{emqx_stomp_frame,brutal_purge,brutal_purge}},
    {load,{emqx_stomp_heartbeat,brutal_purge,brutal_purge}},
    {load,{emqx_stomp_protocol,brutal_purge,brutal_purge}},
    {apply,{application,load,[emqx_stomp]}},
    {apply,{emqx_stomp,force_clear_after_app_stoped,[]}},
    {load,{gun,brutal_purge,soft_purge}},
    {load,{ehttpc,brutal_purge,soft_purge}},
    {load,{ehttpc_pool,brutal_purge,soft_purge}},
    {apply,{application,stop,[emqx_auth_http]}},
    {load,{emqx_auth_http_app,brutal_purge,soft_purge}},
    {load,{emqx_auth_http_cli,brutal_purge,soft_purge}},
    {load,{ecpool_worker,brutal_purge,soft_purge}},
    {load,{ecpool_sup,brutal_purge,soft_purge}},
    {load,{emqx_acl_mnesia_db,brutal_purge,brutal_purge}},
    {load,{emqx_acl_mnesia_migrator,brutal_purge,brutal_purge}},
    {suspend,[emqx_auth_mnesia_sup]},
    {load,{emqx_auth_mnesia_sup,brutal_purge,brutal_purge}},
    {code_change,up,[{emqx_auth_mnesia_sup,[]}]},
    {resume,[emqx_auth_mnesia_sup]},
    {apply,{emqx_acl_mnesia_migrator,start_supervised,[]}},
    {load,{emqx_auth_mnesia_api,brutal_purge,soft_purge}},
    {load,{emqx_acl_mnesia,brutal_purge,soft_purge}},
    {load,{emqx_acl_mnesia_api,brutal_purge,soft_purge}},
    {load,{emqx_acl_mnesia_cli,brutal_purge,soft_purge}},
    {apply,{application,stop,[emqx_web_hook]}},
    {load,{emqx_web_hook_app,brutal_purge,soft_purge}},
    {load,{emqx_web_hook_actions,brutal_purge,soft_purge}},
    {load,{emqx_rule_engine,brutal_purge,soft_purge}},
    {load,{emqx_rule_registry,brutal_purge,soft_purge}},
    {load,{emqx_lwm2m_protocol,brutal_purge,soft_purge}},
    {apply,{application,stop,[mongodb]}},
    {remove,{mc_auth_logic,brutal_purge,brutal_purge}},
    {remove,{mc_connection_man,brutal_purge,brutal_purge}},
    {remove,{mc_cursor,brutal_purge,brutal_purge}},
    {remove,{mc_monitor,brutal_purge,brutal_purge}},
    {remove,{mc_pool_sup,brutal_purge,brutal_purge}},
    {remove,{mc_selecting_logics,brutal_purge,brutal_purge}},
    {remove,{mc_server,brutal_purge,brutal_purge}},
    {remove,{mc_super_sup,brutal_purge,brutal_purge}},
    {remove,{mc_topology,brutal_purge,brutal_purge}},
    {remove,{mc_topology_logics,brutal_purge,brutal_purge}},
    {remove,{mc_utils,brutal_purge,brutal_purge}},
    {remove,{mc_worker,brutal_purge,brutal_purge}},
    {remove,{mc_worker_api,brutal_purge,brutal_purge}},
    {remove,{mc_worker_logic,brutal_purge,brutal_purge}},
    {remove,{mongo_api,brutal_purge,brutal_purge}},
    {remove,{mongo_app,brutal_purge,brutal_purge}},
    {remove,{mongo_id_server,brutal_purge,brutal_purge}},
    {remove,{mongo_protocol,brutal_purge,brutal_purge}},
    {remove,{mongoc,brutal_purge,brutal_purge}},
    {purge,
        [mc_auth_logic,mc_connection_man,mc_cursor,mc_monitor,mc_pool_sup,
         mc_selecting_logics,mc_server,mc_super_sup,mc_topology,
         mc_topology_logics,mc_utils,mc_worker,mc_worker_api,mc_worker_logic,
         mongo_api,mongo_app,mongo_id_server,mongo_protocol,mongoc]},
    {load,{mc_auth_logic,brutal_purge,brutal_purge}},
    {load,{mc_connection_man,brutal_purge,brutal_purge}},
    {load,{mc_cursor,brutal_purge,brutal_purge}},
    {load,{mc_monitor,brutal_purge,brutal_purge}},
    {load,{mc_pool_sup,brutal_purge,brutal_purge}},
    {load,{mc_selecting_logics,brutal_purge,brutal_purge}},
    {load,{mc_server,brutal_purge,brutal_purge}},
    {load,{mc_super_sup,brutal_purge,brutal_purge}},
    {load,{mc_topology,brutal_purge,brutal_purge}},
    {load,{mc_topology_logics,brutal_purge,brutal_purge}},
    {load,{mc_utils,brutal_purge,brutal_purge}},
    {load,{mc_worker,brutal_purge,brutal_purge}},
    {load,{mc_worker_api,brutal_purge,brutal_purge}},
    {load,{mc_worker_logic,brutal_purge,brutal_purge}},
    {load,{mongo_api,brutal_purge,brutal_purge}},
    {load,{mongo_app,brutal_purge,brutal_purge}},
    {load,{mongo_id_server,brutal_purge,brutal_purge}},
    {load,{mongo_protocol,brutal_purge,brutal_purge}},
    {load,{mongoc,brutal_purge,brutal_purge}},
    {apply,{application,start,[mongodb,permanent]}},
    {load,{grpc_utils,brutal_purge,brutal_purge}},
    {load,{grpc_client,brutal_purge,soft_purge}},
    {load,{grpc_stream,brutal_purge,soft_purge}},
    {apply,{application,stop,[emqx_exhook]}},
    {remove,{emqx_exhook,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_app,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_cli,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_handler,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_pb,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_server,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_sup,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_v_1_hook_provider_bhvr,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_v_1_hook_provider_client,brutal_purge,brutal_purge}},
    {purge,
        [emqx_exhook,emqx_exhook_app,emqx_exhook_cli,emqx_exhook_handler,
         emqx_exhook_pb,emqx_exhook_server,emqx_exhook_sup,
         emqx_exhook_v_1_hook_provider_bhvr,
         emqx_exhook_v_1_hook_provider_client]},
    {load,{emqx_exhook,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_app,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_cli,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_handler,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_mngr,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_pb,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_server,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_sup,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_v_1_hook_provider_bhvr,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_v_1_hook_provider_client,brutal_purge,brutal_purge}},
    {apply,{application,load,[emqx_exhook]}},
    {load,{emqx_exproto_gsvr,brutal_purge,soft_purge}},
    {load,{emqx_exproto_gcli,brutal_purge,soft_purge}},
    {load,{emqx_exproto_conn,brutal_purge,soft_purge}},
    {load,{emqx_exproto_channel,brutal_purge,soft_purge}},
    {apply,{minirest,stop_http,['http:management']}},
    {apply,{minirest,stop_http,['https:management']}},
    {apply,{application,stop,[emqx_management]}},
    {remove,{emqx_mgmt,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_acl,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_alarms,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_apps,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_banned,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_brokers,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_clients,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_data,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_listeners,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_metrics,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_nodes,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_plugins,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_pubsub,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_routes,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_stats,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_subscriptions,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_app,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_auth,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_cli,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_data_backup,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_http,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_sup,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_util,brutal_purge,brutal_purge}},
    {purge,
        [emqx_mgmt,emqx_mgmt_api,emqx_mgmt_api_acl,emqx_mgmt_api_alarms,
         emqx_mgmt_api_apps,emqx_mgmt_api_banned,emqx_mgmt_api_brokers,
         emqx_mgmt_api_clients,emqx_mgmt_api_data,emqx_mgmt_api_listeners,
         emqx_mgmt_api_metrics,emqx_mgmt_api_nodes,emqx_mgmt_api_plugins,
         emqx_mgmt_api_pubsub,emqx_mgmt_api_routes,emqx_mgmt_api_stats,
         emqx_mgmt_api_subscriptions,emqx_mgmt_app,emqx_mgmt_auth,
         emqx_mgmt_cli,emqx_mgmt_data_backup,emqx_mgmt_http,emqx_mgmt_sup,
         emqx_mgmt_util]},
    {load,{emqx_mgmt,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_acl,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_alarms,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_apps,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_banned,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_brokers,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_clients,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_data,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_listeners,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_metrics,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_nodes,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_plugins,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_pubsub,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_routes,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_stats,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_subscriptions,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_app,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_auth,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_cli,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_data_backup,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_http,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_sup,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_util,brutal_purge,brutal_purge}},
    {apply,{application,load,[emqx_management]}},
    {apply,{emqx_rule_engine,load_providers,[]}},
    {apply,{application,stop,[emqx_dashboard]}},
    {remove,{emqx_dashboard,brutal_purge,brutal_purge}},
    {remove,{emqx_dashboard_admin,brutal_purge,brutal_purge}},
    {remove,{emqx_dashboard_api,brutal_purge,brutal_purge}},
    {remove,{emqx_dashboard_app,brutal_purge,brutal_purge}},
    {remove,{emqx_dashboard_cli,brutal_purge,brutal_purge}},
    {remove,{emqx_dashboard_sup,brutal_purge,brutal_purge}},
    {purge,
        [emqx_dashboard,emqx_dashboard_admin,emqx_dashboard_api,
         emqx_dashboard_app,emqx_dashboard_cli,emqx_dashboard_sup]},
    {load,{emqx_dashboard,brutal_purge,brutal_purge}},
    {load,{emqx_dashboard_admin,brutal_purge,brutal_purge}},
    {load,{emqx_dashboard_api,brutal_purge,brutal_purge}},
    {load,{emqx_dashboard_app,brutal_purge,brutal_purge}},
    {load,{emqx_dashboard_cli,brutal_purge,brutal_purge}},
    {load,{emqx_dashboard_sup,brutal_purge,brutal_purge}},
    {apply,{application,load,[emqx_dashboard]}},
    {apply,{emqx_plugins,load,[]}}]},
  {"4.3.5",[],
   [{load_object_code,{ssl,"10.2.4.3",[ssl_cipher]}},
    {load_object_code,{cuttlefish,"3.3.6",[cuttlefish_duration_parse]}},
    {load_object_code,
        {emqx,"4.3.12",
            [emqx_vm,emqx_sys_mon,emqx_http_lib,emqx_connection,emqx_channel,
             emqx_ws_connection,emqx_alarm_handler,emqx_misc,emqx_cm,
             emqx_access_rule,emqx_ctl,emqx_pqueue,emqx_mqueue,emqx_frame,
             emqx_rpc,emqx_app]}},
    {load_object_code,
        {ekka,"0.8.1.7",
            [ekka_cluster_dns,ekka_ring,ekka_node_monitor,ekka_autocluster,
             ekka_autoheal,ekka_locker,ekka_httpc,ekka_mnesia]}},
    {load_object_code,{emqx_plugin_libs,"4.3.1",[emqx_plugin_libs_ssl]}},
    {load_object_code,{emqx_modules,"4.3.3",[emqx_mod_presence]}},
    {load_object_code,{emqx_retainer,"4.3.2",[emqx_retainer]}},
    {load_object_code,{emqx_bridge_mqtt,"4.3.3",[emqx_bridge_mqtt_actions]}},
    {load_object_code,{emqx_sn,"4.3.4",[emqx_sn_registry]}},
    {load_object_code,{emqx_coap,"4.3.1",[emqx_coap_mqtt_adapter]}},
    {load_object_code,
        {emqx_stomp,"4.3.3",
            [emqx_stomp,emqx_stomp_connection,emqx_stomp_frame,
             emqx_stomp_heartbeat,emqx_stomp_protocol]}},
    {load_object_code,{gun,"1.3.7",[gun]}},
    {load_object_code,{ehttpc,"0.1.14",[ehttpc,ehttpc_pool]}},
    {load_object_code,
        {emqx_auth_http,"4.3.3",
            [emqx_acl_http,emqx_auth_http,emqx_auth_http_app,
             emqx_auth_http_cli,emqx_auth_http_sup]}},
    {load_object_code,{ecpool,"0.5.2",[ecpool_worker,ecpool_sup]}},
    {load_object_code,
        {emqx_auth_mnesia,"4.3.4",
            [emqx_acl_mnesia_migrator,emqx_acl_mnesia_db,emqx_auth_mnesia_sup,
             emqx_auth_mnesia_api,emqx_acl_mnesia,emqx_acl_mnesia_api,
             emqx_acl_mnesia_cli]}},
    {load_object_code,
        {emqx_web_hook,"4.3.8",
            [emqx_web_hook_app,emqx_web_hook,emqx_web_hook_actions]}},
    {load_object_code,
        {emqx_rule_engine,"4.3.6",
            [emqx_rule_engine,emqx_rule_actions,emqx_rule_registry]}},
    {load_object_code,
        {emqx_lwm2m,"4.3.5",[emqx_lwm2m_protocol,emqx_lwm2m_message]}},
    {load_object_code,{emqx_auth_ldap,"4.3.2",[emqx_auth_ldap_cli]}},
    {load_object_code,
        {mongodb,"3.0.10",
            [mc_auth_logic,mc_connection_man,mc_cursor,mc_monitor,mc_pool_sup,
             mc_selecting_logics,mc_server,mc_super_sup,mc_topology,
             mc_topology_logics,mc_utils,mc_worker,mc_worker_api,
             mc_worker_logic,mongo_api,mongo_app,mongo_id_server,
             mongo_protocol,mongoc]}},
    {load_object_code,{grpc,"0.6.3",[grpc_utils,grpc_client,grpc_stream]}},
    {load_object_code,
        {emqx_exhook,"4.3.4",
            [emqx_exhook,emqx_exhook_app,emqx_exhook_cli,emqx_exhook_handler,
             emqx_exhook_mngr,emqx_exhook_pb,emqx_exhook_server,
             emqx_exhook_sup,emqx_exhook_v_1_hook_provider_bhvr,
             emqx_exhook_v_1_hook_provider_client]}},
    {load_object_code,
        {emqx_exproto,"4.3.5",
            [emqx_exproto_gsvr,emqx_exproto_gcli,emqx_exproto_conn,
             emqx_exproto_channel]}},
    {load_object_code,{minirest,"0.3.7",[minirest,minirest_handler]}},
    {load_object_code,
        {emqx_management,"4.3.9",
            [emqx_mgmt,emqx_mgmt_api,emqx_mgmt_api_acl,emqx_mgmt_api_alarms,
             emqx_mgmt_api_apps,emqx_mgmt_api_banned,emqx_mgmt_api_brokers,
             emqx_mgmt_api_clients,emqx_mgmt_api_data,emqx_mgmt_api_listeners,
             emqx_mgmt_api_metrics,emqx_mgmt_api_nodes,emqx_mgmt_api_plugins,
             emqx_mgmt_api_pubsub,emqx_mgmt_api_routes,emqx_mgmt_api_stats,
             emqx_mgmt_api_subscriptions,emqx_mgmt_app,emqx_mgmt_auth,
             emqx_mgmt_cli,emqx_mgmt_data_backup,emqx_mgmt_http,emqx_mgmt_sup,
             emqx_mgmt_util]}},
    {load_object_code,
        {emqx_dashboard,"4.3.7",
            [emqx_dashboard,emqx_dashboard_admin,emqx_dashboard_api,
             emqx_dashboard_app,emqx_dashboard_cli,emqx_dashboard_sup]}},
    point_of_no_return,
    {load,{ssl_cipher,brutal_purge,soft_purge}},
    {load,{cuttlefish_duration_parse,brutal_purge,soft_purge}},
    {load,{emqx_vm,brutal_purge,soft_purge}},
    {load,{emqx_sys_mon,brutal_purge,soft_purge}},
    {load,{emqx_http_lib,brutal_purge,soft_purge}},
    {load,{emqx_connection,brutal_purge,soft_purge}},
    {load,{emqx_channel,brutal_purge,soft_purge}},
    {load,{emqx_ws_connection,brutal_purge,soft_purge}},
    {load,{emqx_alarm_handler,brutal_purge,soft_purge}},
    {load,{emqx_misc,brutal_purge,soft_purge}},
    {load,{emqx_cm,brutal_purge,soft_purge}},
    {load,{emqx_access_rule,brutal_purge,soft_purge}},
    {load,{emqx_ctl,brutal_purge,soft_purge}},
    {load,{emqx_pqueue,brutal_purge,soft_purge}},
    {load,{emqx_mqueue,brutal_purge,soft_purge}},
    {load,{emqx_frame,brutal_purge,soft_purge}},
    {load,{emqx_rpc,brutal_purge,soft_purge}},
    {load,{emqx_app,brutal_purge,soft_purge}},
    {load,{ekka_cluster_dns,brutal_purge,soft_purge}},
    {load,{ekka_ring,brutal_purge,soft_purge}},
    {load,{ekka_node_monitor,brutal_purge,soft_purge}},
    {load,{ekka_autocluster,brutal_purge,soft_purge}},
    {load,{ekka_autoheal,brutal_purge,soft_purge}},
    {load,{ekka_locker,brutal_purge,soft_purge}},
    {load,{ekka_httpc,brutal_purge,soft_purge}},
    {load,{ekka_mnesia,brutal_purge,soft_purge}},
    {load,{emqx_plugin_libs_ssl,brutal_purge,soft_purge}},
    {load,{emqx_mod_presence,brutal_purge,soft_purge}},
    {load,{emqx_retainer,brutal_purge,soft_purge}},
    {load,{emqx_bridge_mqtt_actions,brutal_purge,soft_purge}},
    {load,{emqx_sn_registry,brutal_purge,soft_purge}},
    {load,{emqx_coap_mqtt_adapter,brutal_purge,soft_purge}},
    {apply,{application,stop,[emqx_stomp]}},
    {remove,{emqx_stomp,brutal_purge,brutal_purge}},
    {remove,{emqx_stomp_connection,brutal_purge,brutal_purge}},
    {remove,{emqx_stomp_frame,brutal_purge,brutal_purge}},
    {remove,{emqx_stomp_heartbeat,brutal_purge,brutal_purge}},
    {remove,{emqx_stomp_protocol,brutal_purge,brutal_purge}},
    {purge,
        [emqx_stomp,emqx_stomp_connection,emqx_stomp_frame,
         emqx_stomp_heartbeat,emqx_stomp_protocol]},
    {load,{emqx_stomp,brutal_purge,brutal_purge}},
    {load,{emqx_stomp_connection,brutal_purge,brutal_purge}},
    {load,{emqx_stomp_frame,brutal_purge,brutal_purge}},
    {load,{emqx_stomp_heartbeat,brutal_purge,brutal_purge}},
    {load,{emqx_stomp_protocol,brutal_purge,brutal_purge}},
    {apply,{application,load,[emqx_stomp]}},
    {apply,{emqx_stomp,force_clear_after_app_stoped,[]}},
    {load,{gun,brutal_purge,soft_purge}},
    {suspend,[ehttpc]},
    {load,{ehttpc,brutal_purge,brutal_purge}},
    {code_change,up,[{ehttpc,[]}]},
    {resume,[ehttpc]},
    {load,{ehttpc_pool,brutal_purge,soft_purge}},
    {apply,{application,stop,[emqx_auth_http]}},
    {remove,{emqx_acl_http,brutal_purge,brutal_purge}},
    {remove,{emqx_auth_http,brutal_purge,brutal_purge}},
    {remove,{emqx_auth_http_app,brutal_purge,brutal_purge}},
    {remove,{emqx_auth_http_cli,brutal_purge,brutal_purge}},
    {remove,{emqx_auth_http_sup,brutal_purge,brutal_purge}},
    {purge,
        [emqx_acl_http,emqx_auth_http,emqx_auth_http_app,emqx_auth_http_cli,
         emqx_auth_http_sup]},
    {load,{emqx_acl_http,brutal_purge,brutal_purge}},
    {load,{emqx_auth_http,brutal_purge,brutal_purge}},
    {load,{emqx_auth_http_app,brutal_purge,brutal_purge}},
    {load,{emqx_auth_http_cli,brutal_purge,brutal_purge}},
    {load,{emqx_auth_http_sup,brutal_purge,brutal_purge}},
    {apply,{application,load,[emqx_auth_http]}},
    {load,{ecpool_worker,brutal_purge,soft_purge}},
    {load,{ecpool_sup,brutal_purge,soft_purge}},
    {load,{emqx_acl_mnesia_db,brutal_purge,brutal_purge}},
    {load,{emqx_acl_mnesia_migrator,brutal_purge,brutal_purge}},
    {suspend,[emqx_auth_mnesia_sup]},
    {load,{emqx_auth_mnesia_sup,brutal_purge,brutal_purge}},
    {code_change,up,[{emqx_auth_mnesia_sup,[]}]},
    {resume,[emqx_auth_mnesia_sup]},
    {apply,{emqx_acl_mnesia_migrator,start_supervised,[]}},
    {load,{emqx_auth_mnesia_api,brutal_purge,soft_purge}},
    {load,{emqx_acl_mnesia,brutal_purge,soft_purge}},
    {load,{emqx_acl_mnesia_api,brutal_purge,soft_purge}},
    {load,{emqx_acl_mnesia_cli,brutal_purge,soft_purge}},
    {apply,{application,stop,[emqx_web_hook]}},
    {load,{emqx_web_hook_app,brutal_purge,soft_purge}},
    {load,{emqx_web_hook,brutal_purge,soft_purge}},
    {load,{emqx_web_hook_actions,brutal_purge,soft_purge}},
    {load,{emqx_rule_engine,brutal_purge,soft_purge}},
    {load,{emqx_rule_actions,brutal_purge,soft_purge}},
    {load,{emqx_rule_registry,brutal_purge,soft_purge}},
    {load,{emqx_lwm2m_protocol,brutal_purge,soft_purge}},
    {load,{emqx_lwm2m_message,brutal_purge,soft_purge}},
    {load,{emqx_auth_ldap_cli,brutal_purge,soft_purge}},
    {apply,{application,stop,[mongodb]}},
    {remove,{mc_auth_logic,brutal_purge,brutal_purge}},
    {remove,{mc_connection_man,brutal_purge,brutal_purge}},
    {remove,{mc_cursor,brutal_purge,brutal_purge}},
    {remove,{mc_monitor,brutal_purge,brutal_purge}},
    {remove,{mc_pool_sup,brutal_purge,brutal_purge}},
    {remove,{mc_selecting_logics,brutal_purge,brutal_purge}},
    {remove,{mc_server,brutal_purge,brutal_purge}},
    {remove,{mc_super_sup,brutal_purge,brutal_purge}},
    {remove,{mc_topology,brutal_purge,brutal_purge}},
    {remove,{mc_topology_logics,brutal_purge,brutal_purge}},
    {remove,{mc_utils,brutal_purge,brutal_purge}},
    {remove,{mc_worker,brutal_purge,brutal_purge}},
    {remove,{mc_worker_api,brutal_purge,brutal_purge}},
    {remove,{mc_worker_logic,brutal_purge,brutal_purge}},
    {remove,{mongo_api,brutal_purge,brutal_purge}},
    {remove,{mongo_app,brutal_purge,brutal_purge}},
    {remove,{mongo_id_server,brutal_purge,brutal_purge}},
    {remove,{mongo_protocol,brutal_purge,brutal_purge}},
    {remove,{mongoc,brutal_purge,brutal_purge}},
    {purge,
        [mc_auth_logic,mc_connection_man,mc_cursor,mc_monitor,mc_pool_sup,
         mc_selecting_logics,mc_server,mc_super_sup,mc_topology,
         mc_topology_logics,mc_utils,mc_worker,mc_worker_api,mc_worker_logic,
         mongo_api,mongo_app,mongo_id_server,mongo_protocol,mongoc]},
    {load,{mc_auth_logic,brutal_purge,brutal_purge}},
    {load,{mc_connection_man,brutal_purge,brutal_purge}},
    {load,{mc_cursor,brutal_purge,brutal_purge}},
    {load,{mc_monitor,brutal_purge,brutal_purge}},
    {load,{mc_pool_sup,brutal_purge,brutal_purge}},
    {load,{mc_selecting_logics,brutal_purge,brutal_purge}},
    {load,{mc_server,brutal_purge,brutal_purge}},
    {load,{mc_super_sup,brutal_purge,brutal_purge}},
    {load,{mc_topology,brutal_purge,brutal_purge}},
    {load,{mc_topology_logics,brutal_purge,brutal_purge}},
    {load,{mc_utils,brutal_purge,brutal_purge}},
    {load,{mc_worker,brutal_purge,brutal_purge}},
    {load,{mc_worker_api,brutal_purge,brutal_purge}},
    {load,{mc_worker_logic,brutal_purge,brutal_purge}},
    {load,{mongo_api,brutal_purge,brutal_purge}},
    {load,{mongo_app,brutal_purge,brutal_purge}},
    {load,{mongo_id_server,brutal_purge,brutal_purge}},
    {load,{mongo_protocol,brutal_purge,brutal_purge}},
    {load,{mongoc,brutal_purge,brutal_purge}},
    {apply,{application,start,[mongodb,permanent]}},
    {load,{grpc_utils,brutal_purge,brutal_purge}},
    {load,{grpc_client,brutal_purge,soft_purge}},
    {load,{grpc_stream,brutal_purge,soft_purge}},
    {apply,{application,stop,[emqx_exhook]}},
    {remove,{emqx_exhook,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_app,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_cli,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_handler,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_pb,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_server,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_sup,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_v_1_hook_provider_bhvr,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_v_1_hook_provider_client,brutal_purge,brutal_purge}},
    {purge,
        [emqx_exhook,emqx_exhook_app,emqx_exhook_cli,emqx_exhook_handler,
         emqx_exhook_pb,emqx_exhook_server,emqx_exhook_sup,
         emqx_exhook_v_1_hook_provider_bhvr,
         emqx_exhook_v_1_hook_provider_client]},
    {load,{emqx_exhook,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_app,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_cli,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_handler,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_mngr,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_pb,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_server,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_sup,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_v_1_hook_provider_bhvr,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_v_1_hook_provider_client,brutal_purge,brutal_purge}},
    {apply,{application,load,[emqx_exhook]}},
    {load,{emqx_exproto_gsvr,brutal_purge,soft_purge}},
    {load,{emqx_exproto_gcli,brutal_purge,soft_purge}},
    {load,{emqx_exproto_conn,brutal_purge,soft_purge}},
    {load,{emqx_exproto_channel,brutal_purge,soft_purge}},
    {load,{minirest,brutal_purge,soft_purge}},
    {load,{minirest_handler,brutal_purge,soft_purge}},
    {apply,{minirest,stop_http,['http:management']}},
    {apply,{minirest,stop_http,['https:management']}},
    {apply,{application,stop,[emqx_management]}},
    {remove,{emqx_mgmt,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_acl,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_alarms,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_apps,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_banned,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_brokers,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_clients,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_data,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_listeners,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_metrics,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_nodes,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_plugins,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_pubsub,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_routes,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_stats,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_subscriptions,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_app,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_auth,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_cli,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_data_backup,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_http,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_sup,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_util,brutal_purge,brutal_purge}},
    {purge,
        [emqx_mgmt,emqx_mgmt_api,emqx_mgmt_api_acl,emqx_mgmt_api_alarms,
         emqx_mgmt_api_apps,emqx_mgmt_api_banned,emqx_mgmt_api_brokers,
         emqx_mgmt_api_clients,emqx_mgmt_api_data,emqx_mgmt_api_listeners,
         emqx_mgmt_api_metrics,emqx_mgmt_api_nodes,emqx_mgmt_api_plugins,
         emqx_mgmt_api_pubsub,emqx_mgmt_api_routes,emqx_mgmt_api_stats,
         emqx_mgmt_api_subscriptions,emqx_mgmt_app,emqx_mgmt_auth,
         emqx_mgmt_cli,emqx_mgmt_data_backup,emqx_mgmt_http,emqx_mgmt_sup,
         emqx_mgmt_util]},
    {load,{emqx_mgmt,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_acl,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_alarms,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_apps,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_banned,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_brokers,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_clients,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_data,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_listeners,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_metrics,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_nodes,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_plugins,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_pubsub,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_routes,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_stats,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_subscriptions,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_app,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_auth,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_cli,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_data_backup,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_http,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_sup,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_util,brutal_purge,brutal_purge}},
    {apply,{application,load,[emqx_management]}},
    {apply,{emqx_rule_engine,load_providers,[]}},
    {apply,{application,stop,[emqx_dashboard]}},
    {remove,{emqx_dashboard,brutal_purge,brutal_purge}},
    {remove,{emqx_dashboard_admin,brutal_purge,brutal_purge}},
    {remove,{emqx_dashboard_api,brutal_purge,brutal_purge}},
    {remove,{emqx_dashboard_app,brutal_purge,brutal_purge}},
    {remove,{emqx_dashboard_cli,brutal_purge,brutal_purge}},
    {remove,{emqx_dashboard_sup,brutal_purge,brutal_purge}},
    {purge,
        [emqx_dashboard,emqx_dashboard_admin,emqx_dashboard_api,
         emqx_dashboard_app,emqx_dashboard_cli,emqx_dashboard_sup]},
    {load,{emqx_dashboard,brutal_purge,brutal_purge}},
    {load,{emqx_dashboard_admin,brutal_purge,brutal_purge}},
    {load,{emqx_dashboard_api,brutal_purge,brutal_purge}},
    {load,{emqx_dashboard_app,brutal_purge,brutal_purge}},
    {load,{emqx_dashboard_cli,brutal_purge,brutal_purge}},
    {load,{emqx_dashboard_sup,brutal_purge,brutal_purge}},
    {apply,{application,load,[emqx_dashboard]}},
    {apply,{emqx_plugins,load,[]}}]},
  {"4.3.9",[],
   [{load_object_code,{ssl,"10.2.4.3",[ssl_cipher]}},
    {load_object_code,
        {emqx,"4.3.12",
            [emqx_channel,emqx_vm,emqx_sys_mon,emqx_http_lib,emqx_app,
             emqx_frame,emqx_connection]}},
    {load_object_code,
        {ekka,"0.8.1.7",
            [ekka_node_monitor,ekka_autocluster,ekka_autoheal,ekka_locker,
             ekka_cluster_dns]}},
    {load_object_code,{emqx_retainer,"4.3.2",[emqx_retainer]}},
    {load_object_code,{emqx_bridge_mqtt,"4.3.3",[emqx_bridge_mqtt_actions]}},
    {load_object_code,{emqx_sn,"4.3.4",[emqx_sn_registry]}},
    {load_object_code,{emqx_coap,"4.3.1",[emqx_coap_mqtt_adapter]}},
    {load_object_code,
        {emqx_stomp,"4.3.3",[emqx_stomp_protocol,emqx_stomp_connection]}},
    {load_object_code,{gun,"1.3.7",[gun]}},
    {load_object_code,{ehttpc,"0.1.14",[ehttpc,ehttpc_pool]}},
    {load_object_code,
        {emqx_auth_http,"4.3.3",[emqx_auth_http_app,emqx_auth_http_cli]}},
    {load_object_code,{ecpool,"0.5.2",[ecpool_worker,ecpool_sup]}},
    {load_object_code,
        {emqx_web_hook,"4.3.8",[emqx_web_hook_app,emqx_web_hook_actions]}},
    {load_object_code,{emqx_rule_engine,"4.3.6",[emqx_rule_registry]}},
    {load_object_code,{emqx_lwm2m,"4.3.5",[emqx_lwm2m_protocol]}},
    {load_object_code,
        {emqx_exproto,"4.3.5",[emqx_exproto_conn,emqx_exproto_channel]}},
    {load_object_code,
        {emqx_management,"4.3.9",
            [emqx_mgmt,emqx_mgmt_api,emqx_mgmt_api_acl,emqx_mgmt_api_alarms,
             emqx_mgmt_api_apps,emqx_mgmt_api_banned,emqx_mgmt_api_brokers,
             emqx_mgmt_api_clients,emqx_mgmt_api_data,emqx_mgmt_api_listeners,
             emqx_mgmt_api_metrics,emqx_mgmt_api_nodes,emqx_mgmt_api_plugins,
             emqx_mgmt_api_pubsub,emqx_mgmt_api_routes,emqx_mgmt_api_stats,
             emqx_mgmt_api_subscriptions,emqx_mgmt_app,emqx_mgmt_auth,
             emqx_mgmt_cli,emqx_mgmt_data_backup,emqx_mgmt_http,emqx_mgmt_sup,
             emqx_mgmt_util]}},
    {load_object_code,
        {emqx_dashboard,"4.3.7",
            [emqx_dashboard,emqx_dashboard_admin,emqx_dashboard_api,
             emqx_dashboard_app,emqx_dashboard_cli,emqx_dashboard_sup]}},
    point_of_no_return,
    {load,{ssl_cipher,brutal_purge,soft_purge}},
    {load,{emqx_channel,brutal_purge,soft_purge}},
    {load,{emqx_vm,brutal_purge,soft_purge}},
    {load,{emqx_sys_mon,brutal_purge,soft_purge}},
    {load,{emqx_http_lib,brutal_purge,soft_purge}},
    {load,{emqx_app,brutal_purge,soft_purge}},
    {load,{emqx_frame,brutal_purge,soft_purge}},
    {load,{emqx_connection,brutal_purge,soft_purge}},
    {load,{ekka_node_monitor,brutal_purge,soft_purge}},
    {load,{ekka_autocluster,brutal_purge,soft_purge}},
    {load,{ekka_autoheal,brutal_purge,soft_purge}},
    {load,{ekka_locker,brutal_purge,soft_purge}},
    {load,{ekka_cluster_dns,brutal_purge,soft_purge}},
    {load,{emqx_retainer,brutal_purge,soft_purge}},
    {load,{emqx_bridge_mqtt_actions,brutal_purge,soft_purge}},
    {load,{emqx_sn_registry,brutal_purge,soft_purge}},
    {load,{emqx_coap_mqtt_adapter,brutal_purge,soft_purge}},
    {load,{emqx_stomp_protocol,brutal_purge,soft_purge}},
    {load,{emqx_stomp_connection,brutal_purge,soft_purge}},
    {load,{gun,brutal_purge,soft_purge}},
    {load,{ehttpc,brutal_purge,soft_purge}},
    {load,{ehttpc_pool,brutal_purge,soft_purge}},
    {apply,{application,stop,[emqx_auth_http]}},
    {load,{emqx_auth_http_app,brutal_purge,soft_purge}},
    {load,{emqx_auth_http_cli,brutal_purge,soft_purge}},
    {load,{ecpool_worker,brutal_purge,soft_purge}},
    {load,{ecpool_sup,brutal_purge,soft_purge}},
    {apply,{application,stop,[emqx_web_hook]}},
    {load,{emqx_web_hook_app,brutal_purge,soft_purge}},
    {load,{emqx_web_hook_actions,brutal_purge,soft_purge}},
    {load,{emqx_rule_registry,brutal_purge,soft_purge}},
    {load,{emqx_lwm2m_protocol,brutal_purge,soft_purge}},
    {load,{emqx_exproto_conn,brutal_purge,soft_purge}},
    {load,{emqx_exproto_channel,brutal_purge,soft_purge}},
    {apply,{minirest,stop_http,['http:management']}},
    {apply,{minirest,stop_http,['https:management']}},
    {apply,{application,stop,[emqx_management]}},
    {remove,{emqx_mgmt,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_acl,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_alarms,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_apps,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_banned,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_brokers,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_clients,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_data,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_listeners,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_metrics,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_nodes,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_plugins,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_pubsub,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_routes,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_stats,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_subscriptions,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_app,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_auth,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_cli,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_data_backup,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_http,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_sup,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_util,brutal_purge,brutal_purge}},
    {purge,
        [emqx_mgmt,emqx_mgmt_api,emqx_mgmt_api_acl,emqx_mgmt_api_alarms,
         emqx_mgmt_api_apps,emqx_mgmt_api_banned,emqx_mgmt_api_brokers,
         emqx_mgmt_api_clients,emqx_mgmt_api_data,emqx_mgmt_api_listeners,
         emqx_mgmt_api_metrics,emqx_mgmt_api_nodes,emqx_mgmt_api_plugins,
         emqx_mgmt_api_pubsub,emqx_mgmt_api_routes,emqx_mgmt_api_stats,
         emqx_mgmt_api_subscriptions,emqx_mgmt_app,emqx_mgmt_auth,
         emqx_mgmt_cli,emqx_mgmt_data_backup,emqx_mgmt_http,emqx_mgmt_sup,
         emqx_mgmt_util]},
    {load,{emqx_mgmt,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_acl,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_alarms,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_apps,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_banned,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_brokers,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_clients,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_data,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_listeners,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_metrics,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_nodes,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_plugins,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_pubsub,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_routes,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_stats,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_subscriptions,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_app,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_auth,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_cli,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_data_backup,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_http,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_sup,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_util,brutal_purge,brutal_purge}},
    {apply,{application,load,[emqx_management]}},
    {apply,{emqx_rule_engine,load_providers,[]}},
    {apply,{application,stop,[emqx_dashboard]}},
    {remove,{emqx_dashboard,brutal_purge,brutal_purge}},
    {remove,{emqx_dashboard_admin,brutal_purge,brutal_purge}},
    {remove,{emqx_dashboard_api,brutal_purge,brutal_purge}},
    {remove,{emqx_dashboard_app,brutal_purge,brutal_purge}},
    {remove,{emqx_dashboard_cli,brutal_purge,brutal_purge}},
    {remove,{emqx_dashboard_sup,brutal_purge,brutal_purge}},
    {purge,
        [emqx_dashboard,emqx_dashboard_admin,emqx_dashboard_api,
         emqx_dashboard_app,emqx_dashboard_cli,emqx_dashboard_sup]},
    {load,{emqx_dashboard,brutal_purge,brutal_purge}},
    {load,{emqx_dashboard_admin,brutal_purge,brutal_purge}},
    {load,{emqx_dashboard_api,brutal_purge,brutal_purge}},
    {load,{emqx_dashboard_app,brutal_purge,brutal_purge}},
    {load,{emqx_dashboard_cli,brutal_purge,brutal_purge}},
    {load,{emqx_dashboard_sup,brutal_purge,brutal_purge}},
    {apply,{application,load,[emqx_dashboard]}},
    {apply,{emqx_plugins,load,[]}}]},
  {"4.3.8",[],
   [{load_object_code,{ssl,"10.2.4.3",[ssl_cipher]}},
    {load_object_code,
        {emqx,"4.3.12",
            [emqx_vm,emqx_sys_mon,emqx_http_lib,emqx_connection,emqx_channel,
             emqx_cm,emqx_ws_connection,emqx_pqueue,emqx_mqueue,emqx_frame,
             emqx_rpc,emqx_app]}},
    {load_object_code,
        {ekka,"0.8.1.7",
            [ekka_ring,ekka_cluster_dns,ekka_node_monitor,ekka_autocluster,
             ekka_autoheal,ekka_locker,ekka_httpc]}},
    {load_object_code,{emqx_plugin_libs,"4.3.1",[emqx_plugin_libs_ssl]}},
    {load_object_code,{emqx_retainer,"4.3.2",[emqx_retainer]}},
    {load_object_code,{emqx_bridge_mqtt,"4.3.3",[emqx_bridge_mqtt_actions]}},
    {load_object_code,{emqx_sn,"4.3.4",[emqx_sn_registry]}},
    {load_object_code,{emqx_coap,"4.3.1",[emqx_coap_mqtt_adapter]}},
    {load_object_code,
        {emqx_stomp,"4.3.3",
            [emqx_stomp,emqx_stomp_connection,emqx_stomp_frame,
             emqx_stomp_heartbeat,emqx_stomp_protocol]}},
    {load_object_code,{gun,"1.3.7",[gun]}},
    {load_object_code,{ehttpc,"0.1.14",[ehttpc,ehttpc_pool]}},
    {load_object_code,
        {emqx_auth_http,"4.3.3",[emqx_auth_http_app,emqx_auth_http_cli]}},
    {load_object_code,{ecpool,"0.5.2",[ecpool_worker,ecpool_sup]}},
    {load_object_code,
        {emqx_auth_mnesia,"4.3.4",
            [emqx_acl_mnesia_migrator,emqx_acl_mnesia_db,emqx_auth_mnesia_sup,
             emqx_auth_mnesia_api,emqx_acl_mnesia,emqx_acl_mnesia_api,
             emqx_acl_mnesia_cli]}},
    {load_object_code,
        {emqx_web_hook,"4.3.8",[emqx_web_hook_app,emqx_web_hook_actions]}},
    {load_object_code,
        {emqx_rule_engine,"4.3.6",[emqx_rule_engine,emqx_rule_registry]}},
    {load_object_code,{emqx_lwm2m,"4.3.5",[emqx_lwm2m_protocol]}},
    {load_object_code,
        {mongodb,"3.0.10",
            [mc_auth_logic,mc_connection_man,mc_cursor,mc_monitor,mc_pool_sup,
             mc_selecting_logics,mc_server,mc_super_sup,mc_topology,
             mc_topology_logics,mc_utils,mc_worker,mc_worker_api,
             mc_worker_logic,mongo_api,mongo_app,mongo_id_server,
             mongo_protocol,mongoc]}},
    {load_object_code,
        {emqx_exproto,"4.3.5",[emqx_exproto_conn,emqx_exproto_channel]}},
    {load_object_code,
        {emqx_management,"4.3.9",
            [emqx_mgmt,emqx_mgmt_api,emqx_mgmt_api_acl,emqx_mgmt_api_alarms,
             emqx_mgmt_api_apps,emqx_mgmt_api_banned,emqx_mgmt_api_brokers,
             emqx_mgmt_api_clients,emqx_mgmt_api_data,emqx_mgmt_api_listeners,
             emqx_mgmt_api_metrics,emqx_mgmt_api_nodes,emqx_mgmt_api_plugins,
             emqx_mgmt_api_pubsub,emqx_mgmt_api_routes,emqx_mgmt_api_stats,
             emqx_mgmt_api_subscriptions,emqx_mgmt_app,emqx_mgmt_auth,
             emqx_mgmt_cli,emqx_mgmt_data_backup,emqx_mgmt_http,emqx_mgmt_sup,
             emqx_mgmt_util]}},
    {load_object_code,
        {emqx_dashboard,"4.3.7",
            [emqx_dashboard,emqx_dashboard_admin,emqx_dashboard_api,
             emqx_dashboard_app,emqx_dashboard_cli,emqx_dashboard_sup]}},
    point_of_no_return,
    {load,{ssl_cipher,brutal_purge,soft_purge}},
    {load,{emqx_vm,brutal_purge,soft_purge}},
    {load,{emqx_sys_mon,brutal_purge,soft_purge}},
    {load,{emqx_http_lib,brutal_purge,soft_purge}},
    {load,{emqx_connection,brutal_purge,soft_purge}},
    {load,{emqx_channel,brutal_purge,soft_purge}},
    {load,{emqx_cm,brutal_purge,soft_purge}},
    {load,{emqx_ws_connection,brutal_purge,soft_purge}},
    {load,{emqx_pqueue,brutal_purge,soft_purge}},
    {load,{emqx_mqueue,brutal_purge,soft_purge}},
    {load,{emqx_frame,brutal_purge,soft_purge}},
    {load,{emqx_rpc,brutal_purge,soft_purge}},
    {load,{emqx_app,brutal_purge,soft_purge}},
    {load,{ekka_ring,brutal_purge,soft_purge}},
    {load,{ekka_cluster_dns,brutal_purge,soft_purge}},
    {load,{ekka_node_monitor,brutal_purge,soft_purge}},
    {load,{ekka_autocluster,brutal_purge,soft_purge}},
    {load,{ekka_autoheal,brutal_purge,soft_purge}},
    {load,{ekka_locker,brutal_purge,soft_purge}},
    {load,{ekka_httpc,brutal_purge,soft_purge}},
    {load,{emqx_plugin_libs_ssl,brutal_purge,soft_purge}},
    {load,{emqx_retainer,brutal_purge,soft_purge}},
    {load,{emqx_bridge_mqtt_actions,brutal_purge,soft_purge}},
    {load,{emqx_sn_registry,brutal_purge,soft_purge}},
    {load,{emqx_coap_mqtt_adapter,brutal_purge,soft_purge}},
    {apply,{application,stop,[emqx_stomp]}},
    {remove,{emqx_stomp,brutal_purge,brutal_purge}},
    {remove,{emqx_stomp_connection,brutal_purge,brutal_purge}},
    {remove,{emqx_stomp_frame,brutal_purge,brutal_purge}},
    {remove,{emqx_stomp_heartbeat,brutal_purge,brutal_purge}},
    {remove,{emqx_stomp_protocol,brutal_purge,brutal_purge}},
    {purge,
        [emqx_stomp,emqx_stomp_connection,emqx_stomp_frame,
         emqx_stomp_heartbeat,emqx_stomp_protocol]},
    {load,{emqx_stomp,brutal_purge,brutal_purge}},
    {load,{emqx_stomp_connection,brutal_purge,brutal_purge}},
    {load,{emqx_stomp_frame,brutal_purge,brutal_purge}},
    {load,{emqx_stomp_heartbeat,brutal_purge,brutal_purge}},
    {load,{emqx_stomp_protocol,brutal_purge,brutal_purge}},
    {apply,{application,load,[emqx_stomp]}},
    {apply,{emqx_stomp,force_clear_after_app_stoped,[]}},
    {load,{gun,brutal_purge,soft_purge}},
    {load,{ehttpc,brutal_purge,soft_purge}},
    {load,{ehttpc_pool,brutal_purge,soft_purge}},
    {apply,{application,stop,[emqx_auth_http]}},
    {load,{emqx_auth_http_app,brutal_purge,soft_purge}},
    {load,{emqx_auth_http_cli,brutal_purge,soft_purge}},
    {load,{ecpool_worker,brutal_purge,soft_purge}},
    {load,{ecpool_sup,brutal_purge,soft_purge}},
    {load,{emqx_acl_mnesia_db,brutal_purge,brutal_purge}},
    {load,{emqx_acl_mnesia_migrator,brutal_purge,brutal_purge}},
    {suspend,[emqx_auth_mnesia_sup]},
    {load,{emqx_auth_mnesia_sup,brutal_purge,brutal_purge}},
    {code_change,up,[{emqx_auth_mnesia_sup,[]}]},
    {resume,[emqx_auth_mnesia_sup]},
    {apply,{emqx_acl_mnesia_migrator,start_supervised,[]}},
    {load,{emqx_auth_mnesia_api,brutal_purge,soft_purge}},
    {load,{emqx_acl_mnesia,brutal_purge,soft_purge}},
    {load,{emqx_acl_mnesia_api,brutal_purge,soft_purge}},
    {load,{emqx_acl_mnesia_cli,brutal_purge,soft_purge}},
    {apply,{application,stop,[emqx_web_hook]}},
    {load,{emqx_web_hook_app,brutal_purge,soft_purge}},
    {load,{emqx_web_hook_actions,brutal_purge,soft_purge}},
    {load,{emqx_rule_engine,brutal_purge,soft_purge}},
    {load,{emqx_rule_registry,brutal_purge,soft_purge}},
    {load,{emqx_lwm2m_protocol,brutal_purge,soft_purge}},
    {apply,{application,stop,[mongodb]}},
    {remove,{mc_auth_logic,brutal_purge,brutal_purge}},
    {remove,{mc_connection_man,brutal_purge,brutal_purge}},
    {remove,{mc_cursor,brutal_purge,brutal_purge}},
    {remove,{mc_monitor,brutal_purge,brutal_purge}},
    {remove,{mc_pool_sup,brutal_purge,brutal_purge}},
    {remove,{mc_selecting_logics,brutal_purge,brutal_purge}},
    {remove,{mc_server,brutal_purge,brutal_purge}},
    {remove,{mc_super_sup,brutal_purge,brutal_purge}},
    {remove,{mc_topology,brutal_purge,brutal_purge}},
    {remove,{mc_topology_logics,brutal_purge,brutal_purge}},
    {remove,{mc_utils,brutal_purge,brutal_purge}},
    {remove,{mc_worker,brutal_purge,brutal_purge}},
    {remove,{mc_worker_api,brutal_purge,brutal_purge}},
    {remove,{mc_worker_logic,brutal_purge,brutal_purge}},
    {remove,{mongo_api,brutal_purge,brutal_purge}},
    {remove,{mongo_app,brutal_purge,brutal_purge}},
    {remove,{mongo_id_server,brutal_purge,brutal_purge}},
    {remove,{mongo_protocol,brutal_purge,brutal_purge}},
    {remove,{mongoc,brutal_purge,brutal_purge}},
    {purge,
        [mc_auth_logic,mc_connection_man,mc_cursor,mc_monitor,mc_pool_sup,
         mc_selecting_logics,mc_server,mc_super_sup,mc_topology,
         mc_topology_logics,mc_utils,mc_worker,mc_worker_api,mc_worker_logic,
         mongo_api,mongo_app,mongo_id_server,mongo_protocol,mongoc]},
    {load,{mc_auth_logic,brutal_purge,brutal_purge}},
    {load,{mc_connection_man,brutal_purge,brutal_purge}},
    {load,{mc_cursor,brutal_purge,brutal_purge}},
    {load,{mc_monitor,brutal_purge,brutal_purge}},
    {load,{mc_pool_sup,brutal_purge,brutal_purge}},
    {load,{mc_selecting_logics,brutal_purge,brutal_purge}},
    {load,{mc_server,brutal_purge,brutal_purge}},
    {load,{mc_super_sup,brutal_purge,brutal_purge}},
    {load,{mc_topology,brutal_purge,brutal_purge}},
    {load,{mc_topology_logics,brutal_purge,brutal_purge}},
    {load,{mc_utils,brutal_purge,brutal_purge}},
    {load,{mc_worker,brutal_purge,brutal_purge}},
    {load,{mc_worker_api,brutal_purge,brutal_purge}},
    {load,{mc_worker_logic,brutal_purge,brutal_purge}},
    {load,{mongo_api,brutal_purge,brutal_purge}},
    {load,{mongo_app,brutal_purge,brutal_purge}},
    {load,{mongo_id_server,brutal_purge,brutal_purge}},
    {load,{mongo_protocol,brutal_purge,brutal_purge}},
    {load,{mongoc,brutal_purge,brutal_purge}},
    {apply,{application,start,[mongodb,permanent]}},
    {load,{emqx_exproto_conn,brutal_purge,soft_purge}},
    {load,{emqx_exproto_channel,brutal_purge,soft_purge}},
    {apply,{minirest,stop_http,['http:management']}},
    {apply,{minirest,stop_http,['https:management']}},
    {apply,{application,stop,[emqx_management]}},
    {remove,{emqx_mgmt,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_acl,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_alarms,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_apps,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_banned,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_brokers,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_clients,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_data,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_listeners,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_metrics,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_nodes,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_plugins,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_pubsub,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_routes,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_stats,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_subscriptions,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_app,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_auth,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_cli,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_data_backup,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_http,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_sup,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_util,brutal_purge,brutal_purge}},
    {purge,
        [emqx_mgmt,emqx_mgmt_api,emqx_mgmt_api_acl,emqx_mgmt_api_alarms,
         emqx_mgmt_api_apps,emqx_mgmt_api_banned,emqx_mgmt_api_brokers,
         emqx_mgmt_api_clients,emqx_mgmt_api_data,emqx_mgmt_api_listeners,
         emqx_mgmt_api_metrics,emqx_mgmt_api_nodes,emqx_mgmt_api_plugins,
         emqx_mgmt_api_pubsub,emqx_mgmt_api_routes,emqx_mgmt_api_stats,
         emqx_mgmt_api_subscriptions,emqx_mgmt_app,emqx_mgmt_auth,
         emqx_mgmt_cli,emqx_mgmt_data_backup,emqx_mgmt_http,emqx_mgmt_sup,
         emqx_mgmt_util]},
    {load,{emqx_mgmt,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_acl,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_alarms,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_apps,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_banned,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_brokers,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_clients,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_data,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_listeners,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_metrics,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_nodes,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_plugins,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_pubsub,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_routes,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_stats,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_subscriptions,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_app,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_auth,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_cli,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_data_backup,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_http,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_sup,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_util,brutal_purge,brutal_purge}},
    {apply,{application,load,[emqx_management]}},
    {apply,{emqx_rule_engine,load_providers,[]}},
    {apply,{application,stop,[emqx_dashboard]}},
    {remove,{emqx_dashboard,brutal_purge,brutal_purge}},
    {remove,{emqx_dashboard_admin,brutal_purge,brutal_purge}},
    {remove,{emqx_dashboard_api,brutal_purge,brutal_purge}},
    {remove,{emqx_dashboard_app,brutal_purge,brutal_purge}},
    {remove,{emqx_dashboard_cli,brutal_purge,brutal_purge}},
    {remove,{emqx_dashboard_sup,brutal_purge,brutal_purge}},
    {purge,
        [emqx_dashboard,emqx_dashboard_admin,emqx_dashboard_api,
         emqx_dashboard_app,emqx_dashboard_cli,emqx_dashboard_sup]},
    {load,{emqx_dashboard,brutal_purge,brutal_purge}},
    {load,{emqx_dashboard_admin,brutal_purge,brutal_purge}},
    {load,{emqx_dashboard_api,brutal_purge,brutal_purge}},
    {load,{emqx_dashboard_app,brutal_purge,brutal_purge}},
    {load,{emqx_dashboard_cli,brutal_purge,brutal_purge}},
    {load,{emqx_dashboard_sup,brutal_purge,brutal_purge}},
    {apply,{application,load,[emqx_dashboard]}},
    {apply,{emqx_plugins,load,[]}}]},
  {"4.3.1",[],
   [{load_object_code,{ssl,"10.2.4.3",[ssl_cipher]}},
    {load_object_code,
        {emqx,"4.3.12",
            [emqx_vm,emqx_sys_mon,emqx_alarm_handler,emqx_misc,emqx_packet,
             emqx_shared_sub,emqx_ws_connection,emqx_connection,emqx_frame,
             emqx_cm,emqx_congestion,emqx_node_dump,emqx_channel,emqx_plugins,
             emqx_logger_textfmt,emqx_http_lib,emqx_access_rule,emqx_ctl,
             emqx_pqueue,emqx_mqueue,emqx_rpc,emqx_app]}},
    {load_object_code,
        {ekka,"0.8.1.7",
            [ekka_cluster_dns,ekka_ring,ekka_node_monitor,ekka_autocluster,
             ekka_autoheal,ekka_locker,ekka_httpc,ekka_mnesia]}},
    {load_object_code,{emqx_plugin_libs,"4.3.1",[emqx_plugin_libs_ssl]}},
    {load_object_code,
        {emqx_modules,"4.3.3",[emqx_mod_presence,emqx_mod_api_topic_metrics]}},
    {load_object_code,{emqx_retainer,"4.3.2",[emqx_retainer]}},
    {load_object_code,{emqtt,"1.2.3.1",[emqtt,emqtt_frame]}},
    {load_object_code,
        {emqx_bridge_mqtt,"4.3.3",
            [emqx_bridge_worker,emqx_bridge_mqtt_actions]}},
    {load_object_code,
        {emqx_sn,"4.3.4",
            [emqx_sn_app,emqx_sn_asleep_timer,emqx_sn_broadcast,emqx_sn_frame,
             emqx_sn_gateway,emqx_sn_registry,emqx_sn_sup]}},
    {load_object_code,{emqx_coap,"4.3.1",[emqx_coap_mqtt_adapter]}},
    {load_object_code,
        {emqx_stomp,"4.3.3",
            [emqx_stomp,emqx_stomp_connection,emqx_stomp_frame,
             emqx_stomp_heartbeat,emqx_stomp_protocol]}},
    {load_object_code,{gun,"1.3.7",[gun]}},
    {load_object_code,{ehttpc,"0.1.14",[ehttpc,ehttpc_pool]}},
    {load_object_code,
        {emqx_auth_http,"4.3.3",
            [emqx_acl_http,emqx_auth_http,emqx_auth_http_app,
             emqx_auth_http_cli,emqx_auth_http_sup]}},
    {load_object_code,{ecpool,"0.5.2",[ecpool_worker,ecpool_sup]}},
    {load_object_code,{emqx_auth_jwt,"4.3.1",[emqx_auth_jwt_svr]}},
    {load_object_code,
        {emqx_auth_mnesia,"4.3.4",
            [emqx_acl_mnesia_migrator,emqx_acl_mnesia_db,emqx_auth_mnesia_sup,
             emqx_auth_mnesia_api,emqx_acl_mnesia,emqx_acl_mnesia_api,
             emqx_acl_mnesia_cli]}},
    {load_object_code,
        {emqx_web_hook,"4.3.8",
            [emqx_web_hook_app,emqx_web_hook,emqx_web_hook_actions]}},
    {load_object_code,
        {emqx_rule_engine,"4.3.6",
            [emqx_rule_engine,emqx_rule_registry,emqx_rule_actions]}},
    {load_object_code,{emqx_telemetry,"4.3.1",[emqx_telemetry]}},
    {load_object_code,
        {lwm2m_coap,"1.1.5",[lwm2m_coap_server_content,lwm2m_coap_channel]}},
    {load_object_code,
        {emqx_lwm2m,"4.3.5",
            [binary_util,emqx_lwm2m_api,emqx_lwm2m_app,emqx_lwm2m_cm,
             emqx_lwm2m_cm_sup,emqx_lwm2m_cmd_handler,
             emqx_lwm2m_coap_resource,emqx_lwm2m_coap_server,emqx_lwm2m_json,
             emqx_lwm2m_message,emqx_lwm2m_protocol,emqx_lwm2m_sup,
             emqx_lwm2m_timer,emqx_lwm2m_tlv,emqx_lwm2m_xml_object,
             emqx_lwm2m_xml_object_db]}},
    {load_object_code,
        {emqx_auth_ldap,"4.3.2",[emqx_acl_ldap,emqx_auth_ldap_cli]}},
    {load_object_code,
        {mongodb,"3.0.10",
            [mc_auth_logic,mc_connection_man,mc_cursor,mc_monitor,mc_pool_sup,
             mc_selecting_logics,mc_server,mc_super_sup,mc_topology,
             mc_topology_logics,mc_utils,mc_worker,mc_worker_api,
             mc_worker_logic,mongo_api,mongo_app,mongo_id_server,
             mongo_protocol,mongoc]}},
    {load_object_code,{grpc,"0.6.3",[grpc_utils,grpc_client,grpc_stream]}},
    {load_object_code,
        {emqx_exhook,"4.3.4",
            [emqx_exhook,emqx_exhook_app,emqx_exhook_cli,emqx_exhook_handler,
             emqx_exhook_mngr,emqx_exhook_pb,emqx_exhook_server,
             emqx_exhook_sup,emqx_exhook_v_1_hook_provider_bhvr,
             emqx_exhook_v_1_hook_provider_client]}},
    {load_object_code,
        {emqx_exproto,"4.3.5",
            [emqx_exproto_gsvr,emqx_exproto_gcli,emqx_exproto_conn,
             emqx_exproto_channel]}},
    {load_object_code,{minirest,"0.3.7",[minirest,minirest_handler]}},
    {load_object_code,
        {emqx_management,"4.3.9",
            [emqx_mgmt,emqx_mgmt_api,emqx_mgmt_api_acl,emqx_mgmt_api_alarms,
             emqx_mgmt_api_apps,emqx_mgmt_api_banned,emqx_mgmt_api_brokers,
             emqx_mgmt_api_clients,emqx_mgmt_api_data,emqx_mgmt_api_listeners,
             emqx_mgmt_api_metrics,emqx_mgmt_api_nodes,emqx_mgmt_api_plugins,
             emqx_mgmt_api_pubsub,emqx_mgmt_api_routes,emqx_mgmt_api_stats,
             emqx_mgmt_api_subscriptions,emqx_mgmt_app,emqx_mgmt_auth,
             emqx_mgmt_cli,emqx_mgmt_data_backup,emqx_mgmt_http,emqx_mgmt_sup,
             emqx_mgmt_util]}},
    {load_object_code,
        {emqx_dashboard,"4.3.7",
            [emqx_dashboard,emqx_dashboard_admin,emqx_dashboard_api,
             emqx_dashboard_app,emqx_dashboard_cli,emqx_dashboard_sup]}},
    point_of_no_return,
    {load,{ssl_cipher,brutal_purge,soft_purge}},
    {load,{emqx_vm,brutal_purge,soft_purge}},
    {load,{emqx_sys_mon,brutal_purge,soft_purge}},
    {load,{emqx_alarm_handler,brutal_purge,soft_purge}},
    {load,{emqx_misc,brutal_purge,soft_purge}},
    {load,{emqx_packet,brutal_purge,soft_purge}},
    {load,{emqx_shared_sub,brutal_purge,soft_purge}},
    {load,{emqx_ws_connection,brutal_purge,soft_purge}},
    {load,{emqx_connection,brutal_purge,soft_purge}},
    {load,{emqx_frame,brutal_purge,soft_purge}},
    {load,{emqx_cm,brutal_purge,soft_purge}},
    {load,{emqx_congestion,brutal_purge,soft_purge}},
    {load,{emqx_node_dump,brutal_purge,soft_purge}},
    {load,{emqx_channel,brutal_purge,soft_purge}},
    {load,{emqx_plugins,brutal_purge,soft_purge}},
    {load,{emqx_logger_textfmt,brutal_purge,soft_purge}},
    {load,{emqx_http_lib,brutal_purge,soft_purge}},
    {load,{emqx_access_rule,brutal_purge,soft_purge}},
    {load,{emqx_ctl,brutal_purge,soft_purge}},
    {load,{emqx_pqueue,brutal_purge,soft_purge}},
    {load,{emqx_mqueue,brutal_purge,soft_purge}},
    {load,{emqx_rpc,brutal_purge,soft_purge}},
    {load,{emqx_app,brutal_purge,soft_purge}},
    {load,{ekka_cluster_dns,brutal_purge,soft_purge}},
    {load,{ekka_ring,brutal_purge,soft_purge}},
    {load,{ekka_node_monitor,brutal_purge,soft_purge}},
    {load,{ekka_autocluster,brutal_purge,soft_purge}},
    {load,{ekka_autoheal,brutal_purge,soft_purge}},
    {load,{ekka_locker,brutal_purge,soft_purge}},
    {load,{ekka_httpc,brutal_purge,soft_purge}},
    {load,{ekka_mnesia,brutal_purge,soft_purge}},
    {load,{emqx_plugin_libs_ssl,brutal_purge,soft_purge}},
    {load,{emqx_mod_presence,brutal_purge,soft_purge}},
    {load,{emqx_mod_api_topic_metrics,brutal_purge,soft_purge}},
    {load,{emqx_retainer,brutal_purge,soft_purge}},
    {load,{emqtt,brutal_purge,soft_purge}},
    {load,{emqtt_frame,brutal_purge,soft_purge}},
    {load,{emqx_bridge_worker,brutal_purge,soft_purge}},
    {load,{emqx_bridge_mqtt_actions,brutal_purge,soft_purge}},
    {apply,{application,stop,[emqx_sn]}},
    {remove,{emqx_sn_app,brutal_purge,brutal_purge}},
    {remove,{emqx_sn_asleep_timer,brutal_purge,brutal_purge}},
    {remove,{emqx_sn_broadcast,brutal_purge,brutal_purge}},
    {remove,{emqx_sn_frame,brutal_purge,brutal_purge}},
    {remove,{emqx_sn_gateway,brutal_purge,brutal_purge}},
    {remove,{emqx_sn_registry,brutal_purge,brutal_purge}},
    {remove,{emqx_sn_sup,brutal_purge,brutal_purge}},
    {purge,
        [emqx_sn_app,emqx_sn_asleep_timer,emqx_sn_broadcast,emqx_sn_frame,
         emqx_sn_gateway,emqx_sn_registry,emqx_sn_sup]},
    {load,{emqx_sn_app,brutal_purge,brutal_purge}},
    {load,{emqx_sn_asleep_timer,brutal_purge,brutal_purge}},
    {load,{emqx_sn_broadcast,brutal_purge,brutal_purge}},
    {load,{emqx_sn_frame,brutal_purge,brutal_purge}},
    {load,{emqx_sn_gateway,brutal_purge,brutal_purge}},
    {load,{emqx_sn_registry,brutal_purge,brutal_purge}},
    {load,{emqx_sn_sup,brutal_purge,brutal_purge}},
    {apply,{application,load,[emqx_sn]}},
    {load,{emqx_coap_mqtt_adapter,brutal_purge,soft_purge}},
    {apply,{application,stop,[emqx_stomp]}},
    {remove,{emqx_stomp,brutal_purge,brutal_purge}},
    {remove,{emqx_stomp_connection,brutal_purge,brutal_purge}},
    {remove,{emqx_stomp_frame,brutal_purge,brutal_purge}},
    {remove,{emqx_stomp_heartbeat,brutal_purge,brutal_purge}},
    {remove,{emqx_stomp_protocol,brutal_purge,brutal_purge}},
    {purge,
        [emqx_stomp,emqx_stomp_connection,emqx_stomp_frame,
         emqx_stomp_heartbeat,emqx_stomp_protocol]},
    {load,{emqx_stomp,brutal_purge,brutal_purge}},
    {load,{emqx_stomp_connection,brutal_purge,brutal_purge}},
    {load,{emqx_stomp_frame,brutal_purge,brutal_purge}},
    {load,{emqx_stomp_heartbeat,brutal_purge,brutal_purge}},
    {load,{emqx_stomp_protocol,brutal_purge,brutal_purge}},
    {apply,{application,load,[emqx_stomp]}},
    {apply,{emqx_stomp,force_clear_after_app_stoped,[]}},
    {load,{gun,brutal_purge,soft_purge}},
    {suspend,[ehttpc]},
    {load,{ehttpc,brutal_purge,brutal_purge}},
    {code_change,up,[{ehttpc,[]}]},
    {resume,[ehttpc]},
    {load,{ehttpc_pool,brutal_purge,soft_purge}},
    {apply,{application,stop,[emqx_auth_http]}},
    {remove,{emqx_acl_http,brutal_purge,brutal_purge}},
    {remove,{emqx_auth_http,brutal_purge,brutal_purge}},
    {remove,{emqx_auth_http_app,brutal_purge,brutal_purge}},
    {remove,{emqx_auth_http_cli,brutal_purge,brutal_purge}},
    {remove,{emqx_auth_http_sup,brutal_purge,brutal_purge}},
    {purge,
        [emqx_acl_http,emqx_auth_http,emqx_auth_http_app,emqx_auth_http_cli,
         emqx_auth_http_sup]},
    {load,{emqx_acl_http,brutal_purge,brutal_purge}},
    {load,{emqx_auth_http,brutal_purge,brutal_purge}},
    {load,{emqx_auth_http_app,brutal_purge,brutal_purge}},
    {load,{emqx_auth_http_cli,brutal_purge,brutal_purge}},
    {load,{emqx_auth_http_sup,brutal_purge,brutal_purge}},
    {apply,{application,load,[emqx_auth_http]}},
    {load,{ecpool_worker,brutal_purge,soft_purge}},
    {load,{ecpool_sup,brutal_purge,soft_purge}},
    {load,{emqx_auth_jwt_svr,brutal_purge,soft_purge}},
    {load,{emqx_acl_mnesia_db,brutal_purge,brutal_purge}},
    {load,{emqx_acl_mnesia_migrator,brutal_purge,brutal_purge}},
    {suspend,[emqx_auth_mnesia_sup]},
    {load,{emqx_auth_mnesia_sup,brutal_purge,brutal_purge}},
    {code_change,up,[{emqx_auth_mnesia_sup,[]}]},
    {resume,[emqx_auth_mnesia_sup]},
    {apply,{emqx_acl_mnesia_migrator,start_supervised,[]}},
    {load,{emqx_auth_mnesia_api,brutal_purge,soft_purge}},
    {load,{emqx_acl_mnesia,brutal_purge,soft_purge}},
    {load,{emqx_acl_mnesia_api,brutal_purge,soft_purge}},
    {load,{emqx_acl_mnesia_cli,brutal_purge,soft_purge}},
    {apply,{application,stop,[emqx_web_hook]}},
    {load,{emqx_web_hook_app,brutal_purge,soft_purge}},
    {load,{emqx_web_hook,brutal_purge,soft_purge}},
    {load,{emqx_web_hook_actions,brutal_purge,soft_purge}},
    {load,{emqx_rule_engine,brutal_purge,soft_purge}},
    {load,{emqx_rule_registry,brutal_purge,soft_purge}},
    {apply,{emqx_stats,cancel_update,[rule_registery_stats]}},
    {load,{emqx_rule_actions,brutal_purge,soft_purge}},
    {load,{emqx_telemetry,brutal_purge,soft_purge}},
    {load,{lwm2m_coap_server_content,brutal_purge,soft_purge}},
    {load,{lwm2m_coap_channel,brutal_purge,soft_purge}},
    {apply,{application,stop,[emqx_lwm2m]}},
    {remove,{binary_util,brutal_purge,brutal_purge}},
    {remove,{emqx_lwm2m_app,brutal_purge,brutal_purge}},
    {remove,{emqx_lwm2m_cmd_handler,brutal_purge,brutal_purge}},
    {remove,{emqx_lwm2m_coap_resource,brutal_purge,brutal_purge}},
    {remove,{emqx_lwm2m_coap_server,brutal_purge,brutal_purge}},
    {remove,{emqx_lwm2m_json,brutal_purge,brutal_purge}},
    {remove,{emqx_lwm2m_message,brutal_purge,brutal_purge}},
    {remove,{emqx_lwm2m_protocol,brutal_purge,brutal_purge}},
    {remove,{emqx_lwm2m_sup,brutal_purge,brutal_purge}},
    {remove,{emqx_lwm2m_timer,brutal_purge,brutal_purge}},
    {remove,{emqx_lwm2m_tlv,brutal_purge,brutal_purge}},
    {remove,{emqx_lwm2m_xml_object,brutal_purge,brutal_purge}},
    {remove,{emqx_lwm2m_xml_object_db,brutal_purge,brutal_purge}},
    {purge,
        [binary_util,emqx_lwm2m_app,emqx_lwm2m_cmd_handler,
         emqx_lwm2m_coap_resource,emqx_lwm2m_coap_server,emqx_lwm2m_json,
         emqx_lwm2m_message,emqx_lwm2m_protocol,emqx_lwm2m_sup,
         emqx_lwm2m_timer,emqx_lwm2m_tlv,emqx_lwm2m_xml_object,
         emqx_lwm2m_xml_object_db]},
    {load,{binary_util,brutal_purge,brutal_purge}},
    {load,{emqx_lwm2m_api,brutal_purge,brutal_purge}},
    {load,{emqx_lwm2m_app,brutal_purge,brutal_purge}},
    {load,{emqx_lwm2m_cm,brutal_purge,brutal_purge}},
    {load,{emqx_lwm2m_cm_sup,brutal_purge,brutal_purge}},
    {load,{emqx_lwm2m_cmd_handler,brutal_purge,brutal_purge}},
    {load,{emqx_lwm2m_coap_resource,brutal_purge,brutal_purge}},
    {load,{emqx_lwm2m_coap_server,brutal_purge,brutal_purge}},
    {load,{emqx_lwm2m_json,brutal_purge,brutal_purge}},
    {load,{emqx_lwm2m_message,brutal_purge,brutal_purge}},
    {load,{emqx_lwm2m_protocol,brutal_purge,brutal_purge}},
    {load,{emqx_lwm2m_sup,brutal_purge,brutal_purge}},
    {load,{emqx_lwm2m_timer,brutal_purge,brutal_purge}},
    {load,{emqx_lwm2m_tlv,brutal_purge,brutal_purge}},
    {load,{emqx_lwm2m_xml_object,brutal_purge,brutal_purge}},
    {load,{emqx_lwm2m_xml_object_db,brutal_purge,brutal_purge}},
    {apply,{application,load,[emqx_lwm2m]}},
    {load,{emqx_acl_ldap,brutal_purge,soft_purge}},
    {load,{emqx_auth_ldap_cli,brutal_purge,soft_purge}},
    {apply,{application,stop,[mongodb]}},
    {remove,{mc_auth_logic,brutal_purge,brutal_purge}},
    {remove,{mc_connection_man,brutal_purge,brutal_purge}},
    {remove,{mc_cursor,brutal_purge,brutal_purge}},
    {remove,{mc_monitor,brutal_purge,brutal_purge}},
    {remove,{mc_pool_sup,brutal_purge,brutal_purge}},
    {remove,{mc_selecting_logics,brutal_purge,brutal_purge}},
    {remove,{mc_server,brutal_purge,brutal_purge}},
    {remove,{mc_super_sup,brutal_purge,brutal_purge}},
    {remove,{mc_topology,brutal_purge,brutal_purge}},
    {remove,{mc_topology_logics,brutal_purge,brutal_purge}},
    {remove,{mc_utils,brutal_purge,brutal_purge}},
    {remove,{mc_worker,brutal_purge,brutal_purge}},
    {remove,{mc_worker_api,brutal_purge,brutal_purge}},
    {remove,{mc_worker_logic,brutal_purge,brutal_purge}},
    {remove,{mongo_api,brutal_purge,brutal_purge}},
    {remove,{mongo_app,brutal_purge,brutal_purge}},
    {remove,{mongo_id_server,brutal_purge,brutal_purge}},
    {remove,{mongo_protocol,brutal_purge,brutal_purge}},
    {remove,{mongoc,brutal_purge,brutal_purge}},
    {purge,
        [mc_auth_logic,mc_connection_man,mc_cursor,mc_monitor,mc_pool_sup,
         mc_selecting_logics,mc_server,mc_super_sup,mc_topology,
         mc_topology_logics,mc_utils,mc_worker,mc_worker_api,mc_worker_logic,
         mongo_api,mongo_app,mongo_id_server,mongo_protocol,mongoc]},
    {load,{mc_auth_logic,brutal_purge,brutal_purge}},
    {load,{mc_connection_man,brutal_purge,brutal_purge}},
    {load,{mc_cursor,brutal_purge,brutal_purge}},
    {load,{mc_monitor,brutal_purge,brutal_purge}},
    {load,{mc_pool_sup,brutal_purge,brutal_purge}},
    {load,{mc_selecting_logics,brutal_purge,brutal_purge}},
    {load,{mc_server,brutal_purge,brutal_purge}},
    {load,{mc_super_sup,brutal_purge,brutal_purge}},
    {load,{mc_topology,brutal_purge,brutal_purge}},
    {load,{mc_topology_logics,brutal_purge,brutal_purge}},
    {load,{mc_utils,brutal_purge,brutal_purge}},
    {load,{mc_worker,brutal_purge,brutal_purge}},
    {load,{mc_worker_api,brutal_purge,brutal_purge}},
    {load,{mc_worker_logic,brutal_purge,brutal_purge}},
    {load,{mongo_api,brutal_purge,brutal_purge}},
    {load,{mongo_app,brutal_purge,brutal_purge}},
    {load,{mongo_id_server,brutal_purge,brutal_purge}},
    {load,{mongo_protocol,brutal_purge,brutal_purge}},
    {load,{mongoc,brutal_purge,brutal_purge}},
    {apply,{application,start,[mongodb,permanent]}},
    {load,{grpc_utils,brutal_purge,brutal_purge}},
    {load,{grpc_client,brutal_purge,soft_purge}},
    {load,{grpc_stream,brutal_purge,soft_purge}},
    {apply,{application,stop,[emqx_exhook]}},
    {remove,{emqx_exhook,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_app,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_cli,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_handler,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_pb,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_server,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_sup,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_v_1_hook_provider_bhvr,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_v_1_hook_provider_client,brutal_purge,brutal_purge}},
    {purge,
        [emqx_exhook,emqx_exhook_app,emqx_exhook_cli,emqx_exhook_handler,
         emqx_exhook_pb,emqx_exhook_server,emqx_exhook_sup,
         emqx_exhook_v_1_hook_provider_bhvr,
         emqx_exhook_v_1_hook_provider_client]},
    {load,{emqx_exhook,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_app,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_cli,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_handler,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_mngr,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_pb,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_server,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_sup,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_v_1_hook_provider_bhvr,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_v_1_hook_provider_client,brutal_purge,brutal_purge}},
    {apply,{application,load,[emqx_exhook]}},
    {load,{emqx_exproto_gsvr,brutal_purge,soft_purge}},
    {load,{emqx_exproto_gcli,brutal_purge,soft_purge}},
    {load,{emqx_exproto_conn,brutal_purge,soft_purge}},
    {load,{emqx_exproto_channel,brutal_purge,soft_purge}},
    {load,{minirest,brutal_purge,soft_purge}},
    {load,{minirest_handler,brutal_purge,soft_purge}},
    {apply,{minirest,stop_http,['http:management']}},
    {apply,{minirest,stop_http,['https:management']}},
    {apply,{application,stop,[emqx_management]}},
    {remove,{emqx_mgmt,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_acl,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_alarms,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_apps,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_banned,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_brokers,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_clients,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_data,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_listeners,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_metrics,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_nodes,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_plugins,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_pubsub,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_routes,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_stats,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_subscriptions,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_app,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_auth,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_cli,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_data_backup,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_http,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_sup,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_util,brutal_purge,brutal_purge}},
    {purge,
        [emqx_mgmt,emqx_mgmt_api,emqx_mgmt_api_acl,emqx_mgmt_api_alarms,
         emqx_mgmt_api_apps,emqx_mgmt_api_banned,emqx_mgmt_api_brokers,
         emqx_mgmt_api_clients,emqx_mgmt_api_data,emqx_mgmt_api_listeners,
         emqx_mgmt_api_metrics,emqx_mgmt_api_nodes,emqx_mgmt_api_plugins,
         emqx_mgmt_api_pubsub,emqx_mgmt_api_routes,emqx_mgmt_api_stats,
         emqx_mgmt_api_subscriptions,emqx_mgmt_app,emqx_mgmt_auth,
         emqx_mgmt_cli,emqx_mgmt_data_backup,emqx_mgmt_http,emqx_mgmt_sup,
         emqx_mgmt_util]},
    {load,{emqx_mgmt,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_acl,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_alarms,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_apps,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_banned,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_brokers,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_clients,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_data,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_listeners,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_metrics,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_nodes,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_plugins,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_pubsub,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_routes,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_stats,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_subscriptions,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_app,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_auth,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_cli,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_data_backup,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_http,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_sup,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_util,brutal_purge,brutal_purge}},
    {apply,{application,load,[emqx_management]}},
    {apply,{emqx_rule_engine,load_providers,[]}},
    {apply,{application,stop,[emqx_dashboard]}},
    {remove,{emqx_dashboard,brutal_purge,brutal_purge}},
    {remove,{emqx_dashboard_admin,brutal_purge,brutal_purge}},
    {remove,{emqx_dashboard_api,brutal_purge,brutal_purge}},
    {remove,{emqx_dashboard_app,brutal_purge,brutal_purge}},
    {remove,{emqx_dashboard_cli,brutal_purge,brutal_purge}},
    {remove,{emqx_dashboard_sup,brutal_purge,brutal_purge}},
    {purge,
        [emqx_dashboard,emqx_dashboard_admin,emqx_dashboard_api,
         emqx_dashboard_app,emqx_dashboard_cli,emqx_dashboard_sup]},
    {load,{emqx_dashboard,brutal_purge,brutal_purge}},
    {load,{emqx_dashboard_admin,brutal_purge,brutal_purge}},
    {load,{emqx_dashboard_api,brutal_purge,brutal_purge}},
    {load,{emqx_dashboard_app,brutal_purge,brutal_purge}},
    {load,{emqx_dashboard_cli,brutal_purge,brutal_purge}},
    {load,{emqx_dashboard_sup,brutal_purge,brutal_purge}},
    {apply,{application,load,[emqx_dashboard]}},
    {apply,{emqx_plugins,load,[]}}]},
  {"4.3.6",[],
   [{load_object_code,{ssl,"10.2.4.3",[ssl_cipher]}},
    {load_object_code,{cuttlefish,"3.3.6",[cuttlefish_duration_parse]}},
    {load_object_code,
        {emqx,"4.3.12",
            [emqx_vm,emqx_sys_mon,emqx_http_lib,emqx_connection,emqx_channel,
             emqx_cm,emqx_ws_connection,emqx_alarm_handler,emqx_misc,emqx_ctl,
             emqx_pqueue,emqx_mqueue,emqx_frame,emqx_rpc,emqx_app]}},
    {load_object_code,
        {ekka,"0.8.1.7",
            [ekka_cluster_dns,ekka_ring,ekka_node_monitor,ekka_autocluster,
             ekka_autoheal,ekka_locker,ekka_httpc,ekka_mnesia]}},
    {load_object_code,{emqx_plugin_libs,"4.3.1",[emqx_plugin_libs_ssl]}},
    {load_object_code,{emqx_retainer,"4.3.2",[emqx_retainer]}},
    {load_object_code,{emqx_bridge_mqtt,"4.3.3",[emqx_bridge_mqtt_actions]}},
    {load_object_code,{emqx_sn,"4.3.4",[emqx_sn_registry]}},
    {load_object_code,{emqx_coap,"4.3.1",[emqx_coap_mqtt_adapter]}},
    {load_object_code,
        {emqx_stomp,"4.3.3",
            [emqx_stomp,emqx_stomp_connection,emqx_stomp_frame,
             emqx_stomp_heartbeat,emqx_stomp_protocol]}},
    {load_object_code,{gun,"1.3.7",[gun]}},
    {load_object_code,{ehttpc,"0.1.14",[ehttpc,ehttpc_pool]}},
    {load_object_code,
        {emqx_auth_http,"4.3.3",[emqx_auth_http_app,emqx_auth_http_cli]}},
    {load_object_code,{ecpool,"0.5.2",[ecpool_worker,ecpool_sup]}},
    {load_object_code,
        {emqx_auth_mnesia,"4.3.4",
            [emqx_acl_mnesia_migrator,emqx_acl_mnesia_db,emqx_auth_mnesia_sup,
             emqx_auth_mnesia_api,emqx_acl_mnesia,emqx_acl_mnesia_api,
             emqx_acl_mnesia_cli]}},
    {load_object_code,
        {emqx_web_hook,"4.3.8",[emqx_web_hook_app,emqx_web_hook_actions]}},
    {load_object_code,
        {emqx_rule_engine,"4.3.6",
            [emqx_rule_engine,emqx_rule_actions,emqx_rule_registry]}},
    {load_object_code,
        {emqx_lwm2m,"4.3.5",[emqx_lwm2m_protocol,emqx_lwm2m_message]}},
    {load_object_code,
        {mongodb,"3.0.10",
            [mc_auth_logic,mc_connection_man,mc_cursor,mc_monitor,mc_pool_sup,
             mc_selecting_logics,mc_server,mc_super_sup,mc_topology,
             mc_topology_logics,mc_utils,mc_worker,mc_worker_api,
             mc_worker_logic,mongo_api,mongo_app,mongo_id_server,
             mongo_protocol,mongoc]}},
    {load_object_code,{grpc,"0.6.3",[grpc_utils,grpc_client,grpc_stream]}},
    {load_object_code,
        {emqx_exhook,"4.3.4",
            [emqx_exhook,emqx_exhook_app,emqx_exhook_cli,emqx_exhook_handler,
             emqx_exhook_mngr,emqx_exhook_pb,emqx_exhook_server,
             emqx_exhook_sup,emqx_exhook_v_1_hook_provider_bhvr,
             emqx_exhook_v_1_hook_provider_client]}},
    {load_object_code,
        {emqx_exproto,"4.3.5",
            [emqx_exproto_gsvr,emqx_exproto_gcli,emqx_exproto_conn,
             emqx_exproto_channel]}},
    {load_object_code,{minirest,"0.3.7",[minirest,minirest_handler]}},
    {load_object_code,
        {emqx_management,"4.3.9",
            [emqx_mgmt,emqx_mgmt_api,emqx_mgmt_api_acl,emqx_mgmt_api_alarms,
             emqx_mgmt_api_apps,emqx_mgmt_api_banned,emqx_mgmt_api_brokers,
             emqx_mgmt_api_clients,emqx_mgmt_api_data,emqx_mgmt_api_listeners,
             emqx_mgmt_api_metrics,emqx_mgmt_api_nodes,emqx_mgmt_api_plugins,
             emqx_mgmt_api_pubsub,emqx_mgmt_api_routes,emqx_mgmt_api_stats,
             emqx_mgmt_api_subscriptions,emqx_mgmt_app,emqx_mgmt_auth,
             emqx_mgmt_cli,emqx_mgmt_data_backup,emqx_mgmt_http,emqx_mgmt_sup,
             emqx_mgmt_util]}},
    {load_object_code,
        {emqx_dashboard,"4.3.7",
            [emqx_dashboard,emqx_dashboard_admin,emqx_dashboard_api,
             emqx_dashboard_app,emqx_dashboard_cli,emqx_dashboard_sup]}},
    point_of_no_return,
    {load,{ssl_cipher,brutal_purge,soft_purge}},
    {load,{cuttlefish_duration_parse,brutal_purge,soft_purge}},
    {load,{emqx_vm,brutal_purge,soft_purge}},
    {load,{emqx_sys_mon,brutal_purge,soft_purge}},
    {load,{emqx_http_lib,brutal_purge,soft_purge}},
    {load,{emqx_connection,brutal_purge,soft_purge}},
    {load,{emqx_channel,brutal_purge,soft_purge}},
    {load,{emqx_cm,brutal_purge,soft_purge}},
    {load,{emqx_ws_connection,brutal_purge,soft_purge}},
    {load,{emqx_alarm_handler,brutal_purge,soft_purge}},
    {load,{emqx_misc,brutal_purge,soft_purge}},
    {load,{emqx_ctl,brutal_purge,soft_purge}},
    {load,{emqx_pqueue,brutal_purge,soft_purge}},
    {load,{emqx_mqueue,brutal_purge,soft_purge}},
    {load,{emqx_frame,brutal_purge,soft_purge}},
    {load,{emqx_rpc,brutal_purge,soft_purge}},
    {load,{emqx_app,brutal_purge,soft_purge}},
    {load,{ekka_cluster_dns,brutal_purge,soft_purge}},
    {load,{ekka_ring,brutal_purge,soft_purge}},
    {load,{ekka_node_monitor,brutal_purge,soft_purge}},
    {load,{ekka_autocluster,brutal_purge,soft_purge}},
    {load,{ekka_autoheal,brutal_purge,soft_purge}},
    {load,{ekka_locker,brutal_purge,soft_purge}},
    {load,{ekka_httpc,brutal_purge,soft_purge}},
    {load,{ekka_mnesia,brutal_purge,soft_purge}},
    {load,{emqx_plugin_libs_ssl,brutal_purge,soft_purge}},
    {load,{emqx_retainer,brutal_purge,soft_purge}},
    {load,{emqx_bridge_mqtt_actions,brutal_purge,soft_purge}},
    {load,{emqx_sn_registry,brutal_purge,soft_purge}},
    {load,{emqx_coap_mqtt_adapter,brutal_purge,soft_purge}},
    {apply,{application,stop,[emqx_stomp]}},
    {remove,{emqx_stomp,brutal_purge,brutal_purge}},
    {remove,{emqx_stomp_connection,brutal_purge,brutal_purge}},
    {remove,{emqx_stomp_frame,brutal_purge,brutal_purge}},
    {remove,{emqx_stomp_heartbeat,brutal_purge,brutal_purge}},
    {remove,{emqx_stomp_protocol,brutal_purge,brutal_purge}},
    {purge,
        [emqx_stomp,emqx_stomp_connection,emqx_stomp_frame,
         emqx_stomp_heartbeat,emqx_stomp_protocol]},
    {load,{emqx_stomp,brutal_purge,brutal_purge}},
    {load,{emqx_stomp_connection,brutal_purge,brutal_purge}},
    {load,{emqx_stomp_frame,brutal_purge,brutal_purge}},
    {load,{emqx_stomp_heartbeat,brutal_purge,brutal_purge}},
    {load,{emqx_stomp_protocol,brutal_purge,brutal_purge}},
    {apply,{application,load,[emqx_stomp]}},
    {apply,{emqx_stomp,force_clear_after_app_stoped,[]}},
    {load,{gun,brutal_purge,soft_purge}},
    {load,{ehttpc,brutal_purge,soft_purge}},
    {load,{ehttpc_pool,brutal_purge,soft_purge}},
    {apply,{application,stop,[emqx_auth_http]}},
    {load,{emqx_auth_http_app,brutal_purge,soft_purge}},
    {load,{emqx_auth_http_cli,brutal_purge,soft_purge}},
    {load,{ecpool_worker,brutal_purge,soft_purge}},
    {load,{ecpool_sup,brutal_purge,soft_purge}},
    {load,{emqx_acl_mnesia_db,brutal_purge,brutal_purge}},
    {load,{emqx_acl_mnesia_migrator,brutal_purge,brutal_purge}},
    {suspend,[emqx_auth_mnesia_sup]},
    {load,{emqx_auth_mnesia_sup,brutal_purge,brutal_purge}},
    {code_change,up,[{emqx_auth_mnesia_sup,[]}]},
    {resume,[emqx_auth_mnesia_sup]},
    {apply,{emqx_acl_mnesia_migrator,start_supervised,[]}},
    {load,{emqx_auth_mnesia_api,brutal_purge,soft_purge}},
    {load,{emqx_acl_mnesia,brutal_purge,soft_purge}},
    {load,{emqx_acl_mnesia_api,brutal_purge,soft_purge}},
    {load,{emqx_acl_mnesia_cli,brutal_purge,soft_purge}},
    {apply,{application,stop,[emqx_web_hook]}},
    {load,{emqx_web_hook_app,brutal_purge,soft_purge}},
    {load,{emqx_web_hook_actions,brutal_purge,soft_purge}},
    {load,{emqx_rule_engine,brutal_purge,soft_purge}},
    {load,{emqx_rule_actions,brutal_purge,soft_purge}},
    {load,{emqx_rule_registry,brutal_purge,soft_purge}},
    {load,{emqx_lwm2m_protocol,brutal_purge,soft_purge}},
    {load,{emqx_lwm2m_message,brutal_purge,soft_purge}},
    {apply,{application,stop,[mongodb]}},
    {remove,{mc_auth_logic,brutal_purge,brutal_purge}},
    {remove,{mc_connection_man,brutal_purge,brutal_purge}},
    {remove,{mc_cursor,brutal_purge,brutal_purge}},
    {remove,{mc_monitor,brutal_purge,brutal_purge}},
    {remove,{mc_pool_sup,brutal_purge,brutal_purge}},
    {remove,{mc_selecting_logics,brutal_purge,brutal_purge}},
    {remove,{mc_server,brutal_purge,brutal_purge}},
    {remove,{mc_super_sup,brutal_purge,brutal_purge}},
    {remove,{mc_topology,brutal_purge,brutal_purge}},
    {remove,{mc_topology_logics,brutal_purge,brutal_purge}},
    {remove,{mc_utils,brutal_purge,brutal_purge}},
    {remove,{mc_worker,brutal_purge,brutal_purge}},
    {remove,{mc_worker_api,brutal_purge,brutal_purge}},
    {remove,{mc_worker_logic,brutal_purge,brutal_purge}},
    {remove,{mongo_api,brutal_purge,brutal_purge}},
    {remove,{mongo_app,brutal_purge,brutal_purge}},
    {remove,{mongo_id_server,brutal_purge,brutal_purge}},
    {remove,{mongo_protocol,brutal_purge,brutal_purge}},
    {remove,{mongoc,brutal_purge,brutal_purge}},
    {purge,
        [mc_auth_logic,mc_connection_man,mc_cursor,mc_monitor,mc_pool_sup,
         mc_selecting_logics,mc_server,mc_super_sup,mc_topology,
         mc_topology_logics,mc_utils,mc_worker,mc_worker_api,mc_worker_logic,
         mongo_api,mongo_app,mongo_id_server,mongo_protocol,mongoc]},
    {load,{mc_auth_logic,brutal_purge,brutal_purge}},
    {load,{mc_connection_man,brutal_purge,brutal_purge}},
    {load,{mc_cursor,brutal_purge,brutal_purge}},
    {load,{mc_monitor,brutal_purge,brutal_purge}},
    {load,{mc_pool_sup,brutal_purge,brutal_purge}},
    {load,{mc_selecting_logics,brutal_purge,brutal_purge}},
    {load,{mc_server,brutal_purge,brutal_purge}},
    {load,{mc_super_sup,brutal_purge,brutal_purge}},
    {load,{mc_topology,brutal_purge,brutal_purge}},
    {load,{mc_topology_logics,brutal_purge,brutal_purge}},
    {load,{mc_utils,brutal_purge,brutal_purge}},
    {load,{mc_worker,brutal_purge,brutal_purge}},
    {load,{mc_worker_api,brutal_purge,brutal_purge}},
    {load,{mc_worker_logic,brutal_purge,brutal_purge}},
    {load,{mongo_api,brutal_purge,brutal_purge}},
    {load,{mongo_app,brutal_purge,brutal_purge}},
    {load,{mongo_id_server,brutal_purge,brutal_purge}},
    {load,{mongo_protocol,brutal_purge,brutal_purge}},
    {load,{mongoc,brutal_purge,brutal_purge}},
    {apply,{application,start,[mongodb,permanent]}},
    {load,{grpc_utils,brutal_purge,brutal_purge}},
    {load,{grpc_client,brutal_purge,soft_purge}},
    {load,{grpc_stream,brutal_purge,soft_purge}},
    {apply,{application,stop,[emqx_exhook]}},
    {remove,{emqx_exhook,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_app,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_cli,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_handler,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_pb,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_server,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_sup,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_v_1_hook_provider_bhvr,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_v_1_hook_provider_client,brutal_purge,brutal_purge}},
    {purge,
        [emqx_exhook,emqx_exhook_app,emqx_exhook_cli,emqx_exhook_handler,
         emqx_exhook_pb,emqx_exhook_server,emqx_exhook_sup,
         emqx_exhook_v_1_hook_provider_bhvr,
         emqx_exhook_v_1_hook_provider_client]},
    {load,{emqx_exhook,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_app,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_cli,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_handler,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_mngr,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_pb,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_server,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_sup,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_v_1_hook_provider_bhvr,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_v_1_hook_provider_client,brutal_purge,brutal_purge}},
    {apply,{application,load,[emqx_exhook]}},
    {load,{emqx_exproto_gsvr,brutal_purge,soft_purge}},
    {load,{emqx_exproto_gcli,brutal_purge,soft_purge}},
    {load,{emqx_exproto_conn,brutal_purge,soft_purge}},
    {load,{emqx_exproto_channel,brutal_purge,soft_purge}},
    {load,{minirest,brutal_purge,soft_purge}},
    {load,{minirest_handler,brutal_purge,soft_purge}},
    {apply,{minirest,stop_http,['http:management']}},
    {apply,{minirest,stop_http,['https:management']}},
    {apply,{application,stop,[emqx_management]}},
    {remove,{emqx_mgmt,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_acl,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_alarms,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_apps,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_banned,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_brokers,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_clients,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_data,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_listeners,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_metrics,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_nodes,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_plugins,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_pubsub,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_routes,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_stats,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_subscriptions,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_app,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_auth,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_cli,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_data_backup,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_http,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_sup,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_util,brutal_purge,brutal_purge}},
    {purge,
        [emqx_mgmt,emqx_mgmt_api,emqx_mgmt_api_acl,emqx_mgmt_api_alarms,
         emqx_mgmt_api_apps,emqx_mgmt_api_banned,emqx_mgmt_api_brokers,
         emqx_mgmt_api_clients,emqx_mgmt_api_data,emqx_mgmt_api_listeners,
         emqx_mgmt_api_metrics,emqx_mgmt_api_nodes,emqx_mgmt_api_plugins,
         emqx_mgmt_api_pubsub,emqx_mgmt_api_routes,emqx_mgmt_api_stats,
         emqx_mgmt_api_subscriptions,emqx_mgmt_app,emqx_mgmt_auth,
         emqx_mgmt_cli,emqx_mgmt_data_backup,emqx_mgmt_http,emqx_mgmt_sup,
         emqx_mgmt_util]},
    {load,{emqx_mgmt,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_acl,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_alarms,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_apps,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_banned,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_brokers,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_clients,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_data,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_listeners,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_metrics,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_nodes,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_plugins,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_pubsub,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_routes,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_stats,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_subscriptions,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_app,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_auth,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_cli,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_data_backup,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_http,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_sup,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_util,brutal_purge,brutal_purge}},
    {apply,{application,load,[emqx_management]}},
    {apply,{emqx_rule_engine,load_providers,[]}},
    {apply,{application,stop,[emqx_dashboard]}},
    {remove,{emqx_dashboard,brutal_purge,brutal_purge}},
    {remove,{emqx_dashboard_admin,brutal_purge,brutal_purge}},
    {remove,{emqx_dashboard_api,brutal_purge,brutal_purge}},
    {remove,{emqx_dashboard_app,brutal_purge,brutal_purge}},
    {remove,{emqx_dashboard_cli,brutal_purge,brutal_purge}},
    {remove,{emqx_dashboard_sup,brutal_purge,brutal_purge}},
    {purge,
        [emqx_dashboard,emqx_dashboard_admin,emqx_dashboard_api,
         emqx_dashboard_app,emqx_dashboard_cli,emqx_dashboard_sup]},
    {load,{emqx_dashboard,brutal_purge,brutal_purge}},
    {load,{emqx_dashboard_admin,brutal_purge,brutal_purge}},
    {load,{emqx_dashboard_api,brutal_purge,brutal_purge}},
    {load,{emqx_dashboard_app,brutal_purge,brutal_purge}},
    {load,{emqx_dashboard_cli,brutal_purge,brutal_purge}},
    {load,{emqx_dashboard_sup,brutal_purge,brutal_purge}},
    {apply,{application,load,[emqx_dashboard]}},
    {apply,{emqx_plugins,load,[]}}]},
  {"4.3.0",[],
   [{load_object_code,{ssl,"10.2.4.3",[ssl_cipher]}},
    {load_object_code,
        {emqx,"4.3.12",
            [emqx_vm,emqx_sys_mon,emqx_pqueue,emqx_mqueue,emqx_alarm_handler,
             emqx_misc,emqx_packet,emqx_shared_sub,emqx_logger_jsonfmt,
             emqx_ws_connection,emqx_congestion,emqx_connection,emqx_frame,
             emqx_trie,emqx_cm,emqx_node_dump,emqx_channel,emqx_plugins,
             emqx_logger_textfmt,emqx_metrics,emqx_http_lib,emqx_access_rule,
             emqx_ctl,emqx_rpc,emqx_app]}},
    {load_object_code,
        {ekka,"0.8.1.7",
            [ekka_cluster_dns,ekka_ring,ekka_node_monitor,ekka_autocluster,
             ekka_autoheal,ekka_locker,ekka_httpc,ekka_mnesia]}},
    {load_object_code,{emqx_plugin_libs,"4.3.1",[emqx_plugin_libs_ssl]}},
    {load_object_code,
        {emqx_modules,"4.3.3",
            [emqx_mod_delayed,emqx_mod_presence,emqx_mod_api_topic_metrics]}},
    {load_object_code,{emqx_retainer,"4.3.2",[emqx_retainer]}},
    {load_object_code,{emqtt,"1.2.3.1",[emqtt,emqtt_frame]}},
    {load_object_code,
        {emqx_bridge_mqtt,"4.3.3",
            [emqx_bridge_worker,emqx_bridge_mqtt_actions]}},
    {load_object_code,
        {emqx_sn,"4.3.4",
            [emqx_sn_app,emqx_sn_asleep_timer,emqx_sn_broadcast,emqx_sn_frame,
             emqx_sn_gateway,emqx_sn_registry,emqx_sn_sup]}},
    {load_object_code,{emqx_coap,"4.3.1",[emqx_coap_mqtt_adapter]}},
    {load_object_code,
        {emqx_stomp,"4.3.3",
            [emqx_stomp,emqx_stomp_connection,emqx_stomp_frame,
             emqx_stomp_heartbeat,emqx_stomp_protocol]}},
    {load_object_code,{gun,"1.3.7",[gun,gun_http,gun_http2]}},
    {load_object_code,{ehttpc,"0.1.14",[ehttpc,ehttpc_pool]}},
    {load_object_code,
        {emqx_auth_http,"4.3.3",
            [emqx_acl_http,emqx_auth_http,emqx_auth_http_app,
             emqx_auth_http_cli,emqx_auth_http_sup]}},
    {load_object_code,{ecpool,"0.5.2",[ecpool_worker,ecpool_sup]}},
    {load_object_code,{emqx_auth_jwt,"4.3.1",[emqx_auth_jwt_svr]}},
    {load_object_code,
        {emqx_auth_mnesia,"4.3.4",
            [emqx_acl_mnesia_migrator,emqx_acl_mnesia_db,emqx_auth_mnesia_sup,
             emqx_auth_mnesia_api,emqx_acl_mnesia,emqx_acl_mnesia_api,
             emqx_acl_mnesia_cli]}},
    {load_object_code,
        {emqx_web_hook,"4.3.8",
            [emqx_web_hook_app,emqx_web_hook,emqx_web_hook_actions]}},
    {load_object_code,
        {emqx_rule_engine,"4.3.6",
            [emqx_rule_funcs,emqx_rule_engine,emqx_rule_registry,
             emqx_rule_actions]}},
    {load_object_code,{emqx_telemetry,"4.3.1",[emqx_telemetry]}},
    {load_object_code,
        {lwm2m_coap,"1.1.5",[lwm2m_coap_server_content,lwm2m_coap_channel]}},
    {load_object_code,
        {emqx_lwm2m,"4.3.5",
            [binary_util,emqx_lwm2m_api,emqx_lwm2m_app,emqx_lwm2m_cm,
             emqx_lwm2m_cm_sup,emqx_lwm2m_cmd_handler,
             emqx_lwm2m_coap_resource,emqx_lwm2m_coap_server,emqx_lwm2m_json,
             emqx_lwm2m_message,emqx_lwm2m_protocol,emqx_lwm2m_sup,
             emqx_lwm2m_timer,emqx_lwm2m_tlv,emqx_lwm2m_xml_object,
             emqx_lwm2m_xml_object_db]}},
    {load_object_code,
        {emqx_auth_ldap,"4.3.2",[emqx_acl_ldap,emqx_auth_ldap_cli]}},
    {load_object_code,
        {mongodb,"3.0.10",
            [mc_auth_logic,mc_connection_man,mc_cursor,mc_monitor,mc_pool_sup,
             mc_selecting_logics,mc_server,mc_super_sup,mc_topology,
             mc_topology_logics,mc_utils,mc_worker,mc_worker_api,
             mc_worker_logic,mongo_api,mongo_app,mongo_id_server,
             mongo_protocol,mongoc]}},
    {load_object_code,{grpc,"0.6.3",[grpc_utils,grpc_client,grpc_stream]}},
    {load_object_code,
        {emqx_exhook,"4.3.4",
            [emqx_exhook,emqx_exhook_app,emqx_exhook_cli,emqx_exhook_handler,
             emqx_exhook_mngr,emqx_exhook_pb,emqx_exhook_server,
             emqx_exhook_sup,emqx_exhook_v_1_hook_provider_bhvr,
             emqx_exhook_v_1_hook_provider_client]}},
    {load_object_code,
        {emqx_exproto,"4.3.5",
            [emqx_exproto_gsvr,emqx_exproto_gcli,emqx_exproto_conn,
             emqx_exproto_channel]}},
    {load_object_code,{minirest,"0.3.7",[minirest,minirest_handler]}},
    {load_object_code,
        {emqx_management,"4.3.9",
            [emqx_mgmt,emqx_mgmt_api,emqx_mgmt_api_acl,emqx_mgmt_api_alarms,
             emqx_mgmt_api_apps,emqx_mgmt_api_banned,emqx_mgmt_api_brokers,
             emqx_mgmt_api_clients,emqx_mgmt_api_data,emqx_mgmt_api_listeners,
             emqx_mgmt_api_metrics,emqx_mgmt_api_nodes,emqx_mgmt_api_plugins,
             emqx_mgmt_api_pubsub,emqx_mgmt_api_routes,emqx_mgmt_api_stats,
             emqx_mgmt_api_subscriptions,emqx_mgmt_app,emqx_mgmt_auth,
             emqx_mgmt_cli,emqx_mgmt_data_backup,emqx_mgmt_http,emqx_mgmt_sup,
             emqx_mgmt_util]}},
    {load_object_code,
        {emqx_dashboard,"4.3.7",
            [emqx_dashboard,emqx_dashboard_admin,emqx_dashboard_api,
             emqx_dashboard_app,emqx_dashboard_cli,emqx_dashboard_sup]}},
    point_of_no_return,
    {load,{ssl_cipher,brutal_purge,soft_purge}},
    {load,{emqx_vm,brutal_purge,soft_purge}},
    {load,{emqx_sys_mon,brutal_purge,soft_purge}},
    {load,{emqx_pqueue,brutal_purge,soft_purge}},
    {load,{emqx_mqueue,brutal_purge,soft_purge}},
    {load,{emqx_alarm_handler,brutal_purge,soft_purge}},
    {load,{emqx_misc,brutal_purge,soft_purge}},
    {load,{emqx_packet,brutal_purge,soft_purge}},
    {load,{emqx_shared_sub,brutal_purge,soft_purge}},
    {load,{emqx_logger_jsonfmt,brutal_purge,soft_purge}},
    {load,{emqx_ws_connection,brutal_purge,soft_purge}},
    {load,{emqx_congestion,brutal_purge,soft_purge}},
    {load,{emqx_connection,brutal_purge,soft_purge}},
    {load,{emqx_frame,brutal_purge,soft_purge}},
    {load,{emqx_trie,brutal_purge,soft_purge}},
    {load,{emqx_cm,brutal_purge,soft_purge}},
    {load,{emqx_node_dump,brutal_purge,soft_purge}},
    {load,{emqx_channel,brutal_purge,soft_purge}},
    {load,{emqx_plugins,brutal_purge,soft_purge}},
    {load,{emqx_logger_textfmt,brutal_purge,soft_purge}},
    {load,{emqx_metrics,brutal_purge,soft_purge}},
    {apply,{emqx_metrics,upgrade_retained_delayed_counter_type,[]}},
    {load,{emqx_http_lib,brutal_purge,soft_purge}},
    {load,{emqx_access_rule,brutal_purge,soft_purge}},
    {load,{emqx_ctl,brutal_purge,soft_purge}},
    {load,{emqx_rpc,brutal_purge,soft_purge}},
    {load,{emqx_app,brutal_purge,soft_purge}},
    {load,{ekka_cluster_dns,brutal_purge,soft_purge}},
    {load,{ekka_ring,brutal_purge,soft_purge}},
    {load,{ekka_node_monitor,brutal_purge,soft_purge}},
    {load,{ekka_autocluster,brutal_purge,soft_purge}},
    {load,{ekka_autoheal,brutal_purge,soft_purge}},
    {load,{ekka_locker,brutal_purge,soft_purge}},
    {load,{ekka_httpc,brutal_purge,soft_purge}},
    {load,{ekka_mnesia,brutal_purge,soft_purge}},
    {load,{emqx_plugin_libs_ssl,brutal_purge,soft_purge}},
    {suspend,[emqx_mod_delayed]},
    {load,{emqx_mod_delayed,brutal_purge,brutal_purge}},
    {code_change,up,[{emqx_mod_delayed,[]}]},
    {resume,[emqx_mod_delayed]},
    {load,{emqx_mod_presence,brutal_purge,soft_purge}},
    {load,{emqx_mod_api_topic_metrics,brutal_purge,soft_purge}},
    {load,{emqx_retainer,brutal_purge,soft_purge}},
    {load,{emqtt,brutal_purge,soft_purge}},
    {load,{emqtt_frame,brutal_purge,soft_purge}},
    {load,{emqx_bridge_worker,brutal_purge,soft_purge}},
    {load,{emqx_bridge_mqtt_actions,brutal_purge,soft_purge}},
    {apply,{application,stop,[emqx_sn]}},
    {remove,{emqx_sn_app,brutal_purge,brutal_purge}},
    {remove,{emqx_sn_asleep_timer,brutal_purge,brutal_purge}},
    {remove,{emqx_sn_broadcast,brutal_purge,brutal_purge}},
    {remove,{emqx_sn_frame,brutal_purge,brutal_purge}},
    {remove,{emqx_sn_gateway,brutal_purge,brutal_purge}},
    {remove,{emqx_sn_registry,brutal_purge,brutal_purge}},
    {remove,{emqx_sn_sup,brutal_purge,brutal_purge}},
    {purge,
        [emqx_sn_app,emqx_sn_asleep_timer,emqx_sn_broadcast,emqx_sn_frame,
         emqx_sn_gateway,emqx_sn_registry,emqx_sn_sup]},
    {load,{emqx_sn_app,brutal_purge,brutal_purge}},
    {load,{emqx_sn_asleep_timer,brutal_purge,brutal_purge}},
    {load,{emqx_sn_broadcast,brutal_purge,brutal_purge}},
    {load,{emqx_sn_frame,brutal_purge,brutal_purge}},
    {load,{emqx_sn_gateway,brutal_purge,brutal_purge}},
    {load,{emqx_sn_registry,brutal_purge,brutal_purge}},
    {load,{emqx_sn_sup,brutal_purge,brutal_purge}},
    {apply,{application,load,[emqx_sn]}},
    {load,{emqx_coap_mqtt_adapter,brutal_purge,soft_purge}},
    {apply,{application,stop,[emqx_stomp]}},
    {remove,{emqx_stomp,brutal_purge,brutal_purge}},
    {remove,{emqx_stomp_connection,brutal_purge,brutal_purge}},
    {remove,{emqx_stomp_frame,brutal_purge,brutal_purge}},
    {remove,{emqx_stomp_heartbeat,brutal_purge,brutal_purge}},
    {remove,{emqx_stomp_protocol,brutal_purge,brutal_purge}},
    {purge,
        [emqx_stomp,emqx_stomp_connection,emqx_stomp_frame,
         emqx_stomp_heartbeat,emqx_stomp_protocol]},
    {load,{emqx_stomp,brutal_purge,brutal_purge}},
    {load,{emqx_stomp_connection,brutal_purge,brutal_purge}},
    {load,{emqx_stomp_frame,brutal_purge,brutal_purge}},
    {load,{emqx_stomp_heartbeat,brutal_purge,brutal_purge}},
    {load,{emqx_stomp_protocol,brutal_purge,brutal_purge}},
    {apply,{application,load,[emqx_stomp]}},
    {apply,{emqx_stomp,force_clear_after_app_stoped,[]}},
    {load,{gun,brutal_purge,soft_purge}},
    {load,{gun_http,brutal_purge,soft_purge}},
    {load,{gun_http2,brutal_purge,soft_purge}},
    {suspend,[ehttpc]},
    {load,{ehttpc,brutal_purge,brutal_purge}},
    {code_change,up,[{ehttpc,[]}]},
    {resume,[ehttpc]},
    {load,{ehttpc_pool,brutal_purge,soft_purge}},
    {apply,{application,stop,[emqx_auth_http]}},
    {remove,{emqx_acl_http,brutal_purge,brutal_purge}},
    {remove,{emqx_auth_http,brutal_purge,brutal_purge}},
    {remove,{emqx_auth_http_app,brutal_purge,brutal_purge}},
    {remove,{emqx_auth_http_cli,brutal_purge,brutal_purge}},
    {remove,{emqx_auth_http_sup,brutal_purge,brutal_purge}},
    {purge,
        [emqx_acl_http,emqx_auth_http,emqx_auth_http_app,emqx_auth_http_cli,
         emqx_auth_http_sup]},
    {load,{emqx_acl_http,brutal_purge,brutal_purge}},
    {load,{emqx_auth_http,brutal_purge,brutal_purge}},
    {load,{emqx_auth_http_app,brutal_purge,brutal_purge}},
    {load,{emqx_auth_http_cli,brutal_purge,brutal_purge}},
    {load,{emqx_auth_http_sup,brutal_purge,brutal_purge}},
    {apply,{application,load,[emqx_auth_http]}},
    {load,{ecpool_worker,brutal_purge,soft_purge}},
    {load,{ecpool_sup,brutal_purge,soft_purge}},
    {load,{emqx_auth_jwt_svr,brutal_purge,soft_purge}},
    {load,{emqx_acl_mnesia_db,brutal_purge,brutal_purge}},
    {load,{emqx_acl_mnesia_migrator,brutal_purge,brutal_purge}},
    {suspend,[emqx_auth_mnesia_sup]},
    {load,{emqx_auth_mnesia_sup,brutal_purge,brutal_purge}},
    {code_change,up,[{emqx_auth_mnesia_sup,[]}]},
    {resume,[emqx_auth_mnesia_sup]},
    {apply,{emqx_acl_mnesia_migrator,start_supervised,[]}},
    {load,{emqx_auth_mnesia_api,brutal_purge,soft_purge}},
    {load,{emqx_acl_mnesia,brutal_purge,soft_purge}},
    {load,{emqx_acl_mnesia_api,brutal_purge,soft_purge}},
    {load,{emqx_acl_mnesia_cli,brutal_purge,soft_purge}},
    {apply,{application,stop,[emqx_web_hook]}},
    {load,{emqx_web_hook_app,brutal_purge,soft_purge}},
    {load,{emqx_web_hook,brutal_purge,soft_purge}},
    {load,{emqx_web_hook_actions,brutal_purge,soft_purge}},
    {load,{emqx_rule_funcs,brutal_purge,soft_purge}},
    {load,{emqx_rule_engine,brutal_purge,soft_purge}},
    {load,{emqx_rule_registry,brutal_purge,soft_purge}},
    {apply,{emqx_stats,cancel_update,[rule_registery_stats]}},
    {load,{emqx_rule_actions,brutal_purge,soft_purge}},
    {load,{emqx_telemetry,brutal_purge,soft_purge}},
    {load,{lwm2m_coap_server_content,brutal_purge,soft_purge}},
    {load,{lwm2m_coap_channel,brutal_purge,soft_purge}},
    {apply,{application,stop,[emqx_lwm2m]}},
    {remove,{binary_util,brutal_purge,brutal_purge}},
    {remove,{emqx_lwm2m_app,brutal_purge,brutal_purge}},
    {remove,{emqx_lwm2m_cmd_handler,brutal_purge,brutal_purge}},
    {remove,{emqx_lwm2m_coap_resource,brutal_purge,brutal_purge}},
    {remove,{emqx_lwm2m_coap_server,brutal_purge,brutal_purge}},
    {remove,{emqx_lwm2m_json,brutal_purge,brutal_purge}},
    {remove,{emqx_lwm2m_message,brutal_purge,brutal_purge}},
    {remove,{emqx_lwm2m_protocol,brutal_purge,brutal_purge}},
    {remove,{emqx_lwm2m_sup,brutal_purge,brutal_purge}},
    {remove,{emqx_lwm2m_timer,brutal_purge,brutal_purge}},
    {remove,{emqx_lwm2m_tlv,brutal_purge,brutal_purge}},
    {remove,{emqx_lwm2m_xml_object,brutal_purge,brutal_purge}},
    {remove,{emqx_lwm2m_xml_object_db,brutal_purge,brutal_purge}},
    {purge,
        [binary_util,emqx_lwm2m_app,emqx_lwm2m_cmd_handler,
         emqx_lwm2m_coap_resource,emqx_lwm2m_coap_server,emqx_lwm2m_json,
         emqx_lwm2m_message,emqx_lwm2m_protocol,emqx_lwm2m_sup,
         emqx_lwm2m_timer,emqx_lwm2m_tlv,emqx_lwm2m_xml_object,
         emqx_lwm2m_xml_object_db]},
    {load,{binary_util,brutal_purge,brutal_purge}},
    {load,{emqx_lwm2m_api,brutal_purge,brutal_purge}},
    {load,{emqx_lwm2m_app,brutal_purge,brutal_purge}},
    {load,{emqx_lwm2m_cm,brutal_purge,brutal_purge}},
    {load,{emqx_lwm2m_cm_sup,brutal_purge,brutal_purge}},
    {load,{emqx_lwm2m_cmd_handler,brutal_purge,brutal_purge}},
    {load,{emqx_lwm2m_coap_resource,brutal_purge,brutal_purge}},
    {load,{emqx_lwm2m_coap_server,brutal_purge,brutal_purge}},
    {load,{emqx_lwm2m_json,brutal_purge,brutal_purge}},
    {load,{emqx_lwm2m_message,brutal_purge,brutal_purge}},
    {load,{emqx_lwm2m_protocol,brutal_purge,brutal_purge}},
    {load,{emqx_lwm2m_sup,brutal_purge,brutal_purge}},
    {load,{emqx_lwm2m_timer,brutal_purge,brutal_purge}},
    {load,{emqx_lwm2m_tlv,brutal_purge,brutal_purge}},
    {load,{emqx_lwm2m_xml_object,brutal_purge,brutal_purge}},
    {load,{emqx_lwm2m_xml_object_db,brutal_purge,brutal_purge}},
    {apply,{application,load,[emqx_lwm2m]}},
    {load,{emqx_acl_ldap,brutal_purge,soft_purge}},
    {load,{emqx_auth_ldap_cli,brutal_purge,soft_purge}},
    {apply,{application,stop,[mongodb]}},
    {remove,{mc_auth_logic,brutal_purge,brutal_purge}},
    {remove,{mc_connection_man,brutal_purge,brutal_purge}},
    {remove,{mc_cursor,brutal_purge,brutal_purge}},
    {remove,{mc_monitor,brutal_purge,brutal_purge}},
    {remove,{mc_pool_sup,brutal_purge,brutal_purge}},
    {remove,{mc_selecting_logics,brutal_purge,brutal_purge}},
    {remove,{mc_server,brutal_purge,brutal_purge}},
    {remove,{mc_super_sup,brutal_purge,brutal_purge}},
    {remove,{mc_topology,brutal_purge,brutal_purge}},
    {remove,{mc_topology_logics,brutal_purge,brutal_purge}},
    {remove,{mc_utils,brutal_purge,brutal_purge}},
    {remove,{mc_worker,brutal_purge,brutal_purge}},
    {remove,{mc_worker_api,brutal_purge,brutal_purge}},
    {remove,{mc_worker_logic,brutal_purge,brutal_purge}},
    {remove,{mongo_api,brutal_purge,brutal_purge}},
    {remove,{mongo_app,brutal_purge,brutal_purge}},
    {remove,{mongo_id_server,brutal_purge,brutal_purge}},
    {remove,{mongo_protocol,brutal_purge,brutal_purge}},
    {remove,{mongoc,brutal_purge,brutal_purge}},
    {purge,
        [mc_auth_logic,mc_connection_man,mc_cursor,mc_monitor,mc_pool_sup,
         mc_selecting_logics,mc_server,mc_super_sup,mc_topology,
         mc_topology_logics,mc_utils,mc_worker,mc_worker_api,mc_worker_logic,
         mongo_api,mongo_app,mongo_id_server,mongo_protocol,mongoc]},
    {load,{mc_auth_logic,brutal_purge,brutal_purge}},
    {load,{mc_connection_man,brutal_purge,brutal_purge}},
    {load,{mc_cursor,brutal_purge,brutal_purge}},
    {load,{mc_monitor,brutal_purge,brutal_purge}},
    {load,{mc_pool_sup,brutal_purge,brutal_purge}},
    {load,{mc_selecting_logics,brutal_purge,brutal_purge}},
    {load,{mc_server,brutal_purge,brutal_purge}},
    {load,{mc_super_sup,brutal_purge,brutal_purge}},
    {load,{mc_topology,brutal_purge,brutal_purge}},
    {load,{mc_topology_logics,brutal_purge,brutal_purge}},
    {load,{mc_utils,brutal_purge,brutal_purge}},
    {load,{mc_worker,brutal_purge,brutal_purge}},
    {load,{mc_worker_api,brutal_purge,brutal_purge}},
    {load,{mc_worker_logic,brutal_purge,brutal_purge}},
    {load,{mongo_api,brutal_purge,brutal_purge}},
    {load,{mongo_app,brutal_purge,brutal_purge}},
    {load,{mongo_id_server,brutal_purge,brutal_purge}},
    {load,{mongo_protocol,brutal_purge,brutal_purge}},
    {load,{mongoc,brutal_purge,brutal_purge}},
    {apply,{application,start,[mongodb,permanent]}},
    {load,{grpc_utils,brutal_purge,brutal_purge}},
    {load,{grpc_client,brutal_purge,soft_purge}},
    {load,{grpc_stream,brutal_purge,soft_purge}},
    {apply,{application,stop,[emqx_exhook]}},
    {remove,{emqx_exhook,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_app,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_cli,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_handler,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_pb,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_server,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_sup,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_v_1_hook_provider_bhvr,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_v_1_hook_provider_client,brutal_purge,brutal_purge}},
    {purge,
        [emqx_exhook,emqx_exhook_app,emqx_exhook_cli,emqx_exhook_handler,
         emqx_exhook_pb,emqx_exhook_server,emqx_exhook_sup,
         emqx_exhook_v_1_hook_provider_bhvr,
         emqx_exhook_v_1_hook_provider_client]},
    {load,{emqx_exhook,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_app,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_cli,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_handler,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_mngr,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_pb,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_server,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_sup,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_v_1_hook_provider_bhvr,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_v_1_hook_provider_client,brutal_purge,brutal_purge}},
    {apply,{application,load,[emqx_exhook]}},
    {load,{emqx_exproto_gsvr,brutal_purge,soft_purge}},
    {load,{emqx_exproto_gcli,brutal_purge,soft_purge}},
    {load,{emqx_exproto_conn,brutal_purge,soft_purge}},
    {load,{emqx_exproto_channel,brutal_purge,soft_purge}},
    {load,{minirest,brutal_purge,soft_purge}},
    {load,{minirest_handler,brutal_purge,soft_purge}},
    {apply,{minirest,stop_http,['http:management']}},
    {apply,{minirest,stop_http,['https:management']}},
    {apply,{application,stop,[emqx_management]}},
    {remove,{emqx_mgmt,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_acl,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_alarms,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_apps,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_banned,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_brokers,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_clients,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_data,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_listeners,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_metrics,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_nodes,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_plugins,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_pubsub,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_routes,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_stats,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_subscriptions,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_app,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_auth,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_cli,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_data_backup,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_http,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_sup,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_util,brutal_purge,brutal_purge}},
    {purge,
        [emqx_mgmt,emqx_mgmt_api,emqx_mgmt_api_acl,emqx_mgmt_api_alarms,
         emqx_mgmt_api_apps,emqx_mgmt_api_banned,emqx_mgmt_api_brokers,
         emqx_mgmt_api_clients,emqx_mgmt_api_data,emqx_mgmt_api_listeners,
         emqx_mgmt_api_metrics,emqx_mgmt_api_nodes,emqx_mgmt_api_plugins,
         emqx_mgmt_api_pubsub,emqx_mgmt_api_routes,emqx_mgmt_api_stats,
         emqx_mgmt_api_subscriptions,emqx_mgmt_app,emqx_mgmt_auth,
         emqx_mgmt_cli,emqx_mgmt_data_backup,emqx_mgmt_http,emqx_mgmt_sup,
         emqx_mgmt_util]},
    {load,{emqx_mgmt,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_acl,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_alarms,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_apps,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_banned,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_brokers,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_clients,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_data,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_listeners,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_metrics,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_nodes,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_plugins,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_pubsub,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_routes,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_stats,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_subscriptions,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_app,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_auth,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_cli,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_data_backup,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_http,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_sup,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_util,brutal_purge,brutal_purge}},
    {apply,{application,load,[emqx_management]}},
    {apply,{emqx_rule_engine,load_providers,[]}},
    {apply,{application,stop,[emqx_dashboard]}},
    {remove,{emqx_dashboard,brutal_purge,brutal_purge}},
    {remove,{emqx_dashboard_admin,brutal_purge,brutal_purge}},
    {remove,{emqx_dashboard_api,brutal_purge,brutal_purge}},
    {remove,{emqx_dashboard_app,brutal_purge,brutal_purge}},
    {remove,{emqx_dashboard_cli,brutal_purge,brutal_purge}},
    {remove,{emqx_dashboard_sup,brutal_purge,brutal_purge}},
    {purge,
        [emqx_dashboard,emqx_dashboard_admin,emqx_dashboard_api,
         emqx_dashboard_app,emqx_dashboard_cli,emqx_dashboard_sup]},
    {load,{emqx_dashboard,brutal_purge,brutal_purge}},
    {load,{emqx_dashboard_admin,brutal_purge,brutal_purge}},
    {load,{emqx_dashboard_api,brutal_purge,brutal_purge}},
    {load,{emqx_dashboard_app,brutal_purge,brutal_purge}},
    {load,{emqx_dashboard_cli,brutal_purge,brutal_purge}},
    {load,{emqx_dashboard_sup,brutal_purge,brutal_purge}},
    {apply,{application,load,[emqx_dashboard]}},
    {apply,{emqx_plugins,load,[]}}]}],
 [{"4.3.2",[],
   [{load_object_code,{ssl,"10.2.4.2",[ssl_cipher]}},
    {load_object_code,{cuttlefish,"3.3.5",[cuttlefish_duration_parse]}},
    {load_object_code,
        {emqx,"4.3.2",
            [emqx_vm,emqx_sys_mon,emqx_pqueue,emqx_mqueue,emqx_alarm_handler,
             emqx_misc,emqx_packet,emqx_shared_sub,emqx_ws_connection,
             emqx_http_lib,emqx_channel,emqx_connection,emqx_cm,
             emqx_access_rule,emqx_ctl,emqx_frame,emqx_rpc,emqx_app]}},
    {load_object_code,
        {ekka,"0.8.1",
            [ekka_cluster_dns,ekka_ring,ekka_node_monitor,ekka_autocluster,
             ekka_autoheal,ekka_locker,ekka_httpc,ekka_mnesia]}},
    {load_object_code,{emqx_plugin_libs,"4.3.0",[emqx_plugin_libs_ssl]}},
    {load_object_code,{emqx_modules,"4.3.2",[emqx_mod_presence]}},
    {load_object_code,{emqx_retainer,"4.3.1",[emqx_retainer]}},
    {load_object_code,{emqtt,"1.2.3",[emqtt,emqtt_frame]}},
    {load_object_code,{emqx_bridge_mqtt,"4.3.1",[emqx_bridge_mqtt_actions]}},
    {load_object_code,
        {emqx_sn,"4.3.1",
            [emqx_sn_app,emqx_sn_asleep_timer,emqx_sn_broadcast,emqx_sn_frame,
             emqx_sn_gateway,emqx_sn_registry,emqx_sn_sup]}},
    {load_object_code,{emqx_coap,"4.3.0",[emqx_coap_mqtt_adapter]}},
    {load_object_code,
        {emqx_stomp,"4.3.0",
            [emqx_stomp,emqx_stomp_connection,emqx_stomp_frame,
             emqx_stomp_heartbeat,emqx_stomp_protocol]}},
    {load_object_code,{gun,"1.3.5",[gun]}},
    {load_object_code,{ehttpc,"0.1.5",[ehttpc,ehttpc_pool]}},
    {load_object_code,
        {emqx_auth_http,"4.3.0",
            [emqx_acl_http,emqx_auth_http,emqx_auth_http_app,
             emqx_auth_http_cli,emqx_auth_http_sup]}},
    {load_object_code,{ecpool,"0.5.1",[ecpool_worker,ecpool_sup]}},
    {load_object_code,{emqx_auth_jwt,"4.3.0",[emqx_auth_jwt_svr]}},
    {load_object_code,
        {emqx_auth_mnesia,"4.3.0",
            [emqx_auth_mnesia_sup,emqx_acl_mnesia_cli,emqx_acl_mnesia_api,
             emqx_auth_mnesia_api,emqx_acl_mnesia]}},
    {load_object_code,
        {emqx_web_hook,"4.3.0",
            [emqx_web_hook_app,emqx_web_hook,emqx_web_hook_actions]}},
    {load_object_code,
        {emqx_rule_engine,"4.3.2",
            [emqx_rule_registry,emqx_rule_engine,emqx_rule_actions]}},
    {load_object_code,{lwm2m_coap,"1.1.2",[lwm2m_coap_channel]}},
    {load_object_code,
        {emqx_lwm2m,"4.3.1",
            [binary_util,emqx_lwm2m_app,emqx_lwm2m_cmd_handler,
             emqx_lwm2m_coap_resource,emqx_lwm2m_coap_server,emqx_lwm2m_json,
             emqx_lwm2m_message,emqx_lwm2m_protocol,emqx_lwm2m_sup,
             emqx_lwm2m_timer,emqx_lwm2m_tlv,emqx_lwm2m_xml_object,
             emqx_lwm2m_xml_object_db]}},
    {load_object_code,
        {emqx_auth_ldap,"4.3.0",[emqx_acl_ldap,emqx_auth_ldap_cli]}},
    {load_object_code,
        {mongodb,"3.0.0",
            [mc_auth_logic,mc_connection_man,mc_cursor,mc_monitor,mc_pool_sup,
             mc_selecting_logics,mc_server,mc_super_sup,mc_topology,
             mc_topology_logics,mc_utils,mc_worker,mc_worker_api,
             mc_worker_logic,mongo_api,mongo_app,mongo_id_server,
             mongo_protocol,mongoc]}},
    {load_object_code,{grpc,"0.6.2",[grpc_client,grpc_stream]}},
    {load_object_code,
        {emqx_exhook,"4.3.0",
            [emqx_exhook,emqx_exhook_app,emqx_exhook_cli,emqx_exhook_handler,
             emqx_exhook_pb,emqx_exhook_server,emqx_exhook_sup,
             emqx_exhook_v_1_hook_provider_bhvr,
             emqx_exhook_v_1_hook_provider_client]}},
    {load_object_code,
        {emqx_exproto,"4.3.0",
            [emqx_exproto_gsvr,emqx_exproto_gcli,emqx_exproto_conn,
             emqx_exproto_channel]}},
    {load_object_code,{minirest,"0.3.5",[minirest,minirest_handler]}},
    {load_object_code,
        {emqx_management,"4.3.2",
            [emqx_mgmt,emqx_mgmt_api,emqx_mgmt_api_acl,emqx_mgmt_api_alarms,
             emqx_mgmt_api_apps,emqx_mgmt_api_banned,emqx_mgmt_api_brokers,
             emqx_mgmt_api_clients,emqx_mgmt_api_data,emqx_mgmt_api_listeners,
             emqx_mgmt_api_metrics,emqx_mgmt_api_nodes,emqx_mgmt_api_plugins,
             emqx_mgmt_api_pubsub,emqx_mgmt_api_routes,emqx_mgmt_api_stats,
             emqx_mgmt_api_subscriptions,emqx_mgmt_app,emqx_mgmt_auth,
             emqx_mgmt_cli,emqx_mgmt_data_backup,emqx_mgmt_http,emqx_mgmt_sup,
             emqx_mgmt_util]}},
    {load_object_code,
        {emqx_dashboard,"4.3.0",
            [emqx_dashboard,emqx_dashboard_admin,emqx_dashboard_api,
             emqx_dashboard_app,emqx_dashboard_cli,emqx_dashboard_sup]}},
    point_of_no_return,
    {load,{ssl_cipher,brutal_purge,soft_purge}},
    {load,{cuttlefish_duration_parse,brutal_purge,soft_purge}},
    {load,{emqx_vm,brutal_purge,soft_purge}},
    {load,{emqx_sys_mon,brutal_purge,soft_purge}},
    {load,{emqx_pqueue,brutal_purge,soft_purge}},
    {load,{emqx_mqueue,brutal_purge,soft_purge}},
    {load,{emqx_alarm_handler,brutal_purge,soft_purge}},
    {load,{emqx_misc,brutal_purge,soft_purge}},
    {load,{emqx_packet,brutal_purge,soft_purge}},
    {load,{emqx_shared_sub,brutal_purge,soft_purge}},
    {load,{emqx_ws_connection,brutal_purge,soft_purge}},
    {load,{emqx_http_lib,brutal_purge,soft_purge}},
    {load,{emqx_channel,brutal_purge,soft_purge}},
    {load,{emqx_connection,brutal_purge,soft_purge}},
    {load,{emqx_cm,brutal_purge,soft_purge}},
    {load,{emqx_access_rule,brutal_purge,soft_purge}},
    {load,{emqx_ctl,brutal_purge,soft_purge}},
    {load,{emqx_frame,brutal_purge,soft_purge}},
    {load,{emqx_rpc,brutal_purge,soft_purge}},
    {load,{emqx_app,brutal_purge,soft_purge}},
    {load,{ekka_cluster_dns,brutal_purge,soft_purge}},
    {load,{ekka_ring,brutal_purge,soft_purge}},
    {load,{ekka_node_monitor,brutal_purge,soft_purge}},
    {load,{ekka_autocluster,brutal_purge,soft_purge}},
    {load,{ekka_autoheal,brutal_purge,soft_purge}},
    {load,{ekka_locker,brutal_purge,soft_purge}},
    {load,{ekka_httpc,brutal_purge,soft_purge}},
    {load,{ekka_mnesia,brutal_purge,soft_purge}},
    {load,{emqx_plugin_libs_ssl,brutal_purge,soft_purge}},
    {load,{emqx_mod_presence,brutal_purge,soft_purge}},
    {load,{emqx_retainer,brutal_purge,soft_purge}},
    {load,{emqtt,brutal_purge,soft_purge}},
    {load,{emqtt_frame,brutal_purge,soft_purge}},
    {load,{emqx_bridge_mqtt_actions,brutal_purge,soft_purge}},
    {apply,{application,stop,[emqx_sn]}},
    {remove,{emqx_sn_app,brutal_purge,brutal_purge}},
    {remove,{emqx_sn_asleep_timer,brutal_purge,brutal_purge}},
    {remove,{emqx_sn_broadcast,brutal_purge,brutal_purge}},
    {remove,{emqx_sn_frame,brutal_purge,brutal_purge}},
    {remove,{emqx_sn_gateway,brutal_purge,brutal_purge}},
    {remove,{emqx_sn_registry,brutal_purge,brutal_purge}},
    {remove,{emqx_sn_sup,brutal_purge,brutal_purge}},
    {purge,
        [emqx_sn_app,emqx_sn_asleep_timer,emqx_sn_broadcast,emqx_sn_frame,
         emqx_sn_gateway,emqx_sn_registry,emqx_sn_sup]},
    {load,{emqx_sn_app,brutal_purge,brutal_purge}},
    {load,{emqx_sn_asleep_timer,brutal_purge,brutal_purge}},
    {load,{emqx_sn_broadcast,brutal_purge,brutal_purge}},
    {load,{emqx_sn_frame,brutal_purge,brutal_purge}},
    {load,{emqx_sn_gateway,brutal_purge,brutal_purge}},
    {load,{emqx_sn_registry,brutal_purge,brutal_purge}},
    {load,{emqx_sn_sup,brutal_purge,brutal_purge}},
    {apply,{application,load,[emqx_sn]}},
    {load,{emqx_coap_mqtt_adapter,brutal_purge,soft_purge}},
    {apply,{application,stop,[emqx_stomp]}},
    {remove,{emqx_stomp,brutal_purge,brutal_purge}},
    {remove,{emqx_stomp_connection,brutal_purge,brutal_purge}},
    {remove,{emqx_stomp_frame,brutal_purge,brutal_purge}},
    {remove,{emqx_stomp_heartbeat,brutal_purge,brutal_purge}},
    {remove,{emqx_stomp_protocol,brutal_purge,brutal_purge}},
    {purge,
        [emqx_stomp,emqx_stomp_connection,emqx_stomp_frame,
         emqx_stomp_heartbeat,emqx_stomp_protocol]},
    {load,{emqx_stomp,brutal_purge,brutal_purge}},
    {load,{emqx_stomp_connection,brutal_purge,brutal_purge}},
    {load,{emqx_stomp_frame,brutal_purge,brutal_purge}},
    {load,{emqx_stomp_heartbeat,brutal_purge,brutal_purge}},
    {load,{emqx_stomp_protocol,brutal_purge,brutal_purge}},
    {apply,{application,load,[emqx_stomp]}},
    {load,{gun,brutal_purge,soft_purge}},
    {suspend,[ehttpc]},
    {code_change,down,[{ehttpc,[no_enable_pipelining]}]},
    {load,{ehttpc,brutal_purge,brutal_purge}},
    {resume,[ehttpc]},
    {load,{ehttpc_pool,brutal_purge,soft_purge}},
    {apply,{application,stop,[emqx_auth_http]}},
    {remove,{emqx_acl_http,brutal_purge,brutal_purge}},
    {remove,{emqx_auth_http,brutal_purge,brutal_purge}},
    {remove,{emqx_auth_http_app,brutal_purge,brutal_purge}},
    {remove,{emqx_auth_http_cli,brutal_purge,brutal_purge}},
    {remove,{emqx_auth_http_sup,brutal_purge,brutal_purge}},
    {purge,
        [emqx_acl_http,emqx_auth_http,emqx_auth_http_app,emqx_auth_http_cli,
         emqx_auth_http_sup]},
    {load,{emqx_acl_http,brutal_purge,brutal_purge}},
    {load,{emqx_auth_http,brutal_purge,brutal_purge}},
    {load,{emqx_auth_http_app,brutal_purge,brutal_purge}},
    {load,{emqx_auth_http_cli,brutal_purge,brutal_purge}},
    {load,{emqx_auth_http_sup,brutal_purge,brutal_purge}},
    {apply,{application,load,[emqx_auth_http]}},
    {load,{ecpool_worker,brutal_purge,soft_purge}},
    {load,{ecpool_sup,brutal_purge,soft_purge}},
    {load,{emqx_auth_jwt_svr,brutal_purge,soft_purge}},
    {apply,{emqx_acl_mnesia_migrator,stop_supervised,[]}},
    {suspend,[emqx_auth_mnesia_sup]},
    {load,{emqx_auth_mnesia_sup,brutal_purge,brutal_purge}},
    {code_change,down,[{emqx_auth_mnesia_sup,[]}]},
    {resume,[emqx_auth_mnesia_sup]},
    {load,{emqx_acl_mnesia_cli,brutal_purge,soft_purge}},
    {load,{emqx_acl_mnesia_api,brutal_purge,soft_purge}},
    {load,{emqx_auth_mnesia_api,brutal_purge,soft_purge}},
    {load,{emqx_acl_mnesia,brutal_purge,soft_purge}},
    {remove,{emqx_acl_mnesia_migrator,brutal_purge,brutal_purge}},
    {purge,[emqx_acl_mnesia_migrator]},
    {remove,{emqx_acl_mnesia_db,brutal_purge,brutal_purge}},
    {purge,[emqx_acl_mnesia_db]},
    {apply,{application,stop,[emqx_web_hook]}},
    {load,{emqx_web_hook_app,brutal_purge,soft_purge}},
    {load,{emqx_web_hook,brutal_purge,soft_purge}},
    {load,{emqx_web_hook_actions,brutal_purge,soft_purge}},
    {load,{emqx_rule_registry,brutal_purge,soft_purge}},
    {apply,{emqx_stats,cancel_update,[rule_registery_stats]}},
    {load,{emqx_rule_engine,brutal_purge,soft_purge}},
    {load,{emqx_rule_actions,brutal_purge,soft_purge}},
    {load,{lwm2m_coap_channel,brutal_purge,soft_purge}},
    {apply,{application,stop,[emqx_lwm2m]}},
    {remove,{binary_util,brutal_purge,brutal_purge}},
    {remove,{emqx_lwm2m_api,brutal_purge,brutal_purge}},
    {remove,{emqx_lwm2m_app,brutal_purge,brutal_purge}},
    {remove,{emqx_lwm2m_cm,brutal_purge,brutal_purge}},
    {remove,{emqx_lwm2m_cm_sup,brutal_purge,brutal_purge}},
    {remove,{emqx_lwm2m_cmd_handler,brutal_purge,brutal_purge}},
    {remove,{emqx_lwm2m_coap_resource,brutal_purge,brutal_purge}},
    {remove,{emqx_lwm2m_coap_server,brutal_purge,brutal_purge}},
    {remove,{emqx_lwm2m_json,brutal_purge,brutal_purge}},
    {remove,{emqx_lwm2m_message,brutal_purge,brutal_purge}},
    {remove,{emqx_lwm2m_protocol,brutal_purge,brutal_purge}},
    {remove,{emqx_lwm2m_sup,brutal_purge,brutal_purge}},
    {remove,{emqx_lwm2m_timer,brutal_purge,brutal_purge}},
    {remove,{emqx_lwm2m_tlv,brutal_purge,brutal_purge}},
    {remove,{emqx_lwm2m_xml_object,brutal_purge,brutal_purge}},
    {remove,{emqx_lwm2m_xml_object_db,brutal_purge,brutal_purge}},
    {purge,
        [binary_util,emqx_lwm2m_api,emqx_lwm2m_app,emqx_lwm2m_cm,
         emqx_lwm2m_cm_sup,emqx_lwm2m_cmd_handler,emqx_lwm2m_coap_resource,
         emqx_lwm2m_coap_server,emqx_lwm2m_json,emqx_lwm2m_message,
         emqx_lwm2m_protocol,emqx_lwm2m_sup,emqx_lwm2m_timer,emqx_lwm2m_tlv,
         emqx_lwm2m_xml_object,emqx_lwm2m_xml_object_db]},
    {load,{binary_util,brutal_purge,brutal_purge}},
    {load,{emqx_lwm2m_app,brutal_purge,brutal_purge}},
    {load,{emqx_lwm2m_cmd_handler,brutal_purge,brutal_purge}},
    {load,{emqx_lwm2m_coap_resource,brutal_purge,brutal_purge}},
    {load,{emqx_lwm2m_coap_server,brutal_purge,brutal_purge}},
    {load,{emqx_lwm2m_json,brutal_purge,brutal_purge}},
    {load,{emqx_lwm2m_message,brutal_purge,brutal_purge}},
    {load,{emqx_lwm2m_protocol,brutal_purge,brutal_purge}},
    {load,{emqx_lwm2m_sup,brutal_purge,brutal_purge}},
    {load,{emqx_lwm2m_timer,brutal_purge,brutal_purge}},
    {load,{emqx_lwm2m_tlv,brutal_purge,brutal_purge}},
    {load,{emqx_lwm2m_xml_object,brutal_purge,brutal_purge}},
    {load,{emqx_lwm2m_xml_object_db,brutal_purge,brutal_purge}},
    {apply,{application,load,[emqx_lwm2m]}},
    {load,{emqx_acl_ldap,brutal_purge,soft_purge}},
    {load,{emqx_auth_ldap_cli,brutal_purge,soft_purge}},
    {apply,{application,stop,[mongodb]}},
    {remove,{mc_auth_logic,brutal_purge,brutal_purge}},
    {remove,{mc_connection_man,brutal_purge,brutal_purge}},
    {remove,{mc_cursor,brutal_purge,brutal_purge}},
    {remove,{mc_monitor,brutal_purge,brutal_purge}},
    {remove,{mc_pool_sup,brutal_purge,brutal_purge}},
    {remove,{mc_selecting_logics,brutal_purge,brutal_purge}},
    {remove,{mc_server,brutal_purge,brutal_purge}},
    {remove,{mc_super_sup,brutal_purge,brutal_purge}},
    {remove,{mc_topology,brutal_purge,brutal_purge}},
    {remove,{mc_topology_logics,brutal_purge,brutal_purge}},
    {remove,{mc_utils,brutal_purge,brutal_purge}},
    {remove,{mc_worker,brutal_purge,brutal_purge}},
    {remove,{mc_worker_api,brutal_purge,brutal_purge}},
    {remove,{mc_worker_logic,brutal_purge,brutal_purge}},
    {remove,{mongo_api,brutal_purge,brutal_purge}},
    {remove,{mongo_app,brutal_purge,brutal_purge}},
    {remove,{mongo_id_server,brutal_purge,brutal_purge}},
    {remove,{mongo_protocol,brutal_purge,brutal_purge}},
    {remove,{mongoc,brutal_purge,brutal_purge}},
    {purge,
        [mc_auth_logic,mc_connection_man,mc_cursor,mc_monitor,mc_pool_sup,
         mc_selecting_logics,mc_server,mc_super_sup,mc_topology,
         mc_topology_logics,mc_utils,mc_worker,mc_worker_api,mc_worker_logic,
         mongo_api,mongo_app,mongo_id_server,mongo_protocol,mongoc]},
    {load,{mc_auth_logic,brutal_purge,brutal_purge}},
    {load,{mc_connection_man,brutal_purge,brutal_purge}},
    {load,{mc_cursor,brutal_purge,brutal_purge}},
    {load,{mc_monitor,brutal_purge,brutal_purge}},
    {load,{mc_pool_sup,brutal_purge,brutal_purge}},
    {load,{mc_selecting_logics,brutal_purge,brutal_purge}},
    {load,{mc_server,brutal_purge,brutal_purge}},
    {load,{mc_super_sup,brutal_purge,brutal_purge}},
    {load,{mc_topology,brutal_purge,brutal_purge}},
    {load,{mc_topology_logics,brutal_purge,brutal_purge}},
    {load,{mc_utils,brutal_purge,brutal_purge}},
    {load,{mc_worker,brutal_purge,brutal_purge}},
    {load,{mc_worker_api,brutal_purge,brutal_purge}},
    {load,{mc_worker_logic,brutal_purge,brutal_purge}},
    {load,{mongo_api,brutal_purge,brutal_purge}},
    {load,{mongo_app,brutal_purge,brutal_purge}},
    {load,{mongo_id_server,brutal_purge,brutal_purge}},
    {load,{mongo_protocol,brutal_purge,brutal_purge}},
    {load,{mongoc,brutal_purge,brutal_purge}},
    {apply,{application,start,[mongodb,permanent]}},
    {remove,{grpc_utils,brutal_purge,brutal_purge}},
    {purge,[grpc_utils]},
    {load,{grpc_client,brutal_purge,soft_purge}},
    {load,{grpc_stream,brutal_purge,soft_purge}},
    {apply,{application,stop,[emqx_exhook]}},
    {remove,{emqx_exhook,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_app,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_cli,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_handler,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_mngr,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_pb,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_server,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_sup,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_v_1_hook_provider_bhvr,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_v_1_hook_provider_client,brutal_purge,brutal_purge}},
    {purge,
        [emqx_exhook,emqx_exhook_app,emqx_exhook_cli,emqx_exhook_handler,
         emqx_exhook_mngr,emqx_exhook_pb,emqx_exhook_server,emqx_exhook_sup,
         emqx_exhook_v_1_hook_provider_bhvr,
         emqx_exhook_v_1_hook_provider_client]},
    {load,{emqx_exhook,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_app,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_cli,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_handler,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_pb,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_server,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_sup,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_v_1_hook_provider_bhvr,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_v_1_hook_provider_client,brutal_purge,brutal_purge}},
    {apply,{application,load,[emqx_exhook]}},
    {load,{emqx_exproto_gsvr,brutal_purge,soft_purge}},
    {load,{emqx_exproto_gcli,brutal_purge,soft_purge}},
    {load,{emqx_exproto_conn,brutal_purge,soft_purge}},
    {load,{emqx_exproto_channel,brutal_purge,soft_purge}},
    {load,{minirest,brutal_purge,soft_purge}},
    {load,{minirest_handler,brutal_purge,soft_purge}},
    {apply,{minirest,stop_http,['http:management']}},
    {apply,{minirest,stop_http,['https:management']}},
    {apply,{application,stop,[emqx_management]}},
    {remove,{emqx_mgmt,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_acl,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_alarms,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_apps,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_banned,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_brokers,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_clients,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_data,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_listeners,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_metrics,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_nodes,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_plugins,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_pubsub,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_routes,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_stats,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_subscriptions,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_app,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_auth,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_cli,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_data_backup,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_http,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_sup,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_util,brutal_purge,brutal_purge}},
    {purge,
        [emqx_mgmt,emqx_mgmt_api,emqx_mgmt_api_acl,emqx_mgmt_api_alarms,
         emqx_mgmt_api_apps,emqx_mgmt_api_banned,emqx_mgmt_api_brokers,
         emqx_mgmt_api_clients,emqx_mgmt_api_data,emqx_mgmt_api_listeners,
         emqx_mgmt_api_metrics,emqx_mgmt_api_nodes,emqx_mgmt_api_plugins,
         emqx_mgmt_api_pubsub,emqx_mgmt_api_routes,emqx_mgmt_api_stats,
         emqx_mgmt_api_subscriptions,emqx_mgmt_app,emqx_mgmt_auth,
         emqx_mgmt_cli,emqx_mgmt_data_backup,emqx_mgmt_http,emqx_mgmt_sup,
         emqx_mgmt_util]},
    {load,{emqx_mgmt,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_acl,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_alarms,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_apps,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_banned,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_brokers,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_clients,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_data,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_listeners,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_metrics,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_nodes,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_plugins,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_pubsub,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_routes,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_stats,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_subscriptions,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_app,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_auth,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_cli,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_data_backup,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_http,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_sup,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_util,brutal_purge,brutal_purge}},
    {apply,{application,load,[emqx_management]}},
    {apply,{emqx_rule_engine,load_providers,[]}},
    {apply,{application,stop,[emqx_dashboard]}},
    {remove,{emqx_dashboard,brutal_purge,brutal_purge}},
    {remove,{emqx_dashboard_admin,brutal_purge,brutal_purge}},
    {remove,{emqx_dashboard_api,brutal_purge,brutal_purge}},
    {remove,{emqx_dashboard_app,brutal_purge,brutal_purge}},
    {remove,{emqx_dashboard_cli,brutal_purge,brutal_purge}},
    {remove,{emqx_dashboard_sup,brutal_purge,brutal_purge}},
    {purge,
        [emqx_dashboard,emqx_dashboard_admin,emqx_dashboard_api,
         emqx_dashboard_app,emqx_dashboard_cli,emqx_dashboard_sup]},
    {load,{emqx_dashboard,brutal_purge,brutal_purge}},
    {load,{emqx_dashboard_admin,brutal_purge,brutal_purge}},
    {load,{emqx_dashboard_api,brutal_purge,brutal_purge}},
    {load,{emqx_dashboard_app,brutal_purge,brutal_purge}},
    {load,{emqx_dashboard_cli,brutal_purge,brutal_purge}},
    {load,{emqx_dashboard_sup,brutal_purge,brutal_purge}},
    {apply,{application,load,[emqx_dashboard]}},
    {apply,{emqx_plugins,load,[]}}]},
  {"4.3.4",[],
   [{load_object_code,{ssl,"10.2.4.2",[ssl_cipher]}},
    {load_object_code,{cuttlefish,"3.3.5",[cuttlefish_duration_parse]}},
    {load_object_code,
        {emqx,"4.3.4",
            [emqx_vm,emqx_sys_mon,emqx_http_lib,emqx_connection,emqx_channel,
             emqx_ws_connection,emqx_pqueue,emqx_mqueue,emqx_alarm_handler,
             emqx_misc,emqx_cm,emqx_shared_sub,emqx_access_rule,emqx_ctl,
             emqx_frame,emqx_rpc,emqx_app]}},
    {load_object_code,
        {ekka,"0.8.1",
            [ekka_cluster_dns,ekka_ring,ekka_node_monitor,ekka_autocluster,
             ekka_autoheal,ekka_locker,ekka_httpc,ekka_mnesia]}},
    {load_object_code,{emqx_plugin_libs,"4.3.0",[emqx_plugin_libs_ssl]}},
    {load_object_code,{emqx_modules,"4.3.2",[emqx_mod_presence]}},
    {load_object_code,{emqx_retainer,"4.3.1",[emqx_retainer]}},
    {load_object_code,{emqx_bridge_mqtt,"4.3.1",[emqx_bridge_mqtt_actions]}},
    {load_object_code,{emqx_sn,"4.3.3",[emqx_sn_registry]}},
    {load_object_code,{emqx_coap,"4.3.0",[emqx_coap_mqtt_adapter]}},
    {load_object_code,
        {emqx_stomp,"4.3.0",
            [emqx_stomp,emqx_stomp_connection,emqx_stomp_frame,
             emqx_stomp_heartbeat,emqx_stomp_protocol]}},
    {load_object_code,{gun,"1.3.5",[gun]}},
    {load_object_code,{ehttpc,"0.1.6",[ehttpc,ehttpc_pool]}},
    {load_object_code,
        {emqx_auth_http,"4.3.1",
            [emqx_acl_http,emqx_auth_http,emqx_auth_http_app,
             emqx_auth_http_cli,emqx_auth_http_sup]}},
    {load_object_code,{ecpool,"0.5.1",[ecpool_worker,ecpool_sup]}},
    {load_object_code,
        {emqx_auth_mnesia,"4.3.0",
            [emqx_auth_mnesia_sup,emqx_acl_mnesia_cli,emqx_acl_mnesia_api,
             emqx_auth_mnesia_api,emqx_acl_mnesia]}},
    {load_object_code,
        {emqx_web_hook,"4.3.2",
            [emqx_web_hook_app,emqx_web_hook,emqx_web_hook_actions]}},
    {load_object_code,
        {emqx_rule_engine,"4.3.3",
            [emqx_rule_engine,emqx_rule_actions,emqx_rule_registry]}},
    {load_object_code,
        {emqx_lwm2m,"4.3.2",[emqx_lwm2m_protocol,emqx_lwm2m_message]}},
    {load_object_code,{emqx_auth_ldap,"4.3.1",[emqx_auth_ldap_cli]}},
    {load_object_code,
        {mongodb,"3.0.0",
            [mc_auth_logic,mc_connection_man,mc_cursor,mc_monitor,mc_pool_sup,
             mc_selecting_logics,mc_server,mc_super_sup,mc_topology,
             mc_topology_logics,mc_utils,mc_worker,mc_worker_api,
             mc_worker_logic,mongo_api,mongo_app,mongo_id_server,
             mongo_protocol,mongoc]}},
    {load_object_code,{grpc,"0.6.2",[grpc_client,grpc_stream]}},
    {load_object_code,
        {emqx_exhook,"4.3.2",
            [emqx_exhook,emqx_exhook_app,emqx_exhook_cli,emqx_exhook_handler,
             emqx_exhook_pb,emqx_exhook_server,emqx_exhook_sup,
             emqx_exhook_v_1_hook_provider_bhvr,
             emqx_exhook_v_1_hook_provider_client]}},
    {load_object_code,
        {emqx_exproto,"4.3.0",
            [emqx_exproto_gsvr,emqx_exproto_gcli,emqx_exproto_conn,
             emqx_exproto_channel]}},
    {load_object_code,{minirest,"0.3.6",[minirest,minirest_handler]}},
    {load_object_code,
        {emqx_management,"4.3.3",
            [emqx_mgmt,emqx_mgmt_api,emqx_mgmt_api_acl,emqx_mgmt_api_alarms,
             emqx_mgmt_api_apps,emqx_mgmt_api_banned,emqx_mgmt_api_brokers,
             emqx_mgmt_api_clients,emqx_mgmt_api_data,emqx_mgmt_api_listeners,
             emqx_mgmt_api_metrics,emqx_mgmt_api_nodes,emqx_mgmt_api_plugins,
             emqx_mgmt_api_pubsub,emqx_mgmt_api_routes,emqx_mgmt_api_stats,
             emqx_mgmt_api_subscriptions,emqx_mgmt_app,emqx_mgmt_auth,
             emqx_mgmt_cli,emqx_mgmt_data_backup,emqx_mgmt_http,emqx_mgmt_sup,
             emqx_mgmt_util]}},
    {load_object_code,
        {emqx_dashboard,"4.3.1",
            [emqx_dashboard,emqx_dashboard_admin,emqx_dashboard_api,
             emqx_dashboard_app,emqx_dashboard_cli,emqx_dashboard_sup]}},
    point_of_no_return,
    {load,{ssl_cipher,brutal_purge,soft_purge}},
    {load,{cuttlefish_duration_parse,brutal_purge,soft_purge}},
    {load,{emqx_vm,brutal_purge,soft_purge}},
    {load,{emqx_sys_mon,brutal_purge,soft_purge}},
    {load,{emqx_http_lib,brutal_purge,soft_purge}},
    {load,{emqx_connection,brutal_purge,soft_purge}},
    {load,{emqx_channel,brutal_purge,soft_purge}},
    {load,{emqx_ws_connection,brutal_purge,soft_purge}},
    {load,{emqx_pqueue,brutal_purge,soft_purge}},
    {load,{emqx_mqueue,brutal_purge,soft_purge}},
    {load,{emqx_alarm_handler,brutal_purge,soft_purge}},
    {load,{emqx_misc,brutal_purge,soft_purge}},
    {load,{emqx_cm,brutal_purge,soft_purge}},
    {load,{emqx_shared_sub,brutal_purge,soft_purge}},
    {load,{emqx_access_rule,brutal_purge,soft_purge}},
    {load,{emqx_ctl,brutal_purge,soft_purge}},
    {load,{emqx_frame,brutal_purge,soft_purge}},
    {load,{emqx_rpc,brutal_purge,soft_purge}},
    {load,{emqx_app,brutal_purge,soft_purge}},
    {load,{ekka_cluster_dns,brutal_purge,soft_purge}},
    {load,{ekka_ring,brutal_purge,soft_purge}},
    {load,{ekka_node_monitor,brutal_purge,soft_purge}},
    {load,{ekka_autocluster,brutal_purge,soft_purge}},
    {load,{ekka_autoheal,brutal_purge,soft_purge}},
    {load,{ekka_locker,brutal_purge,soft_purge}},
    {load,{ekka_httpc,brutal_purge,soft_purge}},
    {load,{ekka_mnesia,brutal_purge,soft_purge}},
    {load,{emqx_plugin_libs_ssl,brutal_purge,soft_purge}},
    {load,{emqx_mod_presence,brutal_purge,soft_purge}},
    {load,{emqx_retainer,brutal_purge,soft_purge}},
    {load,{emqx_bridge_mqtt_actions,brutal_purge,soft_purge}},
    {load,{emqx_sn_registry,brutal_purge,soft_purge}},
    {load,{emqx_coap_mqtt_adapter,brutal_purge,soft_purge}},
    {apply,{application,stop,[emqx_stomp]}},
    {remove,{emqx_stomp,brutal_purge,brutal_purge}},
    {remove,{emqx_stomp_connection,brutal_purge,brutal_purge}},
    {remove,{emqx_stomp_frame,brutal_purge,brutal_purge}},
    {remove,{emqx_stomp_heartbeat,brutal_purge,brutal_purge}},
    {remove,{emqx_stomp_protocol,brutal_purge,brutal_purge}},
    {purge,
        [emqx_stomp,emqx_stomp_connection,emqx_stomp_frame,
         emqx_stomp_heartbeat,emqx_stomp_protocol]},
    {load,{emqx_stomp,brutal_purge,brutal_purge}},
    {load,{emqx_stomp_connection,brutal_purge,brutal_purge}},
    {load,{emqx_stomp_frame,brutal_purge,brutal_purge}},
    {load,{emqx_stomp_heartbeat,brutal_purge,brutal_purge}},
    {load,{emqx_stomp_protocol,brutal_purge,brutal_purge}},
    {apply,{application,load,[emqx_stomp]}},
    {load,{gun,brutal_purge,soft_purge}},
    {suspend,[ehttpc]},
    {code_change,down,[{ehttpc,[no_enable_pipelining]}]},
    {load,{ehttpc,brutal_purge,brutal_purge}},
    {resume,[ehttpc]},
    {load,{ehttpc_pool,brutal_purge,soft_purge}},
    {apply,{application,stop,[emqx_auth_http]}},
    {remove,{emqx_acl_http,brutal_purge,brutal_purge}},
    {remove,{emqx_auth_http,brutal_purge,brutal_purge}},
    {remove,{emqx_auth_http_app,brutal_purge,brutal_purge}},
    {remove,{emqx_auth_http_cli,brutal_purge,brutal_purge}},
    {remove,{emqx_auth_http_sup,brutal_purge,brutal_purge}},
    {purge,
        [emqx_acl_http,emqx_auth_http,emqx_auth_http_app,emqx_auth_http_cli,
         emqx_auth_http_sup]},
    {load,{emqx_acl_http,brutal_purge,brutal_purge}},
    {load,{emqx_auth_http,brutal_purge,brutal_purge}},
    {load,{emqx_auth_http_app,brutal_purge,brutal_purge}},
    {load,{emqx_auth_http_cli,brutal_purge,brutal_purge}},
    {load,{emqx_auth_http_sup,brutal_purge,brutal_purge}},
    {apply,{application,load,[emqx_auth_http]}},
    {load,{ecpool_worker,brutal_purge,soft_purge}},
    {load,{ecpool_sup,brutal_purge,soft_purge}},
    {apply,{emqx_acl_mnesia_migrator,stop_supervised,[]}},
    {suspend,[emqx_auth_mnesia_sup]},
    {load,{emqx_auth_mnesia_sup,brutal_purge,brutal_purge}},
    {code_change,down,[{emqx_auth_mnesia_sup,[]}]},
    {resume,[emqx_auth_mnesia_sup]},
    {load,{emqx_acl_mnesia_cli,brutal_purge,soft_purge}},
    {load,{emqx_acl_mnesia_api,brutal_purge,soft_purge}},
    {load,{emqx_auth_mnesia_api,brutal_purge,soft_purge}},
    {load,{emqx_acl_mnesia,brutal_purge,soft_purge}},
    {remove,{emqx_acl_mnesia_migrator,brutal_purge,brutal_purge}},
    {purge,[emqx_acl_mnesia_migrator]},
    {remove,{emqx_acl_mnesia_db,brutal_purge,brutal_purge}},
    {purge,[emqx_acl_mnesia_db]},
    {apply,{application,stop,[emqx_web_hook]}},
    {load,{emqx_web_hook_app,brutal_purge,soft_purge}},
    {load,{emqx_web_hook,brutal_purge,soft_purge}},
    {load,{emqx_web_hook_actions,brutal_purge,soft_purge}},
    {load,{emqx_rule_engine,brutal_purge,soft_purge}},
    {load,{emqx_rule_actions,brutal_purge,soft_purge}},
    {load,{emqx_rule_registry,brutal_purge,soft_purge}},
    {load,{emqx_lwm2m_protocol,brutal_purge,soft_purge}},
    {load,{emqx_lwm2m_message,brutal_purge,soft_purge}},
    {load,{emqx_auth_ldap_cli,brutal_purge,soft_purge}},
    {apply,{application,stop,[mongodb]}},
    {remove,{mc_auth_logic,brutal_purge,brutal_purge}},
    {remove,{mc_connection_man,brutal_purge,brutal_purge}},
    {remove,{mc_cursor,brutal_purge,brutal_purge}},
    {remove,{mc_monitor,brutal_purge,brutal_purge}},
    {remove,{mc_pool_sup,brutal_purge,brutal_purge}},
    {remove,{mc_selecting_logics,brutal_purge,brutal_purge}},
    {remove,{mc_server,brutal_purge,brutal_purge}},
    {remove,{mc_super_sup,brutal_purge,brutal_purge}},
    {remove,{mc_topology,brutal_purge,brutal_purge}},
    {remove,{mc_topology_logics,brutal_purge,brutal_purge}},
    {remove,{mc_utils,brutal_purge,brutal_purge}},
    {remove,{mc_worker,brutal_purge,brutal_purge}},
    {remove,{mc_worker_api,brutal_purge,brutal_purge}},
    {remove,{mc_worker_logic,brutal_purge,brutal_purge}},
    {remove,{mongo_api,brutal_purge,brutal_purge}},
    {remove,{mongo_app,brutal_purge,brutal_purge}},
    {remove,{mongo_id_server,brutal_purge,brutal_purge}},
    {remove,{mongo_protocol,brutal_purge,brutal_purge}},
    {remove,{mongoc,brutal_purge,brutal_purge}},
    {purge,
        [mc_auth_logic,mc_connection_man,mc_cursor,mc_monitor,mc_pool_sup,
         mc_selecting_logics,mc_server,mc_super_sup,mc_topology,
         mc_topology_logics,mc_utils,mc_worker,mc_worker_api,mc_worker_logic,
         mongo_api,mongo_app,mongo_id_server,mongo_protocol,mongoc]},
    {load,{mc_auth_logic,brutal_purge,brutal_purge}},
    {load,{mc_connection_man,brutal_purge,brutal_purge}},
    {load,{mc_cursor,brutal_purge,brutal_purge}},
    {load,{mc_monitor,brutal_purge,brutal_purge}},
    {load,{mc_pool_sup,brutal_purge,brutal_purge}},
    {load,{mc_selecting_logics,brutal_purge,brutal_purge}},
    {load,{mc_server,brutal_purge,brutal_purge}},
    {load,{mc_super_sup,brutal_purge,brutal_purge}},
    {load,{mc_topology,brutal_purge,brutal_purge}},
    {load,{mc_topology_logics,brutal_purge,brutal_purge}},
    {load,{mc_utils,brutal_purge,brutal_purge}},
    {load,{mc_worker,brutal_purge,brutal_purge}},
    {load,{mc_worker_api,brutal_purge,brutal_purge}},
    {load,{mc_worker_logic,brutal_purge,brutal_purge}},
    {load,{mongo_api,brutal_purge,brutal_purge}},
    {load,{mongo_app,brutal_purge,brutal_purge}},
    {load,{mongo_id_server,brutal_purge,brutal_purge}},
    {load,{mongo_protocol,brutal_purge,brutal_purge}},
    {load,{mongoc,brutal_purge,brutal_purge}},
    {apply,{application,start,[mongodb,permanent]}},
    {remove,{grpc_utils,brutal_purge,brutal_purge}},
    {purge,[grpc_utils]},
    {load,{grpc_client,brutal_purge,soft_purge}},
    {load,{grpc_stream,brutal_purge,soft_purge}},
    {apply,{application,stop,[emqx_exhook]}},
    {remove,{emqx_exhook,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_app,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_cli,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_handler,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_mngr,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_pb,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_server,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_sup,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_v_1_hook_provider_bhvr,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_v_1_hook_provider_client,brutal_purge,brutal_purge}},
    {purge,
        [emqx_exhook,emqx_exhook_app,emqx_exhook_cli,emqx_exhook_handler,
         emqx_exhook_mngr,emqx_exhook_pb,emqx_exhook_server,emqx_exhook_sup,
         emqx_exhook_v_1_hook_provider_bhvr,
         emqx_exhook_v_1_hook_provider_client]},
    {load,{emqx_exhook,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_app,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_cli,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_handler,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_pb,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_server,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_sup,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_v_1_hook_provider_bhvr,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_v_1_hook_provider_client,brutal_purge,brutal_purge}},
    {apply,{application,load,[emqx_exhook]}},
    {load,{emqx_exproto_gsvr,brutal_purge,soft_purge}},
    {load,{emqx_exproto_gcli,brutal_purge,soft_purge}},
    {load,{emqx_exproto_conn,brutal_purge,soft_purge}},
    {load,{emqx_exproto_channel,brutal_purge,soft_purge}},
    {load,{minirest,brutal_purge,soft_purge}},
    {load,{minirest_handler,brutal_purge,soft_purge}},
    {apply,{minirest,stop_http,['http:management']}},
    {apply,{minirest,stop_http,['https:management']}},
    {apply,{application,stop,[emqx_management]}},
    {remove,{emqx_mgmt,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_acl,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_alarms,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_apps,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_banned,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_brokers,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_clients,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_data,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_listeners,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_metrics,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_nodes,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_plugins,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_pubsub,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_routes,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_stats,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_subscriptions,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_app,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_auth,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_cli,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_data_backup,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_http,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_sup,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_util,brutal_purge,brutal_purge}},
    {purge,
        [emqx_mgmt,emqx_mgmt_api,emqx_mgmt_api_acl,emqx_mgmt_api_alarms,
         emqx_mgmt_api_apps,emqx_mgmt_api_banned,emqx_mgmt_api_brokers,
         emqx_mgmt_api_clients,emqx_mgmt_api_data,emqx_mgmt_api_listeners,
         emqx_mgmt_api_metrics,emqx_mgmt_api_nodes,emqx_mgmt_api_plugins,
         emqx_mgmt_api_pubsub,emqx_mgmt_api_routes,emqx_mgmt_api_stats,
         emqx_mgmt_api_subscriptions,emqx_mgmt_app,emqx_mgmt_auth,
         emqx_mgmt_cli,emqx_mgmt_data_backup,emqx_mgmt_http,emqx_mgmt_sup,
         emqx_mgmt_util]},
    {load,{emqx_mgmt,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_acl,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_alarms,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_apps,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_banned,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_brokers,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_clients,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_data,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_listeners,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_metrics,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_nodes,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_plugins,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_pubsub,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_routes,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_stats,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_subscriptions,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_app,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_auth,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_cli,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_data_backup,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_http,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_sup,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_util,brutal_purge,brutal_purge}},
    {apply,{application,load,[emqx_management]}},
    {apply,{emqx_rule_engine,load_providers,[]}},
    {apply,{application,stop,[emqx_dashboard]}},
    {remove,{emqx_dashboard,brutal_purge,brutal_purge}},
    {remove,{emqx_dashboard_admin,brutal_purge,brutal_purge}},
    {remove,{emqx_dashboard_api,brutal_purge,brutal_purge}},
    {remove,{emqx_dashboard_app,brutal_purge,brutal_purge}},
    {remove,{emqx_dashboard_cli,brutal_purge,brutal_purge}},
    {remove,{emqx_dashboard_sup,brutal_purge,brutal_purge}},
    {purge,
        [emqx_dashboard,emqx_dashboard_admin,emqx_dashboard_api,
         emqx_dashboard_app,emqx_dashboard_cli,emqx_dashboard_sup]},
    {load,{emqx_dashboard,brutal_purge,brutal_purge}},
    {load,{emqx_dashboard_admin,brutal_purge,brutal_purge}},
    {load,{emqx_dashboard_api,brutal_purge,brutal_purge}},
    {load,{emqx_dashboard_app,brutal_purge,brutal_purge}},
    {load,{emqx_dashboard_cli,brutal_purge,brutal_purge}},
    {load,{emqx_dashboard_sup,brutal_purge,brutal_purge}},
    {apply,{application,load,[emqx_dashboard]}},
    {apply,{emqx_plugins,load,[]}}]},
  {"4.3.3",[],
   [{load_object_code,{ssl,"10.2.4.2",[ssl_cipher]}},
    {load_object_code,{cuttlefish,"3.3.5",[cuttlefish_duration_parse]}},
    {load_object_code,
        {emqx,"4.3.3",
            [emqx_vm,emqx_sys_mon,emqx_http_lib,emqx_connection,emqx_channel,
             emqx_pqueue,emqx_mqueue,emqx_alarm_handler,emqx_misc,emqx_packet,
             emqx_shared_sub,emqx_ws_connection,emqx_cm,emqx_access_rule,
             emqx_ctl,emqx_frame,emqx_rpc,emqx_app]}},
    {load_object_code,
        {ekka,"0.8.1",
            [ekka_cluster_dns,ekka_ring,ekka_node_monitor,ekka_autocluster,
             ekka_autoheal,ekka_locker,ekka_httpc,ekka_mnesia]}},
    {load_object_code,{emqx_plugin_libs,"4.3.0",[emqx_plugin_libs_ssl]}},
    {load_object_code,{emqx_modules,"4.3.2",[emqx_mod_presence]}},
    {load_object_code,{emqx_retainer,"4.3.1",[emqx_retainer]}},
    {load_object_code,{emqx_bridge_mqtt,"4.3.1",[emqx_bridge_mqtt_actions]}},
    {load_object_code,{emqx_sn,"4.3.2",[emqx_sn_gateway,emqx_sn_registry]}},
    {load_object_code,{emqx_coap,"4.3.0",[emqx_coap_mqtt_adapter]}},
    {load_object_code,
        {emqx_stomp,"4.3.0",
            [emqx_stomp,emqx_stomp_connection,emqx_stomp_frame,
             emqx_stomp_heartbeat,emqx_stomp_protocol]}},
    {load_object_code,{gun,"1.3.5",[gun]}},
    {load_object_code,{ehttpc,"0.1.5",[ehttpc,ehttpc_pool]}},
    {load_object_code,
        {emqx_auth_http,"4.3.0",
            [emqx_acl_http,emqx_auth_http,emqx_auth_http_app,
             emqx_auth_http_cli,emqx_auth_http_sup]}},
    {load_object_code,{ecpool,"0.5.1",[ecpool_worker,ecpool_sup]}},
    {load_object_code,
        {emqx_auth_mnesia,"4.3.0",
            [emqx_auth_mnesia_sup,emqx_acl_mnesia_cli,emqx_acl_mnesia_api,
             emqx_auth_mnesia_api,emqx_acl_mnesia]}},
    {load_object_code,
        {emqx_web_hook,"4.3.1",
            [emqx_web_hook_app,emqx_web_hook,emqx_web_hook_actions]}},
    {load_object_code,
        {emqx_rule_engine,"4.3.2",
            [emqx_rule_registry,emqx_rule_engine,emqx_rule_actions]}},
    {load_object_code,{lwm2m_coap,"1.1.2",[lwm2m_coap_channel]}},
    {load_object_code,
        {emqx_lwm2m,"4.3.1",
            [binary_util,emqx_lwm2m_app,emqx_lwm2m_cmd_handler,
             emqx_lwm2m_coap_resource,emqx_lwm2m_coap_server,emqx_lwm2m_json,
             emqx_lwm2m_message,emqx_lwm2m_protocol,emqx_lwm2m_sup,
             emqx_lwm2m_timer,emqx_lwm2m_tlv,emqx_lwm2m_xml_object,
             emqx_lwm2m_xml_object_db]}},
    {load_object_code,
        {emqx_auth_ldap,"4.3.0",[emqx_acl_ldap,emqx_auth_ldap_cli]}},
    {load_object_code,
        {mongodb,"3.0.0",
            [mc_auth_logic,mc_connection_man,mc_cursor,mc_monitor,mc_pool_sup,
             mc_selecting_logics,mc_server,mc_super_sup,mc_topology,
             mc_topology_logics,mc_utils,mc_worker,mc_worker_api,
             mc_worker_logic,mongo_api,mongo_app,mongo_id_server,
             mongo_protocol,mongoc]}},
    {load_object_code,{grpc,"0.6.2",[grpc_client,grpc_stream]}},
    {load_object_code,
        {emqx_exhook,"4.3.1",
            [emqx_exhook,emqx_exhook_app,emqx_exhook_cli,emqx_exhook_handler,
             emqx_exhook_pb,emqx_exhook_server,emqx_exhook_sup,
             emqx_exhook_v_1_hook_provider_bhvr,
             emqx_exhook_v_1_hook_provider_client]}},
    {load_object_code,
        {emqx_exproto,"4.3.0",
            [emqx_exproto_gsvr,emqx_exproto_gcli,emqx_exproto_conn,
             emqx_exproto_channel]}},
    {load_object_code,{minirest,"0.3.5",[minirest,minirest_handler]}},
    {load_object_code,
        {emqx_management,"4.3.3",
            [emqx_mgmt,emqx_mgmt_api,emqx_mgmt_api_acl,emqx_mgmt_api_alarms,
             emqx_mgmt_api_apps,emqx_mgmt_api_banned,emqx_mgmt_api_brokers,
             emqx_mgmt_api_clients,emqx_mgmt_api_data,emqx_mgmt_api_listeners,
             emqx_mgmt_api_metrics,emqx_mgmt_api_nodes,emqx_mgmt_api_plugins,
             emqx_mgmt_api_pubsub,emqx_mgmt_api_routes,emqx_mgmt_api_stats,
             emqx_mgmt_api_subscriptions,emqx_mgmt_app,emqx_mgmt_auth,
             emqx_mgmt_cli,emqx_mgmt_data_backup,emqx_mgmt_http,emqx_mgmt_sup,
             emqx_mgmt_util]}},
    {load_object_code,
        {emqx_dashboard,"4.3.0",
            [emqx_dashboard,emqx_dashboard_admin,emqx_dashboard_api,
             emqx_dashboard_app,emqx_dashboard_cli,emqx_dashboard_sup]}},
    point_of_no_return,
    {load,{ssl_cipher,brutal_purge,soft_purge}},
    {load,{cuttlefish_duration_parse,brutal_purge,soft_purge}},
    {load,{emqx_vm,brutal_purge,soft_purge}},
    {load,{emqx_sys_mon,brutal_purge,soft_purge}},
    {load,{emqx_http_lib,brutal_purge,soft_purge}},
    {load,{emqx_connection,brutal_purge,soft_purge}},
    {load,{emqx_channel,brutal_purge,soft_purge}},
    {load,{emqx_pqueue,brutal_purge,soft_purge}},
    {load,{emqx_mqueue,brutal_purge,soft_purge}},
    {load,{emqx_alarm_handler,brutal_purge,soft_purge}},
    {load,{emqx_misc,brutal_purge,soft_purge}},
    {load,{emqx_packet,brutal_purge,soft_purge}},
    {load,{emqx_shared_sub,brutal_purge,soft_purge}},
    {load,{emqx_ws_connection,brutal_purge,soft_purge}},
    {load,{emqx_cm,brutal_purge,soft_purge}},
    {load,{emqx_access_rule,brutal_purge,soft_purge}},
    {load,{emqx_ctl,brutal_purge,soft_purge}},
    {load,{emqx_frame,brutal_purge,soft_purge}},
    {load,{emqx_rpc,brutal_purge,soft_purge}},
    {load,{emqx_app,brutal_purge,soft_purge}},
    {load,{ekka_cluster_dns,brutal_purge,soft_purge}},
    {load,{ekka_ring,brutal_purge,soft_purge}},
    {load,{ekka_node_monitor,brutal_purge,soft_purge}},
    {load,{ekka_autocluster,brutal_purge,soft_purge}},
    {load,{ekka_autoheal,brutal_purge,soft_purge}},
    {load,{ekka_locker,brutal_purge,soft_purge}},
    {load,{ekka_httpc,brutal_purge,soft_purge}},
    {load,{ekka_mnesia,brutal_purge,soft_purge}},
    {load,{emqx_plugin_libs_ssl,brutal_purge,soft_purge}},
    {load,{emqx_mod_presence,brutal_purge,soft_purge}},
    {load,{emqx_retainer,brutal_purge,soft_purge}},
    {load,{emqx_bridge_mqtt_actions,brutal_purge,soft_purge}},
    {load,{emqx_sn_gateway,brutal_purge,soft_purge}},
    {load,{emqx_sn_registry,brutal_purge,soft_purge}},
    {load,{emqx_coap_mqtt_adapter,brutal_purge,soft_purge}},
    {apply,{application,stop,[emqx_stomp]}},
    {remove,{emqx_stomp,brutal_purge,brutal_purge}},
    {remove,{emqx_stomp_connection,brutal_purge,brutal_purge}},
    {remove,{emqx_stomp_frame,brutal_purge,brutal_purge}},
    {remove,{emqx_stomp_heartbeat,brutal_purge,brutal_purge}},
    {remove,{emqx_stomp_protocol,brutal_purge,brutal_purge}},
    {purge,
        [emqx_stomp,emqx_stomp_connection,emqx_stomp_frame,
         emqx_stomp_heartbeat,emqx_stomp_protocol]},
    {load,{emqx_stomp,brutal_purge,brutal_purge}},
    {load,{emqx_stomp_connection,brutal_purge,brutal_purge}},
    {load,{emqx_stomp_frame,brutal_purge,brutal_purge}},
    {load,{emqx_stomp_heartbeat,brutal_purge,brutal_purge}},
    {load,{emqx_stomp_protocol,brutal_purge,brutal_purge}},
    {apply,{application,load,[emqx_stomp]}},
    {load,{gun,brutal_purge,soft_purge}},
    {suspend,[ehttpc]},
    {code_change,down,[{ehttpc,[no_enable_pipelining]}]},
    {load,{ehttpc,brutal_purge,brutal_purge}},
    {resume,[ehttpc]},
    {load,{ehttpc_pool,brutal_purge,soft_purge}},
    {apply,{application,stop,[emqx_auth_http]}},
    {remove,{emqx_acl_http,brutal_purge,brutal_purge}},
    {remove,{emqx_auth_http,brutal_purge,brutal_purge}},
    {remove,{emqx_auth_http_app,brutal_purge,brutal_purge}},
    {remove,{emqx_auth_http_cli,brutal_purge,brutal_purge}},
    {remove,{emqx_auth_http_sup,brutal_purge,brutal_purge}},
    {purge,
        [emqx_acl_http,emqx_auth_http,emqx_auth_http_app,emqx_auth_http_cli,
         emqx_auth_http_sup]},
    {load,{emqx_acl_http,brutal_purge,brutal_purge}},
    {load,{emqx_auth_http,brutal_purge,brutal_purge}},
    {load,{emqx_auth_http_app,brutal_purge,brutal_purge}},
    {load,{emqx_auth_http_cli,brutal_purge,brutal_purge}},
    {load,{emqx_auth_http_sup,brutal_purge,brutal_purge}},
    {apply,{application,load,[emqx_auth_http]}},
    {load,{ecpool_worker,brutal_purge,soft_purge}},
    {load,{ecpool_sup,brutal_purge,soft_purge}},
    {apply,{emqx_acl_mnesia_migrator,stop_supervised,[]}},
    {suspend,[emqx_auth_mnesia_sup]},
    {load,{emqx_auth_mnesia_sup,brutal_purge,brutal_purge}},
    {code_change,down,[{emqx_auth_mnesia_sup,[]}]},
    {resume,[emqx_auth_mnesia_sup]},
    {load,{emqx_acl_mnesia_cli,brutal_purge,soft_purge}},
    {load,{emqx_acl_mnesia_api,brutal_purge,soft_purge}},
    {load,{emqx_auth_mnesia_api,brutal_purge,soft_purge}},
    {load,{emqx_acl_mnesia,brutal_purge,soft_purge}},
    {remove,{emqx_acl_mnesia_migrator,brutal_purge,brutal_purge}},
    {purge,[emqx_acl_mnesia_migrator]},
    {remove,{emqx_acl_mnesia_db,brutal_purge,brutal_purge}},
    {purge,[emqx_acl_mnesia_db]},
    {apply,{application,stop,[emqx_web_hook]}},
    {load,{emqx_web_hook_app,brutal_purge,soft_purge}},
    {load,{emqx_web_hook,brutal_purge,soft_purge}},
    {load,{emqx_web_hook_actions,brutal_purge,soft_purge}},
    {load,{emqx_rule_registry,brutal_purge,soft_purge}},
    {apply,{emqx_stats,cancel_update,[rule_registery_stats]}},
    {load,{emqx_rule_engine,brutal_purge,soft_purge}},
    {load,{emqx_rule_actions,brutal_purge,soft_purge}},
    {load,{lwm2m_coap_channel,brutal_purge,soft_purge}},
    {apply,{application,stop,[emqx_lwm2m]}},
    {remove,{binary_util,brutal_purge,brutal_purge}},
    {remove,{emqx_lwm2m_api,brutal_purge,brutal_purge}},
    {remove,{emqx_lwm2m_app,brutal_purge,brutal_purge}},
    {remove,{emqx_lwm2m_cm,brutal_purge,brutal_purge}},
    {remove,{emqx_lwm2m_cm_sup,brutal_purge,brutal_purge}},
    {remove,{emqx_lwm2m_cmd_handler,brutal_purge,brutal_purge}},
    {remove,{emqx_lwm2m_coap_resource,brutal_purge,brutal_purge}},
    {remove,{emqx_lwm2m_coap_server,brutal_purge,brutal_purge}},
    {remove,{emqx_lwm2m_json,brutal_purge,brutal_purge}},
    {remove,{emqx_lwm2m_message,brutal_purge,brutal_purge}},
    {remove,{emqx_lwm2m_protocol,brutal_purge,brutal_purge}},
    {remove,{emqx_lwm2m_sup,brutal_purge,brutal_purge}},
    {remove,{emqx_lwm2m_timer,brutal_purge,brutal_purge}},
    {remove,{emqx_lwm2m_tlv,brutal_purge,brutal_purge}},
    {remove,{emqx_lwm2m_xml_object,brutal_purge,brutal_purge}},
    {remove,{emqx_lwm2m_xml_object_db,brutal_purge,brutal_purge}},
    {purge,
        [binary_util,emqx_lwm2m_api,emqx_lwm2m_app,emqx_lwm2m_cm,
         emqx_lwm2m_cm_sup,emqx_lwm2m_cmd_handler,emqx_lwm2m_coap_resource,
         emqx_lwm2m_coap_server,emqx_lwm2m_json,emqx_lwm2m_message,
         emqx_lwm2m_protocol,emqx_lwm2m_sup,emqx_lwm2m_timer,emqx_lwm2m_tlv,
         emqx_lwm2m_xml_object,emqx_lwm2m_xml_object_db]},
    {load,{binary_util,brutal_purge,brutal_purge}},
    {load,{emqx_lwm2m_app,brutal_purge,brutal_purge}},
    {load,{emqx_lwm2m_cmd_handler,brutal_purge,brutal_purge}},
    {load,{emqx_lwm2m_coap_resource,brutal_purge,brutal_purge}},
    {load,{emqx_lwm2m_coap_server,brutal_purge,brutal_purge}},
    {load,{emqx_lwm2m_json,brutal_purge,brutal_purge}},
    {load,{emqx_lwm2m_message,brutal_purge,brutal_purge}},
    {load,{emqx_lwm2m_protocol,brutal_purge,brutal_purge}},
    {load,{emqx_lwm2m_sup,brutal_purge,brutal_purge}},
    {load,{emqx_lwm2m_timer,brutal_purge,brutal_purge}},
    {load,{emqx_lwm2m_tlv,brutal_purge,brutal_purge}},
    {load,{emqx_lwm2m_xml_object,brutal_purge,brutal_purge}},
    {load,{emqx_lwm2m_xml_object_db,brutal_purge,brutal_purge}},
    {apply,{application,load,[emqx_lwm2m]}},
    {load,{emqx_acl_ldap,brutal_purge,soft_purge}},
    {load,{emqx_auth_ldap_cli,brutal_purge,soft_purge}},
    {apply,{application,stop,[mongodb]}},
    {remove,{mc_auth_logic,brutal_purge,brutal_purge}},
    {remove,{mc_connection_man,brutal_purge,brutal_purge}},
    {remove,{mc_cursor,brutal_purge,brutal_purge}},
    {remove,{mc_monitor,brutal_purge,brutal_purge}},
    {remove,{mc_pool_sup,brutal_purge,brutal_purge}},
    {remove,{mc_selecting_logics,brutal_purge,brutal_purge}},
    {remove,{mc_server,brutal_purge,brutal_purge}},
    {remove,{mc_super_sup,brutal_purge,brutal_purge}},
    {remove,{mc_topology,brutal_purge,brutal_purge}},
    {remove,{mc_topology_logics,brutal_purge,brutal_purge}},
    {remove,{mc_utils,brutal_purge,brutal_purge}},
    {remove,{mc_worker,brutal_purge,brutal_purge}},
    {remove,{mc_worker_api,brutal_purge,brutal_purge}},
    {remove,{mc_worker_logic,brutal_purge,brutal_purge}},
    {remove,{mongo_api,brutal_purge,brutal_purge}},
    {remove,{mongo_app,brutal_purge,brutal_purge}},
    {remove,{mongo_id_server,brutal_purge,brutal_purge}},
    {remove,{mongo_protocol,brutal_purge,brutal_purge}},
    {remove,{mongoc,brutal_purge,brutal_purge}},
    {purge,
        [mc_auth_logic,mc_connection_man,mc_cursor,mc_monitor,mc_pool_sup,
         mc_selecting_logics,mc_server,mc_super_sup,mc_topology,
         mc_topology_logics,mc_utils,mc_worker,mc_worker_api,mc_worker_logic,
         mongo_api,mongo_app,mongo_id_server,mongo_protocol,mongoc]},
    {load,{mc_auth_logic,brutal_purge,brutal_purge}},
    {load,{mc_connection_man,brutal_purge,brutal_purge}},
    {load,{mc_cursor,brutal_purge,brutal_purge}},
    {load,{mc_monitor,brutal_purge,brutal_purge}},
    {load,{mc_pool_sup,brutal_purge,brutal_purge}},
    {load,{mc_selecting_logics,brutal_purge,brutal_purge}},
    {load,{mc_server,brutal_purge,brutal_purge}},
    {load,{mc_super_sup,brutal_purge,brutal_purge}},
    {load,{mc_topology,brutal_purge,brutal_purge}},
    {load,{mc_topology_logics,brutal_purge,brutal_purge}},
    {load,{mc_utils,brutal_purge,brutal_purge}},
    {load,{mc_worker,brutal_purge,brutal_purge}},
    {load,{mc_worker_api,brutal_purge,brutal_purge}},
    {load,{mc_worker_logic,brutal_purge,brutal_purge}},
    {load,{mongo_api,brutal_purge,brutal_purge}},
    {load,{mongo_app,brutal_purge,brutal_purge}},
    {load,{mongo_id_server,brutal_purge,brutal_purge}},
    {load,{mongo_protocol,brutal_purge,brutal_purge}},
    {load,{mongoc,brutal_purge,brutal_purge}},
    {apply,{application,start,[mongodb,permanent]}},
    {remove,{grpc_utils,brutal_purge,brutal_purge}},
    {purge,[grpc_utils]},
    {load,{grpc_client,brutal_purge,soft_purge}},
    {load,{grpc_stream,brutal_purge,soft_purge}},
    {apply,{application,stop,[emqx_exhook]}},
    {remove,{emqx_exhook,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_app,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_cli,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_handler,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_mngr,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_pb,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_server,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_sup,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_v_1_hook_provider_bhvr,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_v_1_hook_provider_client,brutal_purge,brutal_purge}},
    {purge,
        [emqx_exhook,emqx_exhook_app,emqx_exhook_cli,emqx_exhook_handler,
         emqx_exhook_mngr,emqx_exhook_pb,emqx_exhook_server,emqx_exhook_sup,
         emqx_exhook_v_1_hook_provider_bhvr,
         emqx_exhook_v_1_hook_provider_client]},
    {load,{emqx_exhook,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_app,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_cli,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_handler,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_pb,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_server,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_sup,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_v_1_hook_provider_bhvr,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_v_1_hook_provider_client,brutal_purge,brutal_purge}},
    {apply,{application,load,[emqx_exhook]}},
    {load,{emqx_exproto_gsvr,brutal_purge,soft_purge}},
    {load,{emqx_exproto_gcli,brutal_purge,soft_purge}},
    {load,{emqx_exproto_conn,brutal_purge,soft_purge}},
    {load,{emqx_exproto_channel,brutal_purge,soft_purge}},
    {load,{minirest,brutal_purge,soft_purge}},
    {load,{minirest_handler,brutal_purge,soft_purge}},
    {apply,{minirest,stop_http,['http:management']}},
    {apply,{minirest,stop_http,['https:management']}},
    {apply,{application,stop,[emqx_management]}},
    {remove,{emqx_mgmt,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_acl,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_alarms,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_apps,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_banned,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_brokers,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_clients,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_data,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_listeners,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_metrics,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_nodes,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_plugins,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_pubsub,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_routes,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_stats,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_subscriptions,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_app,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_auth,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_cli,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_data_backup,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_http,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_sup,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_util,brutal_purge,brutal_purge}},
    {purge,
        [emqx_mgmt,emqx_mgmt_api,emqx_mgmt_api_acl,emqx_mgmt_api_alarms,
         emqx_mgmt_api_apps,emqx_mgmt_api_banned,emqx_mgmt_api_brokers,
         emqx_mgmt_api_clients,emqx_mgmt_api_data,emqx_mgmt_api_listeners,
         emqx_mgmt_api_metrics,emqx_mgmt_api_nodes,emqx_mgmt_api_plugins,
         emqx_mgmt_api_pubsub,emqx_mgmt_api_routes,emqx_mgmt_api_stats,
         emqx_mgmt_api_subscriptions,emqx_mgmt_app,emqx_mgmt_auth,
         emqx_mgmt_cli,emqx_mgmt_data_backup,emqx_mgmt_http,emqx_mgmt_sup,
         emqx_mgmt_util]},
    {load,{emqx_mgmt,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_acl,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_alarms,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_apps,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_banned,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_brokers,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_clients,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_data,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_listeners,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_metrics,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_nodes,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_plugins,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_pubsub,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_routes,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_stats,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_subscriptions,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_app,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_auth,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_cli,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_data_backup,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_http,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_sup,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_util,brutal_purge,brutal_purge}},
    {apply,{application,load,[emqx_management]}},
    {apply,{emqx_rule_engine,load_providers,[]}},
    {apply,{application,stop,[emqx_dashboard]}},
    {remove,{emqx_dashboard,brutal_purge,brutal_purge}},
    {remove,{emqx_dashboard_admin,brutal_purge,brutal_purge}},
    {remove,{emqx_dashboard_api,brutal_purge,brutal_purge}},
    {remove,{emqx_dashboard_app,brutal_purge,brutal_purge}},
    {remove,{emqx_dashboard_cli,brutal_purge,brutal_purge}},
    {remove,{emqx_dashboard_sup,brutal_purge,brutal_purge}},
    {purge,
        [emqx_dashboard,emqx_dashboard_admin,emqx_dashboard_api,
         emqx_dashboard_app,emqx_dashboard_cli,emqx_dashboard_sup]},
    {load,{emqx_dashboard,brutal_purge,brutal_purge}},
    {load,{emqx_dashboard_admin,brutal_purge,brutal_purge}},
    {load,{emqx_dashboard_api,brutal_purge,brutal_purge}},
    {load,{emqx_dashboard_app,brutal_purge,brutal_purge}},
    {load,{emqx_dashboard_cli,brutal_purge,brutal_purge}},
    {load,{emqx_dashboard_sup,brutal_purge,brutal_purge}},
    {apply,{application,load,[emqx_dashboard]}},
    {apply,{emqx_plugins,load,[]}}]},
  {"4.3.7",[],
   [{load_object_code,{ssl,"10.2.4.2",[ssl_cipher]}},
    {load_object_code,{cuttlefish,"3.3.5",[cuttlefish_duration_parse]}},
    {load_object_code,
        {emqx,"4.3.7",
            [emqx_vm,emqx_sys_mon,emqx_http_lib,emqx_connection,emqx_channel,
             emqx_cm,emqx_ws_connection,emqx_pqueue,emqx_mqueue,
             emqx_alarm_handler,emqx_misc,emqx_frame,emqx_rpc,emqx_app]}},
    {load_object_code,
        {ekka,"0.8.1",
            [ekka_cluster_dns,ekka_ring,ekka_node_monitor,ekka_autocluster,
             ekka_autoheal,ekka_locker,ekka_httpc,ekka_mnesia]}},
    {load_object_code,{emqx_plugin_libs,"4.3.0",[emqx_plugin_libs_ssl]}},
    {load_object_code,{emqx_retainer,"4.3.1",[emqx_retainer]}},
    {load_object_code,{emqx_bridge_mqtt,"4.3.2",[emqx_bridge_mqtt_actions]}},
    {load_object_code,{emqx_sn,"4.3.3",[emqx_sn_registry]}},
    {load_object_code,{emqx_coap,"4.3.0",[emqx_coap_mqtt_adapter]}},
    {load_object_code,
        {emqx_stomp,"4.3.0",
            [emqx_stomp,emqx_stomp_connection,emqx_stomp_frame,
             emqx_stomp_heartbeat,emqx_stomp_protocol]}},
    {load_object_code,{gun,"1.3.5",[gun]}},
    {load_object_code,{ehttpc,"0.1.9",[ehttpc,ehttpc_pool]}},
    {load_object_code,
        {emqx_auth_http,"4.3.2",[emqx_auth_http_app,emqx_auth_http_cli]}},
    {load_object_code,{ecpool,"0.5.1",[ecpool_worker,ecpool_sup]}},
    {load_object_code,
        {emqx_auth_mnesia,"4.3.2",
            [emqx_auth_mnesia_sup,emqx_acl_mnesia_cli,emqx_acl_mnesia_api,
             emqx_auth_mnesia_api,emqx_acl_mnesia]}},
    {load_object_code,
        {emqx_web_hook,"4.3.4",[emqx_web_hook_app,emqx_web_hook_actions]}},
    {load_object_code,
        {emqx_rule_engine,"4.3.4",[emqx_rule_engine,emqx_rule_registry]}},
    {load_object_code,{emqx_lwm2m,"4.3.3",[emqx_lwm2m_protocol]}},
    {load_object_code,
        {mongodb,"3.0.0",
            [mc_auth_logic,mc_connection_man,mc_cursor,mc_monitor,mc_pool_sup,
             mc_selecting_logics,mc_server,mc_super_sup,mc_topology,
             mc_topology_logics,mc_utils,mc_worker,mc_worker_api,
             mc_worker_logic,mongo_api,mongo_app,mongo_id_server,
             mongo_protocol,mongoc]}},
    {load_object_code,{grpc,"0.6.2",[grpc_client,grpc_stream]}},
    {load_object_code,
        {emqx_exhook,"4.3.3",
            [emqx_exhook,emqx_exhook_app,emqx_exhook_cli,emqx_exhook_handler,
             emqx_exhook_pb,emqx_exhook_server,emqx_exhook_sup,
             emqx_exhook_v_1_hook_provider_bhvr,
             emqx_exhook_v_1_hook_provider_client]}},
    {load_object_code,
        {emqx_exproto,"4.3.1",
            [emqx_exproto_gsvr,emqx_exproto_gcli,emqx_exproto_conn,
             emqx_exproto_channel]}},
    {load_object_code,
        {emqx_management,"4.3.5",
            [emqx_mgmt,emqx_mgmt_api,emqx_mgmt_api_acl,emqx_mgmt_api_alarms,
             emqx_mgmt_api_apps,emqx_mgmt_api_banned,emqx_mgmt_api_brokers,
             emqx_mgmt_api_clients,emqx_mgmt_api_data,emqx_mgmt_api_listeners,
             emqx_mgmt_api_metrics,emqx_mgmt_api_nodes,emqx_mgmt_api_plugins,
             emqx_mgmt_api_pubsub,emqx_mgmt_api_routes,emqx_mgmt_api_stats,
             emqx_mgmt_api_subscriptions,emqx_mgmt_app,emqx_mgmt_auth,
             emqx_mgmt_cli,emqx_mgmt_data_backup,emqx_mgmt_http,emqx_mgmt_sup,
             emqx_mgmt_util]}},
    {load_object_code,
        {emqx_dashboard,"4.3.3",
            [emqx_dashboard,emqx_dashboard_admin,emqx_dashboard_api,
             emqx_dashboard_app,emqx_dashboard_cli,emqx_dashboard_sup]}},
    point_of_no_return,
    {load,{ssl_cipher,brutal_purge,soft_purge}},
    {load,{cuttlefish_duration_parse,brutal_purge,soft_purge}},
    {load,{emqx_vm,brutal_purge,soft_purge}},
    {load,{emqx_sys_mon,brutal_purge,soft_purge}},
    {load,{emqx_http_lib,brutal_purge,soft_purge}},
    {load,{emqx_connection,brutal_purge,soft_purge}},
    {load,{emqx_channel,brutal_purge,soft_purge}},
    {load,{emqx_cm,brutal_purge,soft_purge}},
    {load,{emqx_ws_connection,brutal_purge,soft_purge}},
    {load,{emqx_pqueue,brutal_purge,soft_purge}},
    {load,{emqx_mqueue,brutal_purge,soft_purge}},
    {load,{emqx_alarm_handler,brutal_purge,soft_purge}},
    {load,{emqx_misc,brutal_purge,soft_purge}},
    {load,{emqx_frame,brutal_purge,soft_purge}},
    {load,{emqx_rpc,brutal_purge,soft_purge}},
    {load,{emqx_app,brutal_purge,soft_purge}},
    {load,{ekka_cluster_dns,brutal_purge,soft_purge}},
    {load,{ekka_ring,brutal_purge,soft_purge}},
    {load,{ekka_node_monitor,brutal_purge,soft_purge}},
    {load,{ekka_autocluster,brutal_purge,soft_purge}},
    {load,{ekka_autoheal,brutal_purge,soft_purge}},
    {load,{ekka_locker,brutal_purge,soft_purge}},
    {load,{ekka_httpc,brutal_purge,soft_purge}},
    {load,{ekka_mnesia,brutal_purge,soft_purge}},
    {load,{emqx_plugin_libs_ssl,brutal_purge,soft_purge}},
    {load,{emqx_retainer,brutal_purge,soft_purge}},
    {load,{emqx_bridge_mqtt_actions,brutal_purge,soft_purge}},
    {load,{emqx_sn_registry,brutal_purge,soft_purge}},
    {load,{emqx_coap_mqtt_adapter,brutal_purge,soft_purge}},
    {apply,{application,stop,[emqx_stomp]}},
    {remove,{emqx_stomp,brutal_purge,brutal_purge}},
    {remove,{emqx_stomp_connection,brutal_purge,brutal_purge}},
    {remove,{emqx_stomp_frame,brutal_purge,brutal_purge}},
    {remove,{emqx_stomp_heartbeat,brutal_purge,brutal_purge}},
    {remove,{emqx_stomp_protocol,brutal_purge,brutal_purge}},
    {purge,
        [emqx_stomp,emqx_stomp_connection,emqx_stomp_frame,
         emqx_stomp_heartbeat,emqx_stomp_protocol]},
    {load,{emqx_stomp,brutal_purge,brutal_purge}},
    {load,{emqx_stomp_connection,brutal_purge,brutal_purge}},
    {load,{emqx_stomp_frame,brutal_purge,brutal_purge}},
    {load,{emqx_stomp_heartbeat,brutal_purge,brutal_purge}},
    {load,{emqx_stomp_protocol,brutal_purge,brutal_purge}},
    {apply,{application,load,[emqx_stomp]}},
    {load,{gun,brutal_purge,soft_purge}},
    {load,{ehttpc,brutal_purge,soft_purge}},
    {load,{ehttpc_pool,brutal_purge,soft_purge}},
    {apply,{application,stop,[emqx_auth_http]}},
    {load,{emqx_auth_http_app,brutal_purge,soft_purge}},
    {load,{emqx_auth_http_cli,brutal_purge,soft_purge}},
    {load,{ecpool_worker,brutal_purge,soft_purge}},
    {load,{ecpool_sup,brutal_purge,soft_purge}},
    {apply,{emqx_acl_mnesia_migrator,stop_supervised,[]}},
    {suspend,[emqx_auth_mnesia_sup]},
    {load,{emqx_auth_mnesia_sup,brutal_purge,brutal_purge}},
    {code_change,down,[{emqx_auth_mnesia_sup,[]}]},
    {resume,[emqx_auth_mnesia_sup]},
    {load,{emqx_acl_mnesia_cli,brutal_purge,soft_purge}},
    {load,{emqx_acl_mnesia_api,brutal_purge,soft_purge}},
    {load,{emqx_auth_mnesia_api,brutal_purge,soft_purge}},
    {load,{emqx_acl_mnesia,brutal_purge,soft_purge}},
    {remove,{emqx_acl_mnesia_migrator,brutal_purge,brutal_purge}},
    {purge,[emqx_acl_mnesia_migrator]},
    {remove,{emqx_acl_mnesia_db,brutal_purge,brutal_purge}},
    {purge,[emqx_acl_mnesia_db]},
    {apply,{application,stop,[emqx_web_hook]}},
    {load,{emqx_web_hook_app,brutal_purge,soft_purge}},
    {load,{emqx_web_hook_actions,brutal_purge,soft_purge}},
    {load,{emqx_rule_engine,brutal_purge,soft_purge}},
    {load,{emqx_rule_registry,brutal_purge,soft_purge}},
    {load,{emqx_lwm2m_protocol,brutal_purge,soft_purge}},
    {apply,{application,stop,[mongodb]}},
    {remove,{mc_auth_logic,brutal_purge,brutal_purge}},
    {remove,{mc_connection_man,brutal_purge,brutal_purge}},
    {remove,{mc_cursor,brutal_purge,brutal_purge}},
    {remove,{mc_monitor,brutal_purge,brutal_purge}},
    {remove,{mc_pool_sup,brutal_purge,brutal_purge}},
    {remove,{mc_selecting_logics,brutal_purge,brutal_purge}},
    {remove,{mc_server,brutal_purge,brutal_purge}},
    {remove,{mc_super_sup,brutal_purge,brutal_purge}},
    {remove,{mc_topology,brutal_purge,brutal_purge}},
    {remove,{mc_topology_logics,brutal_purge,brutal_purge}},
    {remove,{mc_utils,brutal_purge,brutal_purge}},
    {remove,{mc_worker,brutal_purge,brutal_purge}},
    {remove,{mc_worker_api,brutal_purge,brutal_purge}},
    {remove,{mc_worker_logic,brutal_purge,brutal_purge}},
    {remove,{mongo_api,brutal_purge,brutal_purge}},
    {remove,{mongo_app,brutal_purge,brutal_purge}},
    {remove,{mongo_id_server,brutal_purge,brutal_purge}},
    {remove,{mongo_protocol,brutal_purge,brutal_purge}},
    {remove,{mongoc,brutal_purge,brutal_purge}},
    {purge,
        [mc_auth_logic,mc_connection_man,mc_cursor,mc_monitor,mc_pool_sup,
         mc_selecting_logics,mc_server,mc_super_sup,mc_topology,
         mc_topology_logics,mc_utils,mc_worker,mc_worker_api,mc_worker_logic,
         mongo_api,mongo_app,mongo_id_server,mongo_protocol,mongoc]},
    {load,{mc_auth_logic,brutal_purge,brutal_purge}},
    {load,{mc_connection_man,brutal_purge,brutal_purge}},
    {load,{mc_cursor,brutal_purge,brutal_purge}},
    {load,{mc_monitor,brutal_purge,brutal_purge}},
    {load,{mc_pool_sup,brutal_purge,brutal_purge}},
    {load,{mc_selecting_logics,brutal_purge,brutal_purge}},
    {load,{mc_server,brutal_purge,brutal_purge}},
    {load,{mc_super_sup,brutal_purge,brutal_purge}},
    {load,{mc_topology,brutal_purge,brutal_purge}},
    {load,{mc_topology_logics,brutal_purge,brutal_purge}},
    {load,{mc_utils,brutal_purge,brutal_purge}},
    {load,{mc_worker,brutal_purge,brutal_purge}},
    {load,{mc_worker_api,brutal_purge,brutal_purge}},
    {load,{mc_worker_logic,brutal_purge,brutal_purge}},
    {load,{mongo_api,brutal_purge,brutal_purge}},
    {load,{mongo_app,brutal_purge,brutal_purge}},
    {load,{mongo_id_server,brutal_purge,brutal_purge}},
    {load,{mongo_protocol,brutal_purge,brutal_purge}},
    {load,{mongoc,brutal_purge,brutal_purge}},
    {apply,{application,start,[mongodb,permanent]}},
    {remove,{grpc_utils,brutal_purge,brutal_purge}},
    {purge,[grpc_utils]},
    {load,{grpc_client,brutal_purge,soft_purge}},
    {load,{grpc_stream,brutal_purge,soft_purge}},
    {apply,{application,stop,[emqx_exhook]}},
    {remove,{emqx_exhook,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_app,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_cli,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_handler,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_mngr,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_pb,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_server,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_sup,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_v_1_hook_provider_bhvr,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_v_1_hook_provider_client,brutal_purge,brutal_purge}},
    {purge,
        [emqx_exhook,emqx_exhook_app,emqx_exhook_cli,emqx_exhook_handler,
         emqx_exhook_mngr,emqx_exhook_pb,emqx_exhook_server,emqx_exhook_sup,
         emqx_exhook_v_1_hook_provider_bhvr,
         emqx_exhook_v_1_hook_provider_client]},
    {load,{emqx_exhook,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_app,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_cli,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_handler,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_pb,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_server,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_sup,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_v_1_hook_provider_bhvr,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_v_1_hook_provider_client,brutal_purge,brutal_purge}},
    {apply,{application,load,[emqx_exhook]}},
    {load,{emqx_exproto_gsvr,brutal_purge,soft_purge}},
    {load,{emqx_exproto_gcli,brutal_purge,soft_purge}},
    {load,{emqx_exproto_conn,brutal_purge,soft_purge}},
    {load,{emqx_exproto_channel,brutal_purge,soft_purge}},
    {apply,{minirest,stop_http,['http:management']}},
    {apply,{minirest,stop_http,['https:management']}},
    {apply,{application,stop,[emqx_management]}},
    {remove,{emqx_mgmt,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_acl,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_alarms,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_apps,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_banned,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_brokers,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_clients,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_data,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_listeners,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_metrics,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_nodes,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_plugins,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_pubsub,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_routes,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_stats,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_subscriptions,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_app,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_auth,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_cli,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_data_backup,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_http,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_sup,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_util,brutal_purge,brutal_purge}},
    {purge,
        [emqx_mgmt,emqx_mgmt_api,emqx_mgmt_api_acl,emqx_mgmt_api_alarms,
         emqx_mgmt_api_apps,emqx_mgmt_api_banned,emqx_mgmt_api_brokers,
         emqx_mgmt_api_clients,emqx_mgmt_api_data,emqx_mgmt_api_listeners,
         emqx_mgmt_api_metrics,emqx_mgmt_api_nodes,emqx_mgmt_api_plugins,
         emqx_mgmt_api_pubsub,emqx_mgmt_api_routes,emqx_mgmt_api_stats,
         emqx_mgmt_api_subscriptions,emqx_mgmt_app,emqx_mgmt_auth,
         emqx_mgmt_cli,emqx_mgmt_data_backup,emqx_mgmt_http,emqx_mgmt_sup,
         emqx_mgmt_util]},
    {load,{emqx_mgmt,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_acl,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_alarms,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_apps,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_banned,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_brokers,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_clients,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_data,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_listeners,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_metrics,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_nodes,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_plugins,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_pubsub,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_routes,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_stats,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_subscriptions,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_app,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_auth,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_cli,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_data_backup,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_http,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_sup,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_util,brutal_purge,brutal_purge}},
    {apply,{application,load,[emqx_management]}},
    {apply,{emqx_rule_engine,load_providers,[]}},
    {apply,{application,stop,[emqx_dashboard]}},
    {remove,{emqx_dashboard,brutal_purge,brutal_purge}},
    {remove,{emqx_dashboard_admin,brutal_purge,brutal_purge}},
    {remove,{emqx_dashboard_api,brutal_purge,brutal_purge}},
    {remove,{emqx_dashboard_app,brutal_purge,brutal_purge}},
    {remove,{emqx_dashboard_cli,brutal_purge,brutal_purge}},
    {remove,{emqx_dashboard_sup,brutal_purge,brutal_purge}},
    {purge,
        [emqx_dashboard,emqx_dashboard_admin,emqx_dashboard_api,
         emqx_dashboard_app,emqx_dashboard_cli,emqx_dashboard_sup]},
    {load,{emqx_dashboard,brutal_purge,brutal_purge}},
    {load,{emqx_dashboard_admin,brutal_purge,brutal_purge}},
    {load,{emqx_dashboard_api,brutal_purge,brutal_purge}},
    {load,{emqx_dashboard_app,brutal_purge,brutal_purge}},
    {load,{emqx_dashboard_cli,brutal_purge,brutal_purge}},
    {load,{emqx_dashboard_sup,brutal_purge,brutal_purge}},
    {apply,{application,load,[emqx_dashboard]}},
    {apply,{emqx_plugins,load,[]}}]},
  {"4.3.5",[],
   [{load_object_code,{ssl,"10.2.4.2",[ssl_cipher]}},
    {load_object_code,{cuttlefish,"3.3.5",[cuttlefish_duration_parse]}},
    {load_object_code,
        {emqx,"4.3.5",
            [emqx_vm,emqx_sys_mon,emqx_http_lib,emqx_connection,emqx_channel,
             emqx_ws_connection,emqx_pqueue,emqx_mqueue,emqx_alarm_handler,
             emqx_misc,emqx_cm,emqx_access_rule,emqx_ctl,emqx_frame,emqx_rpc,
             emqx_app]}},
    {load_object_code,
        {ekka,"0.8.1",
            [ekka_cluster_dns,ekka_ring,ekka_node_monitor,ekka_autocluster,
             ekka_autoheal,ekka_locker,ekka_httpc,ekka_mnesia]}},
    {load_object_code,{emqx_plugin_libs,"4.3.0",[emqx_plugin_libs_ssl]}},
    {load_object_code,{emqx_modules,"4.3.2",[emqx_mod_presence]}},
    {load_object_code,{emqx_retainer,"4.3.1",[emqx_retainer]}},
    {load_object_code,{emqx_bridge_mqtt,"4.3.1",[emqx_bridge_mqtt_actions]}},
    {load_object_code,{emqx_sn,"4.3.3",[emqx_sn_registry]}},
    {load_object_code,{emqx_coap,"4.3.0",[emqx_coap_mqtt_adapter]}},
    {load_object_code,
        {emqx_stomp,"4.3.0",
            [emqx_stomp,emqx_stomp_connection,emqx_stomp_frame,
             emqx_stomp_heartbeat,emqx_stomp_protocol]}},
    {load_object_code,{gun,"1.3.5",[gun]}},
    {load_object_code,{ehttpc,"0.1.6",[ehttpc,ehttpc_pool]}},
    {load_object_code,
        {emqx_auth_http,"4.3.1",
            [emqx_acl_http,emqx_auth_http,emqx_auth_http_app,
             emqx_auth_http_cli,emqx_auth_http_sup]}},
    {load_object_code,{ecpool,"0.5.1",[ecpool_worker,ecpool_sup]}},
    {load_object_code,
        {emqx_auth_mnesia,"4.3.0",
            [emqx_auth_mnesia_sup,emqx_acl_mnesia_cli,emqx_acl_mnesia_api,
             emqx_auth_mnesia_api,emqx_acl_mnesia]}},
    {load_object_code,
        {emqx_web_hook,"4.3.2",
            [emqx_web_hook_app,emqx_web_hook,emqx_web_hook_actions]}},
    {load_object_code,
        {emqx_rule_engine,"4.3.3",
            [emqx_rule_engine,emqx_rule_actions,emqx_rule_registry]}},
    {load_object_code,
        {emqx_lwm2m,"4.3.2",[emqx_lwm2m_protocol,emqx_lwm2m_message]}},
    {load_object_code,{emqx_auth_ldap,"4.3.1",[emqx_auth_ldap_cli]}},
    {load_object_code,
        {mongodb,"3.0.0",
            [mc_auth_logic,mc_connection_man,mc_cursor,mc_monitor,mc_pool_sup,
             mc_selecting_logics,mc_server,mc_super_sup,mc_topology,
             mc_topology_logics,mc_utils,mc_worker,mc_worker_api,
             mc_worker_logic,mongo_api,mongo_app,mongo_id_server,
             mongo_protocol,mongoc]}},
    {load_object_code,{grpc,"0.6.2",[grpc_client,grpc_stream]}},
    {load_object_code,
        {emqx_exhook,"4.3.2",
            [emqx_exhook,emqx_exhook_app,emqx_exhook_cli,emqx_exhook_handler,
             emqx_exhook_pb,emqx_exhook_server,emqx_exhook_sup,
             emqx_exhook_v_1_hook_provider_bhvr,
             emqx_exhook_v_1_hook_provider_client]}},
    {load_object_code,
        {emqx_exproto,"4.3.0",
            [emqx_exproto_gsvr,emqx_exproto_gcli,emqx_exproto_conn,
             emqx_exproto_channel]}},
    {load_object_code,{minirest,"0.3.6",[minirest,minirest_handler]}},
    {load_object_code,
        {emqx_management,"4.3.3",
            [emqx_mgmt,emqx_mgmt_api,emqx_mgmt_api_acl,emqx_mgmt_api_alarms,
             emqx_mgmt_api_apps,emqx_mgmt_api_banned,emqx_mgmt_api_brokers,
             emqx_mgmt_api_clients,emqx_mgmt_api_data,emqx_mgmt_api_listeners,
             emqx_mgmt_api_metrics,emqx_mgmt_api_nodes,emqx_mgmt_api_plugins,
             emqx_mgmt_api_pubsub,emqx_mgmt_api_routes,emqx_mgmt_api_stats,
             emqx_mgmt_api_subscriptions,emqx_mgmt_app,emqx_mgmt_auth,
             emqx_mgmt_cli,emqx_mgmt_data_backup,emqx_mgmt_http,emqx_mgmt_sup,
             emqx_mgmt_util]}},
    {load_object_code,
        {emqx_dashboard,"4.3.1",
            [emqx_dashboard,emqx_dashboard_admin,emqx_dashboard_api,
             emqx_dashboard_app,emqx_dashboard_cli,emqx_dashboard_sup]}},
    point_of_no_return,
    {load,{ssl_cipher,brutal_purge,soft_purge}},
    {load,{cuttlefish_duration_parse,brutal_purge,soft_purge}},
    {load,{emqx_vm,brutal_purge,soft_purge}},
    {load,{emqx_sys_mon,brutal_purge,soft_purge}},
    {load,{emqx_http_lib,brutal_purge,soft_purge}},
    {load,{emqx_connection,brutal_purge,soft_purge}},
    {load,{emqx_channel,brutal_purge,soft_purge}},
    {load,{emqx_ws_connection,brutal_purge,soft_purge}},
    {load,{emqx_pqueue,brutal_purge,soft_purge}},
    {load,{emqx_mqueue,brutal_purge,soft_purge}},
    {load,{emqx_alarm_handler,brutal_purge,soft_purge}},
    {load,{emqx_misc,brutal_purge,soft_purge}},
    {load,{emqx_cm,brutal_purge,soft_purge}},
    {load,{emqx_access_rule,brutal_purge,soft_purge}},
    {load,{emqx_ctl,brutal_purge,soft_purge}},
    {load,{emqx_frame,brutal_purge,soft_purge}},
    {load,{emqx_rpc,brutal_purge,soft_purge}},
    {load,{emqx_app,brutal_purge,soft_purge}},
    {load,{ekka_cluster_dns,brutal_purge,soft_purge}},
    {load,{ekka_ring,brutal_purge,soft_purge}},
    {load,{ekka_node_monitor,brutal_purge,soft_purge}},
    {load,{ekka_autocluster,brutal_purge,soft_purge}},
    {load,{ekka_autoheal,brutal_purge,soft_purge}},
    {load,{ekka_locker,brutal_purge,soft_purge}},
    {load,{ekka_httpc,brutal_purge,soft_purge}},
    {load,{ekka_mnesia,brutal_purge,soft_purge}},
    {load,{emqx_plugin_libs_ssl,brutal_purge,soft_purge}},
    {load,{emqx_mod_presence,brutal_purge,soft_purge}},
    {load,{emqx_retainer,brutal_purge,soft_purge}},
    {load,{emqx_bridge_mqtt_actions,brutal_purge,soft_purge}},
    {load,{emqx_sn_registry,brutal_purge,soft_purge}},
    {load,{emqx_coap_mqtt_adapter,brutal_purge,soft_purge}},
    {apply,{application,stop,[emqx_stomp]}},
    {remove,{emqx_stomp,brutal_purge,brutal_purge}},
    {remove,{emqx_stomp_connection,brutal_purge,brutal_purge}},
    {remove,{emqx_stomp_frame,brutal_purge,brutal_purge}},
    {remove,{emqx_stomp_heartbeat,brutal_purge,brutal_purge}},
    {remove,{emqx_stomp_protocol,brutal_purge,brutal_purge}},
    {purge,
        [emqx_stomp,emqx_stomp_connection,emqx_stomp_frame,
         emqx_stomp_heartbeat,emqx_stomp_protocol]},
    {load,{emqx_stomp,brutal_purge,brutal_purge}},
    {load,{emqx_stomp_connection,brutal_purge,brutal_purge}},
    {load,{emqx_stomp_frame,brutal_purge,brutal_purge}},
    {load,{emqx_stomp_heartbeat,brutal_purge,brutal_purge}},
    {load,{emqx_stomp_protocol,brutal_purge,brutal_purge}},
    {apply,{application,load,[emqx_stomp]}},
    {load,{gun,brutal_purge,soft_purge}},
    {suspend,[ehttpc]},
    {code_change,down,[{ehttpc,[no_enable_pipelining]}]},
    {load,{ehttpc,brutal_purge,brutal_purge}},
    {resume,[ehttpc]},
    {load,{ehttpc_pool,brutal_purge,soft_purge}},
    {apply,{application,stop,[emqx_auth_http]}},
    {remove,{emqx_acl_http,brutal_purge,brutal_purge}},
    {remove,{emqx_auth_http,brutal_purge,brutal_purge}},
    {remove,{emqx_auth_http_app,brutal_purge,brutal_purge}},
    {remove,{emqx_auth_http_cli,brutal_purge,brutal_purge}},
    {remove,{emqx_auth_http_sup,brutal_purge,brutal_purge}},
    {purge,
        [emqx_acl_http,emqx_auth_http,emqx_auth_http_app,emqx_auth_http_cli,
         emqx_auth_http_sup]},
    {load,{emqx_acl_http,brutal_purge,brutal_purge}},
    {load,{emqx_auth_http,brutal_purge,brutal_purge}},
    {load,{emqx_auth_http_app,brutal_purge,brutal_purge}},
    {load,{emqx_auth_http_cli,brutal_purge,brutal_purge}},
    {load,{emqx_auth_http_sup,brutal_purge,brutal_purge}},
    {apply,{application,load,[emqx_auth_http]}},
    {load,{ecpool_worker,brutal_purge,soft_purge}},
    {load,{ecpool_sup,brutal_purge,soft_purge}},
    {apply,{emqx_acl_mnesia_migrator,stop_supervised,[]}},
    {suspend,[emqx_auth_mnesia_sup]},
    {load,{emqx_auth_mnesia_sup,brutal_purge,brutal_purge}},
    {code_change,down,[{emqx_auth_mnesia_sup,[]}]},
    {resume,[emqx_auth_mnesia_sup]},
    {load,{emqx_acl_mnesia_cli,brutal_purge,soft_purge}},
    {load,{emqx_acl_mnesia_api,brutal_purge,soft_purge}},
    {load,{emqx_auth_mnesia_api,brutal_purge,soft_purge}},
    {load,{emqx_acl_mnesia,brutal_purge,soft_purge}},
    {remove,{emqx_acl_mnesia_migrator,brutal_purge,brutal_purge}},
    {purge,[emqx_acl_mnesia_migrator]},
    {remove,{emqx_acl_mnesia_db,brutal_purge,brutal_purge}},
    {purge,[emqx_acl_mnesia_db]},
    {apply,{application,stop,[emqx_web_hook]}},
    {load,{emqx_web_hook_app,brutal_purge,soft_purge}},
    {load,{emqx_web_hook,brutal_purge,soft_purge}},
    {load,{emqx_web_hook_actions,brutal_purge,soft_purge}},
    {load,{emqx_rule_engine,brutal_purge,soft_purge}},
    {load,{emqx_rule_actions,brutal_purge,soft_purge}},
    {load,{emqx_rule_registry,brutal_purge,soft_purge}},
    {load,{emqx_lwm2m_protocol,brutal_purge,soft_purge}},
    {load,{emqx_lwm2m_message,brutal_purge,soft_purge}},
    {load,{emqx_auth_ldap_cli,brutal_purge,soft_purge}},
    {apply,{application,stop,[mongodb]}},
    {remove,{mc_auth_logic,brutal_purge,brutal_purge}},
    {remove,{mc_connection_man,brutal_purge,brutal_purge}},
    {remove,{mc_cursor,brutal_purge,brutal_purge}},
    {remove,{mc_monitor,brutal_purge,brutal_purge}},
    {remove,{mc_pool_sup,brutal_purge,brutal_purge}},
    {remove,{mc_selecting_logics,brutal_purge,brutal_purge}},
    {remove,{mc_server,brutal_purge,brutal_purge}},
    {remove,{mc_super_sup,brutal_purge,brutal_purge}},
    {remove,{mc_topology,brutal_purge,brutal_purge}},
    {remove,{mc_topology_logics,brutal_purge,brutal_purge}},
    {remove,{mc_utils,brutal_purge,brutal_purge}},
    {remove,{mc_worker,brutal_purge,brutal_purge}},
    {remove,{mc_worker_api,brutal_purge,brutal_purge}},
    {remove,{mc_worker_logic,brutal_purge,brutal_purge}},
    {remove,{mongo_api,brutal_purge,brutal_purge}},
    {remove,{mongo_app,brutal_purge,brutal_purge}},
    {remove,{mongo_id_server,brutal_purge,brutal_purge}},
    {remove,{mongo_protocol,brutal_purge,brutal_purge}},
    {remove,{mongoc,brutal_purge,brutal_purge}},
    {purge,
        [mc_auth_logic,mc_connection_man,mc_cursor,mc_monitor,mc_pool_sup,
         mc_selecting_logics,mc_server,mc_super_sup,mc_topology,
         mc_topology_logics,mc_utils,mc_worker,mc_worker_api,mc_worker_logic,
         mongo_api,mongo_app,mongo_id_server,mongo_protocol,mongoc]},
    {load,{mc_auth_logic,brutal_purge,brutal_purge}},
    {load,{mc_connection_man,brutal_purge,brutal_purge}},
    {load,{mc_cursor,brutal_purge,brutal_purge}},
    {load,{mc_monitor,brutal_purge,brutal_purge}},
    {load,{mc_pool_sup,brutal_purge,brutal_purge}},
    {load,{mc_selecting_logics,brutal_purge,brutal_purge}},
    {load,{mc_server,brutal_purge,brutal_purge}},
    {load,{mc_super_sup,brutal_purge,brutal_purge}},
    {load,{mc_topology,brutal_purge,brutal_purge}},
    {load,{mc_topology_logics,brutal_purge,brutal_purge}},
    {load,{mc_utils,brutal_purge,brutal_purge}},
    {load,{mc_worker,brutal_purge,brutal_purge}},
    {load,{mc_worker_api,brutal_purge,brutal_purge}},
    {load,{mc_worker_logic,brutal_purge,brutal_purge}},
    {load,{mongo_api,brutal_purge,brutal_purge}},
    {load,{mongo_app,brutal_purge,brutal_purge}},
    {load,{mongo_id_server,brutal_purge,brutal_purge}},
    {load,{mongo_protocol,brutal_purge,brutal_purge}},
    {load,{mongoc,brutal_purge,brutal_purge}},
    {apply,{application,start,[mongodb,permanent]}},
    {remove,{grpc_utils,brutal_purge,brutal_purge}},
    {purge,[grpc_utils]},
    {load,{grpc_client,brutal_purge,soft_purge}},
    {load,{grpc_stream,brutal_purge,soft_purge}},
    {apply,{application,stop,[emqx_exhook]}},
    {remove,{emqx_exhook,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_app,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_cli,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_handler,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_mngr,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_pb,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_server,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_sup,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_v_1_hook_provider_bhvr,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_v_1_hook_provider_client,brutal_purge,brutal_purge}},
    {purge,
        [emqx_exhook,emqx_exhook_app,emqx_exhook_cli,emqx_exhook_handler,
         emqx_exhook_mngr,emqx_exhook_pb,emqx_exhook_server,emqx_exhook_sup,
         emqx_exhook_v_1_hook_provider_bhvr,
         emqx_exhook_v_1_hook_provider_client]},
    {load,{emqx_exhook,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_app,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_cli,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_handler,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_pb,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_server,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_sup,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_v_1_hook_provider_bhvr,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_v_1_hook_provider_client,brutal_purge,brutal_purge}},
    {apply,{application,load,[emqx_exhook]}},
    {load,{emqx_exproto_gsvr,brutal_purge,soft_purge}},
    {load,{emqx_exproto_gcli,brutal_purge,soft_purge}},
    {load,{emqx_exproto_conn,brutal_purge,soft_purge}},
    {load,{emqx_exproto_channel,brutal_purge,soft_purge}},
    {load,{minirest,brutal_purge,soft_purge}},
    {load,{minirest_handler,brutal_purge,soft_purge}},
    {apply,{minirest,stop_http,['http:management']}},
    {apply,{minirest,stop_http,['https:management']}},
    {apply,{application,stop,[emqx_management]}},
    {remove,{emqx_mgmt,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_acl,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_alarms,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_apps,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_banned,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_brokers,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_clients,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_data,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_listeners,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_metrics,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_nodes,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_plugins,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_pubsub,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_routes,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_stats,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_subscriptions,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_app,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_auth,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_cli,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_data_backup,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_http,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_sup,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_util,brutal_purge,brutal_purge}},
    {purge,
        [emqx_mgmt,emqx_mgmt_api,emqx_mgmt_api_acl,emqx_mgmt_api_alarms,
         emqx_mgmt_api_apps,emqx_mgmt_api_banned,emqx_mgmt_api_brokers,
         emqx_mgmt_api_clients,emqx_mgmt_api_data,emqx_mgmt_api_listeners,
         emqx_mgmt_api_metrics,emqx_mgmt_api_nodes,emqx_mgmt_api_plugins,
         emqx_mgmt_api_pubsub,emqx_mgmt_api_routes,emqx_mgmt_api_stats,
         emqx_mgmt_api_subscriptions,emqx_mgmt_app,emqx_mgmt_auth,
         emqx_mgmt_cli,emqx_mgmt_data_backup,emqx_mgmt_http,emqx_mgmt_sup,
         emqx_mgmt_util]},
    {load,{emqx_mgmt,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_acl,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_alarms,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_apps,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_banned,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_brokers,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_clients,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_data,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_listeners,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_metrics,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_nodes,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_plugins,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_pubsub,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_routes,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_stats,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_subscriptions,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_app,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_auth,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_cli,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_data_backup,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_http,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_sup,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_util,brutal_purge,brutal_purge}},
    {apply,{application,load,[emqx_management]}},
    {apply,{emqx_rule_engine,load_providers,[]}},
    {apply,{application,stop,[emqx_dashboard]}},
    {remove,{emqx_dashboard,brutal_purge,brutal_purge}},
    {remove,{emqx_dashboard_admin,brutal_purge,brutal_purge}},
    {remove,{emqx_dashboard_api,brutal_purge,brutal_purge}},
    {remove,{emqx_dashboard_app,brutal_purge,brutal_purge}},
    {remove,{emqx_dashboard_cli,brutal_purge,brutal_purge}},
    {remove,{emqx_dashboard_sup,brutal_purge,brutal_purge}},
    {purge,
        [emqx_dashboard,emqx_dashboard_admin,emqx_dashboard_api,
         emqx_dashboard_app,emqx_dashboard_cli,emqx_dashboard_sup]},
    {load,{emqx_dashboard,brutal_purge,brutal_purge}},
    {load,{emqx_dashboard_admin,brutal_purge,brutal_purge}},
    {load,{emqx_dashboard_api,brutal_purge,brutal_purge}},
    {load,{emqx_dashboard_app,brutal_purge,brutal_purge}},
    {load,{emqx_dashboard_cli,brutal_purge,brutal_purge}},
    {load,{emqx_dashboard_sup,brutal_purge,brutal_purge}},
    {apply,{application,load,[emqx_dashboard]}},
    {apply,{emqx_plugins,load,[]}}]},
  {"4.3.9",[],
   [{load_object_code,{ssl,"10.2.4.2",[ssl_cipher]}},
    {load_object_code,
        {emqx,"4.3.10",
            [emqx_channel,emqx_vm,emqx_sys_mon,emqx_http_lib,emqx_app,
             emqx_frame,emqx_connection]}},
    {load_object_code,
        {ekka,"0.8.1.4",
            [ekka_node_monitor,ekka_autocluster,ekka_autoheal,ekka_locker,
             ekka_cluster_dns]}},
    {load_object_code,{emqx_retainer,"4.3.1",[emqx_retainer]}},
    {load_object_code,{emqx_bridge_mqtt,"4.3.2",[emqx_bridge_mqtt_actions]}},
    {load_object_code,{emqx_sn,"4.3.3",[emqx_sn_registry]}},
    {load_object_code,{emqx_coap,"4.3.0",[emqx_coap_mqtt_adapter]}},
    {load_object_code,
        {emqx_stomp,"4.3.1",[emqx_stomp_protocol,emqx_stomp_connection]}},
    {load_object_code,{gun,"1.3.5",[gun]}},
    {load_object_code,{ehttpc,"0.1.10",[ehttpc,ehttpc_pool]}},
    {load_object_code,
        {emqx_auth_http,"4.3.2",[emqx_auth_http_app,emqx_auth_http_cli]}},
    {load_object_code,{ecpool,"0.5.1",[ecpool_worker,ecpool_sup]}},
    {load_object_code,
        {emqx_web_hook,"4.3.7",[emqx_web_hook_app,emqx_web_hook_actions]}},
    {load_object_code,{emqx_rule_engine,"4.3.5",[emqx_rule_registry]}},
    {load_object_code,{emqx_lwm2m,"4.3.4",[emqx_lwm2m_protocol]}},
    {load_object_code,
        {emqx_exproto,"4.3.2",[emqx_exproto_conn,emqx_exproto_channel]}},
    {load_object_code,
        {emqx_management,"4.3.8",
            [emqx_mgmt,emqx_mgmt_api,emqx_mgmt_api_acl,emqx_mgmt_api_alarms,
             emqx_mgmt_api_apps,emqx_mgmt_api_banned,emqx_mgmt_api_brokers,
             emqx_mgmt_api_clients,emqx_mgmt_api_data,emqx_mgmt_api_listeners,
             emqx_mgmt_api_metrics,emqx_mgmt_api_nodes,emqx_mgmt_api_plugins,
             emqx_mgmt_api_pubsub,emqx_mgmt_api_routes,emqx_mgmt_api_stats,
             emqx_mgmt_api_subscriptions,emqx_mgmt_app,emqx_mgmt_auth,
             emqx_mgmt_cli,emqx_mgmt_data_backup,emqx_mgmt_http,emqx_mgmt_sup,
             emqx_mgmt_util]}},
    {load_object_code,
        {emqx_dashboard,"4.3.5",
            [emqx_dashboard,emqx_dashboard_admin,emqx_dashboard_api,
             emqx_dashboard_app,emqx_dashboard_cli,emqx_dashboard_sup]}},
    point_of_no_return,
    {load,{ssl_cipher,brutal_purge,soft_purge}},
    {load,{emqx_channel,brutal_purge,soft_purge}},
    {load,{emqx_vm,brutal_purge,soft_purge}},
    {load,{emqx_sys_mon,brutal_purge,soft_purge}},
    {load,{emqx_http_lib,brutal_purge,soft_purge}},
    {load,{emqx_app,brutal_purge,soft_purge}},
    {load,{emqx_frame,brutal_purge,soft_purge}},
    {load,{emqx_connection,brutal_purge,soft_purge}},
    {load,{ekka_node_monitor,brutal_purge,soft_purge}},
    {load,{ekka_autocluster,brutal_purge,soft_purge}},
    {load,{ekka_autoheal,brutal_purge,soft_purge}},
    {load,{ekka_locker,brutal_purge,soft_purge}},
    {load,{ekka_cluster_dns,brutal_purge,soft_purge}},
    {load,{emqx_retainer,brutal_purge,soft_purge}},
    {load,{emqx_bridge_mqtt_actions,brutal_purge,soft_purge}},
    {load,{emqx_sn_registry,brutal_purge,soft_purge}},
    {load,{emqx_coap_mqtt_adapter,brutal_purge,soft_purge}},
    {load,{emqx_stomp_protocol,brutal_purge,soft_purge}},
    {load,{emqx_stomp_connection,brutal_purge,soft_purge}},
    {load,{gun,brutal_purge,soft_purge}},
    {load,{ehttpc,brutal_purge,soft_purge}},
    {load,{ehttpc_pool,brutal_purge,soft_purge}},
    {apply,{application,stop,[emqx_auth_http]}},
    {load,{emqx_auth_http_app,brutal_purge,soft_purge}},
    {load,{emqx_auth_http_cli,brutal_purge,soft_purge}},
    {load,{ecpool_worker,brutal_purge,soft_purge}},
    {load,{ecpool_sup,brutal_purge,soft_purge}},
    {apply,{application,stop,[emqx_web_hook]}},
    {load,{emqx_web_hook_app,brutal_purge,soft_purge}},
    {load,{emqx_web_hook_actions,brutal_purge,soft_purge}},
    {load,{emqx_rule_registry,brutal_purge,soft_purge}},
    {load,{emqx_lwm2m_protocol,brutal_purge,soft_purge}},
    {load,{emqx_exproto_conn,brutal_purge,soft_purge}},
    {load,{emqx_exproto_channel,brutal_purge,soft_purge}},
    {apply,{minirest,stop_http,['http:management']}},
    {apply,{minirest,stop_http,['https:management']}},
    {apply,{application,stop,[emqx_management]}},
    {remove,{emqx_mgmt,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_acl,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_alarms,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_apps,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_banned,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_brokers,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_clients,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_data,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_listeners,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_metrics,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_nodes,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_plugins,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_pubsub,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_routes,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_stats,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_subscriptions,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_app,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_auth,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_cli,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_data_backup,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_http,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_sup,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_util,brutal_purge,brutal_purge}},
    {purge,
        [emqx_mgmt,emqx_mgmt_api,emqx_mgmt_api_acl,emqx_mgmt_api_alarms,
         emqx_mgmt_api_apps,emqx_mgmt_api_banned,emqx_mgmt_api_brokers,
         emqx_mgmt_api_clients,emqx_mgmt_api_data,emqx_mgmt_api_listeners,
         emqx_mgmt_api_metrics,emqx_mgmt_api_nodes,emqx_mgmt_api_plugins,
         emqx_mgmt_api_pubsub,emqx_mgmt_api_routes,emqx_mgmt_api_stats,
         emqx_mgmt_api_subscriptions,emqx_mgmt_app,emqx_mgmt_auth,
         emqx_mgmt_cli,emqx_mgmt_data_backup,emqx_mgmt_http,emqx_mgmt_sup,
         emqx_mgmt_util]},
    {load,{emqx_mgmt,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_acl,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_alarms,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_apps,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_banned,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_brokers,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_clients,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_data,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_listeners,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_metrics,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_nodes,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_plugins,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_pubsub,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_routes,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_stats,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_subscriptions,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_app,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_auth,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_cli,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_data_backup,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_http,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_sup,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_util,brutal_purge,brutal_purge}},
    {apply,{application,load,[emqx_management]}},
    {apply,{emqx_rule_engine,load_providers,[]}},
    {apply,{application,stop,[emqx_dashboard]}},
    {remove,{emqx_dashboard,brutal_purge,brutal_purge}},
    {remove,{emqx_dashboard_admin,brutal_purge,brutal_purge}},
    {remove,{emqx_dashboard_api,brutal_purge,brutal_purge}},
    {remove,{emqx_dashboard_app,brutal_purge,brutal_purge}},
    {remove,{emqx_dashboard_cli,brutal_purge,brutal_purge}},
    {remove,{emqx_dashboard_sup,brutal_purge,brutal_purge}},
    {purge,
        [emqx_dashboard,emqx_dashboard_admin,emqx_dashboard_api,
         emqx_dashboard_app,emqx_dashboard_cli,emqx_dashboard_sup]},
    {load,{emqx_dashboard,brutal_purge,brutal_purge}},
    {load,{emqx_dashboard_admin,brutal_purge,brutal_purge}},
    {load,{emqx_dashboard_api,brutal_purge,brutal_purge}},
    {load,{emqx_dashboard_app,brutal_purge,brutal_purge}},
    {load,{emqx_dashboard_cli,brutal_purge,brutal_purge}},
    {load,{emqx_dashboard_sup,brutal_purge,brutal_purge}},
    {apply,{application,load,[emqx_dashboard]}},
    {apply,{emqx_plugins,load,[]}}]},
  {"4.3.8",[],
   [{load_object_code,{ssl,"10.2.4.2",[ssl_cipher]}},
    {load_object_code,
        {emqx,"4.3.8",
            [emqx_vm,emqx_sys_mon,emqx_http_lib,emqx_connection,emqx_channel,
             emqx_cm,emqx_ws_connection,emqx_pqueue,emqx_mqueue,emqx_frame,
             emqx_rpc,emqx_app]}},
    {load_object_code,
        {ekka,"0.8.1.2",
            [ekka_ring,ekka_cluster_dns,ekka_node_monitor,ekka_autocluster,
             ekka_autoheal,ekka_locker,ekka_httpc]}},
    {load_object_code,{emqx_plugin_libs,"4.3.0",[emqx_plugin_libs_ssl]}},
    {load_object_code,{emqx_retainer,"4.3.1",[emqx_retainer]}},
    {load_object_code,{emqx_bridge_mqtt,"4.3.2",[emqx_bridge_mqtt_actions]}},
    {load_object_code,{emqx_sn,"4.3.3",[emqx_sn_registry]}},
    {load_object_code,{emqx_coap,"4.3.0",[emqx_coap_mqtt_adapter]}},
    {load_object_code,
        {emqx_stomp,"4.3.0",
            [emqx_stomp,emqx_stomp_connection,emqx_stomp_frame,
             emqx_stomp_heartbeat,emqx_stomp_protocol]}},
    {load_object_code,{gun,"1.3.5",[gun]}},
    {load_object_code,{ehttpc,"0.1.10",[ehttpc,ehttpc_pool]}},
    {load_object_code,
        {emqx_auth_http,"4.3.2",[emqx_auth_http_app,emqx_auth_http_cli]}},
    {load_object_code,{ecpool,"0.5.1",[ecpool_worker,ecpool_sup]}},
    {load_object_code,
        {emqx_auth_mnesia,"4.3.2",
            [emqx_auth_mnesia_sup,emqx_acl_mnesia_cli,emqx_acl_mnesia_api,
             emqx_auth_mnesia_api,emqx_acl_mnesia]}},
    {load_object_code,
        {emqx_web_hook,"4.3.5",[emqx_web_hook_app,emqx_web_hook_actions]}},
    {load_object_code,
        {emqx_rule_engine,"4.3.4",[emqx_rule_engine,emqx_rule_registry]}},
    {load_object_code,{emqx_lwm2m,"4.3.3",[emqx_lwm2m_protocol]}},
    {load_object_code,
        {mongodb,"3.0.0",
            [mc_auth_logic,mc_connection_man,mc_cursor,mc_monitor,mc_pool_sup,
             mc_selecting_logics,mc_server,mc_super_sup,mc_topology,
             mc_topology_logics,mc_utils,mc_worker,mc_worker_api,
             mc_worker_logic,mongo_api,mongo_app,mongo_id_server,
             mongo_protocol,mongoc]}},
    {load_object_code,
        {emqx_exproto,"4.3.2",[emqx_exproto_conn,emqx_exproto_channel]}},
    {load_object_code,
        {emqx_management,"4.3.6",
            [emqx_mgmt,emqx_mgmt_api,emqx_mgmt_api_acl,emqx_mgmt_api_alarms,
             emqx_mgmt_api_apps,emqx_mgmt_api_banned,emqx_mgmt_api_brokers,
             emqx_mgmt_api_clients,emqx_mgmt_api_data,emqx_mgmt_api_listeners,
             emqx_mgmt_api_metrics,emqx_mgmt_api_nodes,emqx_mgmt_api_plugins,
             emqx_mgmt_api_pubsub,emqx_mgmt_api_routes,emqx_mgmt_api_stats,
             emqx_mgmt_api_subscriptions,emqx_mgmt_app,emqx_mgmt_auth,
             emqx_mgmt_cli,emqx_mgmt_data_backup,emqx_mgmt_http,emqx_mgmt_sup,
             emqx_mgmt_util]}},
    {load_object_code,
        {emqx_dashboard,"4.3.4",
            [emqx_dashboard,emqx_dashboard_admin,emqx_dashboard_api,
             emqx_dashboard_app,emqx_dashboard_cli,emqx_dashboard_sup]}},
    point_of_no_return,
    {load,{ssl_cipher,brutal_purge,soft_purge}},
    {load,{emqx_vm,brutal_purge,soft_purge}},
    {load,{emqx_sys_mon,brutal_purge,soft_purge}},
    {load,{emqx_http_lib,brutal_purge,soft_purge}},
    {load,{emqx_connection,brutal_purge,soft_purge}},
    {load,{emqx_channel,brutal_purge,soft_purge}},
    {load,{emqx_cm,brutal_purge,soft_purge}},
    {load,{emqx_ws_connection,brutal_purge,soft_purge}},
    {load,{emqx_pqueue,brutal_purge,soft_purge}},
    {load,{emqx_mqueue,brutal_purge,soft_purge}},
    {load,{emqx_frame,brutal_purge,soft_purge}},
    {load,{emqx_rpc,brutal_purge,soft_purge}},
    {load,{emqx_app,brutal_purge,soft_purge}},
    {load,{ekka_ring,brutal_purge,soft_purge}},
    {load,{ekka_cluster_dns,brutal_purge,soft_purge}},
    {load,{ekka_node_monitor,brutal_purge,soft_purge}},
    {load,{ekka_autocluster,brutal_purge,soft_purge}},
    {load,{ekka_autoheal,brutal_purge,soft_purge}},
    {load,{ekka_locker,brutal_purge,soft_purge}},
    {load,{ekka_httpc,brutal_purge,soft_purge}},
    {load,{emqx_plugin_libs_ssl,brutal_purge,soft_purge}},
    {load,{emqx_retainer,brutal_purge,soft_purge}},
    {load,{emqx_bridge_mqtt_actions,brutal_purge,soft_purge}},
    {load,{emqx_sn_registry,brutal_purge,soft_purge}},
    {load,{emqx_coap_mqtt_adapter,brutal_purge,soft_purge}},
    {apply,{application,stop,[emqx_stomp]}},
    {remove,{emqx_stomp,brutal_purge,brutal_purge}},
    {remove,{emqx_stomp_connection,brutal_purge,brutal_purge}},
    {remove,{emqx_stomp_frame,brutal_purge,brutal_purge}},
    {remove,{emqx_stomp_heartbeat,brutal_purge,brutal_purge}},
    {remove,{emqx_stomp_protocol,brutal_purge,brutal_purge}},
    {purge,
        [emqx_stomp,emqx_stomp_connection,emqx_stomp_frame,
         emqx_stomp_heartbeat,emqx_stomp_protocol]},
    {load,{emqx_stomp,brutal_purge,brutal_purge}},
    {load,{emqx_stomp_connection,brutal_purge,brutal_purge}},
    {load,{emqx_stomp_frame,brutal_purge,brutal_purge}},
    {load,{emqx_stomp_heartbeat,brutal_purge,brutal_purge}},
    {load,{emqx_stomp_protocol,brutal_purge,brutal_purge}},
    {apply,{application,load,[emqx_stomp]}},
    {load,{gun,brutal_purge,soft_purge}},
    {load,{ehttpc,brutal_purge,soft_purge}},
    {load,{ehttpc_pool,brutal_purge,soft_purge}},
    {apply,{application,stop,[emqx_auth_http]}},
    {load,{emqx_auth_http_app,brutal_purge,soft_purge}},
    {load,{emqx_auth_http_cli,brutal_purge,soft_purge}},
    {load,{ecpool_worker,brutal_purge,soft_purge}},
    {load,{ecpool_sup,brutal_purge,soft_purge}},
    {apply,{emqx_acl_mnesia_migrator,stop_supervised,[]}},
    {suspend,[emqx_auth_mnesia_sup]},
    {load,{emqx_auth_mnesia_sup,brutal_purge,brutal_purge}},
    {code_change,down,[{emqx_auth_mnesia_sup,[]}]},
    {resume,[emqx_auth_mnesia_sup]},
    {load,{emqx_acl_mnesia_cli,brutal_purge,soft_purge}},
    {load,{emqx_acl_mnesia_api,brutal_purge,soft_purge}},
    {load,{emqx_auth_mnesia_api,brutal_purge,soft_purge}},
    {load,{emqx_acl_mnesia,brutal_purge,soft_purge}},
    {remove,{emqx_acl_mnesia_migrator,brutal_purge,brutal_purge}},
    {purge,[emqx_acl_mnesia_migrator]},
    {remove,{emqx_acl_mnesia_db,brutal_purge,brutal_purge}},
    {purge,[emqx_acl_mnesia_db]},
    {apply,{application,stop,[emqx_web_hook]}},
    {load,{emqx_web_hook_app,brutal_purge,soft_purge}},
    {load,{emqx_web_hook_actions,brutal_purge,soft_purge}},
    {load,{emqx_rule_engine,brutal_purge,soft_purge}},
    {load,{emqx_rule_registry,brutal_purge,soft_purge}},
    {load,{emqx_lwm2m_protocol,brutal_purge,soft_purge}},
    {apply,{application,stop,[mongodb]}},
    {remove,{mc_auth_logic,brutal_purge,brutal_purge}},
    {remove,{mc_connection_man,brutal_purge,brutal_purge}},
    {remove,{mc_cursor,brutal_purge,brutal_purge}},
    {remove,{mc_monitor,brutal_purge,brutal_purge}},
    {remove,{mc_pool_sup,brutal_purge,brutal_purge}},
    {remove,{mc_selecting_logics,brutal_purge,brutal_purge}},
    {remove,{mc_server,brutal_purge,brutal_purge}},
    {remove,{mc_super_sup,brutal_purge,brutal_purge}},
    {remove,{mc_topology,brutal_purge,brutal_purge}},
    {remove,{mc_topology_logics,brutal_purge,brutal_purge}},
    {remove,{mc_utils,brutal_purge,brutal_purge}},
    {remove,{mc_worker,brutal_purge,brutal_purge}},
    {remove,{mc_worker_api,brutal_purge,brutal_purge}},
    {remove,{mc_worker_logic,brutal_purge,brutal_purge}},
    {remove,{mongo_api,brutal_purge,brutal_purge}},
    {remove,{mongo_app,brutal_purge,brutal_purge}},
    {remove,{mongo_id_server,brutal_purge,brutal_purge}},
    {remove,{mongo_protocol,brutal_purge,brutal_purge}},
    {remove,{mongoc,brutal_purge,brutal_purge}},
    {purge,
        [mc_auth_logic,mc_connection_man,mc_cursor,mc_monitor,mc_pool_sup,
         mc_selecting_logics,mc_server,mc_super_sup,mc_topology,
         mc_topology_logics,mc_utils,mc_worker,mc_worker_api,mc_worker_logic,
         mongo_api,mongo_app,mongo_id_server,mongo_protocol,mongoc]},
    {load,{mc_auth_logic,brutal_purge,brutal_purge}},
    {load,{mc_connection_man,brutal_purge,brutal_purge}},
    {load,{mc_cursor,brutal_purge,brutal_purge}},
    {load,{mc_monitor,brutal_purge,brutal_purge}},
    {load,{mc_pool_sup,brutal_purge,brutal_purge}},
    {load,{mc_selecting_logics,brutal_purge,brutal_purge}},
    {load,{mc_server,brutal_purge,brutal_purge}},
    {load,{mc_super_sup,brutal_purge,brutal_purge}},
    {load,{mc_topology,brutal_purge,brutal_purge}},
    {load,{mc_topology_logics,brutal_purge,brutal_purge}},
    {load,{mc_utils,brutal_purge,brutal_purge}},
    {load,{mc_worker,brutal_purge,brutal_purge}},
    {load,{mc_worker_api,brutal_purge,brutal_purge}},
    {load,{mc_worker_logic,brutal_purge,brutal_purge}},
    {load,{mongo_api,brutal_purge,brutal_purge}},
    {load,{mongo_app,brutal_purge,brutal_purge}},
    {load,{mongo_id_server,brutal_purge,brutal_purge}},
    {load,{mongo_protocol,brutal_purge,brutal_purge}},
    {load,{mongoc,brutal_purge,brutal_purge}},
    {apply,{application,start,[mongodb,permanent]}},
    {load,{emqx_exproto_conn,brutal_purge,soft_purge}},
    {load,{emqx_exproto_channel,brutal_purge,soft_purge}},
    {apply,{minirest,stop_http,['http:management']}},
    {apply,{minirest,stop_http,['https:management']}},
    {apply,{application,stop,[emqx_management]}},
    {remove,{emqx_mgmt,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_acl,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_alarms,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_apps,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_banned,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_brokers,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_clients,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_data,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_listeners,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_metrics,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_nodes,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_plugins,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_pubsub,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_routes,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_stats,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_subscriptions,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_app,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_auth,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_cli,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_data_backup,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_http,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_sup,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_util,brutal_purge,brutal_purge}},
    {purge,
        [emqx_mgmt,emqx_mgmt_api,emqx_mgmt_api_acl,emqx_mgmt_api_alarms,
         emqx_mgmt_api_apps,emqx_mgmt_api_banned,emqx_mgmt_api_brokers,
         emqx_mgmt_api_clients,emqx_mgmt_api_data,emqx_mgmt_api_listeners,
         emqx_mgmt_api_metrics,emqx_mgmt_api_nodes,emqx_mgmt_api_plugins,
         emqx_mgmt_api_pubsub,emqx_mgmt_api_routes,emqx_mgmt_api_stats,
         emqx_mgmt_api_subscriptions,emqx_mgmt_app,emqx_mgmt_auth,
         emqx_mgmt_cli,emqx_mgmt_data_backup,emqx_mgmt_http,emqx_mgmt_sup,
         emqx_mgmt_util]},
    {load,{emqx_mgmt,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_acl,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_alarms,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_apps,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_banned,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_brokers,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_clients,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_data,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_listeners,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_metrics,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_nodes,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_plugins,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_pubsub,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_routes,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_stats,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_subscriptions,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_app,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_auth,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_cli,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_data_backup,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_http,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_sup,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_util,brutal_purge,brutal_purge}},
    {apply,{application,load,[emqx_management]}},
    {apply,{emqx_rule_engine,load_providers,[]}},
    {apply,{application,stop,[emqx_dashboard]}},
    {remove,{emqx_dashboard,brutal_purge,brutal_purge}},
    {remove,{emqx_dashboard_admin,brutal_purge,brutal_purge}},
    {remove,{emqx_dashboard_api,brutal_purge,brutal_purge}},
    {remove,{emqx_dashboard_app,brutal_purge,brutal_purge}},
    {remove,{emqx_dashboard_cli,brutal_purge,brutal_purge}},
    {remove,{emqx_dashboard_sup,brutal_purge,brutal_purge}},
    {purge,
        [emqx_dashboard,emqx_dashboard_admin,emqx_dashboard_api,
         emqx_dashboard_app,emqx_dashboard_cli,emqx_dashboard_sup]},
    {load,{emqx_dashboard,brutal_purge,brutal_purge}},
    {load,{emqx_dashboard_admin,brutal_purge,brutal_purge}},
    {load,{emqx_dashboard_api,brutal_purge,brutal_purge}},
    {load,{emqx_dashboard_app,brutal_purge,brutal_purge}},
    {load,{emqx_dashboard_cli,brutal_purge,brutal_purge}},
    {load,{emqx_dashboard_sup,brutal_purge,brutal_purge}},
    {apply,{application,load,[emqx_dashboard]}},
    {apply,{emqx_plugins,load,[]}}]},
  {"4.3.1",[],
   [{load_object_code,{ssl,"10.2.4.2",[ssl_cipher]}},
    {load_object_code,
        {emqx,"4.3.1",
            [emqx_vm,emqx_sys_mon,emqx_pqueue,emqx_mqueue,emqx_alarm_handler,
             emqx_misc,emqx_packet,emqx_shared_sub,emqx_ws_connection,
             emqx_connection,emqx_frame,emqx_cm,emqx_congestion,
             emqx_node_dump,emqx_channel,emqx_plugins,emqx_logger_textfmt,
             emqx_http_lib,emqx_access_rule,emqx_ctl,emqx_rpc,emqx_app]}},
    {load_object_code,
        {ekka,"0.8.1",
            [ekka_cluster_dns,ekka_ring,ekka_node_monitor,ekka_autocluster,
             ekka_autoheal,ekka_locker,ekka_httpc,ekka_mnesia]}},
    {load_object_code,{emqx_plugin_libs,"4.3.0",[emqx_plugin_libs_ssl]}},
    {load_object_code,
        {emqx_modules,"4.3.1",[emqx_mod_presence,emqx_mod_api_topic_metrics]}},
    {load_object_code,{emqx_retainer,"4.3.1",[emqx_retainer]}},
    {load_object_code,{emqtt,"1.2.3",[emqtt,emqtt_frame]}},
    {load_object_code,
        {emqx_bridge_mqtt,"4.3.0",
            [emqx_bridge_worker,emqx_bridge_mqtt_actions]}},
    {load_object_code,
        {emqx_sn,"4.3.0",
            [emqx_sn_app,emqx_sn_asleep_timer,emqx_sn_broadcast,emqx_sn_frame,
             emqx_sn_gateway,emqx_sn_registry,emqx_sn_sup]}},
    {load_object_code,{emqx_coap,"4.3.0",[emqx_coap_mqtt_adapter]}},
    {load_object_code,
        {emqx_stomp,"4.3.0",
            [emqx_stomp,emqx_stomp_connection,emqx_stomp_frame,
             emqx_stomp_heartbeat,emqx_stomp_protocol]}},
    {load_object_code,{gun,"1.3.5",[gun]}},
    {load_object_code,{ehttpc,"0.1.5",[ehttpc,ehttpc_pool]}},
    {load_object_code,
        {emqx_auth_http,"4.3.0",
            [emqx_acl_http,emqx_auth_http,emqx_auth_http_app,
             emqx_auth_http_cli,emqx_auth_http_sup]}},
    {load_object_code,{ecpool,"0.5.1",[ecpool_worker,ecpool_sup]}},
    {load_object_code,{emqx_auth_jwt,"4.3.0",[emqx_auth_jwt_svr]}},
    {load_object_code,
        {emqx_auth_mnesia,"4.3.0",
            [emqx_auth_mnesia_sup,emqx_acl_mnesia_cli,emqx_acl_mnesia_api,
             emqx_auth_mnesia_api,emqx_acl_mnesia]}},
    {load_object_code,
        {emqx_web_hook,"4.3.0",
            [emqx_web_hook_app,emqx_web_hook,emqx_web_hook_actions]}},
    {load_object_code,
        {emqx_rule_engine,"4.3.1",
            [emqx_rule_engine,emqx_rule_registry,emqx_rule_actions]}},
    {load_object_code,{emqx_telemetry,"4.3.0",[emqx_telemetry]}},
    {load_object_code,{lwm2m_coap,"1.1.2",[lwm2m_coap_channel]}},
    {load_object_code,
        {emqx_lwm2m,"4.3.1",
            [binary_util,emqx_lwm2m_app,emqx_lwm2m_cmd_handler,
             emqx_lwm2m_coap_resource,emqx_lwm2m_coap_server,emqx_lwm2m_json,
             emqx_lwm2m_message,emqx_lwm2m_protocol,emqx_lwm2m_sup,
             emqx_lwm2m_timer,emqx_lwm2m_tlv,emqx_lwm2m_xml_object,
             emqx_lwm2m_xml_object_db]}},
    {load_object_code,
        {emqx_auth_ldap,"4.3.0",[emqx_acl_ldap,emqx_auth_ldap_cli]}},
    {load_object_code,
        {mongodb,"3.0.0",
            [mc_auth_logic,mc_connection_man,mc_cursor,mc_monitor,mc_pool_sup,
             mc_selecting_logics,mc_server,mc_super_sup,mc_topology,
             mc_topology_logics,mc_utils,mc_worker,mc_worker_api,
             mc_worker_logic,mongo_api,mongo_app,mongo_id_server,
             mongo_protocol,mongoc]}},
    {load_object_code,{grpc,"0.6.2",[grpc_client,grpc_stream]}},
    {load_object_code,
        {emqx_exhook,"4.3.0",
            [emqx_exhook,emqx_exhook_app,emqx_exhook_cli,emqx_exhook_handler,
             emqx_exhook_pb,emqx_exhook_server,emqx_exhook_sup,
             emqx_exhook_v_1_hook_provider_bhvr,
             emqx_exhook_v_1_hook_provider_client]}},
    {load_object_code,
        {emqx_exproto,"4.3.0",
            [emqx_exproto_gsvr,emqx_exproto_gcli,emqx_exproto_conn,
             emqx_exproto_channel]}},
    {load_object_code,{minirest,"0.3.5",[minirest,minirest_handler]}},
    {load_object_code,
        {emqx_management,"4.3.1",
            [emqx_mgmt,emqx_mgmt_api,emqx_mgmt_api_acl,emqx_mgmt_api_alarms,
             emqx_mgmt_api_apps,emqx_mgmt_api_banned,emqx_mgmt_api_brokers,
             emqx_mgmt_api_clients,emqx_mgmt_api_data,emqx_mgmt_api_listeners,
             emqx_mgmt_api_metrics,emqx_mgmt_api_nodes,emqx_mgmt_api_plugins,
             emqx_mgmt_api_pubsub,emqx_mgmt_api_routes,emqx_mgmt_api_stats,
             emqx_mgmt_api_subscriptions,emqx_mgmt_app,emqx_mgmt_auth,
             emqx_mgmt_cli,emqx_mgmt_data_backup,emqx_mgmt_http,emqx_mgmt_sup,
             emqx_mgmt_util]}},
    {load_object_code,
        {emqx_dashboard,"4.3.0",
            [emqx_dashboard,emqx_dashboard_admin,emqx_dashboard_api,
             emqx_dashboard_app,emqx_dashboard_cli,emqx_dashboard_sup]}},
    point_of_no_return,
    {load,{ssl_cipher,brutal_purge,soft_purge}},
    {load,{emqx_vm,brutal_purge,soft_purge}},
    {load,{emqx_sys_mon,brutal_purge,soft_purge}},
    {load,{emqx_pqueue,brutal_purge,soft_purge}},
    {load,{emqx_mqueue,brutal_purge,soft_purge}},
    {load,{emqx_alarm_handler,brutal_purge,soft_purge}},
    {load,{emqx_misc,brutal_purge,soft_purge}},
    {load,{emqx_packet,brutal_purge,soft_purge}},
    {load,{emqx_shared_sub,brutal_purge,soft_purge}},
    {load,{emqx_ws_connection,brutal_purge,soft_purge}},
    {load,{emqx_connection,brutal_purge,soft_purge}},
    {load,{emqx_frame,brutal_purge,soft_purge}},
    {load,{emqx_cm,brutal_purge,soft_purge}},
    {load,{emqx_congestion,brutal_purge,soft_purge}},
    {load,{emqx_node_dump,brutal_purge,soft_purge}},
    {load,{emqx_channel,brutal_purge,soft_purge}},
    {load,{emqx_plugins,brutal_purge,soft_purge}},
    {load,{emqx_logger_textfmt,brutal_purge,soft_purge}},
    {load,{emqx_http_lib,brutal_purge,soft_purge}},
    {load,{emqx_access_rule,brutal_purge,soft_purge}},
    {load,{emqx_ctl,brutal_purge,soft_purge}},
    {load,{emqx_rpc,brutal_purge,soft_purge}},
    {load,{emqx_app,brutal_purge,soft_purge}},
    {load,{ekka_cluster_dns,brutal_purge,soft_purge}},
    {load,{ekka_ring,brutal_purge,soft_purge}},
    {load,{ekka_node_monitor,brutal_purge,soft_purge}},
    {load,{ekka_autocluster,brutal_purge,soft_purge}},
    {load,{ekka_autoheal,brutal_purge,soft_purge}},
    {load,{ekka_locker,brutal_purge,soft_purge}},
    {load,{ekka_httpc,brutal_purge,soft_purge}},
    {load,{ekka_mnesia,brutal_purge,soft_purge}},
    {load,{emqx_plugin_libs_ssl,brutal_purge,soft_purge}},
    {load,{emqx_mod_presence,brutal_purge,soft_purge}},
    {load,{emqx_mod_api_topic_metrics,brutal_purge,soft_purge}},
    {load,{emqx_retainer,brutal_purge,soft_purge}},
    {load,{emqtt,brutal_purge,soft_purge}},
    {load,{emqtt_frame,brutal_purge,soft_purge}},
    {load,{emqx_bridge_worker,brutal_purge,soft_purge}},
    {load,{emqx_bridge_mqtt_actions,brutal_purge,soft_purge}},
    {apply,{application,stop,[emqx_sn]}},
    {remove,{emqx_sn_app,brutal_purge,brutal_purge}},
    {remove,{emqx_sn_asleep_timer,brutal_purge,brutal_purge}},
    {remove,{emqx_sn_broadcast,brutal_purge,brutal_purge}},
    {remove,{emqx_sn_frame,brutal_purge,brutal_purge}},
    {remove,{emqx_sn_gateway,brutal_purge,brutal_purge}},
    {remove,{emqx_sn_registry,brutal_purge,brutal_purge}},
    {remove,{emqx_sn_sup,brutal_purge,brutal_purge}},
    {purge,
        [emqx_sn_app,emqx_sn_asleep_timer,emqx_sn_broadcast,emqx_sn_frame,
         emqx_sn_gateway,emqx_sn_registry,emqx_sn_sup]},
    {load,{emqx_sn_app,brutal_purge,brutal_purge}},
    {load,{emqx_sn_asleep_timer,brutal_purge,brutal_purge}},
    {load,{emqx_sn_broadcast,brutal_purge,brutal_purge}},
    {load,{emqx_sn_frame,brutal_purge,brutal_purge}},
    {load,{emqx_sn_gateway,brutal_purge,brutal_purge}},
    {load,{emqx_sn_registry,brutal_purge,brutal_purge}},
    {load,{emqx_sn_sup,brutal_purge,brutal_purge}},
    {apply,{application,load,[emqx_sn]}},
    {load,{emqx_coap_mqtt_adapter,brutal_purge,soft_purge}},
    {apply,{application,stop,[emqx_stomp]}},
    {remove,{emqx_stomp,brutal_purge,brutal_purge}},
    {remove,{emqx_stomp_connection,brutal_purge,brutal_purge}},
    {remove,{emqx_stomp_frame,brutal_purge,brutal_purge}},
    {remove,{emqx_stomp_heartbeat,brutal_purge,brutal_purge}},
    {remove,{emqx_stomp_protocol,brutal_purge,brutal_purge}},
    {purge,
        [emqx_stomp,emqx_stomp_connection,emqx_stomp_frame,
         emqx_stomp_heartbeat,emqx_stomp_protocol]},
    {load,{emqx_stomp,brutal_purge,brutal_purge}},
    {load,{emqx_stomp_connection,brutal_purge,brutal_purge}},
    {load,{emqx_stomp_frame,brutal_purge,brutal_purge}},
    {load,{emqx_stomp_heartbeat,brutal_purge,brutal_purge}},
    {load,{emqx_stomp_protocol,brutal_purge,brutal_purge}},
    {apply,{application,load,[emqx_stomp]}},
    {load,{gun,brutal_purge,soft_purge}},
    {suspend,[ehttpc]},
    {code_change,down,[{ehttpc,[no_enable_pipelining]}]},
    {load,{ehttpc,brutal_purge,brutal_purge}},
    {resume,[ehttpc]},
    {load,{ehttpc_pool,brutal_purge,soft_purge}},
    {apply,{application,stop,[emqx_auth_http]}},
    {remove,{emqx_acl_http,brutal_purge,brutal_purge}},
    {remove,{emqx_auth_http,brutal_purge,brutal_purge}},
    {remove,{emqx_auth_http_app,brutal_purge,brutal_purge}},
    {remove,{emqx_auth_http_cli,brutal_purge,brutal_purge}},
    {remove,{emqx_auth_http_sup,brutal_purge,brutal_purge}},
    {purge,
        [emqx_acl_http,emqx_auth_http,emqx_auth_http_app,emqx_auth_http_cli,
         emqx_auth_http_sup]},
    {load,{emqx_acl_http,brutal_purge,brutal_purge}},
    {load,{emqx_auth_http,brutal_purge,brutal_purge}},
    {load,{emqx_auth_http_app,brutal_purge,brutal_purge}},
    {load,{emqx_auth_http_cli,brutal_purge,brutal_purge}},
    {load,{emqx_auth_http_sup,brutal_purge,brutal_purge}},
    {apply,{application,load,[emqx_auth_http]}},
    {load,{ecpool_worker,brutal_purge,soft_purge}},
    {load,{ecpool_sup,brutal_purge,soft_purge}},
    {load,{emqx_auth_jwt_svr,brutal_purge,soft_purge}},
    {apply,{emqx_acl_mnesia_migrator,stop_supervised,[]}},
    {suspend,[emqx_auth_mnesia_sup]},
    {load,{emqx_auth_mnesia_sup,brutal_purge,brutal_purge}},
    {code_change,down,[{emqx_auth_mnesia_sup,[]}]},
    {resume,[emqx_auth_mnesia_sup]},
    {load,{emqx_acl_mnesia_cli,brutal_purge,soft_purge}},
    {load,{emqx_acl_mnesia_api,brutal_purge,soft_purge}},
    {load,{emqx_auth_mnesia_api,brutal_purge,soft_purge}},
    {load,{emqx_acl_mnesia,brutal_purge,soft_purge}},
    {remove,{emqx_acl_mnesia_migrator,brutal_purge,brutal_purge}},
    {purge,[emqx_acl_mnesia_migrator]},
    {remove,{emqx_acl_mnesia_db,brutal_purge,brutal_purge}},
    {purge,[emqx_acl_mnesia_db]},
    {apply,{application,stop,[emqx_web_hook]}},
    {load,{emqx_web_hook_app,brutal_purge,soft_purge}},
    {load,{emqx_web_hook,brutal_purge,soft_purge}},
    {load,{emqx_web_hook_actions,brutal_purge,soft_purge}},
    {load,{emqx_rule_engine,brutal_purge,soft_purge}},
    {load,{emqx_rule_registry,brutal_purge,soft_purge}},
    {apply,{emqx_stats,cancel_update,[rule_registery_stats]}},
    {load,{emqx_rule_actions,brutal_purge,soft_purge}},
    {load,{emqx_telemetry,brutal_purge,soft_purge}},
    {load,{lwm2m_coap_channel,brutal_purge,soft_purge}},
    {apply,{application,stop,[emqx_lwm2m]}},
    {remove,{binary_util,brutal_purge,brutal_purge}},
    {remove,{emqx_lwm2m_api,brutal_purge,brutal_purge}},
    {remove,{emqx_lwm2m_app,brutal_purge,brutal_purge}},
    {remove,{emqx_lwm2m_cm,brutal_purge,brutal_purge}},
    {remove,{emqx_lwm2m_cm_sup,brutal_purge,brutal_purge}},
    {remove,{emqx_lwm2m_cmd_handler,brutal_purge,brutal_purge}},
    {remove,{emqx_lwm2m_coap_resource,brutal_purge,brutal_purge}},
    {remove,{emqx_lwm2m_coap_server,brutal_purge,brutal_purge}},
    {remove,{emqx_lwm2m_json,brutal_purge,brutal_purge}},
    {remove,{emqx_lwm2m_message,brutal_purge,brutal_purge}},
    {remove,{emqx_lwm2m_protocol,brutal_purge,brutal_purge}},
    {remove,{emqx_lwm2m_sup,brutal_purge,brutal_purge}},
    {remove,{emqx_lwm2m_timer,brutal_purge,brutal_purge}},
    {remove,{emqx_lwm2m_tlv,brutal_purge,brutal_purge}},
    {remove,{emqx_lwm2m_xml_object,brutal_purge,brutal_purge}},
    {remove,{emqx_lwm2m_xml_object_db,brutal_purge,brutal_purge}},
    {purge,
        [binary_util,emqx_lwm2m_api,emqx_lwm2m_app,emqx_lwm2m_cm,
         emqx_lwm2m_cm_sup,emqx_lwm2m_cmd_handler,emqx_lwm2m_coap_resource,
         emqx_lwm2m_coap_server,emqx_lwm2m_json,emqx_lwm2m_message,
         emqx_lwm2m_protocol,emqx_lwm2m_sup,emqx_lwm2m_timer,emqx_lwm2m_tlv,
         emqx_lwm2m_xml_object,emqx_lwm2m_xml_object_db]},
    {load,{binary_util,brutal_purge,brutal_purge}},
    {load,{emqx_lwm2m_app,brutal_purge,brutal_purge}},
    {load,{emqx_lwm2m_cmd_handler,brutal_purge,brutal_purge}},
    {load,{emqx_lwm2m_coap_resource,brutal_purge,brutal_purge}},
    {load,{emqx_lwm2m_coap_server,brutal_purge,brutal_purge}},
    {load,{emqx_lwm2m_json,brutal_purge,brutal_purge}},
    {load,{emqx_lwm2m_message,brutal_purge,brutal_purge}},
    {load,{emqx_lwm2m_protocol,brutal_purge,brutal_purge}},
    {load,{emqx_lwm2m_sup,brutal_purge,brutal_purge}},
    {load,{emqx_lwm2m_timer,brutal_purge,brutal_purge}},
    {load,{emqx_lwm2m_tlv,brutal_purge,brutal_purge}},
    {load,{emqx_lwm2m_xml_object,brutal_purge,brutal_purge}},
    {load,{emqx_lwm2m_xml_object_db,brutal_purge,brutal_purge}},
    {apply,{application,load,[emqx_lwm2m]}},
    {load,{emqx_acl_ldap,brutal_purge,soft_purge}},
    {load,{emqx_auth_ldap_cli,brutal_purge,soft_purge}},
    {apply,{application,stop,[mongodb]}},
    {remove,{mc_auth_logic,brutal_purge,brutal_purge}},
    {remove,{mc_connection_man,brutal_purge,brutal_purge}},
    {remove,{mc_cursor,brutal_purge,brutal_purge}},
    {remove,{mc_monitor,brutal_purge,brutal_purge}},
    {remove,{mc_pool_sup,brutal_purge,brutal_purge}},
    {remove,{mc_selecting_logics,brutal_purge,brutal_purge}},
    {remove,{mc_server,brutal_purge,brutal_purge}},
    {remove,{mc_super_sup,brutal_purge,brutal_purge}},
    {remove,{mc_topology,brutal_purge,brutal_purge}},
    {remove,{mc_topology_logics,brutal_purge,brutal_purge}},
    {remove,{mc_utils,brutal_purge,brutal_purge}},
    {remove,{mc_worker,brutal_purge,brutal_purge}},
    {remove,{mc_worker_api,brutal_purge,brutal_purge}},
    {remove,{mc_worker_logic,brutal_purge,brutal_purge}},
    {remove,{mongo_api,brutal_purge,brutal_purge}},
    {remove,{mongo_app,brutal_purge,brutal_purge}},
    {remove,{mongo_id_server,brutal_purge,brutal_purge}},
    {remove,{mongo_protocol,brutal_purge,brutal_purge}},
    {remove,{mongoc,brutal_purge,brutal_purge}},
    {purge,
        [mc_auth_logic,mc_connection_man,mc_cursor,mc_monitor,mc_pool_sup,
         mc_selecting_logics,mc_server,mc_super_sup,mc_topology,
         mc_topology_logics,mc_utils,mc_worker,mc_worker_api,mc_worker_logic,
         mongo_api,mongo_app,mongo_id_server,mongo_protocol,mongoc]},
    {load,{mc_auth_logic,brutal_purge,brutal_purge}},
    {load,{mc_connection_man,brutal_purge,brutal_purge}},
    {load,{mc_cursor,brutal_purge,brutal_purge}},
    {load,{mc_monitor,brutal_purge,brutal_purge}},
    {load,{mc_pool_sup,brutal_purge,brutal_purge}},
    {load,{mc_selecting_logics,brutal_purge,brutal_purge}},
    {load,{mc_server,brutal_purge,brutal_purge}},
    {load,{mc_super_sup,brutal_purge,brutal_purge}},
    {load,{mc_topology,brutal_purge,brutal_purge}},
    {load,{mc_topology_logics,brutal_purge,brutal_purge}},
    {load,{mc_utils,brutal_purge,brutal_purge}},
    {load,{mc_worker,brutal_purge,brutal_purge}},
    {load,{mc_worker_api,brutal_purge,brutal_purge}},
    {load,{mc_worker_logic,brutal_purge,brutal_purge}},
    {load,{mongo_api,brutal_purge,brutal_purge}},
    {load,{mongo_app,brutal_purge,brutal_purge}},
    {load,{mongo_id_server,brutal_purge,brutal_purge}},
    {load,{mongo_protocol,brutal_purge,brutal_purge}},
    {load,{mongoc,brutal_purge,brutal_purge}},
    {apply,{application,start,[mongodb,permanent]}},
    {remove,{grpc_utils,brutal_purge,brutal_purge}},
    {purge,[grpc_utils]},
    {load,{grpc_client,brutal_purge,soft_purge}},
    {load,{grpc_stream,brutal_purge,soft_purge}},
    {apply,{application,stop,[emqx_exhook]}},
    {remove,{emqx_exhook,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_app,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_cli,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_handler,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_mngr,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_pb,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_server,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_sup,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_v_1_hook_provider_bhvr,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_v_1_hook_provider_client,brutal_purge,brutal_purge}},
    {purge,
        [emqx_exhook,emqx_exhook_app,emqx_exhook_cli,emqx_exhook_handler,
         emqx_exhook_mngr,emqx_exhook_pb,emqx_exhook_server,emqx_exhook_sup,
         emqx_exhook_v_1_hook_provider_bhvr,
         emqx_exhook_v_1_hook_provider_client]},
    {load,{emqx_exhook,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_app,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_cli,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_handler,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_pb,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_server,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_sup,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_v_1_hook_provider_bhvr,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_v_1_hook_provider_client,brutal_purge,brutal_purge}},
    {apply,{application,load,[emqx_exhook]}},
    {load,{emqx_exproto_gsvr,brutal_purge,soft_purge}},
    {load,{emqx_exproto_gcli,brutal_purge,soft_purge}},
    {load,{emqx_exproto_conn,brutal_purge,soft_purge}},
    {load,{emqx_exproto_channel,brutal_purge,soft_purge}},
    {load,{minirest,brutal_purge,soft_purge}},
    {load,{minirest_handler,brutal_purge,soft_purge}},
    {apply,{minirest,stop_http,['http:management']}},
    {apply,{minirest,stop_http,['https:management']}},
    {apply,{application,stop,[emqx_management]}},
    {remove,{emqx_mgmt,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_acl,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_alarms,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_apps,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_banned,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_brokers,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_clients,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_data,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_listeners,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_metrics,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_nodes,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_plugins,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_pubsub,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_routes,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_stats,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_subscriptions,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_app,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_auth,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_cli,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_data_backup,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_http,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_sup,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_util,brutal_purge,brutal_purge}},
    {purge,
        [emqx_mgmt,emqx_mgmt_api,emqx_mgmt_api_acl,emqx_mgmt_api_alarms,
         emqx_mgmt_api_apps,emqx_mgmt_api_banned,emqx_mgmt_api_brokers,
         emqx_mgmt_api_clients,emqx_mgmt_api_data,emqx_mgmt_api_listeners,
         emqx_mgmt_api_metrics,emqx_mgmt_api_nodes,emqx_mgmt_api_plugins,
         emqx_mgmt_api_pubsub,emqx_mgmt_api_routes,emqx_mgmt_api_stats,
         emqx_mgmt_api_subscriptions,emqx_mgmt_app,emqx_mgmt_auth,
         emqx_mgmt_cli,emqx_mgmt_data_backup,emqx_mgmt_http,emqx_mgmt_sup,
         emqx_mgmt_util]},
    {load,{emqx_mgmt,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_acl,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_alarms,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_apps,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_banned,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_brokers,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_clients,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_data,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_listeners,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_metrics,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_nodes,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_plugins,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_pubsub,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_routes,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_stats,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_subscriptions,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_app,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_auth,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_cli,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_data_backup,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_http,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_sup,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_util,brutal_purge,brutal_purge}},
    {apply,{application,load,[emqx_management]}},
    {apply,{emqx_rule_engine,load_providers,[]}},
    {apply,{application,stop,[emqx_dashboard]}},
    {remove,{emqx_dashboard,brutal_purge,brutal_purge}},
    {remove,{emqx_dashboard_admin,brutal_purge,brutal_purge}},
    {remove,{emqx_dashboard_api,brutal_purge,brutal_purge}},
    {remove,{emqx_dashboard_app,brutal_purge,brutal_purge}},
    {remove,{emqx_dashboard_cli,brutal_purge,brutal_purge}},
    {remove,{emqx_dashboard_sup,brutal_purge,brutal_purge}},
    {purge,
        [emqx_dashboard,emqx_dashboard_admin,emqx_dashboard_api,
         emqx_dashboard_app,emqx_dashboard_cli,emqx_dashboard_sup]},
    {load,{emqx_dashboard,brutal_purge,brutal_purge}},
    {load,{emqx_dashboard_admin,brutal_purge,brutal_purge}},
    {load,{emqx_dashboard_api,brutal_purge,brutal_purge}},
    {load,{emqx_dashboard_app,brutal_purge,brutal_purge}},
    {load,{emqx_dashboard_cli,brutal_purge,brutal_purge}},
    {load,{emqx_dashboard_sup,brutal_purge,brutal_purge}},
    {apply,{application,load,[emqx_dashboard]}},
    {apply,{emqx_plugins,load,[]}}]},
  {"4.3.6",[],
   [{load_object_code,{ssl,"10.2.4.2",[ssl_cipher]}},
    {load_object_code,{cuttlefish,"3.3.5",[cuttlefish_duration_parse]}},
    {load_object_code,
        {emqx,"4.3.6",
            [emqx_vm,emqx_sys_mon,emqx_http_lib,emqx_connection,emqx_channel,
             emqx_cm,emqx_ws_connection,emqx_pqueue,emqx_mqueue,
             emqx_alarm_handler,emqx_misc,emqx_ctl,emqx_frame,emqx_rpc,
             emqx_app]}},
    {load_object_code,
        {ekka,"0.8.1",
            [ekka_cluster_dns,ekka_ring,ekka_node_monitor,ekka_autocluster,
             ekka_autoheal,ekka_locker,ekka_httpc,ekka_mnesia]}},
    {load_object_code,{emqx_plugin_libs,"4.3.0",[emqx_plugin_libs_ssl]}},
    {load_object_code,{emqx_retainer,"4.3.1",[emqx_retainer]}},
    {load_object_code,{emqx_bridge_mqtt,"4.3.2",[emqx_bridge_mqtt_actions]}},
    {load_object_code,{emqx_sn,"4.3.3",[emqx_sn_registry]}},
    {load_object_code,{emqx_coap,"4.3.0",[emqx_coap_mqtt_adapter]}},
    {load_object_code,
        {emqx_stomp,"4.3.0",
            [emqx_stomp,emqx_stomp_connection,emqx_stomp_frame,
             emqx_stomp_heartbeat,emqx_stomp_protocol]}},
    {load_object_code,{gun,"1.3.5",[gun]}},
    {load_object_code,{ehttpc,"0.1.8",[ehttpc,ehttpc_pool]}},
    {load_object_code,
        {emqx_auth_http,"4.3.2",[emqx_auth_http_app,emqx_auth_http_cli]}},
    {load_object_code,{ecpool,"0.5.1",[ecpool_worker,ecpool_sup]}},
    {load_object_code,
        {emqx_auth_mnesia,"4.3.2",
            [emqx_auth_mnesia_sup,emqx_acl_mnesia_cli,emqx_acl_mnesia_api,
             emqx_auth_mnesia_api,emqx_acl_mnesia]}},
    {load_object_code,
        {emqx_web_hook,"4.3.3",[emqx_web_hook_app,emqx_web_hook_actions]}},
    {load_object_code,
        {emqx_rule_engine,"4.3.3",
            [emqx_rule_engine,emqx_rule_actions,emqx_rule_registry]}},
    {load_object_code,
        {emqx_lwm2m,"4.3.2",[emqx_lwm2m_protocol,emqx_lwm2m_message]}},
    {load_object_code,
        {mongodb,"3.0.0",
            [mc_auth_logic,mc_connection_man,mc_cursor,mc_monitor,mc_pool_sup,
             mc_selecting_logics,mc_server,mc_super_sup,mc_topology,
             mc_topology_logics,mc_utils,mc_worker,mc_worker_api,
             mc_worker_logic,mongo_api,mongo_app,mongo_id_server,
             mongo_protocol,mongoc]}},
    {load_object_code,{grpc,"0.6.2",[grpc_client,grpc_stream]}},
    {load_object_code,
        {emqx_exhook,"4.3.3",
            [emqx_exhook,emqx_exhook_app,emqx_exhook_cli,emqx_exhook_handler,
             emqx_exhook_pb,emqx_exhook_server,emqx_exhook_sup,
             emqx_exhook_v_1_hook_provider_bhvr,
             emqx_exhook_v_1_hook_provider_client]}},
    {load_object_code,
        {emqx_exproto,"4.3.1",
            [emqx_exproto_gsvr,emqx_exproto_gcli,emqx_exproto_conn,
             emqx_exproto_channel]}},
    {load_object_code,{minirest,"0.3.6",[minirest,minirest_handler]}},
    {load_object_code,
        {emqx_management,"4.3.4",
            [emqx_mgmt,emqx_mgmt_api,emqx_mgmt_api_acl,emqx_mgmt_api_alarms,
             emqx_mgmt_api_apps,emqx_mgmt_api_banned,emqx_mgmt_api_brokers,
             emqx_mgmt_api_clients,emqx_mgmt_api_data,emqx_mgmt_api_listeners,
             emqx_mgmt_api_metrics,emqx_mgmt_api_nodes,emqx_mgmt_api_plugins,
             emqx_mgmt_api_pubsub,emqx_mgmt_api_routes,emqx_mgmt_api_stats,
             emqx_mgmt_api_subscriptions,emqx_mgmt_app,emqx_mgmt_auth,
             emqx_mgmt_cli,emqx_mgmt_data_backup,emqx_mgmt_http,emqx_mgmt_sup,
             emqx_mgmt_util]}},
    {load_object_code,
        {emqx_dashboard,"4.3.2",
            [emqx_dashboard,emqx_dashboard_admin,emqx_dashboard_api,
             emqx_dashboard_app,emqx_dashboard_cli,emqx_dashboard_sup]}},
    point_of_no_return,
    {load,{ssl_cipher,brutal_purge,soft_purge}},
    {load,{cuttlefish_duration_parse,brutal_purge,soft_purge}},
    {load,{emqx_vm,brutal_purge,soft_purge}},
    {load,{emqx_sys_mon,brutal_purge,soft_purge}},
    {load,{emqx_http_lib,brutal_purge,soft_purge}},
    {load,{emqx_connection,brutal_purge,soft_purge}},
    {load,{emqx_channel,brutal_purge,soft_purge}},
    {load,{emqx_cm,brutal_purge,soft_purge}},
    {load,{emqx_ws_connection,brutal_purge,soft_purge}},
    {load,{emqx_pqueue,brutal_purge,soft_purge}},
    {load,{emqx_mqueue,brutal_purge,soft_purge}},
    {load,{emqx_alarm_handler,brutal_purge,soft_purge}},
    {load,{emqx_misc,brutal_purge,soft_purge}},
    {load,{emqx_ctl,brutal_purge,soft_purge}},
    {load,{emqx_frame,brutal_purge,soft_purge}},
    {load,{emqx_rpc,brutal_purge,soft_purge}},
    {load,{emqx_app,brutal_purge,soft_purge}},
    {load,{ekka_cluster_dns,brutal_purge,soft_purge}},
    {load,{ekka_ring,brutal_purge,soft_purge}},
    {load,{ekka_node_monitor,brutal_purge,soft_purge}},
    {load,{ekka_autocluster,brutal_purge,soft_purge}},
    {load,{ekka_autoheal,brutal_purge,soft_purge}},
    {load,{ekka_locker,brutal_purge,soft_purge}},
    {load,{ekka_httpc,brutal_purge,soft_purge}},
    {load,{ekka_mnesia,brutal_purge,soft_purge}},
    {load,{emqx_plugin_libs_ssl,brutal_purge,soft_purge}},
    {load,{emqx_retainer,brutal_purge,soft_purge}},
    {load,{emqx_bridge_mqtt_actions,brutal_purge,soft_purge}},
    {load,{emqx_sn_registry,brutal_purge,soft_purge}},
    {load,{emqx_coap_mqtt_adapter,brutal_purge,soft_purge}},
    {apply,{application,stop,[emqx_stomp]}},
    {remove,{emqx_stomp,brutal_purge,brutal_purge}},
    {remove,{emqx_stomp_connection,brutal_purge,brutal_purge}},
    {remove,{emqx_stomp_frame,brutal_purge,brutal_purge}},
    {remove,{emqx_stomp_heartbeat,brutal_purge,brutal_purge}},
    {remove,{emqx_stomp_protocol,brutal_purge,brutal_purge}},
    {purge,
        [emqx_stomp,emqx_stomp_connection,emqx_stomp_frame,
         emqx_stomp_heartbeat,emqx_stomp_protocol]},
    {load,{emqx_stomp,brutal_purge,brutal_purge}},
    {load,{emqx_stomp_connection,brutal_purge,brutal_purge}},
    {load,{emqx_stomp_frame,brutal_purge,brutal_purge}},
    {load,{emqx_stomp_heartbeat,brutal_purge,brutal_purge}},
    {load,{emqx_stomp_protocol,brutal_purge,brutal_purge}},
    {apply,{application,load,[emqx_stomp]}},
    {load,{gun,brutal_purge,soft_purge}},
    {load,{ehttpc,brutal_purge,soft_purge}},
    {load,{ehttpc_pool,brutal_purge,soft_purge}},
    {apply,{application,stop,[emqx_auth_http]}},
    {load,{emqx_auth_http_app,brutal_purge,soft_purge}},
    {load,{emqx_auth_http_cli,brutal_purge,soft_purge}},
    {load,{ecpool_worker,brutal_purge,soft_purge}},
    {load,{ecpool_sup,brutal_purge,soft_purge}},
    {apply,{emqx_acl_mnesia_migrator,stop_supervised,[]}},
    {suspend,[emqx_auth_mnesia_sup]},
    {load,{emqx_auth_mnesia_sup,brutal_purge,brutal_purge}},
    {code_change,down,[{emqx_auth_mnesia_sup,[]}]},
    {resume,[emqx_auth_mnesia_sup]},
    {load,{emqx_acl_mnesia_cli,brutal_purge,soft_purge}},
    {load,{emqx_acl_mnesia_api,brutal_purge,soft_purge}},
    {load,{emqx_auth_mnesia_api,brutal_purge,soft_purge}},
    {load,{emqx_acl_mnesia,brutal_purge,soft_purge}},
    {remove,{emqx_acl_mnesia_migrator,brutal_purge,brutal_purge}},
    {purge,[emqx_acl_mnesia_migrator]},
    {remove,{emqx_acl_mnesia_db,brutal_purge,brutal_purge}},
    {purge,[emqx_acl_mnesia_db]},
    {apply,{application,stop,[emqx_web_hook]}},
    {load,{emqx_web_hook_app,brutal_purge,soft_purge}},
    {load,{emqx_web_hook_actions,brutal_purge,soft_purge}},
    {load,{emqx_rule_engine,brutal_purge,soft_purge}},
    {load,{emqx_rule_actions,brutal_purge,soft_purge}},
    {load,{emqx_rule_registry,brutal_purge,soft_purge}},
    {load,{emqx_lwm2m_protocol,brutal_purge,soft_purge}},
    {load,{emqx_lwm2m_message,brutal_purge,soft_purge}},
    {apply,{application,stop,[mongodb]}},
    {remove,{mc_auth_logic,brutal_purge,brutal_purge}},
    {remove,{mc_connection_man,brutal_purge,brutal_purge}},
    {remove,{mc_cursor,brutal_purge,brutal_purge}},
    {remove,{mc_monitor,brutal_purge,brutal_purge}},
    {remove,{mc_pool_sup,brutal_purge,brutal_purge}},
    {remove,{mc_selecting_logics,brutal_purge,brutal_purge}},
    {remove,{mc_server,brutal_purge,brutal_purge}},
    {remove,{mc_super_sup,brutal_purge,brutal_purge}},
    {remove,{mc_topology,brutal_purge,brutal_purge}},
    {remove,{mc_topology_logics,brutal_purge,brutal_purge}},
    {remove,{mc_utils,brutal_purge,brutal_purge}},
    {remove,{mc_worker,brutal_purge,brutal_purge}},
    {remove,{mc_worker_api,brutal_purge,brutal_purge}},
    {remove,{mc_worker_logic,brutal_purge,brutal_purge}},
    {remove,{mongo_api,brutal_purge,brutal_purge}},
    {remove,{mongo_app,brutal_purge,brutal_purge}},
    {remove,{mongo_id_server,brutal_purge,brutal_purge}},
    {remove,{mongo_protocol,brutal_purge,brutal_purge}},
    {remove,{mongoc,brutal_purge,brutal_purge}},
    {purge,
        [mc_auth_logic,mc_connection_man,mc_cursor,mc_monitor,mc_pool_sup,
         mc_selecting_logics,mc_server,mc_super_sup,mc_topology,
         mc_topology_logics,mc_utils,mc_worker,mc_worker_api,mc_worker_logic,
         mongo_api,mongo_app,mongo_id_server,mongo_protocol,mongoc]},
    {load,{mc_auth_logic,brutal_purge,brutal_purge}},
    {load,{mc_connection_man,brutal_purge,brutal_purge}},
    {load,{mc_cursor,brutal_purge,brutal_purge}},
    {load,{mc_monitor,brutal_purge,brutal_purge}},
    {load,{mc_pool_sup,brutal_purge,brutal_purge}},
    {load,{mc_selecting_logics,brutal_purge,brutal_purge}},
    {load,{mc_server,brutal_purge,brutal_purge}},
    {load,{mc_super_sup,brutal_purge,brutal_purge}},
    {load,{mc_topology,brutal_purge,brutal_purge}},
    {load,{mc_topology_logics,brutal_purge,brutal_purge}},
    {load,{mc_utils,brutal_purge,brutal_purge}},
    {load,{mc_worker,brutal_purge,brutal_purge}},
    {load,{mc_worker_api,brutal_purge,brutal_purge}},
    {load,{mc_worker_logic,brutal_purge,brutal_purge}},
    {load,{mongo_api,brutal_purge,brutal_purge}},
    {load,{mongo_app,brutal_purge,brutal_purge}},
    {load,{mongo_id_server,brutal_purge,brutal_purge}},
    {load,{mongo_protocol,brutal_purge,brutal_purge}},
    {load,{mongoc,brutal_purge,brutal_purge}},
    {apply,{application,start,[mongodb,permanent]}},
    {remove,{grpc_utils,brutal_purge,brutal_purge}},
    {purge,[grpc_utils]},
    {load,{grpc_client,brutal_purge,soft_purge}},
    {load,{grpc_stream,brutal_purge,soft_purge}},
    {apply,{application,stop,[emqx_exhook]}},
    {remove,{emqx_exhook,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_app,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_cli,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_handler,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_mngr,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_pb,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_server,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_sup,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_v_1_hook_provider_bhvr,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_v_1_hook_provider_client,brutal_purge,brutal_purge}},
    {purge,
        [emqx_exhook,emqx_exhook_app,emqx_exhook_cli,emqx_exhook_handler,
         emqx_exhook_mngr,emqx_exhook_pb,emqx_exhook_server,emqx_exhook_sup,
         emqx_exhook_v_1_hook_provider_bhvr,
         emqx_exhook_v_1_hook_provider_client]},
    {load,{emqx_exhook,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_app,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_cli,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_handler,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_pb,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_server,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_sup,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_v_1_hook_provider_bhvr,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_v_1_hook_provider_client,brutal_purge,brutal_purge}},
    {apply,{application,load,[emqx_exhook]}},
    {load,{emqx_exproto_gsvr,brutal_purge,soft_purge}},
    {load,{emqx_exproto_gcli,brutal_purge,soft_purge}},
    {load,{emqx_exproto_conn,brutal_purge,soft_purge}},
    {load,{emqx_exproto_channel,brutal_purge,soft_purge}},
    {load,{minirest,brutal_purge,soft_purge}},
    {load,{minirest_handler,brutal_purge,soft_purge}},
    {apply,{minirest,stop_http,['http:management']}},
    {apply,{minirest,stop_http,['https:management']}},
    {apply,{application,stop,[emqx_management]}},
    {remove,{emqx_mgmt,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_acl,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_alarms,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_apps,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_banned,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_brokers,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_clients,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_data,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_listeners,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_metrics,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_nodes,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_plugins,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_pubsub,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_routes,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_stats,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_subscriptions,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_app,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_auth,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_cli,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_data_backup,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_http,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_sup,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_util,brutal_purge,brutal_purge}},
    {purge,
        [emqx_mgmt,emqx_mgmt_api,emqx_mgmt_api_acl,emqx_mgmt_api_alarms,
         emqx_mgmt_api_apps,emqx_mgmt_api_banned,emqx_mgmt_api_brokers,
         emqx_mgmt_api_clients,emqx_mgmt_api_data,emqx_mgmt_api_listeners,
         emqx_mgmt_api_metrics,emqx_mgmt_api_nodes,emqx_mgmt_api_plugins,
         emqx_mgmt_api_pubsub,emqx_mgmt_api_routes,emqx_mgmt_api_stats,
         emqx_mgmt_api_subscriptions,emqx_mgmt_app,emqx_mgmt_auth,
         emqx_mgmt_cli,emqx_mgmt_data_backup,emqx_mgmt_http,emqx_mgmt_sup,
         emqx_mgmt_util]},
    {load,{emqx_mgmt,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_acl,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_alarms,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_apps,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_banned,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_brokers,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_clients,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_data,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_listeners,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_metrics,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_nodes,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_plugins,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_pubsub,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_routes,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_stats,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_subscriptions,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_app,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_auth,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_cli,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_data_backup,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_http,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_sup,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_util,brutal_purge,brutal_purge}},
    {apply,{application,load,[emqx_management]}},
    {apply,{emqx_rule_engine,load_providers,[]}},
    {apply,{application,stop,[emqx_dashboard]}},
    {remove,{emqx_dashboard,brutal_purge,brutal_purge}},
    {remove,{emqx_dashboard_admin,brutal_purge,brutal_purge}},
    {remove,{emqx_dashboard_api,brutal_purge,brutal_purge}},
    {remove,{emqx_dashboard_app,brutal_purge,brutal_purge}},
    {remove,{emqx_dashboard_cli,brutal_purge,brutal_purge}},
    {remove,{emqx_dashboard_sup,brutal_purge,brutal_purge}},
    {purge,
        [emqx_dashboard,emqx_dashboard_admin,emqx_dashboard_api,
         emqx_dashboard_app,emqx_dashboard_cli,emqx_dashboard_sup]},
    {load,{emqx_dashboard,brutal_purge,brutal_purge}},
    {load,{emqx_dashboard_admin,brutal_purge,brutal_purge}},
    {load,{emqx_dashboard_api,brutal_purge,brutal_purge}},
    {load,{emqx_dashboard_app,brutal_purge,brutal_purge}},
    {load,{emqx_dashboard_cli,brutal_purge,brutal_purge}},
    {load,{emqx_dashboard_sup,brutal_purge,brutal_purge}},
    {apply,{application,load,[emqx_dashboard]}},
    {apply,{emqx_plugins,load,[]}}]},
  {"4.3.0",[],
   [{load_object_code,{ssl,"10.2.4.2",[ssl_cipher]}},
    {load_object_code,
        {emqx,"4.3.0",
            [emqx_vm,emqx_sys_mon,emqx_alarm_handler,emqx_misc,emqx_packet,
             emqx_shared_sub,emqx_logger_jsonfmt,emqx_ws_connection,
             emqx_connection,emqx_congestion,emqx_frame,emqx_trie,emqx_cm,
             emqx_node_dump,emqx_channel,emqx_plugins,emqx_logger_textfmt,
             emqx_metrics,emqx_http_lib,emqx_access_rule,emqx_ctl,emqx_pqueue,
             emqx_mqueue,emqx_rpc,emqx_app]}},
    {load_object_code,
        {ekka,"0.8.1",
            [ekka_cluster_dns,ekka_ring,ekka_node_monitor,ekka_autocluster,
             ekka_autoheal,ekka_locker,ekka_httpc,ekka_mnesia]}},
    {load_object_code,{emqx_plugin_libs,"4.3.0",[emqx_plugin_libs_ssl]}},
    {load_object_code,
        {emqx_modules,"4.3.0",
            [emqx_mod_delayed,emqx_mod_presence,emqx_mod_api_topic_metrics]}},
    {load_object_code,{emqx_retainer,"4.3.0",[emqx_retainer]}},
    {load_object_code,{emqtt,"1.2.3",[emqtt,emqtt_frame]}},
    {load_object_code,
        {emqx_bridge_mqtt,"4.3.0",
            [emqx_bridge_worker,emqx_bridge_mqtt_actions]}},
    {load_object_code,
        {emqx_sn,"4.3.0",
            [emqx_sn_app,emqx_sn_asleep_timer,emqx_sn_broadcast,emqx_sn_frame,
             emqx_sn_gateway,emqx_sn_registry,emqx_sn_sup]}},
    {load_object_code,{emqx_coap,"4.3.0",[emqx_coap_mqtt_adapter]}},
    {load_object_code,
        {emqx_stomp,"4.3.0",
            [emqx_stomp,emqx_stomp_connection,emqx_stomp_frame,
             emqx_stomp_heartbeat,emqx_stomp_protocol]}},
    {load_object_code,{gun,"1.3.4",[gun,gun_http,gun_http2]}},
    {load_object_code,{ehttpc,"0.1.3",[ehttpc,ehttpc_pool]}},
    {load_object_code,
        {emqx_auth_http,"4.3.0",
            [emqx_acl_http,emqx_auth_http,emqx_auth_http_app,
             emqx_auth_http_cli,emqx_auth_http_sup]}},
    {load_object_code,{ecpool,"0.5.1",[ecpool_worker,ecpool_sup]}},
    {load_object_code,{emqx_auth_jwt,"4.3.0",[emqx_auth_jwt_svr]}},
    {load_object_code,
        {emqx_auth_mnesia,"4.3.0",
            [emqx_auth_mnesia_sup,emqx_acl_mnesia_cli,emqx_acl_mnesia_api,
             emqx_auth_mnesia_api,emqx_acl_mnesia]}},
    {load_object_code,
        {emqx_web_hook,"4.3.0",
            [emqx_web_hook_app,emqx_web_hook,emqx_web_hook_actions]}},
    {load_object_code,
        {emqx_rule_engine,"4.3.0",
            [emqx_rule_funcs,emqx_rule_engine,emqx_rule_registry,
             emqx_rule_actions]}},
    {load_object_code,{emqx_telemetry,"4.3.0",[emqx_telemetry]}},
    {load_object_code,{lwm2m_coap,"1.1.2",[lwm2m_coap_channel]}},
    {load_object_code,
        {emqx_lwm2m,"4.3.0",
            [binary_util,emqx_lwm2m_app,emqx_lwm2m_cmd_handler,
             emqx_lwm2m_coap_resource,emqx_lwm2m_coap_server,emqx_lwm2m_json,
             emqx_lwm2m_message,emqx_lwm2m_protocol,emqx_lwm2m_sup,
             emqx_lwm2m_timer,emqx_lwm2m_tlv,emqx_lwm2m_xml_object,
             emqx_lwm2m_xml_object_db]}},
    {load_object_code,
        {emqx_auth_ldap,"4.3.0",[emqx_acl_ldap,emqx_auth_ldap_cli]}},
    {load_object_code,
        {mongodb,"3.0.0",
            [mc_auth_logic,mc_connection_man,mc_cursor,mc_monitor,mc_pool_sup,
             mc_selecting_logics,mc_server,mc_super_sup,mc_topology,
             mc_topology_logics,mc_utils,mc_worker,mc_worker_api,
             mc_worker_logic,mongo_api,mongo_app,mongo_id_server,
             mongo_protocol,mongoc]}},
    {load_object_code,{grpc,"0.6.2",[grpc_client,grpc_stream]}},
    {load_object_code,
        {emqx_exhook,"4.3.0",
            [emqx_exhook,emqx_exhook_app,emqx_exhook_cli,emqx_exhook_handler,
             emqx_exhook_pb,emqx_exhook_server,emqx_exhook_sup,
             emqx_exhook_v_1_hook_provider_bhvr,
             emqx_exhook_v_1_hook_provider_client]}},
    {load_object_code,
        {emqx_exproto,"4.3.0",
            [emqx_exproto_gsvr,emqx_exproto_gcli,emqx_exproto_conn,
             emqx_exproto_channel]}},
    {load_object_code,{minirest,"0.3.5",[minirest,minirest_handler]}},
    {load_object_code,
        {emqx_management,"4.3.0",
            [emqx_mgmt,emqx_mgmt_api,emqx_mgmt_api_acl,emqx_mgmt_api_alarms,
             emqx_mgmt_api_apps,emqx_mgmt_api_banned,emqx_mgmt_api_brokers,
             emqx_mgmt_api_clients,emqx_mgmt_api_data,emqx_mgmt_api_listeners,
             emqx_mgmt_api_metrics,emqx_mgmt_api_nodes,emqx_mgmt_api_plugins,
             emqx_mgmt_api_pubsub,emqx_mgmt_api_routes,emqx_mgmt_api_stats,
             emqx_mgmt_api_subscriptions,emqx_mgmt_app,emqx_mgmt_auth,
             emqx_mgmt_cli,emqx_mgmt_data_backup,emqx_mgmt_http,emqx_mgmt_sup,
             emqx_mgmt_util]}},
    {load_object_code,
        {emqx_dashboard,"4.3.0",
            [emqx_dashboard,emqx_dashboard_admin,emqx_dashboard_api,
             emqx_dashboard_app,emqx_dashboard_cli,emqx_dashboard_sup]}},
    point_of_no_return,
    {load,{ssl_cipher,brutal_purge,soft_purge}},
    {load,{emqx_vm,brutal_purge,soft_purge}},
    {load,{emqx_sys_mon,brutal_purge,soft_purge}},
    {load,{emqx_alarm_handler,brutal_purge,soft_purge}},
    {load,{emqx_misc,brutal_purge,soft_purge}},
    {load,{emqx_packet,brutal_purge,soft_purge}},
    {load,{emqx_shared_sub,brutal_purge,soft_purge}},
    {load,{emqx_logger_jsonfmt,brutal_purge,soft_purge}},
    {load,{emqx_ws_connection,brutal_purge,soft_purge}},
    {load,{emqx_connection,brutal_purge,soft_purge}},
    {load,{emqx_congestion,brutal_purge,soft_purge}},
    {load,{emqx_frame,brutal_purge,soft_purge}},
    {load,{emqx_trie,brutal_purge,soft_purge}},
    {load,{emqx_cm,brutal_purge,soft_purge}},
    {load,{emqx_node_dump,brutal_purge,soft_purge}},
    {load,{emqx_channel,brutal_purge,soft_purge}},
    {load,{emqx_plugins,brutal_purge,soft_purge}},
    {load,{emqx_logger_textfmt,brutal_purge,soft_purge}},
    {load,{emqx_metrics,brutal_purge,soft_purge}},
    {load,{emqx_http_lib,brutal_purge,soft_purge}},
    {load,{emqx_access_rule,brutal_purge,soft_purge}},
    {load,{emqx_ctl,brutal_purge,soft_purge}},
    {load,{emqx_pqueue,brutal_purge,soft_purge}},
    {load,{emqx_mqueue,brutal_purge,soft_purge}},
    {load,{emqx_rpc,brutal_purge,soft_purge}},
    {load,{emqx_app,brutal_purge,soft_purge}},
    {load,{ekka_cluster_dns,brutal_purge,soft_purge}},
    {load,{ekka_ring,brutal_purge,soft_purge}},
    {load,{ekka_node_monitor,brutal_purge,soft_purge}},
    {load,{ekka_autocluster,brutal_purge,soft_purge}},
    {load,{ekka_autoheal,brutal_purge,soft_purge}},
    {load,{ekka_locker,brutal_purge,soft_purge}},
    {load,{ekka_httpc,brutal_purge,soft_purge}},
    {load,{ekka_mnesia,brutal_purge,soft_purge}},
    {load,{emqx_plugin_libs_ssl,brutal_purge,soft_purge}},
    {suspend,[emqx_mod_delayed]},
    {code_change,down,[{emqx_mod_delayed,[]}]},
    {load,{emqx_mod_delayed,brutal_purge,brutal_purge}},
    {resume,[emqx_mod_delayed]},
    {load,{emqx_mod_presence,brutal_purge,soft_purge}},
    {load,{emqx_mod_api_topic_metrics,brutal_purge,soft_purge}},
    {load,{emqx_retainer,brutal_purge,soft_purge}},
    {load,{emqtt,brutal_purge,soft_purge}},
    {load,{emqtt_frame,brutal_purge,soft_purge}},
    {load,{emqx_bridge_worker,brutal_purge,soft_purge}},
    {load,{emqx_bridge_mqtt_actions,brutal_purge,soft_purge}},
    {apply,{application,stop,[emqx_sn]}},
    {remove,{emqx_sn_app,brutal_purge,brutal_purge}},
    {remove,{emqx_sn_asleep_timer,brutal_purge,brutal_purge}},
    {remove,{emqx_sn_broadcast,brutal_purge,brutal_purge}},
    {remove,{emqx_sn_frame,brutal_purge,brutal_purge}},
    {remove,{emqx_sn_gateway,brutal_purge,brutal_purge}},
    {remove,{emqx_sn_registry,brutal_purge,brutal_purge}},
    {remove,{emqx_sn_sup,brutal_purge,brutal_purge}},
    {purge,
        [emqx_sn_app,emqx_sn_asleep_timer,emqx_sn_broadcast,emqx_sn_frame,
         emqx_sn_gateway,emqx_sn_registry,emqx_sn_sup]},
    {load,{emqx_sn_app,brutal_purge,brutal_purge}},
    {load,{emqx_sn_asleep_timer,brutal_purge,brutal_purge}},
    {load,{emqx_sn_broadcast,brutal_purge,brutal_purge}},
    {load,{emqx_sn_frame,brutal_purge,brutal_purge}},
    {load,{emqx_sn_gateway,brutal_purge,brutal_purge}},
    {load,{emqx_sn_registry,brutal_purge,brutal_purge}},
    {load,{emqx_sn_sup,brutal_purge,brutal_purge}},
    {apply,{application,load,[emqx_sn]}},
    {load,{emqx_coap_mqtt_adapter,brutal_purge,soft_purge}},
    {apply,{application,stop,[emqx_stomp]}},
    {remove,{emqx_stomp,brutal_purge,brutal_purge}},
    {remove,{emqx_stomp_connection,brutal_purge,brutal_purge}},
    {remove,{emqx_stomp_frame,brutal_purge,brutal_purge}},
    {remove,{emqx_stomp_heartbeat,brutal_purge,brutal_purge}},
    {remove,{emqx_stomp_protocol,brutal_purge,brutal_purge}},
    {purge,
        [emqx_stomp,emqx_stomp_connection,emqx_stomp_frame,
         emqx_stomp_heartbeat,emqx_stomp_protocol]},
    {load,{emqx_stomp,brutal_purge,brutal_purge}},
    {load,{emqx_stomp_connection,brutal_purge,brutal_purge}},
    {load,{emqx_stomp_frame,brutal_purge,brutal_purge}},
    {load,{emqx_stomp_heartbeat,brutal_purge,brutal_purge}},
    {load,{emqx_stomp_protocol,brutal_purge,brutal_purge}},
    {apply,{application,load,[emqx_stomp]}},
    {load,{gun,brutal_purge,soft_purge}},
    {load,{gun_http,brutal_purge,soft_purge}},
    {load,{gun_http2,brutal_purge,soft_purge}},
    {suspend,[ehttpc]},
    {code_change,down,[{ehttpc,[no_enable_pipelining]}]},
    {load,{ehttpc,brutal_purge,brutal_purge}},
    {resume,[ehttpc]},
    {load,{ehttpc_pool,brutal_purge,soft_purge}},
    {apply,{application,stop,[emqx_auth_http]}},
    {remove,{emqx_acl_http,brutal_purge,brutal_purge}},
    {remove,{emqx_auth_http,brutal_purge,brutal_purge}},
    {remove,{emqx_auth_http_app,brutal_purge,brutal_purge}},
    {remove,{emqx_auth_http_cli,brutal_purge,brutal_purge}},
    {remove,{emqx_auth_http_sup,brutal_purge,brutal_purge}},
    {purge,
        [emqx_acl_http,emqx_auth_http,emqx_auth_http_app,emqx_auth_http_cli,
         emqx_auth_http_sup]},
    {load,{emqx_acl_http,brutal_purge,brutal_purge}},
    {load,{emqx_auth_http,brutal_purge,brutal_purge}},
    {load,{emqx_auth_http_app,brutal_purge,brutal_purge}},
    {load,{emqx_auth_http_cli,brutal_purge,brutal_purge}},
    {load,{emqx_auth_http_sup,brutal_purge,brutal_purge}},
    {apply,{application,load,[emqx_auth_http]}},
    {load,{ecpool_worker,brutal_purge,soft_purge}},
    {load,{ecpool_sup,brutal_purge,soft_purge}},
    {load,{emqx_auth_jwt_svr,brutal_purge,soft_purge}},
    {apply,{emqx_acl_mnesia_migrator,stop_supervised,[]}},
    {suspend,[emqx_auth_mnesia_sup]},
    {load,{emqx_auth_mnesia_sup,brutal_purge,brutal_purge}},
    {code_change,down,[{emqx_auth_mnesia_sup,[]}]},
    {resume,[emqx_auth_mnesia_sup]},
    {load,{emqx_acl_mnesia_cli,brutal_purge,soft_purge}},
    {load,{emqx_acl_mnesia_api,brutal_purge,soft_purge}},
    {load,{emqx_auth_mnesia_api,brutal_purge,soft_purge}},
    {load,{emqx_acl_mnesia,brutal_purge,soft_purge}},
    {remove,{emqx_acl_mnesia_migrator,brutal_purge,brutal_purge}},
    {purge,[emqx_acl_mnesia_migrator]},
    {remove,{emqx_acl_mnesia_db,brutal_purge,brutal_purge}},
    {purge,[emqx_acl_mnesia_db]},
    {apply,{application,stop,[emqx_web_hook]}},
    {load,{emqx_web_hook_app,brutal_purge,soft_purge}},
    {load,{emqx_web_hook,brutal_purge,soft_purge}},
    {load,{emqx_web_hook_actions,brutal_purge,soft_purge}},
    {load,{emqx_rule_funcs,brutal_purge,soft_purge}},
    {load,{emqx_rule_engine,brutal_purge,soft_purge}},
    {load,{emqx_rule_registry,brutal_purge,soft_purge}},
    {apply,{emqx_stats,cancel_update,[rule_registery_stats]}},
    {load,{emqx_rule_actions,brutal_purge,soft_purge}},
    {load,{emqx_telemetry,brutal_purge,soft_purge}},
    {load,{lwm2m_coap_channel,brutal_purge,soft_purge}},
    {apply,{application,stop,[emqx_lwm2m]}},
    {remove,{binary_util,brutal_purge,brutal_purge}},
    {remove,{emqx_lwm2m_api,brutal_purge,brutal_purge}},
    {remove,{emqx_lwm2m_app,brutal_purge,brutal_purge}},
    {remove,{emqx_lwm2m_cm,brutal_purge,brutal_purge}},
    {remove,{emqx_lwm2m_cm_sup,brutal_purge,brutal_purge}},
    {remove,{emqx_lwm2m_cmd_handler,brutal_purge,brutal_purge}},
    {remove,{emqx_lwm2m_coap_resource,brutal_purge,brutal_purge}},
    {remove,{emqx_lwm2m_coap_server,brutal_purge,brutal_purge}},
    {remove,{emqx_lwm2m_json,brutal_purge,brutal_purge}},
    {remove,{emqx_lwm2m_message,brutal_purge,brutal_purge}},
    {remove,{emqx_lwm2m_protocol,brutal_purge,brutal_purge}},
    {remove,{emqx_lwm2m_sup,brutal_purge,brutal_purge}},
    {remove,{emqx_lwm2m_timer,brutal_purge,brutal_purge}},
    {remove,{emqx_lwm2m_tlv,brutal_purge,brutal_purge}},
    {remove,{emqx_lwm2m_xml_object,brutal_purge,brutal_purge}},
    {remove,{emqx_lwm2m_xml_object_db,brutal_purge,brutal_purge}},
    {purge,
        [binary_util,emqx_lwm2m_api,emqx_lwm2m_app,emqx_lwm2m_cm,
         emqx_lwm2m_cm_sup,emqx_lwm2m_cmd_handler,emqx_lwm2m_coap_resource,
         emqx_lwm2m_coap_server,emqx_lwm2m_json,emqx_lwm2m_message,
         emqx_lwm2m_protocol,emqx_lwm2m_sup,emqx_lwm2m_timer,emqx_lwm2m_tlv,
         emqx_lwm2m_xml_object,emqx_lwm2m_xml_object_db]},
    {load,{binary_util,brutal_purge,brutal_purge}},
    {load,{emqx_lwm2m_app,brutal_purge,brutal_purge}},
    {load,{emqx_lwm2m_cmd_handler,brutal_purge,brutal_purge}},
    {load,{emqx_lwm2m_coap_resource,brutal_purge,brutal_purge}},
    {load,{emqx_lwm2m_coap_server,brutal_purge,brutal_purge}},
    {load,{emqx_lwm2m_json,brutal_purge,brutal_purge}},
    {load,{emqx_lwm2m_message,brutal_purge,brutal_purge}},
    {load,{emqx_lwm2m_protocol,brutal_purge,brutal_purge}},
    {load,{emqx_lwm2m_sup,brutal_purge,brutal_purge}},
    {load,{emqx_lwm2m_timer,brutal_purge,brutal_purge}},
    {load,{emqx_lwm2m_tlv,brutal_purge,brutal_purge}},
    {load,{emqx_lwm2m_xml_object,brutal_purge,brutal_purge}},
    {load,{emqx_lwm2m_xml_object_db,brutal_purge,brutal_purge}},
    {apply,{application,load,[emqx_lwm2m]}},
    {load,{emqx_acl_ldap,brutal_purge,soft_purge}},
    {load,{emqx_auth_ldap_cli,brutal_purge,soft_purge}},
    {apply,{application,stop,[mongodb]}},
    {remove,{mc_auth_logic,brutal_purge,brutal_purge}},
    {remove,{mc_connection_man,brutal_purge,brutal_purge}},
    {remove,{mc_cursor,brutal_purge,brutal_purge}},
    {remove,{mc_monitor,brutal_purge,brutal_purge}},
    {remove,{mc_pool_sup,brutal_purge,brutal_purge}},
    {remove,{mc_selecting_logics,brutal_purge,brutal_purge}},
    {remove,{mc_server,brutal_purge,brutal_purge}},
    {remove,{mc_super_sup,brutal_purge,brutal_purge}},
    {remove,{mc_topology,brutal_purge,brutal_purge}},
    {remove,{mc_topology_logics,brutal_purge,brutal_purge}},
    {remove,{mc_utils,brutal_purge,brutal_purge}},
    {remove,{mc_worker,brutal_purge,brutal_purge}},
    {remove,{mc_worker_api,brutal_purge,brutal_purge}},
    {remove,{mc_worker_logic,brutal_purge,brutal_purge}},
    {remove,{mongo_api,brutal_purge,brutal_purge}},
    {remove,{mongo_app,brutal_purge,brutal_purge}},
    {remove,{mongo_id_server,brutal_purge,brutal_purge}},
    {remove,{mongo_protocol,brutal_purge,brutal_purge}},
    {remove,{mongoc,brutal_purge,brutal_purge}},
    {purge,
        [mc_auth_logic,mc_connection_man,mc_cursor,mc_monitor,mc_pool_sup,
         mc_selecting_logics,mc_server,mc_super_sup,mc_topology,
         mc_topology_logics,mc_utils,mc_worker,mc_worker_api,mc_worker_logic,
         mongo_api,mongo_app,mongo_id_server,mongo_protocol,mongoc]},
    {load,{mc_auth_logic,brutal_purge,brutal_purge}},
    {load,{mc_connection_man,brutal_purge,brutal_purge}},
    {load,{mc_cursor,brutal_purge,brutal_purge}},
    {load,{mc_monitor,brutal_purge,brutal_purge}},
    {load,{mc_pool_sup,brutal_purge,brutal_purge}},
    {load,{mc_selecting_logics,brutal_purge,brutal_purge}},
    {load,{mc_server,brutal_purge,brutal_purge}},
    {load,{mc_super_sup,brutal_purge,brutal_purge}},
    {load,{mc_topology,brutal_purge,brutal_purge}},
    {load,{mc_topology_logics,brutal_purge,brutal_purge}},
    {load,{mc_utils,brutal_purge,brutal_purge}},
    {load,{mc_worker,brutal_purge,brutal_purge}},
    {load,{mc_worker_api,brutal_purge,brutal_purge}},
    {load,{mc_worker_logic,brutal_purge,brutal_purge}},
    {load,{mongo_api,brutal_purge,brutal_purge}},
    {load,{mongo_app,brutal_purge,brutal_purge}},
    {load,{mongo_id_server,brutal_purge,brutal_purge}},
    {load,{mongo_protocol,brutal_purge,brutal_purge}},
    {load,{mongoc,brutal_purge,brutal_purge}},
    {apply,{application,start,[mongodb,permanent]}},
    {remove,{grpc_utils,brutal_purge,brutal_purge}},
    {purge,[grpc_utils]},
    {load,{grpc_client,brutal_purge,soft_purge}},
    {load,{grpc_stream,brutal_purge,soft_purge}},
    {apply,{application,stop,[emqx_exhook]}},
    {remove,{emqx_exhook,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_app,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_cli,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_handler,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_mngr,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_pb,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_server,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_sup,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_v_1_hook_provider_bhvr,brutal_purge,brutal_purge}},
    {remove,{emqx_exhook_v_1_hook_provider_client,brutal_purge,brutal_purge}},
    {purge,
        [emqx_exhook,emqx_exhook_app,emqx_exhook_cli,emqx_exhook_handler,
         emqx_exhook_mngr,emqx_exhook_pb,emqx_exhook_server,emqx_exhook_sup,
         emqx_exhook_v_1_hook_provider_bhvr,
         emqx_exhook_v_1_hook_provider_client]},
    {load,{emqx_exhook,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_app,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_cli,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_handler,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_pb,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_server,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_sup,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_v_1_hook_provider_bhvr,brutal_purge,brutal_purge}},
    {load,{emqx_exhook_v_1_hook_provider_client,brutal_purge,brutal_purge}},
    {apply,{application,load,[emqx_exhook]}},
    {load,{emqx_exproto_gsvr,brutal_purge,soft_purge}},
    {load,{emqx_exproto_gcli,brutal_purge,soft_purge}},
    {load,{emqx_exproto_conn,brutal_purge,soft_purge}},
    {load,{emqx_exproto_channel,brutal_purge,soft_purge}},
    {load,{minirest,brutal_purge,soft_purge}},
    {load,{minirest_handler,brutal_purge,soft_purge}},
    {apply,{minirest,stop_http,['http:management']}},
    {apply,{minirest,stop_http,['https:management']}},
    {apply,{application,stop,[emqx_management]}},
    {remove,{emqx_mgmt,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_acl,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_alarms,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_apps,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_banned,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_brokers,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_clients,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_data,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_listeners,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_metrics,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_nodes,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_plugins,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_pubsub,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_routes,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_stats,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_api_subscriptions,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_app,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_auth,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_cli,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_data_backup,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_http,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_sup,brutal_purge,brutal_purge}},
    {remove,{emqx_mgmt_util,brutal_purge,brutal_purge}},
    {purge,
        [emqx_mgmt,emqx_mgmt_api,emqx_mgmt_api_acl,emqx_mgmt_api_alarms,
         emqx_mgmt_api_apps,emqx_mgmt_api_banned,emqx_mgmt_api_brokers,
         emqx_mgmt_api_clients,emqx_mgmt_api_data,emqx_mgmt_api_listeners,
         emqx_mgmt_api_metrics,emqx_mgmt_api_nodes,emqx_mgmt_api_plugins,
         emqx_mgmt_api_pubsub,emqx_mgmt_api_routes,emqx_mgmt_api_stats,
         emqx_mgmt_api_subscriptions,emqx_mgmt_app,emqx_mgmt_auth,
         emqx_mgmt_cli,emqx_mgmt_data_backup,emqx_mgmt_http,emqx_mgmt_sup,
         emqx_mgmt_util]},
    {load,{emqx_mgmt,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_acl,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_alarms,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_apps,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_banned,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_brokers,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_clients,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_data,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_listeners,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_metrics,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_nodes,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_plugins,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_pubsub,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_routes,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_stats,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_api_subscriptions,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_app,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_auth,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_cli,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_data_backup,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_http,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_sup,brutal_purge,brutal_purge}},
    {load,{emqx_mgmt_util,brutal_purge,brutal_purge}},
    {apply,{application,load,[emqx_management]}},
    {apply,{emqx_rule_engine,load_providers,[]}},
    {apply,{application,stop,[emqx_dashboard]}},
    {remove,{emqx_dashboard,brutal_purge,brutal_purge}},
    {remove,{emqx_dashboard_admin,brutal_purge,brutal_purge}},
    {remove,{emqx_dashboard_api,brutal_purge,brutal_purge}},
    {remove,{emqx_dashboard_app,brutal_purge,brutal_purge}},
    {remove,{emqx_dashboard_cli,brutal_purge,brutal_purge}},
    {remove,{emqx_dashboard_sup,brutal_purge,brutal_purge}},
    {purge,
        [emqx_dashboard,emqx_dashboard_admin,emqx_dashboard_api,
         emqx_dashboard_app,emqx_dashboard_cli,emqx_dashboard_sup]},
    {load,{emqx_dashboard,brutal_purge,brutal_purge}},
    {load,{emqx_dashboard_admin,brutal_purge,brutal_purge}},
    {load,{emqx_dashboard_api,brutal_purge,brutal_purge}},
    {load,{emqx_dashboard_app,brutal_purge,brutal_purge}},
    {load,{emqx_dashboard_cli,brutal_purge,brutal_purge}},
    {load,{emqx_dashboard_sup,brutal_purge,brutal_purge}},
    {apply,{application,load,[emqx_dashboard]}},
    {apply,{emqx_plugins,load,[]}}]}]}.
