Home
last modified time | relevance | path

Searched refs:holder (Results 1 - 25 of 52) sorted by relevance

123

/foundation/arkui/ace_engine/interfaces/napi/kits/observer/
H A Dui_observer.cpp83 auto& holder = iter->second; in RegisterNavigationCallback() local
84 if (std::find(holder.begin(), holder.end(), listener) != holder.end()) { in RegisterNavigationCallback()
87 holder.emplace_back(listener); in RegisterNavigationCallback()
117 auto& holder = iter->second; in UnRegisterNavigationCallback() local
119 holder.clear(); in UnRegisterNavigationCallback()
122 holder.erase( in UnRegisterNavigationCallback()
124 holder.begin(), in UnRegisterNavigationCallback()
125 holder in UnRegisterNavigationCallback()
145 auto holder = iter->second; HandleNavigationStateChange() local
173 auto& holder = iter->second; RegisterScrollEventCallback() local
206 auto& holder = iter->second; UnRegisterScrollEventCallback() local
234 auto& holder = iter->second; HandleScrollEventStateChange() local
252 auto& holder = abilityContextRouterPageListeners_[ref]; RegisterRouterPageCallback() local
280 auto& holder = iter->second; RegisterRouterPageCallback() local
296 auto& holder = abilityContextRouterPageListeners_[listenerPair.first]; UnRegisterRouterPageCallback() local
329 auto& holder = iter->second; UnRegisterRouterPageCallback() local
355 auto& holder = specifiedDrawListeners_[uiContextInstanceId]; RegisterDrawCallback() local
371 auto& holder = specifiedDrawListeners_[uiContextInstanceId]; UnRegisterDrawCallback() local
398 auto& holder = specifiedLayoutListeners_[uiContextInstanceId]; RegisterLayoutCallback() local
414 auto& holder = specifiedLayoutListeners_[uiContextInstanceId]; UnRegisterLayoutCallback() local
441 auto holder = abilityContextRouterPageListeners_[ref]; HandleRouterPageStateChange() local
454 auto holder = iter->second; HandleRouterPageStateChange() local
474 auto& holder = iter->second; RegisterDensityCallback() local
491 auto& holder = iter->second; UnRegisterDensityCallback() local
513 auto& holder = iter->second; HandleDensityChange() local
525 auto& holder = specifiedDrawListeners_[currentId]; HandDrawCommandSendChange() local
537 auto& holder = specifiedLayoutListeners_[currentId]; HandLayoutDoneChange() local
786 auto& holder = abilityContextWillClickListeners_[ref]; RegisterWillClickCallback() local
815 auto& holder = iter->second; RegisterWillClickCallback() local
837 auto& holder = abilityContextWillClickListeners_[listenerPair.first]; UnRegisterWillClickCallback() local
868 auto& holder = iter->second; UnRegisterWillClickCallback() local
899 auto& holder = abilityContextWillClickListeners_[ref]; HandleWillClick() local
913 auto& holder = iter->second; HandleWillClick() local
934 auto& holder = abilityContextDidClickListeners_[ref]; RegisterDidClickCallback() local
963 auto& holder = iter->second; RegisterDidClickCallback() local
985 auto& holder = abilityContextDidClickListeners_[listenerPair.first]; UnRegisterDidClickCallback() local
1016 auto& holder = iter->second; UnRegisterDidClickCallback() local
1047 auto& holder = abilityContextDidClickListeners_[ref]; HandleDidClick() local
1061 auto& holder = iter->second; HandleDidClick() local
1089 auto& holder = iter->second; RegisterTabContentStateCallback() local
1122 auto& holder = iter->second; UnRegisterTabContentStateCallback() local
1149 auto& holder = iter->second; HandleTabContentStateChange() local
[all...]
/foundation/arkui/ace_engine/frameworks/bridge/common/dom/
H A Ddom_search.cpp149 StyleParseHolder& holder) { holder.textStyle.SetAllowScale(StringToBool(val)); } }, in SetSpecializedStyle()
151 [](const std::string& val, StyleParseHolder& holder) { in SetSpecializedStyle()
152 holder.textField->SetBgColor(holder.node.ParseColor(val)); in SetSpecializedStyle()
153 holder.textField->SetFocusBgColor(holder.node.ParseColor(val)); in SetSpecializedStyle()
156 [](const std::string& val, StyleParseHolder& holder) { in SetSpecializedStyle()
157 holder.textField->SetCursorColor(holder in SetSpecializedStyle()
241 StyleParseHolder holder = { .node = *this, SetSpecializedStyle() local
[all...]
/foundation/communication/ipc/ipc/native/src/jni/source/
H A Dohos_rpc_remote_object.cpp426 // If the objects holder is same as the cached holder it should be a new create holder. in Java_ohos_rpc_getJavaRemoteObject()
446 JRemoteObjectHolder *holder = in Java_ohos_rpc_getNativeRemoteObject() local
448 return holder != nullptr ? holder->Get(object) : nullptr; in Java_ohos_rpc_getNativeRemoteObject()
452 JRemoteProxyHolder *holder = Java_ohos_rpc_getRemoteProxyHolder(env, object); in Java_ohos_rpc_getNativeRemoteObject() local
453 return holder != nullptr ? holder->object_ : nullptr; in Java_ohos_rpc_getNativeRemoteObject()
652 void JNICALL Java_ohos_rpc_RemoteObject_nativeFreeObjectHolder(JNIEnv *env, jclass clazz, jlong holder) in Java_ohos_rpc_RemoteObject_nativeFreeObjectHolder() argument
666 Java_ohos_rpc_RemoteProxy_nativeFreeProxyHolder(JNIEnv *env, jclass clazz, jlong holder) Java_ohos_rpc_RemoteProxy_nativeFreeProxyHolder() argument
714 JRemoteProxyHolder *holder = Java_ohos_rpc_getRemoteProxyHolder(env, object); Java_ohos_rpc_RemoteProxy_nativeSendRequest() local
750 JRemoteProxyHolder *holder = Java_ohos_rpc_getRemoteProxyHolder(env, object); Java_ohos_rpc_RemoteProxy_nativeAddDeathRecipient() local
785 JRemoteProxyHolder *holder = Java_ohos_rpc_getRemoteProxyHolder(env, object); Java_ohos_rpc_RemoteProxy_nativeRemoveDeathRecipient() local
820 JRemoteProxyHolder *holder = Java_ohos_rpc_getRemoteProxyHolder(env, object); Java_ohos_rpc_RemoteProxy_nativeGetInterfaceDescriptor() local
843 JRemoteProxyHolder *holder = Java_ohos_rpc_getRemoteProxyHolder(env, object); Java_ohos_rpc_RemoteProxy_nativeIsObjectDead() local
865 JRemoteProxyHolder *holder = Java_ohos_rpc_getRemoteProxyHolder(env, object); Java_ohos_rpc_RemoteProxy_nativeGetHandle() local
[all...]
/foundation/arkui/ace_engine/test/unittest/core/manager/
H A Dselect_overlay_manager_test_ng.cpp1595 auto holder = AceType::MakeRefPtr<SelectOverlayHolder>(); in HWTEST_F() local
1596 content.SetHolder(holder); in HWTEST_F()
1599 content.SetHolder(holder); in HWTEST_F()
1615 auto holder = AceType::MakeRefPtr<SelectOverlayHolder>(); in HWTEST_F() local
1616 content.SetHolder(holder); in HWTEST_F()
1618 content.SetHolder(holder); in HWTEST_F()
1619 content.SetHolderInternal(holder); in HWTEST_F()
1651 auto holder = AceType::MakeRefPtr<SelectOverlayHolder>(); in HWTEST_F() local
1652 content.SetHolder(holder); in HWTEST_F()
1669 auto holder in HWTEST_F() local
1687 auto holder = AceType::MakeRefPtr<SelectOverlayHolder>(); HWTEST_F() local
1707 auto holder = AceType::MakeRefPtr<SelectOverlayHolder>(); HWTEST_F() local
1726 auto holder = AceType::MakeRefPtr<SelectOverlayHolder>(); HWTEST_F() local
1797 auto holder = AceType::MakeRefPtr<SelectOverlayHolder>(); HWTEST_F() local
1833 auto holder = AceType::MakeRefPtr<SelectOverlayHolder>(); HWTEST_F() local
1850 auto holder = AceType::MakeRefPtr<SelectOverlayHolder>(); HWTEST_F() local
1869 auto holder = AceType::MakeRefPtr<SelectOverlayHolder>(); HWTEST_F() local
1895 auto holder = AceType::MakeRefPtr<SelectOverlayHolder>(); HWTEST_F() local
1912 auto holder = AceType::MakeRefPtr<SelectOverlayHolder>(); HWTEST_F() local
1930 auto holder = AceType::MakeRefPtr<SelectOverlayHolder>(); HWTEST_F() local
1947 auto holder = AceType::MakeRefPtr<SelectOverlayHolder>(); HWTEST_F() local
1964 auto holder = AceType::MakeRefPtr<SelectOverlayHolder>(); HWTEST_F() local
1982 auto holder = AceType::MakeRefPtr<SelectOverlayHolder>(); HWTEST_F() local
2011 auto holder = AceType::MakeRefPtr<SelectOverlayHolder>(); HWTEST_F() local
2030 auto holder = AceType::MakeRefPtr<SelectOverlayHolder>(); HWTEST_F() local
2051 auto holder = AceType::MakeRefPtr<SelectOverlayHolder>(); HWTEST_F() local
2072 auto holder = AceType::MakeRefPtr<SelectOverlayHolder>(); HWTEST_F() local
2098 auto holder = AceType::MakeRefPtr<SelectOverlayHolder>(); HWTEST_F() local
2118 auto holder = AceType::MakeRefPtr<MockSelectOverlayHolder>(); HWTEST_F() local
2152 auto holder = AceType::MakeRefPtr<MockSelectOverlayHolder>(); HWTEST_F() local
[all...]
/foundation/communication/ipc/ipc/native/src/napi_common/source/
H A Dnapi_remote_object.cpp413 NAPIRemoteObjectHolder *holder = reinterpret_cast<NAPIRemoteObjectHolder *>(data); in RemoteObjectHolderFinalizeCb() local
414 if (holder == nullptr) { in RemoteObjectHolderFinalizeCb()
415 ZLOGW(LOG_LABEL, "RemoteObjectHolderFinalizeCb null holder"); in RemoteObjectHolderFinalizeCb()
418 holder->Lock(); in RemoteObjectHolderFinalizeCb()
419 int32_t curAttachCount = holder->DecAttachCount(); in RemoteObjectHolderFinalizeCb()
420 holder->Unlock(); in RemoteObjectHolderFinalizeCb()
423 delete holder; in RemoteObjectHolderFinalizeCb()
448 NAPIRemoteObjectHolder *holder = reinterpret_cast<NAPIRemoteObjectHolder *>(data); in RemoteObjectHolderRefCb() local
449 if (holder == nullptr) { in RemoteObjectHolderRefCb()
450 ZLOGW(LOG_LABEL, "RemoteObjectHolderRefCb holder i in RemoteObjectHolderRefCb()
494 NAPIRemoteObjectHolder *holder = reinterpret_cast<NAPIRemoteObjectHolder *>(value); RemoteObjectDetachCb() local
510 NAPIRemoteObjectHolder *holder = reinterpret_cast<NAPIRemoteObjectHolder *>(value); RemoteObjectAttachCb() local
569 auto holder = new NAPIRemoteObjectHolder(env, Str8ToStr16(descriptor), thisVar); RemoteObject_JS_Constructor() local
860 NAPIRemoteObjectHolder *holder = nullptr; NAPI_ohos_rpc_CreateJsRemoteObject() local
890 NAPIRemoteProxyHolder *holder = NAPI_ohos_rpc_getRemoteProxyHolder(env, jsRemoteProxy); NAPI_ohos_rpc_ClearNativeRemoteProxy() local
913 NAPIRemoteObjectHolder *holder = nullptr; NAPI_ohos_rpc_getNativeRemoteObject() local
926 NAPIRemoteProxyHolder *holder = NAPI_ohos_rpc_getRemoteProxyHolder(env, object); NAPI_ohos_rpc_getNativeRemoteObject() local
953 NAPIRemoteObjectHolder *holder = nullptr; NAPI_RemoteObject_queryLocalInterface() local
992 NAPIRemoteObjectHolder *holder = nullptr; NAPI_RemoteObject_getLocalInterface() local
1365 NAPIRemoteObjectHolder *holder = nullptr; NAPI_RemoteObject_attachLocalInterface() local
1425 NAPIRemoteObjectHolder *holder = nullptr; NAPI_RemoteObject_modifyLocalInterface() local
[all...]
H A Dnapi_remote_object_holder.cpp32 NAPIRemoteObjectHolder *holder = reinterpret_cast<NAPIRemoteObjectHolder *>(data); in OnEnvCleanUp() local
34 holder->CleanJsEnv(); in OnEnvCleanUp()
/foundation/distributeddatamgr/data_share/test/native/unittest/mediadatashare_test/src/
H A Dcontroller_test.cpp76 std::shared_ptr<DataShare::DataShareConnection>(connection.GetRefPtr(), [holder = connection](const auto *) { in HWTEST_F()
77 holder->DisconnectDataShareExtAbility(); in HWTEST_F()
111 std::shared_ptr<DataShare::DataShareConnection>(connection.GetRefPtr(), [holder = connection](const auto *) { in HWTEST_F()
112 holder->DisconnectDataShareExtAbility(); in HWTEST_F()
145 std::shared_ptr<DataShare::DataShareConnection>(connection.GetRefPtr(), [holder = connection](const auto *) { in HWTEST_F()
146 holder->DisconnectDataShareExtAbility(); in HWTEST_F()
179 std::shared_ptr<DataShare::DataShareConnection>(connection.GetRefPtr(), [holder = connection](const auto *) { in HWTEST_F()
180 holder->DisconnectDataShareExtAbility(); in HWTEST_F()
220 std::shared_ptr<DataShare::DataShareConnection>(connection.GetRefPtr(), [holder = connection](const auto *) { in HWTEST_F()
221 holder in HWTEST_F()
[all...]
/foundation/multimedia/player_framework/frameworks/native/avmetadatahelper/
H A Davmetadatahelper_impl.cpp80 PixelMapMemHolder *holder = reinterpret_cast<PixelMapMemHolder *>(context); in FreePixelMapData() local
81 if (holder->isShmem) { in FreePixelMapData()
82 if (holder->shmem == nullptr) { in FreePixelMapData()
85 holder->shmem = nullptr; in FreePixelMapData()
86 holder->heap = nullptr; in FreePixelMapData()
88 if (holder->heap == nullptr || holder->heap != addr) { in FreePixelMapData()
91 delete [] holder->heap; in FreePixelMapData()
92 holder->heap = nullptr; in FreePixelMapData()
95 delete holder; in FreePixelMapData()
103 AVBufferHolder *holder = reinterpret_cast<AVBufferHolder *>(context); FreeAvBufferData() local
119 PixelMapMemHolder *holder = new (std::nothrow) PixelMapMemHolder; CreatePixelMapData() local
170 AVBufferHolder *holder = new (std::nothrow) AVBufferHolder; CreateAVBufferHolder() local
200 PixelMapMemHolder *holder = CreatePixelMapData(mem, *frame); CreatePixelMap() local
349 AVBufferHolder *holder = CreateAVBufferHolder(frameBuffer); CreatePixelMapFromAVShareMemory() local
[all...]
/foundation/arkui/ace_engine/test/mock/core/common/
H A Dmock_image_analyzer_manager.h26 explicit MockImageAnalyzerManager(const RefPtr<NG::FrameNode>& frameNode, ImageAnalyzerHolder holder) in MockImageAnalyzerManager() argument
27 : ImageAnalyzerManager(frameNode, holder) in MockImageAnalyzerManager()
H A Dmock_image_analyzer_manager.cpp39 ImageAnalyzerManager::ImageAnalyzerManager(const RefPtr<NG::FrameNode>& frameNode, ImageAnalyzerHolder holder) in ImageAnalyzerManager() argument
41 holder_ = holder; in ImageAnalyzerManager()
/foundation/arkui/ace_engine/adapter/preview/osal/advance/
H A Dimage_analyzer_manager.cpp20 ImageAnalyzerManager::ImageAnalyzerManager(const RefPtr<NG::FrameNode>& frameNode, ImageAnalyzerHolder holder) in ImageAnalyzerManager() argument
22 holder_ = holder; in ImageAnalyzerManager()
/foundation/graphic/graphic_2d/rosen/modules/render_service_base/src/pipeline/
H A Dsk_resource_manager.cpp39 std::shared_ptr<Drawing::ResourceHolder> holder = std::make_shared<Drawing::ResourceHolder>(); in HoldResource() local
40 holder->HoldResource(img); in HoldResource()
41 images_.emplace(tid, holder); in HoldResource()
/foundation/arkui/ace_engine/frameworks/core/components/custom_paint/
H A Drender_custom_paint.h279 PaintHolder holder; in SaveStates() local
280 holder.shadow = shadow_; in SaveStates()
281 holder.fillState = fillState_; in SaveStates()
282 holder.globalState = globalState_; in SaveStates()
283 holder.strokeState = strokeState_; in SaveStates()
284 saveStates_.push(holder); in SaveStates()
H A Doffscreen_canvas.h194 PaintHolder holder; in SaveStates() local
195 holder.shadow = shadow_; in SaveStates()
196 holder.fillState = fillState_; in SaveStates()
197 holder.globalState = globalState_; in SaveStates()
198 holder.strokeState = strokeState_; in SaveStates()
199 saveStates_.push(holder); in SaveStates()
/foundation/arkui/ace_engine/frameworks/core/components_ng/manager/select_content_overlay/
H A Dselect_content_overlay_manager.h43 const RefPtr<SelectOverlayHolder>& holder = nullptr);
96 void SetHolder(const RefPtr<SelectOverlayHolder>& holder);
98 void SetHolderInternal(const RefPtr<SelectOverlayHolder>& holder);
H A Dselect_content_overlay_manager.cpp57 const RefPtr<SelectOverlayHolder>& holder) in GetOverlayManager()
64 if (!holder) { in GetOverlayManager()
67 if (!contentManager->HasHolder(holder->GetOwnerId())) { in GetOverlayManager()
68 contentManager->SetHolder(holder); in GetOverlayManager()
73 void SelectContentOverlayManager::SetHolder(const RefPtr<SelectOverlayHolder>& holder) in SetHolder() argument
75 CHECK_NULL_VOID(holder); in SetHolder()
77 SetHolderInternal(holder); in SetHolder()
81 auto ownerId = holder->GetOwnerId(); in SetHolder()
92 SetHolderInternal(holder); in SetHolder()
95 void SelectContentOverlayManager::SetHolderInternal(const RefPtr<SelectOverlayHolder>& holder) in SetHolderInternal() argument
56 GetOverlayManager( const RefPtr<SelectOverlayHolder>& holder) GetOverlayManager() argument
126 auto holder = selectOverlayHolder_; Show() local
[all...]
/foundation/arkui/ace_engine/test/unittest/core/pattern/text_input/
H A Dtext_field_pattern_testfour.cpp164 auto holder = AceType::MakeRefPtr<SelectOverlayHolder>(); in HWTEST_F() local
165 ASSERT_NE(holder, nullptr); in HWTEST_F()
166 manager->selectOverlayHolder_ = holder; in HWTEST_F()
203 auto holder = AceType::MakeRefPtr<SelectOverlayHolder>(); in HWTEST_F() local
204 ASSERT_NE(holder, nullptr); in HWTEST_F()
205 manager->selectOverlayHolder_ = holder; in HWTEST_F()
512 auto holder = AceType::MakeRefPtr<SelectOverlayHolder>(); in HWTEST_F() local
513 ASSERT_NE(holder, nullptr); in HWTEST_F()
514 manager->selectOverlayHolder_ = holder; in HWTEST_F()
/foundation/window/window_manager/previewer/src/
H A Dwindow_impl.cpp756 WMError WindowImpl::RegisterListener(std::vector<sptr<T>>& holder, const sptr<T>& listener) in RegisterListener() argument
762 if (std::find(holder.begin(), holder.end(), listener) != holder.end()) { in RegisterListener()
766 holder.emplace_back(listener); in RegisterListener()
771 WMError WindowImpl::UnregisterListener(std::vector<sptr<T>>& holder, const sptr<T>& listener) in UnregisterListener() argument
777 holder.erase(std::remove_if(holder.begin(), holder.end(), in UnregisterListener()
780 }), holder in UnregisterListener()
[all...]
/foundation/window/window_manager/wm/src/
H A Dpicture_in_picture_controller.cpp750 WMError PictureInPictureController::RegisterListener(std::vector<sptr<T>>& holder, const sptr<T>& listener) in RegisterListener() argument
756 if (std::find(holder.begin(), holder.end(), listener) != holder.end()) { in RegisterListener()
760 holder.emplace_back(listener); in RegisterListener()
765 WMError PictureInPictureController::UnregisterListener(std::vector<sptr<T>>& holder, const sptr<T>& listener) in UnregisterListener() argument
771 holder.erase(std::remove_if(holder.begin(), holder.end(), in UnregisterListener()
774 }), holder in UnregisterListener()
[all...]
/foundation/graphic/graphic_3d/lume/scenewidgetplugin/plugin/src/
H A DPropertyHandlerArrayHolder.h74 void SetSceneHolder(SceneHolder::Ptr holder) in SetSceneHolder()
76 sceneHolder_ = holder.get(); in SetSceneHolder()
/foundation/communication/ipc/ipc/native/src/jni/include/
H A Dohos_rpc_remote_object.h103 void JNICALL Java_ohos_rpc_RemoteObject_nativeFreeObjectHolder(JNIEnv *env, jclass clazz, jlong holder);
126 void JNICALL Java_ohos_rpc_RemoteProxy_nativeFreeProxyHolder(JNIEnv *env, jclass clazz, jlong holder);
/foundation/communication/ipc/ipc/native/src/napi/src/
H A Dnapi_remote_proxy.cpp217 NAPI_ASSERT(env, proxyHolder != nullptr, "failed to get proxy holder"); in NAPI_RemoteProxy_sendRequest()
308 ZLOGE(LOG_LABEL, "failed to get proxy holder"); in NAPI_RemoteProxy_sendMessageRequest()
368 NAPI_ASSERT(env, status == napi_ok, "failed to get proxy holder"); in NAPI_RemoteProxy_addDeathRecipient()
438 ZLOGE(LOG_LABEL, "failed to get proxy holder"); in NAPI_RemoteProxy_registerDeathRecipient()
442 ZLOGE(LOG_LABEL, "proxy holder is nullptr"); in NAPI_RemoteProxy_registerDeathRecipient()
487 NAPI_ASSERT(env, status == napi_ok, "failed to get proxy holder"); in NAPI_RemoteProxy_removeDeathRecipient()
560 ZLOGE(LOG_LABEL, "failed to get proxy holder"); in NAPI_RemoteProxy_unregisterDeathRecipient()
564 ZLOGE(LOG_LABEL, "proxy holder is nullptr"); in NAPI_RemoteProxy_unregisterDeathRecipient()
594 NAPIRemoteProxyHolder *holder = nullptr; in NAPI_RemoteProxy_getInterfaceDescriptor() local
595 napi_status status = napi_unwrap(env, thisVar, reinterpret_cast<void **>(&holder)); in NAPI_RemoteProxy_getInterfaceDescriptor()
617 NAPIRemoteProxyHolder *holder = nullptr; NAPI_RemoteProxy_getDescriptor() local
647 NAPIRemoteProxyHolder *holder = nullptr; NAPI_RemoteProxy_isObjectDead() local
[all...]
/foundation/arkui/ace_engine/frameworks/core/components_ng/manager/shared_overlay/
H A Dshared_transition_effect.h103 void SetPassengerHolder(const WeakPtr<FrameNode>& holder) in SetPassengerHolder() argument
105 passengerHolder_ = holder; in SetPassengerHolder()
/foundation/window/window_manager/wm/include/
H A Dpicture_in_picture_controller.h119 template<typename T> WMError RegisterListener(std::vector<sptr<T>>& holder, const sptr<T>& listener);
120 template<typename T> WMError UnregisterListener(std::vector<sptr<T>>& holder, const sptr<T>& listener);
/foundation/arkui/ace_engine/adapter/ohos/osal/
H A Dimage_analyzer_manager.cpp25 ImageAnalyzerManager::ImageAnalyzerManager(const RefPtr<NG::FrameNode>& frameNode, ImageAnalyzerHolder holder) in ImageAnalyzerManager() argument
26 : frameNode_(frameNode), holder_(holder) in ImageAnalyzerManager()
40 analyzerUIConfig_.holder = holder_; in CreateAnalyzerOverlay()
91 analyzerUIConfig_.holder = holder_; in CreateMovingPhotoAnalyzerOverlay()
181 analyzerUIConfig_.holder = holder_; in UpdateMovingPhotoAnalyzerOverlay()

Completed in 22 milliseconds

123